Production database in bir klonunu oluşturmak çoğu zaman test ve development işlemleri açısından işe yarayıcı olabilir.

Bu işlemler adım adım şu şekilde yapılır:

1.ADIM:
Production database e sqlplus üzerinden sysdba yetkisi olan bir kullanıcı ile bağlanıp şu komutu çalıştırıyoruz.

ALTER DATABASE backup CONTROLFILE TO trace

bu komut içinde database create syntaxini içeren bir dosya oluşturulur. Dosyanın oluşturulacağı yer trace file directory sidir. Bu directory i öğrenmek için user_dump_dest parametresine bakılmalıdır.

show parameter user_dump_dest


Trace dosyasının içinde şu kısım bizim için önemli:

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 1168
LOGFILE
GROUP 1 'E:\PRODDB\REDO011.LOG' SIZE 50M,
GROUP 2 'E:\PRODDB\REDO012.LOG' SIZE 50M,
GROUP 3 'E:\PRODDB\REDO013.LOG' SIZE 50M,
GROUP 4 'E:\PRODDB\REDO021.LOG' SIZE 50M,
GROUP 5 'E:\PRODDB\REDO022.LOG' SIZE 50M,
GROUP 6 'E:\PRODDB\REDO023.LOG' SIZE 50M,
GROUP 7 'E:\PRODDB\REDO031.LOG' SIZE 50M,
GROUP 8 'E:\PRODDB\REDO032.LOG' SIZE 50M,
GROUP 9 'E:\PRODDB\REDO033.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'E:\PRODDB\SYSTEM01.DBF',
'E:\PRODDB\UNDOTBS01.DBF',
'E:\PRODDB\SYSAUX01.DBF',
'E:\PRODDB\USERS01.DBF',
'E:\PRODDB\APP01_DATA.DBF',
'E:\PRODDB\APP01_INDEX.DBF',
'E:\PRODDB\APP01_LOB.DBF',
'E:\PRODDB\APP01_REPORT_DATA.DBF',
'E:\PRODDB\APP01_REPORT_INDEX.DBF',
'E:\PRODDB\APP01_ARCHIVE_DATA.DBF',
'E:\PRODDB\APP01_ARCHIVE_INDEX.DBF',
'E:\PRODDB\APP01_DATA2.DBF',
'E:\PRODDB\APP01_INDEX2.DBF'
CHARACTER SET WE8ISO8859P9
;
# Recovery IS required IF ANY OF the datafiles are restored
# backups, OR IF the LAST shutdown was NOT normal OR IMMEDIATE.
RECOVER DATABASE
# DATABASE can now be opened normally.
ALTER DATABASE OPEN;

2.ADIM

Production database i kapatıyoruz.

3.ADIM

Tüm datafile ları TEST veritabanının bulunduğu yere kopyalıyoruz.Eğer datafile ların adını değiştirmek istersek control file da ilgili yerlerde bu değişikleri yapmak zorundayız.

4.ADIM
Kritik bir adım: 1. adımda oluşturduğumuz create database scriptinin içindeki control file ın oluşturulduğu kısımda TEST database imize göre aşağıdaki değişikliği yapmak zorundayız.

CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS

Şöyle değiştiriyoruz:

CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS ARCHIVELOG

5.ADIM:
Scriptten aşağıdaki satırları kaldıralım

# Recovery IS required IF ANY OF the datafiles are restored
# backups, OR IF the LAST shutdown was NOT normal OR IMMEDIATE.
RECOVER DATABASE
# DATABASE can now be opened normally.
ALTER DATABASE OPEN;

6.ADIM
Scripti db_create_controlfile.sql
olarak kaydedelim, bu arada değişen datafileların yerini değiştirmeyi unutmuyoruz.
Prod :
[

'E:\PRODDB\APP01_REPORT_DATA.DBF',
'E:\PRODDB\APP01_REPORT_INDEX.DBF',

Test :

'E:\TESTDB\APP01_REPORT_DATA.DBF',
'E:\TESTDB\APP01_REPORT_INDEX.DBF',

8.ADIM
bdump, udump, cdump directory lerini oluşturuyoruz.
9. ADIM
init.orayı test veritabanı dizinine kopyalıyoruz.
Copy E:\production_veritabanı\*.ora E:\test_veritabanı\
10. ADIM
Test veritabanını başlatıyoruz.

@ db_create_controlfile.SQL
print
Share