# 요약
  [문제1~2]
<< 시나리오 21 >> 모든 데이터파일, 컨트롤파일, 리두파일 손상. 아카이브파일만 남음
<< 시나리오 22 >> 백업한 control file 내용과 현재 data file 정보가 다른경우 복구
<< 시나리오 23 >> Time Base Recovery : 시간을 기준으로 데이터베이스 복구






###################################################################################################

# Restore : All cold_20240117

###################################################################################################

SQL> SHUTDOWN ABORT

! rm /home/oracle/arch1/*.*

! cp -av /home/oracle/backup/arch/cold_20240117/*.dbf /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240117/*.ctl /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240117/*.log /u01/app/oracle/oradata/ora11g/
*/

SQL> STARTUP

SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1166667
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1166667
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1166667
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1166667
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1166667


ALTER SYSTEM ARCHIVE LOG CURRENT;
--Thread 1 advanced to log sequence 2 (LGWR switch)
--  Current log# 2 seq# 2 mem# 0: /u01/app/oracle/oradata/ora11g/redo02.log


# Redo Log
SELECT thread#,sequence#,archived,status,first_change#,first_time,next_change#,next_time
FROM v$log;
   THREAD#  SEQUENCE# ARCHIVED  STATUS          FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
---------- ---------- --------- --------------- ------------- ----------- ------------ ---------
         1          1 YES       ACTIVE                1165188 17-JAN-24        1167018 19-JAN-24
         1          2 NO        CURRENT               1167018 19-JAN-24     2.8147E+14
         1          0 YES       UNUSED                      0                        0


# Archive Log
SELECT name,sequence#,first_change#,first_time,next_change#,next_time
FROM v$archived_log;
NAME                                             SEQUENCE# FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
----------------------------------------------- ---------- ------------- ----------- ------------ ---------
/home/oracle/arch1/arch_1_1_1158511351.arc               1       1165188 17-JAN-24        1167018 19-JAN-24

SQL> ! ls /home/oracle/arch*
arch_1_1_1158511351.arc





###################################################################################################
[문제1] user01.dbf, contro01.ctl 파일이 삭제된 경우 복구 수행해주세요.
###################################################################################################

SQL> ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 3 (LGWR switch)
--  Current log# 3 seq# 3 mem# 0: /u01/app/oracle/oradata/ora11g/redo03.log
--Archived Log entry 28 added for thread 1 sequence 2 ID 0xf7af1ec dest 1:

SQL> CREATE TABLE hr.emp_01 AS SELECT * FROM hr.employees WHERE department_id = 100;

SELECT COUNT(*) FROM hr.emp_01;
  COUNT(*)
----------
         6

SELECT e.segment_name,f.tablespace_name, f.file_name
FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id
AND e.owner = 'HR' AND e.segment_name = 'EMP_01';
SEGMENT_NAME           TABLESPACE_NAME FILE_NAME
---------------------- --------------- --------------------------------------------------
EMP_01                 USERS           /u01/app/oracle/oradata/ora11g/users01.dbf



# 장애 발생
! rm /u01/app/oracle/oradata/ora11g/users01.dbf
! rm /u01/app/oracle/oradata/ora11g/control01.ctl



SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.

--Thread 1 advanced to log sequence 4 (LGWR switch)
--  Current log# 1 seq# 4 mem# 0: /u01/app/oracle/oradata/ora11g/redo01.log

--Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_16299.trc:
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27037: unable to obtain file status
--Linux Error: 2: No such file or directory
--Additional information: 3

--Control file expansion from 594 blocks to 596 blocks denied by OS
--The following controlfile record is overwritten:
-- RECID #1 Recno 1 Record timestamp
-- Thread=1 Seq#=49
--  Flags:
-- <produced by archive operation>
-- <created by the ARCH process>
--  Resetlogs scn and time
--scn: 0x0000.0009b07a
--  filename /home/oracle/arch1/arch_1_49_1154915502.arc
--  Low
--scn: 0x0000.00117a2e
-- Next
--scn: 0x0000.0011804a
--  Block count=1680  Blocksize=512
--Archived Log entry 29 added for thread 1 sequence 3 ID 0xf7af1ec dest 1:

--Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_m000_16467.trc:
--ORA-00210: cannot open the specified control file
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27041: unable to open file
--Linux Error: 2: No such file or directory
--Additional information: 3


SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.

--Thread 1 advanced to log sequence 5 (LGWR switch)
--  Current log# 2 seq# 5 mem# 0: /u01/app/oracle/oradata/ora11g/redo02.log

--Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_arc0_16301.trc:
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27037: unable to obtain file status
--Linux Error: 2: No such file or directory
--Additional information: 3

--Control file expansion from 594 blocks to 596 blocks denied by OS
--The following controlfile record is overwritten:
-- RECID #2 Recno 2 Record timestamp
-- Thread=1 Seq#=49
--  Flags:
-- <produced by archive operation>
-- <created by the ARCH process>
--  Resetlogs scn and time
--scn: 0x0000.0009b07a
--  filename /home/oracle/arch2/arch_1_49_1154915502.arc
--  Low
--scn: 0x0000.00117a2e
-- 01/15/24 04:01:00
-- Next
--scn: 0x0000.0011804a
--  Block count=1680  Blocksize=512
--Archived Log entry 30 added for thread 1 sequence 4 ID 0xf7af1ec dest 1:

--Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_m000_16565.trc:
--ORA-00210: cannot open the specified control file
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27041: unable to open file
--Linux Error: 2: No such file or directory
--Additional information: 3


SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 mb, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;

ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3


SQL> ! ls /u01/app/oracle/oradata/ora11g/
data01.dbf  example01.dbf  insa_tbs01.dbf  redo01.log  redo02.log  redo03.log  
sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf


SQL> ! ls /home/oracle/arch*
arch_1_1_1158511351.arc  arch_1_2_1158511351.arc  arch_1_3_1158511351.arc  arch_1_4_1158511351.arc


SQL> SELECT status FROM v$instance;
STATUS
---------------
OPEN


SQL> SHUTDOWN ABORT


! cp -av /home/oracle/backup/arch/cold_20240117/users01.dbf /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240117/*.ctl /u01/app/oracle/oradata/ora11g/
*/


SQL> STARTUP MOUNT


SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1166664 generated at 01/17/2024 16:57:54 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_1_1158511351.arc
ORA-00280: change 1166664 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO

ORA-00279: change 1167236 generated at 01/19/2024 16:30:51 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_2_1158511351.arc
ORA-00280: change 1167236 for thread 1 is in sequence #2
ORA-00278: log file '/home/oracle/arch1/arch_1_1_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167402 generated at 01/19/2024 16:36:34 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_3_1158511351.arc
ORA-00280: change 1167402 for thread 1 is in sequence #3
ORA-00278: log file '/home/oracle/arch1/arch_1_2_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167451 generated at 01/19/2024 16:37:43 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_4_1158511351.arc
ORA-00280: change 1167451 for thread 1 is in sequence #4
ORA-00278: log file '/home/oracle/arch1/arch_1_3_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167669 generated at 01/19/2024 16:43:03 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167669 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/arch1/arch_1_4_1158511351.arc' no longer needed for this recovery

ORA-00308: cannot open archived log '/home/oracle/arch1/arch_1_5_1158511351.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3

>> seq#5 = current 상태 = 아카이브 미생성 = redo log file 적용


SQL> recover database using backup controlfile
ORA-00279: change 1167669 generated at 01/19/2024 16:43:03 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167669 for thread 1 is in sequence #5

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/ora11g/redo02.log

Log applied.
Media recovery complete.


SQL> ALTER DATABASE OPEN RESETLOGS;


SELECT COUNT(*) FROM hr.emp_01;
  COUNT(*)
----------
         6


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1168098
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1168098
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1168098
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1168098
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1168098


SELECT thread#,sequence#,archived,status,first_change#,first_time,next_change#,next_time
FROM v$log;
   THREAD#  SEQUENCE# ARCHIVED  STATUS          FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
---------- ---------- --------- --------------- ------------- ----------- ------------ ---------
         1          1 NO        CURRENT               1168095 19-JAN-24     2.8147E+14
         1          0 YES       UNUSED                      0                        0
         1          0 YES       UNUSED                      0                        0










###################################################################################################

# Restore : All cold_20240117

###################################################################################################

[문제2] user01.dbf, contro01.ctl, Inactive redo log 파일이 삭제된 경우 복구 수행해주세요.

###################################################################################################

SQL> CREATE TABLE hr.emp_19 AS SELECT * FROM hr.employees;

SELECT COUNT(*) FROM hr.emp_19;
  COUNT(*)
----------
       107

SELECT e.segment_name,f.tablespace_name, f.file_name 
FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id
AND e.segment_name = 'EMP_19' AND e.owner = 'HR';
SEGMENT_NAME           TABLESPACE_NAME FILE_NAME
---------------------- --------------- --------------------------------------------------
EMP_19                 USERS           /u01/app/oracle/oradata/ora11g/users01.dbf


ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 5 (LGWR switch)
--  Current log# 2 seq# 5 mem# 0: /u01/app/oracle/oradata/ora11g/redo02.log


SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 mb, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
    GROUP#  SEQUENCE# MEMBER                                                     MB ARCHIVED  STATUS
---------- ---------- -------------------------------------------------- ---------- --------- ---------------
         1          4 /u01/app/oracle/oradata/ora11g/redo01.log                  50 YES       INACTIVE
         2          5 /u01/app/oracle/oradata/ora11g/redo02.log                  50 NO        CURRENT
         3          3 /u01/app/oracle/oradata/ora11g/redo03.log                  50 YES       INACTIVE


# 장애 발생
! rm /u01/app/oracle/oradata/ora11g/users01.dbf
! rm /u01/app/oracle/oradata/ora11g/control01.ctl
! rm /u01/app/oracle/oradata/ora11g/redo01.log
! rm /u01/app/oracle/oradata/ora11g/redo03.log



SQL> ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 6 (LGWR switch)
--  Current log# 3 seq# 6 mem# 0: /u01/app/oracle/oradata/ora11g/redo03.log


SQL> SHUTDOWN IMMEDIATE
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3


 SQL> ! ls /u01/app/oracle/oradata/ora11g
data01.dbf  example01.dbf  insa_tbs01.dbf  redo02.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf


SQL> ! ls /home/oracle/arch1
arch_1_1_1158511351.arc  arch_1_2_1158511351.arc  arch_1_3_1158511351.arc  arch_1_4_1158511351.arc  
arch_1_5_1158511351.arc


SQL> SHUTDOWN ABORT


! cp -av /home/oracle/backup/arch/cold_20240117/*.ctl /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240117/users01.dbf /u01/app/oracle/oradata/ora11g/
*/


SQL> STARTUP MOUNT


SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1166664 generated at 01/17/2024 16:57:54 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_1_1158511351.arc
ORA-00280: change 1166664 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO

ORA-00279: change 1167018 generated at 01/19/2024 16:59:24 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_2_1158511351.arc
ORA-00280: change 1167018 for thread 1 is in sequence #2
ORA-00278: log file '/home/oracle/arch1/arch_1_1_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167423 generated at 01/19/2024 17:03:31 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_3_1158511351.arc
ORA-00280: change 1167423 for thread 1 is in sequence #3
ORA-00278: log file '/home/oracle/arch1/arch_1_2_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167443 generated at 01/19/2024 17:04:19 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_4_1158511351.arc
ORA-00280: change 1167443 for thread 1 is in sequence #4
ORA-00278: log file '/home/oracle/arch1/arch_1_3_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167448 generated at 01/19/2024 17:04:28 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167448 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/arch1/arch_1_4_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167678 generated at 01/19/2024 17:10:22 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_6_1158511351.arc
ORA-00280: change 1167678 for thread 1 is in sequence #6
ORA-00278: log file '/home/oracle/arch1/arch_1_5_1158511351.arc' no longer needed for this recovery

ORA-00308: cannot open archived log '/home/oracle/arch1/arch_1_6_1158511351.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3

>> seq#3 = redo03.log 인데 파일 삭제된 상태 = 복구불가


SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE
ORA-00279: change 1167678 generated at 01/19/2024 17:10:22 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_6_1158511351.arc
ORA-00280: change 1167678 for thread 1 is in sequence #6

17:19:39 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL

Media recovery cancelled.


SQL> ALTER DATABASE OPEN RESETLOGS;


SELECT COUNT(*) FROM hr.emp_19;

  COUNT(*)
----------
       107










###################################################################################################

# Restore : All cold_20240117

###################################################################################################

<< 시나리오 21 >> 모든 데이터파일, 컨트롤파일, 리두파일 손상. 아카이브파일만 남음

###################################################################################################

- 어쨌든 리두 파일 손상 
    > Restore : DataFile, ControlFile 
    > Recover : ArchiveLog 
    > Resetlogs


CREATE TABLE hr.new_20240119 AS SELECT * FROM hr.employees;

SELECT COUNT(*) FROM hr.new_20240119;
  COUNT(*)
----------
       107


ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 5 (LGWR switch)
--  Current log# 2 seq# 5 mem# 0: /u01/app/oracle/oradata/ora11g/redo02.log



# 장애발생
! rm /u01/app/oracle/oradata/ora11g/*.dbf
! rm /u01/app/oracle/oradata/ora11g/*.ctl
! rm /u01/app/oracle/oradata/ora11g/*.log
*/



SQL> conn hr/hr
ORA-00604: error occurred at recursive SQL level 2
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/app/oracle/oradata/ora11g/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

Warning: You are no longer connected to ORACLE.

--Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_m000_12518.trc:
--ORA-00210: cannot open the specified control file
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27041: unable to open file
--Linux Error: 2: No such file or directory
--Additional information: 3


SQL> SELECT status FROM v$instance;
SP2-0640: Not connected


SQL> conn / as sysdba


SQL> shutdown abort


! cp -av /home/oracle/backup/arch/cold_20240117/*.dbf /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240117/*.ctl /u01/app/oracle/oradata/ora11g/
*/


SQL> startup mount


SQL> recover database until cancel using backup controlfile
ORA-00279: change 1166664 generated at 01/17/2024 16:57:54 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_1_1158511351.arc
ORA-00280: change 1166664 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO

ORA-00279: change 1167008 generated at 01/19/2024 17:26:03 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_2_1158511351.arc
ORA-00280: change 1167008 for thread 1 is in sequence #2
ORA-00278: log file '/home/oracle/arch1/arch_1_1_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167301 generated at 01/19/2024 17:28:20 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_3_1158511351.arc
ORA-00280: change 1167301 for thread 1 is in sequence #3
ORA-00278: log file '/home/oracle/arch1/arch_1_2_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167305 generated at 01/19/2024 17:28:23 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_4_1158511351.arc
ORA-00280: change 1167305 for thread 1 is in sequence #4
ORA-00278: log file '/home/oracle/arch1/arch_1_3_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167308 generated at 01/19/2024 17:28:27 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167308 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/arch1/arch_1_4_1158511351.arc' no longer needed for this recovery

ORA-00308: cannot open archived log '/home/oracle/arch1/arch_1_5_1158511351.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> recover database until cancel using backup controlfile
ORA-00279: change 1167308 generated at 01/19/2024 17:28:27 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167308 for thread 1 is in sequence #5

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL

Media recovery cancelled.


SQL> ALTER DATABASE OPEN RESETLOGS;

--...
--Clearing online redo logfile 1 /u01/app/oracle/oradata/ora11g/redo01.log
--Clearing online log 1 of thread 1 sequence number 1
--Clearing online redo logfile 1 complete
--Online log /u01/app/oracle/oradata/ora11g/redo01.log: Thread 1 Group 1 was previously cleared
--...
--Thread 1 opened at log sequence 1
--  Current log# 1 seq# 1 mem# 0: /u01/app/oracle/oradata/ora11g/redo01.log
--...


SQL> ! ls /u01/app/oracle/oradata/ora11g/
control01.ctl  example01.dbf  redo01.log  redo02.log  redo03.log  
sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf


select count(*) from hr.new_20240119;
  COUNT(*)
----------
       107










###################################################################################################

# Restore : All cold_20240117

###################################################################################################

<< 시나리오 22 >> 백업한 control file 내용과 현재 data file 정보가 다른경우 복구

###################################################################################################

- 백업 이후 테이블스페이스 및 데이터파일의 추가 삭제 등 정보가 변경된 경우
> cp ctl
> db mount
> recovery > current redo log file 적용 > 변경된 datafile 오류 발생
> controlfile to trace 또는 v$datafile 여기서 깨진 파일 주소 체크 > rename
> v$datafile 수정여부 체크
> recovery > current redo log file 다시 적용
> DB open


참고) 시나리오 17 : 테이블스페이스 및 데이터파일의 추가 삭제 등 정보 변경이 없을 경우
> cp ctl > db mount > controlfile to trace > db open > add tempfile



CREATE TABLE hr.emp_20 AS SELECT * FROM hr.employees WHERE department_id = 20;

SELECT COUNT(*) FROM hr.emp_20;
  COUNT(*)
----------
         2

alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
--Thread 1 advanced to log sequence 5 (LGWR switch)
--  Current log# 2 seq# 5 mem# 0: /u01/app/oracle/oradata/ora11g/redo02.log


SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 mb, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
    GROUP#  SEQUENCE# MEMBER                                                     MB ARCHIVED  STATUS
---------- ---------- -------------------------------------------------- ---------- --------- ---------------
         1          4 /u01/app/oracle/oradata/ora11g/redo01.log                  50 YES       INACTIVE
         2          5 /u01/app/oracle/oradata/ora11g/redo02.log                  50 NO        CURRENT
         3          3 /u01/app/oracle/oradata/ora11g/redo03.log                  50 YES       INACTIVE


SELECT name,sequence#,first_change#,first_time,next_change#,next_time
FROM v$archived_log;
NAME                                             SEQUENCE# FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
----------------------------------------------- ---------- ------------- ----------- ------------ ---------
/home/oracle/arch1/arch_1_1_1158511351.arc               1       1165188 17-JAN-24        1167009 19-JAN-24
/home/oracle/arch1/arch_1_2_1158511351.arc               2       1167009 19-JAN-24        1167311 19-JAN-24
/home/oracle/arch1/arch_1_3_1158511351.arc               3       1167311 19-JAN-24        1167314 19-JAN-24
/home/oracle/arch1/arch_1_4_1158511351.arc               4       1167314 19-JAN-24        1167317 19-JAN-24


SQL> ! ls /home/oracle/arch1
arch_1_1_1158511351.arc  arch_1_2_1158511351.arc  arch_1_3_1158511351.arc  arch_1_4_1158511351.arc


CREATE TABLESPACE data_tbs
    DATAFILE '/u01/app/oracle/oradata/ora11g/data01.dbf' SIZE 5M
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
    SEGMENT SPACE MANAGEMENT AUTO;


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1167317
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1167317
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1167317
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1167317
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1167317
         6 /u01/app/oracle/oradata/ora11g/data01.dbf          DATA_TBS   ONLINE                     1167366


ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 6 (LGWR switch)
--  Current log# 3 seq# 6 mem# 0: /u01/app/oracle/oradata/ora11g/redo03.log


CREATE TABLE hr.emp_50 TABLESPACE data_tbs
    AS SELECT * FROM hr.employees WHERE department_id = 20;


SELECT COUNT(*) FROM hr.emp_50;
  COUNT(*)
----------
         2


SELECT e.segment_name,f.tablespace_name, f.file_name
FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id
AND e.owner = 'HR' AND e.segment_name IN ('EMP_20','EMP_50');

SEGMENT_NAME           TABLESPACE_NAME FILE_NAME
---------------------- --------------- --------------------------------------------------
EMP_20                 USERS           /u01/app/oracle/oradata/ora11g/users01.dbf
EMP_50                 DATA_TBS        /u01/app/oracle/oradata/ora11g/data01.dbf


# DB 작업 중 정상 종료
SQL> SHUTDOWN IMMEDIATE
 


# 장애 발생
! rm /u01/app/oracle/oradata/ora11g/control01.ctl



SQL> STARTUP
ORACLE instance started.
ORA-00205: error in identifying control file, check alert log for more info

--...
--ORA-00210: cannot open the specified control file
--ORA-00202: control file: '/u01/app/oracle/oradata/ora11g/control01.ctl'
--ORA-27037: unable to obtain file status
--Linux Error: 2: No such file or directory
--Additional information: 3
--ORA-205 signalled during: ALTER DATABASE   MOUNT...


SQL> SELECT status FROM v$instance;

STATUS
---------------
STARTED


SQL> SHUTDOWN ABORT


SQL> ! ls /u01/app/oracle/oradata/ora11g/
data01.dbf  example01.dbf  redo01.log  redo02.log  redo03.log  sysaux01.dbf  
system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf


# Restore
! cp -av /home/oracle/backup/arch/cold_20240117/*.ctl /u01/app/oracle/oradata/ora11g/
*/


SQL> STARTUP MOUNT


SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1166664 generated at 01/17/2024 16:42:31 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_1_1158511351.arc
ORA-00280: change 1166664 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO

ORA-00279: change 1167009 generated at 01/19/2024 18:00:00 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_2_1158511351.arc
ORA-00280: change 1167009 for thread 1 is in sequence #2
ORA-00278: log file '/home/oracle/arch1/arch_1_1_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167311 generated at 01/19/2024 18:01:13 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_3_1158511351.arc
ORA-00280: change 1167311 for thread 1 is in sequence #3
ORA-00278: log file '/home/oracle/arch1/arch_1_2_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167314 generated at 01/19/2024 18:01:16 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_4_1158511351.arc
ORA-00280: change 1167314 for thread 1 is in sequence #4
ORA-00278: log file '/home/oracle/arch1/arch_1_3_1158511351.arc' no longer needed for this recovery

ORA-00279: change 1167317 generated at 01/19/2024 18:01:19 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167317 for thread 1 is in sequence #5
ORA-00278: log file '/home/oracle/arch1/arch_1_4_1158511351.arc' no longer needed for this recovery

ORA-00283: recovery session canceled due to errors
ORA-01244: unnamed datafile(s) added to control file by media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/ora11g/data01.dbf'

ORA-01112: media recovery not started

>> 오류로 인해 복구 세션이 취소되었습니다.
>> 미디어 복구에 의해 제어 파일에 명명되지 않은 데이터 파일이 추가되었습니다
>> 미디어 복구가 시작되지 않았습니다

>> Recovoery 시도 후에 확인가능하다.
>> 6번 DataFile에 대한 Control File 정보와 Data File 정보가 달라 발생 > Data File을 확인해보자

방법 1. v$datafile
SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1166664
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1166664
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1166664
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1166664
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1166664
         6 /u01/app/oracle/product/11.2.0.4/db_1/dbs/UNNAMED0 DATA_TBS   RECOVER                    1167365
           0006

방법 2. ControlFile To Trace
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/home/oracle/20240119.spl';

SQL> ! vi /home/oracle/20240119.spl

Set #1. NORESETLOGS case > DATAFILE 목록


'/u01/app/oracle/product/11.2.0.4/db_1/dbs/UNNAMED00006'

>> 컨트롤 파일이 가지고 있는 Data File 6 의 정보 > Rename


ALTER DATABASE RENAME FILE '/u01/app/oracle/product/11.2.0.4/db_1/dbs/UNNAMED00006'
                        TO '/u01/app/oracle/oradata/ora11g/data01.dbf';


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1166664
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1166664
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1166664
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1166664
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1166664
         6 /u01/app/oracle/oradata/ora11g/data01.dbf          DATA_TBS   RECOVER                    1167365


# 다시 recover 시도
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1167367 generated at 01/19/2024 18:02:17 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_5_1158511351.arc
ORA-00280: change 1167367 for thread 1 is in sequence #5

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO

ORA-00279: change 1167637 generated at 01/19/2024 18:02:37 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_6_1158511351.arc
ORA-00280: change 1167637 for thread 1 is in sequence #6
ORA-00278: log file '/home/oracle/arch1/arch_1_5_1158511351.arc' no longer needed for this recovery

ORA-00308: cannot open archived log '/home/oracle/arch1/arch_1_6_1158511351.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3


SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 1167637 generated at 01/19/2024 18:02:37 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch1/arch_1_6_1158511351.arc
ORA-00280: change 1167637 for thread 1 is in sequence #6

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/ora11g/redo03.log

Log applied.
Media recovery complete.


SQL> ALTER DATABASE OPEN RESETLOGS;


SELECT e.segment_name,f.tablespace_name, f.file_name
FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id
AND e.owner = 'HR' AND e.segment_name IN ('EMP_20','EMP_50');
SEGMENT_NAME           TABLESPACE_NAME FILE_NAME
---------------------- --------------- --------------------------------------------------
EMP_20                 USERS           /u01/app/oracle/oradata/ora11g/users01.dbf
EMP_50                 DATA_TBS        /u01/app/oracle/oradata/ora11g/data01.dbf


> Trace로 복구한게 아니니 Temp File은 정상










###################################################################################################

# Restore : All cold_20240117

###################################################################################################

<< 시나리오 23 >> Time Base Recovery : 시간을 기준으로 데이터베이스 복구

###################################################################################################

CREATE TABLESPACE insa_tbs
    DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' SIZE 10M
    AUTOEXTEND ON NEXT 1M MAXSIZE 20M
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
    SEGMENT SPACE MANAGEMENT AUTO;


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1197967
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1197967
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1197967
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1197967
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1197967
         6 /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf      INSA_TBS   ONLINE                     1201982


>> DB구조 변경되었다면 > 백업하자
                     > controlfile to trace 만들어놓자


Fri Jan 19 18:32:35 2024
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/home/oracle/control_20240119.spl';


##### Cold Backup 20240119

SQL> ! mkdir -p /home/oracle/backup/arch/cold_20240119

SELECT thread#,sequence#,archived,status,first_change#,first_time,next_change#,next_time
FROM v$log;
   THREAD#  SEQUENCE# ARCHIVED  STATUS          FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
---------- ---------- --------- --------------- ------------- ----------- ------------ ---------
         1          1 YES       ACTIVE                1165188 17-JAN-24        1167000 19-JAN-24
         1          2 NO        CURRENT               1167000 19-JAN-24     2.8147E+14
         1          0 YES       UNUSED                      0                        0


SQL> SHUTDOWN IMMEDIATE


Fri Jan 19 18:34:38 2024
! cp -av /u01/app/oracle/oradata/ora11g/*.dbf /home/oracle/backup/arch/cold_20240119/
! cp -av /u01/app/oracle/oradata/ora11g/*.ctl /home/oracle/backup/arch/cold_20240119/
! cp -av /u01/app/oracle/oradata/ora11g/*.log /home/oracle/backup/arch/cold_20240119/
*/

SQL> ! ls /home/oracle/backup/arch/cold_20240119/
control01.ctl  data01.dbf  example01.dbf  initora11g_20240119.ora  insa_tbs01.dbf  
redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf


SQL> STARTUP


Fri Jan 19 18:35:50 2024
CREATE PFILE ='/home/oracle/backup/arch/cold_20240119/initora11g_20240119.ora' FROM SPFILE;


SQL> ALTER SYSTEM SWITCH LOGFILE;
--Thread 1 advanced to log sequence 3 (LGWR switch)
--  Current log# 3 seq# 3 mem# 0: /u01/app/oracle/oradata/ora11g/redo03.log


SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 mb, b.archived, b.status
FROM v$logfile a, v$log b WHERE a.group# = b.group# ORDER BY 1;
    GROUP#  SEQUENCE# MEMBER                                                     MB ARCHIVED  STATUS
---------- ---------- -------------------------------------------------- ---------- --------- ---------------
         1          1 /u01/app/oracle/oradata/ora11g/redo01.log                  50 YES       INACTIVE
         2          2 /u01/app/oracle/oradata/ora11g/redo02.log                  50 YES       ACTIVE
         3          3 /u01/app/oracle/oradata/ora11g/redo03.log                  50 NO        CURRENT


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1167875
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1167875
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1167875
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1167875
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1167875
         6 /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf      INSA_TBS   ONLINE                     1167875


SELECT thread#,sequence#,archived,status,first_change#,first_time,next_change#,next_time
FROM v$log;
   THREAD#  SEQUENCE# ARCHIVED  STATUS          FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
---------- ---------- --------- --------------- ------------- ----------- ------------ ---------
         1          1 YES       INACTIVE              1165188 17-JAN-24        1167000 19-JAN-24
         1          2 YES       ACTIVE                1167000 19-JAN-24        1168190 19-JAN-24
         1          3 NO        CURRENT               1168190 19-JAN-24     2.8147E+14


SELECT name,sequence#,first_change#,first_time,next_change#,next_time
FROM v$archived_log;
NAME                                             SEQUENCE# FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME
----------------------------------------------- ---------- ------------- ----------- ------------ ---------
/home/oracle/arch1/arch_1_1_1158511351.arc               1       1165188 17-JAN-24        1167000 19-JAN-24
/home/oracle/arch1/arch_1_2_1158511351.arc               2       1167000 19-JAN-24        1168190 19-JAN-24


SQL> ! ls /home/oracle/arch1/
arch_1_1_1158511351.arc  arch_1_2_1158511351.arc


########## Backup Completed.



# 장애 발생 : 운영 테이블스페이스를 삭제해버렸다
Fri Jan 19 18:38:04 2024
SQL> DROP TABLESPACE insa_tbs including contents and datafiles;



SQL> CREATE TABLE hr.emp_60 AS SELECT * FROM hr.employees WHERE department_id = 60;


SQL> SELECT COUNT(*) from hr.emp_60;
  COUNT(*)
----------
         5


SELECT e.segment_name,f.tablespace_name, f.file_name
FROM dba_extents e, dba_data_files f WHERE f.file_id = e.file_id
AND e.owner = 'HR' AND e.segment_name = 'EMP_60';
SEGMENT_NAME           TABLESPACE_NAME FILE_NAME
---------------------- --------------- --------------------------------------------------
EMP_60                 USERS           /u01/app/oracle/oradata/ora11g/users01.dbf


SQL> SHUTDOWN IMMEDIATE


# Restore : All data file + control file
! cp -av /home/oracle/backup/arch/cold_20240119/*.dbf /u01/app/oracle/oradata/ora11g/
! cp -av /home/oracle/backup/arch/cold_20240119/*.ctl /u01/app/oracle/oradata/ora11g/
*/


SQL> ! ls /u01/app/oracle/oradata/ora11g/
control01.ctl  data01.dbf  example01.dbf  insa_tbs01.dbf  redo01.log  redo02.log  redo03.log  
sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf


SQL> STARTUP MOUNT


# 작업 쉽게하기위해 세션레벨에서 날짜 포멧 변경
SQL> ALTER SESSION SET nls_date_format = 'yyyy-mm-dd hh24:mi:ss';


# 시간을 기준으로 복구하자
SQL> RECOVER DATABASE UNTIL TIME '2024-01-19 18:37:00'

-- alert log
--Fri Jan 19 18:38:04 2024
--DROP TABLESPACE insa_tbs including contents and datafiles
--Deleted file /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf
--Completed: DROP TABLESPACE insa_tbs including contents and datafiles

> 복구하고자 하는 작업시각보다 좀 더 앞에서 복구한다.
> 해당 시간에 해당하는 아카이브가 있어야 한다.


SQL> ALTER DATABASE OPEN RESETLOGS;


SELECT a.file#, a.name file_name, b.name tbs_name, a.status, a.checkpoint_change#
FROM v$datafile a, v$tablespace b
WHERE a.ts# = b.ts#;
     FILE# FILE_NAME                                          TBS_NAME   STATUS          CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ---------- --------------- ------------------
         1 /u01/app/oracle/oradata/ora11g/system01.dbf        SYSTEM     SYSTEM                     1167876
         2 /u01/app/oracle/oradata/ora11g/sysaux01.dbf        SYSAUX     ONLINE                     1167876
         3 /u01/app/oracle/oradata/ora11g/undotbs01.dbf       UNDOTBS    ONLINE                     1167876
         4 /u01/app/oracle/oradata/ora11g/users01.dbf         USERS      ONLINE                     1167876
         5 /u01/app/oracle/oradata/ora11g/example01.dbf       EXAMPLE    ONLINE                     1167876
         6 /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf      INSA_TBS   ONLINE                     1167876


SELECT COUNT(*) from hr.emp_60;
ORA-00942: table or view does not exist



> Alert Log
    - Tablespace Level 이상의 기록이 있다.
    - Segment Level의 기록은 여기에 없다. > 작업 수행 시 Redo Log 생성 > 로그마이너 이용 > 다음시간에 ...

> Time Base Recovery
    - 절대 운영DB에서 복구하지 않는다.
        - 복제DB에서 복구 > 복제DB에서 DataFile Export > 기존DB에 Import
    - TABLESPACE 변경
    - DROP, TRUNCATE 
    - DML
    - 단, 복구 시간 이후에 작업한 내용은 삭제된다.
    - Open Resetlogs 수행 > 이전 백업본으로 부분백업 불가하다




> 다음 TEST를 위해 Restore : All cold_20240117

* 작업소요시간 체크하기
** RESETLOGS 적용 > 즉시 백업
     > 과거 백업본으로는 더 이상의 부분복구를 할 수 없다.
     > 과거 백업본은 운영정책에 따라 별도 보관한다.