DNFS ile database clone (RAC to single instance)

Selamlar,

bu makalede DNFS’in clone özelliğini kullanarak ZFS appliance üzerine backup’ını aldığımız bir database’i hızlı bir şekilde başka bir lokasyona clone’layacağız. Bu işi yeni bir test ortamı oluşturmak için kullanabilirsiniz. Image copy backup alacağımız için restore süresi oldukça kısa olacak.

Dizayn şu şekilde ;

Untitled-1 copyŞimdi adım adım başlayalım. Her adımın başına hangi server üzerinde çalışacağını yazmaya çalıştım.

1. [orcl1 & gantek] Öncelikle DNFS’i mount ediyoruz ve server’ın DNFS’e erişebildiğini kontrol ediyoruz. ‘/dnfs’ dizininin owner’ı oracle ve grubu oinstall olmalı.

[oracle@db dnfs]$ touch /dnfs/testfile
[oracle@db dnfs]$ cd /dnfs
[oracle@db dnfs]$ ls -l
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 testfile

2. [orcl1 & gantek] Tüm server’larda aşağıdaki dizinleri oluşturuyoruz. Bu dizinlere karşılık gelen share’ları da ZFS üzerinde oluşturmamız gerekiyor. Her dizin için share oluşturulmaz ise backup sırasında farklı kanallardan yazma işlemi yapamayız ve backup süremiz uzar.

[oracle@db dnfs]$ cd /dnfs
[oracle@db dnfs]$ mkdir clone_backup1 clone_backup2 clone_backup3 clone_backup4
[oracle@db dnfs]$ ls -l
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup1 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup2 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup3 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup4

3. [orcl1] Backup script’ini yazıyoruz ve image copy backup’ı başlatıyoruz. DNFS paralel olarak 4 dizin’e de backup alınıyor. Burada performansı arttırmak için channel sayısı arttırılabilir.

[oracle@db script]$ vi backup.sql
run{
    sql 'alter database begin backup';
    sql 'alter system set "_backup_file_bufcnt"=64 scope=memory';
    sql 'alter system set "_backup_file_bufsz"=1048576 scope=memory';
    configure device type disk parallelism 4 backup type to copy;
    allocate channel ch1 device type disk format '/dnfs/clone_backup1/%d_%T_%p_%U.dbf' ;
    allocate channel ch2 device type disk format '/dnfs/clone_backup2/%d_%T_%p_%U.dbf' ;
    allocate channel ch3 device type disk format '/dnfs/clone_backup3/%d_%T_%p_%U.dbf' ;
    allocate channel ch4 device type disk format '/dnfs/clone_backup4/%d_%T_%p_%U.dbf' ;
    backup as copy database tag '$FullBackUpSet_dbf';
    sql 'alter database end backup';
}
[oracle@db script]$ rman target /
RMAN> @backup.sql

4. [gantek] Değişkenleri set ediyoruz.
master_copy_dir: backup’ların durduğu dizini göstermeli.
clone_file_create_dest: datafile’ların konacağı dizini göstermeli. Clone işlemi tamamlandıktan       sonra tüm datafiler’lar burada olacak.

export ORACLE_SID=gantek
export MASTER_COPY_DIR=/dnfs/clone_backup*
export CLONE_FILE_CREATE_DEST=/u01/app/oracle/oradata/gantek
export CLONEDB_NAME=gantek

5. [gantek] pfile create ediyoruz.

*.audit_file_dest='/u01/app/oracle/admin/gantek/adump'
*.audit_trail='DB'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/gantek/control01.ctl','/u01/app/oracle/oradata/gantek/control02.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/gantek/'
*.db_name='gantek'
*.db_recovery_file_dest_size=4070572032
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TESTXDB)'
*.event=''
*.memory_target=843055104
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.clonedb=true
_no_recovery_through_resetlogs=TRUE

6. [gantek] gerekli dizinleri create ediyoruz.

[oracle@db dnfs]$ mkdir /u01/app/oracle/oradata/gantek/
[oracle@db dnfs]$ mkdir /u01/app/oracle/fast_recovery_area
[oracle@db dnfs]$ mkdir /u01/app/oracle/admin/gantek/adump

7. [gantek] clone.pl ile script’lerimizi oluşturuyoruz. (Clone.pl script’ini indirmek için: Doc ID 1210656.1)

perl /dnfs/Clone.pl /u01/app/oracle/product/11.2.0.4/db_1/dbs/initGANTEK.ora crtdb.sql dbren.sql

Clone.pl; crtdb.sql ve dbren.sql script’lerini oluştururken çevre değişkenlerinden (MASTER_COPY_DIR, ORACLE_SID, CLONE_FILE_CREATE_DEST, CLONEDB_NAME) ve oluşturduğumuz pfile’dan (initGANTEK.ora) yararlanır. Bunlar düzgün şekilde verilmez ise script’ler düzgün şekilde oluşturulamaz ve clone işlemi başarırız olur.

8. [gantek] Sırayla sql’leri çalıştırıyoruz.

SQL> @crtdb.sql
SQL> @dbren.sql

Script’ler başarılı olarak çalıştırıldıktan sonra database no archive log modda create edilmiş ve open moda alınmış olacaktır. Eğer hata alırsa script’lerin içine girip editlenebilir.

[oracle@db dnfs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Sep 23 14:56:53 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>

Kolay gelsin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s