解決oracle12c中SQL錯誤: ORA-01157:無法標識/鎖定數據文件 22,- 請參閱 DBWR 跟蹤文件ORA-01110: 數據文件22:問題的完美方案

問題:

SQL錯誤: ORA-01157:無法標識/鎖定數據文件 22,- 請參閱 DBWR 跟蹤文件ORA-01110: 數據文件22:

'F:\ORACLE\TABLESPACES\FACTORY_DATA\PDB_FACTORY_DATA.DBF'。

產生原因:

首先我們來看報這個錯誤的原因:The background process was either unable to find one of the data files or failed to lock it because the file was already in use. The database will prohibit access to this file but other files will  be unaffected. However the first instance to open the database will need to access all online data files. Accompanying error from the operating system describes why the file could not be identified.(後臺進程無法找到其中一個數據。文件或未能鎖定它,因爲文件已在使用中。數據庫將禁止對該文件的訪問,但其他文件將不受影響。但是第一個實例將打開數據庫需要訪問所有在線數據文件。伴隨誤差操作系統描述了無法識別文件的原因。)。綜上所述,磁盤中對應表空間的數據文件被刪除了,在啓動數據庫實例時,找不到對應的表空間數據文件(後綴爲.dbf的文件)。

解決方案:

  1. 打開sqlplus,使用sys登錄數據庫,在c db 中執行以下操作。
  2. 啓動數據庫實例:startup ,運行結果顯示啓動的數據庫實例已啓動,此時需要我們關閉它。

    3.關閉數據庫實例:shutdown immediate

   4.啓動數據庫例程:startup mount

   5.刪除數據庫中的datafile文件:這一步要分情況進行(因爲儘管oracle 12c的日誌文件共享,但是cdb和各個pdb只能在各自數據庫使用自己的日誌)。   

       (1)如在磁盤中被刪除的數據文件是 cdb容器中表空間對應的 .dbf文件,此時第4步之後就可以執行:

                alter database datafile  被刪除的表空間數據文件的完整路徑  offline drop;

       (2)如在磁盤中被刪除的數據文件是 pdb容器中表空間對應的 .dbf文件,此時第4步之後需要將數據庫從 c db切換到pdb:

                alter session set container=pdb實例名(本人的該名稱是orclpdb);

再執行刪除pdb中表空間數據文件的操作:

alter database datafile  被刪除的表空間數據文件的完整路徑  offline drop;

(3) 執行完(2) 後,將數據庫從pdb切換至cdb:

       alter session set container=cdb$root;

(4)切換回來後,需要再次啓動一次例程:startup mount

   6.數據恢復:recover database

   7.打開數據庫:alter database open;

   8.重新啓動數據庫實例:因爲數據庫數據庫實例已經打開了,所以重啓的操作實際上就是先關閉數據庫實例,在啓動它。

    (1)關閉數據庫實例:shutdown immediate

    (2)啓動數據庫實例:startup

此時大功告成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章