ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 临时表空间文件清理

临时表空间文件清理

原创 Linux操作系统 作者:Antilog 时间:2011-02-26 17:27:56 0 删除 编辑

[ 概述 ]

测试以及研究环境中,有些时候临时表空间的增长会很迅速,大量的消耗了系统的磁盘资源,并且临时表空间过大对于系统本身的性能也有一定影响影响。本文档主要介绍了oracle数据库临时表空间的重建的详细步骤,提供了上述问题的简要解决的方法,请使用前注意每种方法需要的前提条件。另本文档仅适用于所描述的较简单的场景,复杂场景如需要在高级别环境上实施,还请进一步验证后执行。

文档的语句均已经在下面的环境中进行过测试
Windows xp sp2  oracle 10gR2
AIX 5.3  oracle10gR2

[ 环境情况 ]

状态和关联数据文件
SQL> select tf.file_name,tf.tablespace_name,tf.status from dba_temp_files tf;

关联用户
SQL> select username,temporary_tablespace from dba_users; -- 每个用户的默认临时表空间可能不同

通过执行上面的两个语句可以了解临时表空间对应的数据文件,和每个用户的临时表空间对应情况。了解上述情况便于以后的数据库操作。

[ 确认数据库版本 ]

下面的操作中有些对数据库的版本有要求的,所以建议先行确认下数据的版本情况。
SQL> select * from v$version;

[ 在线切换 ]

创建新的临时表空间
SQL> create temporary tablespace temp2 tempfile 'D:\oracle\product\10.2.0\oradata\lisa\TEMP21.DBF' size 20M;

临时表空间切换
SQL> alter database default temporary tablespace temp2; -- 系统默认表空间
SQL> alter user lisa temporary tablespace temp2; --用户默认表空间,其中temp为新建的表空间。

[ 确认切换 ]

状态和关联数据文件
SQL> select tf.file_name,tf.tablespace_name,tf.status from dba_temp_files tf;

关联用户
SQL> select username,temporary_tablespace from dba_users;

[ 删除原来的表空间 ]

SQL> drop tablespace temp including contents and datafiles;

启停测试
进行一次正常的停止、启动操作,确认系统正常。

[ 离线切换 ]

此处的描述仅适合10gR2以及后即版本的数据库。
10gR2版本的新特性中添加了对临时表空间数据文件的自动恢复特性。当数据库在关闭的状态下,删除临时表空间的文件,数据库会在open过程中自动依据原始的创建语句自动重新创建临时表空间。
所以,对于可停机的数据库,如果数据库版本高于10gR2,可以停机删除临时表空间对应的数据文件,之后重启数据库,这样临时表空间会自动重建。当然此种方法对于初始值就很大,并且没有什么增长的临时表空间就没什么效果了。所以创建临时表空间的时候初始值不要设置的太大。
数据冷迁移中临时表空间的处理
如果是10gR2版本或以上的数据库,可以不用迁移临时表空间对应的数据文件,直接拷贝需要的数据文件即可。

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

请登录后发表评论 登录
全部评论

注册时间:2009-02-14

  • 博文量
    7
  • 访问量
    21078