Pa ukratko:
[1] Uradiš backup kontrolfajla u Udump direktorijum
Code:
alter database backup controlfile to trace
Ova komanda će ti kreirati
.trc fajl koji izgleda otprilike ovako (malo sam ga skratio ali poenta je bitna):
Code:
Dump file D:\Oracle\admin\kgtest\udump\ORA02324.TRC
Wed Apr 18 10:37:22 2007
ORACLE V8.1.6.3.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 1, v.1023, CPU type 586
Oracle8i Enterprise Edition Release 8.1.6.3.0 - Production
With the Partitioning option
JServer Release 8.1.6.3.0 - Production
Windows 2000 Version 5.2 Service Pack 1, v.1023, CPU type 586
Instance name: kgtest
Redo thread mounted by this instance: 1
Oracle process number: 23
Windows thread id: 2324, image: ORACLE.EXE
*** SESSION ID:(13.19583) 2007-04-18 10:37:22.125
*** 2007-04-18 10:37:22.125
# The following commands will create a new control file and use it
# to open the database.
# Data used by the recovery manager will be lost. Additional logs may
# be required for media recovery of offline data files. Use this
# only if the current version of all online logs are available.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "KGTEST" NORESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 339
LOGFILE
GROUP 1 'C:\ORACLE\ORADATA\KGTEST\REDO01.LOG' SIZE 100M,
GROUP 2 'D:\ORACLE\ORADATA\KGTEST\REDO02.LOG' SIZE 100M,
GROUP 3 'E:\ORACLE\ORADATA\KGTEST\REDO03.LOG' SIZE 100M,
GROUP 4 (
'H:\ORACLE\KGTEST\REDO\REDO14.LOG',
'G:\ORACLE\KGTEST\REDO\REDO04.LOG'
) SIZE 100M,
GROUP 5 'H:\ORACLE\KGTEST\REDO\REDO05.LOG' SIZE 100M
DATAFILE
'D:\ORACLE\ORADATA\KGTEST\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\KGTEST\RBS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\USERS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\ROBA.ORA',
'D:\ORACLE\ORADATA\KGTEST\TOOLS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\INDX01.DBF',
'D:\ORACLE\ORADATA\KGTEST\DR01.DBF',
'D:\ORACLE\ORADATA\KGTEST\SYSTEM02.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX.ORA',
'E:\ORACLE\ORADATA\KGTEST\PRIHODI.ORA',
'E:\ORACLE\ORADATA\KGTEST\PRIHODI_INDX1.ORA',
'E:\ORACLE\ORADATA\KGTEST\RMAN_20M.ORA',
'E:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_01.ORA',
'G:\ORACLE\KGTEST\DATA\STATISTIKA_INDX_RG_02.ORA',
'G:\ORACLE\KGTEST\DATA\STATISTIKA_INDX_RG_03.ORA',
'G:\ORACLE\KGTEST\DATA\STATISTIKA_INDX_RG_04.ORA',
'E:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_05.ORA',
'E:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_06.ORA',
'E:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_07.ORA',
'C:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_08.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_01.ORA',
'C:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_02.ORA',
'C:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_03.ORA',
'E:\ORACLE\ORADATA\KGTEST\PERFSTAT.ORA',
'E:\ORACLE\ORADATA\KGTEST\IZVOD_IDX.ORA',
'D:\ORACLE\ORADATA\KGTEST\TOAD.ORA',
'E:\ORACLE\ORADATA\KGTEST\ROBA_2.ORA',
'D:\ORACLE\ORADATA\KGTEST\TS_FEB_01.ORA',
'D:\ORACLE\ORADATA\KGTEST\TS_FEB_02.ORA',
'C:\ORACLE\ORADATA\KGTEST\WAIT_MONITOR.ORA',
'G:\ORACLE\KGTEST\DATA\USERS02.ORA'
CHARACTER SET EE8MSWIN1250
;
# Configure snapshot controlfile filename
EXECUTE SYS.DBMS_BACKUP_RESTORE.CFILESETSNAPSHOTNAME('D:\ORACLE\ORA81\DATABASE\SNCFKGTEST.ORA');
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
# Database can now be opened normally.
ALTER DATABASE OPEN;
# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP_1 ADD TEMPFILE 'E:\ORACLE\ORADATA\KGTEST\TEMP_11.ORA' REUSE;
ALTER TABLESPACE PRIHOD_TEMP ADD TEMPFILE 'E:\ORACLE\ORADATA\KGTEST\PRIHOD_TEMP_1.ORA' REUSE;
# End of tempfile additions.
#
[2] Zatim ga edituješ tako da izbaciš nepotrebne linije i izbaciš nepotrebne tejblspejsove:
Code:
CREATE CONTROLFILE SET DATABASE "KGTEST_CLONE" RESETLOGS ARCHIVELOG <-- promenjena linija
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 339
LOGFILE
GROUP 1 'C:\ORACLE\ORADATA\KGTEST\REDO01.LOG' SIZE 100M,
GROUP 2 'D:\ORACLE\ORADATA\KGTEST\REDO02.LOG' SIZE 100M, <------- ovde zameniš putanju fajlova, tako da budu kreirani na lokaciji koja postoji na
GROUP 3 'E:\ORACLE\ORADATA\KGTEST\REDO03.LOG' SIZE 100M, toj mašini. Ja sam i izbacio dve grupe (šta će ti na kloniranoj bazi)
DATAFILE
'D:\ORACLE\ORADATA\KGTEST\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\KGTEST\RBS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\USERS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\ROBA.ORA',
'D:\ORACLE\ORADATA\KGTEST\TOOLS01.DBF',
'D:\ORACLE\ORADATA\KGTEST\INDX01.DBF',
'D:\ORACLE\ORADATA\KGTEST\DR01.DBF',
'D:\ORACLE\ORADATA\KGTEST\SYSTEM02.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX.ORA',
'E:\ORACLE\ORADATA\KGTEST\PRIHODI.ORA', u ovom delu izbaciš sve tejblspejsove(tablespaces)koje ne želiš
'E:\ORACLE\ORADATA\KGTEST\PRIHODI_INDX1.ORA', <-------- odnosno pripadajuće dejtafajlove (datafiles). Takođe promeniš
'E:\ORACLE\ORADATA\KGTEST\RMAN_20M.ORA', putanje, fajlovima tako da odgovaraju lokaciji gde će se nalaziti.
'E:\ORACLE\ORADATA\KGTEST\STATISTIKA_INDX_RG_01.ORA',
'D:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_01.ORA',
'C:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_02.ORA',
'C:\ORACLE\ORADATA\KGTEST\STATISTIKA_RAPID_GROW_03.ORA',
'E:\ORACLE\ORADATA\KGTEST\PERFSTAT.ORA',
'E:\ORACLE\ORADATA\KGTEST\IZVOD_IDX.ORA',
'D:\ORACLE\ORADATA\KGTEST\TOAD.ORA',
'E:\ORACLE\ORADATA\KGTEST\ROBA_2.ORA',
'D:\ORACLE\ORADATA\KGTEST\TS_FEB_01.ORA',
'D:\ORACLE\ORADATA\KGTEST\TS_FEB_02.ORA',
'C:\ORACLE\ORADATA\KGTEST\WAIT_MONITOR.ORA',
'G:\ORACLE\KGTEST\DATA\USERS02.ORA'
CHARACTER SET EE8MSWIN1250
;
# i sve ovo ispod ukloniš jer ti ne treba za sad
Ovaj fajl sačuvaš kao neki
kontrolClone.sql
[3] Kreiraš SID na mašini gde hoćeš da kloniraš bazu, za ovo koristiš ORADIM alat.
[4] Iskopiraš password fajl na odgovarajuću lokaciju.
[5] Iskopiraš datafajlove na loakciju koju želiš i koju si naveo u onom editovanom kontrolfajlu
[6] Konektuješ se
as sysdba i uradiš mount baze sa parametarskim fajlom kojeg si takođe pripremio da odgovara novoj bazi (ovde možeš da edituješ parametre vezane za memoriju jer ti realno ne treba isto memorije kao na produkcionoj bazi). Kad uraiš mount baze oracle će da ti se malo žali i javiće ti grešku
ORA-00250 error in identifying controlfile, check alert log for more info
Zato ti pokreneš lepo onaj
kontrolClone.sql i on ti kreira kontrolfajl koji ti fali na lokacijama navedenim u parametarskom fajlu.
[7] nakon toga uradiš
Code:
sql> recover database until time '16-apr-2007:12:00:01' using backup controlfile;
[8] primeniš sve archivelog fajlove koje ti traži, i podigneš bazu sa RESETLOG opcijom.
Code:
sql> alter database open resetlogs;
nadam se da nisam preterao ;-)