关于Oracle的临时表功能

Oracle 临时表功能介绍:

Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。

Oracle 的临时表分为事务型和会话型。

事务型临时表就是指在事务处理过程中插入的记录只在事务提交或回滚之前有效,一旦事务完成,表中的记录便被自动清除。

会话型临时表指临时表中的数据在本次会话期间一直有效,直到会话结束。会话结束后表中针对此次会话的数据会自动清空。

Oracle 临时表的不足之处:

1、不支持lob对象,例如 Spatial 的SDO_GEOMETRY.这也许是设计者基于运行效率的考虑,但实际应用中确实需要此功能时就无法使用临时表了。

2、不支持主外键关系。这意味着临时表

鉴于以上原因,洒家设计了一份自定义的临时表处理办法,使之可以支持Oracle Spatial数据类型和主外键关系,而且不会出现并发冲突。

1、以常规表的形式创建临时数据表的表结构,但要在每一个表的主键中加入一个 SessionID 列以区分不同的会话。(可以有lob列和主外键)

2、写一个用户注销触发器,在用户结束会话的时候删除本次会话所插入的所有记录(SessionID等于本次会话ID的记录)。

3、程序写入数据时,要顺便将当前的会话ID(SessionID)写入表中。

4、程序读取数据时,只读取与当前会话ID相同的记录即可。

功能增强的扩展设计:

1、可以在数据表上建立一个视图,视图对记录的筛选条件就是当前会话的SessionID.

2、数据表中的SessionID列可以通过Trigger实现,以实现对应用层的透明性。

3、高级用户可以访问全局数据,以实现更加复杂的功能。

扩展临时表的优点:

1、实现了与Oracle的基于会话的临时表相同的功能。

2、支持SDO_GEOMETRY等lob数据类型。

3、支持表间的主外键连接,且主外键连接也是基于会话的。

4、高级用户可以访问全局数据,以实现更加复杂的功能。

时间: 2024-09-24 05:21:47

关于Oracle的临时表功能的相关文章

Oracle全局临时表

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

终于以一种奇怪的方式搞定了Oracle的临时表问题

oracle|临时表|问题 程序中常常需要在一个主键范围内进行子查询,而这个范围是在前台中动态生成的,所以传过来的只能是一个字符串格式的确定这个主键范围的sql语句.以前的做法是在sp中再根据这个sql语句拼出来返回最终结果的更大的语句.发现这样子的语句往往效率很低,而且数据库的改动(例如列名)也往往无法在包编译时被检查出来. 解决的思路是先把这个主键范围的值查询出来,再用这个查询的结果和其他的表作链接,这样最终的sql就不再是字符串格式了.因为主键范围相对比较小,效率也会提高很多. 于是求助于

Oracle 有导出 CSV 文件的功能,java可以调用Oracle的这个功能吗?

问题描述 大家好,请问Oracle有导出CSV文件的功能,java可以调用Oracle的这个功能吗?如果有如何做?谢谢您的回答,(俺是萝卜) 解决方案 解决方案二:应该要自己写方法的吧,再导出为csv文件.我猜的.呵呵解决方案三:不知道是不是能调用但是我觉得有调用它的那个工夫,自己都写了一个导出CSV的模块了

[20130803]ORACLE 12C RMAN 功能增强.txt

[20130803]ORACLE 12C RMAN 功能增强.txt 在oracle 12c rman中可以直接输入sql语句,缺点就是仅仅输出最大仅仅80列,不知道如何调整. d:\tmp>rman target sys/xxxx@test01p Recovery Manager: Release 12.1.0.1.0 - Production on Fri Aug 2 22:53:49 2013 Copyright (c) 1982, 2013, Oracle and/or its affi

Oracle Temp临时表空间及其故障处理

 Oracle Temp临时表空间及其故障处理  Oracle 11g中Temp临时表空间.文件的新特性  临时表空间是Oracle体系结构中比较特殊的结构.通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工作都是系统自动完成.当临时数据不需要时,Oracle后台进程SMON也会负责将临时段回收. 在Oracle的备份恢复体系中,临时文件的地位比较低.在进行备份动作时,RMAN都不会进行临时文件恢复.在恢复启动过程中,如果发现临时文件不存在,通常Oracle也会自动将临

Oracle数据库临时表学习笔记

临时表的概念 在Oracle数据库中还有一种类型的表,叫做临时表.这个临时表跟永久表最大的区别就是表中的数据不会永远的存在.当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除.(表是全局,只是数据消失) 会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据.南京Oracle认证培训   事务级临时表是指临时表中的数据只在事务生命周期中存在.当一个事务结束(commit or rollback)

Oracle中临时表的深入研究

oracle|临时表 最近考虑到我们的数据库端写存储过程关于临时表使用的情况,由于我们   现在还不清楚数据库端到底是怎么处理的,是否和Sql Server的处理方式相   同,是否会存在隐患等等一些问题,为了避免将来不必要的麻烦我做了深   入的研究和查看了一些权威的资料,现在和大家共享,希望大家在处理   Oracle临时表是注意一下:   首先是创建临时表的语法: CREATE GLOBAL TEMPORARY TABLE table "(" column datatype [D

Oracle数据库审计功能详解

一.审计分类: Oracle中审计总体上可分为"标准审计"和"细粒度审计"后者也称为"基于政策的审计",在Oracle10G之后功能得到很大增强.其中标准审计可分为用户级审计和系统级审计.用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作.系统级审计只能由DBA设置,用以监测成功或失败的登录要求.监测GRANT和REVO

NetApp为Oracle提供灾难恢复功能

Pad拥有17年IT工作经验,他在Oracle担任解决方案架构师长达 10 余年,主要负责Oracle数据库.Oracle应用程序.Oracle Grid Control以及Oracle Collaboration Suite的开发工作.自从加入NetApp的Oracle联盟工程小组以来,他一直与Oracle 同行紧密合作,共同开发业界领先的Oracle Fusion Middleware 灾难恢复解决方案以及 ILM(信息生命周期管理)工具. 应用程序可用性对于保持企业竞争力至关重要.但是,灾