临时表的表空间

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

 

 

临时表的数据存储在临时表空间中,这一点很显然,不过为什么临时表在DBA_TABLES视图中显示的表空间为空,以前确实一直不是很清楚。

前两天在和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:\ORACLE\ORADATA\YTK102\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:\ORACLE\ORADATA\YTK102\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

各个会话在访问临时表的时候,都会拥有自己独立的临时表段,而当多个用户的默认临时表空间不同时,临时表就可能在多个临时表空间上建立临时段,正是这个原因使得临时段的表空间属性无法确定。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-706522/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-706522/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值