오라클(oracle) temporary tablespace(임시 테이블 스페이스) 관리

Last Updated on 11월 3, 2020 by 태랑(정현호)

order by 나 Goup by 등의 정렬이 필요로 하는 부분이 발생되면
우선 pga영역에서 sort(정렬)작업을 하게 됩니다

pga의 sort area의 용량을 넘어건 정렬작업은 디스크를 이용하여
하게 되는데 이때 사용되것이 임시 테이블스페이스 입니다

따라서 반드시 존재해야하는 테이블스페이스 이죠

임시테이블 스페이스의 종류부터 애기하자만

- 일반테이블의 임시테이블스페이스화 이용
- 임시 테이블 스페이스
- 지역 관리 임시테이블 스페이스
(Locally Management Temporary Tablespace)

각각의 차이을 확인해 보면

- extent 활당해체
일반 테이블스페이스 : SMON에 의해수행됨
임시 테이블스페이스 : 수행하지않음
지역관리 임시테이블스페이스 : 수행하지않음

: 일반 테이블스페이스를 임시테이블스페이스로 사용하게 되면
유저 별로 임시 segment를 생성하여 사용하게되어 sort작업 종료시
임시 segment를 활당해체하는 작업이 동반하게 됩니다
세그먼트 활당해제는 SMON 백그라운드에 의해 수행됩니다

임시테이블스페이스와 지역관리 임시테이블스페이스는
하나의 임시 세그먼트를 모든 유저가 공유하여 sort 작업을
하기에 임시 segment 활당해제는 하지 않습니다

- Disk access 방식
일반 테이블스페이스 와 임시테이블스페이스 둘다 일반적인 access
지역관리 임시테이블 스페이스는 Direct access 방식사용

:  PGA의 sort area 사이즈를 넘어선 sort작업시 임시테이블스페이스를
이용시에 일반 테이블 스페이스와 임시테이블 스페이스는 SGA의
데이터 버퍼캐쉬를 경유해 유저 프로세스에게 전달 됩니다

하지만 지역관리 임시테이블스페이스는 SGA를 이용하지않고
유저 프로스세스와 Direct Access를 수행할수 있어 속도가빠르고
부하를 줄일수 있습니다

- 복구
일반 테이블스페이스 : 복구 필요
임시 테이블스페이스 : 복구 필요
지역관리 임시테이블스페이스 : 복구 불필요

: 임시 테이블스페이스는 실질적인 데이터가 저장되어있지않지만
장애로 인한 복구시 임시 테이블스페이스도 복구를 수행하게 됩니다
그로인해 복구시간이 증가 하게 됩니다

그로인하여 오라클은 지역관리 임시테이블스페이스에 대해서는
장애시 복구를 수행하지않아도 DB를 복구 할수있도록 되어있고
DB복구후 임시테이블스페이스를 재생성만 하면 됩니다

위의 예와 여러가지 측면에서 임시 테이블스페이스는
지역관리 임시테이블스페이스로 생성하는것이 좋습니다

http://dbsecurity.egloos.com/9430985 참고한 쿼리를
수행하면 Temporary Tablespace의 용량과 방식등의 정보를 알수있는데요

cfile1.uf.164186164BC97DB00603A6.sql

쿼리를 수행하게 되면 아래 스크린샷과 같이 확인 할수 있습니다

기본적으로 생성이 되어있는 Temporary Tablespace가
Locally Management  방식으로 생성되어있는것을 확인할수 있습니다

임시 테이블 스페이스 생성
위에서 애기한것처럼 extent방식을 지역관리 방식으로 생성한다.

Extent 크기 자동활당 방식
[code sql]
create temporary tablespace temp2
tempfile '/home/oracle/oradata/testdb/temp2.dbf' size 100m
extent management local autoallocate
[/code]

Extent 크기 동일
[code sql]
create temporary tablespace temp2
tempfile '/home/oracle/oradata/testdb/temp2.dbf' size 100m
extent management local uniform size 1m;
[/code]

기본 임시 테이블 스페이스 변경
SQL> alter database default temporary tablespace temp2;

변경 확인
SQL> select * from database_properties where property_name like '%TEMP%';

Temporary Tablespace 삭제
SQL> drop tablespace temp2;
drop tablespace temp2
*
ERROR at line 1:
ORA-12906: cannot drop default temporary tablespace

SQL> drop tablespace temp;

Tablespace dropped.

블로그 내용 다운받기cfile8.uf.134570204BC9863C0D31E6.pdf

답글 남기기