`
longgangbai
  • 浏览: 7332418 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

简单描述Oracle临时表的存储特点

 
阅读更多
简单描述临时表的存储特点。

临时表的数据存储在临时表空间中,这一点很显然,不过为什么临时表在DBA_TABLES视图中显示的表空间为空,
以前确实一直不是很清楚。
select table_name,owner,tablespace_name 
  from dba_tables 
   where table_name='TEMP01';

前两天在和KAMUS讨论临时表的实现时,突然意识到这一点,由于临时表可以被多个用户访问,而不同用户的
默认临时表空间的设置可能不同,这就意味着临时表的多个临时段可能存储在多个临时表空间中,正是这个原
因,导致了临时表对应的表空间信息为空。
下面这个简单的例子说明了这种情况:
SQL> CONN / AS SYSDBA已连接。
SQL> SET PAGES 100 LINES 120
SQL> COL FILE_NAME FORMAT A50
SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_TEMP_FILES;
TABLESPACE_NAME FILE_NAME
------------------------------ ---------------------------------------------
TEMP D:\app\Administrator\oradata\ticket\TEMP01.DBF
SQL> SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'TEST';
USERNAME TEMPORARY_TABLESPACE
------------------------------ ------------------------------
TEST TEMP
SQL> CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE 'D:\app\Administrator\oradata\ticket\TEMP201.DBF' SIZE 100M;
表空间已创建。
SQL> CREATE USER TEST2 IDENTIFIED BY TEST2 TEMPORARY TABLESPACE TEMP2;
用户已创建。
SQL> GRANT CREATE SESSION TO TEST2;
授权成功。
SQL> CONN TEST/TEST已连接。
SQL> CREATE GLOBAL TEMPORARY TABLE TMP1 (ID NUMBER);
表已创建。
SQL> GRANT ALL ON TMP1 TO TEST2;
授权成功。
SQL> CONN TEST2/TEST2已连接。
SQL> INSERT INTO TEST.TMP1 VALUES (1);
已创建 1 行。
SQL> CONN TEST/TEST已连接。
SQL> INSERT INTO TMP1 VALUES (2);
已创建 1 行。
SQL> ALTER TABLESPACE TEMP2 TEMPFILE OFFLINE;
表空间已更改。
SQL> CONN TEST/TEST已连接。
SQL> INSERT INTO TMP1 VALUES (3);
已创建 1 行。
SQL> CONN TEST2/TEST2已连接。
SQL> INSERT INTO TEST.TMP1 VALUES (4);
INSERT INTO TEST.TMP1 VALUES (4)
*第 1 行出现错误:
ORA-01652: 无法通过 128 (在表空间 TEMP2中) 扩展 temp 段
各个会话在访问临时表的时候,都会拥有自己独立的临时表段,而当多个用户的默认临时表空间不同时,临时表就可能在多
个临时表空间上建立临时段,正是这个原因使得临时段的表空间属性无法确定。

 

分享到:
评论

相关推荐

    Oracle 临时表用法

    #### 四、Oracle临时表的特点与区别 1. **数据保留方式**: - 会话级临时表中的数据在会话结束时被清除。 - 事务级临时表中的数据在事务提交或回滚后被清除。 2. **数据独立性**:不同会话之间对同一临时表的...

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

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

    修改Nagios的checkoracle脚本来监控Oracle的临时表空间.pdf

    根据题目描述,我们需要对Nagios的check_oracle脚本进行修改,以添加对Oracle临时表空间的监控功能。脚本原版的表空间监控部分是通过查询dba_data_files和dba_free_space表来获取数据,但这两个表并不包含临时表空间...

    oracle存储过程使用游标对多表操作例子

    给定的存储过程“UpdateTempInventoryM”旨在更新一个名为“tmp_inventorym”的临时表,该表汇总了不同业务操作(如收货、发货、借出等)后的库存状态。过程接收五个参数:`DateMMin`、`HasBlin`、`HasQtyin`、`...

    Oracle通用数据库存储过程代码--高效分页存储过程

    描述部分简述了此存储过程的特点:“Oracle通用数据库存储过程代码——高效分页存储过程,只需简单的修改即可使用,方便易懂!”这说明该存储过程设计简单、易于理解,并且用户可以根据实际需求进行少量的定制化修改...

    \Oracle 表空间与数据文件

    - **临时段**:如临时表数据与排序段。 - **回滚段**:用于事务回滚或闪回内存的撤销数据。 表空间进一步可以分为不同的类别: - **系统表空间**(`system`、`sysaux`):这些表空间主要用于存储数据库的元数据,...

    NC6.5 数据库参考脚本及临时表空间配置.pdf

    总之,本文介绍的内容包括用友NC6.5数据库参考脚本,尤其是涉及到的SQLServer、Oracle和DB2数据库创建、配置及临时表空间的设置。这些脚本对于数据库管理员和开发人员在实际工作中创建、管理数据库和优化数据库性能...

    oracle存储过程使用文档

    - **示例目的**:查询部门10的所有雇员的姓名和工资,并将这些信息插入到一个临时表`tmp`中。 - **表结构**:`tmp`表结构为`t1 char(20), t2 number(10)`。 - **实现方式**:使用三种不同的循环方法实现。 通过上述...

    oracle查看表空间表信息

    36. **TEMPORARY**: 是否临时表。 37. **SECONDARY**: 是否为辅助键表。 38. **NESTED**: 是否嵌套表。 39. **BUFFER_POOL**: 缓冲池。 40. **ROW_MOVEMENT**: 行移动。 41. **GLOBAL_STATS**: 全局统计信息。 42. *...

    Oracle数据库应用教程-逻辑存储结构.pptx

    Oracle数据库的逻辑存储结构是从逻辑角度来分析数据库的构成的,是数据库创建后利用逻辑概念来描述Oracle数据库内部数据的组织和管理形式。逻辑存储结构概念存储在数据库的数据字典中,可以通过数据字典查询逻辑存储...

    oracle系统表详解(中文).docx

    这些表存储了关于数据库对象的重要信息,如用户、表空间、段等。本文将详细介绍部分重要的Oracle系统表,包括它们的功能以及如何利用这些表进行数据库管理。 #### 一、系统管理表 ##### 1. DBA_USERS - **功能**: ...

    PostgreSQLOracle风格的全局临时表

    这可能是一个扩展或一组存储过程,它实现了类似于Oracle全局临时表的逻辑,使PostgreSQL用户也能享受到相同的功能,尤其是在进行数据迁移或需要临时数据存储的场景下。 标签“SQL”表明这个主题与结构化查询语言...

    Oracle 12CR2查询转换教程之临时表转换详解

    总结来说,Oracle 12CR2的临时表转换技术是一种智能优化策略,它将子查询结果存储在内存中的临时表,减少重复计算,改善查询性能。通过启用相应的参数并理解其工作原理,数据库管理员和开发人员可以更好地利用这一...

    Oracle数据库的存储结构.pdf

    - 临时表空间(TEMP)存储临时表和临时数据。 - 非系统表空间包括用户表空间(USERS, UNDOTBS, etc.)和示例表空间(EXAMPLE),用于存放永久性用户对象的数据和私有信息。 通过`dba_tablespaces`数据字典视图可以...

    procedure中创建临时表

    根据提供的标题、描述、标签及部分内容,我们可以详细探讨在Oracle PL/SQL中如何通过存储过程(Procedure)创建临时表,并且处理可能发生的异常情况。以下将深入解析此过程中的各个步骤及其背后的逻辑。 ### 一、...

    NC6.1 数据库参考脚本及临时表要求

    数据库临时表空间是数据库存储临时数据的区域,它对数据库性能有着重要的影响。在执行大规模数据处理任务时,合理配置临时表空间能有效提高数据库的处理能力。 对于SQL Server数据库,参考脚本的主要内容包括创建...

    oracle常用系统表.

    - **`dba_users`**:此表存储了所有数据库用户的详细信息,包括用户名、默认表空间、临时表空间等。这对于了解哪些用户存在以及他们的基本设置非常有用。 - **`dba_profiles`**:记录了用户的资源限制信息,如连接...

    Oracle触发器与存储过程高级编程

    在Oracle数据库系统中,触发器和存储过程是两种强大的数据库对象,它们允许开发人员执行复杂的业务逻辑和数据处理。在“Oracle触发器与存储过程高级编程”中,我们将深入探讨这两个概念以及相关的高级特性。 首先,...

    Oracle存储过程开发规范与技巧

    - **变量命名**:变量以`v_`开头,游标以`c_`开头,内存表以`m_`开头,临时表以`t_`开头。 - **存储过程命名**:明确表示其功能,区分全量和增量操作。 5. **技术细节**: - **游标定义**:游标可以在BEGIN之前...

    Oracle-管理表空间和数据文件.ppt

    临时表空间则是为临时数据提供存储,比如排序和并行查询过程中产生的临时结果。 在Oracle 11g中,有一些默认的表空间,比如SYSTEM、SYSAUX、USERS等,它们在数据库创建时自动创建,用于存储系统数据和用户对象。...

Global site tag (gtag.js) - Google Analytics