문서유형ㅣ기술정보
분야ㅣ백업/복구
적용제품버전ㅣTibero7
문서번호ㅣTBATI040
개요
본 문서는 TAC 환경에서 특정 데이터 파일 문제 또는 손실됐을 경우, 백업본을 통해 임시 구축 (SINGLE) 후, 빠르게 복구하는 방법을 목적으로 기술한 문서이며, 단, 임시 구축한 SINGLE 환경을 추후 운영을 목적으로 사용하는 것을 권고하지 않습니다.
테스트 환경
OS 버전 : Rocky Linux 8.10 (Green Obsidian) Tibero 버전 : Tibero7 (DB7.2.4) Build 303667 AS-IS Tibero 구성 : 2Node TAC (Raw-Device) TO-BE Tibero 구성 : SINGLE
방법
사전 준비
- 임시 TO-BE 서버 (SINGLE 구축)
TO-BE 서버 구축 시, 주의 사항
- Hostname, OS Profile 설정을 AS-IS와 동일하게 설정합니다.
- AS-IS 서버 내 Tibero 엔진을 압축하여 TO-BE로 복사합니다.
- 엔진 압축을 해제합니다. ( ※ 단 DB는 생성하지 않습니다. )
- tip 파일 내 컨트롤, 데이터 파일 경로를 재지정합니다. (raw->filesystem)
- tbcm를 등록합니다.
-- TO-BE 엔진 압축 해제
[t7_1]tibero7@tibero_raw:/home/tibero7/tibero_engine> tar -xvf tibero7.tar.gz
tibero7/
tibero7/nls/
tibero7/nls/zoneinfo/
tibero7/nls/zoneinfo/timezone_be.dat
tibero7/nls/zoneinfo/timezone_le.dat
tibero7/client/
.. 중략
-- 컨트롤, 데이터 파일 경로 재지정 (raw->filesystem)
CONTROL_FILES="/home/tibero7/tibero_data/t7_1/control/c1.ctl","/home/tibero7/tibero_redo/t7_1/control/c2.ctl"
DB_CREATE_FILE_DEST="/home/tibero7/tibero_data/t7_1/data"
.. 중략
-- CM 등록
[t7_1]tibero7@tibero_raw:/home/tibero7> cmrctl show
Resource List of Node cm1
=====================================================================
CLUSTER TYPE NAME STATUS DETAIL
----------- -------- -------------- -------- ------------------------
COMMON network t7_int UP (private) 192.168.29.105/8651
COMMON cluster t7_cls UP inc: t7_int, pub: N/A
t7_cls file t7_cls:0 UP /home/tibero7/tibero_engine/tbcm.log
t7_cls service t7 DOWN Database, Active Cluster (auto-restart: OFF)
t7_cls db t7_1 DOWN t7, /home/tibero7/tibero_engine/tibero7, failed retry cnt: 0
=====================================================================수행 시나리오
1. 특정 데이터 파일 손상 가정
SQL> col file_name for a30
SQL> col tablespace_name for a20
SQL> select file_name, tablespace_name, sum(bytes/1024/1024) as MB
from dba_data_files
group by file_name, tablespace_name
order by 1,2;
FILE_NAME TABLESPACE_NAME MB
------------------------------ -------------------- ----------
/dev/raw/raw17 SYSTEM 500
/dev/raw/raw18 USR 500
/dev/raw/raw19 UNDO0 500
/dev/raw/raw20 UNDO1 500
/dev/raw/raw24 SYSSUB 500
/dev/raw/raw25 TEST 500 -- 데이터 파일 손상 가정
/dev/raw/raw26 TEST 500 -- 데이터 파일 손상 가정
/dev/raw/raw27 BACKUP 500
8 rows selected.
2. TAC (Raw-Device 구성) 온라인 백업
-- db 백업 alter database begin backup; !dd if=/dev/raw/raw17 bs=128M iflag=direct oflag=direct of=/home/tibero7/system001.dtf bs=128M status=progress !dd if=/dev/raw/raw18 bs=128M iflag=direct oflag=direct of=/home/tibero7/usr001.dtf bs=128M status=progress !dd if=/dev/raw/raw19 bs=128M iflag=direct oflag=direct of=/home/tibero7/undo001.dtf bs=128M status=progress !dd if=/dev/raw/raw20 bs=128M iflag=direct oflag=direct of=/home/tibero7/undo002.dtf bs=128M status=progress !dd if=/dev/raw/raw22 bs=128M iflag=direct oflag=direct of=/home/tibero7/data001.dtf bs=128M status=progress !dd if=/dev/raw/raw23 bs=128M iflag=direct oflag=direct of=/home/tibero7/data002.dtf bs=128M status=progress !dd if=/dev/raw/raw24 bs=128M iflag=direct oflag=direct of=/home/tibero7/syssub001.dtf bs=128M status=progress !dd if=/dev/raw/raw25 bs=128M iflag=direct oflag=direct of=/home/tibero7/test001.dtf bs=128M status=progress !dd if=/dev/raw/raw26 bs=128M iflag=direct oflag=direct of=/home/tibero7/test002.dtf bs=128M status=progress !dd if=/dev/raw/raw27 bs=128M iflag=direct oflag=direct of=/home/tibero7/backup001.dtf bs=128M status=progress alter database end backup; alter system switch logfile; alter system switch logfile; alter system switch logfile; alter system switch logfile; alter system switch logfile; alter system checkpoint; SQL> alter database backup controlfile to trace as '/home/tibero7/reset.sql' resetlogs; Database altered.
3. 백업본 및 모든 노드 아카이브 파일 TO-BE 서버로 복사
-- 백업본 TO-BE 서버로 SCP [t7_1]tibero7@tibero_raw:/home/tibero7> scp ./*.dtf *.sql root@192.168.29.105:/home/tibero7 The authenticity of host '192.168.29.105 (192.168.29.105)' can't be established. ECDSA key fingerprint is SHA256:X1dZuXKK781n1qhXT7zPo/tAnYUL4AxmGN9ywX3sy/w. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.29.105' (ECDSA) to the list of known hosts. root@192.168.29.105's password: backup001.dtf 100% 500MB 176.7MB/s 00:02 data001.dtf 100% 500MB 166.4MB/s 00:03 data002.dtf 100% 500MB 169.5MB/s 00:02 syssub001.dtf 100% 500MB 166.7MB/s 00:02 system001.dtf 100% 500MB 159.5MB/s 00:03 test001.dtf 100% 1000MB 124.5MB/s 00:08 test002.dtf 100% 500MB 123.7MB/s 00:04 undo001.dtf 100% 500MB 117.3MB/s 00:04 undo002.dtf 100% 500MB 116.8MB/s 00:04 usr001.dtf 100% 500MB 119.4MB/s 00:04 reset.sql 100% 4403 2.5MB/s 00:00 -- 1번 노드 아카이브 파일 TO-BE 서버로 SCP [t7_1]tibero7@tibero_raw:/home/tibero7/tibero_arch/t7/t7_1/arch> scp ./*.arc root@192.168.29.105:/home/tibero7/tibero_arch/t7/t7_1/arch/ root@192.168.29.105's password: log-t0-r0-s12.arc 100% 512 484.1KB/s 00:00 log-t0-r0-s13.arc 100% 40KB 19.8MB/s 00:00 log-t0-r0-s14.arc 100% 320KB 39.5MB/s 00:00 log-t0-r0-s15.arc 100% 6389KB 58.8MB/s 00:00 log-t0-r0-s16.arc 100% 164KB 54.6MB/s 00:00 log-t0-r0-s17.arc 100% 100MB 163.2MB/s 00:00 log-t0-r0-s18.arc 100% 89MB 176.5MB/s 00:00 log-t0-r0-s19.arc 100% 512 216.7KB/s 00:00 log-t0-r0-s20.arc 100% 1024 1.2MB/s 00:00 log-t0-r0-s21.arc 100% 512 745.3KB/s 00:00 log-t0-r0-s22.arc 100% 512 748.9KB/s 00:00 -- 2번 노드 아카이브 파일 TO-BE 서버로 SCP [t7_2]tibero7@tibero_raw:/home/tibero7/tibero_arch/t7/t7_2/arch> scp ./*.arc root@192.168.29.105:/home/tibero7/tibero_arch/t7/t7_1/arch/ root@192.168.29.105's password: log-t1-r0-s7.arc 100% 512 563.4KB/s 00:00 log-t1-r0-s8.arc 100% 512 1.7MB/s 00:00 log-t1-r0-s9.arc 100% 30KB 53.4MB/s 00:00 log-t1-r0-s10.arc 100% 179KB 72.2MB/s 00:00 log-t1-r0-s11.arc 100% 3072 5.9MB/s 00:00 log-t1-r0-s12.arc 100% 95MB 159.5MB/s 00:00 log-t1-r0-s13.arc 100% 512 449.6KB/s 00:00 log-t1-r0-s14.arc 100% 512 954.0KB/s 00:00 log-t1-r0-s15.arc 100% 512 1.5MB/s 00:00 log-t1-r0-s16.arc 100% 512 1.5MB/s 00:00
4. Single노드 컨트롤 파일 재생성
ㄴ 손상된 데이터 파일 제거
ㄴ UNDO 테이블 스페이스는 노드 상관없이 반드시 포함
-- 컨트롤 파일 경로 수정
CREATE CONTROLFILE REUSE DATABASE "t7"
LOGFILE
-- Thread #0
GROUP 0 (
'/home/tibero7/tibero_redo/t7_1/redo/redo001.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo002.redo'
) SIZE 100M,
GROUP 1 (
'/home/tibero7/tibero_redo/t7_1/redo/redo011.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo012.redo'
) SIZE 100M,
GROUP 2 (
'/home/tibero7/tibero_redo/t7_1/redo/redo021.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo022.redo'
) SIZE 100M
RESETLOGS
DATAFILE
'/home/tibero7/tibero_data/t7_1/data/system001.dtf',
'/home/tibero7/tibero_data/t7_1/data/undo001.dtf',
'/home/tibero7/tibero_data/t7_1/data/usr001.dtf',
'/home/tibero7/tibero_data/t7_1/data/syssub001.dtf',
'/home/tibero7/tibero_data/t7_1/data/undo002.dtf',
--'/home/tibero7/tibero_data/t7_1/data/test001.dtf', -- 해당 데이터 파일 제거 또는 주석
--'/home/tibero7/tibero_data/t7_1/data/test002.dtf', -- 해당 데이터 파일 제거 또는 주석
'/home/tibero7/tibero_data/t7_1/data/backup001.dtf'
..중략
-- nomount 기동 후, 컨트롤 파일 재생성
SQL> @reset.sql
Control File created.
-- thread 1의 리두 그룹 추가 및 thread1 활성화
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 10 (
'/home/tibero7/tibero_redo/t7_1/redo/redo031.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo032.redo'
) SIZE 100M reuse ;
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 11 (
'/home/tibero7/tibero_redo/t7_1/redo/redo041.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo042.redo'
) SIZE 100M reuse ;
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 12 (
'/home/tibero7/tibero_redo/t7_1/redo/redo051.redo',
'/home/tibero7/tibero_redo/t7_1/redo/redo052.redo'
) SIZE 100M reuse ;
SQL> alter database enable public thread 1;
Database altered.
5. 복구 수행
※ 파라미터 추가 시 주의 사항
해당 파라미터는 히든 파라미터로, 사용 전 반드시 Tibero 엔지니어에게 문의 후 사용 바랍니다.
_TX_RECOVERY_SUSPEND=Y
ㄴ 기동 시, 이전 tx에 대해 recovery를 skip하고 강제 기동합니다._CF_DD_CHECK=N
ㄴ DD에는 존재하나 CF에 없는 DF가 존재할 때, CF-DD간 보정을 모두 skip 합니다.
-- recover 수행 SQL> alter database recover automatic; TBR-1147: Need log file (thread 0 seq 23) to recover from TSN 204335. Recovery done until 2025/11/28 10:30:12 TSN 204330. Recovery is incomplete and resetlogs is required. -- 파라미터 추가 _TX_RECOVERY_SUSPEND=Y _CF_DD_CHECK=N -- resetlogs 기동 [t7_1]tibero7@tibero_raw:/home/tibero7/tibero_engine> tbboot resetlogs Listener port = 2629 Tibero 7 TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. Tibero instance started up (NORMAL RESETLOGS mode). -- temp 파일 추가 SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/home/tibero7/tibero_data/t7_1/data/temp001.dtf' SIZE 500M REUSE AUTOEXTEND OFF ;
6. 손상된 TEST TableSpace 영역을 제외한 나머지 정상 영역에 대해 tbexport/tbimport 를 통해 필요한 Data를 추출 및 복구를 수행합니다.