RMAN DUPLICATE ILE STANDBY DATABASE KURULUMU

RMAN DUPLICATE ILE STANDBY DATABASE KURULUMU

Standby veritabanlari production veritabanlarinin bire bir kopyasidir ve bu databaseler genelde felaket durumlarinda kullanilmak için yedek database olarak kullanilir. Bu makalede standby veritabaninin rman duplicate ile nasil kuruldugundan bahsedecegim. Production veritabaninin birebir kopyasini olusturmak için en kolay yöntem recovery manager (RMAN) kullanmaktir. Bunun disinda fiziksel dosya kopyalama yöntemi kullanilabilir fakat bu yöntemi online yapmak mümkün degildir. RMAN ile backup alinip bu backup i restore ederek standby database olusturabiliriz fakat 11 g ile network üzerinden backup almadan duplicate yöntemi ile kopya olusturabiliyoruz. 10 g de duplicate yapilabiliyor fakat yine backup alip standby tarafinda bu dosyalari kullanmak durumunda kaliyoruz. Backupin alinmasi, standby tarafina yüklenmesi ve restore edilmesi adimlari düsünüldügünde backup-restore yönteminde epeyce vakit kaybi yasanmaktadir. Tabiki sunucular arasinda güçlü bir networkünüz yoksa duplicate de vakit alacaktir ama bana göre her halükarda bu yöntem en iyi metottur. Bu makalede Oracle ASM üzerinde çalisan bir veritabani için kurulum anlatilacaktir.

.
OS = Linux/Unix Oracle Database/Grid Version = 11.2.0.3 PRIMARY/PRODUCTION
Database = ISTANBUL PRIMARY ASM DISKGROUP = +DATA STANDBY
Database = ANKARA STANDBY ASM DISKGROUP = +DATAFKM
Standby profile dosyasi isletim sistemi kullanicisi için ORACLE_BASE=/oracle/product;
export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/11.2.0/db;
export ORACLE_HOME ORACLE_SID=ANKARA;
export ORACLE_SID DISPLAY=`hostname`:0.0;
export DISPLAY PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/bin/X11:/usr/
local/bin:$ORACLE_HOME/OPatch:/oracle/product/11.1.0/crs/bin:$PATH;
export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib;
export LD_LIBRARY_PATH SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib32;
export SHLIB_PATH TMP=/oracle/oratmp;
export TMP TMPDIR=/oracle/oratmp;
export TMPDIR TEMP=/oracle/oratmp;
export TEMP TEMPDIR=/oracle/oratmp;
export TEMPDIR Production profile dosyasi isletim sistemi kullanicisi için ORACLE_BASE=/oracle/product;
export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/11.2.0/db;
export ORACLE_HOME ORACLE_SID=ISTANBUL;
export ORACLE_SID DISPLAY=`hostname`:0.0;
export DISPLAY PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/bin/X11:/usr/local/
bin:$ORACLE_HOME/OPatch:/oracle/product/11.1.0/crs/bin:$PATH;
export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib;
export LD_LIBRARY_PATH SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib32;
export SHLIB_PATH TMP=/oracle/oratmp;
export TMP TMPDIR=/oracle/oratmp;
export TMPDIR TEMP=/oracle/oratmp;
export TEMP TEMPDIR=/oracle/oratmp;
export TEMPDIR

Standby Database Kurulumu 1. Öncelikle production veritabaninda force logging açilir. Asagidaki komutu çalistirarak force logging i açiyoruz.

alter database force logging

2. Standby veritabaninda Database Software ve Grid Infrastructure kurulduktan sonra primary database den password dosyasi kopyalanir. Standby tarafinda asagidaki komut ile dosyayi kopyalayabilirsiniz.

Scp oracle/password@production_db:$ORACLE_HOME/dbs/orapwISTANBUL
$ORACLE_HOME/dbs/orapwANKARA Password file kopyalandiktan sonra production veritabanin init dosyasi olusturulur
    ve standby tarafina kopyalanir.
 Production veritabaninda :
sqlplus “/as sysdba” SQL->
create pfile=’/home/oracle/initANKARA.ora’
from spfile; daha sonra bu dosya standby tarafina kopyalanir.
Scp oracle/password@production_db:/home/oracle/initANKARA.ora
$ORACLE_HOME/dbs/

Init dosyasini standby database tarafinda kullanabilmek için birkaç parametreyi degistirmemiz gerekecek. Production veritabanindan alinan parametre dosyasi asagidaki gibi olacaktir.

ISTANBUL.__db_cache_size=40533753856
ISTANBUL.__oracle_base='/oracle/product'
ISTANBUL.__shared_pool_size=7784628224
*._ash_size=134217728
*.audit_file_dest='/oracle/product/admin/ISTANBUL/adump'
*.audit_trail='DB'
*.compatible='11.2.0.0.0'
*.control_files='+DATA/ISTANBUL/control01.ctl','+DATA/ISTANBUL/control02.ctl'
*.cursor_sharing='EXACT'
*.db_block_size=8192
*.db_cache_size=43622320128
*.db_domain=''
*.db_file_multiblock_read_count=32 *.db_files=1000
*.db_name='ISTANBUL'
*.diagnostic_dest='/oracle/product'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ISTANBULXDB)'
*.java_pool_size=78643200
*.job_queue_processes=50
*.large_pool_size=786432000
*.local_listener='LISTENER_ISTANBUL'
*.log_archive_dest_1='LOCATION=+DATA'
*.log_archive_format='%t_%s_%r.arc'
*.log_buffer=10000000 *.open_cursors=65000
*.optimizer_dynamic_sampling=1
*.parallel_execution_message_size=65536
*.parallel_max_servers=32
*.parallel_servers_target=32
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=10737418240
*.processes=1000
*.recyclebin='off'
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_limit=FALSE
*.sga_target=0
*.shared_pool_size=5368709120
*.star_transformation_enabled='TRUE'
*.undo_management='AUTO'
*.undo_tablespace='UNDO

Asagidaki gibi düzenlenir ve standby tarafinda çalisacak hale getirilir. /oracle/product/admin/ANKARA/adump ilgili dizin standby tarafinda olusturulmus olmalidir Koyu renkli parametler disindaki parametreler ayni kalmalidir.

*.audit_file_dest='/oracle/product/admin/ANKARA/adump'
*.audit_trail='DB'
*.compatible='11.2.0.0.0'
*.control_files='+DATAFKM/ANKARA/control01.ctl','+DATAFKM/ANKARA/control02.ctl'
*.cursor_sharing='EXACT'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_files=1000 *.db_name='ISTANBUL'
*.db_unique_name='ANKARA'
*.diagnostic_dest='/oracle/product'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ANKARAXDB)'
*.job_queue_processes=50 *.log_archive_dest_1='LOCATION=+DATAFKM'
*.log_archive_format='%t_%s_%r.arc'
*.open_cursors=65000
*.optimizer_dynamic_sampling=1
*.parallel_execution_message_size=65536
*.parallel_max_servers=32
*.parallel_servers_target=32
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=10737418240
*.processes=1000
*.recyclebin='off'
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_limit=FALSE
*.sga_target=24737418240
*.sga_max_size=24737418240
*.star_transformation_enabled='TRUE'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'

3. Standby init dosyasi düzenlendikten sonra hem standby tarafinda hemde production tarafinda tnsnames.ora dosyasina her iki database için erisim bilgisi eklenir. $ORACLE_HOME/network/admin/tnsnames.ora dosyasina asagidaki tns bilgileri girilir.

ISTANBUL =
(
   DESCRIPTION =
   (
      ADDRESS =
      (PROTOCOL = TCP)
      (HOST = istanbul_db_ip_veya_host)
      (PORT = 1521))
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ISTANBUL)
   )
)
ANKARA =
(
   DESCRIPTION =
   (
      ADDRESS =
      (PROTOCOL = TCP)
      (HOST = ankara_db_ip_veya_host)
      (PORT = 1521))
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID= ANKARA)
   )
)

4. Standby database nomount modda açilir ve database i dinleyecek listener olusturulur.

Sqlplus “/as sysdba”
SQL-> startup nomount;
$ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(
   SID_LIST =
   (
      SID_DESC =
      (GLOBAL_DBNAME = ANKARA)
      (ORACLE_HOME = $ORACLE_HOME)
      (SID_NAME = ANKARA)
   )
)
LISTENER =
(
   DESCRIPTION_LIST =
   (
      DESCRIPTION =
      (
         ADDRESS =
         (PROTOCOL = IPC)
         (KEY = EXTPROC1521))
         (ADDRESS =
         (PROTOCOL = TCP)
         (HOST = standby_ip_veya_host)(PORT = 1521)
      )
   )
)

Listener dosyasi düzenlendikten sonra listener açilir.

Lsnrctl start LISTENER
Standby tarafini init dosyasi ile açmistik fakat spfile ile çalismak daha kolay olacagi için spfile create edilir.
Sqlplus “/as sysdba”
SQL ->
create spfile from pfile;
SQL->shutdown abort;
SQL->startup nomount;
SQL->Show parameter spfile;
.

5. Spfile create edildikten sonra standby ve primary database ler için asagidaki parametler set edilir. Standby database de sql komut satirinda çalistirilir

ALTER SYSTEM SET
LOG_ARCHIVE_CONFIG='DG_CONFIG=( ISTANBUL, ANKARA)'
SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ISTANBUL LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ISTANBUL'
SCOPE=BOTH ;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT ='+DATA/ISTANBUL/', '+DATAFKM/ANKARA/'
SCOPE=SPFILE ; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH ;
ALTER SYSTEM SET FAL_SERVER= ISTANBUL SCOPE=BOTH ;
ALTER SYSTEM SET FAL_CLIENT= ANKARA SCOPE=BOTH ;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE' scope=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1='ENABLE' scope=BOTH;
ALTER SYSTEM SET log_file_name_convert= '+DATA/ISTANBUL','+DATAFKM/ANKARA' scope=SPFILE;


production veritabaninda çalistirilir
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=( ISTANBUL, ANKARA)'
SCOPE=BOTH ; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ANKARA LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ANKARA'
SCOPE=BOTH ; ALTER SYSTEM SET DB_FILE_NAME_CONVERT ='+DATAFKM/ANKARA/', '+DATA/ISTANBUL/' SCOPE=SPFILE ;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT ='+DATAFKM/ANKARA/','+DATA/ISTANBUL/' SCOPE=SPFILE ;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH ;
ALTER SYSTEM SET FAL_SERVER= ANKARA SCOPE=BOTH ;
ALTER SYSTEM SET FAL_CLIENT= ISTANBUL SCOPE=BOTH ;
----veritabani duplicate edilene kadar log akisini kesmekte fayda var duplicate sü
--resince de production ortamdan arsiv loglar silinmezse daha sonra restore etmek zorunda kalmayiz.----
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER' scope=BOTH ;

6. Her iki tarafta da parametreler düzenlendikten sonra standby tarafi yeniden baslatilir.

Sqlplus “/as sysdba” SQL ->
shutdown abort; SQL -> startup nomount;

7. Production veritabaninda standby log grouplar olusturulur.

alter database add standby logfile
group 29 ('+DATA') size 128M,
group 30 ('+DATA') size 128M,
group 31 ('+DATA') size 128M,
group 32 ('+DATA') size 128M;

8. Her ne kadar duplicate ile controlfile kopyalansada production ortaminin controlfile backupi alinir ve standby tarafinda restore edilir. Primary database de :

Rman target / rman->
backup current controlfile for standby format '/home/oracle/ForStbCtl_IDM_%U';
Backup alindiktan sonra standby tarafina kopyalanir.
standby da : scp oracle@production_db:/home/oracle/ ForStbCtl_ISTANBUL_ /home/oracle
daha sonra standby da controlfile restore edilir.
Rman target / rman->
restore controlfile from '/home/oracle/ ForStbCtl_ISTANBUL_’;

9. Productionda rman e baglanip db duplicate baslatilir. Asagidaki komutlar production veritabaninda çalistirilir. Herhangi bir dizinde duplicate.rman adinda bir dosyaya kaydedecegim ve nohup ile arka planda çalismasini saglayacagim.

Cd /home/oracle Vi duplicate.rman
connect target / connect auxiliary sys/sysIDMdb1@ANKARA;
RUN { ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux4 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux5 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux6 DEVICE TYPE DISK;
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;
duplicate target database for standby from active database;
release channel aux1;
release channel aux2;
release channel aux3;
release channel aux4;
release channel aux5;
release channel aux6;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
release channel t5;
release channel t6; }
Production_db_host ->
nohup rman cmdfile duplicate.rman log duplicate.log &
duplicate.log dosyasi takip edilir

10. Duplicate islemi bittikten sonra primary tarafta log gönderme açilir.

Production veritabanin da : sqlplus “/as sysdba” SQL->
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE'
scope=both;
Standby tarafinda ise arsiv isleme prosesi baslatilir.
Sqlplus “/as sysdba”
SQL ->
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT
LOGFILE DISCONNECT;
Asagidaki sorgu ile standby da prosesin arsiv isleyip islemedigi kontrol edilir.
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

RMAN Duplicate yöntemi database kopyalamada kullanilabilecek en pratik ve kolay yöntemdir sadece dataguard/standby için degil production veritabaninizin kopyasina ihtiyaciniz oldugunda da kullanabilirsiniz. Asagidaki linklerden rman duplicate ile nasil veritabani kopyasi olusturulacagi ile iligli detayli bilgiye ulasabilirsiniz.

Oracle 9.2 = http://docs.oracle.com/cd/B10501_01/server.920/a96566/rcmdupdb.htm
Oracle 10gR2 = http://docs.oracle.com/cd/B19306_01/backup.102/b14191/rcmdupdb.htm
Oracle 11gR1= http://docs.oracle.com/cd/B28359_01/backup.111/b28270/rcmdupdb.htm

.

One thought on “RMAN DUPLICATE ILE STANDBY DATABASE KURULUMU

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir