ORA-01157無法標識、鎖定資料檔案

tangyunoracle發表於2010-12-17

今天在建立資料庫表空間的時候忘了修改路徑,執行後全部都報錯了,但是還是有兩個表空間在資料庫中生成了。
最後引起
ORA-01157: 無法標識/鎖定資料檔案 3 - 請參閱 DBWR 跟蹤檔案 ORA-01110: 資料檔案 3: '/oracle/product/10.2/db_1/dbs/ AAAAAAAA '錯誤。

[@more@]

SQL> CREATE TABLESPACE PCS_DWCOMMON DATAFILE 'AAAAAAAA' SIZE 5G AUTOEXTEND OFF;

SQL> CREATE TEMPORARY TABLESPACE PCS_TEMP TEMPFILE 'BBBBBBBB' SIZE 20G AUTOEXTEND OFF;

發現錯誤後修改了路徑再次建立表空間時發現上面兩個表空間已經存在

SQL> CREATE TABLESPACE PCS_DWCOMMON DATAFILE '+DATA1' SIZE 5G AUTOEXTEND OFF;

ORA-01543表空間 ’ PCS_DWCOMMON’ 已存在

SQL> CREATE TEMPORARY TABLESPACE PCS_TEMP TEMPFILE '+SYSDATA' SIZE 20G AUTOEXTEND OFF;

ORA-01543表空間 ’ PCS_TEMP’ 已存在

SQL> SELECT * FROM DBA_DATA_FILES;

ORA-01157: 無法標識/鎖定資料檔案 3 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 3: '/oracle/product/10.2/db_1/dbs/ AAAAAAAA '

SQL> SELECT * FROM DBA_TEMP_FILES;

ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 2: '/oracle/product/10.2/db_1/dbs/ BBBBBBBB '

SQL> drop tablespace PCS_DWCOMMON including contents and datafiles;

ORA-01157: 無法標識/鎖定資料檔案 3 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 3: '/oracle/product/10.2/db_1/dbs/ AAAAAAAA '

SQL> drop tablespace PCS_TEMP including contents and datafiles;

ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 2: '/oracle/product/10.2/db_1/dbs/ BBBBBBBB '

這下麻煩了,查詢也查詢不了,刪除也刪除不了。重新啟動一樣不行。

上網找了一下,果然也有很多人出現一樣的問題,但是大多都是在win下的。趕緊試了一下果然行得通。

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

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

相關文章