【基礎知識】基於事物的臨時表和基於會話的臨時表
今天工作中有遇到關於臨時表的一些問題,現在總結如下:
oracle@C01TEST03:/home/oracle>sqlplus mth/mth
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 22 16:37:26 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
建立基於會話的臨時表:
MTH@MTH> create global temporary table temp_table_session
2 on commit preserve rows
3 as
4 select * from user_objects where 1=0;
Table created.
建立基於事物的臨時表:
MTH@MTH> create global temporary table temp_table_transaction
2 on commit delete rows
3 as
4 select * from user_objects where 1=0;
Table created.
MTH@MTH> select session_cnt,transaction_cnt
2 from
3 (select count(*) session_cnt from temp_table_session),
4 (select count(*) transaction_cnt from temp_table_transaction);
SESSION_CNT TRANSACTION_CNT
----------- ---------------
0 0
分別向兩個表中插入資料:
MTH@MTH> insert into temp_table_session select * from user_objects;
5 rows created.
MTH@MTH> insert into temp_table_transaction select * from user_objects;
5 rows created.
MTH@MTH> select session_cnt,transaction_cnt
2 from
3 (select count(*) session_cnt from temp_table_session),
4 (select count(*) transaction_cnt from temp_table_transaction);
SESSION_CNT TRANSACTION_CNT
----------- ---------------
5 5
提交資料:
MTH@MTH> commit;
Commit complete.
發現基於事物的臨時表中資料被清除:
MTH@MTH> select session_cnt,transaction_cnt
2 from
3 (select count(*) session_cnt from temp_table_session),
4 (select count(*) transaction_cnt from temp_table_transaction);
SESSION_CNT TRANSACTION_CNT
----------- ---------------
5 0
斷開會話,重新登入查詢,發現基於會話的臨時表中資料被清除:
MTH@MTH>
MTH@MTH> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
oracle@C01TEST03:/home/oracle>sqlplus mth/mth
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 22 16:37:26 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
MTH@MTH> select session_cnt,transaction_cnt
2 from
3 (select count(*) session_cnt from temp_table_session),
4 (select count(*) transaction_cnt from temp_table_transaction);
SESSION_CNT TRANSACTION_CNT
----------- ---------------
0 0
參考資料:《Oracle程式設計藝術 深入理解資料庫體系結構》(第三版)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30776559/viewspace-2141140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建立基於事務和基於會話的臨時表及臨時表建索引的實驗會話索引
- Oracle 基礎 ----臨時表和物件表Oracle物件
- 會話級臨時表會話
- Oracle基礎 02 臨時表空間 tempOracle
- 會話與事務級臨時表和dual表會話
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- MySQL基礎和SQL入門【臨時】MySql
- mysql關於臨時表的總結MySql
- 關於with 臨時表 as的一些用法
- Oracle的臨時表Oracle
- 臨時表的操作
- (轉) oracle 臨時表(事務級、會話級)Oracle會話
- 關於Oracle臨時表的使用的小經歷Oracle
- 基於背景知識的對話模型模型
- oracle 臨時表的使用Oracle
- MySQL 中的臨時表MySql
- SQLServer臨時表的使用SQLServer
- oracle臨時表的用法Oracle
- MySQL臨時表MySql
- PostgreSQL:臨時表SQL
- oracle臨時表Oracle
- Oracle 臨時表Oracle
- 關於 oracle 臨時表 ORA-14452Oracle
- 記憶體表和臨時表的區別記憶體
- SQL Server中的臨時表和表變數SQLServer變數
- 再議臨時表和表變數變數
- mysql臨時表和記憶體表MySql記憶體
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案
- mysql的內部臨時表MySql
- oracle的臨時表空間Oracle
- SQL SERVER臨時表的使用SQLServer
- mysql臨時表的問題MySql
- oracle臨時表的用法(轉)Oracle
- SQL server 中的臨時表SQLServer
- oracle 臨時表空間基本常識和操作Oracle
- MySQL之臨時表MySql
- mysql 建立臨時表MySql