ORCAL 臨時創建表與刪除表
一.Orcal臨時表分類
1.會話級臨時表
- 1).保存一個會話
Session
的數據。 - 2).當會話退出時,臨時表數據自動清空。表結構與元數據還存儲在用戶數據字典。
總結:會話級臨時表是指臨時表中的數據隻在會話生命周期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中數據。
2.事務級臨時表
- 1).保存一個事務中需要的數據。
- 2).當事務提交或則回滾的時候,臨時表數據自動清空。表結構與元數據還存儲在用戶數據字典。
總結:事務級臨時表是指臨時表中的數據隻在事務生命周期中存在,當事務提交或則回滾的時候,Oracle
自動清除臨時表中數據。
二.臨時表創建
1.會話級臨時表
1).先創建後插入數據
Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Preserve Rows; Insert Into Table_Name Values("","");
2).創建時直接插入數據
CREATE GLOBAL TEMPORARY TABLE Table_Name ON COMMIT PRESERVE ROWS AS select Col1, Col2 from Query_Table_Name where...;
2.事務級臨時表
1).先創建後插入數據
Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Delete Rows; Insert Into Table_Name Values("","");
2).創建時直接插入數據
CREATE GLOBAL TEMPORARY TABLE Table_Name ON COMMIT Delete ROWS AS select Col1, Col2 from Query_Table_Name where...;
三.刪除臨時表
如果創建臨時表的會話沒有結束,則無法刪除臨時表,因為臨時表還在使用之中。但是結束會話(關閉創建會話級臨時表的命令窗口)後就可以刪除瞭;
Drop Table Table_name;
四.刪除時報錯
描述:關閉原先的命令窗口,然後執行 Drop Table Table_name;
報錯:
ORA-14452:
試圖創建,更改或刪除正在使用的臨時表中的索引
1.清空表,然後刪除表
TRUNCATE TABLE test_table; drop table test_table;
2.殺掉進程,然後刪除
SELECT sid, serial# FROM v$session WHERE sid = (SELECT sid FROM v$lock WHERE id1 = (SELECT object_id FROM user_objects WHERE object_name = upper('test_table')));
如果無權限則執行授權
grant select any dictionary to user;
查詢到該session的sid和serial#:
然後殺掉進程:
lter system kill session 'sid,serial#';
最後進行刪除
drop table test_table;
到此這篇關於ORCAL
臨時創建表與刪除表的文章就介紹到這瞭,更多相關ORCAL
表創建與刪除內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺析SQL Server的嵌套存儲過程中使用同名的臨時表怪像
- PostgreSQL三種自增列sequence,serial,identity的用法區別
- MySQL之select、distinct、limit的使用
- Postgresql去重函數distinct的用法說明
- 詳解MySQL8.0原子DDL語法