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

Share

Last Updated on 9월 30, 2021 by Jade(정현호)

임시 테이블스페이스

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.



연관된 다른 글 

 

 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x