문서유형ㅣ기술정보
분야ㅣ백업/복구
적용제품버전ㅣTibero 7 (DB 7.2.5) Build 313465
문서번호ㅣTBATI054
개요
백업본이 없는 환경에서 특정 데이터 파일이 삭제되었을 경우, 해당 Tablespace를 포기하고 완전복구하는 방법에 대해 기술합니다.
따라서 데이터 유실이 발생하는점을 반드시 숙지해야합니다.
해당 방법을 이용하기 위해서는 컨트롤 파일 Data Dictionary 보정하는 기능이 추가된 바이너리여야 합니다.
(alter database check controlfile from data dictionary 구문 지원 가능한 바이너리 필요)
테스트 환경
|
방법
시나리오
- 테스트 테이블스페이스 생성
- 장애유발 (테스트 테이블스페이스 파일 삭제)
- 컨트롤파일 noresetlogs 옵션으로 백업
- 티베로 종료 및 장애 확인
- 백업된 컨트롤파일에서 장애 대상 테이블스페이스 관련 파일 주석처리
- 컨트롤파일 재생성
- 복구진행
- 컨트롤파일 데이터파일 보정
- 테스트 테이블스페이스 오프라인
- 티베로 재기동
- 테스트 테이블스페이스 삭제
- Tempfile 추가
테스트 결과
#테스트 테이블스페이스 생성
SQL> create tablespace ts_test datafile 'test01.dtf' size 1G;
Tablespace 'TS_TEST' created.
#장애유발 (테스트 테이블스페이스 파일 삭제)
node1@tibero:/home/tibero # cd tbdata
node1@tibero:/home/tibero/tbdata # ls -rlt
합계 2042860
-rw-------. 1 tibero dba 104857600 9월 4 16:05 temp001.dtf
drwx------. 3 tibero dba 17 9월 4 16:06 java
-rw-------. 1 tibero dba 104857600 9월 9 16:47 usr001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo011.redo
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo021.redo
-rw-------. 1 tibero dba 1073741824 9월 9 16:47 test01.dtf
-rw-------. 1 tibero dba 209715200 9월 9 16:47 undo001.dtf
-rw-------. 1 tibero dba 94371840 9월 9 16:47 syssub001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 system001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo001.redo
-rw-------. 1 tibero dba 84885504 9월 9 16:47 c1.ctl
node1@tibero:/home/tibero/tbdata # rm test01.dtf
node1@tibero:/home/tibero/tbdata # ls -rlt
합계 994284
-rw-------. 1 tibero dba 104857600 9월 4 16:05 temp001.dtf
drwx------. 3 tibero dba 17 9월 4 16:06 java
-rw-------. 1 tibero dba 104857600 9월 9 16:47 usr001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo011.redo
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo021.redo
-rw-------. 1 tibero dba 209715200 9월 9 16:47 undo001.dtf
-rw-------. 1 tibero dba 94371840 9월 9 16:47 syssub001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 system001.dtf
-rw-------. 1 tibero dba 104857600 9월 9 16:47 redo001.redo
-rw-------. 1 tibero dba 84885504 9월 9 16:47 c1.ctl
#컨트롤파일 noresetlogs 옵션으로 백업
node1@tibero:/home/tibero # tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> alter database backup controlfile to trace as '/home/tibero/c1.sql';
Database altered.
#티베로 종료 및 장애 확인
node1@tibero:/home/tibero # tbdown
tbdown failed to receive reply.
node1@tibero:/home/tibero #
node1@tibero:/home/tibero #
node1@tibero:/home/tibero # ps -ef | grep tbsvr
tibero 1495 1199 0 16:49 pts/0 00:00:00 grep --color=auto tbsvr
node1@tibero:/home/tibero # tbboot
Change core dump dir to /home/tibero/tibero7/bin/prof.
Listener port = 8629
[2026-09-09T16:50:02.520] [FRM-104] [C-CX4]
********************************************************
* Critical Warning : Raise svmode failed. The reason is
* TBR-1024 : Database needs media recovery: open failed(/home/tibero/tbdata/test01.dtf).
* Current server mode is MOUNT.
********************************************************
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started suspended at MOUNT mode.
#백업된 컨트롤파일에서 장애 대상 테이블스페이스 관련 파일 주석처리
CREATE CONTROLFILE REUSE DATABASE "tibero"
LOGFILE
GROUP 1 '/home/tibero/tbdata/redo001.redo' SIZE 100M,
GROUP 2 '/home/tibero/tbdata/redo011.redo' SIZE 100M,
GROUP 3 '/home/tibero/tbdata/redo021.redo' SIZE 100M
NORESETLOGS
DATAFILE
'/home/tibero/tbdata/system001.dtf',
'/home/tibero/tbdata/undo001.dtf',
'/home/tibero/tbdata/usr001.dtf',
'/home/tibero/tbdata/syssub001.dtf' --, -- 쉼표도 삭제 필요
--'/home/tibero/tbdata/test01.dtf' -- 주석
NOARCHIVELOG
MAXINSTANCES 8
MAXLOGFILES 255
MAXFBLOGFILES 255
MAXLOGMEMBERS 8
MAXDATAFILES 4096
MAXARCHIVELOG 500
MAXBACKUPSET 500
MAXLOGHISTORY 500
MAXFBMARKER 168
MAXFBARCHIVELOG 500
CHARACTER SET UTF8
NATIONAL CHARACTER SET UTF16
;
#컨트롤파일 재생성
node1@tibero:/home/tibero # tbdown
Tibero instance terminated (NORMAL mode).
node1@tibero:/home/tibero # tbboot nomount
Change core dump dir to /home/tibero/tibero7/bin/prof.
Listener port = 8629
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
node1@tibero:/home/tibero # tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> @c1
Control File created.
SQL> quit
Disconnected.
node1@tibero:/home/tibero # tbdown
Tibero instance terminated (NORMAL mode).
#복구진행
node1@tibero:/home/tibero # tbboot mount
Change core dump dir to /home/tibero/tibero7/bin/prof.
Listener port = 8629
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (MOUNT mode).
node1@tibero:/home/tibero # tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> alter database recover automatic;
Database altered.
#컨트롤파일 데이터파일 보정
SQL> alter database check controlfile from data dictionary;
[2026-09-09T16:54:03.554] [CLC-163] [I-OT2]
1) Find MISSING datafiles from V$DATAFILE.
2) Restore the corresponding backup datafiles.
3) If they were newly added after the start of the backup, create the physical files with each df id.
: SQL> ALTER DATABASE CREATE DATAFILE df_id;
4) Rename(OS cmd) the corresponding files at DB_CREATE_FILE_DEST to their original names.
5) Rename(SQL) MISSING datafiles to each original names.
: SQL> ALTER DATABASE RENAME FILE 'MISSING_file_path' to 'original_file_path';
6) Request the Media Recovery again as before.
Database altered.
#테스트 테이블스페이스 오프라인
SQL> alter system set _ENABLE_UNDO_TS_OFFLINE=y; --해당 구문 수행 필수
System altered.
SQL> alter tablespace ts_test offline immediate;
Tablespace 'TS_TEST' altered.
#티베로 재기동
node1@tibero:/home/tibero # tbdown
Tibero instance terminated (NORMAL mode).
node1@tibero:/home/tibero # tbboot
Change core dump dir to /home/tibero/tibero7/bin/prof.
Listener port = 8629
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
#테스트 테이블스페이스 삭제
SQL> drop tablespace ts_test;
Tablespace 'TS_TEST' dropped.
#Tempfile 추가
SQL> alter tablespace temp add tempfile 'temp001.dtf' size 5g;
Tablespace 'TEMP' altered.
SQL> select * from v$tempfile;
FILE# CREATE_TSN CREATE_DATE TS# RFILE# ENABLED BLOCKS CREATE_SIZE
---------- ---------- -------------------------------------------------------------------------------------------------------------------------------- ---------- ---------- ------- ---------- -----------
NAME
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0 0 2 0 YES 655360 655360
/home/tibero/tbdata/temp001.dtf
1 row selected.
진행간 발생 가능한 오류
대상 테이블스페이스 오프라인 불가
#오류 메시지 SQL> alter tablespace ts_test offline immediate; TBR-24052: Only allowed if media recover is enabled. #_ENABLE_UNDO_TS_OFFLINE 파라미터 활성화 SQL> alter system set _ENABLE_UNDO_TS_OFFLINE=y; System altered. SQL> alter tablespace ts_test offline immediate; Tablespace 'TS_TEST' altered.Tempfile 추가 실패
#오류 메시지 SQL> alter tablespace temp add tempfile 'temp001.dtf'; TBR-1001: Unable to create file /home/tibero/tbdata/temp001.dtf. #기존 존재하는 temp 파일 제거 후 재추가 시도 node1@tibero:/home/tibero/tbdata # rm temp001.dtf node1@tibero:/home/tibero/tbdata # tbsql sys/tibero tbSQL 7 TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. Connected to Tibero. SQL> alter tablespace temp add tempfile 'temp001.dtf' size 5g; Tablespace 'TEMP' altered.