
什么时候需要临时表空间:
排序汇总在PGA,内存空间不够用就需要临时表空间
临时文件损坏,怎么修复:
方法1: 允许重启的情况
重启会自动重建临时文件。
方法2: 不允许重启的情况
先添加新的临时文件,再删除坏的临时文件。
案例:
SQL> select * from big_table order by 1,2,3,4,5,6,7,8,9,10,11,12,13;
select * from big_table order by 1,2,3,4,5,6,7,8,9,10,11,12,13
*
ERROR at line 1:
ORA-01565: error in identifying file '+DATA/orcl/tempfile/temp.264.853023363'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
错误:临时表表空间的文件损坏
默认排序分组汇总在内存中完成,当内存不够就会用临时表空间
修复步骤:
查出临时文件
SQL> select FILE_ID, FILE_NAME,TABLESPACE_NAME from dba_temp_files order by 1;
FILE_ID FILE_NAME TABLESPACE
---------- --------------------------------------------- ----------
1 +DATA/orcl/tempfile/temp.264.853023363 TEMP
只有一个临时表空间temp
创建新临时文件
SQL> create temporary tablespace temp2 tempfile '/u01/app/oracle/temp1.dbf' size 10M ;
修改默认临时表空间为新的
SQL> alter database default temporary tablespace temp2 ;
检查
SQL> select FILE_ID, FILE_NAME,TABLESPACE_NAME from dba_temp_files order by 1;
FILE_ID FILE_NAME TABLESPACE
---------- --------------------------------------- ----------
1 +DATA/orcl/tempfile/temp.264.853023363 TEMP
2 u01/app/oracle/temp1.dbf TEMP2
默认是:
SQL> select PROPERTY_NAME ,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TEMP%';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ --------------------
DEFAULT_TEMP_TABLESPACE TEMP2
现在需要临时表空间,占用的是temp2 ;
临时文件损坏,影响排序,影响EM
允许的情况下,直接重启也能恢复
startup force ;
可以去看警告日志,提示:临时文件被重建
SMON: enabling tx recovery
Wed Jul 16 05:24:14 2014
Re-creating tempfile u01/app/oracle/temp1.dbf #重建临时文件
Database Characterset is ZHS16GBK
No Resource Manager plan active





