解決ORA-01110問題

wuhuizhong發表於2007-07-25

ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/data2/PMS_DATA.dbf'

問題解決如下:

[@more@]

[oracle@Pyzs-DB-Test3 oracle]$ sqlplus /nolog

SQL*Plus: Release 9.2.0.6.0 - Production on Wed Jul 25 08:53:17 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 370218364 bytes
Fixed Size 451964 bytes
Variable Size 150994944 bytes
Database Buffers 218103808 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/data2/PMS_DATA.dbf'


SQL> alter database create datafile '/data2/PMS_DATA.dbf';

Database altered.

SQL> alter database datafile '/data2/PMS_DATA.dbf' offline drop;

Database altered.

SQL> alter database open;

Database altered.

一、查詢報錯檔案號(Fill#)所在的表空間

svrmgrl> startup mount

svrmgrl> SELECT Fill#,TS#,NAME FROM V$DATAFILE WHERE FILL#=報錯的資料檔案號;

svrmgrl>SELECT TS#,NAME FROM V$TABLESPACE WHERE TS#=上語句檢索的ts#;



二、檢查一下該資料檔案所在的卷組是否處於非啟用狀態,如是將其啟用,否則轉下一步即該資料檔案發生損壞。



三、根據資料檔案所在執行模式及所歸屬的表空間的型別作相應的處理

一)資料庫處於ARCHIVELOG模式下

1、使用recover database 或使用recover datafile命令進行資料庫恢復

2、以alter database open resetlogs 命令開啟資料庫

二)資料庫處於NOARCHIVELOG模式下

1、損壞的資料檔案屬於system表空間

如無物理級備份則須重建資料庫

2、損壞的資料檔案屬於temp表空間,此時可以不丟失資料完成恢復

因臨時表空間不包含資料,所以可以將臨時表空間Drop掉,重建即可

3、損失的是控制檔案

1、如並非所有的控制檔案都損壞的話,可以將損壞的檔案從init.ora中去掉,啟動資料庫即可

2、如所有控制檔案皆損壞,可使用dd命令進行控制檔案恢復。

4、損壞的資料檔案屬於使用者表空間,有以下兩種解決方案:

a.使用者的表空間可以被輕易地重建,重建表空間以及所有的物件.

svrmgrl> startup mount

svrmgrl> alter database datafile filename offline drop;

svrmgrl> alter database open;

svrmgrl> drop tablespace tablespace_name including contents;

重建表空間及所有物件.

b.使用者的表空間不能夠被輕易地重建

如無備份則使用者資料資料會全丟失

5、損壞的資料檔案屬於回滾表空間

1)確認資料庫完全關閉

2)修改init.ora檔案,註釋"rollback-segment"

2)svrmgrl> startup restrict mount

3)svrmgrl> alter database datafile filename offline drop;

4)svrmgrl> alter database open;

基於出現的結果: "statement processed" 轉7),"ORA-00604,ORA-00376,ORA-01110"轉6)

6)svrmgrl> shutdown immediate

修改init.ora檔案,增加如下一行:

_corrupted_rollback_segments = (,...)

svrmgrl> startup restrict

7) svrmgrl> drop tablespace tablespace_name including contents;

8) 重建表空間及回滾段

9) svrmgrl> alter system disable restricted session;

10) 修改init.ora檔案

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

相關文章