`

Oracle 临时表用法

 
阅读更多

ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法。 和一些其他的关系型数据库的临时表不同,当你在oracle数据库中创建一个临时表时,您将创建一个静态表的定义。临时表在数据字典中描述的是一种持久性对象,但是是空的,直到您的会话数据插入到表中。
临时表分为SESSIONTRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而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,重新登录记录也不存在

 

三、ORACLE临时表和SQLSERVER临时表异同

SQL SERVER临时表也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft? SQL Server? 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全权限就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表,只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的全局临时表,数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断开连接后删除该表

不同:

1.SQL SERVER临时表是一种”内存表”,表是存储在内存中的.ORACLE临时表除非执行DROP TABLE,否则表定义会保留在数据字典中.

2.SQL SERVER临时表不存在类似ORACLE临时表事务级别上的功能.

3. SQL SERVER本地临时表(#) ORACLE的会话级别临时表类似,但是在会话退出的时候,ORACLE不会删除表.

4.SQL SERVER的全局临时表(##) 是指多个连接共享同一片内存.当没有指针引用该内存区域时,SQL SERVER自动释放全局临时表.

5.由于ORACLE不是一种内存中的数据库. 所以如果ORACLE类似SQL SERVER 频繁的对临时表进行建立和删除,必定会影响性能.所以ORACLE会保留临时表的定义直到用户DROP TABLE.

6.ORACLE,如果需要多个用户共享一个表(类似SQL SERVER的全局临时表##).则可以利用永久表,并且在表中添加一些可以唯一标识用户的列.利用触发器和视图.当用户退出的时候,根据该登陆用户的唯一信息删除相应的表中的数据. 这种方法给ORACLE带来了一定量的负载.

分享到:
评论

相关推荐

    oracle临时表用法

    Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储数据,用于实现一些特定的应用场景。下面是 Oracle 临时表的详细知识点: 创建临时表 创建临时表的语法为: ``` CREATE GLOBAL ...

    Oracle 临时表用法汇总

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

    Oracle临时表空间不足和批处理缓慢问题探讨.pdf

    2. 解决临时表空间不足问题的方法:通过编写记录使用临时表空间 SQL 语句的脚本,抓取最消耗临时表空间的语句,并对其进行优化。 3. AWR 报告的作用:AWR 报告可以显示占用临时表空间最高的 SQL 语句,但可能不准确...

    ORACLE中临时表

    Oracle中的临时表是一种特殊的数据结构,用于存储会话或事务期间的数据,这些数据仅对当前会话可见,并在特定条件下自动清除。Oracle提供两种类型的临时表:事务型和会话型。 事务型临时表在事务开始时创建,插入的...

    oracle临时表

    Oracle临时表是数据库管理系统中的一种特殊表,它主要用于在会话期间存储临时数据,供当前会话使用。这种表在会话结束时会被自动删除,不会永久保存在数据库中,因此,它们对于处理大量中间结果或者进行复杂计算的...

    不让临时表空间影响ORACLE数据库性能

    - 文件"不要让临时表空间影响数据库性能 - Oracle - 3.mht"可能提供了实际的配置和优化步骤,包括脚本示例和监控工具的使用。 通过理解和优化临时表空间,可以显著提升Oracle数据库的性能,尤其是在处理大数据量和...

    oracle-临时表空间

    ### Oracle 临时表空间详解 ...总结而言,通过上述内容我们可以了解到Oracle数据库中临时表空间的基本概念、查询方法以及如何进行创建、修改和删除等操作。掌握这些知识点有助于更好地管理和优化数据库性能。

    Oracle中临时表的创建

    #### 二、Oracle临时表概述 临时表是Oracle提供的一种特殊类型的表,用于存储临时数据。它们通常用于执行复杂的计算任务或暂存中间结果,以减少对主表的访问次数,从而提升整体性能。根据生命周期的不同,临时表...

    oracle 临时表使用例子并用CURSOR返回结果集的例子

    本篇文章将深入探讨Oracle临时表的使用,并通过一个使用游标(CURSOR)返回结果集的例子来进一步理解其用法。 首先,让我们了解如何创建Oracle临时表。临时表的创建语法与普通表类似,但我们需要使用`GLOBAL ...

    OracleTemporaryTables(Oracle临时表).pdf

    Oracle Temporary Tables,也称为Oracle临时表,是在Oracle数据库中用于临时存储数据的特殊表。它们主要用在处理大型数据集时提高性能,特别是在复杂的查询和存储过程中。临时表的生命周期和可见性根据创建时指定的...

    Oracle临时表空间处理.txt

    综上所述,Oracle 数据库中临时表空间的管理涵盖了多个方面,包括查看、调整大小、创建、更改默认设置、删除以及监控使用情况等。通过对这些操作的熟练掌握,可以有效提高数据库的性能和稳定性。

    Oracle优化, 优化查询速度,目前所有使用Oracle作为数据库支撑平台的应用

    除了基本的使用方法之外,Oracle临时表还支持一些高级特性,如: - **索引**: 可以为临时表创建索引,进一步提高查询性能。 - **分区**: 对于非常大的数据集,可以考虑使用分区技术来管理临时表。 - **并发控制**: ...

    一个选查询后插入到一个临时表的oracle函数

    ### 一个选查询后插入到一个临时表的Oracle函数 #### 概述 在Oracle数据库环境中,函数是一种非常有用的数据库对象,它允许开发者封装复杂的逻辑并返回特定的结果。本文将详细解析一个特定的Oracle函数——`NS_...

    如何解决Oracle8i数据库临时表空间满的问题.pdf

    4. Oracle临时表空间满的问题:当临时表空间的磁盘空间被全部占用后,可能会出现错误消息,例如“ORA-1652: unable to extend temp segment by %s in tablespace %s”。这会导致用户无法完成如排序、并行查询等操作...

    Temp-Table-In-Oracle.rar_TEMP TABLE orac_Table_oracle ppt

    在Oracle数据库系统中,"Temp Table"或"临时表"是一种特殊类型的表,主要用于存储临时数据,这些数据只在...通过文档《复件 Oracle临时表用法的经验心得.doc》,你可以深入学习更多关于Oracle临时表的实际应用和技巧。

    对比Oracle临时表和SQL Server临时表的不同点

    1. Oracle临时表: - **生命周期**:Oracle提供了两种类型的临时表,即会话级临时表和事务级临时表。会话级临时表在会话结束时自动清空数据,而事务级临时表则在事务结束(无论是提交或回滚)时清空。 - **数据...

    ORACLE修改表空间大小

    当Oracle数据库执行涉及排序、连接等操作时,会使用临时表空间来存储临时数据。如果这些操作所需的空间超过了临时表空间的可用空间,就会引发ORA-01652错误。 #### 二、ORA-01652 错误分析 ##### 1. 错误现象 当...

    Oracle删除表中的重复数据

    在Oracle中删除表中的重复数据,可以采用多种策略,但通常涉及创建一个临时表来保存去重后的数据,然后用这个临时表覆盖原始表。这种方法可以避免直接修改原表带来的风险,确保操作的安全性。以下是一种具体的实现...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

Global site tag (gtag.js) - Google Analytics