IT 꿈나무의 일상

[Tibero] Boot Mode 단계에 따른 동작 확인 본문

DB

[Tibero] Boot Mode 단계에 따른 동작 확인

viera 2023. 9. 18. 17:25
반응형

Tibero의 Boot Mode는 다음과 같습니다

tibero를 구동하기 위해 tbboot 명령어를 수행하면 기본적으로 기동 순서는 다음과 같습니다.

  • NOMOUNT → MOUNT → NORMAL(OPEN)

 

좀 더 자세하게 살펴보면 아래와 같이 동작합니다.

  1. tbboot 수행
  2. [NOMOUNT] license.xml 파일 확인
  3. [MOUNT] tibero.tip 파일 내용 확인 (.bash_profile 파일의 tibero 환경변수 읽어옴)
    • control, log 파일 위치확인
    • database 정보 확인 (db_name, port)
    • tibero parameter 정보 확인
  4. [MOUNT] control 파일을 읽어서 REDO LOG, DATA FILE 위치 확인
  5. [NORMAL] REDO LOG, DATA FILE 을 읽고 데이터를 기록할 수 있는 상태로 전환

 

 

각각의 Tibero Boot Mode에 대한 내용입니다.

 

1. NOMOUNT

  • Tibero의 인스턴스(프로세스, 공유메모리)만 동작하는 단계
  • $TB_HOME, $TB_SID 환경변수를 토대로 초기화 파라미터 파일을 찾아 읽어와 파라미터를 토대로 공유 메모리 확보 및 백그라운드 프로세스를 생성한다
  • 일반적으로 CREATE DATABASE 생성 시에만 사용된다
  • tbboot nomount 명령어 수행 시
[tibero@localhost ~]$ tbboot nomount
Listener port = 8629

Tibero 7  

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
# Database 생성전 tbboot(normal mode) 기동시 아직 control file이 생성되지 않아 Unable to read control file 에러 발생
# 해당 경우 nomount mode로 실행된다

[tibero@localhost ~/tibero7/config]$ tbboot
Listener port = 8629

********************************************************
*   Warning: Control file open failed 
*    /home/tibero/file/tbdata/tibero/system01/ctl_01.ctl 
********************************************************

********************************************************
*   Warning: Control file open failed 
*    /home/tibero/file/tbdata/tibero/system02/ctl_02.ctl 
********************************************************

********************************************************
* Critical Warning : Raise svmode failed. The reason is 
*   TBR-24003 :  Unable to read control file.
*   Current server mode is NOMOUNT.
********************************************************

Tibero 7  

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started suspended at NOMOUNT mode.

 

2. MOUNT

  • 초기화 파라미터에 작성된 경로에 존재하는 컨트롤 파일을 열어 REDO LOG, DATA FILE 위치 파악
  • 주로 REDO LOG, DATA FILE 파일 존재 여부를 확인하는 것이 목적이라 해당 위치에 동일한 이름의 파일이 존재한다면 에러는 나지않음
# Data File의 이름을 변경하고 tbboot 시 다음과 같이 파일을 open 할 수 없다는 에러메시지가 나옴
# system001.dtf파일의 이름을 system999.dtf 로 바꾼 후 tbboot로 기동

[tibero@localhost ~/system01]$ mv system.dbf system33.dbf
[tibero@localhost ~/system01]$ tbboot
Listener port = 8629
********************************************************
* Critical Warning : Raise svmode failed. The reason is 
*   TBR-1024 :  Database needs media recovery: open failed(/home/tibero/file/tbdata/tibero/system01/system.dbf).
*   Current server mode is MOUNT.
********************************************************

Tibero 7  

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started suspended at MOUNT mode.

 

 

3. NORMAL (OPEN)

  • REDO LOG, DATA FILE 내용 확인 후 문제가 없다면 데이터 파일을 읽고 기록할 수 있는 상태로 전환
  • 데이터베이스의 비정상적 종료 후 Tibero를 기동할 경우 파손 복구(crash recovery)가 실행

 

4. RESETLOGS

  • Tibero 서버 기동 중 로그 파일 초기화하여 미디어 복구 이후에 사용하는 모드
  • 데이터 베이스의 비정상 종료 후에는 사용 불가

 

 

+) 추가 테스트

NORMAL MODE에서 control file 백업  후 NOMOUNT MODE에서 control file 재생성

  •  순서
    1. normal mode에서 컨트롤 파일 논리적 백업구문 수행
    2. 데이터 파일 이름 변경
    3. nomount mode에서 컨트롤 파일 재생성
    4. normal mode로 기동 후 정상 동작 여부 확인
1. normal mode에서 컨트롤 파일 논리적 백업 수행
tbboot normal

# control file backup
#1. 물리적 백업
#- alterdatabase backup controlfile to '경로/ctl.ctl'

# 2. 논리적 백업 (추천)
# ctl.sql 확인 시 데이터베이스 파일의 위치와 여러 설정 확인 가능
- alter database backup controlfile to trace as '경로/ctl.sql';

SQL > alter database backup controlfile to trace as '/home/tibero/file/backup/ctl.sql';      
Database altered.

# ctl.sql 파일 확인 (해당 쿼리 돌리면 컨트롤 파일 재생성 가능)

--------
CREATE CONTROLFILE REUSE DATABASE "tibero"
LOGFILE
GROUP 1 (
        '/home/tibero/file/tbdata/tibero/system01/redo_01a.redo',
        '/home/tibero/file/tbdata/tibero/system02/redo_01b.redo'
          ) SIZE 100M,
GROUP 2 (
        '/home/tibero/file/tbdata/tibero/system01/redo_02a.redo',
        '/home/tibero/file/tbdata/tibero/system02/redo_02b.redo'
          ) SIZE 100M,
GROUP 3 (
        '/home/tibero/file/tbdata/tibero/system01/redo_03a.redo',
        '/home/tibero/file/tbdata/tibero/system02/redo_03b.redo'
          ) SIZE 100M
NORESETLOGS
DATAFILE
        '/home/tibero/file/tbdata/tibero/system01/system.dbf',
        '/home/tibero/file/tbdata/tibero/system01/undo_01.dbf',
        '/home/tibero/file/tbdata/tibero/system01/usr.dbf',
        '/home/tibero/file/tbdata/tibero/system01/tpr.dbf'
ARCHIVELOG
MAXLOGFILES 255
MAXFBLOGFILES 255
MAXLOGMEMBERS 8
MAXDATAFILES 100
MAXARCHIVELOG 500
MAXBACKUPSET 500
MAXLOGHISTORY 500
MAXFBMARKER 168
MAXFBARCHIVELOG 500
MAXSTANDBYARCHIVELOG 500
CHARACTER SET UTF8
NATIONAL CHARACTER SET UTF16;
--------
2. 데이터 파일 이름 변경
# 데이터 파일 이름 변경 후 nomount 모드에서 컨트롤 파일 재생성
[root@localhost system01]# mv system.dbf system999.dbf
3. nomount mode에서 컨트롤 파일 재생성
[tibero@localhost ~]$ tbboot nomount

# ctl.sql 파일 내용에서 데이터 파일 이름만 변경 후 재생성
[tibero@localhost ~]$ tbsql sys/tibero @ctl.sql
4. normal mode로 기동 후 동작 확인
# media recovery 필요

[tibero@localhost ~]$ tbboot
Listener port = 8629

********************************************************
* Critical Warning : Raise svmode failed. The reason is 
*   TBR-1024 :  Database needs media recovery: media recovery required(/home/tibero/file/tbdata/tibero/system01/system999.dbf).
*   Current server mode is MOUNT.
********************************************************

Tibero 7  

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started suspended at MOUNT mode.
# 데이터베이스 recovery 수행 (아카이브 로그 + 백업본으로 자동으로 복구)
SQL> ALTER DATABASE RECOVER AUTOMATIC DATABASE; 

Database altered.

SQL> q

## 새로 생성한 control file을 사용하여 tbboot 수행 -> 정상동작
[tibero@localhost ~]$ tbboot
Listener port = 8629

Tibero 7  

TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).

 

반응형
Comments