關於 oracle 臨時表 ORA-14452
--總結:不管事務級還是會話級的臨時表,都需要所有會話解除繫結,才能drop,解除繫結的辦法就是清空每個會話的資料
--清空資料的辦法:事務級別的臨時表:commit/truncate table;會話級的臨時表:truncate table ;
--注意,事務級臨時表:不能用delete所有資料 然後commit這種方式清空,必須用truncate table,才能解除該會話同臨時表的繫結
--事務級:on commit delete rows;
--會話級:on commit preserve rows;
--ORA-14452: attempt to create, alter or drop an index on temporary table already in use避免此錯誤就是解除所有資料繫結,清空每個使用的資料。
--測試會話級臨時表
sqlplus
sql> set sqlprompt "SESSION 1"
SESSION 1> CREATE GLOBAL TEMPORARY TABLE TMP01 (int_id integer) ON COMMIT PRESERVE ROWS;
Table created.
SESSION 1> insert into tmp01 values (11);
1 row created.
SESSION 1> select * from tmp01;
INT_ID
----------
11
SESSION 1> commit;
Commit complete.
SESSION 1> select * from tmp01;
INT_ID
----------
11
SESSION 2> insert into tmp01 values(22);
1 row created.
SESSION 2> select * from tmp01;
INT_ID
----------
22
SESSION 1> truncate table tmp01;
Table truncated.
SESSION 1> drop table tmp01;
drop table tmp01
*
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already
in use
SQL> truncate table tmp01;
Table truncated.
SESSION 1> drop table tmp01;
Table dropped.
--測試事務臨時表
SESSION 1> CREATE GLOBAL TEMPORARY TABLE TMP01 (int_id integer) ON COMMIT delete rows;
Table created.
SESSION 1> insert into tmp01 values (11);
1 row created.
SESSION 1> select * from tmp01;
INT_ID
----------
11
SESSION 2> insert into tmp01 values(22);
1 row created.
SESSION 2> select * from tmp01;
INT_ID
----------
22
SESSION 1> commit;
Commit complete.
SESSION 1> select * from tmp01;
no rows selected
SESSION 1> select * from tmp01;
no rows selected
SESSION 1> drop table tmp01;
drop table tmp01
*
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already
in use
SESSION 2> drop table tmp01;
Table dropped.
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70612/viewspace-1034301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Oracle臨時表的使用的小經歷Oracle
- oracle臨時表空間相關Oracle
- oracle臨時表Oracle
- Oracle 臨時表Oracle
- mysql關於臨時表的總結MySql
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- 關於with 臨時表 as的一些用法
- Oracle的臨時表Oracle
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- Oracle Temporary Tables(Oracle 臨時表)Oracle
- 關於oracle with table as 建立臨時表的用法示例以及使用with as 的優點Oracle
- oracle 臨時表的使用Oracle
- ORACLE臨時表總結Oracle
- Oracle全域性臨時表Oracle
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- oracle臨時表的用法Oracle
- 關於Oracle臨時表的使用的小經歷和一點疑問?Oracle
- 關於全域性臨時表DML特性案例體現
- Oracle 臨時表空間概念Oracle
- oracle臨時表空間組Oracle
- Oracle臨時表GLOBAL TEMPORARY TABLEOracle
- oracle的臨時表空間Oracle
- Oracle Temp 臨時表空間Oracle
- oracle臨時表的用法(轉)Oracle
- Oracle 基礎 ----臨時表和物件表Oracle物件
- 關於排序、sort_area_size、臨時表空間(轉)排序
- 【基礎知識】基於事物的臨時表和基於會話的臨時表會話
- Oracle臨時表相關知識Oracle
- Oracle臨時表使用注意事項Oracle
- oracle全域性臨時表的特性Oracle
- Oracle TEMP臨時表空間概念Oracle
- Oracle 臨時表空間的概念Oracle
- oracle臨時表實際應用Oracle
- ORACLE臨時表空間總結Oracle
- oracle 重建臨時表空間 tempfileOracle
- 刪掉Oracle臨時表空間Oracle
- oracle 臨時表間重建的方法Oracle