• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ORCAL 临时创建表与删除表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.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 表创建与删除内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MySQL 百万级数据的4种查询优化方式发布时间:2022-02-08
下一篇:
解决redis服务启动失败的问题发布时间:2022-02-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap