신규 기능 - OFFLINE FOR DROP
OFFLINE FOR DROP
테스트 환경
OS : OEL release 7.2
Tibero : 6 FS04
OFFLINE FOR DROP
Permanent 테이블스페이스 중 비시스템 테이블스페이스의 데이터 파일이 손상된 경우 해당 테이블스페이스를 제거하는 방법이다.
즉, 데이터를 복구할 수 없는 경우 해당 테이블스페이스에 포함된 모든 데이터의 복구를 포기하고 데이터베이스를 복구한다.
데이터를 포기하는 게 의아할 수 있으나 경우에 따라 필수 불가결할 수 있으며 복구 방안에 대한 선택의 폭이 넓어진다.
즉, 하이 리스크, 하이 리턴의 관계이다.
다음과 같은 경우 사용을 고려해볼 만하다.
- 대용량 데이터베이스의 경우 백업에 소요되는 시간적 공간적인 리소스를 줄일 수 있다.
- 로그성 테이블 등의 경우 의사결정을 통해 DBMS 장애시 복구에서 제외한다.
- 해당 테이블스페이스를 제외하고 백업을 수행한다.
(일부 테이블스페이스가 제외되므로 백업용량이 감소하며 따라서 백업시간도 단축된다.)- 향후 장애 발생시 해당 기능을 통해 백업에서 제외된 테이블스페이스의 복구를 포기하고 DBMS 기동할 수 있다.
- 실시간 서비스가 중요한 DBMS의 경우 복구시간을 단축시켜줄 수 있다.
- DBMS 장애발생으로 백업본을 통한 복구 필요시 의사결정을 통해 일부 테이블스페이스의 복구를 포기한다.
(즉, 과거 이력이 현재의 서비스에 미치는 영향이 해당 장애로 인한 영향에 비하여 미미한 경우)- 복원(Restore)단계에서 테이블스페이스가 제외되므로 복원시간이 단축된다.
- 또한, Archive log 및 Redo log 적용에서 해당 테이블스페이스가 제외되므로 복구시간 또한 단축될 여지가 있다.
- DBMS 복구가 필요하나 백업본의 일부 파일이 손상된 경우 해당 테이블스페이스를 제외하고 복구가 가능하다.
- 사용자의 실수(잘못된 DDL, DML 수행)로 인한 일부테이블의 불완전 복구시 해당 테이블스페이스를 제외하여 복구가 가능하다.
(이건 나중에 해보자.)
기능 테스트
Test용 Tablespace 생성
- 기존 데이터베이스에 테스트용 테이블스페이스를 2개 추가해 준다.
- 하나는 살리고 하나는 버릴(OFFLINE FOR DROP) 예정이다.
DBA
권한을 가진SYS
계정에서 수행한다.(권한만 있으면 크게 상관은 없다.)
SQL> CREATE TABLESPACE TEST_TS1
DATAFILE 'test_ts1.dbf' SIZE 100M ;
Tablespace 'TEST_TS1' created.
-- TEST_TS2 Tablespace 복구 제외(제거)
SQL> CREATE TABLESPACE TEST_TS2
DATAFILE 'test_ts2.dbf' SIZE 100M ;
Tablespace 'TEST_TS2' created.
Archivelog 모드 설정
- 실제 OFFLINE FOR DROP과 Archivelog 모드의 연관성은 없다.
- 다만, 테스트에서 다음 단계의 Online backup을 진행하기 위해 설정한다.
$TB_HOME/config/$TB_SID.tip
파일에LOG_ARCHIVE_DEST
파라미터에 Archive log 경로를 설정한다.
(전략)
DB_NAME=tb6FS04
#_LSNR_SPECIAL_PORT=8629
LISTENER_PORT=16620
CONTROL_FILES="/tibero/tb6dataFS04/c1.ctl"
DB_CREATE_FILE_DEST="/tibero/tb6dataFS04"
#LOG_ARCHIVE_DEST=Archive log 경로
LOG_ARCHIVE_DEST="/tibero/tb6archFS04"
#CERTIFICATE_FILE="/tibero/tb6FS04/config/svr_wallet/tb6FS04.crt"
#PRIVKEY_FILE="/tibero/tb6FS04/config/svr_wallet/tb6FS04.key"
#WALLET_FILE="/tibero/tb6FS04/config/svr_wallet/WALLET"
#EVENT_TRACE_MAP="/tibero/tb6FS04/config/event.map"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=512M
MEMORY_TARGET=1G
- 데이터베이스를
Mount
모드로 기동한다. - Archivelog 모드는 데이터베이스 단위로 설정되므로 다중화되어 있는 경우 모두 내리고 1개 노드만
Mount
모드로 기동한다.
$ tbdown
Tibero instance terminated (NORMAL mode).
$ tbboot mount
Listener port = 16620
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
SYS
계정으로 접속한다.
$ tbsql sys/tibero
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
- Archivelog 모드를 설정하고 데이터베이스를
OPEN
한다.
SQL> ALTER DATABASE ARCHIVELOG ;
Database altered.
SQL> ALTER DATABASE OPEN ;
Database altered.
SQL>
- 정상적으로 Archive log가 생성되는지 확인한다.
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.
SQL> exit
Disconnected.
$ ls -arlt /tibero/tb6archFS04 #Archivelog 경로
-rw------- 1 tibero dba 4789760 Mar 10 15:39 log-t0-r0-s74.arc
-
전체 백업(Online backup)
- 정확하게는
TEST_TS2
테이블스페이스는 제외하고 받는다. SYS
계정에서BEGIN BACKUP
을 수행하여 백업을 시작한다.
SQL> ALTER DATABASE BEGIN BACKUP ;
Database altered.
SQL> SELECT D.FILE#, B.STATUS, D.NAME
FROM V$BACKUP B,
V$DATAFILE D
WHERE D.FILE# = B.FILE#;
FILE# STATUS NAME
---------- ---------- --------------------------------------------
0 ACTIVE /tibero/tb6dataFS04/system001.dtf
1 ACTIVE /tibero/tb6dataFS04/undo001.dtf
2 ACTIVE /tibero/tb6dataFS04/usr001.dtf
3 ACTIVE /tibero/tb6dataFS04/tpr_ts.dtf
4 ACTIVE /tibero/tb6dataFS04/test_ts1.dbf
5 ACTIVE /tibero/tb6dataFS04/test_ts2.dbf -- 백업 제외
6 rows selected.
- OS의
cp
명령으로 백업을 수행한다.
$ cp $HOME/tb6dataFS04/system001.dtf $HOME/backup/.
$ cp $HOME/tb6dataFS04/undo001.dtf $HOME/backup/.
$ cp $HOME/tb6dataFS04/usr001.dtf $HOME/backup/.
$ cp $HOME/tb6dataFS04/tpr_ts.dtf $HOME/backup/.
$ cp $HOME/tb6dataFS04/test_ts1.dbf $HOME/backup/.
$ ls -ar1t $HOME/backup/
..
system001.dtf
undo001.dtf
usr001.dtf
tpr_ts.dtf
test_ts1.dbf
.
SYS
계정에서END BACKUP
을 수행하여 백업을 종료한다.
SQL> ALTER DATABASE END BACKUP ;
Database altered.
SQL> SELECT D.FILE#, B.STATUS, D.NAME
FROM V$BACKUP B,
V$DATAFILE D
WHERE D.FILE# = B.FILE#;
FILE# STATUS NAME
---------- ---------- --------------------------------------------
0 NOT ACTIVE /tibero/tb6dataFS04/system001.dtf
1 NOT ACTIVE /tibero/tb6dataFS04/undo001.dtf
2 NOT ACTIVE /tibero/tb6dataFS04/usr001.dtf
3 NOT ACTIVE /tibero/tb6dataFS04/tpr_ts.dtf
4 NOT ACTIVE /tibero/tb6dataFS04/test_ts1.dbf
5 NOT ACTIVE /tibero/tb6dataFS04/test_ts2.dbf -- 백업 제외
6 rows selected.
Test Table 생성
- Tibero에 사용자 계정으로 Test를 위한 Table을 생성한다.
- 본 테스트에서는 기본 계정인
TIBERO
계정을 사용한다.
$ tbsql tibero/tmax
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
SQL> DROP TABLE TEST_TBL1;
TBR-7071: Schema object 'TIBERO.TEST_TBL1' was not found or is invalid.
SQL> DROP TABLE TEST_TBL2;
TBR-7071: Schema object 'TIBERO.TEST_TBL2' was not found or is invalid.
SQL> CREATE TABLE TEST_TBL1
TABLESPACE TEST_TS1
AS
SELECT * FROM DBA_OBJECTS;
Table 'TEST_TBL1' created.
SQL> CREATE TABLE TEST_TBL2 -- TEST_TBL2 Table 복구 제외(제거)
TABLESPACE TEST_TS2
AS
SELECT * FROM DBA_OBJECTS;
Table 'TEST_TBL2' created.
SQL> BEGIN
FOR A IN 1..8
LOOP
INSERT INTO TEST_TBL1
SELECT * FROM TEST_TBL1 ;
COMMIT ;
END LOOP;
END;
/
PSM completed.
SQL> BEGIN
FOR A IN 1..8
LOOP
INSERT INTO TEST_TBL2
SELECT * FROM TEST_TBL2 ;
COMMIT ;
END LOOP;
END;
/
PSM completed.
SQL> SELECT COUNT(*) FROM TEST_TBL1;
COUNT(*)
----------
796416
1 row selected.
SQL> SELECT COUNT(*) FROM TEST_TBL2;
COUNT(*)
----------
796672
1 row selected.
SQL>
장애 발생
- 모든 Datafile을 삭제한다.
- 반드시 모든 Datafile을 삭제할 필요는 없으며 일부 Datafile만 장애가 발생하는 경우도 복구 과정은 별반 다르지 않다.
rm $HOME/tb6dataFS04/system001.dtf
rm $HOME/tb6dataFS04/undo001.dtf
rm $HOME/tb6dataFS04/usr001.dtf
rm $HOME/tb6dataFS04/tpr_ts.dtf
rm $HOME/tb6dataFS04/test_ts1.dbf
rm $HOME/tb6dataFS04/test_ts2.dbf
- Tibero DBMS를 재기동 한다.
- 기동시 장애가 발생된다.
- Datafile을 Open 할수 없으므로
MOUNT
3 모드로 기동된다.
$ tbdown
Tibero instance terminated (NORMAL mode).
$ tbboot
Listener port = 16620
********************************************************
* Critical Warning : Raise svmode failed. The reason is
* TBR-1024 : Database needs media recovery: open failed(/tibero/tb6dataFS04/system001.dtf).
* Current server mode is MOUNT.
********************************************************
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started suspended at MOUNT mode.
$
- 장애가 발생된 파일에 대해 확인 한다.
tbsql sys/tibero
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
SQL> SELECT * FROM V$RECOVER_FILE ;
FILE# ONLINE ERROR CHANGE# TIME
---------- ------- -------------------- ---------- --------------------------------
0 ONLINE open failed 0
1 ONLINE open failed 0
2 ONLINE open failed 0
3 ONLINE open failed 0
4 ONLINE open failed 0
5 ONLINE open failed 0
6 rows selected.
SQL>
복구 수행(OFFLINE FOR DROP)
- DBMS를 종료시킨 후 Datafile을 Restore(복원)한다.
$ tbdown
Tibero instance terminated (NORMAL mode).
$ cp $HOME/backup/* $HOME/tb6dataFS04/. #백업 받은 파일을 복사한다. test_ts2.dbf는 제외된다.
$ tbboot
Listener port = 16620
********************************************************
* Critical Warning : Raise svmode failed. The reason is
* TBR-1024 : Database needs media recovery: file restored(/home/bach/tb6dataFS04/system001.dtf).
* Current server mode is MOUNT.
********************************************************
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started suspended at MOUNT mode.
$
- Datafile의 상태를 확인한다.
tbsql sys/tibero
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
SQL> SELECT * FROM V$RECOVER_FILE ;
FILE# ONLINE ERROR CHANGE# TIME
---------- ------- -------------------- ---------- --------------------------------
0 ONLINE file restored 164768 20170310
1 ONLINE file restored 164768 20170310
2 ONLINE file restored 164768 20170310
3 ONLINE file restored 164768 20170310
4 ONLINE file restored 164768 20170310
5 ONLINE open failed 0
6 rows selected.
SQL>
- 5번 Datafile(
test_ts2.dbf
)를 제외시킨 후 복구를 수행한다.
SQL> ALTER DATABASE DATAFILE 5 OFFLINE FOR DROP ;
Database altered.
SQL> ALTER DATABASE RECOVER AUTOMATIC ;
Database altered.
SQL>
- DBMS를 재기동하여 정상 복구 여부를 확인한다.
$ tbdown
Tibero instance terminated (NORMAL mode).
$ tbboot
Listener port = 16620
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
$ tbsql tibero/tmax
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
SQL> SELECT COUNT(*) FROM TEST_TBL1;
COUNT(*)
----------
796416
1 row selected.
SQL> SELECT COUNT(*) FROM TEST_TBL2;
TBR-24035: Unable to read file 5 at this time.
SQL>
- 제외된 Datafile을 포함한 테이블스페이스를 삭제한다.
SQL> CONN sys/tibero
Connected to Tibero.
SQL> DROP TABLESPACE TEST_TS2 INCLUDING CONTENTS AND DATAFILES ;
Tablespace 'TEST_TS2' dropped.
SQL>
- Data Dictionary: 데이터 사전. DBMS 안에서 데이터베이스에 대한 정보를 제공하는 데이터(Meta Data)를 저장, 제공하는 영역을 의미한다. ↩
- Static View: Static Data Dictionary View. 정적 뷰(반대. Dynamic View). Data Dictionary를 조회 할 수 있는 View(뷰)로 Data Dictionary가 변경 될 때(예: 테이블 생성 또는 사용자 권한 부여)만 변경되기 때문에 정적이라고 한다. ↩
- MOUNT: Tibero DBMS의 기동 단계 중 하나로 Oracle의 MOUNT 단계와 동일하다. 기동 및 종료 단계와 관련하여서는 추후 따로 작성하겠다. ↩
'Tibero > Tibero6' 카테고리의 다른 글
신규 기능 - Recursive With (0) | 2017.05.29 |
---|---|
신규 기능 - 원격 저장소를 가진 실체화 뷰 (0) | 2017.05.22 |
신규기능 - Partition Exchange (0) | 2017.01.05 |
신규기능 - BINARY TIP (0) | 2017.01.03 |
신규 기능 - Listener Multi-port (0) | 2016.11.10 |
댓글