Oracle 임시 표 on commt preserver rows 와 on commt delete rows 의 차이

12731 단어 Oacle
Oracle 임시 표: Oracle 에서 표를 만 듭 니 다. 이 표 는 다른 어떤 기능 에 사용 되 지 않 습 니 다. 주로 자신의 소프트웨어 시스템 의 일부 독특한 기능 에 사용 되 고 사용 한 후에 표 의 데 이 터 는 사용 되 지 않 습 니 다.Oracle 의 임시 테이블 생 성 후 테이블 공간 을 거의 차지 하지 않 습 니 다. 임시 테이블 (임시 테이블 의 인덱스 포함) 에 저 장 된 테이블 이 비어 있 지 않 을 때 임시 테이블 에 삽 입 된 데 이 터 는 ORACLE 시스템 의 임시 테이블 공간 (TEMP) 에 저 장 됩 니 다.1. 임시 표 의 생 성 은 Oracle 임시 표를 만 들 고 두 가지 유형의 임시 표 가 있 습 니 다. 세 션 급 임시 표 사무 급 임시 표 입 니 다.1) 세 션 급 임시 표 는 이 임시 표 의 데이터 가 현재 세 션 과 관계 가 있 기 때문에 현재 SESSION 이 종료 되 지 않 은 상태 에서 임시 표 의 데이터 가 존재 합 니 다. 현재 SESSION 을 종료 할 때 임시 표 의 데 이 터 는 모두 없습니다.물론 이 럴 때 다른 세 션 으로 로그 인 할 때 다른 세 션 에 임시 표 에 삽 입 된 데 이 터 를 볼 수 없습니다.즉, 서로 다른 세 션 이 삽입 한 데 이 터 는 서로 무관 하 다 는 것 이다.어떤 SESSION 이 종료 되면 임시 표 의 데이터 가 잘 립 니 다 (truncate table, 즉 데이터 가 비 워 집 니 다).세 션 급 임시 테이블 생 성 방법:
Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Preserve Rows ;
예:
create global temporary table Student ( Stu_id Number(5), Class_id Number(5), Stu_Name Varchar2(8), Stu_Memo varchar2(200)) on Commit Preserve Rows ;
2) 사무 급 임시 표 는 이 임시 표 가 사무 와 관련 되 어 있 으 며, 사무 제출 이나 업무 스크롤 백 을 진행 할 때 임시 표 의 데 이 터 는 스스로 차단 되 고, 기타 내용 과 세 션 급 임시 표 의 일치 (SESSION 을 종료 할 때 사무 급 임시 표 도 자동 으로 차단 되 는 것 포함) 를 말한다.트 랜 잭 션 급 임시 테이블 생 성 방법:
Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Delete Rows ;
예: Commit delete Rows 에서 글로벌 임시 테이블 클래스 (클래스 id 번호 (5), 클래스 이름 Varchar 2 (8), 클래스 메모 varchar 2 (200) 를 생 성 합 니 다.
3) 두 가지 유형의 임시 표 의 구별 세 션 급 임시 표 는 on commt preserve rows 를 사용 합 니 다.사무 급 은 on commt delete rows 를 사용 합 니 다.용법 상 세 션 단 계 는 세 션 이 끝 날 때 임시 표 의 데이터 만 절 단 됩 니 다. 또한 사무 급 임시 표 는 commt, rollback 또는 세 션 이 끝 날 때 임시 표 의 데 이 터 는 절 단 됩 니 다. 4) 임시 표 1 을 언제 사용 합 니까? 어떤 SQL 문장 과 연 결 된 표 가 2 장 이상 이 고 작은 표 와 연 결 됩 니 다.큰 시 계 를 분리 하고 작은 결 과 를 얻어 임시 표 에 집합 하여 저장 할 수 있 습 니 다. 2) 프로그램 실행 과정 에서 임시 데 이 터 를 저장 해 야 할 수도 있 습 니 다. 이 데 이 터 는 전체 프로그램의 세 션 과정 에서 사용 해 야 할 수도 있 습 니 다.2. 임시 표 의 부족 한 점 1) lob 대상 을 지원 하지 않 습 니 다. 이것 은 디자이너 가 운영 효율 을 바탕 으로 하 는 고려 일 수도 있 지만 실제 응용 에서 이 기능 이 필요 할 때 임시 표를 사용 할 수 없습니다.2) 주 키 관 계 는 지원 되 지 않 습 니 다.
-- 세 션 기반 임시 표 는 세 션 기반 임시 표 에 대해 연결 을 끊 으 면 임시 표 의 데이터 가 비 워 집 니 다.
C:\Users\Administrator>SQLPLUS lxj/rusky@rusky



SQL*Plus: Release 11.2.0.1.0 Production on     2  13 11:29:12 2015



Copyright (c) 1982, 2010, Oracle. All rights reserved.



   :

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options



SQL> create global temporary table temp_table_session (id int, value varchar2(10)) on commit preserve rows;

Table created



SQL> insert into temp_table_session values(1,111); ---    

1 row inserted



SQL> insert into temp_table_session values(2,112);

1 row inserted





SQL> select * from temp_table_session; --    

ID VALUE

--------------------------------------- ----------

1 111

2 112



SQL> commit; --commit  

Commit complete



SQL> select * from temp_table_session;

ID VALUE

--------------------------------------- ----------

1 111

2 112



SQL> exit --

  Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options   



C:\Users\Administrator>SQLPLUS lxj/rusky@rusky



SQL*Plus: Release 11.2.0.1.0 Production on     2  13 11:31:22 2015



Copyright (c) 1982, 2010, Oracle. All rights reserved.





   :

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options



SQL> select * from temp_table_session;



    



 

-- 트 랜 잭 션 기반 임시 표 는 세 션 기반 임시 표 에 대해 연결 을 끊 으 면 임시 표 의 데이터 가 비 워 집 니 다.
SQL> create global temporary table temp_table_transaction(id int, value varchar2(10)) on commit delete rows;

Table created



SQL> insert into temp_table_transaction values(1,333);



    1  。



SQL> insert into temp_table_transaction values(2,444);



    1  。



SQL> select * from temp_table_transaction;



ID VALUE

---------- ----------

1 333

2 444



SQL> commit;



    。



SQL> select * from temp_table_transaction;



    



SQL>

임시 표 는 사전에 세 션 / 저장 과정 에서 INSERT / SELECT 작업 만 하고 저장 과정 에서 임시 표 임시 표 데 이 터 를 만 드 는 것 을 피 합 니 다. 현재 세 션 만 검색 할 수 있 습 니 다. 세 션 1 의 데 이 터 는 세 션 2 에서 검색 할 수 없고 표 구조 만 검색 할 수 있 습 니 다.Oracle 은 세 션 이 끝 난 후에 임시 표를 삭제 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기