Pages

21 Aralık 2010 Salı

Oracle 9i üzerinde Fiizksel Standby Veritabanı Yapılandırma



Tanımlar:

AFFIRM: Archive logların diske yazıldığını garantiye alır.
MANDATORY: Archive loglar başarılı şekilde oluşturuluncaya kadar redo logların yazılmamasını güvence altına alır. Bu sadece primary veritabanına etki eder.
REOPEN=30’un anlamı; ARCH ve/veya LGWR prosesleri tekrar hata veren MANDATORY hedefe işlem için deneyene kadar 30 saniyelik gecikme olacak demektir.
DELAY: Dakika olarak tanımlıdır ve archive log dosyasının standby sunucuya kopyalanmasını durdurmaz,ancak bunun sonrasında redo uygulaması durar. Primary veritabanı performansına yardımcı olmaz.

İkinci standby veritabanı için LGWR yerine ARCH kullanmak primary veritabanı performansına yardımcı olabilir, ancak bunun için daha küçük boyutta log dosyaları gerekmektedir. SYNC=PARALLEL değeri padece LGWR prosesinde uygulanır. Primary üzerinde switch için ARCH bekleme yaparken, LGWR girişleri standby archibe loglara kopyalar ve switch esnasında uygulanır. ARCH ise kopyalayacak ve switch esnasında uygulayacaktır. LGWR, redo girişlerini tüm standbylara yazdığı andan itibaren daha kullanışlıdır, ancak iki standby veritabanı primary veritabanı üzerinde muhtemelen performans sorunlarına sebebiyet verecektir.Bu performans sıkıntısına sebebiyet vermemek için çoklu archiver prosesleri primary veritabanı üzerinde oluşturulabilir.

İlave archiver prosesleri devreye sokmak için LOG_ARCHIVE_MAX_PROCESSES parametre değeri artırılmalıdır. ARCHIVE_LAG_TARGET parametre değeri ise switch sıklığını artırmak için kullanılır, bu sayede standby veritabanlarına sıklıkla daha az veri gönderilir.

Desteklenmeyen objelerin olup olmadığının kontrol edilmesi:

Mantıksal(logical) standby veritabanlarında desteklenmeyen objelerin olup olmadığını kontrol etmek için alttaki sorgu klullanılabilir.

SELECT * FROM DBA_LOGSTDBY_UNSUPPORTED
ORDER BY owner,table_name,column_name;

SQL Apply ile mantıksal standby veritabanına update işleminde eksik primary  keyler sıkıntı yaratacaktır. Bu objeler ya drop edilir yada primary key oluşturulur.

SELECT OWNER, TABLE_NAME, BAD_COLUMN
FROM DBA_LOGSTDBY_NOT_UNIQUE;

Koruma seviyesinin belirlenmesi:

ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE
{ PROTECTION | AVAILABILITY | PERFORMANCE };

PERFORMANCE varsayılan değerdir. VArsayılan değerinizi görmek için alttaki sorgu kullanılır.

SELECT name, protection_mode, protection_level FROM v$database;

NAME             PROTECTION_MODE                  PROTECTION_LEVEL
---------            --------------------                               --------------------
STBY              MAXIMUM PERFORMANCE      MAXIMUM PERFORMANCE
  • No Data Loss: LGWR SYNC kullanarak PROTECTION modu sadece fiziksel standby veritabanına uygulanır ve eğer herhangi bir standby veritabanına yazma yapılamıyorsa primary veritabanını kapatır. Değer PROTECTION’dur.
  • Minimal Data Loss: Tüm redo girişleri en azından bir standby veritabanına yazana kadar transaction commit işlemi primary veritabanında beklemede durar. Değer AVAILABILITY’dir.
  • No Data Divergence: Varsayılan ayardır (PERFORMANCE). Hem primary hemde standby veritabanları için uygundur. Redo girişleri herhangi bir standby veritabanına yazılmadan once transaction primary üzerinde commit olur.
Modlar arasında değişiklik yapmak için veritabanının mount durumda olması gerekir.
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

Konfigurasyon:

Primary Veritabanı
Oracle Sürümü:
Oracle9i Release 2
Sunucu ismi:
linux1.test.com
İşletim Sistemi:
Linux CentOS 3
Oracle SID:
ORCL
Instance Service Names:
ORCL.TEST.COM
TNS Service Name:
ORCL_LINUX1.TEST.COM
Standby Veritabanı
Oracle Sürümü:
Oracle9i Release 2
Sunucu ismi:
linux2.test.com
Sunucu ismi:
Linux CentOS 3
Oracle SID:
ORCL
Instance Service Names:
ORCL.TEST.COM
TNS Service Name:
ORCL_LINUX2.TEST.COM


















Düğümlerin Birbirine Erişim için Etkinleştirilmesi
Primary sunucudan standby sunucuya veri transferi sırasında FTP kullanıcı ad ve şifrenin her seferinde sormaması için rcp komutlarını çalıştırılmasına izin veren .rhosts dosyası yapılandırılmalıdır her iki Linux sunucuda. Bu sayede iki Linux sunucu arasında güven ilişkisi yapılandırılmış olacaktır. rcp sadece ilk aşamda data dosyalarının standby’a kopyalanmasında kullanılacaktır, dilerseniz bu işlem sonunda hizmet dışına alabilirsiniz.
rhosts dosyasını configure etmeden once rsh RPM lerinin Linuxlarda kurulu olup olmadığından emin olmamız lazımdır.
# rpm -q rsh rsh-server
rsh-0.17-17
rsh-server-0.17-17

Yukarda görüldüğü üzere rsh ve rsh-server kuruludur. Eğer bu ikisi Linuxlarda kurulu değilse CentOS CD sinden RPM ler kurulabilir.
“rsh” servisinin etkinleşmesi için /etc/xinetd.d/rsh dosyasının “disable” kısmı “no” şeklinde ayarlanmalı ve xinetd tekrar yüklenmelidir. Alttaki komutların tüm düğümlerdeki Linux’larda çalıştırılması ile bu işlemler gerçekleşecektir.
# su -
# chkconfig rsh on
# chkconfig rlogin on
# chkconfig rsync on
# chkconfig rexec on
# service xinetd reload
Reloading configuration: [  OK  ]

Altta her iki Linux makinemde oluşturduğum .rhosts dosyası yer almaktadır. Bu dosya oracle kullanıcısının $HOME dizininde yer almaktadır.

.rhosts dosyam
+linux1.test.com oracle
+linux2.test.com oracle


Konfigürasyonun düzgün çalıştığının kontrolü için alttaki testi her iki Linux’tada yapıyorum.

Linux1 makinesinde
    $ id
    uid=173(oracle) gid=115(dba) groups=115(dba)
    $ rsh linux2 hostname
    linux2

Linux2 makinesinde
    $ id
    uid=173(oracle) gid=115(dba) groups=115(dba)
    $ rsh linux1 hostname
    linux1

Primary veritabanının yapılandırılması
  1. Archiving özelliğinin etkinleştirilmesi ve local archive hedefinin belirlenmesi
Primary veritabanının archivelog modunda olması ve en azından bir hedefin tanımlı olması gereklidir. Altta bunun olup olmadığını anlayabiliriz.
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/archive/ORCL
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

Eğer archive mod etkin değilse alttaki adımları uygulayarak etkinleştirmeniz gereklidir.
  • Alttaki parameter değişikliklerini yapın.
log_archive_dest_1      = 'location=/u01/app/oracle/archive/ORCL MANDATORY'
log_archive_dest_state_1= 'enable'
log_archive_format      = 'arch_t%t_s%s.dbf'
log_archive_start       = true
  • Primary veritabanını archive log moduna yerleştirin.
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

  1. Force logging özelliğinin etkinleştirilmesi
Herhangi bir felaketten geri kurtarma veya nologging ile yapılan yanlış transactionlardan geri kurtarma ihtiyacı duyulduğundan DBA leri gereksiz zaman israfından kurtarmak için bu adım önemlidir ve tavsiye edilir. Bu sayede NOLOGGING ile yapılan işlemler redo stream içinde yer alacak ve DBA lerin NOLOGGING işlemleri manuel standbylara taşıma zahmetinden kurtaracaktır.
SQL> alter database force logging;
Database altered.
  1. Primary veritabanı üzerinde başlangıç parametrelerinin ayarlanması
Primary ve standby hostlarda memoy, disk,CPU gibi özellikler özdeş ise, her iki veritabanı için başlangıç parameter dosyalarınında bir kaç parameter dışında özdeş olması gereklidir. Bu farklı parameter değerleri FAL_CLIENT, FAL_SERVER, LOG_ARCHIVE_DEST_2 ve LOG_ARCHIVE_DEST_STATE_2 değerleridir.
Bu noktada başarılı bir primary veritabanı yapılandırılması için LINUX1 üzerinde eklenmesi yada değiştirilmesi gerekli başlangıç parametreleri altta yer alıyor.
 
archive_lag_target= 0
compatible = '9.2.0.6.0'
control_file_record_keep_time  = 7
control_files  = '/u01/app/oradata/ORCL/control01.ctl',
'/u02/app/oradata/ORCL/control02.ctl','/u03/app/oradata/ORCL/control03.ctl'
db_name = 'ORCL'
dg_broker_start = true
fal_client  = 'ORCL_LINUX1'
fal_server= 'ORCL_LINUX2'
instance_name  = 'ORCL'
local_listener = ''
log_archive_dest_1= 'location=/u01/app/oracle/archive/ORCL mandatory'
log_archive_dest_2= 'service=ORCL_LINUX2 optional reopen=15'
log_archive_dest_state_1= 'enable'
log_archive_dest_state_2= 'defer'
log_archive_format= 'arch_t%t_s%s.dbf'
log_archive_start= true
remote_archive_enable= true
remote_login_passwordfile= exclusive
service_names= 'ORCL.TEST.COM
standby_archive_dest = '/u01/app/oracle/archive/ORCL'
standby_file_management= 'auto'
  1. Primary veritabanının cold yedeklemesinin alınması
Standby veritabanı üzerinden kopyalama yapabilmem için primary veritabanının yedeğini alacağım. Bunu cold yada online(hot) yedekleme ile yapabiliriz.Archive loglar veritabanımı en son haline getireceğinden dolayı daha kolay olan cold backup kullanacağım.
Bu işleme geçmeden önce primary veritabanının kapatılması gerekmektedir.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

Tüm data dosyalarım /u01 üzerinde olduğundan dolayı onlarıda LINUX 2 üzerindeki /u01 dizinine kopyalayacağım. Redo log dosyalarını ve kontrol dosyalarını kopyalamaya gerek yoktur.

$ rsh linux2 mkdir -p /u01/app/oradata/ORCL
$ rsh linux2 mkdir -p /u02/app/oradata/ORCL
$ rsh linux2 mkdir -p /u03/app/oradata/ORCL
$ rcp -r /u01/app/oradata/ORCL linux2:/u01/app/oradata

Kopyalama işlemi sonrasında primary veritabanını tekrar başlatıyoruz.
SQL> startup open
ORACLE instance started.
Total System Global Area  252777712 bytes
Fixed Size                   451824 bytes
Variable Size             218103808 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
  1. Standby veritabanı için kontrol dosyasının oluşturulması
Standby veritabanında kullanılmak üzere standby kontrol dosyası oluşturcağız.Bu yedek kontrol dosyasının yedek alındıktan hemen sonra ilk açılışta alınması ve en son timestamp olması gereklidir.

SQL> alter database create standby controlfile as '/u01/app/control01.ctl';
Database altered.
  1. Standby veritabanı için başlangıç parametrelerinin hazırlanması
3. adımda yapılan değişiklikleri SPFILE üzerinde yaptığımdan dolayı bunun kopyasını standby için değiştirmek ve standby sunucuya kopyalamak için dışarıya PFILE olarak taşıyorum.

SQL> create pfile='/u01/app/oracle/initORCL.ora' from spfile;
File created.
  1. Geri kalan tüm dosyaların Primary sunucudan Standby sunucuya taşınması
Şimdi ise yedek kontrol dosyasını ve parametre dosyasını kopyalacağım.

$ rcp –r /u01/app/control01.ctl linux2:/u01/app
$ rcp –r /u01/app/oracle/initORCL.ora linux2: /u01/app/oracle
  1. Aynı hedef ve dizin ismi standartı kullanın
Aslında standby sunucu ile primary sunucunun dosya ismi ve dizinlerinin aynı olmadı gereklidir. Ancak, bunun mümkün olmadığı durumlarda standby sunucuda isim ve dizin değişikliğinin tanıtılması gerekecektir. Bu da standby üzerinde 2 başlangıç parametresinde gerçekleşir.

  • db_file_name_convert: Standby üzerindeki data dosyaları tarafında takip edilen primary  data dosyalarının lokasyonunu belirtir.Primary data dosyalarının isimlerini standby data dosyalarının isimlerine dönüştürür. Eğer primary ve standby veritabanları aynı sunucu üzerinde ise bu parametrenin kullanılması zorunludur.
  • log_file_name_convert: Stanby lokasyonundaki loglar tarafından takip edilen primary veritabanı log dosyalarının lokasyonunu belirtir.Primary logların isimlerini standby log isimlerine dönüştürür. Eğer primary ve standby veritabanları aynı sunucu üzerinde ise bu parametrenin kullanılması zorunludur.
  1. Oracle Network dosyalarının yapılandırılması
Primary veritabanının standby veritabanı ile iletişim kuarabilmesi için Oracle Networking dosyaları yapılandırılmalıdır.
Önce primary makinede standby makine için bir net servisi oluşturulmalıdır.

TNS Names dosyası - primary
ORCL_LINUX1.TEST.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = linux1.test.com)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL.TEST.COM)
    )
  )  
ORCL_LINUX2.TEST.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = linux2.test.com)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL.TEST.COM)
    )
  )


Daha sonrasında primary sunucuda listener.ora dosyası düzenlenmelidir.

Primary sunucudaki Listener.ora dosyası
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)
        (HOST = linux1.test.com)(PORT = 1521))
      )
      (PROTOCOL_STACK =
       (PRESENTATION = TTC)
       (SESSION = NS)
      )
    )  
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (PROTOCOL_STACK =
       (PRESENTATION = TTC)
       (SESSION = NS)
      )
    )
  )  
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/9.2.0)
      (PROGRAM = extproc)
      (ENVS="EXTPROC_DLLS=ANY")
    )
    (SID_DESC =
      (GLOBAL_DBNAME  = ORCL.TEST.COM)
      (SID_NAME       = ORCL)
      (ORACLE_HOME    = /u01/app/oracle/product/9.2.0)
    )
  )


En son olarak ise, sqlnet.ora dosyasında dead connection detection değerini dakika bazında ayarlıyoruz. Ölü bağlantıların sunucuda gereksiz yere kaynak işgal etmesini engellemek için dead connection detection aktif hale getirilir.  Listener, istemcilerin online olup olmadığını kontrol etmek için, belirlediğimiz aralıklarla istemcilere boş SQLNET paketleri yollayacak ve eğer hata alırsa veritabanında ölü bağlantılar sonlandırılacaktır.Bu değişiklik standby rolündeki sunucularda gereklidir, ancak switch meydana gelip primary ve standby sunucuların rolleri değişirse o zamanda lazım olacaktır. Oracle’nın tavsiye değeri olan 10’u atıyorum.

Primary sunucu üzerindeki Sqlnet.ora dosyası
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP)
BEQUEATH_DETACH=yes
AUTOMATIC_IPC = ON
NAMES.DEFAULT_DOMAIN = TEST.COM
SQLNET.EXPIRE_TIME = 10


Oracle network yapılandırmalarından sonra bu değişikliklerin etki etmesi için listener servisini tekrar başlatıyoruz.

$ lsnrctl stop
$ lsnrctl start

Primary sunucu üzerindeki işlemlerimiz sonra erdi. Bundan sonraki adımda standby rolündeki sunucu üzerinde yapılandırma anlatılacaktır.


Standby veritabanın yapılandırılması

  1. Oracle network dosyalarının oluşturulması
TNS Names dosyası- Secondary
ORCL_LINUX1.TEST.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = linux1.test.com)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL.TEST.COM)
    )
  )
 
ORCL_LINUX2.TEST.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = linux2.test.com)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL.TEST.COM)
    )
  )


Standby üzerinde listener.ora dosyasınında yapılandırılması gerekmektedir. Bunun için listener.ora dosyası primary sunucudan standby sunucuya kopyalanıp alttaki kırmızı ile yazılı değişiklikler yapıldıktan sonra standby sunucuda kaydedilir.

Standby sunucudaki Listener.ora dosyası
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)
        (HOST = linux1.test.com)(PORT = 1521))
      )
      (PROTOCOL_STACK =
       (PRESENTATION = TTC)
       (SESSION = NS)
      )
    )  
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (PROTOCOL_STACK =
       (PRESENTATION = TTC)
       (SESSION = NS)
      )
    )
  )  
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/9.2.0)
      (PROGRAM = extproc)
      (ENVS="EXTPROC_DLLS=ANY")
    )
    (SID_DESC =
      (GLOBAL_DBNAME  = ORCL.TEST.COM)
      (SID_NAME       = ORCL)
      (ORACLE_HOME    = /u01/app/oracle/product/9.2.0)
    )
  )


En son olarak ise, sqlnet.ora dosyasında dead connection detection değerini ayarlıyoruz.

Standby  sunucu üzerindeki Sqlnet.ora dosyası
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP)
BEQUEATH_DETACH=yes
AUTOMATIC_IPC = ON
NAMES.DEFAULT_DOMAIN = TEST.COM
SQLNET.EXPIRE_TIME = 10


Yapılandırmadan sonra değişikliklerin etki etmesi için listener servisini tekrar başlatıyoruz.

$ lsnrctl stop
$ lsnrctl start

  1. Standby sunucu için server parametre dosyası oluşturulması
Primary üzerinde initorcl.ora adlı bir dosya oluşturmuş ve bu dosyayıda standby sunucuya kopyalamıştık. Bu dosya üzerinde gerekli değişiklikleri yaptıktan sonra standby sunucu için SPFILE dosyası oluşturacağız.

archive_lag_target             = 0
compatible                     = '9.2.0.6.0'
control_file_record_keep_time  = 7
control_files                  = '/u01/app/oradata/ORCL/control01.ctl',                      '/u02/app/oradata/ORCL/control02.ctl',                             '/u03/app/oradata/ORCL/control03.ctl'
db_name                        = 'ORCL'
dg_broker_start                = true
fal_client                     = 'ORCL_LINUX2'
fal_server                     = 'ORCL_LINUX1'

instance_name                  = 'ORCL'
local_listener                 = ''
log_archive_dest_1             = 'location=/u01/app/oracle/archive/ORCL mandatory'
log_archive_dest_2             = 'service=ORCL_LINUX1 optional reopen=15'log_archive_dest_state_1       = 'enable'
log_archive_dest_state_2       = 'defer'
log_archive_format             = 'arch_t%t_s%s.dbf'
log_archive_start              = true
remote_archive_enable          = true
remote_login_passwordfile      = exclusive
service_names                  = 'ORCL.TEST.COM
standby_archive_dest           = '/u01/app/oracle/archive/ORCL'
standby_file_management        = 'auto'


Bu değişiklikleri yaptıktan sonra SQL CREATE komutu ile standby veritabanı için SPFILE oluşturacağız.

$ sqlplus "/ as sysdba"
Connected to an idle instance.
SQL> create spfile from pfile='/u01/app/oracle/initORCL.ora’;
File created.

  1. Yedek kontrol dosyasını kendi lokasyonuna kopyalayın
initORCL.ora dosyasındaki kontrol dosyalarının isim ve hedef lokasyonları doğrultusunda yedek kontrol dosyalarını bu dizinlere kendi isimlerinde kopyalıyoruz.

control_files = '/u01/app/oradata/ORCL/control01.ctl',
                '/u02/app/oradata/ORCL/control02.ctl',
                '/u03/app/oradata/ORCL/control03.ctl'
$ cd
$ cp /u01/app/control01.ctl /u01/app/oradata/ORCL/control01.ctl
$ cp /u01/app/control01.ctl /u02/app/oradata/ORCL/control02.ctl
$ cp /u01/app/control01.ctl /u03/app/oradata/ORCL/control03.ctl

  1. Oracle password dosyasının oluşturulması
Standby veritabanı için bir password dosyası oluşturuyoruz. Data Guard Broker kullanılacağı zaman password dosyasının oluşturulması zorunludur ve sys kullanıcısının şifresinin hem primary hemde standby sunucularda aynı olması gereklidir.

$ cd $ORACLE_HOME/dbs
$ orapwd file=orapwORCL password=change_on_install

  1. Fiziksel standby veritabanının başlatılması ve redo datasının standby’a akışı
Fiziksel standby veritabanı MOUNT modda başlatılacaktır. LOG_ARCHIVE_2 ile belirtilen standby veritabanındaki lokasyona redo datası transferi başlayacaktır.

SQL> startup nomount;
ORACLE instance started.
Total System Global Area  252777712 bytes
Fixed Size                   451824 bytes
Variable Size             218103808 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes

SQL> alter database mount standby database;

Redo dataların akışını başlatmak için ise alttaki komutu çalıştırıyoruz.

SQL> alter database recover managed standby database disconnect from session;

  1. Remote archiving özelliğinin etkinleştirilmesi
Kullandığımız “Maximum Performance” modu ile log switch meydana gelmeden redo log dosyaları standby lokasyonda arşivlenmeyecektir. Eğer mevcut redo logların hemen arşivlenmesini isterseniz alttaki komutu primary veritabanında çalıştırın.

SQL> alter system archive log current;

  1. Fiziksel veritabanının çalıştığından emin olun.

·            En son anlık arşivlenmiş redo logları belirleyin (standby üzerinde).

SQL> alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
Session altered.

SQL> select sequence#, first_time, next_time
     from v$archived_log order by sequence#;

 SEQUENCE#    FIRST_TIME             NEXT_TIME
----------   --------------------   --------------------
       115   19-DEC-2010 21:43:29   20-DEC-2010 13:51:38

·        Mevcut logu arşivleyin (primary üzerinde)

SQL> alter system archive log current;
System altered.

·        Yeni arşivlenmiş redo logların geldiğinden emin olun (standby üzerinde)

SQL> select sequence#, first_time, next_time
     from v$archived_log order by sequence#;

 SEQUENCE#   FIRST_TIME             NEXT_TIME
----------   --------------------   --------------------
       115   19-DEC-2010 21:43:29   20-DEC-2010 13:51:38
       116   19-DEC-2010 13:51:38   20-DEC-2010 13:53:43

·        Arşivlenmiş redo logların uygulandığından emin Olin (standby üzerinde).

SQL> select sequence#, archived, applied
     from v$archived_log order by sequence#;

 SEQUENCE#   ARCHIVED   APPLIED
----------   --------   -------
       115   YES        YES
       116   YES        YES
·        Standby sunucuda alert.log dosyasını gözlemleyin.

$ cd ~oracle/admin/ORA920/bdump
$ tail -f alert_ORA920.log
Mon Dec 20 13:41:53 2010
Completed: alter database recover managed standby database 
Mon Dec 20 13:41:53 2010
Media Recovery Waiting for thread 1 seq# 115
Mon Dec 20 13:42:53 2010
Restarting dead background process QMN0
QMN0 started with pid=9
Mon Dec 20 13:45:53 2010
Media Recovery Log /u01/app/oracle/archive/ORCL/arch_t1_s115.dbf
Media Recovery Waiting for thread 1 seq# 116
Media Recovery Log /u01/app/oracle/archive/ORCL/arch_t1_s116.dbf
Media Recovery Waiting for thread 1 seq# 117

0 yorum:

Yorum Gönder