臨時表空間資料檔案損壞的解決

還不算暈發表於2013-10-27

臨時表空間資料檔案丟失的恢復

臨時表空間資料檔案丟失資料庫可以開啟,可以通過重建一個臨時表空間並設定為預設或者新建一個屬於臨時表空間的資料檔案,並刪除已經丟失的資料的方法來恢復。

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'

相關文章