临时表空间数据文件丢失的恢复
临时表空间数据文件丢失数据库可以打开,可以通过重建一个临时表空间并设置为默认或者新建一个属于临时表空间的数据文件,并删除已经丢失的数据的方法来恢复。
1.丢失临时表空间的数据文件 ,数据库可以正常打开。
SQL> col file for a25
SQL> select f.file#,t.ts#,f.name "file",t.name"tablespace" from v$tempfile f,v$tablespace t where f.ts#=t.ts#;
FILE# TS# file tablespace
---------- ----------------------------------- ------------------------------
1 3 E:\SYSORADATA\TEMP01.DBF TEMP
SQL> show user
USER 为 "SYS"
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host move e:\sysoradata\temp01.dbf e:\sysoradata\temp01.dbfa
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 431038464 bytes
Fixed Size 1375088 bytes
Variable Size 331351184 bytes
Database Buffers 92274688 bytes
Redo Buffers 6037504 bytes
数据库装载完毕。
数据库已经打开。
SQL> select tablespace_name,status,contents,extent_management from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN
-------------------- --------- -------------------
SYSTEM ONLINE PERMANENT LOCAL
SYSAUX ONLINE PERMANENT LOCAL
UNDOTBS1 ONLINE UNDO LOCAL
TEMP ONLINE TEMPORARY LOCAL
USERS ONLINE PERMANENT LOCAL
BYS_UNDO ONLINE UNDO LOCAL
数据库OPEN阶段部分ALERT日志:
SMON: enabling tx recovery
Re-creating tempfileE:\SYSORADATA\TEMP01.DBF
Database Characterset is ZHS16GBK
No Resource Manager plan active
##########################################################
2.不停机维护临时表空间
如大规模排序的SQL语句查询时临时文件出问题,临时表空间对应数据文件出错引起ORACLE出错。
此时,可以为临时表空间增加一个数据文件,并且删除出错的原临时表空间数据文件。
SQL> selecttablespace_name,status,contents,extent_management from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN
-------------------- --------- -------------------
SYSTEM ONLINE PERMANENT LOCAL
SYSAUX ONLINE PERMANENT LOCAL
UNDOTBS1 ONLINE UNDO LOCAL
TEMP ONLINE TEMPORARY LOCAL
USERS ONLINE PERMANENT LOCAL
BYS_UNDO ONLINE UNDO LOCAL
SQL> alter tablespace temp add tempfile 'e:\sysoradata\temp02.dbf' size 20m;
表空间已更改。
SQL> select f.file#,t.ts#,f.name"file",t.name "tablespace" from v$tempfile f,v$tablespace t where f.ts#=t.ts#;
FILE# TS# file tablespace
---------- ----------------------------------- ------------------------------
2 3 E:\SYSORADATA\TEMP02.DBF TEMP
1 3E:\SYSORADATA\TEMP01.DBF TEMP
SQL> selecttablespace_name,status,contents,extent_management from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN
-------------------- --------- -------------------
SYSTEM ONLINE PERMANENT LOCAL
SYSAUX ONLINE PERMANENT LOCAL
UNDOTBS1 ONLINE UNDO LOCAL
TEMP ONLINE TEMPORARY LOCAL
USERS ONLINE PERMANENT LOCAL
BYS_UNDO ONLINE UNDO LOCAL
SQL> alter tablespace temp drop tempfile 'e:\sysoradata\temp01.dbf';
表空间已更改。
SQL> select f.file#,t.ts#,f.name"file",t.name "tablespace" from v$tempfile f,v$tablespace t where f.ts#=t.ts#;
FILE# TS# file tablespace
---------- ----------------------------------- ------------------------------
2 3E:\SYSORADATA\TEMP02.DBF TEMP
SQL> select tablespace_name,status,contents,extent_management from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS EXTENT_MAN
-------------------- --------- -------------------
SYSTEM ONLINE PERMANENT LOCAL
SYSAUX ONLINE PERMANENT LOCAL
UNDOTBS1 ONLINE UNDO LOCAL
TEMP ONLINE TEMPORARY LOCAL
USERS ONLINE PERMANENT LOCAL
BYS_UNDO ONLINE UNDO LOCAL
SQL> col tablespace for a20
SQL> select f.file#,t.ts#,f.name"file",t.name "tablespace",bytes/1024/1024 MB from v$tempfile f,v$tablespace t wheref.ts#=t.ts#;
FILE# TS# file tablespace MB
---------- ----------------------------------- -------------------- ----------
2 3E:\SYSORADATA\TEMP02.DBF TEMP 20
相关ALERT日志 :
alter tablespace temp add tempfile'e:\sysoradata\temp02.dbf' size 20m
Completed: alter tablespace temp addtempfile 'e:\sysoradata\temp02.dbf' size 20m
Sun Feb 10 20:16:44 2013
alter tablespace temp drop tempfile'e:\sysoradata\temp01.dbf'
WARNING: Cannot delete fileE:\SYSORADATA\TEMP01.DBF
Errors in filec:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_1716.trc:
ORA-01265: 无法删除 TEMP FILE E:\SYSORADATA\TEMP01.DBF
ORA-27056: 无法删除文件
OSD-04024: 无法删除文件。
O/S-Error: (OS 32) 另一个程序正在使用此文件,进程无法访问。
Completed: alter tablespace temp drop tempfile 'e:\sysoradata\temp01.dbf'