- 浏览: 309426 次
- 性别:
- 来自: 南昌
文章分类
最新评论
-
秋风扫落叶:
不错,学习了。shadow文件中记录的格式是什么?
/etc/passwd & /etc/shadow 详解 -
key232323:
重拾jstl——写得很好。我收藏下。
JSTL标签用法 -
zxl10059:
不错,非常简明扼要
Hibernate分页 -
Batmankwok:
很好,所见略同,
自定义组件MXML和as两种实现的方式和区别 -
Dxx23:
摘话回帖!
通过response对象的sendRedirec ...
response.sendRedirect方式的转向与RequestDispatcher的forward方法的比较
在Oracle8i或以上版本中,可以创建以下两种临时表:
1。会话特有的临时表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
ON COMMIT PRESERVE ROWS;
2。事务特有的临时表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧,我把下面两句话再贴一下:
--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
冲突的问题更本不用考虑.
临时表只是保存当前会话(session)用到的数据,数据只在事务或会话期间存在。
通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,对于事务类型的临时表,
数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在。
会话的数据对于当前会话私有。每个会话只能看到并修改自己的数据。DML锁不会加到
临时表的数据上。下面的语句控制行的存在性。
● ON COMMIT DELETE ROWS 表名行只是在事务期间可见
● ON COMMIT PRESERVE ROWS 表名行在整个会话期间可见
可以对临时表创建索引,视图,出发器,可以用export和import工具导入导出表的
定义,但是不能导出数据。表的定义对所有的会话可见。
Temporary Tables临时表
1简介
ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,
或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,
但是临时表的结构以及元数据还存储在用户的数据字典中。
临时表只在oracle8i以及以上产品中支持。
2详细介绍
Oracle临时表分为 会话级临时表 和 事务级临时表。
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。
事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。
临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,并且不能访问其它Session的临时表中的数据。因此,
临时表不需要DML锁.当一个会话结束(用户正常退出 用户不正常退出 ORACLE实例崩溃)或者一个事务结束的时候,Oracle对这个会话的
表执行 TRUNCATE 语句清空临时表数据.但不会清空其它会话临时表中的数据.
你可以索引临时表和在临时表基础上建立视图.同样,建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效.
临时表可以拥有触发器.
3建立临时表
临时表的定义对所有会话SESSION都是可见的,但是表中的数据只对当前的会话或者事务有效.
建立方法:
1) ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法.
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;
EXAMPLE:
SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
2 (startdate DATE,
3 enddate DATE,
4 class CHAR(20))
5 ON COMMIT DELETE ROWS;
SQL> create table permernate( a number);
SQL> insert into admin_work_area values(sysdate,sysdate,'temperary table');
SQL> insert into permernate values(1);
SQL> commit;
SQL> select * from admin_work_area;
SQL> select * from permernate;
A
1
2)ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法.
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT PRESERVE ROWS;
EXAMPLE:
会话1:
SQL> drop table admin_work_area;
SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
2 (startdate DATE,
3 enddate DATE,
4 class CHAR(20))
5 ON COMMIT PRESERVE ROWS;
SQL> insert into permernate values(2);
SQL> insert into admin_work_area values(sysdate,sysdate,'session temperary');
SQL> commit;
SQL> select * from permernate;
A
----------
1
2
SQL> select * from admin_work_area;
STARTDATE ENDDATE CLASS
---------- ---------- --------------------
17-1?? -03 17-1?? -03 session temperary
会话2:
SQL> select * from permernate;
A
----------
1
2
SQL> select * from admin_work_area;
未选择行.
会话2看不见会话1中临时表的数据.
4 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带来了一定量的负载.
发表评论
-
序列初始化过了,但每次currval都要先nextval,为何?
2010-06-19 09:04 2314序列已经初始化过了, ... -
参考游标(refcursor)的使用
2010-06-18 16:00 1353参考游标(refcursor)的使用 我们知道在sql ... -
精妙SQL语句
2010-06-13 15:06 730说明:复制表(只复制结构,源表名:a 新表名:b) S ... -
sql 中case的用法
2010-06-13 15:04 1786首先让我们看一下 CASE 的语法。在一般的 SELECT 中 ... -
利用Crontab实现对Oracle数据库的定时备份
2010-05-18 09:29 1055对Oracle数据库的定时热备份(Exp)通常可用两种办法实现 ... -
Oracle 数据库备份与恢复总结-exp/imp (导出与导入装库与卸库)
2010-04-20 19:04 5319sqlldr userid=B/A@D control=res ... -
数据批量导入Oracle数据库
2010-04-14 21:16 1216SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提 ... -
truncate,delete,drop的异同点
2010-04-12 01:17 852truncate,delete,drop的异同点 ... -
oracle修改IP
2010-03-10 09:15 1880oracle数据库更改IP地址后,发现无法连接。需要修改一下对 ... -
Oracle学习过程
2009-10-07 10:22 1267编号 名称 内容 ... -
lsnrctl使用大全
2009-09-22 23:43 2984netstat -a查看所有端口 l ... -
Oracle数据库监听配置
2009-09-22 17:47 1117来源: 中国IT实验室 近段时间很多网友提出监听配置相关问题 ... -
ora-01033:oracle initialization or shutdown in progress 解决方法
2009-09-21 23:19 3787今天研究Oracle遇到了这个问题ora-01033:o ... -
ORA-12528问题解决 sp2-0460未连接解决
2009-09-21 00:31 1998在solaris中运行了lsnrctl stop将listen ... -
Oracle 9i pfile/spfile 参数文件详解
2009-09-08 14:06 1519(1)Pfile文件 Pfile(Parameter F ... -
ORACLE中添加删除主键
2009-08-27 21:36 8321、创建表的同时创建主键约束(1)无命名create tabl ... -
oracle 自增列
2009-08-10 13:23 2063由于Oracle不像SQL Server 那样系统自带自增列, ... -
oracle 临时表的使用 [转]
2009-08-18 10:44 979oracle 临时表的使用 跟普通表一样.oracle ... -
ORACLE SQL语句优化
2009-08-18 21:30 10061.共享SQL语句 为了不重复解析相同的SQL语句,在第一 ... -
Oracle exp/imp备份还原数据
2009-08-18 21:32 1912Oracle exp/imp备份还原数据 exp hel ...
相关推荐
Oracle 临时表空间不足和批处理缓慢问题探讨 本文探讨了 Oracle 临时表空间不足和批处理缓慢问题的原因和解决方法。通过分析和测试,发现了问题的根源在于应用逻辑方面,具体来说是 SQL 语句的编写问题。通过编写...
下面是 Oracle 临时表的详细知识点: 创建临时表 创建临时表的语法为: ``` CREATE GLOBAL TEMPORARY TABLE table (column datatype [DEFAULT expr] [{ NULL | NOT NULL}], [column datatype [DEFAULT expr] [ {...
### Oracle 临时表空间详解 #### 一、Oracle表空间概览 在Oracle数据库系统中,数据被组织成多个逻辑单元,这些单元被称为表空间。每个表空间由一个或多个物理磁盘文件(称为数据文件)组成,并且是数据库中的最高...
在Oracle数据库系统中,临时表空间是用于存储临时数据的特定区域,这些数据通常由排序、聚合、JOIN等操作产生。当处理大量数据或者运行复杂SQL查询时,临时表空间的作用尤为关键。然而,如果不正确地管理和使用临时...
4. Oracle临时表空间满的问题:当临时表空间的磁盘空间被全部占用后,可能会出现错误消息,例如“ORA-1652: unable to extend temp segment by %s in tablespace %s”。这会导致用户无法完成如排序、并行查询等操作...
#### 一、分区表理论知识 Oracle 提供了表分区功能以支持非常大型的数据库(VLDB)。通过分区技术,可以根据指定的分区键将数据分散到不同的物理位置,从而实现更高效的数据管理和查询性能。表分区使得数据能够根据...
2. **移动表、索引等对象**:将block_id大于目标表空间大小的表、索引、分区表等对象移动到一个新的临时表空间中。 3. **收缩表空间**:在确保所有对象都已妥善处理后,执行收缩操作。 4. **移动对象回原表空间**:...
以上就是基于给定的Oracle系统表相关知识的详细介绍。这些系统表为DBA和开发人员提供了强大的工具来管理和优化数据库性能。通过深入理解和利用这些系统表,可以有效地提高数据库的可用性和效率。
36. **TEMPORARY**: 是否临时表。 37. **SECONDARY**: 是否为辅助键表。 38. **NESTED**: 是否嵌套表。 39. **BUFFER_POOL**: 缓冲池。 40. **ROW_MOVEMENT**: 行移动。 41. **GLOBAL_STATS**: 全局统计信息。 42. *...
根据提供的文件信息,本文将详细说明关于“NC6.5 数据库参考脚本及临时表空间配置”的知识点。 首先,文档标题“NC6.5 数据库参考脚本及临时表空间配置.pdf”指出了文件内容涉及三个方面:NC6.5数据库、参考脚本...
3. **purge操作**:Purge操作是删除已删除行的一种方法,通常用于临时表空间和Undo表空间。执行`PURGE`语句可以立即释放被删除的对象或行,而不是等待下次DML操作或数据库维护任务。 4. **DBMS_SCHEDULE包**:...
在创建临时表空间时,可以设置默认的临时表空间,并通过视图查询相关信息。 三、CDB表空间大小查询 在Oracle 12c中,支持多租户架构,CDB(容器数据库)能够包含多个PDB(可插拔数据库)。可以对CDB中的表空间进行...
以下是对给定文件中的Oracle系统表查询知识点的深入解析: ### 一、用户 - **`SELECT username FROM dba_users;`**:此SQL语句用于列出数据库中所有的用户。`dba_users`视图提供了数据库中所有用户的信息,包括...
临时表空间用于存储数据库操作中的临时数据,如排序操作、哈希和临时表。与永久性表空间不同,临时表空间不会记录在重做日志中,因为这些操作不涉及事务持久性。创建临时表空间的命令通常包括指定表空间名称、临时...
最后,我们可以通过以下命令来查看所有非临时表的分区信息: ```sql SELECT table_name, partition_name, u.high_value FROM user_tab_partitions u WHERE table_name NOT LIKE 'BIN%'; ``` 如果不再需要某个分区,...
### ORACLE内存结构与表空间知识 #### 一、Oracle的服务方式 Oracle提供了三种不同的服务方式,每种方式都有其特定的应用场景和内存管理特点。 ##### 1. 专用服务器 (Dedicated Server) - **服务流程**:当...
`Dba_Free_Space`视图用于获取每个表空间的空闲空间总量,而`Dba_Temp_Files`视图则提供了临时表空间的相关信息。 在进行数据库性能监控时,了解这些信息至关重要,因为它们可以帮助识别潜在的问题,比如空间不足、...
Oracle中的表空间分为永久表空间和临时表空间两种类型。 1. **永久表空间**:用于存储数据表、索引等持久性数据。 2. **临时表空间**:主要用于SQL执行过程中的临时排序操作等。 #### 二、创建表空间的步骤与语法 ...
总结来说,"数据同步时过滤掉临时表"是一个关于数据迁移和管理的重要实践,它涉及到数据库操作、脚本编写、工具使用以及性能优化等多个IT领域的知识。理解和掌握这部分内容对于任何处理大规模数据的IT专业人员都至关...
NOLOGGING 不生成重做日志,适用于性能要求高的临时表等场景。 - **存储 (Storage)**:可以设置 DEFAULT 或 UNIFORM 来指定分配策略。DEFAULT 表示按需分配,UNIFORM 表示按照指定大小均匀分配。 #### 五、创建用户...