카테고리 없음

6. 데이터베이스 기억영역구조의 관리

왱코 2018. 8. 1. 01:56

1 - 1 : 데이터베이스의 기억영역구조의 개요

- 제어파일 : 물리구조에대한 정보가 들어있다.(데이터베이스를 구성하는 파일의 상세 패스 등)

- REDO로그파일 : 데이터에 대해 행해진 변경정보가 저장된다.

- 데이터파일 : 모든 표와 색인의 데이터가 들어있다.

- 표영역 : 표와 색인등 데이터베이스 오브젝트가 들어있다. 표 영역하나당 하나이상의 데이터 파일이 작성된다.


1 - 2 : 제어파일 

- 제어파일에는 데이터베이스의 물리구조가 저장되어있다.

- 제어파일은 데이터베이스의 마운트 시 읽어진다.

- 제어파일의 내용은 데이터베이스에 따라 자동적으로 변경된다.

- 제어파일의 손실에 따른 데이터베이스 장애에 대응하기 위해, 제어파일은 다중화 해 둔다.


1 - 3 : REDO로그 파일

- REDO로그파일은 유저가 SQL문을 사용해서 실행한 트랜잭션의 내용, 데이터베이스가 내부적으로 실행한 데이터베이스의 변경이 기록되어진 파일이다.

- REDO로그파일은, 데이터베이스의 리커버리 기능을 담보한다.

- REDO로그파일은 반드시 2개 이상의 REDO로그그룹으로 구성되어, 각 그룹에는 하나이상의 REDO로그파일이 포함된다.

- 로그스위치는 LGWR이 REDO로그파일이 쓰여지는 곳을 현재의 REDO로그파일에서 다음의 그룹의 REDO로그파일으로 교환하는 것이다.

- 아카이브 로그파일은 REDO로그파일이 덮여쓰여지기 전에 복사된 파일이다.

- 아카이브로그파일은 ARCn가 작성한다.

- 그룹 내 각자의 REDO로그파일을 맴버라고 부르고, 그룹내 2개이상의 맵버가 있는 상태를 다중화 상태라고 한다.

- 장애에 대비하기 위해, 2개 이상의 REDO로그파일의 복사본을 따로따로 디스크에 저장시켜 다중화 하는 것을 추천한다.


1 - 4 : 표영역

- 표영역에는 표와 색인등의 데이터베이스 오브잭트를 저장한다

- 각표영역에 대해 하나이상의 데이터파일이 작성된다.

- UNDO 세그먼트와 일시 세그먼트라고 하는 오라클 데이터베이스 시스템이 내부적으로 사용하는 세그먼트는 전용 표영역에 저장된다.

- 표영역 : 하나이상의 데이터 파일이 작성된다. 표영역에는 복수의 세그먼트를 저장한다.

- 세그먼트 : 표세그먼트, 색인세그먼트, 복수의 데이터파일에 걸쳐있는것이 가능히다.

- 익스텐트 : 특정수의 연계된 데이터블록. 사이즈는 표영역 작성시 지정 가능하다. 여러개의 데이터파일에 걸치는 것이 불가능하다.

- 데이터블록 : 입출력 최소단위. 복수의 행이 저장된다. 8K 고정값.

- 사전구성 데이터베이스 : SYSTEM, SYSAUX, TEMP, UNDOTBS1(UNDO데이터의 보존), USERS, EXAMPLE


2 - 1 : 표영역 관리

- 표영역을 신규작성하면, 그 표영역에 대한 데이터파일이 지정한 사이즈로 작성된다.

- 표영역을 작성할 때 정보를 지정할 수 있다. (EXTENT MANAGEMENT LOCAL-로컬관리표영역에 대한 익스텐트 사이즈의 관리방법 설정), (SEGMENT SPACE MANAGEMENT - 세그먼트 표영역관리방법의 설정)

- OMF(Oracle Managed Files)를 사용하면 OS파일은 데이터베이스에 따라 자동적으로 작성되어 관리된다.

- 표영역을 확장하는 방법 3가지.(기존의 표영역에 데이터파일을 추가한다. 사이즈를 수동으로 확장한다. 파일 자동확장을 설정한다.)

- 표영역을 삭제하면 표영역에 저장된 오브젝트도 삭제된다.

- 오브젝트의 데이터만이 아니라, 데이터딕셔너리에 저장되어 있는 정의도 삭제된다.

- Enterprise Manager Database Express를 사용해서 표영역을 삭제하면, 기본값으로 표영역에 대한 데이터 파일도 삭제된다.


3 - 1 : UNDO

- UNDO 데이터는 트랜젝션에 따라 데이터변경이 실행되기 전에 Oracle데이터베이스에 취득되어 변경전에 데이터를 복사한다.

- UNDO 데이터는 롤백의 조작, 플래시백기능, 데이터베이스의 리커버리를 위해 사용된다.

- 트랜잭션을 커밋 후 UNDO데이터를 보관하는 시간을 UNDO보존기간이라고 한다.

- UNDO 데이터를 적절히 보관해서, 플래시백기능과 일관성 유지에 사용한다.

- 자동 UNDO관리가 실행된 데이터베이스는, UNDO보존기간은 자동적으로 튜닝된다.

- 자동확장하는 UNDO 표영역을 사용하는 경우, UNDO보존기간의 하한값을 UNDO_RETENTION초기화 파라미터에 지정할 수 있다.

- UNDO보존기간의 보증 옵션을 유효화하면, 지정된 UNDO의 최소보존기간이 보증된다. UNDO표영역의 영역부족에 따라 트랜잭션이 실패하는 경우에도, 기한이 지나지않은 UNDO데이터는 덮여쓰여지지 않는다.

- Oracle 12c에서는 자동 UNDO관리가 기본설정이다.

- 자동 UNDO관리의 경우, UNDO 데이터는 UNDO표영역 내의 UNDO 세그먼트에 저장된다.

- UNDO 세그먼트는 자동적으로 작성되어, 자동적으로 익스텐트가 할당된다.

- UNDO 세그먼트의 소유자는 SYS유저다.

- UNDO 표영역이 자동확장가능의 경우, UNDO 보존기간은 가장시간이 걸리는 동작보다 길게 튜닝된다.

- UNDO 표영역이 고정사이즈의 경우, UNDO보존기간은 표영역의 사이즈와 현재의 부하에 대한 최적의 보존기간이 되도록 튜닝된다.

- UNDO 표영역이 작을경우, 다음과 같은 에러가 발생할 가능성이 있다.

  * 새 트랜잭션에 대응하는 UNDO 데이터를 저장하기 위한 영역이 부족하기 때문에 DML문의 실패

  * UNDO 데이터의 부족에 따라 읽기일관성이 유지되지 않는것에 대해(스냅샷이오래되었습니다.)라고 에러가 발생한다.

- UNDO 표영역이 작을 경우, 위의 에러가 발생할 뿐만 아니라 플래시백기능에 영향을 주기때문에 적절한 사이즈로 한다.

- UNDO어드바이저를 사용하면, 장래의 장시간실행 조회문과 플래시백조작에 대응하는 UNDO표영역의 최소사이즈를 판단할 수 있다.