【基礎知識】基於事物的臨時表和基於會話的臨時表
今天工作中有遇到關於臨時表的一些問題,現在總結如下:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- mysql關於臨時表的總結MySql
- MySQL基礎和SQL入門【臨時】MySql
- 關於with 臨時表 as的一些用法
- oracle 臨時表的使用Oracle
- SQLServer臨時表的使用SQLServer
- MySQL 中的臨時表MySql
- 基於回收站臨時刪除塊裝置
- MySQL臨時表MySql
- PostgreSQL:臨時表SQL
- MySQL之臨時表MySql
- mysql 建立臨時表MySql
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- 關於mysql基礎知識的介紹MySql
- MySQL 5.7 新特性 共享臨時表空間及臨時表改進MySql
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- mysql臨時表,臨時表空間,ibtmp1表空間暴增原因初探MySql
- ORACLE臨時表總結Oracle
- MySQL什麼時候會使用內部臨時表?MySql
- Oracle臨時表的用法總結FLOracle
- 時序分析:基礎知識整理(二)
- 12C關於CDB、PDB 臨時temp表空間的總結
- oracle11g 查詢臨時表空間的使用率和正在使用臨時表空間的使用者Oracle
- Oracle 臨時表 OracleDataAdapter 批次更新OracleAPT
- 基於知識引入的情感分析
- linux(基於ubuntu)的基本知識LinuxUbuntu
- 一些關於網路的基礎知識
- 遊戲基礎知識——角色“女子力”的表現手法遊戲
- 消除臨時表空間暴漲的方法
- MySQL8.0新特性-臨時表的改善MySql
- 基於token的會話保持機制會話
- 前端工程基礎知識點--Browserslist (基於官方文件翻譯)前端
- 前端工程基礎知識點–Browserslist (基於官方文件翻譯)前端
- 基於shiro RBAC的表設計
- [20181108]with temp as 建立臨時表嗎.txt
- Oracle臨時表使用注意事項Oracle
- oracle臨時表空間相關Oracle
- 4.2.1.8規劃臨時表空間
- 刪除臨時表空間組