Tibero Database Administration

신예환·2023년 4월 8일
0
post-thumbnail

아카이브로그 모드로 변경하기

  1. 현재 로그 모드 조회
    a. SELECT LOG_MODE
    FROM V$DATABASE;

  2. 로그 모드 변경
    a. 티베로 인스턴스가 마운트 모드가 되도록 하기

    • tbdown immediate
    • tbboot mount

    b. ALTER DATABASE ARCHIVELOG;
    c. 티베로 인스턴스를 노말 모드로 변경.

    • tbdown immediate
    • tbboot
  3. 현재 로그 모드 조회
    a. SELECT LOG_MODE
    FROM V$DATABASE;

  4. 아카이브로그 조회
    a. SELECT * FROM V$ARCHIVED_LOG;

  5. 아카이브로그 생성
    a. ALTER SYSTEM SWITCH LOGFILE; -> 로그파일을 바꿀 시 아카이브 로그 파일이 생성되기 때문에 ?

  6. 아카이브로그 조회
    a. SELECT * FROM V$ARCHIVED_LOG;

  7. 아카이브로그 조회(아카이브 파일 직접 조회)
    a. SELECT * FROM V$ARCHIVE_DEST_FILES;

  • 노아카이브 로그 파일 모드 -> tbdwon 후 백업을 해야한다. 인스턴스를 끈 후에 백업해야 한다.
  • 아카이브 로그 파일 모드 -> 온라인 백업이 가능하다. 데이터베이스 구성 파일들을 복사할 때, tbdown을 하지 않고 온라인 백업이 가능, 파일의 복사 가능, 인스턴스 구동 중에 가능.
    Tibero Installation에서 설치한 내용은 노아카이브 로그 모드이기 때문에 온라인 백업이 불가능하다.

V$ARCHIVED_LOG 와 V$ARCHIVE_DEST_FILES 차이점

V$ARCHIVED_LOG;
컨트롤파일로 부터 정보를 가져옴.
컨트롤파일이 초기화 되면 정보가 안보임.

V$ARCHIVE_DEST_FILES;
아카이브파일로 부터 정보를 가져옴.
아카이브파일이 삭제되면 정보가 안보임.

==============================

예) 아카이브로그 파일을 1개 삭제하고, 위의 2개 뷰에서 각각 조회해보기

SQL> SELECT NAME FROM V$ARCHIVED_LOG;

NAME
--------------------------------------------------------------------------------
/tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
/tibero/tbdata/tibero/arch/log-t0-r0-s6.arc

2 rows selected.

SQL> SELECT NAME FROM V$ARCHIVE_DEST_FILES;

NAME
--------------------------------------------------------------------------------
/tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
/tibero/tbdata/tibero/arch/log-t0-r0-s6.arc

2 rows selected.

SQL>
SQL> !ls -l /tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
-rw------- 1 tibero dba 19467264 Apr  7 13:45 /tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
SQL>
SQL> !mv /tibero/tbdata/tibero/arch/log-t0-r0-s5.arc  /tibero
SQL> !ls -l /tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
ls: cannot access /tibero/tbdata/tibero/arch/log-t0-r0-s5.arc: No such file or directory
SQL> !ls -l /tibero/tbdata/tibero/arch/
total 352
-rw------- 1 tibero dba 360448 Apr  7 13:48 log-t0-r0-s6.arc
SQL>
SQL>
SQL> -- V$ARCHIVED_LOG 조회시 이력을 보는 것(controlfile에 기록된 이력)
SQL> -- s5, s6 아카이브가 조회되어야 함.
SQL> SELECT NAME FROM V$ARCHIVED_LOG;

NAME
--------------------------------------------------------------------------------
/tibero/tbdata/tibero/arch/log-t0-r0-s5.arc
/tibero/tbdata/tibero/arch/log-t0-r0-s6.arc

2 rows selected.

SQL> -- V$ARCHIVED_DEST_FILES 는 파일을 직접 보는데,  S5 파일이 사라졌으므로
SQL> -- S6만 조회되어야 함.


SQL> SELECT NAME FROM V$ARCHIVE_DEST_FILES;

NAME
--------------------------------------------------------------------------------
/tibero/tbdata/tibero/arch/log-t0-r0-s6.arc

1 row selected.

SQL>

데이터베이스 변경작업시 원칙

  1. 변경 명령
  • ALTER SYSTEM ~
  • ALTER DATABASE ~
    • 티베로 SQL 참조 안내서의 DDL 부분 참고
  1. 현재 값을 조회하는 명령
  • SELECT * FROM V$~
  • SELECT * FROM DBA_~
    • 티베로 참조 안내서의 데이터딕셔너리 부분 참고

스키마 객체 조회하기

SQL>
SQL>  -- 모든 스키마 객체정보를 조회할 수 있는 뷰
SQL>
SQL> DESC DBA_OBJECTS;

COLUMN_NAME                              TYPE               CONSTRAINT 
---------------------------------------- ------------------ --------------------
OWNER                                    VARCHAR(128)
OBJECT_NAME                              VARCHAR(128)
SUBOBJECT_NAME                           VARCHAR(128)
OBJECT_ID                                NUMBER
OBJECT_TYPE                              VARCHAR(23)
OBJECT_TYPE_NO                           NUMBER
CREATED                                  DATE
LAST_DDL_TIME                            DATE
TIMESTAMP                                VARCHAR(19)
STATUS                                   VARCHAR(7)
TEMPORARY                                VARCHAR(1)

SQL>
SQL>
SQL>
SQL>  SELECT OBJECT_TYPE,COUNT(*)
   2 FROM DBA_OBJECTS
   3 GROUP BY OBJECT_TYPE
   4 ORDER BY OBJECT_TYPE;

OBJECT_TYPE               COUNT(*)
----------------------- ----------
DIRECTORY                        3
FUNCTION                         8
INDEX                          383
JAVA                             1
LOB                             16
PACKAGE                        137
PACKAGE BODY                    77
PROCEDURE                        2
SEQUENCE                        38
SQL TRANSLATION PROFILE          2
SYNONYM                       1069
TABLE                          557
TRIGGER                          2
TYPE                            96
TYPE BODY                        1
VIEW                           753

16 rows selected.

SQL> ED
Wrote file .tbedit.sql

   1 SELECT OWNER, OBJECT_TYPE, COUNT(*)
   2 FROM DBA_OBJECTS
   3 GROUP BY OWNER, OBJECT_TYPE
   4 ORDER BY OWNER, OBJECT_TYPE
SQL> /

OWNER
--------------------------------------------------------------------------------
OBJECT_TYPE               COUNT(*)
----------------------- ----------
OUTLN
INDEX                            1

OUTLN
TABLE                            3

PUBLIC
SYNONYM                       1068

SYS
DIRECTORY                        3

SYS
FUNCTION                         7

SYS
INDEX                          380

SYS
JAVA                             1

SYS
LOB                             16

SYS
PACKAGE                        137

SYS
PACKAGE BODY                    77

SYS
SEQUENCE                        38

SYS
SQL TRANSLATION PROFILE          2

SYS
SYNONYM                          1

SYS
TABLE                          552

SYS
TRIGGER                          2

SYS
TYPE                            96

SYS
TYPE BODY                        1

SYS
VIEW                           328

SYSCAT
VIEW                           419

SYSGIS
FUNCTION                         1

SYSGIS
INDEX                            2

SYSGIS
PROCEDURE                        2

SYSGIS
TABLE                            2

SYSGIS
VIEW                             6


24 rows selected.

SQL> COL OWNER FOR A8
SQL> ED
Wrote file .tbedit.sql

   1 SELECT OWNER, OBJECT_TYPE, COUNT(*)
   2 FROM DBA_OBJECTS
   3 GROUP BY OWNER, OBJECT_TYPE
   4 ORDER BY OWNER, OBJECT_TYPE
SQL> /

OWNER    OBJECT_TYPE               COUNT(*)
-------- ----------------------- ----------
OUTLN    INDEX                            1
OUTLN    TABLE                            3
PUBLIC   SYNONYM                       1068
SYS      DIRECTORY                        3
SYS      FUNCTION                         7
SYS      INDEX                          380
SYS      JAVA                             1
SYS      LOB                             16
SYS      PACKAGE                        137
SYS      PACKAGE BODY                    77
SYS      SEQUENCE                        38
SYS      SQL TRANSLATION PROFILE          2
SYS      SYNONYM                          1
SYS      TABLE                          552
SYS      TRIGGER                          2
SYS      TYPE                            96
SYS      TYPE BODY                        1
SYS      VIEW                           328
SYSCAT   VIEW                           419
SYSGIS   FUNCTION                         1
SYSGIS   INDEX                            2
SYSGIS   PROCEDURE                        2
SYSGIS   TABLE                            2
SYSGIS   VIEW                             6

24 rows selected.

SQL> ED 실행시, .tbedit.sql Permission denied 에러 발생원인은?

< ED 명령의 동작방식 >
현재 디렉토리에 .tbedit.sql 파일을 생성하고, 직전에 실행한 쿼리를 편집할수 있게 해주는 명령임.

-> 현재 디렉토리가 / 일때, / 디렉토리는 root 가 소유하고 있고, 일반 유저는 파일 생성이 불가한 디렉토리 이므로, 여기서는 .tbedit.sql 만드는것이 불가함.

따라서, 다른 디렉토리로 이동하여 작업을 하면 에러가 나지 않음.

테이블 스페이스

< 유저의 기본테이블스페이스 의미 >

해당 유저로 로그인하여 객체를 만들때 해당 객체가 사용하는 테이블스페이스를 의미한다.

예) tibero 유저의 기본 테이블스페이스가 ABC 테이블스페이스 일때, tibero 유저로 로그인 하였다면

=> CREATE TABLE XYZ(C1 NUMBER);

=> SELECT TABLESPACE_NAME FROM USER_TABLES WHERE TABLE_NAME=’XYZ’;
=> 위의 조회결과 ABC 테이블스페이스가 나옴.

=> 만약 다음과 같이 테이블 생성시 테이블스페이스를 지정한다면, 유저의 기본테이블스페이스가 아닌, 지정한 테이블스페이스를 사용하게됨.
예) CREATE TABLE EDU(C1 NUMBER) TABLESPACE GUGU;

위의 경우 GUGU 라는 테이블스페이스를 지정하였으므로 EDU 테이블은 GUGU 테이블스페이스를 사용하게된다. 즉 유저의 기본테이블스페이는 영향을 안받게 됨.

< 테이블스페이스 생성시, 데이터파일 관련 에러가 나는 경우 >

<원인>
기존에 사용하던 동일한 파일이 존재하여서 임.

<해결법>
혹시, 다른 테이블스페이스가 사용하는지 먼저 조회함.

예) SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES;

위와 같이 조회시 만일 다른 테이블이 사용하지 않는다면, 파일을 삭제하도록 함. 에러메시지에 나오는 파일을 ls 로 조회하고, 존재하면 rm 으로 삭제하도록 함.
논리적인 저장구조는 삭제하였지만, 물리적인 데이터베이스 파일은 존재한다.
아래와 같이 다 삭제 해야 한다.
drop tablespace ~~~ including contents and datafiles;

그리고, 다시 실패했던 테이블스페이스를 생성하면 됨.

profile
더디가도 함께가자

0개의 댓글