Oralce 临时表空间管理

Oracle临时表空间管理

Oracle临时表空间是用来存储临时数据的,什么时候会生成这些临时数据呢?

当在做表的数据排序的时候,默认情况下排序是会在内存里面完成,如果排序量比较大,在内存当中无法存储这么大的数据量的时候,那么排序会将排序的中间结果数据放在磁盘上面,这么大的数据量会将排序的中间结果放在磁盘上面,也就是临时表空间上面。会在临时表空间上面建立段,用于存放排序的中间数据。

还有分组汇总的统计查询的时候会有临时数据生成,还有在建立索引的时候和表连接操作的时候都会有临时数据,这个时候会用到临时表空间。

 

临时表空间是用于存放临时数据的,不能存放永久数据的,对于oracle来说都会有一个默认的临时表空间,可以有多个临时表空间,但是默认的只有一个。

SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;  --可以看到默认的临时表空间是user_temp

TABLESPACE_NAME 	       CONTENTS
------------------------------ ---------
SYSTEM			       PERMANENT
SYSAUX			       PERMANENT
TDS			           PERMANENT
UNDOTBS2		       UNDO
USER_TEMP		       TEMPORARY
UNDOTBS3		       UNDO




SQL> select USERNAME,TEMPORARY_TABLESPACE from dba_users;  --可以看到所有用户的默认的临时表空间是user_temp,这些用户要排序的时候就使用这个默认的临时表空间来排序
 
USERNAME		       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS			           USER_TEMP
SYSTEM			       USER_TEMP
SCOTT			       USER_TEMP
OUTLN			       USER_TEMP
DIP			           USER_TEMP
ORACLE_OCM		       USER_TEMP
APPQOSSYS		       USER_TEMP
DBSNMP			       USER_TEMP

8 rows selected.


SQL> create temporary tablespace temp1  --新添加一个临时表空间,默认的临时表空间只有一个,用户使用的还是默认的临时表空间
  2  tempfile '/u01/app/oracle/oradata/oradb/temp1.01.dbf' size 100m uniform size 1024k;

可以将临时表空间加到组里面
SQL> select file#,status,bytes/1024 from v$tempfile;

     FILE# STATUS  BYTES/1024
---------- ------- ----------
	 2 ONLINE      102400
	 1 ONLINE      102400

SQL> alter tablespace USER_TEMP tablespace group tmpgp;  --将上面的user_temp表空间加入到tmpgp组

Tablespace altered.

SQL> alter tablespace temp1 tablespace group tmpgp;  ---将tmp1表空间加入到tmpgp组

Tablespace altered.


SQL> select * from dba_tablespace_groups;  --可以看到两个临时表空间加入到tmpgp的组里面了,这个临时表空间组是不需要提前去创建的,将临时表空间加入这个组这个组就会自动生成,如果这个组的临时表空间都退出的话这个组就自动消失了,非常灵活。

GROUP_NAME		       TABLESPACE_NAME
------------------------------ ------------------------------
TMPGP			       USER_TEMP
TMPGP			       TEMP1

SQL> alter database default temporary tablespace tmpgp;  --将临时表空间组作为整个数据库的临时表空间

Database altered.


SQL> select USERNAME,TEMPORARY_TABLESPACE from dba_users; --所有用户授权临时表空间都会向tmpgp组索取临时数据的存储

USERNAME		       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS			           TMPGP
SYSTEM			       TMPGP
SCOTT			       TMPGP
OUTLN			       TMPGP

DIP			           TMPGP
ORACLE_OCM		       TMPGP
APPQOSSYS		       TMPGP
DBSNMP			       TMPGP

8 rows selected.

tmpgp临时表空间组里面有两个临时表空间,还可以加入新的临时表空间。当用户需要存储临时数据的时候向tmpgp发出请求需要临时段,然后根据两个临时表空间使用的情况进行分配临时段。这种方式就用起来非常简单高效了,在10G以后管理临时表空间尽量使用临时表空间组的方式来管理,这个可以将多个临时表空间都利用起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值