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狀態下操作。