oracle的temp文件,Oracle 11g中Temp临时表空间、文件的新特性

3、临时表空间、文件的shrink

临时表空间是不会有持久化数据保存的。所以,很多被“胀大”的表空间都存在一个shrink收缩问题。从11g开始,Oracle支持Temp表空间和临时文件的搜索方法。

为了进行试验,我们先向使用表空间Temptest添加文件。

SQL> alter tablespace temptest add tempfile size 1G;

Tablespace altered

SQL> select file_name, file_id, tablespace_name from dba_temp_files;

FILE_NAME                        FILE_ID TABLESPACE_NAME

------------------------------ ---------- ---------------

/u01/app/oradata/ORA11G/datafi          1 TEMP

le/o1_mf_temp_92t73qm8_.tmp

/u01/app/oradata/ORA11G/datafi          2 TEMPTEST

le/o1_mf_temptest_9j80859z_.tm

p

/u01/app/oradata/ORA11G/datafi          3 TEMPTEST

le/o1_mf_temptest_9j826c9b_.tm

p

空间情况:

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

--------------- --------------- --------------- ----------

TEMP                  481296384      481296384  480247808

TEMPTEST            6442450944      2249195520 6440353792

新加入临时文件到临时表空间,由于文件采用稀疏文件结构,所以我们allocated_space没有增加,而free_space有增加。

磁盘空间也不会变化。

[root@SimpleLinux ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1              48G  26G  20G  57% /

tmpfs                6.0G  256M  5.8G  5% /dev/shm

/dev/mapper/VolGrp01-lv1

194M  5.6M  179M  4% /voltest01

[root@SimpleLinux ORA11G]# cd datafile/

[root@SimpleLinux datafile]# ls -l | grep temptest

-rw-r----- 1 oracle oinstall 5368717312 Feb 19 09:10 o1_mf_temptest_9j80859z_.tmp

-rw-r----- 1 oracle oinstall 1073750016 Feb 19 09:28 o1_mf_temptest_9j826c9b_.tmp

我们可以直接使用shrink tempfile的方法,将文件限制大小。Keep字句中包括控制大小。

SQL> alter tablespace temptest shrink tempfile '/u01/app/oradata/ORA11G/datafile/o1_mf_temptest_9j826c9b_.tmp'  keep 500m;

文件系统中,文件显示出的大小便为500M,但是磁盘分配没有变化,因为从来就没有分配过。

[root@SimpleLinux datafile]# ls -l | grep temptest

-rw-r----- 1 oracle oinstall 5368717312 Feb 19 09:10 o1_mf_temptest_9j80859z_.tmp

-rw-r----- 1 oracle oinstall  525336576 Feb 19 09:35 o1_mf_temptest_9j826c9b_.tmp

[root@SimpleLinux datafile]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1              48G  26G  20G  57% /

tmpfs                6.0G  256M  5.8G  5% /dev/shm

/dev/mapper/VolGrp01-lv1

194M  5.6M  179M  4% /voltest01

缩小的500M,在dba_temp_free_space中有所表现。

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

--------------- --------------- --------------- ----------

TEMP                  481296384      481296384  480247808

TEMPTEST            5894037504      2249187328 5891948544

如果我们对那个已经分配的临时文件进行shrink,是会影响到磁盘结构的。

SQL> alter tablespace temptest shrink tempfile '/u01/app/oradata/ORA11G/datafile/o1_mf_temptest_9j80859z_.tmp' keep 1G;

Tablespace altered (长时间执行)

[root@SimpleLinux datafile]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1              48G  25G  21G  55% /

tmpfs                6.0G  256M  5.8G  5% /dev/shm

/dev/mapper/VolGrp01-lv1

194M  5.6M  179M  4% /voltest01

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

--------------- --------------- --------------- ----------

TEMP                  481296384      481296384  480247808

TEMPTEST            1600110592        2080768 1598029824

此外,我们也是可以对Temp表空间直接进行shrink过程。

SQL> create temporary tablespace temptest tempfile size 1G

2  extent management local uniform size 1m;

Tablespace created

SQL> alter tablespace temptest shrink space keep 500m;

Tablespace altered

此时检查视图dba_temp_free_space。

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

------------------------------ --------------- --------------- ----------

TEMP                                  30408704        30408704  29360128

TEMPTEST                            525336576        1048576  524288000

影响到的就是表空间总大小。如果我们不指定keep,Oracle会将表空间缩小到元数据阶段。

SQL> alter tablespace temptest shrink space;

Tablespace altered

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

------------------------------ --------------- --------------- ----------

TEMP                                  30408704        30408704  29360128

TEMPTEST                              2088960        1040384    1048576

确定了2M大小,1M是分配元数据。

4、结论

11g中提供了很多临时表空间操作的特性,这帮助我们更好的管理和控制临时表空间。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值