1. 程式人生 > >Oracle ORA-01157: 無法標識/鎖定資料檔案 解決方法

Oracle ORA-01157: 無法標識/鎖定資料檔案 解決方法

本文轉自http://www.linuxidc.com/Linux/2012-05/60761.htm

在使用sqlplus進行啟動oralce時,會丟擲oracle Ora-01157:無法標誌/鎖定資料檔案;出現此問題的的原因是,資料庫中表空間的資料檔案被刪除,找不到對應的表空間檔案;

解決方法:

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  293601280 bytes
Fixed Size                  1290208 bytes
Variable Size             209715232 bytes
Database Buffers           75497472 bytes
Redo Buffers                7098368 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 7 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 7: 'D:\TCM52.DB
原因:在伺服器停止時,將對應的表空間檔案誤刪。
解決方法:
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  293601280 bytes
Fixed Size                  1290208 bytes
Variable Size             213909536 bytes
Database Buffers           71303168 bytes
Redo Buffers                7098368 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 7 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 7: 'D:\TCM52.DBF'

這裡寫圖片描述

SQL> alter database datafile 'd:\TCM52.dbf' offline drop;
資料庫已更改。

SQL> alter database open;
資料庫已更改。

SQL> drop tablespace TCM52 including contents;
表空間已刪除。

SQL> create undo tablespace TCM52 datafile 'E:\oracle\product\10.2.0\oradata\TCM52.db<span class="hilite">f</span>' size 2048M extent management local;
表空間已建立。

SQL> alter system set undo_tablespace=TCM52;
系統已更改。
LINUX環境下出現類似的問題,轉自itpub某大俠的部落格
SQL> conn /as sysdba;
SQL> shutdown immediate
SQL> startup mount;
SQL>alter database datafile ‘/oracle/product/10.2/db_1/dbs/ AAAAAAAA’ offline drop;
Database altered
SQL> alter database tempfile ‘/oracle/product/10.2/db_1/dbs/ BBBBBBBB’ drop;
Database altered
SQL> alter database open;
Database opened
查詢資料檔案聯、離線狀態,可以看到已offline的表空間
SQL> select file#,name,status from v$datafile;
接下來按照正常方式刪除表空間
SQL> drop tablespace PCS_DWCOMMON including contents and datafiles;
Tablespace droped
SQL> drop tablespace PCS_TEMP including contents and datafiles;
Tablespace droped
重新建立表空間
SQL> CREATE TABLESPACE PCS_DWCOMMON DATAFILE 'AAAAAAAA' SIZE 5G AUTOEXTEND OFF;
Tablespace created
SQL> CREATE TEMPORARY TABLESPACE PCS_TEMP TEMPFILE 'BBBBBBBB' SIZE 20G AUTOEXTEND OFF;
Tablespace created
搞定。這裡要注意一下,因為我的是RAC環境,所以在置表空間為offline的時候需要兩個資料庫都shutdown,然後啟動一臺或者兩臺到mount狀態下操作。