임시 테이블

  • 트랜잭션 또는 세션의 내부적인 중간 결과 집합을 저장하는 데 사용.
  • 데이터는 수행 중인 현재 세션에서만 볼 수 있으며, 다른 세션의 데이터는 결코 볼 수 없다.
  • 포함된 데이터 정보에 대한 언두를 생성하기 때문에 어느 정도의 리두를 생성.
    (update, delete는 가장 많은 양을 필요로하고, insert와 select는 적은양이 필요)
  • temporary tablespace에 저장공간 할당.
  • global 임시 테이블은 테이블 자체에 대한 템플릿.
  • 임시 테이블 생성 당시에는 저장공간을 할당 하지 않는다.
  • 임시 테이블에 처음으로 데이터가 삽입될 때 비로소 해당 세션에 임시 세그먼트 생성.
  • 고정된 객체로 미리 생성해 놓는다. (객체로서 데이터 딕셔너리에 존재)
  • 세션 단위 또는 트랜잭션 단위로 동작
    • on commit preserve rows : 세션 기반. (세션이 끊어져야 데이터 삭제)
    • on commit delete rows : 트랜잭션 기반. (commit시 데이터 삭제)
  • 참조 키 제약을 설정할 수 없다.
  • 중첩 테이블 타입 컬럼은 포함할 수 없다. (9i 이하 버전에서는 VARRAY 타입 컬럼도 생성 불가)
  • IOT 테이블로 생성 할 수 없다.
  • 클러스터 테이블 유형으로 생성할 수 없다.
  • 파티션으로 생성할 수 없다.
  • analyze 명령어를 통한 통계 생성 정보는 생성 될 수 없다.
  • CBO 사용시 통계 정보를 옵티마이저에 알려주는 방법
    • 동적 샘플링
    • dbms_stat 패키지 사용.