oracle clone 복구 (rman 없이)
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;