티스토리 뷰
2025-11-13 오전 10시에 발생한 특정 Table Truncate 상황 하에서
해당 Table을 복구한 과정을 까먹지 않기 위한 기록
이 기능 없었으면 대체 몇시간이 걸렸을지 감도 안잡힘.
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ DR (ADG Standby DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## DB STATUS 확인
SQL> SELECT OPEN_MODE,DATABASE_ROLE,FLASHBACK_ON FROM V$DATABASE;
OPEN_MODE DATABASE_ROLE FLASHBACK_ON
-------------------------- -------------------------- ------------------
READ ONLY WITH APPLY PHYSICAL STANDBY YES
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 운영 (Primary DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## Primary DB에서 Standby Database로 Redo Log 전송(Log Shipping)을 일시적으로 중단
ALTER SYSTEM SET log_archive_dest_state_2='DEFER' SCOPE=MEMORY SID='*';
## 2node RAC의 경우 양쪽 노드에서 결과 점검
SQL> show parameter log_archive_dest_state_2
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ DR (ADG Standby DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## 작업할 node#1만 startup 상태로 다른 모든 node DB Stop
## login node#2
SQL> shutdown immediate
## login node#1
## 이후 모든 작업은 node#1에서만 진행
## CANCEL THE RECOVERY PROCESS
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
## ADG standby DB에서 flashback을 하기 위하여 SNAPSHOT STANDBY로 전환해야 함
## SNAPSHOT STANDBY 전환
SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
SQL> ALTER DATABASE OPEN;
SQL> SELECT OPEN_MODE,DATABASE_ROLE FROM V$DATABASE;
OPEN_MODE DATABASE_ROLE
--------------------- -------------------------
READ WRITE SNAPSHOT STANDBY
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 운영 (Primary DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## 복구할 시점의 scn 조회 (primary DB 에서 조회할 것)
SQL> SELECT TIMESTAMP_TO_SCN(TO_TIMESTAMP('2019-11-12 08:43:54','YYYY-MM-DD HH24:MI:SS')) SCN FROM DUAL;
SCN
------------
900692541
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ DR (ADG Standby DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## FLASHBACK DATABASE
SQL> FLASHBACK DATABASE TO SCN 900692541;
SQL> ALTER DATABASE OPEN RESETLOGS;
============== 참고 Alert log (12c 버전 예) ===========================
$ tail -f $ORACLE_DIAG_BASE/rdbms/$ORACLE_DB_NAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log
FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2019-11-12 08:43:54','YYYY-MM-DD HH24:MI:SS')
2019-11-12T09:28:51.253191+08:00
Flashback Restore Start
2019-11-12T09:28:52.600931+08:00
Flashback Restore Complete
Flashback Media Recovery Start
2019-11-12T09:28:52.634199+08:00
Setting recovery target incarnation to 1
2019-11-12T09:28:52.652532+08:00
Started logmerger process
2019-11-12T09:28:52.943088+08:00
Parallel Media Recovery started with 8 slaves
Flashback Media Recovery Log /oraarch/SCGRID1DR/scgrid1dr_1_1457_1019315711.arc
Flashback Media Recovery Log /oraarch/SCGRID1DR/scgrid1dr_2_485_1019315711.arc
2019-11-12T09:28:53.510229+08:00
Incomplete Recovery applied until change 900692554 time 11/12/2019 08:43:55
2019-11-12T09:28:53.513155+08:00
Flashback Media Recovery Complete
2019-11-12T09:28:53.706739+08:00
Setting recovery target incarnation to 2
2019-11-12T09:28:53.766642+08:00
Completed: FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2019-11-12 08:43:54','YYYY-MM-DD HH24:MI:SS')
=========================================
## 복구 대상 Table expdp/impdp
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 운영 (Primary DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## standby DB 원복을 위한 Step
## Primary DB에서 Standby Database로 Redo Log 전송(Log Shipping)을 재시작
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';
## 2node RAC의 경우 양쪽 노드에서 결과 점검
SQL> show parameter log_archive_dest_state_2
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ DR (ADG Standby DB) Server
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
## standby DB 원복을 위한 Step
## Physical Standby 전환
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SQL> ALTER DATABASE OPEN;
## REDO APPLY
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
## DB STATUS 확인
SQL> SELECT OPEN_MODE,DATABASE_ROLE,FLASHBACK_ON FROM V$DATABASE;
OPEN_MODE DATABASE_ROLE FLASHBACK_ON
-------------------------- -------------------------- ------------------
READ ONLY WITH APPLY PHYSICAL STANDBY YES
############################
## Monitoring gap check
############################
## MRP Process 기동 여부 확인
SELECT inst_id, PROCESS, DELAY_MINS FROM gV$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%' OR PROCESS='RFS';
SELECT PROCESS, DELAY_MINS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%' OR PROCESS='RFS';
PROCESS DELAY_MINS
--------- ----------
RFS 0 -> DB Mount 되면 RFS (remote file server process)가 기동하여, redo data 및 archive log를 전송 받음.
RFS 0 -> DB Mount 되면 RFS (remote file server process)가 기동하여, redo data 및 archive log를 전송 받음.
MRP0 0 -> MRP 기동 상태 확인
## DATAGUARD_STATS
set lines 500
col name for a13
col value for a20
col unit for a30
SELECT NAME, VALUE, UNIT, TIME_COMPUTED
FROM V$DATAGUARD_STATS
WHERE NAME IN ('transport lag', 'apply lag');
NAME VALUE UNIT TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00 day(2) to second(0) interval 11/04/2019 15:32:31
apply lag +00 00:00:00 day(2) to second(0) interval 11/04/2019 15:32:31
## Redo Transfer 상태 확인 : Status가 VALID가 아니면 Redo Transfer에 문제가 발생한 것 이며, 문제 발생시 ERROR 컬럼의 값을 확인하여 조치
set line 200
col dest_id for a20
col destination for a20
col status for a10
col target for a10
col schedule for a10
col process for a10
col error for a50
select dest_id "ID",destination,status,target, schedule,process,error from v$archive_dest where rownum < 3;
ID DESTINATION STATUS TARGET SCHEDULE PROCESS ERROR
---------- -------------------- ---------- ---------- ----- ----- ---------- --------------------------------------------------
1 /oraarch/SCGRID1DR VALID LOCAL ACTIVE ARCH
2 SCGRID1DADG VALID REMOTE PENDING LGWR
'기술' 카테고리의 다른 글
| [IT] OS별 설치일자 확인 방법 (0) | 2023.03.14 |
|---|---|
| [Windows][Office][Outlook] 네트워크 요금제 경고 (0) | 2022.11.29 |
| [IT] SAN과 NAS의 차이점 (0) | 2022.05.03 |
| [ORACLE] 여러 테이블을 삭제하는 SQL 추출 방법 (0) | 2022.03.14 |
| [LINUX][CentOS][RHEL] OS Error Code 28: No space left of device (0) | 2022.02.07 |
- Total
- Today
- Yesterday
- NTP
- Bit
- yum
- OSS
- date
- 태그를 입력해 주세요.
- OS
- Redhat
- error
- query
- rhel
- db
- centos
- It
- Solaris
- version
- Linux
- MySQL
- cycle
- Recovery
- hostname
- Windows
- storage
- Size
- database
- centos7
- dbms
- aix
- cpu
- Java
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
