by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

4.9 전역 임시 테이블




4.9 전역 임시 테이블

  • 전역 임시 테이블(Global Temporary Table)은 세션 레벨의 임시 데이터를 저장하는 용도
  • 오라클의 실행 계획을 저장하기 위한 Plan 테이블이 전역 임시 테이블의 대표적인 사례
  • 세션 레벨의 임시 데이타 저장하기 때문에 RAC 시스템에서 글로벌 동기화 불필요

-- GLOBAL TEMPORARY TABLE 생성
SQL> create global temporary table TEST_TEMPORARY (
    TEST_CD NUMBER(6) ) ON COMMIT DELETE ROWS ;
-- TRANSACTION 단위로 DATA 가 유지됨
-- ON COMMIT PRESERVE ROWS
-- 의 경우엔 SESSION 단위로 DATA 가 유지됨

-- TEMPORARY TABLE 에 대해서 INDEX 생성 하기 
SQL> CREATE UNIQUE INDEX XPKTEST_TEMPORARYON TEST_TEMPORARY ( TEST_CD ) ;

-- TEMPORARY TABLE 에 대해서 PRIMARY KEY 설정 하기
ALTER TABLE TEST_TEMPORARY ADD( CONSTRAINT XPKTEST_TEMPORARY PRIMARY KEY ( TEST_CD));
11g New

▶11G Tablespace Option for Creating Temporary Table
● Starting with Oracle Database 11g, Specify which temporary
tablespace to use for your global temporary tables.
● Decide a proper temporary extent size.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. 5월 04, 2011

    장태길 says:

    우연히 Global Temporary Table 관련해서 한 포스트를 봐서 따라해봤어요 GLOBAL Temporary Table 소스 / 메타...

    우연히 Global Temporary Table 관련해서 한 포스트를 봐서 따라해봤어요
    GLOBAL Temporary Table 소스 / 메타 정보 확인 하기

    출처 : http://energ.tistory.com/entry/Global-Temporary-Table-확인방법

    SQL> show user
    USER is "OPS$ORACLE"
    SQL> drop table tgt ;

    Table dropped.

    – Create Global Temporary Table ( Default )
    SQL> create global temporary table TGT ( a1 number ) ;
    Table created.
    SQL> select table_name, temporary, duration from user_tables where table_name ='TGT';
    TABLE_NAME TEMPORARY DURATION
    ------------------------------ -------------------- ------------------------------
    TGT Y SYS$TRANSACTION

    SQL> set long 2000
    SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','TGT') FROM DUAL ;
    DBMS_METADATA.GET_DDL('TABLE','TGT')
    --------------------------------------------------------------------------------
    CREATE GLOBAL TEMPORARY TABLE "OPS$ORACLE"."TGT"
    ( "A1" NUMBER
    ) ON COMMIT DELETE ROWS

    – Create Global Temporary Table ( Session )
    SQL> drop table tgt ;
    Table dropped.
    SQL> create global temporary table TGT ( a1 number ) on commit preserve rows ;
    Table created.
    SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','TGT') FROM DUAL ;
    DBMS_METADATA.GET_DDL('TABLE','TGT')
    --------------------------------------------------------------------------------
    CREATE GLOBAL TEMPORARY TABLE "OPS$ORACLE"."TGT"
    ( "A1" NUMBER
    ) ON COMMIT PRESERVE ROWS

    SQL> select table_name, temporary, duration from user_tables where table_name ='TGT';
    TABLE_NAME TEMPORARY DURATION
    ------------------------------ -------------------- ------------------------------
    TGT Y SYS$SESSION