6-1 데이터베이스 파일
Oracle 데이터베이스는, 인스턴스와 데이터베이스 파일로 구성된다.
파일 | 설명 |
데이터파일 | 테이블이나 인덱스 등의 데이터를 격납 |
REDO 로그파일 (Online REDO 로그파일) | 데이터베이스에 대해 실행된 모든 갱신정보를 기록 |
제어파일 | 데이터파일명, REDO 로그파일명을 포함한 데이터베이스의 구성정보(데이터파일의 구성정보) 및 관리정보가 격납됨 |
초기화 파라미터 파일 | 초기화 파라미터의 리스트 및 각 파라미터의 값이 저장되어 있음 |
패스워드 파일 | SYSDBA 등의 관리권한을 가진 유저의 패스워드를 관리함 |
아카이브 로그 파일 (아카이브 REDO 로그파일) | REDO 로그파일의 카피본 |
REDO 로그파일의 다중화와 로그스위치
-Oracle 데이터베이스는 트랜잭션이 커밋된 타이밍에 REDO 데이터를 REDO 로그파일에 적는다. 이 동작으로, 트랜잭션에 의한 갱신이 사라지지 않도록 하고 있다. 그러나, REDO 로그파일이 손상되었을 경우, REDO 로그파일에 저장된 REDO 데이터(갱신이력 데이터)가 사라져 버릴 수 있다.
-그럴 경우를 대비해서, REDO 로그파일을 다중화하여, 한 개의 REDO 로그파일이 손상되어도 데이터베이스 갱신이력이 사라지지 않도록 하고 있다.
- Oracle 데이터베이스에는 2개 이상의 그룹이 필요하다.
- 하나의 그룹에는 1개 이상의 멤버(파일)이 필요하다. 다중화하려는 경우에는, 2개 이상의 멤버를 구성한다. 같은 그룹 안의 멤버는 같은 사이즈이다.
- REDO 로그버퍼의 사이즈는 자동으로 확장되지 않는다.
제어파일
-제어파일은 데이터베이스 구성정보 및 관리정보를 기록하는 파일이다. 데이터파일명, REDO 로그파일명 등의 구성정보, 데이터베이스 작성의 타임스탬프, 다른 데이터베이스의 내부동작에 관련된 관리정보가 기록되어 있다.
-제어파일의 파일명은 CONTROL_FILES 초기화 파라미터에 의해 설정된다.
6-2 테이블 스페이스
Oracle 데이터베이스에 테이블이나 인덱스 등의 데이터를 저장하려 할 때, 저장하는 곳에 지정하는 것이 "테이블 스페이스"이다. 테이블스페이스는 논리적인 정의이고, 물리적으로 블록이 데이터파일에 저장되는 구조이다.
- 테이블스페이스는 하나 이상의 데이터파일을 그룹화한 것이다.
- 오브젝트를 저장하는 곳에는 테이블스페이스를 지정한다.
- 오브젝트의 저장공간은, 그 오브젝트의 저장공간에 지정된 테이블스페이스를 구성하는 데이터파일에 할당된다.
- 데이터베이스는 여러 테이블스페이스로 구성된다.
- 테이블스페이스는 하나 이상의 데이터파일로 구성된다.
- 테이블스페이스에는 하나 이상의 세그먼트가 격납된다.
- 세그먼트는 하나 이상의 익스텐스가 구성된다.
- 익스텐트는 연속된 데이터블록으로 구성된다.
특수한 역할을 하는 테이블스페이스
테이블스페이스 | 설명 |
SYSTEM 테이블스페이스 | - Oracle에 필수적인 테이블스페이스 - 데이터베이스의 중요한 관리정보 (데이터 딕셔너리)가 저장되어 있다. - 테이블스페이스명은 SYSTEM으로 구성되며 변경 불가능 - SYSTEM 테이블스페이스가 손상되어 사용할 수 없게 되면 인스턴스가 이상종료된다. |
SYSAUX 테이블스페이스 | - Oracle에 필수적인 테이블스페이스 - SYSTEM 테이블스페이스의 보조적인 역할을 하며, 데이터베이스의 관리정보가 저장됨. - 테이블스페이스명은 SYSAUX으로 구성되며 변경 불가능 - AWR (Automatic Workload Repository)라는 테이블의 집합도 SYSAUX 테이블스페이스에서 관리된다. |
UNDO 테이블스페이스 | - UNDO 세그먼트라는 특수한 세그먼트로 구성됨 - 테이블이나 인덱스같은 오브젝트는 저장하지 않음 - 테이블스페이스명은 임의 변경 가능. DBCA으로 데이터베이스를 작성할 때는, UNDOTBS1라는 이름으로 저장됨. |
TEMP 테이블스페이스 | - TEMP 세그먼트라는 특수한 세그먼트로 구성됨 - 테이블이나 인덱스같은 오브젝트는 저장하지 않음 - 테이블스페이스명은 임의 변경 가능. DBCA로 데이터베이스를 작성한 경우, TEMP라는 이름으로 저장됨. |
6-3 테이블스페이스의 작성, 확장, 삭제
small테이블스페이스와 big테이블스페이스
-기본적인 테이블스페이스는 모두 smallfile 테이블스페이스이다. 10g 이후에는 bigfile 테이블스페이스가 도입되었는데, bigfile 테이블스페이스는 하나의 데이터파일만 생성할 수 있고, 그 테이터파일은 최대 128TB까지 지정할 수 있다.
-- 테이블스페이스를 삭제하면서 오브젝트도 삭제
DROP TABLESPACE mytbs INCLUDING CONTENTS;
-- 테이블스페이스를 삭제하면서 오브젝트 및 데이터 파일도 몽땅 삭제
DROP TABLESPACE mytbs INCLUDING CONTENTS AND DATAFILES;
6-4 UNDO 테이블스페이스와 TEMP 테이블스페이스
UNDO 테이블스페이스는 갱신전의 과거 데이터를 보관하기 위한 테이블스페이스이다. UNDO 테이블스페이스에 통상적인 세그먼트를 격납하는 것이 불가능하다.
UNDO 데이터의 용도
- 트랜잭션 롤백: 트랜잭션에 의해 실행된 갱신을 되돌리기 위해, 갱신전의 과거 데이터가 필요하기 때문이다.
- 읽기 일관성 보증: 읽기 일관정은, 대상 데이터의 다른 이용자에 의해 갱신된 경우에도 쿼리를 시작한 시점의 데이터를 읽는 기능이다.
- 플래시백: 데이터를 잘못 입력했을 때 등등, 테이블 데이터를 과거의 상태로 되돌리기 위해 사용하는 기능이다.
(* 오라클은 읽기 일관성을 보증하기 위해 consistent 모드와 current 모드를 지원한다. consistent 모드가 읽기 일관성 보증이다. 즉, 다른 프로세스에 의해 트랜잭션이 수행중인 데이터를 조회할 때, 그 트랜잭션의 수행 시작 전의 시점의 데이터를 읽는 것이다. 반면 current 모드는 데이터를 찾아간 최후 시점의 값을 읽는 것으로, DML문을 수행할 때 주로 current 모드를 사용한다. DML을 consistent 모드로 처리하면 lost update가 발생할 수 있기 때문이다.)
TEMP 테이블스페이스
- 메모리상에 처리가 불가능한 대량 데이터를 처리할 경우에 사용하는 테이블스페이스. 여기에 통상적인 세그먼트를 격납하는 것이 불가능하다.
- 프로세스의 PGA에서 처리가 버거운 처리를 실행할 때, 데이터를 TEMP 테이블스페이스에 작성되는 TEMP Segment 저장소를 이용한다. ;
'Oracle > Oracle Architecture' 카테고리의 다른 글
오라클마스터 브론즈(8) 스키마 오브젝트 관리 (1) | 2022.09.13 |
---|---|
오라클마스터 브론즈(7) 유저 및 시큐리티 관리 (0) | 2022.09.12 |
오라클마스터 브론즈(5) Oracle 인스턴스 관리 (0) | 2022.09.07 |
오라클마스터 브론즈(4) Oracle 데이터베이스 환경 구성 (0) | 2022.09.06 |
오라클마스터 브론즈(3) Oracle Enterprise Manager Database Express 및 SQL 관리 TOOL (2) | 2022.09.05 |