开发者

ORCAL 临时创建表与删除表

开发者 https://www.devze.com 2022-12-11 10:20 出处:网络 作者: 最爱白开水
目录一.Orcal临时表分类1.会话级临时表2.事务级临时表二.临时表创建1.会话级临时表2.事务级临时表三.删除临时表四.删除时报错1.清空表,然后删除表2.杀掉进程,然后删除一.Orcal临时表分类
目录
  • 一.Orcal临时表分类
    • 1.会话级临时表

    • 2.事务级临时表

  • 二.临时表创建
    • 1.会话级临时表
    • 2.事务级临时表
  • 三.删除临时表
    • 四.删除时报错
      • 1.清空表,然后删除表
      • 2.杀掉进程,然后删除

    一.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 Thttp://www.devze.comable_Name Values("","");
    

    2).创建时直接插入数据

    CREATE GL编程客栈OBAL 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...;
    KqhyUvcBgM
    

    三.删除临时表

    如果创建临时表的会话没有结束,则无法删除临时表,因为临时表还在使用之中。但是结束会话(www.devze.com关闭创建会话级临时表的命令窗口)后就可以删除了;

    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 = (开发者_SQLiteSELECT 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 表创建与删除内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号