暂时表

暂时表让用户仅仅可以操作各自的数据中而互不干扰,不用操心会破坏或影响其它SESSION/TRANSACTION的数据。

暂时表分为SESSION、TRANSACTION两种。

1. SESSION级的暂时表数据在整个SESSION都存在,直到结束此次SESSION;

2. TRANSACTION级的暂时表数据在TRANACTION结束后消失。即COMMIT/ROLLBACK或结束SESSION都会清除TRANACTION暂时表数据。

两种暂时表的语法:

create global temporary table 暂时表名 on commit preserve|delete rows 用preserve时就是SESSION级的暂时表,用delete就是TRANSACTION级的暂时表

一、SESSION级暂时表

1、建立暂时表

create global temporary table temp_tbl(col_a varchar2(30))

on commit preserve rows

2、插入数据

insert into temp_tbl values(‘test session table‘)

3、提交

commit;

4、查询数据

select *from temp_tbl

能够看到数据‘test session table‘记录还在。

结束SESSION,又一次登录,再查询数据select *from temp_tbl,这时候记录已不存在,由于系统在结束SESSION时自己主动清除记录

二、TRANSACTION级暂时表

1、建立暂时表

create global temporary table temp_tbl(col_a varchar2(30))

on commit delete rows。

2、插入数据

insert into temp_tbl values(‘test transaction table‘);

3、提交

commit;

4、查询数据

select *from temp_tbl。

这时候能够看到刚才插入的记录‘test transaction table‘已不存在了;相同。假设不提交而直接结束SESSION。又一次登录记录也不存在

时间: 2024-12-09 06:31:23

暂时表的相关文章

多种暂时表效率的对照分析

多种暂时表效率的对照分析 老帅(20141107) 平时在写存储过程的时候,常常会用到暂时表,而暂时表的使用方法究竟有几种,哪种效率更好呢?我们来做个对照分析. 实验数据:表a有400万条记录,仅仅查询一个字段Title 1.  直接查询 --开启时间分析 SET STATISTICS TIME ON GO --查询 SELECT Title FROM a --结果 SQL Server 运行时间:占用时间 = 22013 毫秒. 2.变量表 --开启时间分析 SET STATISTICS TI

ORACLE-015:ora-25153 暂时表空间为空,ora01652 无法通过128

写了一个复杂的select语句,突然oracle就报了:ora-25153 暂时表空间为空,这个错误,于是网上查了下.发现了例如以下解决方法:创建一个新的暂时表空间. 首先要有system权限.登录进去后, 第一步,创建一个表空间.例如以下,引號中的d是盘符,oracleoradatatestdbtemp01是文件名,100m是大小, temp01是暂时空间名称,可改动. create temporary tablespace temp01 tempfile 'd:oracleoradatate

oracle表空间查询维护命令大全之三(暂时表空间)史上最全

--UNDO表空间汇总 --查看全部的表空间名字 SELECT NAME FROM V$TABLESPACE; --创建新的UNDO表空间,并设置自己主动扩展參数; CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS02.DBF' SIZE 10M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; --注意:在OPEN状态下某

Oracle中暂时表空间的清理

作者:iamlaosong Oracle暂时表空间主要用来做查询和存放一些缓冲区数据. 暂时表空间消耗的主要原因是须要对查询的中间结果进行排序.暂时表空间的主要作用: 索引create或rebuild Order by 或 group by Distinct 操作 Union 或 intersect 或 minus Sort-merge joins analyze 重新启动数据库能够释放暂时表空间.假设不能重新启动实例,而一直保持问题sql语句的运行,temp表空间会一直增长.即使重建了暂时表空

在oracle存储过程中创建暂时表

在oracle的存储过程中,不能直接使用DDL语句,比方create.alter.drop.truncate等. 那假设我们想在存储过程中建立一张暂时表就仅仅能使用动态sql语句了: create or replace procedure pro as str_sql varchar2(100); begin -- 创建暂时表 str_sql := 'create global temporary table temp_table ( col1 varchar2(10), col2 number

【oracle11g,18】存储结构:暂时表,手工条带化,表/索引迁移表空间,删除表,外部表

一. 暂时表 暂时表放在暂时表空间,不生成redo,仅仅有undo. 在暂时表中能够创建索引.视图及触发器,还能够使用"Export and Import(导出和导入)"或"Data Pump(数据泵)"导出和导入暂时表的定义.可是.即使使用了ROWS 选项,也不会导出数据. 有基于事务(默认)和基于session两种.其它的会话不能訪问到. 在暂时表中.DML锁永远不须要. 1.创建默认的(基于事务的)暂时表:(on commit delete rows:提交时清

oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, b.blocks * 32 / 1024 / 1024, a.sid, a.serial#, a.username, a.osuser, a.status, c.sql_text, b.contents FROM v$session a, v$sort_usage b

被Oracle全局暂时表坑了

今天凌晨4点多钟,在客户现场的负责人打电话给我,说非常奇怪,下载功能时快时慢.此下载功能非常复杂,之前一直是我优化,在半梦半醒中打开电脑,通过远程看着现场同事在PL/SQL developer中操作.运行同一条SQL,时快时慢,快的时候大概0.6s,慢的时候超过1分钟. 这条SQL有调用一个函数,功能是动态生成接近200条查询语句,SQL中都是有绑定变量的.是现场的測试环境,刚刚部署,心想应该不是数据库负载所致. 1. 抓取数据库AWR报告,全然没有压力,数据库server配置都是杠杠的.此刻心

数据库中暂时表,表变量和CTE使用优势极其差别

1 在写SQL时常常会用到暂时表,表变量和CTE,这三者在使用时各有优势: 1. 暂时表:分为局部暂时表和全局暂时表. 1.1局部暂时表,创建时以#开头,在系统数据库tempdb中存储. 在当前的链接可见,链接断开则暂时表就自己主动被释放,也能够手动drop table #tmptable 在使用不同的链接同一时候创建同样的暂时表时,互不影响,系统在tempdb中会自己主动附加以特定的session为标识的名字来区分. 经常在SP中使用,把须要操作的数据或者共同的数据取出放在暂时表中,兴许能够进