臨時表空間資料刪除問題

anycall2010發表於2009-12-24

    使用者是裸裝置,軟體公司不懂裸裝置和檔案系統區別。新增表空間搞成了檔案系統。結果資料檔案預設存放到根目錄下,把根目錄的空間給撐爆了。昨天,使用者重啟了資料庫,可怕的事情出現了。。。。。。

   資料庫重啟後,無法啟動。通過報錯,發現上述問題,向我求助。。。。。。

    首先將存放在根目錄的檔案移動到/TMP下,這樣可以啟動資料庫。此時資料庫是能夠啟動的。但是在使用客戶端軟體的時候,會報錯說找不到臨時表空間的第二個資料檔案。使用者的環境是HP UNIX ,資料庫是9I。

   嘗試將資料庫啟動到mount狀態下,將這個表空間的資料檔案刪除。

  

   SQL> startup mount
ORACLE instance started.

Total System Global Area 2585219136 bytes
Fixed Size                   729152 bytes
Variable Size             436207616 bytes
Database Buffers         2147483648 bytes
Redo Buffers                 798720 bytes
Database mounted.

SQL> alter database rename file '/dev/vg_ora/rtemp_02.dbf' to '/tmp/rtemp_02.dbf
';
alter database rename file '/dev/vg_ora/rtemp_02.dbf' to '/tmp/rtemp_02.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile, or tempfile
"/dev/vg_ora/rtemp_02.dbf"

報錯的原因是rtemp_02.dbf已經被移走,ORACLE已經找不到那個資料檔案了。

啟動資料庫,使用命令DROP這個資料檔案,可是仍舊不成功。

SQL> alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop including datafiles;
alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop including datafiles
*
ERROR at line 1:
ORA-01516: nonexistent log file, datafile, or tempfile
"/dev/vg_ora/rtemp02.dbf"


SQL> alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop;
alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop
*
ERROR at line 1:
ORA-01516: nonexistent log file, datafile, or tempfile
"/dev/vg_ora/rtemp02.dbf"

嘗試在資料庫mount下,嘗試刪除這個資料檔案,結果照舊。

SQL> startup mount
ORACLE instance started.

Total System Global Area 2585219136 bytes
Fixed Size                   729152 bytes
Variable Size             436207616 bytes
Database Buffers         2147483648 bytes
Redo Buffers                 798720 bytes
Database mounted.
SQL>  alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop;
 alter database tempfile '/dev/vg_ora/rtemp02.dbf' drop
*
ERROR at line 1:
ORA-01516: nonexistent log file, datafile, or tempfile
"/dev/vg_ora/rtemp02.dbf

解決的辦法:

1、使用ROOT使用者進入系統

2、qdgapz2># cd /dev/vg_ora   //進入到建立檔案的資料夾下

3、qdgapz2# ln -s /tmp/rtemp_02.dbf rtemp_02.dbf // 建立連線

4、qdgapz2# ll

lrwxr-xr-x   1 root       sys             17 Dec 24 15:05 rtemp_02.dbf -> /tmp/rtemp_02.dbf

這樣問題就解決了。

再啟動資料庫,資料庫就能識別到rtemp_02.dbf的資料檔案了。

這樣問題解決。

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 2585219136 bytes
Fixed Size                   729152 bytes
Variable Size             436207616 bytes
Database Buffers         2147483648 bytes
Redo Buffers                 798720 bytes
Database mounted.
SQL> alter database open;

Database altered.

SQL> alter database tempfile '/dev/vg_ora/rtemp_02.dbf' drop;

Database altered.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8334342/viewspace-623532/,如需轉載,請註明出處,否則將追究法律責任。

相關文章