Ana içeriğe atla

RMAN:DUPLICATE DATABASE İLE YENİ BİR VERİTABANI YARATMA


Veritabanımızın son alınan mevcut backup'ından yeni bir test ortamı oluştururken hazırladığım aksiyon planını aşağıdaki gibi paylaşmak istedim. Eklemek istediğiniz veya yanlış olduğunu düşündüğünüz hertürlü konuyu paylaşırsanız sevinirim.

Tanımlar:
prd: kopyası oluşturalacak production sistemi

prdserver: production veritabanı server ı
test: oluşturulacak test sistemi.

testserver: test veritabanı server ı

catalogdb: rman katalog bilgilerinin bulunduğu veritabanı
catdbserver: katalog veritabanı server ı


Test ortamında listener düzenlemesi:
* oluşturulacak test ortamının mevcut listener.ora dosyasına aşağıdaki satırlar eklenir.


(SID_DESC =
(GLOBAL_DBNAME = prd)
(ORACLE_HOME = /app/oracle/product/11.1.0/db_1)
(SID_NAME = prd)
)


TNS tanımlarınını yapılması:
* test ortamının tnsnames.ora dosyasına catalog ve prod veriabanlarının tns tanımları eklenir.

catalogdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = catdbserver)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = catalogdb)
)
)

PRD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = prdserver)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prd)
)
)

test ortamında init.ora'da düzenleme yapılır:

Controlfile’ların yeni path’i neresi olacaksa init.ora dosyasında düzenlenir. db ve log file'larının yerleri değiştirilecekse init.ora dosyasına ilgili convert satırları eklenir.

....

*.control_files='/app/oracle/oradata/test/controlfile01.bak','/app/oracle/oradata/test/controlfile02.bak'

DB_FILE_NAME_CONVERT=(/app/oracle/oradata/prod/,/app/oracle/oradata/test/)
LOG_FILE_NAME_CONVERT=(/app/oracle/oradata/prod/,/app/oracle/oradata/test/)
....

test ortamında passwordfile create edilir:
orapwd file=orapwprd password=syspass entries=10

test sistemine en son alınan produciton backup'ı kopyalanır:
scp /prd/dump/DBBACKUP/PRD_dbf_bck_690234592_64.rman oracle@testserver:/prd/dump/DBBACKUP
scp /prd/dump/DBBACKUP/PRD_archlog_bck_690235138_66.rman oracle@testserver:/prd/dump/DBBACKUP
scp /bnprd/dump/DBBACKUP/snapcf_prd.f oracle@testserver:/prd/dump/DBBACKUP


prod ortamında son alınan backup’tan sonra üretilen archive dosyalarının da backup’ı alınarak test ortamına gönderilir.

rman target / catalog rcowner/rcpass@catalogdb

RMAN> sql 'alter system archive log current';
RMAN> backup FORMAT '/prd/dump/DBBACKUP/%d_archlog_bck_%t_%s.rman' ARCHIVELOG ALL DELETE INPUT;


scp /prd/dump/DBBACKUP/PRD_archlog_bck_690235138_66.rman oracle@testserver:/prd/dump/DBBACKUP
scp /prd/dump/DBBACKUP/snapcf_prd.f oracle@testserver:/prd/dump/DBBACKUP

test ortamında SID'yi test olarak set edilip umount modda açılır:
startup nomount;


Rman ile prod ve catalog db'e bağlanılır:
rman target sys@prd catalog rcowner/rcpass@catalogdb AUXILIARY /

test ortamını backup'tan duplicate edilir:
DUPLICATE TARGET DATABASE TO test;


Bu işlemin başarılı ile bitmesinin ardından database test ortamı oluşturulmuştur. Güvenlik önlemi olsun diye mevcut database link'ler drop edilebilir. Aynı zamanda şifre bilgilerini de resetleyerek herhangibir şekilde production'a gitmek isteyenlerin yanlış veritabanına bağlanması önlenmiş olacaktır.

İşinize yaraması dileğiyle.

Yorumlar

Bu blogdaki popüler yayınlar

Materialized View kullanımı ve Fast Refresh için basit bir örnek

Materialized view’lar(MV) genel olarak Data warehouse sistemlerinde kullanılır. Normal view’lar sadece sorguları saklayıp istenildiğinde dataları ilgili tablolardan belirtilen kriterlere göre getirirken, materialized view’larda sorguların yanı sıra bu sorguların sonucunda dönen datalar da tutulur. Yani bir nevi tablo görevi görür. Bunun kullanılma amacı ise; devasa datalara sahip tabloların sadece belirtilen kriterlere uyan datalarını önceden hazırlayıp hızlı bir şekilde sunmak. Materialized view’ların sorguladığı tablolardaki datalar değiştiğinde değişikliklerin bu view’lara yansıması için bu materialized view’ların refresh edilmesi gerekiyor. Birkaç refresh metodu bulunmaktadır ve mv create işleminde belirtilir. COMPLETE ve FAST. Refresh işlemi için DBMS_MVIEW.REFRESH prosedürü kullanılır. Refresh Complete: MV refresh complete yapıldığında mv’ı oluşturan sorgu tekrar çalıştırılır ve gelen dataların tamamı mv’daki dataların yerine geçer. Refresh etmek için DBMS_MVIEW.REFRES...

Veritabanı dosyalarını(datafile) başka bir dizine taşıma

Bu işlem veritabanı kapalıyken veya açıkken yapılabilir. 1 ) Veritabanı Kapalıyken: * Database kapatılır. SQL > shutdown imeediate * Datafile yeni dizine kopyalanır veya move edilir. $ cp /old_location/dbfilename01.dbf /new_location/ Taşımayıp kopyaladıysanız eski lokasyondaki datafile'ı kullanmasını önlemek adına ek önlem için rename edebiliriz. $ mv /old_location/dbfilename01.dbf /old_location/dbfilename01.dbf_OLD * Database mount mode'da açılarak datafile rename edilir. SQL > startup mount SQL > alter database rename file '/old_location/dbfilename01.dbf' to '/new_location/dbfilename01.dbf'; * Database open mode'a alınır. SQL > alter database open; 2 ) Veritabanı Açıkken: Bunu yapabilmek için database'in archive log mode'da olması gerekiyor. Bunu aşağıdaki komutla kontrol edebilirsiniz. SQL> select log_mode from sys.v_$database; LOG_MODE ------------ ARCHIVELOG * Datafile offline'a alınır. SQL> al...

FLASHBACK RECOVERY:

Flashback özelliğinin kullanımı ile ilgili kısa bir örnek yapalım. Bu örnekte test çalışmasında kullanılmak database'in flashback özelliğinin açarak bir restore point yaratıp, testlerin ardından yaratılan restore point'e dönerek database'i test öncesindeki haline getiririz. ilk önce veritabanının flashback için kullanacağı alanı ayarlarız. Aşağıdaki parametrelerden bu alanın ayrılmadığını görebiliriz. SQL> show parameters db_recovery; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string db_recovery_file_dest_size big integer 0 Bu alanı aşağıdaki gibi set edebiliriz. alter system set db_recovery_file_dest_size=2g; alter system set db_recovery_file_dest='/app/oracle/flash_recovery_area'; init .ora dosyasına aşağıdaki satırlar yazılır: *.db_recovery_file_dest='/app/oracle/flash_recovery_area' *.db_recovery_file_dest_s...