Oracle 临时表创建及删除

Oracle临时表

临时表分为两种

会话级别(ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) 
ON COMMIT PRESERVE ROWS;

会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。即切换到另外一个窗口查询时,数据将被清空。

事务级别(ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) 
ON COMMIT DELETE ROWS;

用户提交commit和回滚rollback事务的时候,临时表的数据自动清空。

创建临时表时,可以使用TYPE快捷创建,操作如下

CREATE GLOBAL TEMPORARY TABLE TEMP_TABLE OF TYPE_NAME ON COMMIT DELETE ROWS;
删除临时表
TRUNCATE TABLE <TABLE_NAME>;
DROP TABLE <TABLE_NAME>;

删除临时表时,偶尔会出现ORA-14452的错误,意思是有资源还在占用临时表,无法删除。需要找到临时表的会话,手动杀掉。

-- 查找还在使用临时表的会话

SELECT sid, serial# 
FROM v$session 
WHERE sid = (SELECT sid FROM v$lock 
WHERE id1 = (SELECT object_id  FROM dba_objects 
WHERE object_name = UPPER('临时表名')));

-- 使用上面查出的sid和serial#,杀掉会话

ALTER system kill session 'sid,serial#';

转载于:https://www.cnblogs.com/ghq120/p/10610758.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值