Merhaba arkadaşlar bu yazımda Data Guard kurulumunu anlatacagım.

Benim senaryoma göre ;

Birinci makineye Oracle Enterprise Linux 6.4 kurup onunda üzerine de Oracle 11gR2 yazılımı ve veritabanı kurulmuştur.Ve ben bu makineyi bundan sonra primary makine ismiyle anacagım.

İkinci makineye de aynı şekilde Oracle Enterprise Linux 6.4 kurulacagım bu aşamadan sonra ise buraya sadece Oracle 11gR2 yazılımını kuracagım.Bu makineyi de secondary ismiyle anacagım.

Yani benim canlı(production) veritabanım primary,ondan beslenen standby veritabanım da secondary olacak.

Primary Secondary
Hostname primary secondary
IP 192.168.1.125 192.168.1.126
ORACLE_SID ORCL ORCLSTBY
ORACLE_UNQNAME ORCL ORCLSTBY
ORACLE_NAME ORCL ORCL

Data Guard kurulumu yapmanın birden fazla yöntemi vardır.Duplicate komutuyla kurulabilecegi gibi alınan rman backup ile de kurulumu yapabiliriz bunların yanı sıra 3. parti uygulamaları(dbvisit,12c cloud control,Broker vb.) kullanarak da kurulum yapabiliriz aslında bunlarda arka planda duplicate veya alınan backup’ı kullanma vb. işlemler yapıyor,bu 3.parti uygulamaların tek yararı kurulumu daha basite indirgemek.

Biz bu dökümanda 2 şekilde kurulum yapacagız aslında bu kurulumların mantıgıda aynı.İlk alınan rman backup ile Data Guard kurulumu yapacagız daha sonra ise Duplicate komutu ile Data Guard kurulumu yapacagız.

1.RMAN Backup İle Data Guard Kurulumu

  1. 2 makinenin’de ip ve host bilgilerini birbirine tanıtırız.(primary-secondary)

Benim örneğime göre /etc/hosts dosyaları aşağıda ki gibi olmalıdır.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.125   primary.localdomain    primary
192.168.1.126   secondary.localdomain    secondary

NOT : tnsnames dosyasında hostname üzerinden gideceğim için bu tanımlamayı yapmam gerekir istenilirse bu tanımlama yapılmadan ip üzerinden de gidilebilir.

  1. Primary veritabanı ARCHIVELOG modda olmalıdır.Veritabanının ARCHIVELOG modunu control etmek için aşagıda ki sorguyu çalıştırabiliriz.(primary)
SELECT log_mode FROM v$database;

Eger sonuç NOARCHIVELOG mod dönüyorsa ARCHIVELOG moda almak için aşağıda ki adımları uygularız.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;
  1. Bütün aktivitelerin log dosyalarına yazılması ve standby veritabanına uygulanması için bütün nesnelerin loglanmasını başlatmalıyız.(primary)
ALTER DATABASE FORCE LOGGING;
  1. Production ve standby veritabanlarının unqname parametrelerini ayarlarız.(primary)
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLSTBY)';
  1. Redo veri göndermemizi sağlayan parametreyi ayarlarız.(primary)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCLSTBY NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTBY';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
  1. Password file,archivelog formatını ve maksimum proses sayısını belirleriz.(primary)
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
  1. fal_server,fal_client vb. parametreleri ayarlarız. (primary)
ALTER SYSTEM SET FAL_SERVER=ORCLSTBY;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
ALTER SYSTEM SET FAL_CLIENT=ORCL;
  1. Standby makine de gerekli dizinleri oluşturuz.(secondary)
mkdir -p /u01/app/oracle/admin/ORCLSTBY/adump
mkdir -p /u01/app/oracle/fast_recovery_area/ORCLSTBY
mkdir -p /u01/app/oracle/oradata/ORCLSTBY
  1. Standby makinede listener oluşturuz.Benim örnegime göre aşagıda ki gibi olmalıdır.(secondary)

vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLSTBY)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = ORCLSTBY)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secondary.localdomain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = /u01/app/oracle

Daha sonra listener kapatır yeniden başlatırız.

lsnrctl reload
  1. iptables kapatırız her iki makinede de.(primary-secondary)

NOT : işletim sistemi root kullanıcısı ile kapatılır.

/etc/init.d/iptables stop
chkconfig iptables off
  1. tnsnames.ora dosyası düzenlenir,her iki tarafda da.Benim örnegime gore aşagıda ki gibi olur.(primary-secondary)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

ORCLSTBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secondary)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLSTBY)
)
)

NOT : tnsping atıp atmadığı kontrol edilir,her iki makinede de.

tnsping ORCL
tnsping ORCLSTBY
  1. Standby veritabanını nomount modda açmak için production veritabanından pfile üretirim.(primary)
CREATE PFILE='/tmp/initORCLSTBY.ora' FROM SPFILE;

Oluşturdugum pfile’ın içinde ORCL olan yerleri ORCLSTBY ile degiştiririm benim örnegime göre.
Bunun dışında aşagıda ki parametreleri pfile’a ekler veya varsa güncellerim.

db_name='ORCL'
db_unique_name='ORCLSTBY'
fal_client='ORCLSTBY'
fal_server='ORCL'
standby_file_management='AUTO'
log_archive_config='dg_config=(ORCL,ORCLSTBY)'
log_archive_dest_2='service=ORCL  ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ORCL' ;
db_file_name_convert='/ORCL/','/ORCLSTBY/'
log_file_name_convert='/ORCL/','/ORCLSTBY/'

Benim örnegime gore pfile’ımı ilk oluşturdugumda aşagıda ki gibiydi.

ORCL.__db_cache_size=331350016
ORCL.__java_pool_size=4194304
ORCL.__large_pool_size=4194304
ORCL.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORCL.__pga_aggregate_target=335544320
ORCL.__sga_target=503316480
ORCL.__shared_io_pool_size=0
ORCL.__shared_pool_size=150994944
ORCL.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/ORCL/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/ORCL/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='ORCL'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
*.fal_client='ORCL'
*.fal_server='ORCLSTBY'
*.log_archive_config='DG_CONFIG=(ORCL,ORCLSTBY)'
*.log_archive_dest_2='SERVICE=ORCLSTBY NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTBY'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=30
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

Standby için pfile’ımın en son güncellenmiş hali ise aşağıda ki gibidir.

ORCLSTBY.__db_cache_size=327155712
ORCLSTBY.__java_pool_size=4194304
ORCLSTBY.__large_pool_size=4194304
ORCLSTBY.__oracle_base='/u01/app/oracle'
ORCLSTBY.__pga_aggregate_target=335544320
ORCLSTBY.__sga_target=503316480
ORCLSTBY.__shared_io_pool_size=0
ORCLSTBY.__shared_pool_size=155189248
ORCLSTBY.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/ORCLSTBY/adump'
*.audit_trail='db'
*.db_file_name_convert='/ORCL/','/ORCLSTBY/'
*.log_file_name_convert='/ORCL/','/ORCLSTBY/'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/ORCLSTBY/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCLSTBY/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='ORCL'
*.db_unique_name='ORCLSTBY'
*.fal_client='ORCLSTBY'
*.fal_server='ORCL'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_config='DG_CONFIG=(ORCL,ORCLSTBY)'
*.log_archive_dest_2='service=ORCL  ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ORCL'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=30
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
  1. Production veritabanında rman’e bağlanırım ve rman yedek alırım.(primary)
rman target;
run
{
sql 'ALTER SYSTEM SWITCH LOGFILE';
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
allocate channel t5 type disk;
allocate channel t6 type disk;
allocate channel t7 type disk;
allocate channel t8 type disk;
backup as compressed backupset database format '/u01/app/oracle/rman/dbf_%d_%t_%s.rman';
backup archivelog all delete input format '/u01/app/oracle/rman/arc_%d_%t_%s.rman';
release channel t8;
release channel t7;
release channel t6;
release channel t5;
release channel t4;
release channel t3;
release channel t2;
release channel t1;
}
  1. Standby veritabanım için production veritabanımda control file oluştururum.(primary)
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/orclstby.ctl';
  1. Production sunucumda ki dosyaları standby sunucuma gönderirim.(primary)
#pfile
scp /tmp/initORCLSTBY.ora oracle@secondary:/u01/app/oracle/product/11.2.0/db_1/dbs/initORCLSTBY.ora

#Password File
scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapwORCL oracle@secondary:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwORCLSTBY

#Rman backup
scp -r /u01/app/oracle/rman/ oracle@secondary:/u01/app/oracle/

#Control File
scp /tmp/orclstby.ctl oracle@secondary:/u01/app/oracle/oradata/ORCLSTBY/control01.ctl
scp /tmp/orclstby.ctl oracle@secondary:/u01/app/oracle/fast_recovery_area/ORCLSTBY/control02.ctl
  1. Standby veritabanımı MOUNT modda açarım.(secondary)
STARTUP MOUNT;
  1. Yedek’ten veritabanını kurtararak standby’de kurulum yapmak için restore yaparız.(secondary)
rman target /
restore database;
  1. Production veritabanında redo log dosyalarını oluşturuz.(primary)
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/ORCL/online_redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/ORCL/online_redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/ORCL/online_redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
  1. Standby veritabanında redo log dosyalarını oluşturuz.(secondary)
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCLSTBY/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCLSTBY/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCLSTBY/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCLSTBY/standby_redo04.log') SIZE 50M;
  1. Standby prosesının başlaması için aşagıda ki komutu çalıştırırız.(secondary)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

2.Duplicate İle Data Guard Kurulumu

  1. 2 makinenin’de ip ve host bilgilerini birbirine tanıtırız.(primary-secondary)

Benim örneğime göre /etc/hosts dosyaları aşağıda ki gibi olmalıdır.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.125   primary.localdomain    primary
192.168.1.126   secondary.localdomain    secondary

NOT : tnsnames dosyasında hostname üzerinden gideceğim için bu tanımlamayı yapmam gerekir istenilirse bu tanımlama yapılmadan ip üzerinden de gidilebilir.

  1. Primary veritabanı ARCHIVELOG modda olmalıdır.Veritabanının ARCHIVELOG modunu control etmek için aşagıda ki sorguyu çalıştırabiliriz.(primary)
SELECT log_mode FROM v$database;

Eger sonuç NOARCHIVELOG mod dönüyorsa ARCHIVELOG moda almak için aşağıda ki adımları uygularız.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
  1. Bütün aktivitelerin log dosyalarına yazılması ve standby veritabanına uygulanması için bütün nesnelerin loglanmasını başlatmalıyız.(primary)
ALTER DATABASE FORCE LOGGING;
  1. Veritabanı kullanıcı şifreleri için production veritabanında ki password file’ı standby makineye kopyalarız ve kopyalarken de standby makinenin unqname’ine göre password file’ın ismini değiştiririz.(primary)
scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapwORCL oracle@secondary:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwORCLSTBY
  1. Standby makine de gerekli dizinleri oluşturuz.(secondary)
mkdir -p /u01/app/oracle/admin/ORCLSTBY/adump
mkdir -p /u01/app/oracle/fast_recovery_area/ORCLSTBY
mkdir -p /u01/app/oracle/oradata/ORCLSTBY
  1. Standby makine’de parameter file oluşturur ve db_name adını ekleriz.(secondary)

vi /u01/app/oracle/product/11.2.0/db_1/dbs/initORCLSTBY.ora

db_name='ORCLSTBY'
  1. Standby makinede listener oluşturuz.Benim örnegime göre aşagıda ki gibi olmalıdır.(secondary)

vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCLSTBY)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = ORCLSTBY)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secondary.localdomain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = /u01/app/oracle

Daha sonra listener kapatır yeniden başlatırız.

lsnrctl reload
  1. iptables kapatırız her iki makinede de.(primary-secondary)

NOT : işletim sistemi root kullanıcısı ile kapatılır.

/etc/init.d/iptables stop
chkconfig iptables off
  1. tnsnames.ora dosyası düzenlenir,her iki tarafda da.Benim örnegime gore aşagıda ki gibi olur.(primary-secondary)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

ORCLSTBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = secondary)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLSTBY)
)
)

NOT : tnsping atıp atmadığı kontrol edilir,her iki makinede de.

tnsping ORCL
tnsping ORCLSTBY
  1. Primary veritabanımda bulunan redo log dosya sayısının bir fazlası kadar standby redo log dosyası oluşturmamız gerekiyor.(primary)

Normal şartlar altında bu standby redo loğlarını standby veritabanın da oluşturmamız yeterli ama ileride ki switcover işlemlerini de düşünerek aynı standby loğlarını production veritabanından da oluşturuyorum.

Benim örneğim de primary veritabanında 3 tane redo log olduğu için ben örneğim de 4 tane standby redo log oluşturuyorum.

alter database add standby logfile '/u01/app/oracle/oradata/ORCL/standby01.log' size 50M;
alter database add standby logfile '/u01/app/oracle/oradata/ORCL/standby02.log' size 50M;
alter database add standby logfile '/u01/app/oracle/oradata/ORCL/standby03.log' size 50M;
alter database add standby logfile '/u01/app/oracle/oradata/ORCL/standby04.log' size 50M;

NOT : Duplicatekomutu çalıştıracagımız için standby veritabanıma redo loglarım dosyalarım gönderilecektir.Bu yüzden yukarıda ki komutu production veritabanında çalıştırmamız yeterli.

  1. Standby sunucumuzu NOMOUNT modda açalım.(secondary)
STARTUP NOMOUNT;
  1. Production veritabanımızdan rman ile auxiliary olarak bağlanır daha sonra duplicate komutunu çalıştırırz ve standby’ımızın kurulumu tamamlanmış olur.(primary)
rman target sys/oracle@ORCL auxiliary sys/oracle@ORCLSTBY
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database nofilenamecheck
spfile
parameter_value_convert 'ORCL','ORCLSTBY'
set db_file_name_convert='/ORCL/','/ORCLSTBY/'
set log_file_name_convert='/ORCL/','/ORCLSTBY/'
set db_unique_name='ORCLSTBY'
set control_files='/u01/app/oracle/oradata/ORCLSTBY/control01_ORCLSTBY.ctl'
set log_archive_max_processes='5'
set fal_client='ORCLSTBY'
set fal_server='ORCL'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(ORCL,ORCLSTBY)'
set log_archive_dest_1='service=ORCL LGWR ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ORCL' ;
sql channel prmy1 "alter system set log_archive_config=''dg_config=(ORCL,ORCLSTBY)''";
sql channel prmy1 "alter system set log_archive_dest_2=''service=ORCLSTBY LGWR ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ORCLSTBY''";
sql channel prmy1 "alter system set log_archive_max_processes=10";
sql channel prmy1 "alter system set fal_client=ORCL";
sql channel prmy1 "alter system set fal_server=ORCLSTBY";
sql channel prmy1 "alter system set standby_file_management=AUTO";
sql channel prmy1 "alter system set log_archive_dest_state_1=enable";
sql channel prmy1 "alter system archive log current";
sql channel stby "alter database recover managed standby database using current logfile disconnect";
}

Apply Prosesini Başlatmak ve Sonlandırmak

Apply işlemini başlatmak için aşağıdaki scriptlerden birini çalıştırabiliriz.

#Apply prosesini başlatır
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

#30 dk geçilme ile apply işlemini yapar
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY 30 DISCONNECT FROM SESSION;

#Gecikmesiz apply işlemi yapar
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY DISCONNECT FROM SESSION;

#Real-time apply yapar
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;

Apply işlemini başlatmak için aşağıdaki scriptlerden birini çalıştırabiliriz.

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Protection Mode

Standby’ımızın hangi modda çalıştığını öğrenmek için aşağıda ki scripti kullanabiliriz.

SELECT protection_mode FROM v$database;
  • Maximum Performance
  • Maximum Availability
  • Maximum Protection

Yukarıda ki 3 mod’danda bir önceki dökümanda bahsetmiştik varsayılan olarak Maximum Performance’da çalışır standby.
Modu değiştirmek için aşağıdaki scriptlerden istediğimizi kullanabiliriz.

-- Maximum Performance.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

-- Maximum Availability.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

-- Maximum Protection.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
ALTER DATABASE OPEN;

NOT : Production veritabanimiz ve standby veritabanımız arasında ki redo transferini ve apply durumunu takip etmek için aşagıda ki scripti kullanabiliriz.

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SELECT sequence#, first_time, next_time, applied
FROM   v$archived_log
ORDER BY sequence#;

NOT : Standby veritabanımızı read only modda açmak istersek aşağıda ki scripti kullanabiliriz.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe

3,828 total views, 2 views today