현재 로그 모드 조회
a. SELECT LOG_MODE
FROM V$DATABASE;
로그 모드 변경
a. 티베로 인스턴스가 마운트 모드가 되도록 하기
b. ALTER DATABASE ARCHIVELOG;
c. 티베로 인스턴스를 노말 모드로 변경.
현재 로그 모드 조회
a. SELECT LOG_MODE
FROM V$DATABASE;
아카이브로그 조회
a. SELECT * FROM V$ARCHIVED_LOG;
아카이브로그 생성
a. ALTER SYSTEM SWITCH LOGFILE; -> 로그파일을 바꿀 시 아카이브 로그 파일이 생성되기 때문에 ?
아카이브로그 조회
a. SELECT * FROM V$ARCHIVED_LOG;
아카이브로그 조회(아카이브 파일 직접 조회)
a. SELECT * FROM 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>
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;
그리고, 다시 실패했던 테이블스페이스를 생성하면 됨.