zoukankan      html  css  js  c++  java
  • Oracle 临时表创建及删除

    转:

    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#';
    标签: 数据库
  • 相关阅读:
    二叉树的四种遍历方法笔记
    SpringBoot简单连接数据库以及查询数据
    在Mac下配置Maven环境
    二叉树的存储结构
    二叉树区分左右
    JDBC编程流程以及详细代码
    树的存储结构
    Java基础总结
    Linux命令简写和全称
    spring-security使用
  • 原文地址:https://www.cnblogs.com/libin6505/p/11806142.html
Copyright © 2011-2022 走看看