oracle 临时表

Oracle中的临时表Temporary Table Oracle中的临时表(Temporary Table,性能优化的利器 阅读详情
 

Temp Table 的特点:

(1) 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性;
(2) 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。

Temp Table 数据的时效性:

(1)On Commit Delete Rows: 数据在 Transaction 期间有效,一旦COMMIT后,数据就被自动 TRUNCATE 掉了;

SQL> CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Trans
2 ON COMMIT DELETE ROWS
3 AS
4 SELECT * FROM t_Department;

表已创建。

SQL> INSERT INTO QCUI_Temp_Trans
2 SELECT * FROM t_Dept;

已创建4行。

SQL> SELECT * FROM QCUI_Temp_Trans;

    DEPTID DEPTNAME
---------- --------------------
       101 销售部
       201 财务部
       301 货运部
       401 采购部

SQL> commit;

提交完成。

SQL> SELECT * FROM QCUI_Temp_Trans;

未选定行

(2)On Commit Preserve Rows :数据在 Session 期间有效,一旦关闭了Session 或 Log Off 后,数据就被 ORACLE 自动 Truncate 掉。

SQL> CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Sess
2 ON COMMIT PRESERVE ROWS
3 AS
4 SELECT * FROM t_Department;

表已创建。

SQL> Select * from QCUI_Temp_Sess;

    DEPTID DEPTNAME
---------- --------------------
       101 销售部
       301 货运部
       401 采购部
       201 财务部

SQL> exit

C:\Documents and Settings\QCUI>sqlplus sqltrainer@ibm

SQL> SELECT * FROM QCUI_Temp_Sess;

未选定行

注:这里要说明的是,ORACLE Truncate 掉的数据仅仅是分配给不同 Session 或 Transaction的 Temp Segment 上的数据,而不是将整张表数据 TRUNCATE 掉。

Temp Table 的应用:

Temp Table 就我理解而言,主要有两方面应用。

对于一个电子商务类网站,不同消费者在网站上购物,就是一个独立的 SESSION,选购商品放进购物车中,最后将购物车中的商品进行结算。也就是说,必须在整个SESSION期间保存购物车中的信息。同时,还存在有些消费者,往往最终结账时放弃购买商品。如果,直接将消费者选购信息存放在最终表(PERMANENT)中,必然对最终表造成非常大的压力。
因此,对于这种案例,就可以采用创建临时表( ON COMMIT PRESERVE ROWS )的方法来解决。数据只在 SESSION 期间有效,对于结算成功的有效数据,转移到最终表中后,ORACLE自动TRUNCATE 临时数据;对于放弃结算的数据,ORACLE 同样自动进行 TRUNCATE ,而无须编码控制,并且最终表只处理有效订单,减轻了频繁的DML的压力。
Temp Table 的另一个应用,就是存放数据分析的中间数据。

Temp Table 存放在哪儿?

Temp Table 并非存放在用户的表空间中,而是存放在 Schema 所指定的临时表空间中。

SQL> Select Table_Name, Tablespace_Name
2 From User_Tables
3 Where Table_Name Like 'QCUI%';

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
QCUI_TEMP_SESS
QCUI_TEMP_TRANS

可见这两张临时表并未存放在用户的表空间中。
用户 SQLTRAINER 的临时表空间是 TEMP , 用户创建的临时表是存放在TEMP表空间中的。下面来证明

SQL> SELECT UserName, Default_Tablespace def_ts, Temporary_Tablespace temp_ts
   2 FROM User_Users;

USERNAME                       DEF_TS             TEMP_TS
----------------------------- ------------------ ----------
SQLTRAINER                     ts_ORASQLTraining   TEMP

SQL> connect system/manager@ibm

已连接。

SQL> alter tablespace temp offline;     

表空间已更改。

SQL> connect sqltrainer/sqltrainer@ibm

已连接。

SQL> INSERT INTO QCUI_Temp_Sess
2 SELECT * FROM t_Department;

INSERT INTO QCUI_Temp_Sess
            *

ERROR 位于第 1 行:
ORA-01542: 表空间'TEMP'脱机,无法在其中分配空间

对 Temp Table 的 DML 操作是否不产生 Redo Log ?

尽管对临时表的DML操作速度比较快,但同样也是要产生 Redo Log 的,只是同样的DML语句,比对 PERMANENT 的DML 产生的Redo Log 少。

SQL> Set AutoTrace On

SQL> CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Sess_AllObj
2 ON COMMIT PRESERVE ROWS
3 AS
4 SELECT * FROM All_Objects;

表已创建。

SQL> INSERT INTO QCUI_Temp_Sess_AllObj
2 SELECT * FROM All_Objects;

已创建21839行。

Statistics
---------------------------------------------------------
     ……
     168772 redo size
     ……

SQL> CREATE TABLE QCUI_ALL_OBJECTS
2 AS
3 SELECT * FROM All_Objects
4 WHERE 1 = 0;

表已创建。

SQL> INSERT INTO QCUI_All_Objects
2 SELECT * FROM ALL_Objects;

已创建21839行。

Statistics
----------------------------------------------------------
    ……
    2439044 redo size
    ……
 

Oracle 临时表详解(temporary table) 文章目录1 概述2 分类2.1 事务级临时表2.2 会话级临时表 1 概述 1. 作用:用来 '临时' 存储数据 (1) 当一个事务或会话结束的时候,这个临时表中的 '数据' 会被数据库自动清空 (2) 但 '表结构' 依旧保留 2. 分类: '生命周期的不同' (1) 事务级临时表: on commit delete rows; commit 时 '删除' 记录(默认) (2) 会话级临时表: on commit preserve rows; commit 时 '保存' 阅读详情

相关推荐

Oracle 临时表用法汇总

临时表的应用 1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。 2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。

Oracle 临时表的应用

 近年我做的项目中较少使用临时表Temporary Table ,其实 Temp Table 还是可以有比较广泛的应用的。Temp Table 的特点:(1) 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性; (2) 数据的临时性

窃破天道 1632

WhatsApp注册流程逆向分析:从协议解析到风控对抗实战

移动应用安全分析的核心在于理解客户端与服务端的交互协议与验证机制。通过逆向工程,可以深入剖析应用的数据加密、传输与身份验证原理,这对于构建安全模型、进行自动化测试和风控策略研究具有重要技术价值。在即时通讯、金融支付等高安全要求场景中,掌握应用注册流程的底层实现是评估其安全性的关键。本文聚焦于使用动态分析工具如Frida进行Hook和流量抓包,结合设备指纹识别与模拟器检测技术,详细解析了大型应用的注册风控体系,为安全研究人员和开发者提供了从环境搭建到实战对抗的完整方法。

weixin_33935636的博客 317

java oracle 临时表_ORACLE 临时表

1.概念特性临时表用来保存一个会话SESSION或一个事务中需要的数据。当会话退出或事务结束时,临时表的数据自动清空,但是表结构及元数据依旧会存储在用户的数据字典中。临时表不是存放于用户表空间,而是存入于指定的临时表空间中,没有指定临时表(包括其索引)存入的表空间的时间,临时表的数据则存放于系统的临时表空间中(TEMP)。临时表上可以创建索引,视图和触发器,可以用EXPORT 和 IMPORT 工...

weixin_33268205的博客 554

【faers数据库-R语言】

摘要:本文详细介绍了FAERS数据库不良反应信号挖掘的完整流程,包括数据解压导入(R代码示例)、数据结构理解、数据清洗(缺失值处理、标准化、合并和编码映射)、信号挖掘准备(药物-反应组合表创建)以及信号强度指标计算(PRR和ROR)。重点阐述了数据清洗的关键步骤,如缺失值处理(colSums(is.na()))、数据标准化(toupper()、as.Date())和表合并(merge()),并提供了完整的R语言实现代码。最后强调结果需结合临床知识解读,建议使用data.table等高效工具处理大数据。整个流

weixin_46587777的博客 1505

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

【转】Oracle两种临时表的创建与使用详解

ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。 分类: 1.会话级临时表 会话级临时表是指临时表中的数据只在会话生命周期之中

大厨的专栏 1057

mobaXterm连接vmWare虚拟机上的centOS7提示连接失败的解决方法

1.问题描述: mobaXterm安装后连接虚拟机vmWare上的centOS7发现连接不上,如下图所示: 2.解决方法 先是查了一下centOS的ip 开始错误的以为 virbr0: 后面的inet就是虚拟机的IP 实则不然(正确的ip是在ens33后面的inet中的ip,大佬们勿喷) 这个值需要配置一下的,具体配置过程如下: step1: 进入centOS下的/...

hss19214的博客 7891

oracle临时表

oracle临时表

lxslf的博客 6189

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南

本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。

weixin_29210759的博客 72

【MDC开发者课程】MDC功能软件-归控算法介绍

规控算法

博客标题不能为空我也没办法 1844

ORACLE临时表总结

临时表概念    临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别。它只能存储在临时表空间,而非用户的表空间。ORACLE临时表是会话或事务级别的,只对当前会话或事务可见。每个会话只能查看和修改自己的数据。   临时表语法       临时表分类   ORACLE临时表有两种类型:会话级的临时表和事务级的临时表。 1

流年~~ 2077

Claude桌面端安装失败?Retrying无限重试终极解决方案(亲测有效)

Claude桌面端安装卡在Retrying并非网络问题,而是安装器下载源异常导致。本文提供已验证方案:一条命令即可解决问题🚀

XiaoqiangClub的博客 2350

oracle数据存入临时表,oracle中创建临时表步骤

当前位置:我的异常网» 数据库»oracle中创建临时表步骤oracle中创建临时表步骤www.myexceptions.net网友分享于:2014-06-08浏览:4次oracle中创建临时表方法1.首先必须有权限:创建临时表的用户好像必须要有CREATE ANY TABLE 如果你有这个权限的还按照上面两位说得一定可以。2.建表的语法示例:-------创建虚拟表create gl...

weixin_42279592的博客 7303

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

千歌叹尽执夏的博客 1109

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

oracle的临时表

GPS平台、网站建设、软件开发、系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=2073 在Oracle数据库中,可以创建以下两种临时表: (1)会话特有的临时表 CREATE GLOBAL TEMPORARY <TABLE_NAME> () ON COMMIT PRESERVE ROWS; (2)事务特有的临时表 CREATE GLOBAL TEMPORAR

森大科技的博客 4196

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

oracle数据存入临时表,ORACLE数据库临时表总结

oracle临时表用法总结oracle 临时表原理、作用、语法、例子oracle的临时表在应用系统中有很大作用,他可以让用户只操作自己的数据而不相互干扰。不用担心破坏或影响其他SESSION或TRANSACTION的数据。也是数据安全的一种解决方法。缓存中间数据时候,都是自己建一个临时表。其实oracle本身在这方面就已经考虑很全了,除非有些高级应用,我再考虑自己创建临时表。一、前言目前所有使用O...

weixin_39752215的博客 2415

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

oracle临时表总结

最近有用到Oracle临时变,看了些文章,自己简单摘抄并整理了一下,测试为自己亲测,希望对大家有用。1.使用场景当你发现你的应用有多张表关联的时候, 并且这些表大部分都是比较庞大,而你关 联的时候发现其中的某一张或者某几张表 关联之后得到的结果集非常小并且查询得 到这个结果集的速度非常快,那么这个时 候我考虑在Oracle中创建“临时表”。(1)当某一个SQL语句关联的表在2张及以上,并且和一些小...

Sam2008的博客 938

oracle 临时表是什么,ORACLE的临时表和虚拟临时表

OCACLE的虚拟表有三种,分别是 事务级临时表、会话级临时表和虚拟临时表,相同点:三种表都不能永久的保存记录。事务级临时表、会话级临时表都是用临时表空间。虚拟临时表连表空间都没有,全在内存里面。不同点:事务级临时表临时表在提交后就回被清空,但是,表结构依然存在。而会话级临时表只有在SESSION 断开后才会被清空,但是,表结构依然存在。虚拟临时表只能在select中使用,并且只对一条语句使用(第...

weixin_32653933的博客 643

Oracle全局临时表和私有临时表

GTT更早。GTT是8i就有的特性,PTT是18c才有的特性。 GTT和PTT的数据都是会话私有的,而且会话结束后数据就没有了,但GTT的定义是全局的。 事务提交时,GTT可以选择是否保留数据,PTT可以选择是否保留定义。 GTT的表定义是所有会话共享的;PTT的表定义是会话私有的。 关于GTT和PTT的实验

In-Memory Computing Technology 4856

oracle的临时表总结

oracle创建临时表。

风归去. 5605

Oracle临时表详解

临时表是一种特殊的表。当我们需要对某一(也可以是多个)表中的一批数据进行反复的操作时,通过对这批数据创建一个临时表,可能会简化操作并且有可能提高效率!

专注Java后端技术干货、项目源码总结分享,期待您的关注。 1万+

oracle临时表需要手动删除吗,[oracle] 关于临时表 创建 删除 拷贝

ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法。临时表的种类与数据生命周期:临时表分为会话级临时表 和 事务级临时表。会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。事务级临时表 是指临时...

weixin_30613479的博客 1384

oracle视图建临时表,Oracle全局临时表

目前所有使用Oracle作为数据库支撑平台的应用,大部分是数据量比较庞大的系统,即表的数据量级一般情况下都是在百万级以上。当然,在Oracle中创建分区是一种不错的选择,但是当发现应用有多张表关联的时候,并且这些表大部分都比较庞大,而关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小,并且查询得到这个结果集的速度非常快,那么这个时候考虑在Oracle中创建“临时表”。在创建数据表的时...

weixin_32058991的博客 965

oracle 临时表内存表,Oracle 临时表

Oracle Temporary Tables[@more@]1.建立语法A.ON COMMIT DELETE ROWS定义了建立事务级临时表的方法CREATE GLOBAL TEMPORARY TABLE TABLE_NAME-----(COUMNS …)-----AS SELECT … FROM TABLE…ON COMMIT DELETE ROWS;当前session发出commit/rol...

weixin_34563472的博客 881

Oracle临时表总结

它是临时表的默认参数,表示临时表中的数据仅在事物过程(Transaction)中有效,当事物提交(COMMIT)后,临时表的暂时段将被自动截断(TRUNCATE),但是临时表的结构 以及元数据还存储在用户的数据字典中。2:事务级的临时表(默认),这种类型的临时表与事务有关,当进行事务提交或者事务回滚的时候,临时表的数据将自行截断,即当COMMIT或ROLLBACK时,数据就会被TRUNCATE掉,其它的特性和会话级的临时表一致。ORACLE临时表有两种类型:会话级的临时表和事务级的临时表。

weixin_40191861的博客 2443
上一篇: oracle学习笔记_触发器
下一篇: 三大范式
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值