반응형
■ [2025-10-19] 멀티태넌트 환경에서 RAC to Single 로 동일 서버에서 크론 디비 생성하여 아카이브를 적용하는 실습 (19c에서 테스트)

 

[제목]

 

[2025-10-19] 멀티태넌트 환경에서 RAC to Single 로 동일 서버에서 크론 디비 생성하여 아카이브를 적용하는 실습 (19c에서 테스트)

 

[테스트 개요]

 

Oracle RAC 환경에서 멀티태넌트 DB (CDB/PDB) 구조를 동일 서버 내 Single Instance (비RAC) 로 복제(clone)하여,
백업본과 아카이브 로그를 이용해 복구하는 절차를 검증하는 실습이다.

테스트는 Oracle 19c (19.28 RU, Linux 8.10) 환경에서 수행되었으며,
소스 RAC DB(ORA19RS)의 백업을 기반으로 Single 타켓 DB(CLONEDB)를 구성한다.


[테스트 환경]

 

<원천(소스) DB의 정보>

 

OS : Oracle Linux Server 8.10 (grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d '"')
OS Kernal : 5.15.0-206.153.7.1.el8uek.x86_64 (uname -r)
Oracle Version : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production (echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from v\$version where banner like 'Oracle Database%';" | sqlplus -s / as sysdba)
Oracle Configuration
     DB명 : ORA19RS (echo -e 'set pages 0 feedback off heading off verify off\nselect '\''DB명 : '\''||name from v$database;' | sqlplus -s / as sysdba) '
 PDB명 : ORA19RSP1 (echo -e "set pages 0 feedback off heading off verify off\nselect 'PDB명 : '||name from v\$pdbs where name <> 'PDB\$SEED';" | sqlplus -s / as sysdba)
  RAC Node 1
   Hostname : ol8ora19rs1 (hostname)
   Public IP : 192.168.240.41 (getent ahostsv4 `hostname` | awk '{print $1; exit}')
   Instance Name : ORA19RS1 (echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba) '
  RAC Node 2
   Hostname : ol8ora19rs2
   Public IP : 192.168.240.42 (getent ahostsv4 `hostname` | awk '{print $1; exit}')
   Instance Name : ORA19RS2 (echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba) '
Patch Info
 Grid (opatch lspatches) (grid os user)
  38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
  37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
  37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
  37960098;Database Release Update : 19.28.0.0.250715 (37960098)
  36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)

 Oracle (opatch lspatches) (oracle os user)
  37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
  37960098;Database Release Update : 19.28.0.0.250715 (37960098)

 

<목표(타켓) DB의 정보>

 DB명 : CLONEDB
 인스턴스명 : CLONEDB

 

[내용]

 

1. 소스 DB 백업 받기

 

1-1. 테이블 스페이스 단위 백업본으로 백업 받기

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Oct 16 23:50:16 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0


--테이스 스페이스 단위 백업 스크립트 생성
[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT

 

[ol8ora19rs1]<SYS@ORA19RS1>$

col backup_script for a150
set linesize 200

SELECT 'RUN {' || CHR(10) ||
'CONFIGURE CONTROLFILE AUTOBACKUP OFF;' || CHR(10) ||
'sql ''alter system archive log current'';' || CHR(10) ||
'sql ''alter system checkpoint'';' || CHR(10) ||
'crosscheck backupset;' || CHR(10) ||
'crosscheck backup;' || CHR(10) ||
'crosscheck copy;' || CHR(10) ||
'crosscheck archivelog all;' AS BACKUP_SCRIPT FROM DUAL
UNION ALL
SELECT 'BACKUP AS COMPRESSED BACKUPSET TABLESPACE '
     || CASE WHEN CON_NM = 'CDB$ROOT' THEN TS_NM
             WHEN CON_NM = 'PDB$SEED' THEN '"'||CON_NM||'"'||':'||TS_NM
       ELSE CON_NM||':'||TS_NM
     END
     || ' FORMAT '
  || ''''|| '/home/oracle/ORA19RS_BACKUP/'
  || CASE WHEN CON_NM = 'CDB$ROOT' THEN 'CDB' || '_'
             WHEN CON_NM = 'PDB$SEED' THEN 'PDBSEED' ||'_'
       ELSE CON_NM || '_'
     END
  ||TS_NM||'_%U.bkp' || '''' || ';' AS BACKUP_SCRIPT
  FROM
     (
  SELECT (SELECT L.NAME FROM V$CONTAINERS L WHERE L.CON_ID = A.CON_ID) AS CON_NM
    , A.TABLESPACE_NAME AS TS_NM
    FROM CDB_TABLESPACES A
   WHERE A.CONTENTS IN ('PERMANENT', 'UNDO')
  UNION ALL
   SELECT 'PDB$SEED' AS CON_NM, 'SYSTEM'   AS TS_NM FROM DUAL UNION ALL
   SELECT 'PDB$SEED' AS CON_NM, 'SYSAUX'   AS TS_NM FROM DUAL UNION ALL
   SELECT 'PDB$SEED' AS CON_NM, 'UNDOTBS1' AS TS_NM FROM DUAL
ORDER BY CON_NM, TS_NM
     ) A
UNION ALL
SELECT 'backup current controlfile format ''/home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_%U_%T'';' || CHR(10) FROM DUAL
union all
SELECT 'delete noprompt obsolete;' || CHR(10) ||
'delete noprompt expired backup;' AS BACKUP_SCRIPT
FROM DUAL
union all
select 'CONFIGURE CONTROLFILE AUTOBACKUP ON;' || CHR(10)
|| '}'
from dual
;

--아래의 결과가 출력됨
BACKUP_SCRIPT
------------------------------------------------------------------------------------------------------------------------------------------------------
RUN {
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
sql 'alter system archive log current';
sql 'alter system checkpoint';
crosscheck backupset;
crosscheck backup;
crosscheck copy;
crosscheck archivelog all;

BACKUP AS COMPRESSED BACKUPSET TABLESPACE SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_UNDOTBS1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE UNDOTBS2 FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_UNDOTBS2_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE USERS FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_USERS_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:TUNER_DATA1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_TUNER_DATA1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:TUNER_IDX1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_TUNER_IDX1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_UNDOTBS1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:UNDO_2 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_UNDO_2_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:USERS FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_USERS_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_UNDOTBS1_%U.bkp';
backup current controlfile format '/home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_%U_%T';
delete noprompt obsolete;
delete noprompt expired backup;

CONFIGURE CONTROLFILE AUTOBACKUP ON;
}

--소스DB를 백업 받을 디렉토리 생성
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/ORA19RS_BACKUP/
mkdir: created directory '/home/oracle/ORA19RS_BACKUP/'

--RMAN 접속
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ alias rt
alias rt='rman target /'

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Thu Oct 16 23:53:57 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORA19RS (DBID=1936516987)

RMAN>

RUN {
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
sql 'alter system archive log current';
sql 'alter system checkpoint';
crosscheck backupset;
crosscheck backup;
crosscheck copy;
crosscheck archivelog all;

BACKUP AS COMPRESSED BACKUPSET TABLESPACE SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_UNDOTBS1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE UNDOTBS2 FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_UNDOTBS2_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE USERS FORMAT '/home/oracle/ORA19RS_BACKUP/CDB_USERS_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:TUNER_DATA1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_TUNER_DATA1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:TUNER_IDX1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_TUNER_IDX1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_UNDOTBS1_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:UNDO_2 FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_UNDO_2_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE ORA19RSP1:USERS FORMAT '/home/oracle/ORA19RS_BACKUP/ORA19RSP1_USERS_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":SYSAUX FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_SYSAUX_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":SYSTEM FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_SYSTEM_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET TABLESPACE "PDB$SEED":UNDOTBS1 FORMAT '/home/oracle/ORA19RS_BACKUP/PDBSEED_UNDOTBS1_%U.bkp';
backup current controlfile format '/home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_%U_%T';
delete noprompt obsolete;
delete noprompt expired backup;

CONFIGURE CONTROLFILE AUTOBACKUP ON;
}

 

1-2. 아카이브 로그 백업 받기

 

run {
crosscheck archivelog all;
backup archivelog all format '/home/oracle/ORA19RS_BACKUP/ARCHIVE_%d_%T_%u_s%s_p%p';
}

 

1-3. 소스 DB에서 컨트롤 파일 스크립트 생성

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 17:45:16 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

 

[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT


[ol8ora19rs1]<SYS@ORA19RS1>$ alter database backup controlfile to trace as '/home/oracle/ORA19RS_BACKUP/ORA19RS_controlfile_script_backup.sql';

Database altered.

Elapsed: 00:00:00.03

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/ORA19RS_BACKUP/ORA19RS_controlfile_script_backup.sql
-rw-r--r--. 1 oracle asmadmin 15643 Oct 19 10:49 /home/oracle/ORA19RS_BACKUP/ORA19RS_controlfile_script_backup.sql

 

1-4. 백업 파일 확인

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/ORA19RS_BACKUP
total 1726876
-rw-r-----. 1 oracle asmadmin     15872 Oct 19 10:46 ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1
-rw-r-----. 1 oracle asmadmin 444588032 Oct 19 10:43 CDB_SYSAUX_8v46k2iq_287_1_1.bkp
-rw-r-----. 1 oracle asmadmin 469172224 Oct 19 10:44 CDB_SYSTEM_9046k2jk_288_1_1.bkp
-rw-r-----. 1 oracle asmadmin   1196032 Oct 19 10:44 CDB_SYSTEM_9146k2kd_289_1_1.bkp
-rw-r-----. 1 oracle asmadmin   2211840 Oct 19 10:44 CDB_UNDOTBS1_9246k2kf_290_1_1.bkp
-rw-r-----. 1 oracle asmadmin   2211840 Oct 19 10:44 CDB_UNDOTBS2_9346k2kg_291_1_1.bkp
-rw-r-----. 1 oracle asmadmin   1245184 Oct 19 10:44 CDB_USERS_9446k2kh_292_1_1.bkp
-rw-r--r--. 1 oracle asmadmin     15643 Oct 19 10:49 ORA19RS_controlfile_script_backup.sql
-rw-r-----. 1 oracle asmadmin  20021248 Oct 19 10:45 ORA19RS_CTL_9f46k2m9_303_1_1_20251019
-rw-r-----. 1 oracle asmadmin  75816960 Oct 19 10:44 ORA19RSP1_SYSAUX_9546k2ki_293_1_1.bkp
-rw-r-----. 1 oracle asmadmin 277159936 Oct 19 10:44 ORA19RSP1_SYSTEM_9646k2kp_294_1_1.bkp
-rw-r-----. 1 oracle asmadmin  30720000 Oct 19 10:44 ORA19RSP1_TUNER_DATA1_9746k2l8_295_1_1.bkp
-rw-r-----. 1 oracle asmadmin  14860288 Oct 19 10:45 ORA19RSP1_TUNER_IDX1_9846k2lb_296_1_1.bkp
-rw-r-----. 1 oracle asmadmin   1073152 Oct 19 10:45 ORA19RSP1_UNDO_2_9a46k2le_298_1_1.bkp
-rw-r-----. 1 oracle asmadmin   1171456 Oct 19 10:45 ORA19RSP1_UNDOTBS1_9946k2ld_297_1_1.bkp
-rw-r-----. 1 oracle asmadmin   1073152 Oct 19 10:45 ORA19RSP1_USERS_9b46k2lf_299_1_1.bkp
-rw-r-----. 1 oracle asmadmin  66289664 Oct 19 10:45 PDBSEED_SYSAUX_9c46k2lg_300_1_1.bkp
-rw-r-----. 1 oracle asmadmin 275431424 Oct 19 10:45 PDBSEED_SYSTEM_9d46k2lj_301_1_1.bkp
-rw-r-----. 1 oracle asmadmin  84041728 Oct 19 10:45 PDBSEED_UNDOTBS1_9e46k2m2_302_1_1.bkp

--> 데이터 파일, 컨트롤 파일, 아카이브 로그 파일, 컨트롤 파일 생성 스크립트가 모두 백업되었음

 

2. 소스 DB에서 pfile 생성 후 수정 (생성 및 수정하는 pfile은 타켓 DB가 사용할 것임!)

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cd /home/oracle/ORA19RS_BACKUP/
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 17 21:37:32 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT

--현재 소스 DB는 spfile을 사용중임, spfile로 부터 pfile을 생성
[ol8ora19rs1]<SYS@ORA19RS1>$ create pfile='/home/oracle/ORA19RS_BACKUP/initCLONEDB.ora' from spfile;

File created.

Elapsed: 00:00:00.03

[ol8ora19rs1]<SYS@ORA19RS1>$ quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora
-rw-r--r--. 1 oracle asmadmin 2466 Oct 19 10:50 /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora

 

--내용 확인
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cat /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora
ORA19RS1.__data_transfer_cache_size=0
ORA19RS2.__data_transfer_cache_size=0
ORA19RS1.__db_cache_size=3657433088
ORA19RS2.__db_cache_size=3808428032
ORA19RS1.__inmemory_ext_roarea=0
ORA19RS2.__inmemory_ext_roarea=0
ORA19RS1.__inmemory_ext_rwarea=0
ORA19RS2.__inmemory_ext_rwarea=0
ORA19RS1.__java_pool_size=0
ORA19RS2.__java_pool_size=0
ORA19RS1.__large_pool_size=33554432
ORA19RS2.__large_pool_size=33554432
ORA19RS1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORA19RS2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORA19RS1.__pga_aggregate_target=1677721600
ORA19RS2.__pga_aggregate_target=1677721600
ORA19RS1.__sga_target=5033164800
ORA19RS2.__sga_target=5033164800
ORA19RS1.__shared_io_pool_size=134217728
ORA19RS2.__shared_io_pool_size=134217728
ORA19RS1.__shared_pool_size=1191182336
ORA19RS2.__shared_pool_size=1040187392
ORA19RS1.__streams_pool_size=0
ORA19RS2.__streams_pool_size=0
ORA19RS1.__unified_pga_pool_size=0
ORA19RS2.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/ORA19RS/adump'
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.cluster_database=true
*.compatible='19.0.0'
*.control_files='+FRA1/ORA19RS/CONTROLFILE/current.256.1214089019','+DATA1/ORA19RS/CONTROLFILE/current.261.1214089019'
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+FRA1'
*.db_create_online_log_dest_2='+DATA1'
*.db_name='ORA19RS'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=32767m
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA19RSXDB)'
*.enable_pluggable_database=true
*.filesystemio_options='SETALL'
*.heat_map='OFF'
family:dw_helper.instance_mode='read-only'
ORA19RS1.instance_number=1
ORA19RS2.instance_number=2
*.local_listener='-oraagent-dummy-'
*.log_archive_dest_1='LOCATION=+FRA1'
*.log_archive_format='%t_%s_%r.ARC'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.pga_aggregate_target=1599m
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.sga_target=4794m
ORA19RS2.thread=2
ORA19RS1.thread=1
*.undo_retention=3600
ORA19RS2.undo_tablespace='UNDOTBS2'
ORA19RS1.undo_tablespace='UNDOTBS1'
*.uniform_log_timestamp_format=FALSE
*.use_large_pages='ONLY'

 

--grid os user로 접속 후 리스너 정보를 조회
[+ASM1:grid@ol8ora19rs1][/home/grid]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-OCT-2025 10:57:40

Copyright (c) 1991, 2025, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                19-OCT-2025 10:26:06
Uptime                    0 days 0 hr. 31 min. 34 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19c/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/ol8ora19rs1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.41)(PORT=1521)))
--> 타켓 DB의 local_listener 파라미터를 이걸로 설정할 것임
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.44)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_CRS" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA1" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA1" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "40bb61da40640933e0632af0a8c05571" has 1 instance(s).
  Instance "ORA19RS1", status READY, has 1 handler(s) for this service...
Service "ORA19RS" has 1 instance(s).
  Instance "ORA19RS1", status READY, has 1 handler(s) for this service...
Service "ORA19RSXDB" has 1 instance(s).
  Instance "ORA19RS1", status READY, has 1 handler(s) for this service...
Service "ora19rsp1" has 1 instance(s).
  Instance "ORA19RS1", status READY, has 1 handler(s) for this service...
The command completed successfully

--생성한 pfile의 복제본 생성(백업받아 두는 것임)

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cp /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora.bak


--생성한 pfile을 수정함 (타켓 DB를 구동 시킬 수 있게 바꾸는 것임, 매우 중요한 부분)
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ vi /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ cat /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora
*.audit_file_dest='/u01/app/oracle/admin/CLONEDB/adump' # adump 경로 지정
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.compatible='19.0.0'
*.control_files='/home/oracle/CLONEDB/controlfile/ctl_file01.ctl','/home/oracle/CLONEDB/controlfile/ctl_file02.ctl' # 컨트롤 파일 경로
*.db_block_size=8192
*.db_create_file_dest='/home/oracle/CLONEDB' # datafile 생성 위치
*.db_create_online_log_dest_1='/home/oracle/CLONEDB/onlinelog_1' # 리두로그 파일 위치
*.db_create_online_log_dest_2='/home/oracle/CLONEDB/onlinelog_2' # 리두로그 파일 위치
*.db_name='ORA19RS' # DB_NAME은 동일하게 지정
*.db_unique_name='CLONEDB' # DB_UNQUE_NAME은 다르게 지정해야함 (crs와 충돌하기 때문에)
*.db_recovery_file_dest='/home/oracle/CLONEDB/fra' # FRA 경로 지정
*.db_recovery_file_dest_size=32767m
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=CLONEDBXDB)' # CLONEDBXDB 로 지정
*.enable_pluggable_database=true # 멀태태넌트 환경이므로 반드시 true여야함
*.filesystemio_options='SETALL'
*.heat_map='OFF'
family:dw_helper.instance_mode='read-only'
*.local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.41)(PORT=1521)))' # 리스너 주소 지정
*.log_archive_dest_1='LOCATION=/home/oracle/CLONEDB/arch' # 아카이브 로그 위치 지정
*.log_archive_format='%t_%s_%r.ARC'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.pga_aggregate_target=768m
# 메모리 설정
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.sga_target=1024m # 메모리 설정
*.undo_retention=3600
*.undo_tablespace='UNDOTBS1' # 언두 테이블 스페이스는 하나만
*.uniform_log_timestamp_format=FALSE
*.use_large_pages='true' # Large Pages는 true로 지정

 

3. 타켓 DB를 NOMOUNT 모드로 기동

 

--타켓 DB를 NOMOUNT 모드로 기동하기 위한 디렉토리 생성
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /u01/app/oracle/admin/CLONEDB/adump
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/CLONEDB/controlfile/
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/CLONEDB/onlinelog_1
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/CLONEDB/onlinelog_2
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/CLONEDB/arch
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mkdir -pv /home/oracle/CLONEDB/fra

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 13:11:57 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Connected to an idle instance.

 

[ol8ora19rs1]<SYS@CLONEDB>$ startup nomount pfile='/home/oracle/ORA19RS_BACKUP/initCLONEDB.ora'
ORACLE instance started.

Total System Global Area 1073738760 bytes
Fixed Size                  9188360 bytes
Variable Size             427819008 bytes
Database Buffers          629145600 bytes
Redo Buffers                7585792 bytes


4. 소스 DB에서 set new name 스크립트 생성 (타켓 DB의 Restore 작업을 위한)

 

[ol8ora19rs1]<SYS@ORA19RS1>$
col set_new_name_datafile for a100
select 'set newname for datafile '
       || file#
       || ' '
       || 'to '
       || ''''
       || '/home/oracle/CLONEDB/datafile/'
       || replace(con_name, '$', '_DOLLAR_')
       || '_'
       || ts_name
       || '_'
       || file#
       || '.dbf'
       || ''''
       || ';' as set_new_name_datafile
  from
     (
select a.file#
     , a.con_id
     , (select l.name from V$CONTAINERS l where l.con_id = a.con_id) as con_name
     , (select l.name from V$tablespace l where l.ts# = a.ts# and l.con_id = a.con_id) as ts_name
  from v$datafile a
     ) a
order by a.con_id, a.file#
;

SET_NEW_NAME_DATAFILE
----------------------------------------------------------------------------------------------------
set newname for datafile 1 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf';
set newname for datafile 3 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf';
set newname for datafile 4 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf';
set newname for datafile 7 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf';
set newname for datafile 9 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf';
set newname for datafile 5 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf';
set newname for datafile 6 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf';
set newname for datafile 8 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf';
set newname for datafile 10 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf';
set newname for datafile 11 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf';
set newname for datafile 12 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf';
set newname for datafile 13 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf';
set newname for datafile 14 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf';
set newname for datafile 15 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf';
set newname for datafile 16 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf';

--> 타켓 DB의 Restore 시 사용할 것임

 

5. 타켓 DB에서 컨트롤 파일 복구 (소스 DB에서 백업받은 컨트롤 파일 백업을 이용하여 복구)

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ ls -l /home/oracle/ORA19RS_BACKUP/*CTL*
-rw-r-----. 1 oracle asmadmin 20021248 Oct 19 10:45 /home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_9f46k2m9_303_1_1_20251019
--> 소스 DB의 컨트롤 파일 백업본 확인


[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias rt
alias rt='rman target /'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Sat Oct 18 13:27:49 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CLONEDB (not mounted)

 

RMAN> restore controlfile from '/home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_9f46k2m9_303_1_1_20251019';
restore controlfile from '/home/oracle/ORA19RS_BACKUP/ORA19RS_CTL_9f46k2m9_303_1_1_20251019';
Starting restore at 2025-10-19 13:41:05
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=277 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/home/oracle/CLONEDB/controlfile/ctl_file01.ctl
output file name=/home/oracle/CLONEDB/controlfile/ctl_file02.ctl
Finished restore at 2025-10-19 13:41:06

--타켓 DB를 MOUNT 모드로 변경

RMAN> alter database mount;
alter database mount;
released channel: ORA_DISK_1
Statement processed

 

6. 타켓 DB의 데이터 파일 Restore

 

--> set newname for datafile 지정으로 각각의 datafile에 대한 datafile 위치를 새로 지정으로
--> restore database로 백업본을 새롭게 지정한 datafile 위치에 restore 시킴
--> switch datafile all 명령으로 컨트롤 파일의 내용까지 변경 (새롭게 지정한 데이터파일을 컨트롤 파일이 바라보도록 함)

RMAN>

run
{
allocate channel ch1 device type disk ;
allocate channel ch2 device type disk ;

set newname for datafile 1 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf';
set newname for datafile 3 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf';
set newname for datafile 4 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf';
set newname for datafile 7 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf';
set newname for datafile 9 to '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf';
set newname for datafile 5 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf';
set newname for datafile 6 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf';
set newname for datafile 8 to '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf';
set newname for datafile 10 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf';
set newname for datafile 11 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf';
set newname for datafile 12 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf';
set newname for datafile 13 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf';
set newname for datafile 14 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf';
set newname for datafile 15 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf';
set newname for datafile 16 to '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf';

restore database;
switch datafile all;

release channel ch1;
release channel ch2;
}

 

--타켓 DB의 Datafile이 정상적으로 Restore 된것을 확인
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/CLONEDB/datafile/
total 12386488
-rw-r-----. 1 oracle asmadmin 3279953920 Oct 19 14:26 CDB_DOLLAR_ROOT_SYSAUX_3.dbf
-rw-r-----. 1 oracle asmadmin 1226842112 Oct 19 14:26 CDB_DOLLAR_ROOT_SYSTEM_1.dbf
-rw-r-----. 1 oracle asmadmin  854597632 Oct 19 14:26 CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf
-rw-r-----. 1 oracle asmadmin  104865792 Oct 19 14:26 CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf
-rw-r-----. 1 oracle asmadmin    5251072 Oct 19 14:26 CDB_DOLLAR_ROOT_USERS_7.dbf
-rw-r-----. 1 oracle asmadmin 2147491840 Oct 19 14:26 ORA19RSP1_SYSAUX_11.dbf
-rw-r-----. 1 oracle asmadmin  524296192 Oct 19 14:26 ORA19RSP1_SYSTEM_10.dbf
-rw-r-----. 1 oracle asmadmin 1610620928 Oct 19 14:26 ORA19RSP1_TUNER_DATA1_15.dbf
-rw-r-----. 1 oracle asmadmin 1073750016 Oct 19 14:26 ORA19RSP1_TUNER_IDX1_16.dbf
-rw-r-----. 1 oracle asmadmin  288366592 Oct 19 14:26 ORA19RSP1_UNDO_2_13.dbf
-rw-r-----. 1 oracle asmadmin  288366592 Oct 19 14:26 ORA19RSP1_UNDOTBS1_12.dbf
-rw-r-----. 1 oracle asmadmin    5251072 Oct 19 14:26 ORA19RSP1_USERS_14.dbf
-rw-r-----. 1 oracle asmadmin  471867392 Oct 19 14:26 PDB_DOLLAR_SEED_SYSAUX_6.dbf
-rw-r-----. 1 oracle asmadmin  513810432 Oct 19 14:26 PDB_DOLLAR_SEED_SYSTEM_5.dbf
-rw-r-----. 1 oracle asmadmin  288366592 Oct 19 14:26 PDB_DOLLAR_SEED_UNDOTBS1_8.dbf


7. 타켓 DB의 컨트롤 파일 재생성 작업

 

7-1. 타켓 DB의 pfile에서 db_name 파라미터의 값을 변경함

 

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ vi /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ cat /home/oracle/ORA19RS_BACKUP/initCLONEDB.ora | grep -i db_name
*.db_name='CLONEDB'

 

7-2. 타켓 DB를 shutdown한 후 다시 nomount모드로 기동

 

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
CLONEDB

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 17:50:15 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@CLONEDB>$ shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.

 

[ol8ora19rs1]<SYS@CLONEDB>$ startup nomount pfile='/home/oracle/ORA19RS_BACKUP/initCLONEDB.ora'
ORACLE instance started.

Total System Global Area 1073738760 bytes
Fixed Size                  9188360 bytes
Variable Size             427819008 bytes
Database Buffers          629145600 bytes
Redo Buffers                7585792 bytes


7-3. 타켓 DB의 컨트롤 파일을 재생성 (db_name을 기존 ORA19RS에서 CLONEDB로 바꾸는 것임)

 

--타켓 DB의 컨트롤 파일 백업
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mv /home/oracle/CLONEDB/controlfile/ctl_file01.ctl /home/oracle/CLONEDB/controlfile/ctl_file01.ctl.bak
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ mv /home/oracle/CLONEDB/controlfile/ctl_file02.ctl /home/oracle/CLONEDB/controlfile/ctl_file02.ctl.bak

 

--컨트롤 파일 재생성 시 사용할 데이터 파일 목록 출력
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -1 /home/oracle/CLONEDB/datafile/*.dbf | sed "s|^/|, '/|" | sed "s|$|'|"
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf'
--> 맨에 "/"로 시작하는 부분을 ", '/" 로 치환
--> 맨 뒤에 "'"를 하나 추가

 

--컨트롤 파일 재생성 스크립트 작성 (기존 소스DB에서 저장했었던 컨트롤 파일 생성 스크립트 참고해서 작성)
--SET DATABASE로 DB_NAME을 CLONEDB로 지정
--온라인 리두로그 위치 지정
--데이터 파일 위치 지정


CREATE CONTROLFILE SET DATABASE "CLONEDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/CLONEDB/onlinelog_1/group_1_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_1_2.LOG'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 2 (
    '/home/oracle/CLONEDB/onlinelog_1/group_2_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_2_2.LOG'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 3 (
    '/home/oracle/CLONEDB/onlinelog_1/group_3_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_3_2.LOG'
  ) SIZE 200M BLOCKSIZE 512
DATAFILE
  '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf'
CHARACTER SET AL32UTF8
;

 

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
CLONEDB

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 18:00:26 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

 

[ol8ora19rs1]<SYS@CLONEDB>$
CREATE CONTROLFILE SET DATABASE "CLONEDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/CLONEDB/onlinelog_1/group_1_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_1_2.LOG'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 2 (
    '/home/oracle/CLONEDB/onlinelog_1/group_2_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_2_2.LOG'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 3 (
    '/home/oracle/CLONEDB/onlinelog_1/group_3_1.LOG',
    '/home/oracle/CLONEDB/onlinelog_1/group_3_2.LOG'
  ) SIZE 200M BLOCKSIZE 512
DATAFILE
  '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf'
, '/home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf'
, '/home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf'
, '/home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf'
CHARACTER SET AL32UTF8
;
Control file created.

Elapsed: 00:00:00.11

[ol8ora19rs1]<SYS@CLONEDB>$ alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01100: database already mounted


Elapsed: 00:00:00.00

 

8. 소스 DB의 현재 상태 확인(SCN 확인)

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 21:40:31 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0


[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT

 

[ol8ora19rs1]<SYS@ORA19RS1>$

SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN DBID                FORMAT 999999999999 HEADING 'DBID'
COLUMN NAME                FORMAT A10           HEADING 'DB_NAME'
COLUMN OPEN_MODE           FORMAT A12           HEADING 'OPEN_MODE'
COLUMN DB_UNIQUE_NAME      FORMAT A15           HEADING 'DB_UNIQUE_NAME'
COLUMN RESETLOGS_CHANGE#   FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN RESETLOGS_TIME      FORMAT A19           HEADING 'RESETLOGS_TIME'
COLUMN CHECKPOINT_CHANGE#  FORMAT 999999999999 HEADING 'CHECKPOINT|CHANGE#'
COLUMN ARCHIVE_CHANGE#     FORMAT 999999999999 HEADING 'ARCHIVE|CHANGE#'
COLUMN CONTROLFILE_CHANGE# FORMAT 999999999999 HEADING 'CONTROLFILE|CHANGE#'
COLUMN CURRENT_SCN         FORMAT 999999999999 HEADING 'CURRENT|SCN'
COLUMN CDB                 FORMAT A3            HEADING 'CDB'

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
     DBID
    , NAME
    , OPEN_MODE
    , RESETLOGS_CHANGE#
    , RESETLOGS_TIME
    , CHECKPOINT_CHANGE#
    , ARCHIVE_CHANGE#
    , CONTROLFILE_CHANGE#
    , CURRENT_SCN
    , DB_UNIQUE_NAME
    , CDB
FROM
    V$DATABASE;

                                           RESETLOGS                        CHECKPOINT         ARCHIVE   CONTROLFILE       CURRENT
         DBID DB_NAME    OPEN_MODE          CHANGE# RESETLOGS_TIME            CHANGE#         CHANGE#       CHANGE#           SCN DB_UNIQUE_NAME  CDB
------------- ---------- ------------ ------------- ------------------- ------------- ------------- ------------- ------------- --------------- ---
   1936516987 ORA19RS    READ WRITE         1920977 2025-10-09 22:57:02       5061675         5061672       5215221      
5215238 ORA19RS         YES

1 row selected.

Elapsed: 00:00:00.01
--> 현재 소스 DB의 Current SCN이 5215238 임

 

SET LINESIZE 250
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN FILE#              FORMAT 9999           HEADING 'FILE#'
COLUMN STATUS             FORMAT A10            HEADING 'STATUS'
COLUMN TABLESPACE_NAME    FORMAT A20            HEADING 'TABLESPACE_NAME'
COLUMN RESETLOGS_CHANGE#  FORMAT 999999999999   HEADING 'RESETLOGS|CHANGE#'
COLUMN NAME               FORMAT A90            HEADING 'DATAFILE_NAME'
COLUMN CHECKPOINT_CHANGE# FORMAT 999999999999   HEADING 'CHECKPOINT|CHANGE#'
COLUMN ERROR              FORMAT A12            HEADING 'ERROR'
COLUMN CON_NAME           FORMAT A12            HEADING 'CON_NAME'

SELECT
     a.FILE#
    , a.STATUS
    , a.TABLESPACE_NAME
    , a.RESETLOGS_CHANGE#
    , a.NAME
    , a.CHECKPOINT_CHANGE#
    , a.ERROR
    , (SELECT l.name
         FROM v$containers l
        WHERE l.con_id = a.con_id) AS con_name
FROM
    v$datafile_header a
ORDER BY
    a.FILE#;

                                          RESETLOGS                                                                                               CHECKPOINT
FILE# STATUS     TABLESPACE_NAME            CHANGE# DATAFILE_NAME                                                                                    CHANGE# ERROR        CON_NAME
----- ---------- -------------------- ------------- ------------------------------------------------------------------------------------------ ------------- ------------ ------------
    1 ONLINE     SYSTEM                     1920977 +DATA1/ORA19RS/DATAFILE/system.257.1214088939                                                   
5061672
(NULL)       CDB$ROOT
    3 ONLINE     SYSAUX                     1920977 +DATA1/ORA19RS/DATAFILE/sysaux.258.1214088965                                                   
5061672
(NULL)       CDB$ROOT
    4 ONLINE     UNDOTBS1                   1920977 +DATA1/ORA19RS/DATAFILE/undotbs1.259.1214088979                                                  5061672 (NULL)       CDB$ROOT
    5 ONLINE     SYSTEM                     1920977 +DATA1/ORA19RS/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.266.1214089353                   2463120 (NULL)       PDB$SEED
    6 ONLINE     SYSAUX                     1920977 +DATA1/ORA19RS/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.267.1214089353                   2463120 (NULL)       PDB$SEED
    7 ONLINE     USERS                      1920977 +DATA1/ORA19RS/DATAFILE/users.260.1214088981                                                     5061672 (NULL)       CDB$ROOT
    8 ONLINE     UNDOTBS1                   1920977 +DATA1/ORA19RS/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.268.1214089353                 2463120 (NULL)       PDB$SEED
    9 ONLINE     UNDOTBS2                   1920977 +DATA1/ORA19RS/DATAFILE/undotbs2.270.1214089557                                                  5061672 (NULL)       CDB$ROOT
   10 ONLINE     SYSTEM                     1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/system.277.1214089911                   5061672 (NULL)       ORA19RSP1
   11 ONLINE     SYSAUX                     1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/sysaux.276.1214089911                   5061672 (NULL)       ORA19RSP1
   12 ONLINE     UNDOTBS1                   1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/undotbs1.275.1214089911                 5061672 (NULL)       ORA19RSP1
   13 ONLINE     UNDO_2                     1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/undo_2.279.1214089919                   5061672 (NULL)       ORA19RSP1
   14 ONLINE     USERS                      1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/users.280.1214089923                    5061672 (NULL)       ORA19RSP1
   15 ONLINE     TUNER_DATA1                1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/tuner_data1.282.1214210173              5061672 (NULL)       ORA19RSP1
   16 ONLINE     TUNER_IDX1                 1920977 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/DATAFILE/tuner_idx1.283.1214210175               5061672 (NULL)       ORA19RSP1

15 rows selected.

Elapsed: 00:00:00.01

 

9. 타켓 DB의 현재 상태 확인(SCN 확인)

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 21:43:07 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0
[ol8ora19rs1]<
SYS@CLONEDB>$ show con_name

CON_NAME
------------------------------
CDB$ROOT


[ol8ora19rs1]<SYS@CLONEDB>$
SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN DBID                FORMAT 999999999999 HEADING 'DBID'
COLUMN NAME                FORMAT A10           HEADING 'DB_NAME'
COLUMN OPEN_MODE           FORMAT A12           HEADING 'OPEN_MODE'
COLUMN DB_UNIQUE_NAME      FORMAT A15           HEADING 'DB_UNIQUE_NAME'
COLUMN RESETLOGS_CHANGE#   FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN RESETLOGS_TIME      FORMAT A19           HEADING 'RESETLOGS_TIME'
COLUMN CHECKPOINT_CHANGE#  FORMAT 999999999999 HEADING 'CHECKPOINT|CHANGE#'
COLUMN ARCHIVE_CHANGE#     FORMAT 999999999999 HEADING 'ARCHIVE|CHANGE#'
COLUMN CONTROLFILE_CHANGE# FORMAT 999999999999 HEADING 'CONTROLFILE|CHANGE#'
COLUMN CURRENT_SCN         FORMAT 999999999999 HEADING 'CURRENT|SCN'
COLUMN CDB                 FORMAT A3            HEADING 'CDB'

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
     DBID
    , NAME
    , OPEN_MODE
    , RESETLOGS_CHANGE#
    , RESETLOGS_TIME
    , CHECKPOINT_CHANGE#
    , ARCHIVE_CHANGE#
    , CONTROLFILE_CHANGE#
    , CURRENT_SCN
    , DB_UNIQUE_NAME
    , CDB
FROM
    V$DATABASE;

                                          RESETLOGS                        CHECKPOINT       ARCHIVE   CONTROLFILE       CURRENT
         DBID DB_NAME    OPEN_MODE          CHANGE# RESETLOGS_TIME            CHANGE#       CHANGE#       CHANGE#           SCN DB_UNIQUE_NAME  CDB
------------- ---------- ------------ ------------- ------------------- ------------- ------------- ------------- ------------- --------------- ---
   1936516987 CLONEDB    MOUNTED            1920977 2025-10-09 22:57:02             0             0             0             0 CLONEDB         YES
--> mount 상태이므로 scn 작업을 안하고 있음


SET LINESIZE 250
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN FILE#              FORMAT 9999           HEADING 'FILE#'
COLUMN STATUS             FORMAT A10            HEADING 'STATUS'
COLUMN TABLESPACE_NAME    FORMAT A20            HEADING 'TABLESPACE_NAME'
COLUMN RESETLOGS_CHANGE#  FORMAT 999999999999   HEADING 'RESETLOGS|CHANGE#'
COLUMN NAME               FORMAT A90            HEADING 'DATAFILE_NAME'
COLUMN CHECKPOINT_CHANGE# FORMAT 999999999999   HEADING 'CHECKPOINT|CHANGE#'
COLUMN ERROR              FORMAT A12            HEADING 'ERROR'
COLUMN CON_NAME           FORMAT A20            HEADING 'CON_NAME'

SELECT
     a.FILE#
    , a.STATUS
    , a.TABLESPACE_NAME
    , a.RESETLOGS_CHANGE#
    , a.NAME
    , a.CHECKPOINT_CHANGE#
    , a.ERROR
    , (SELECT l.name
         FROM v$containers l
        WHERE l.con_id = a.con_id) AS con_name
FROM
    v$datafile_header a
ORDER BY
    a.FILE#;

                                          RESETLOGS                                                                                               CHECKPOINT
FILE# STATUS     TABLESPACE_NAME            CHANGE# DATAFILE_NAME                                                                                    CHANGE# ERROR        CON_NAME
----- ---------- -------------------- ------------- ------------------------------------------------------------------------------------------ ------------- ------------ --------------------
    1 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf                                       5061316 (NULL)       CDB$ROOT
    3 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf                                       5061290 (NULL)       CDB$ROOT
    4 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf                                     5061359 (NULL)       CDB$ROOT
    5 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf                                       2463120 (NULL)       PDB$SEED
    6 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf                                       2463120 (NULL)       PDB$SEED
    7 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf                                        5061384 (NULL)       CDB$ROOT
    8 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf                                     2463120 (NULL)       PDB$SEED
    9 ONLINE     UNDOTBS2                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf                                     5061371 (NULL)       CDB$ROOT
   10 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf                                            5061417 (NULL)       _###_UNKNOWN_PDB_#_3
   11 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf                                            5061398 (NULL)       _###_UNKNOWN_PDB_#_3
   12 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf                                          5061472 (NULL)       _###_UNKNOWN_PDB_#_3
   13 ONLINE     UNDO_2                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf                                            5061486 (NULL)       _###_UNKNOWN_PDB_#_3
   14 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf                                             5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   15 ONLINE     TUNER_DATA1                1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf                                       5061441 (NULL)       _###_UNKNOWN_PDB_#_3
   16 ONLINE     TUNER_IDX1                 1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf                                        5061457 (NULL)       _###_UNKNOWN_PDB_#_3
--> 소스의 Current SCN이 5215238 인 상황에서 타켓 DB는 당연히 모든 데이터 파일이 소스 DB의 Current SCN보다 낮음

 

SET LINESIZE 200
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN MIN_CHECKPOINT_CHANGE# FORMAT 999999999999 HEADING 'MIN|CHECKPOINT_CHANGE#'
COLUMN MAX_CHECKPOINT_CHANGE# FORMAT 999999999999 HEADING 'MAX|CHECKPOINT_CHANGE#'

SELECT
     MIN(a.CHECKPOINT_CHANGE#) AS MIN_CHECKPOINT_CHANGE#
    , MAX(a.CHECKPOINT_CHANGE#) AS MAX_CHECKPOINT_CHANGE#
FROM
    (
        SELECT
             a.FILE#
            , a.STATUS
            , a.TABLESPACE_NAME
            , a.RESETLOGS_CHANGE#
            , a.NAME
            , a.CHECKPOINT_CHANGE#
            , a.ERROR
            , (SELECT l.name
                 FROM v$containers l
                WHERE l.con_id = a.con_id) AS CON_NAME
        FROM
            v$datafile_header a
        ORDER BY
            a.FILE#
    ) a
WHERE
    CON_NAME <> 'PDB$SEED';

               MIN                MAX
CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
------------------ ------------------
           5061290           
5061501

1 row selected.

Elapsed: 00:00:00.02
--> 현재 타켓 DB의 각 Datafile의 SCN의 MAX값은 5061501 임
--> 소스 DB의 아카이브 로그를 이용하여 타켓 DB의 SCN을 5061501 까지 Recover 할 것임

 

10. 소스 DB에서 타켓 DB를 SCN 5061501 까지 복구 시키는데 필요한 아카이브 로그를 조회

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 15:06:42 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT

 

[ol8ora19rs1]<SYS@ORA19RS1>$
SET LINESIZE 220
SET PAGESIZE 200
SET NUMWIDTH 20
COLUMN THREAD#         FORMAT 999      HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 999999   HEADING 'SEQ'
COLUMN RESETLOGS_CHANGE# FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN FIRST_CHANGE#   FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN NEXT_CHANGE#    FORMAT 999999999999 HEADING 'NEXT|CHANGE#'
COLUMN ARCHIVED        FORMAT A8       HEADING 'ARCHIVED'
COLUMN DELETED         FORMAT A8       HEADING 'DELETED'
COLUMN NAME            FORMAT A100     HEADING 'ARCHIVELOG NAME'

SELECT
       A.NAME
     , A.THREAD#
     , A.SEQUENCE#
     , A.RESETLOGS_CHANGE#
     , A.FIRST_CHANGE#
     , A.NEXT_CHANGE#
     , A.ARCHIVED
     , A.DELETED
  FROM V$ARCHIVED_LOG A
 WHERE 1=1
   AND A.FIRST_CHANGE# <= 5061501   --타켓 DB가 가야할 지점은 5061501이므로 FIRST_CHANGE# 이 5061501 보다 작거나 같은 것은 복구 대상임

   AND A.NEXT_CHANGE#  >= 5061292   --타켓 DB은 5061291 까지 적용된 상태이므로 A.NEXT_CHANGE# 이 5061291+1=5061292 보다 같거나 큰 것은 복구대상임

 ORDER BY A.THREAD#, A.SEQUENCE#
;

--타켓 DB를 5061501 (MAX) 까지 복구 시킬려면 5061290 (MIN) 까지는 완전히 적용된 상태이므로
--SCN 5061290~5061501 MIN~MAX 구간이 위의 출력값에 나온 아카이브에 모두 출력되어야함
                                                                                                                      RESETLOGS         FIRST          NEXT
ARCHIVELOG NAME                                                                                       THR     SEQ       CHANGE#       CHANGE#       CHANGE# ARCHIVED DELETED
---------------------------------------------------------------------------------------------------- ---- ------- ------------- ------------- ------------- -------- --------
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_64.271.1214909161                                      1      64       1920977       5061203       5061675 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_49.272.1214909161                                      2      49       1920977       5061207       5061672 YES      NO

2 rows selected.

Elapsed: 00:00:00.01
--> 위에서 나온 출력값에서 MIN값은 5061203 이고 MAX값은 5061675 임
--> 이 구간은 타켓 DB의 복구 조건인 5061290~5061501 구간을 완전히 만족함
--> 그러므로 위 2개의 파일만 Recover시키면 타켓 DB를 5061501 까지 복구해서 Resetlogs OPEN 시킬 수 있는 상황인 것임


[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias rt
alias rt='rman target /'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Sun Oct 19 15:35:16 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORA19RS (DBID=1936516987)

RMAN> list backup;
...
BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
301     15.00K     DISK        00:00:00     2025-10-19 10:46:01
        BP Key: 301   Status: AVAILABLE  Compressed: NO  Tag: TAG20251019T104601
        Piece Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1

  List of Archived Logs in backup set 301
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    64      5061203    2025-10-19 10:43:35 5061675    2025-10-19 10:46:01
  2    49      5061207    2025-10-19 10:43:37 5061672    2025-10-19 10:46:01
--> thread 1의 seqeunce 64와
--> thread 2의 sequence 49는
--> /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1 파일로 백업되어 있음


11. 타켓 디비에서 아카이브 파일 적용

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias rt
alias rt='rman target /'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Sat Oct 18 22:25:56 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CLONEDB (DBID=1936516987, not open)

RMAN> catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1';
catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1';
using target database control file instead of recovery catalog
searching for all files that match the pattern /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1

List of Files Unknown to the Database
=====================================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1


RMAN> list backup;
list backup;

List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
1       15.00K     DISK        00:00:00     2025-10-19 10:46:01
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20251019T104601
        Piece Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1

  List of Archived Logs in backup set 1
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    64      5061203    2025-10-19 10:43:35 5061675    2025-10-19 10:46:01
  2    49      5061207    2025-10-19 10:43:37 5061672    2025-10-19 10:46:01

--> 위의 아카이브 로그를 가지고 5061675-1=5061674 까지 복구가 가능함

 

--> 반드시 해줄 필요는 없음 recover database하면 자동으로 백업본에서 읽어서 recover 시키게됨 (연습용)

RMAN> RESTORE ARCHIVELOG SEQUENCE 64 THREAD 1;
RESTORE ARCHIVELOG SEQUENCE 64 THREAD 1;
Starting restore at 2025-10-19 15:40:36
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1639 device type=DISK

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=64
channel ORA_DISK_1: reading from backup piece /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1
channel ORA_DISK_1: piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1 tag=TAG20251019T104601
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2025-10-19 15:40:37

 

--> 반드시 해줄 필요는 없음 recover database하면 자동으로 백업본에서 읽어서 recover 시키게됨 (연습용)
RMAN> RESTORE ARCHIVELOG SEQUENCE 49 THREAD 2;
RESTORE ARCHIVELOG SEQUENCE 49 THREAD 2;
Starting restore at 2025-10-19 15:40:56
using channel ORA_DISK_1

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=49
channel ORA_DISK_1: reading from backup piece /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1
channel ORA_DISK_1: piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1 tag=TAG20251019T104601
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2025-10-19 15:40:57

 

RMAN> host 'ls -l /home/oracle/CLONEDB/arch';
host 'ls -l /home/oracle/CLONEDB/arch';
total 16
-rw-r-----. 1 oracle asmadmin 9728 Oct 19 15:40 1_64_1214089022.ARC
-rw-r-----. 1 oracle asmadmin 2560 Oct 19 15:40 2_49_1214089022.ARC
host command complete

 

--타켓 DB를 SCN 5061501 까지 Recover 시킴
RUN {
    SET UNTIL SCN 5061501;
    RECOVER DATABASE;
}

executing command: SET until clause

Starting recover at 2025-10-19 15:42:49
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 64 is already on disk as file /home/oracle/CLONEDB/arch/1_64_1214089022.ARC
archived log for thread 2 with sequence 49 is already on disk as file /home/oracle/CLONEDB/arch/2_49_1214089022.ARC
archived log file name=/home/oracle/CLONEDB/arch/1_64_1214089022.ARC thread=1 sequence=64
archived log file name=/home/oracle/CLONEDB/arch/2_49_1214089022.ARC thread=2 sequence=49
media recovery complete, elapsed time: 00:00:00
Finished recover at 2025-10-19 15:42:50
--> 복구 시킨 아카이브는 5061674 까지 복구 가능
--> 그것보다 작은 5061501 까지 복구 시켰으니 제대로 완료됨

 

[ol8ora19rs1]<SYS@CLONEDB>$

SET LINESIZE 250
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN FILE#              FORMAT 9999           HEADING 'FILE#'
COLUMN STATUS             FORMAT A10            HEADING 'STATUS'
COLUMN TABLESPACE_NAME    FORMAT A20            HEADING 'TABLESPACE_NAME'
COLUMN RESETLOGS_CHANGE#  FORMAT 999999999999   HEADING 'RESETLOGS|CHANGE#'
COLUMN NAME               FORMAT A90            HEADING 'DATAFILE_NAME'
COLUMN CHECKPOINT_CHANGE# FORMAT 999999999999   HEADING 'CHECKPOINT|CHANGE#'
COLUMN ERROR              FORMAT A12            HEADING 'ERROR'
COLUMN CON_NAME           FORMAT A20            HEADING 'CON_NAME'

SELECT
     a.FILE#
    , a.STATUS
    , a.TABLESPACE_NAME
    , a.RESETLOGS_CHANGE#
    , a.NAME
    , a.CHECKPOINT_CHANGE#
    , a.ERROR
    , (SELECT l.name
         FROM v$containers l
        WHERE l.con_id = a.con_id) AS con_name
FROM
    v$datafile_header a
ORDER BY
    a.FILE#;

FILE# STATUS     TABLESPACE_NAME            CHANGE# DATAFILE_NAME                                                        CHANGE# ERROR        CON_NAME
----- ---------- -------------------- ------------- -------------------------------------------------------------- ------------- ------------ --------------------
    1 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf           5061501 (NULL)       CDB$ROOT
    3 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf           5061501 (NULL)       CDB$ROOT
    4 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf         5061501 (NULL)       CDB$ROOT
    5 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf           2463120 (NULL)       PDB$SEED
    6 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf           2463120 (NULL)       PDB$SEED
    7 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf            5061501 (NULL)       CDB$ROOT
    8 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf         2463120 (NULL)       PDB$SEED
    9 ONLINE     UNDOTBS2                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf         5061501 (NULL)       CDB$ROOT
   10 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf                5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   11 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf                5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   12 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf              5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   13 ONLINE     UNDO_2                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf                5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   14 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf                 5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   15 ONLINE     TUNER_DATA1                1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf           5061501 (NULL)       _###_UNKNOWN_PDB_#_3
   16 ONLINE     TUNER_IDX1                 1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf            5061501 (NULL)       _###_UNKNOWN_PDB_#_3
--> 5061501 까지 정상적으로 Recover 된 것을 알 수 있음

15 rows selected.

Elapsed: 00:00:00.01


SET LINESIZE 200
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN MIN_CHECKPOINT_CHANGE# FORMAT 999999999999 HEADING 'MIN|CHECKPOINT_CHANGE#'
COLUMN MAX_CHECKPOINT_CHANGE# FORMAT 999999999999 HEADING 'MAX|CHECKPOINT_CHANGE#'

SELECT
     MIN(a.CHECKPOINT_CHANGE#) AS MIN_CHECKPOINT_CHANGE#
    , MAX(a.CHECKPOINT_CHANGE#) AS MAX_CHECKPOINT_CHANGE#
FROM
    (
        SELECT
             a.FILE#
            , a.STATUS
            , a.TABLESPACE_NAME
            , a.RESETLOGS_CHANGE#
            , a.NAME
            , a.CHECKPOINT_CHANGE#
            , a.ERROR
            , (SELECT l.name
                 FROM v$containers l
                WHERE l.con_id = a.con_id) AS CON_NAME
        FROM
            v$datafile_header a
        ORDER BY
            a.FILE#
    ) a
WHERE
    CON_NAME <> 'PDB$SEED';

               MIN                MAX
CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
------------------ ------------------
           5061501            5061501

1 row selected.

Elapsed: 00:00:00.02

--> 이 상태에서 타켓 DB를 Resetlogs OPEN 시키면 됨
--> 하지만 이번 테스트는 이 상태에서
--> 소스 DB에서 신규 트랜잭션을 일으킨 후
--> 그것까지 타켓 DB에 적용한 후 Resetlogs OPEN 시킬 것임

 

12. 소스 DB 에서 트랜잭션 발생

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/oracle_scripts]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/oracle_scripts]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/oracle_scripts]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 22:54:31 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@ORA19RS1>$
SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN DBID                FORMAT 999999999999 HEADING 'DBID'
COLUMN NAME                FORMAT A10           HEADING 'DB_NAME'
COLUMN OPEN_MODE           FORMAT A12           HEADING 'OPEN_MODE'
COLUMN DB_UNIQUE_NAME      FORMAT A15           HEADING 'DB_UNIQUE_NAME'
COLUMN RESETLOGS_CHANGE#   FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN RESETLOGS_TIME      FORMAT A19           HEADING 'RESETLOGS_TIME'
COLUMN CHECKPOINT_CHANGE#  FORMAT 999999999999 HEADING 'CHECKPOINT|CHANGE#'
COLUMN ARCHIVE_CHANGE#     FORMAT 999999999999 HEADING 'ARCHIVE|CHANGE#'
COLUMN CONTROLFILE_CHANGE# FORMAT 999999999999 HEADING 'CONTROLFILE|CHANGE#'
COLUMN CURRENT_SCN         FORMAT 999999999999 HEADING 'CURRENT|SCN'
COLUMN CDB                 FORMAT A3            HEADING 'CDB'

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';


SELECT
     DBID
    , NAME
    , OPEN_MODE
    , RESETLOGS_CHANGE#
    , RESETLOGS_TIME
    , CHECKPOINT_CHANGE#
    , ARCHIVE_CHANGE#
    , CONTROLFILE_CHANGE#
    , CURRENT_SCN
    , DB_UNIQUE_NAME
    , CDB
FROM
    V$DATABASE;

                                          RESETLOGS                        CHECKPOINT       ARCHIVE   CONTROLFILE       CURRENT
         DBID DB_NAME    OPEN_MODE          CHANGE# RESETLOGS_TIME            CHANGE#       CHANGE#       CHANGE#           SCN DB_UNIQUE_NAME  CDB
------------- ---------- ------------ ------------- ------------------- ------------- ------------- ------------- ------------- --------------- ---
   1936516987 ORA19RS    READ WRITE         1920977 2025-10-09 22:57:02       5402848       5196008       5422296      
5422310 ORA19RS         YES

1 row selected.

Elapsed: 00:00:00.00
--현재 소스 DB의 Current SCN은 5422310 임


SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A70 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                            STATUS  TYPE    SIZE(MB) STATUS           ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ ---------------------------------------------------------------------- ------- ------- -------- ---------------- --- -------------------- --------------------
     1   1     67 +DATA1/ORA19RS/ONLINELOG/group_1.264.1214089053                        (NULL)  ONLINE       200 INACTIVE         YES              5325220              5402848
     1   1     67 +FRA1/ORA19RS/ONLINELOG/group_1.257.1214089021                         (NULL)  ONLINE       200 INACTIVE         YES              5325220              5402848
     2   1     68 +FRA1/ORA19RS/ONLINELOG/group_2.258.1214089021                         (NULL)  ONLINE       200 CURRENT          NO               5402848  9295429630892703743
     2   1     68 +DATA1/ORA19RS/ONLINELOG/group_2.262.1214089021                        (NULL)  ONLINE       200 CURRENT          NO               5402848  9295429630892703743
     3   1     66 +DATA1/ORA19RS/ONLINELOG/group_3.263.1214089021                        (NULL)  ONLINE       200 INACTIVE         YES              5323867              5324158
     3   1     66 +FRA1/ORA19RS/ONLINELOG/group_3.259.1214089021                         (NULL)  ONLINE       200 INACTIVE         YES              5323867              5324158
     4   2     52 +FRA1/ORA19RS/ONLINELOG/group_4.260.1214089813                         (NULL)  ONLINE       200 INACTIVE         YES              5196008              5323868
     4   2     52 +DATA1/ORA19RS/ONLINELOG/group_4.271.1214089813                        (NULL)  ONLINE       200 INACTIVE         YES              5196008              5323868
     5   2     53 +FRA1/ORA19RS/ONLINELOG/group_5.261.1214089813                         (NULL)  ONLINE       200 INACTIVE         YES              5323868              5416859
     5   2     53 +DATA1/ORA19RS/ONLINELOG/group_5.272.1214089813                        (NULL)  ONLINE       200 INACTIVE         YES              5323868              5416859
     6   2     54 +FRA1/ORA19RS/ONLINELOG/group_6.262.1214089813                         (NULL)  ONLINE       200 CURRENT          NO               5416859  9295429630892703743
     6   2     54 +DATA1/ORA19RS/ONLINELOG/group_6.273.1214089813                        (NULL)  ONLINE       200 CURRENT          NO               5416859  9295429630892703743

12 rows selected.

Elapsed: 00:00:00.02
--현재 그룹 2와 그룹 6이 사용중인 상태임

 

--CDB에서 트랜잭션 실행
[ol8ora19rs1]<SYS@ORA19RS1>$

create table sys.cdb_root_tran_test_01
(
    test_01_no number(15)
)
;

insert into sys.cdb_root_tran_test_01
select level from dual connect by level <= 1000;

commit;

 

--PDB에서 트랜잭션 실행
[ol8ora19rs1]<SYS@ORA19RS1>$ alter session set container=ORA19RSP1;

[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
ORA19RSP1


create table sys.pdb_tran_test_01
(
    test_01_no number(15)
)
;

insert into sys.pdb_tran_test_01
select level from dual connect by level <= 1000;

commit;


[ol8ora19rs1]<SYS@ORA19RS1>$ alter session set container=CDB$ROOT;

Session altered.

Elapsed: 00:00:00.00
[ol8ora19rs1]<
SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT


SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN DBID                FORMAT 999999999999 HEADING 'DBID'
COLUMN NAME                FORMAT A10           HEADING 'DB_NAME'
COLUMN OPEN_MODE           FORMAT A12           HEADING 'OPEN_MODE'
COLUMN DB_UNIQUE_NAME      FORMAT A15           HEADING 'DB_UNIQUE_NAME'
COLUMN RESETLOGS_CHANGE#   FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN RESETLOGS_TIME      FORMAT A19           HEADING 'RESETLOGS_TIME'
COLUMN CHECKPOINT_CHANGE#  FORMAT 999999999999 HEADING 'CHECKPOINT|CHANGE#'
COLUMN ARCHIVE_CHANGE#     FORMAT 999999999999 HEADING 'ARCHIVE|CHANGE#'
COLUMN CONTROLFILE_CHANGE# FORMAT 999999999999 HEADING 'CONTROLFILE|CHANGE#'
COLUMN CURRENT_SCN         FORMAT 999999999999 HEADING 'CURRENT|SCN'
COLUMN CDB                 FORMAT A3            HEADING 'CDB'

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';


SELECT
     DBID
    , NAME
    , OPEN_MODE
    , RESETLOGS_CHANGE#
    , RESETLOGS_TIME
    , CHECKPOINT_CHANGE#
    , ARCHIVE_CHANGE#
    , CONTROLFILE_CHANGE#
    , CURRENT_SCN
    , DB_UNIQUE_NAME
    , CDB
FROM
    V$DATABASE;

                                          RESETLOGS                        CHECKPOINT       ARCHIVE   CONTROLFILE       CURRENT
         DBID DB_NAME    OPEN_MODE          CHANGE# RESETLOGS_TIME            CHANGE#       CHANGE#       CHANGE#           SCN DB_UNIQUE_NAME  CDB
------------- ---------- ------------ ------------- ------------------- ------------- ------------- ------------- ------------- --------------- ---
   1936516987 ORA19RS    READ WRITE         1920977 2025-10-09 22:57:02       5402848       5196008       5422504      
5422523 ORA19RS         YES

1 row selected.

Elapsed: 00:00:00.00
--> 소스 DB에서 트랜잭션을 일으킨 직후 SCN은 5422523 임 결국 해당 시점까지 타켓 DB를 복구하면 소스 DB에서 발생한 트랜잭션까지 타켓 DB로 적용되는 것임


SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A70 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

 

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                            STATUS  TYPE    SIZE(MB) STATUS           ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ ---------------------------------------------------------------------- ------- ------- -------- ---------------- --- -------------------- --------------------
     1   1     67 +DATA1/ORA19RS/ONLINELOG/group_1.264.1214089053                        (NULL)  ONLINE       200 INACTIVE         YES              5325220              5402848
     1   1     67 +FRA1/ORA19RS/ONLINELOG/group_1.257.1214089021                         (NULL)  ONLINE       200 INACTIVE         YES              5325220              5402848
     2   1     68 +FRA1/ORA19RS/ONLINELOG/group_2.258.1214089021                         (NULL)  ONLINE       200 CURRENT          NO               5402848  9295429630892703743
     2   1     68 +DATA1/ORA19RS/ONLINELOG/group_2.262.1214089021                        (NULL)  ONLINE       200 CURRENT          NO               5402848  9295429630892703743
     3   1     66 +DATA1/ORA19RS/ONLINELOG/group_3.263.1214089021                        (NULL)  ONLINE       200 INACTIVE         YES              5323867              5324158
     3   1     66 +FRA1/ORA19RS/ONLINELOG/group_3.259.1214089021                         (NULL)  ONLINE       200 INACTIVE         YES              5323867              5324158
     4   2     52 +FRA1/ORA19RS/ONLINELOG/group_4.260.1214089813                         (NULL)  ONLINE       200 INACTIVE         YES              5196008              5323868
     4   2     52 +DATA1/ORA19RS/ONLINELOG/group_4.271.1214089813                        (NULL)  ONLINE       200 INACTIVE         YES              5196008              5323868
     5   2     53 +FRA1/ORA19RS/ONLINELOG/group_5.261.1214089813                         (NULL)  ONLINE       200 INACTIVE         YES              5323868              5416859
     5   2     53 +DATA1/ORA19RS/ONLINELOG/group_5.272.1214089813                        (NULL)  ONLINE       200 INACTIVE         YES              5323868              5416859

     6   2     54 +FRA1/ORA19RS/ONLINELOG/group_6.262.1214089813                         (NULL)  ONLINE       200 CURRENT          NO               5416859  9295429630892703743
     6   2     54 +DATA1/ORA19RS/ONLINELOG/group_6.273.1214089813                        (NULL)  ONLINE       200 CURRENT          NO               5416859  9295429630892703743

12 rows selected.

Elapsed: 00:00:00.01
--목표 SCN은 5422523 인 상황이고 현재 그룹 2 (thread 1의 sequence 68과 thread 2의 sequence 54에 걸쳐 있는 상황임)

 

--각각의 노드에서 아카이브를 생성함
--1번 노드

[ol8ora19rs1]<SYS@ORA19RS1>$ ALTER SYSTEM ARCHIVE LOG CURRENT;

 

--2번 노드

[ORA19RS2:oracle@ol8ora19rs2][/home/oracle]$ echo $ORACLE_SID
ORA19RS2
[ORA19RS2:oracle@ol8ora19rs2][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[ORA19RS2:oracle@ol8ora19rs2][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 18 23:11:57 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs2]<SYS@ORA19RS2>$ ALTER SYSTEM ARCHIVE LOG CURRENT;

System altered.

Elapsed: 00:00:04.94

 

--1번 노드에서 확인

SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A70 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                            STATUS  TYPE    SIZE(MB) STATUS           ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ ---------------------------------------------------------------------- ------- ------- -------- ---------------- --- -------------------- --------------------
     1   1     70 +DATA1/ORA19RS/ONLINELOG/group_1.264.1214089053                        (NULL)  ONLINE       200 CURRENT          NO               5422725  9295429630892703743
     1   1     70 +FRA1/ORA19RS/ONLINELOG/group_1.257.1214089021                         (NULL)  ONLINE       200 CURRENT          NO               5422725  9295429630892703743
     2   1     68 +FRA1/ORA19RS/ONLINELOG/group_2.258.1214089021                         (NULL)  ONLINE       200 ACTIVE           YES              5402848              5422694
     2   1     68 +DATA1/ORA19RS/ONLINELOG/group_2.262.1214089021                        (NULL)  ONLINE       200 ACTIVE           YES              5402848              5422694
     3   1     69 +DATA1/ORA19RS/ONLINELOG/group_3.263.1214089021                        (NULL)  ONLINE       200 ACTIVE           YES              5422694              5422725
     3   1     69 +FRA1/ORA19RS/ONLINELOG/group_3.259.1214089021                         (NULL)  ONLINE       200 ACTIVE           YES              5422694              5422725
     4   2     55 +FRA1/ORA19RS/ONLINELOG/group_4.260.1214089813                         (NULL)  ONLINE       200 ACTIVE           YES              5422691              5422728
     4   2     55 +DATA1/ORA19RS/ONLINELOG/group_4.271.1214089813                        (NULL)  ONLINE       200 ACTIVE           YES              5422691              5422728
     5   2     56 +FRA1/ORA19RS/ONLINELOG/group_5.261.1214089813                         (NULL)  ONLINE       200 CURRENT          NO               5422728  9295429630892703743
     5   2     56 +DATA1/ORA19RS/ONLINELOG/group_5.272.1214089813                        (NULL)  ONLINE       200 CURRENT          NO               5422728  9295429630892703743
     6   2     54 +FRA1/ORA19RS/ONLINELOG/group_6.262.1214089813                         (NULL)  ONLINE       200 ACTIVE           YES              5416859              5422691
     6   2     54 +DATA1/ORA19RS/ONLINELOG/group_6.273.1214089813                        (NULL)  ONLINE       200 ACTIVE           YES              5416859              5422691

12 rows selected.

Elapsed: 00:00:00.01
--thread 1의 sequence 68과 thread 2의 sequence 54가 아카이빙 되었음

 

SET LINESIZE 220
SET PAGESIZE 200
SET NUMWIDTH 20
COLUMN THREAD#         FORMAT 999      HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 999999   HEADING 'SEQ'
COLUMN RESETLOGS_CHANGE# FORMAT 999999999999 HEADING 'RESETLOGS|CHANGE#'
COLUMN FIRST_CHANGE#   FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN NEXT_CHANGE#    FORMAT 999999999999 HEADING 'NEXT|CHANGE#'
COLUMN ARCHIVED        FORMAT A8       HEADING 'ARCHIVED'
COLUMN DELETED         FORMAT A8       HEADING 'DELETED'
COLUMN NAME            FORMAT A100     HEADING 'ARCHIVELOG NAME'

SELECT
       A.NAME
     , A.THREAD#
     , A.SEQUENCE#
     , A.RESETLOGS_CHANGE#
     , A.FIRST_CHANGE#
     , A.NEXT_CHANGE#
     , A.ARCHIVED
     , A.DELETED
  FROM V$ARCHIVED_LOG A
 WHERE 1=1
   AND A.FIRST_CHANGE# <= 5422523   --타켓 DB가 가야할 지점은 5422523 이므로 FIRST_CHANGE# 이 5422523 보다 작거나 같은 것은 복구 대상임
   AND A.NEXT_CHANGE#  >= 5061502   --타켓 DB은 5061501 까지 적용된 상태이므로 A.NEXT_CHANGE# 이 5061501+1=5061502 보다 같거나 큰 것은 복구대상임
 ORDER BY A.THREAD#, A.SEQUENCE#
;

                                                                                                                      RESETLOGS         FIRST          NEXT
ARCHIVELOG NAME                                                                                       THR     SEQ       CHANGE#       CHANGE#       CHANGE# ARCHIVED DELETED
---------------------------------------------------------------------------------------------------- ---- ------- ------------- ------------- ------------- -------- --------
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_64.271.1214909161                                      1      64       1920977       5061203       5061675 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_65.268.1214926435                                      1      65       1920977       5061675       5323867 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_66.263.1214926437                                      1      66       1920977       5323867       5324158 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_67.264.1214947837                                      1      67       1920977       5325220       5402848 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_1_seq_68.275.1214951381                                      1      68       1920977       5402848       5422694 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_49.272.1214909161                                      2      49       1920977       5061207       5061672 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_50.270.1214919547                                      2      50       1920977       5061672       5195057 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_51.269.1214919549                                      2      51       1920977       5195057       5195059 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_52.267.1214926433                                      2      52       1920977       5196008       5323868 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_53.277.1214949643                                      2      53       1920977       5323868       5416859 YES      NO
+FRA1/ORA19RS/ARCHIVELOG/2025_10_19/thread_2_seq_54.276.1214951381                                      2      54       1920977       5416859       5422691 YES      NO

11 rows selected.

Elapsed: 00:00:00.01
--> 결국 위의 아카이브 로그를 타켓 DB에서 Recover 시켜야 목표 SCN인 5422523 까지 갈 수 있음
--> Thread 1의 sequnece 64와 thread 2의 sequence 49는 이미 타켓 DB에 restore된 상황임


--소스 DB에서 타켓 DB를 Recover하는데 필요한 아카이브 로그를 백업받음
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias rt
alias rt='rman target /'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Sun Oct 19 22:40:54 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORA19RS (DBID=1936516987)

run {
crosscheck archivelog all;
BACKUP ARCHIVELOG FROM SEQUENCE 65 UNTIL SEQUENCE 68 THREAD 1 format '/home/oracle/ORA19RS_BACKUP/ARCHIVE_%d_%T_%u_s%s_p%p';
BACKUP ARCHIVELOG FROM SEQUENCE 50 UNTIL SEQUENCE 54 THREAD 2 format '/home/oracle/ORA19RS_BACKUP/ARCHIVE_%d_%T_%u_s%s_p%p';
}

...
Starting backup at 2025-10-19 22:41:10
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=65 RECID=103 STAMP=1214926436
input archived log thread=1 sequence=66 RECID=104 STAMP=1214926436
input archived log thread=1 sequence=67 RECID=105 STAMP=1214947838
input archived log thread=1 sequence=68 RECID=108 STAMP=1214951380
channel ORA_DISK_1: starting piece 1 at 2025-10-19 22:41:10
channel ORA_DISK_1: finished piece 1 at 2025-10-19 22:41:11
piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1 tag=TAG20251019T224110 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2025-10-19 22:41:11

Starting backup at 2025-10-19 22:41:11
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=2 sequence=50 RECID=100 STAMP=1214919547
input archived log thread=2 sequence=51 RECID=101 STAMP=1214919548
input archived log thread=2 sequence=52 RECID=102 STAMP=1214926432
input archived log thread=2 sequence=53 RECID=106 STAMP=1214949643
input archived log thread=2 sequence=54 RECID=107 STAMP=1214951380
channel ORA_DISK_1: starting piece 1 at 2025-10-19 22:41:11
channel ORA_DISK_1: finished piece 1 at 2025-10-19 22:41:12
piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1 tag=TAG20251019T224111 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2025-10-19 22:41:12

Starting Control File and SPFILE Autobackup at 2025-10-19 22:41:12
piece handle=/home/oracle/rman_backup/ORA19RS/autobackup/c-1936516987-20251019-0a comment=NONE
Finished Control File and SPFILE Autobackup at 2025-10-19 22:41:13

 

--thread 1의 sequence 65~68 까지 저장된 아카이브 로그 백업 파일
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1
-rw-r-----. 1 oracle asmadmin 332779008 Oct 19 22:41 /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1

 

--thread 2의 sequence 50~54 까지 저장된 아카이브 로그 백업 파일
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ls -l /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1
-rw-r-----. 1 oracle asmadmin 330820096 Oct 19 22:41 /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1


RMAN> list backup of archivelog all;
list backup of archivelog all;
using target database control file instead of recovery catalog

List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
301     15.00K     DISK        00:00:00     2025-10-19 10:46:01
        BP Key: 301   Status: AVAILABLE  Compressed: NO  Tag: TAG20251019T104601
        Piece Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9g46k2n9_s304_p1

  List of Archived Logs in backup set 301
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    64      5061203    2025-10-19 10:43:35 5061675    2025-10-19 10:46:01
  2    49      5061207    2025-10-19 10:43:37 5061672    2025-10-19 10:46:01

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
303     317.36M    DISK        00:00:01     2025-10-19 22:41:11
        BP Key: 303   Status: AVAILABLE  Compressed: NO  Tag: TAG20251019T224110
        Piece Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1

  List of Archived Logs in backup set 303
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    65      5061675    2025-10-19 10:46:01 5323867    2025-10-19 15:33:51
  1    66      5323867    2025-10-19 15:33:51 5324158    2025-10-19 15:33:55
  1    67      5325220    2025-10-19 15:34:15 5402848    2025-10-19 21:30:37
  1    68      5402848    2025-10-19 21:30:37 5422694    2025-10-19 22:29:40

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
304     315.49M    DISK        00:00:01     2025-10-19 22:41:12
        BP Key: 304   Status: AVAILABLE  Compressed: NO  Tag: TAG20251019T224111
        Piece Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1

  List of Archived Logs in backup set 304
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  2    50      5061672    2025-10-19 10:46:01 5195057    2025-10-19 13:39:06
  2    51      5195057    2025-10-19 13:39:06 5195059    2025-10-19 13:39:06
  2    52      5196008    2025-10-19 13:40:37 5323868    2025-10-19 15:33:52
  2    53      5323868    2025-10-19 15:33:52 5416859    2025-10-19 22:00:43
  2    54      5416859    2025-10-19 22:00:43 5422691    2025-10-19 22:29:40

 

13. 타켓에서 아카이브 적용

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias rt
alias rt='rman target /'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ rt

Recovery Manager: Release 19.0.0.0.0 - Production on Sun Oct 19 00:38:45 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CLONEDB (DBID=1936516987, not open)

RMAN> catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1';
catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1';
using target database control file instead of recovery catalog
searching for all files that match the pattern /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1

List of Files Unknown to the Database
=====================================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1

 

RMAN> catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1';
catalog start with '/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1';
searching for all files that match the pattern /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1

List of Files Unknown to the Database
=====================================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1

 

--이미 아카이브 로그의 백업본을 타켓 DB의 RMAN이 알고 있으므로 이 작업은 필수는 아님(연습용)
RMAN> RESTORE ARCHIVELOG FROM SEQUENCE 65 UNTIL SEQUENCE 68 THREAD 1;
RESTORE ARCHIVELOG FROM SEQUENCE 65 UNTIL SEQUENCE 68 THREAD 1;
Starting restore at 2025-10-19 22:47:01
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1366 device type=DISK

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=65
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=66
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=67
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=68
channel ORA_DISK_1: reading from backup piece /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1
channel ORA_DISK_1: piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9i46lck6_s306_p1 tag=TAG20251019T224110
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 2025-10-19 22:47:08

 

--이미 아카이브 로그의 백업본을 타켓 DB의 RMAN이 알고 있으므로 이 작업은 필수는 아님(연습용)
RMAN> RESTORE ARCHIVELOG FROM SEQUENCE 50 UNTIL SEQUENCE 54 THREAD 2;
RESTORE ARCHIVELOG FROM SEQUENCE 50 UNTIL SEQUENCE 54 THREAD 2;
Starting restore at 2025-10-19 22:47:39
using channel ORA_DISK_1

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=50
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=51
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=52
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=53
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=54
channel ORA_DISK_1: reading from backup piece /home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1
channel ORA_DISK_1: piece handle=/home/oracle/ORA19RS_BACKUP/ARCHIVE_ORA19RS_20251019_9j46lck7_s307_p1 tag=TAG20251019T224111
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 2025-10-19 22:48:04

 

RMAN> host 'ls -l /home/oracle/CLONEDB/arch';
host 'ls -l /home/oracle/CLONEDB/arch';
total 648096
-rw-r-----. 1 oracle asmadmin      9728 Oct 19 15:40 1_64_1214089022.ARC
-rw-r-----. 1 oracle asmadmin 118173184 Oct 19 22:47 1_65_1214089022.ARC
-rw-r-----. 1 oracle asmadmin      1024 Oct 19 22:47 1_66_1214089022.ARC
-rw-r-----. 1 oracle asmadmin 185360384 Oct 19 22:47 1_67_1214089022.ARC
-rw-r-----. 1 oracle asmadmin  29239808 Oct 19 22:47 1_68_1214089022.ARC
-rw-r-----. 1 oracle asmadmin      2560 Oct 19 15:40 2_49_1214089022.ARC
-rw-r-----. 1 oracle asmadmin  61614592 Oct 19 22:48 2_50_1214089022.ARC
-rw-r-----. 1 oracle asmadmin      1024 Oct 19 22:47 2_51_1214089022.ARC
-rw-r-----. 1 oracle asmadmin  78998528 Oct 19 22:48 2_52_1214089022.ARC
-rw-r-----. 1 oracle asmadmin 182635008 Oct 19 22:48 2_53_1214089022.ARC
-rw-r-----. 1 oracle asmadmin   7565824 Oct 19 22:47 2_54_1214089022.ARC
host command complete
--> 타켓 DB를 복구하는데 필요한 모든 아카이브 로그가 저장된 상황

RUN {
    SET UNTIL SCN 5422523;
    RECOVER DATABASE;
}

Starting recover at 2025-10-19 22:50:17
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 64 is already on disk as file /home/oracle/CLONEDB/arch/1_64_1214089022.ARC
archived log for thread 1 with sequence 65 is already on disk as file /home/oracle/CLONEDB/arch/1_65_1214089022.ARC
archived log for thread 1 with sequence 66 is already on disk as file /home/oracle/CLONEDB/arch/1_66_1214089022.ARC
archived log for thread 1 with sequence 67 is already on disk as file /home/oracle/CLONEDB/arch/1_67_1214089022.ARC
archived log for thread 1 with sequence 68 is already on disk as file /home/oracle/CLONEDB/arch/1_68_1214089022.ARC
archived log for thread 2 with sequence 49 is already on disk as file /home/oracle/CLONEDB/arch/2_49_1214089022.ARC
archived log for thread 2 with sequence 50 is already on disk as file /home/oracle/CLONEDB/arch/2_50_1214089022.ARC
archived log for thread 2 with sequence 51 is already on disk as file /home/oracle/CLONEDB/arch/2_51_1214089022.ARC
archived log for thread 2 with sequence 52 is already on disk as file /home/oracle/CLONEDB/arch/2_52_1214089022.ARC
archived log for thread 2 with sequence 53 is already on disk as file /home/oracle/CLONEDB/arch/2_53_1214089022.ARC
archived log for thread 2 with sequence 54 is already on disk as file /home/oracle/CLONEDB/arch/2_54_1214089022.ARC
archived log file name=/home/oracle/CLONEDB/arch/1_64_1214089022.ARC thread=1 sequence=64
archived log file name=/home/oracle/CLONEDB/arch/2_49_1214089022.ARC thread=2 sequence=49
archived log file name=/home/oracle/CLONEDB/arch/2_50_1214089022.ARC thread=2 sequence=50
archived log file name=/home/oracle/CLONEDB/arch/1_65_1214089022.ARC thread=1 sequence=65
archived log file name=/home/oracle/CLONEDB/arch/2_51_1214089022.ARC thread=2 sequence=51
archived log file name=/home/oracle/CLONEDB/arch/2_52_1214089022.ARC thread=2 sequence=52
archived log file name=/home/oracle/CLONEDB/arch/1_66_1214089022.ARC thread=1 sequence=66
archived log file name=/home/oracle/CLONEDB/arch/2_53_1214089022.ARC thread=2 sequence=53
archived log file name=/home/oracle/CLONEDB/arch/1_67_1214089022.ARC thread=1 sequence=67
archived log file name=/home/oracle/CLONEDB/arch/1_68_1214089022.ARC thread=1 sequence=68
archived log file name=/home/oracle/CLONEDB/arch/2_54_1214089022.ARC thread=2 sequence=54
media recovery complete, elapsed time: 00:00:06
Finished recover at 2025-10-19 22:50:23
--> 목표 SCN까지 복구가 완료됨

RMAN> quit
quit


Recovery Manager complete.

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 00:44:10 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0


SET LINESIZE 250
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN FILE#              FORMAT 9999           HEADING 'FILE#'
COLUMN STATUS             FORMAT A10            HEADING 'STATUS'
COLUMN TABLESPACE_NAME    FORMAT A20            HEADING 'TABLESPACE_NAME'
COLUMN RESETLOGS_CHANGE#  FORMAT 999999999999   HEADING 'RESETLOGS|CHANGE#'
COLUMN NAME               FORMAT A90            HEADING 'DATAFILE_NAME'
COLUMN CHECKPOINT_CHANGE# FORMAT 999999999999   HEADING 'CHECKPOINT|CHANGE#'
COLUMN ERROR              FORMAT A12            HEADING 'ERROR'
COLUMN CON_NAME           FORMAT A20            HEADING 'CON_NAME'

SELECT
     a.FILE#
    , a.STATUS
    , a.TABLESPACE_NAME
    , a.RESETLOGS_CHANGE#
    , a.NAME
    , a.CHECKPOINT_CHANGE#
    , a.ERROR
    , (SELECT l.name
         FROM v$containers l
        WHERE l.con_id = a.con_id) AS con_name
FROM
    v$datafile_header a
ORDER BY
    a.FILE#;

 

FILE# STATUS     TABLESPACE_NAME            CHANGE# DATAFILE_NAME                                                                                    CHANGE# ERROR        CON_NAME
----- ---------- -------------------- ------------- ------------------------------------------------------------------------------------------ ------------- ------------ --------------------
    1 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSTEM_1.dbf                                       5422523 (NULL)       CDB$ROOT
    3 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_SYSAUX_3.dbf                                       5422523 (NULL)       CDB$ROOT
    4 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS1_4.dbf                                     5422523 (NULL)       CDB$ROOT
    5 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSTEM_5.dbf                                       2463120 (NULL)       PDB$SEED
    6 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_SYSAUX_6.dbf                                       2463120 (NULL)       PDB$SEED
    7 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_USERS_7.dbf                                        5422523 (NULL)       CDB$ROOT
    8 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/PDB_DOLLAR_SEED_UNDOTBS1_8.dbf                                     2463120 (NULL)       PDB$SEED
    9 ONLINE     UNDOTBS2                   1920977 /home/oracle/CLONEDB/datafile/CDB_DOLLAR_ROOT_UNDOTBS2_9.dbf                                     5422523 (NULL)       CDB$ROOT
   10 ONLINE     SYSTEM                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSTEM_10.dbf                                            5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   11 ONLINE     SYSAUX                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_SYSAUX_11.dbf                                            5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   12 ONLINE     UNDOTBS1                   1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDOTBS1_12.dbf                                          5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   13 ONLINE     UNDO_2                     1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_UNDO_2_13.dbf                                            5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   14 ONLINE     USERS                      1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_USERS_14.dbf                                             5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   15 ONLINE     TUNER_DATA1                1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_DATA1_15.dbf                                       5422523 (NULL)       _###_UNKNOWN_PDB_#_3
   16 ONLINE     TUNER_IDX1                 1920977 /home/oracle/CLONEDB/datafile/ORA19RSP1_TUNER_IDX1_16.dbf                                        5422523 (NULL)       _###_UNKNOWN_PDB_#_3
--> 목표 SCN인 5422523 까지 Recover가 완료됨!

15 rows selected.

Elapsed: 00:00:00.02

 

[ol8ora19rs1]<SYS@CLONEDB>$ alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


Elapsed: 00:00:00.03

[ol8ora19rs1]<SYS@CLONEDB>$ alter database open resetlogs;

Database altered.

Elapsed: 00:00:25.65


SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A80 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

 

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                                      STATUS     TYPE    SIZE(MB) STATUS     ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ -------------------------------------------------------------------------------- ---------- ------- -------- ---------- --- -------------------- --------------------
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_1.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_2.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     4   2      1 /home/oracle/CLONEDB/onlinelog_1/CLONEDB/onlinelog/o1_mf_4_nh9v8bh0_.log         (NULL)     ONLINE       100 INACTIVE   YES              5422524              5422708
     4   2      1 /home/oracle/CLONEDB/onlinelog_2/CLONEDB/onlinelog/o1_mf_4_nh9v8bl9_.log         (NULL)     ONLINE       100 INACTIVE   YES              5422524              5422708
     5   2      0 /home/oracle/CLONEDB/onlinelog_2/CLONEDB/onlinelog/o1_mf_5_nh9v8brp_.log         (NULL)     ONLINE       100 UNUSED     YES                    0                    0
     5   2      0 /home/oracle/CLONEDB/onlinelog_1/CLONEDB/onlinelog/o1_mf_5_nh9v8bol_.log         (NULL)     ONLINE       100 UNUSED     YES                    0                    0
--> OPEN하는 과정에서 그룹 4와 그룹 5가 생긴 것임 (정상적인 동작임) (소스 DB가 2 Node RAC였기 때문에 thread 2가 필요한 최소한의 로그 그룹 2개가 생성된 것임)

10 rows selected.

Elapsed: 00:00:00.01

 

[ol8ora19rs1]<SYS@CLONEDB>$ show pdbs;

              CON_ID CON_NAME                       OPEN MODE  RESTRICTED
-------------------- ------------------------------ ---------- ----------
                   2 PDB$SEED                       READ ONLY  NO
                   3 ORA19RSP1                      MOUNTED    (NULL)

 

[ol8ora19rs1]<SYS@CLONEDB>$ alter pluggable database ora19rsp1 open;

Pluggable database altered.

Elapsed: 00:00:00.76


[ol8ora19rs1]<SYS@CLONEDB>$ select name from v$tempfile;

no rows selected

Elapsed: 00:00:00.00
--> 현재 tempfile이 자동으로 만들어지지 않은 상황임

 

--지금부터 타켓 DB의 테이블 스페이스 상황을 조사함
[ol8ora19rs1]<SYS@CLONEDB>$
SET LINESIZE 220
SET PAGESIZE 100
COLUMN CON_ID           FORMAT 999  HEADING 'CON_ID'
COLUMN CON_NAME         FORMAT A12  HEADING 'CONTAINER'
COLUMN TABLESPACE_NAME  FORMAT A20  HEADING 'TABLESPACE'
COLUMN CONTENTS         FORMAT A10  HEADING 'CONTENTS'
COLUMN STATUS           FORMAT A10  HEADING 'STATUS'
COLUMN EXT_MANAGEMENT   FORMAT A10  HEADING 'EXTENT|MGMT'
COLUMN ALLOC_TYPE       FORMAT A10  HEADING 'ALLOC|TYPE'
COLUMN SEG_SPACE_MGMT   FORMAT A10  HEADING 'SEGMENT|SPACE'
COLUMN BIGFILE          FORMAT A7   HEADING 'BIGFILE'
COLUMN BLOCK_SIZE       FORMAT 9999 HEADING 'BLK|SIZE'
COLUMN LOGGING          FORMAT A10   HEADING 'LOGGING'

SELECT c.con_id
     , c.name                              AS con_name
     , t.tablespace_name
     , t.contents
     , t.status
     , t.extent_management                 AS ext_management
     , t.allocation_type                   AS alloc_type
     , t.segment_space_management          AS seg_space_mgmt
     , t.bigfile
     , t.block_size
     , t.logging
  FROM cdb_tablespaces t
  JOIN v$containers    c
    ON t.con_id = c.con_id
 ORDER BY c.con_id
        , t.tablespace_name;

                                                               EXTENT     ALLOC      SEGMENT              BLK
CON_ID CONTAINER    TABLESPACE           CONTENTS   STATUS     MGMT       TYPE       SPACE      BIGFILE  SIZE LOGGING
------ ------------ -------------------- ---------- ---------- ---------- ---------- ---------- ------- ----- ----------
     1 CDB$ROOT     SYSAUX               PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
     1 CDB$ROOT     SYSTEM               PERMANENT  ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     1 CDB$ROOT     TEMP                 TEMPORARY  ONLINE     LOCAL      UNIFORM    MANUAL     NO       8192 NOLOGGING
     1 CDB$ROOT     UNDOTBS1             UNDO       ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     1 CDB$ROOT     UNDOTBS2             UNDO       ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     1 CDB$ROOT     USERS                PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
--> CDB$ROOT에 템프 테이블 스페이스 있음

6 rows selected.

Elapsed: 00:00:00.00

[ol8ora19rs1]<SYS@CLONEDB>$ alter session set container=PDB$SEED;

Session altered.

Elapsed: 00:00:00.03

[ol8ora19rs1]<SYS@CLONEDB>$ show con_name

CON_NAME
------------------------------
PDB$SEED

 

SET LINESIZE 220
SET PAGESIZE 100
COLUMN CON_ID           FORMAT 999  HEADING 'CON_ID'
COLUMN CON_NAME         FORMAT A12  HEADING 'CONTAINER'
COLUMN TABLESPACE_NAME  FORMAT A20  HEADING 'TABLESPACE'
COLUMN CONTENTS         FORMAT A10  HEADING 'CONTENTS'
COLUMN STATUS           FORMAT A10  HEADING 'STATUS'
COLUMN EXT_MANAGEMENT   FORMAT A10  HEADING 'EXTENT|MGMT'
COLUMN ALLOC_TYPE       FORMAT A10  HEADING 'ALLOC|TYPE'
COLUMN SEG_SPACE_MGMT   FORMAT A10  HEADING 'SEGMENT|SPACE'
COLUMN BIGFILE          FORMAT A7   HEADING 'BIGFILE'
COLUMN BLOCK_SIZE       FORMAT 9999 HEADING 'BLK|SIZE'
COLUMN LOGGING          FORMAT A10   HEADING 'LOGGING'

SELECT c.con_id
     , c.name                              AS con_name
     , t.tablespace_name
     , t.contents
     , t.status
     , t.extent_management                 AS ext_management
     , t.allocation_type                   AS alloc_type
     , t.segment_space_management          AS seg_space_mgmt
     , t.bigfile
     , t.block_size
     , t.logging
  FROM cdb_tablespaces t
  JOIN v$containers    c
    ON t.con_id = c.con_id
 ORDER BY c.con_id
        , t.tablespace_name;

                                                               EXTENT     ALLOC      SEGMENT              BLK
CON_ID CONTAINER    TABLESPACE           CONTENTS   STATUS     MGMT       TYPE       SPACE      BIGFILE  SIZE LOGGING
------ ------------ -------------------- ---------- ---------- ---------- ---------- ---------- ------- ----- ----------
     2 PDB$SEED     SYSAUX               PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
     2 PDB$SEED     SYSTEM               PERMANENT  ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     2 PDB$SEED     TEMP                 TEMPORARY  ONLINE     LOCAL      UNIFORM    MANUAL     NO       8192 NOLOGGING
     2 PDB$SEED     UNDOTBS1             UNDO       ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
--> PDB$SEED에 템프 테이블 스페이스 있음

4 rows selected.

Elapsed: 00:00:00.03

[ol8ora19rs1]<SYS@CLONEDB>$ alter session set container=CDB$ROOT;

Session altered.

Elapsed: 00:00:00.01
[ol8ora19rs1]<
SYS@CLONEDB>$ alter pluggable database ORA19RSP1 open;

Pluggable database altered.

Elapsed: 00:00:00.77

[ol8ora19rs1]<SYS@CLONEDB>$ alter session set container=ORA19RSP1;

Session altered.

Elapsed: 00:00:00.03

 

SET LINESIZE 220
SET PAGESIZE 100
COLUMN CON_ID           FORMAT 999  HEADING 'CON_ID'
COLUMN CON_NAME         FORMAT A12  HEADING 'CONTAINER'
COLUMN TABLESPACE_NAME  FORMAT A20  HEADING 'TABLESPACE'
COLUMN CONTENTS         FORMAT A10  HEADING 'CONTENTS'
COLUMN STATUS           FORMAT A10  HEADING 'STATUS'
COLUMN EXT_MANAGEMENT   FORMAT A10  HEADING 'EXTENT|MGMT'
COLUMN ALLOC_TYPE       FORMAT A10  HEADING 'ALLOC|TYPE'
COLUMN SEG_SPACE_MGMT   FORMAT A10  HEADING 'SEGMENT|SPACE'
COLUMN BIGFILE          FORMAT A7   HEADING 'BIGFILE'
COLUMN BLOCK_SIZE       FORMAT 9999 HEADING 'BLK|SIZE'
COLUMN LOGGING          FORMAT A10   HEADING 'LOGGING'

SELECT c.con_id
     , c.name                              AS con_name
     , t.tablespace_name
     , t.contents
     , t.status
     , t.extent_management                 AS ext_management
     , t.allocation_type                   AS alloc_type
     , t.segment_space_management          AS seg_space_mgmt
     , t.bigfile
     , t.block_size
     , t.logging
  FROM cdb_tablespaces t
  JOIN v$containers    c
    ON t.con_id = c.con_id
 ORDER BY c.con_id
        , t.tablespace_name;

 

CON_ID CONTAINER    TABLESPACE           CONTENTS   STATUS     MGMT       TYPE       SPACE      BIGFILE  SIZE LOGGING
------ ------------ -------------------- ---------- ---------- ---------- ---------- ---------- ------- ----- ----------
     3 ORA19RSP1    SYSAUX               PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
     3 ORA19RSP1    SYSTEM               PERMANENT  ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     3 ORA19RSP1    TEMP                 TEMPORARY  ONLINE     LOCAL      UNIFORM    MANUAL     NO       8192 NOLOGGING
     3 ORA19RSP1    TUNER_DATA1          PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
     3 ORA19RSP1    TUNER_IDX1           PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
     3 ORA19RSP1    TUNER_TEMP           TEMPORARY  ONLINE     LOCAL      UNIFORM    MANUAL     NO       8192 NOLOGGING
     3 ORA19RSP1    UNDOTBS1             UNDO       ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     3 ORA19RSP1    UNDO_2               UNDO       ONLINE     LOCAL      SYSTEM     MANUAL     NO       8192 LOGGING
     3 ORA19RSP1    USERS                PERMANENT  ONLINE     LOCAL      SYSTEM     AUTO       NO       8192 LOGGING
--> ORA19RSP1 PDB에 템프 테이블 스페이스 있음

9 rows selected.

Elapsed: 00:00:00.05

--> 결국 템프 테이블 스페이스는 정상적으로 존재하지만 tempfile 이 생성안된 케이스임


--소스 DB에서 생성했었던 컨트롤 파일 생성 스크립트의 내용을 조회함
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/ORA19RS_BACKUP]$ cat /home/oracle/ORA19RS_BACKUP/ORA19RS_controlfile_script_backup.sql
...
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA1/ORA19RS/TEMPFILE/temp.265.1214089055'
     SIZE 258998272  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = "PDB$SEED";
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA1/ORA19RS/40BB407F722818D1E06329F0A8C04CFD/TEMPFILE/temp.269.1214089361'
     SIZE 221249536  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = "ORA19RSP1";
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/TEMPFILE/temp.278.1214089913'
     SIZE 221249536  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER TABLESPACE TUNER_TEMP ADD TEMPFILE '+DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/TEMPFILE/tuner_temp.284.1214210175'
     SIZE 134217728  REUSE AUTOEXTEND ON NEXT 104857600  MAXSIZE 32767M;
...
--> 위와 같은 내용이 존재함

--소스 DB에 접속에서 아래와 같이 템프 테이블 스페이스의 정보를 조회함
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 23:07:55 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@ORA19RS1>$

SET LINESIZE 220
SET PAGESIZE 100
COLUMN CON_ID           FORMAT 999  HEADING 'CON_ID'
COLUMN CON_NAME         FORMAT A12  HEADING 'CONTAINER'
COLUMN TABLESPACE_NAME  FORMAT A20  HEADING 'TEMP TABLESPACE'
COLUMN FILE_NAME        FORMAT A90  HEADING 'FILE NAME'
COLUMN SIZE_MB          FORMAT 999,999,999 HEADING 'SIZE(MB)'

SELECT c.con_id                     AS con_id
     , c.name                       AS con_name
     , ts.name                      AS tablespace_name
     , tf.name                      AS file_name
     , ROUND(tf.bytes/1024/1024)    AS size_mb
  FROM v$tempfile   tf
  JOIN v$tablespace ts
    ON ts.ts#    = tf.ts#
   AND ts.con_id = tf.con_id
  JOIN v$containers c
    ON c.con_id  = tf.con_id
 ORDER BY c.con_id
        , ts.name
        , tf.name;

CON_ID CONTAINER    TEMP TABLESPACE      FILE NAME                                                                                      SIZE(MB)
------ ------------ -------------------- ------------------------------------------------------------------------------------------ ------------
     1 CDB$ROOT     TEMP                 +DATA1/ORA19RS/TEMPFILE/temp.265.1214089055                                                         247
     2 PDB$SEED     TEMP                 +DATA1/ORA19RS/40BB407F722818D1E06329F0A8C04CFD/TEMPFILE/temp.269.1214089361                        211
     3 ORA19RSP1    TEMP                 +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/TEMPFILE/temp.278.1214089913                        211
     3 ORA19RSP1    TUNER_TEMP           +DATA1/ORA19RS/40BB61DA40640933E0632AF0A8C05571/TEMPFILE/tuner_temp.284.1214210175                  128

4 rows selected.

Elapsed: 00:00:00.01
--> 위와 같은 상황임

 

--결국 타켓 DB에 아래와 같이 템프 테이블 스페이스를 생성해줌
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ mkdir -pv /home/oracle/CLONEDB/tempfile
mkdir: created directory '/home/oracle/CLONEDB/tempfile'

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 23:11:10 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

--타켓 DB에 새로 tempfile을 생성함 (reuse 옵션을 빼기)
ALTER SESSION SET CONTAINER = "CDB$ROOT";
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/CLONEDB/tempfile/CDB_DOLLAR_ROOT_TEMP_1.dbf'
     SIZE 258998272  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = "PDB$SEED";
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/CLONEDB/tempfile/PDB_DOLLAR_SEED_TEMP_1.dbf'
     SIZE 221249536  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = "ORA19RSP1";
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/CLONEDB/tempfile/ORA19RSP1_TEMP_1.dbf'
     SIZE 221249536  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER TABLESPACE TUNER_TEMP ADD TEMPFILE '/home/oracle/CLONEDB/tempfile/ORA19RSP1_TUNER_TEMP_1.dbf'
     SIZE 134217728  AUTOEXTEND ON NEXT 104857600  MAXSIZE 32767M;
--> 생성 완료됨 확인함

 

[ol8ora19rs1]<SYS@CLONEDB>$ ALTER SESSION SET CONTAINER = "CDB$ROOT";

Session altered.

Elapsed: 00:00:00.01


[ol8ora19rs1]<SYS@CLONEDB>$ show con_name;

CON_NAME
------------------------------
CDB$ROOT


SET LINESIZE 220
SET PAGESIZE 100
COLUMN CON_ID           FORMAT 999  HEADING 'CON_ID'
COLUMN CON_NAME         FORMAT A12  HEADING 'CONTAINER'
COLUMN TABLESPACE_NAME  FORMAT A20  HEADING 'TEMP TABLESPACE'
COLUMN FILE_NAME        FORMAT A90  HEADING 'FILE NAME'
COLUMN SIZE_MB          FORMAT 999,999,999 HEADING 'SIZE(MB)'

SELECT c.con_id                     AS con_id
     , c.name                       AS con_name
     , ts.name                      AS tablespace_name
     , tf.name                      AS file_name
     , ROUND(tf.bytes/1024/1024)    AS size_mb
  FROM v$tempfile   tf
  JOIN v$tablespace ts
    ON ts.ts#    = tf.ts#
   AND ts.con_id = tf.con_id
  JOIN v$containers c
    ON c.con_id  = tf.con_id
 ORDER BY c.con_id
        , ts.name
        , tf.name;

CON_ID CONTAINER    TEMP TABLESPACE      FILE NAME                                                                                      SIZE(MB)
------ ------------ -------------------- ------------------------------------------------------------------------------------------ ------------
     1 CDB$ROOT     TEMP                 /home/oracle/CLONEDB/tempfile/CDB_DOLLAR_ROOT_TEMP_1.dbf                                            247
     2 PDB$SEED     TEMP                 /home/oracle/CLONEDB/tempfile/PDB_DOLLAR_SEED_TEMP_1.dbf                                            211
     3 ORA19RSP1    TEMP                 /home/oracle/CLONEDB/tempfile/ORA19RSP1_TEMP_1.dbf                                                  211
     3 ORA19RSP1    TUNER_TEMP           /home/oracle/CLONEDB/tempfile/ORA19RSP1_TUNER_TEMP_1.dbf                                            128

4 rows selected.

Elapsed: 00:00:00.02
--> 정상적으로 tempfile 이 생성된 것을 확인함

 

--> 지금부터 소스 DB에서 발생시킨 트랜잭션이 타켓 DB에도 정상적으로 적용된것인지 실제 데이터 확인
[ol8ora19rs1]<SYS@CLONEDB>$ show con_name

CON_NAME
------------------------------
CDB$ROOT

 

[ol8ora19rs1]<SYS@CLONEDB>$ select count(*) from sys.cdb_root_tran_test_01;

            COUNT(*)
--------------------
                1000

1 row selected.

Elapsed: 00:00:00.02

[ol8ora19rs1]<SYS@CLONEDB>$ alter session set container=ORA19RSP1;

Session altered.

Elapsed: 00:00:00.05

[ol8ora19rs1]<SYS@CLONEDB>$ show con_name

CON_NAME
------------------------------
ORA19RSP1

 

[ol8ora19rs1]<SYS@CLONEDB>$ select count(*) from sys.pdb_tran_test_01;

            COUNT(*)
--------------------
                1000

1 row selected.

Elapsed: 00:00:00.02

 

14. 타켓 DB에서 redo log thread 2는 필요 없으므로 제거 (타켓 DB는 Single DB인 상황임)

 

[ol8ora19rs1]<SYS@CLONEDB>$ alter session set container=CDB$ROOT;

Session altered.

Elapsed: 00:00:00.02

 

[ol8ora19rs1]<SYS@CLONEDB>$ show con_name

CON_NAME
------------------------------
CDB$ROOT


[ol8ora19rs1]<SYS@CLONEDB>$
COL STATUS FORMAT A10
COL ENABLED FORMAT A10
SELECT THREAD#, STATUS, ENABLED FROM V$THREAD;

THR STATUS     ENABLED
--- ---------- ----------
  1 OPEN       PUBLIC
  2 CLOSED     PUBLIC

2 rows selected.


[ol8ora19rs1]<SYS@CLONEDB>$ ALTER DATABASE DISABLE THREAD 2;

Database altered.


SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A80 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                                      STATUS     TYPE    SIZE(MB) STATUS     ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ -------------------------------------------------------------------------------- ---------- ------- -------- ---------- --- -------------------- --------------------
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_1.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_2.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     4   2      1 /home/oracle/CLONEDB/onlinelog_1/CLONEDB/onlinelog/o1_mf_4_nh9v8bh0_.log         (NULL)     ONLINE       100 INACTIVE   YES              5422524              5422708
     4   2      1 /home/oracle/CLONEDB/onlinelog_2/CLONEDB/onlinelog/o1_mf_4_nh9v8bl9_.log         (NULL)     ONLINE       100 INACTIVE   YES              5422524              5422708
     5   2      0 /home/oracle/CLONEDB/onlinelog_2/CLONEDB/onlinelog/o1_mf_5_nh9v8brp_.log         (NULL)     ONLINE       100 UNUSED     YES                    0                    0
     5   2      0 /home/oracle/CLONEDB/onlinelog_1/CLONEDB/onlinelog/o1_mf_5_nh9v8bol_.log         (NULL)     ONLINE       100 UNUSED     YES                    0                    0

10 rows selected.

Elapsed: 00:00:00.01


[ol8ora19rs1]<SYS@CLONEDB>$ ALTER DATABASE DROP LOGFILE GROUP 4;

[ol8ora19rs1]<SYS@CLONEDB>$ ALTER DATABASE DROP LOGFILE GROUP 5;

 

COL STATUS FORMAT A10
COL ENABLED FORMAT A10
SELECT THREAD#, STATUS, ENABLED FROM V$THREAD;

THR STATUS     ENABLED
--- ---------- ----------
  1 OPEN       PUBLIC

1 row selected.

Elapsed: 00:00:00.01

 

SET LINESIZE 220
SET PAGESIZE 100
SET NUMWIDTH 20
COLUMN GROUP#          FORMAT 999  HEADING 'GROUP#'
COLUMN THREAD#         FORMAT 99   HEADING 'THR'
COLUMN SEQUENCE#       FORMAT 99999 HEADING 'SEQ#'
COLUMN MEMBER           FORMAT A80 HEADING 'MEMBER (REDO LOG FILE PATH)'
COLUMN A.STATUS         FORMAT A10 HEADING 'FILE|STATUS'
COLUMN A.TYPE           FORMAT A5  HEADING 'TYPE'
COLUMN MB               FORMAT 9990 HEADING 'SIZE(MB)'
COLUMN B.STATUS         FORMAT A10 HEADING 'LOG|STATUS'
COLUMN B.ARCHIVED       FORMAT A9  HEADING 'ARCHIVED'
COLUMN B.FIRST_CHANGE#  FORMAT 999999999999 HEADING 'FIRST|CHANGE#'
COLUMN B.NEXT_CHANGE#   FORMAT 999999999999 HEADING 'NEXT|CHANGE#'

SELECT A.GROUP#
     , B.THREAD#
     , B.SEQUENCE#
     , A.MEMBER
     , A.STATUS
     , A.TYPE
     , B.BYTES/1024/1024 AS MB
     , B.STATUS
     , b.ARCHIVED
     , b.FIRST_CHANGE#
     , b.NEXT_CHANGE#
  FROM V$LOGFILE A
     , V$LOG B
 WHERE A.GROUP# = B.GROUP#
 ORDER BY A.GROUP#, B.THREAD#, B.SEQUENCE#
;

GROUP# THR   SEQ# MEMBER (REDO LOG FILE PATH)                                                      STATUS     TYPE    SIZE(MB) STATUS     ARC        FIRST_CHANGE#         NEXT_CHANGE#
------ --- ------ -------------------------------------------------------------------------------- ---------- ------- -------- ---------- --- -------------------- --------------------
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_1.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     1   1      1 /home/oracle/CLONEDB/onlinelog_1/group_1_2.LOG                                   (NULL)     ONLINE       200 CURRENT    NO               5422524  9295429630892703743
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     2   1      0 /home/oracle/CLONEDB/onlinelog_1/group_2_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_1.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0
     3   1      0 /home/oracle/CLONEDB/onlinelog_1/group_3_2.LOG                                   (NULL)     ONLINE       200 UNUSED     YES                    0                    0

6 rows selected.

Elapsed: 00:00:00.00


99. 작업 후 정리 (작업 전 상태로 원상 복구 하는 것임)

 

99-1. 소스 DB 정리

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ echo $ORACLE_SID
ORA19RS1
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 01:03:08 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@ORA19RS1>$ show con_name

CON_NAME
------------------------------
CDB$ROOT


[ol8ora19rs1]<SYS@ORA19RS1>$ drop table sys.cdb_root_tran_test_01 purge;

Table dropped.

Elapsed: 00:00:00.12
[ol8ora19rs1]<
SYS@ORA19RS1>$ alter session set container=ORA19RSP1;

Session altered.

Elapsed: 00:00:00.01
[ol8ora19rs1]<
SYS@ORA19RS1>$ drop table sys.pdb_tran_test_01 purge;

Table dropped.

Elapsed: 00:00:00.10

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ rm -rf ORA19RS_BACKUP

 

99-2. 타켓 DB 정리

 

[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ export ORACLE_SID=CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'

[CLONEDB:oracle@ol8ora19rs1][/home/oracle]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 19 01:03:57 2025
Version 19.28.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

[ol8ora19rs1]<SYS@CLONEDB>$ shutdown abort;
ORACLE instance shut down.


[CLONEDB:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ rm -rf /home/oracle/CLONEDB
[CLONEDB:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ rm -rf /u01/app/oracle/admin/CLONEDB/adump
[CLONEDB:oracle@ol8ora19rs1][/home/oracle/CLONEDB]$ rm -rf /u01/app/oracle/diag/rdbms/clonedb

[root@ol8ora19rs1][/root]$ rm -rf /u01/app/oracle/admin/CLONEDB

[root@ol8ora19rs1][/root]$ find /u01/app/oracle | grep -i clonedb \
  | grep -v /clonedb.pl \
  | grep -v cloneDBCreation1R.log \
  | grep -v cloneDBCreation.sql \
  | awk '{print "rm -rf \"" $0 "\""}'

--> 실전에서는 이런 식으로 파일 지우지 말것
--> 지우지 말던가 꼭 지울꺼면 파일 하나하나 해당 경로로 들어가서 확인하면서 돌다리 두들기면서 지울것
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/audit/CLONEDB_ora_4904_20251018130345956274982471.aud"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_4904.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_10179.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_4014.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_9337.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_1608.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_4072.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_4541.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_8413.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_9287.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_5819.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_9499.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_9377.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_5704.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/rdbms/log/clonedb_ora_6577.trc"
rm -rf "/u01/app/oracle/product/19c/db_1/dbs/hc_CLONEDB.dat"
rm -rf "/u01/app/oracle/product/19c/db_1/dbs/snapcf_CLONEDB.f"
rm -rf "/u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ufg_1181_CLONEDB_CLONEDB.trc"
rm -rf "/u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ufg_1181_CLONEDB_CLONEDB.trm"
rm -rf "/u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ufg_1315_CLONEDB_CLONEDB.trc"
rm -rf "/u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ufg_1315_CLONEDB_CLONEDB.trm"
rm -rf "/u01/app/oracle/audit/CLONEDB"
rm -rf "/u01/app/oracle/audit/CLONEDB/40BB61DA40640933E0632AF0A8C05571"
rm -rf "/u01/app/oracle/audit/CLONEDB/40BB407F722818D1E06329F0A8C04CFD"
rm -rf "/u01/app/oracle/audit/CLONEDB/40BB407F722818D1E06329F0A8C04CFD/ora_audit_0831.bin"

 

--삭제 확인. 결과가 안나와야함
[root@ol8ora19rs1][/root]$ find /u01/app/oracle | grep -i clonedb \
  | grep -v /clonedb.pl \
  | grep -v cloneDBCreation1R.log \
  | grep -v cloneDBCreation.sql \
  | awk '{print "rm -rf \"" $0 "\""}'

반응형

+ Recent posts