Dataguard’ dan Nasıl Test Ortamı Oluşturulur

Test ortamlarını genelde çok yoğun olarak prod ortamlardan alınan exp ve rman backupları test database’ ine dönmek suretiyle  oluşturulur. Ancak prod ile dataguard database’ leri farklı lokasyonlarda ve proddan alınacak olan backupın  da network veya başka bir yolla testin oluşturulacağa atılması problem olduğu durumlarda kaynak olarak dataguardı kullanabiliriz. Bu belirtmiş olduğun case sıkca karşılaşılan bir durum olmasa bile en azından dataguardı bu tarz bir işlem  içinde kullanılabileceğini bilmek de fayda var diye düşünüyorum.  Test ortamı kurulacak olan sunucu üzerine oracle software’ inin öncesinde kurulu olması gerekmektedir. Şimdi bu adımlardan step by step bahsetmeye çalışalım.

* Dataguard’ dan pfile alarak işlemlere başlayabiliz.

create pfile from spfile ;

file created.

Create ettiğimiz bu pfile’ i test ortamının parametre dosyasını oluşturmak için kullacağız.

* Testin ortamın kurulacağı sunucu üzerinde gerekli dizinler create edilir. (örneğin adump,bdump vs.)

* Test ortamı tarafına taşınan pfile düzenlenir. (örneğin test ortamı için oluşturulan yukarıdaki dizinler pfile içerisinde güncellenir, pfile’ in ismi test ortamının sid’ ini içerecek şekilde rename edilir, pfile’ i dataguard dan aldığımız buradaki gereksiz parametreler silinir, örneğin fal_client, log_arch_dest_2, dest_2_state vs. )

* Test ortamı sunucusu üzerinde oracle sid’ si ve oracle_home’ u export edilir.

* Create database komutu ile en basit haliyle sid verilerek boş bir database create edilir.

startup nomount

komutu ile database hazılamış olduğumuz pfile’ i kullanılarak nomount moda alınır.

* Aşağıdaki komut yardımı ile yeni controlfile dosyası create edilir.

Control file dosyasını create etmeden;

Control file dosyasında belirtilen dizinlerin test ortamında oluşturulması gerekmektedir. Oluşturulan bu dizinlere DG database’ i shutdown immediate ile kapatılarak bu file’ ler buraya kopyalanır. (veya DG tarafında MRP processesi çalışmamasıda yeterli olacaktır. Kopyalama süresince proddan ortamda çıkan archive’ lar apply olmayacağından dolayı bu archive’ ların kopyalama işlemi bitip DG da apply tekrar başlatılana kadar saklanması gerekecektir)

Test ortamının kurulumu öncesinde, redologların manuel olarak create edilmesine gerek yoktur, Redologlar control file create edilirken aşağıdaki komut ile sistem tarafından otomatik olarak oluşturulacaktır.

STARTUP NOMOUNT

CREATE CONTROLFILE SET DATABASE “PRODTEST” RESETLOGS NOARCHIVELOG

MAXLOGFILES 32

MAXLOGMEMBERS 5

MAXDATAFILES 600

MAXINSTANCES 10

MAXLOGHISTORY 100

LOGFILE

GROUP 1 (

‘/u01/PRODTEST/redo01.log’ ) SIZE 50M,

GROUP 2 (

‘/u01/PRODTEST/redo02.log’) SIZE 50M,

GROUP 3 (

‘/u01/PRODTEST/redo03.log’) SIZE 50M,

DATAFILE

‘/u01/PRODTEST/system01.dbf’,

‘/u01/PRODTEST/undotbs01.dbf’,

‘/u01/PRODTEST/sysaux01.dbf’,

‘/u01/PRODTEST/users01.dbf’,

‘/u01/PRODTEST/data01.dbf’,

‘/u01/PRODTEST/data02.dbf’,

‘/u01/PRODTEST/data03.dbf’

;

Son dbf’ den sonra “,” olmamasına dikkat edilmelidir.  Burada “,”  kalması durumunda aşağıdaki gibi bir hata ile karşılaşırsınız ;

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-01163: SIZE clause indicates 12800 (blocks), but should match header

2621440

ORA-01110: data file 7: ‘/u01/PRODTEST/data03.dbf’

* Datafile’ leri kopyalayıp control file’i create ettikden sonra database’ imizi OPENRESETLOG ile  açıyoruz;

Resetlog parametresini kullanmadığımızda aşağıdaki hatayı ile karşılaşırız.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

resetlogla açmamız gerekiyor;

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: ‘/u01/PRODTEST/system01.dbf’

Resetlogda da datafile’ lerin SCN’ ların da uyumsuzluk olduğundan aşağıdaki gibi bir hata alıyoruz;

Aslında burdan sonraki kısmı sadece test ortamı oluştururken değil, datafile’ lerin SCN larında uyuşmazlık olduğu tüm durumlarda karşılaşabileceğimiz bir hata, bu örneği özellikle vermek istedim çünkü ne kadar çok hata durumunu izah etmeye çalışırsak, blog’ un o kadar faydası olacağını düşünüyorum.  Her bir datafile’ in SCN değerini ve aralarındaki tutarsızlıkları aşağıdaki sorgu ile görebiliriz. Böyle bir  durumda yapmamız gerekense SCN’ ları  eşitlemek için recover işlemi yapmamız gerekmektedir.

SQL> select HXFIL File_num,substr(HXFNM,1,40) File_name, FHSCN SCN, FHSTA status ,FHRBA_SEQ Sequence from X$KCVFH;

Recover işlemi ;

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;

ORA-00279: change 3861769559 generated at 06/14/2011 00:13:33 needed for thread1

ORA-00289: suggestion : /oracle/flash_recovery_area_UAT/PRODTEST/archivelog/2011_06_14/o1_mf_1_87311_%u_.arc

ORA-00280: change 3861769559 for thread 1 is in sequence #87311

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

Burada iki seçeneğimiz var, birincisi AUTO yu seçip elimizde varsa archive larımız son archive kadar bunları işletip ana kadar gelebiliriz.  Production bir ortamda benzeri bir durumla karşılaşıyor olsaydık bunu seçiyor olacaktık. Ama bizim örneğimizde test ortamı kurduğumuzdan dolayı CANCEL opsiyonunu seçerek recovery işlemini sonlandırıyoruz.

CANCEL

Media recovery cancelled.

* Recover işlemi yapıldıktan sonra tekrar open komutu çalıştırıyoruz;

SQL> alter database open resetlogs;

Database altered.

Test veritabanımız artık kurulmuş oldu. İşimizin

* Kurulum sonrası kontrol edilecekler ;

– İlk olarak Temp tablespace’ in olup olmadığı kontrol edilmelidir;

select * from dba_temp_files;

Sorgusunun no_rows dönmesi durumunda aşağıdaki script ile bir temp tablespace’ i oluşturmamız gerekir, path ve size bilgileri ihtiyaca göre göncellenmelidir;

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE

‘/usr/ORACLE/ DATA/temp01.dbf’ SIZE  5000M AUTOEXTEND OFF

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

– İkinci olarak bir tane password file create etmemiz gerekir;

orapwd file=orapwPRODTEST password=sys_password entries=5 force=Y

Password file create edildikden sonra aktif olması için database’ in restart edilmesi gerekmektedir.

– Kullanıcıların yetkileri kontol edilebilir.

Bu adımlar bir test ortamı için yeterli olacaktır. Aslında test ortamı oluşturmak için izlenebilecek çok farklı yöntemler var. Buradaki bahsettiklerimde bunlardan sadece bir tanesi, en azından olaylara farklı bakış açılarıyla bakmamız gerektiğinde ve farklı durumlarda birden fazla çözüm üretmeniz gerektiğinde bu tarz bilgilerin faydalı olacağını düşünüyorum.

Be Sociable, Share!

Bir cevap yazın

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


altı − = 5