RDB/Oracle

oracle clone 복구 (rman 없이)

세모데 2018. 1. 9. 11:05


1. 백업


SQL> ALTER TABLESPACE <tablespace_name> BEGIN BACKUP;



SQL> ALTER TABLESPACE <tablespace_name> END BACKUP;

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;



2. 백업 파일 copy

 control files, datafiles, all archivelogs to target destination



3. 새로운 오라클 환경 셋팅


$ set ORACLE_SID = <target_oracle_sid>

$ set ORACLE_HOME = <target_oracle_home>


$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=

$ sqlplus '/as sysdba'



4. 같은 이름으로 DB 구성


SQL> STARTUP MOUNT

SQL> SELECT file#, name FROM v$datafile;


SQL> ALTER DATABASE RENAME FILE '/old_full_directory_path/datafile_name.dbf' TO '/new_full_directory_path/datafile_name.dbf';


SQL> SELECT member FROM v$logfile;

SQL> ALTER DATABASE RENAME FILE '/old_full_directory_path/logfile_name.log' TO '/new_full_directory_path/logfile_name.log';


-- 복구

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;

SQL> ALTER DATABASE CANCEL;

SQL> ALTER DATABASE OPEN RESETLOGS;




5. 새로운 이름으로 생성

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE SET DATABASE "TST" RESETLOGS NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100 ~~~~


$ sqlplus '/as sysdba'

SQL> @create_db.sql


-- nid 사용


sqlplus '/as sysdba'

SQL> shutdown immediate

SQL> startup mount


$ nid TARGET=/




$ sqlplus '/as sysdba'

SQL> startup mount


SQL> alter database open resetlogs;