Last Updated on 9월 30, 2021 by Jade(정현호)
Contents
임시 테이블스페이스
Oracle pga 의 sort area의 용량을 넘어건 정렬작업은 디스크를 이용하여 은 order by 나 Goup by 등의 정렬이 필요로 하는 부분이 발생되면 우선 pga영역에서 sort(정렬)작업을 하게 됩니다 하게 되는데 이때 사용되것이 임시 테이블스페이스 입니다
따라서 반드시 필요한 테이블스페이스 입니다.
임시테이블 스페이스의 종류는 아래와 같은 종류가 있습니다.
- 일반테이블의 임시테이블스페이스화 이용
- 임시 테이블 스페이스
- 지역 관리 임시테이블 스페이스
(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의 용량과 방식등의 정보를 확인 할 수 있습니다.
col name format a10 SELECT d.status "Status", d.tablespace_name "Name", d.CONTENTS "Type", d.extent_management "Extent Management", TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.900') "Size (M)", TO_CHAR (NVL (u.BYTES, 0) / 1024 / 1024, '99999999.999') || '/' || TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99999999.999') "Used (M)", TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Cached %" , TO_CHAR (NVL (u.BYTES / a.BYTES * 100, 0), '990.00') "Used %" FROM SYS.dba_tablespaces d, (SELECT tablespace_name, SUM (BYTES) BYTES FROM dba_temp_files GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM (bytes_cached) BYTES FROM v$temp_extent_pool GROUP BY tablespace_name) t , (SELECT tablespace_name, SUM (bytes_used) BYTES FROM v$temp_extent_pool GROUP BY tablespace_name) u WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY';
쿼리를 수행하게 되면 아래 스크린샷과 같이 확인 할수 있습니다
기본적으로 생성이 되어있는 Temporary Tablespace 가 Locally Management 방식으로 생성되어있는것을 확인할수 있습니다
임시 테이블 스페이스 생성
위에서 언급한 내용과 같이 Extent 방식을 지역관리 방식으로 생성 합니다.
- Extent 크기 자동활당 방식
create temporary tablespace temp2
tempfile '/home/oracle/oradata/testdb/temp2.dbf' size 100m
extent management local autoallocate;
- Extent 크기 동일
create temporary tablespace temp2
tempfile '/home/oracle/oradata/testdb/temp2.dbf' size 100m
extent management local uniform size 1m;
기본 임시 테이블스페이스 변경
파라미터 변경을 통해서 기본 임시 테이블 스페이스 변경 할 수 있습니다.
파라미터 변경
SQL> alter database default temporary tablespace temp2;
변경 확인
SQL> select * from database_properties where property_name like '%TEMP%';
임시 테이블스페이스 삭제
먼저 기본 임시 테이블스페이스는 삭제 할 수 없습니다.
SQL> drop tablespace temp2;
drop tablespace temp2
*
ERROR at line 1:
ORA-12906: cannot drop default temporary tablespace
이전 단계에서 기본 임시 테이블스페이스를 temp2 로 지정하였기 때문에 삭제를 할 수 없으며, 이전의 default temp tablespace 인 temp 는 삭제 할 수 있습니다.
SQL> drop tablespace temp;
Tablespace dropped.
연관된 다른 글
UNDO_MANAGEMENT
테이타베이스의 Undo 모드를 자동 모드로 사용 할지 수동 모드를 사용할지 여부를 결정 합니다.
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io