oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開的解決方法
前言
最近因為一位同事誤刪了某個插件數(shù)據(jù)庫(PDB)的數(shù)據(jù)文件,結(jié)果整個數(shù)據(jù)庫,包括容器數(shù)據(jù)庫(CDB),以及其他插件數(shù)據(jù)庫都用不了了。無奈。。。通過嘗試各種方法最終解決了,覺著有必要將解決的過程分享出來,方法大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹吧。
方法如下:
1、用sys賬號進入實例,可見容器數(shù)據(jù)庫處于mounted狀態(tài);插在上面的所有PDB當然也都是mounted。
sqlplus sys/pwd@orcl12c as sysdba;
2、試圖打開CDB,提示有數(shù)據(jù)庫文件未能加載。
SQL> alter database open; alter database open * 第 1 行出現(xiàn)錯誤: ORA-01157: 無法標識/鎖定數(shù)據(jù)文件 101 - 請參閱 DBWR 跟蹤文件 ORA-01110: 數(shù)據(jù)文件 101: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'
又關(guān)閉又啟動,來回折騰,都是如此:
SQL> shutdown immediate ORA-01109: 數(shù)據(jù)庫未打開 已經(jīng)卸載數(shù)據(jù)庫。 ORACLE 例程已經(jīng)關(guān)閉。 SQL> startup ORACLE 例程已經(jīng)啟動。 Total System Global Area 2147483648 bytes Fixed Size 3834152 bytes Variable Size 671092440 bytes Database Buffers 1459617792 bytes Redo Buffers 12939264 bytes 數(shù)據(jù)庫裝載完畢。 ORA-01157: 無法標識/鎖定數(shù)據(jù)文件 101 - 請參閱 DBWR 跟蹤文件 ORA-01110: 數(shù)據(jù)文件 101: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'
3、查閱網(wǎng)上資料,應(yīng)該是將此遺失文件標為脫機、刪除。但提示找不到該文件!
SQL> alter database datafile 101 offline; alter database datafile 101 offline * 第 1 行出現(xiàn)錯誤: ORA-01516: 不存在的日志文件, 數(shù)據(jù)文件或臨時文件 "101"
這就奇怪了,明明是你提示了該文件的,現(xiàn)在又說不知道這個文件。
4、估計是當前所在數(shù)據(jù)庫是CDB,而這個文件屬于PDB,所以應(yīng)該切換到相關(guān)PDB,再進行文件脫機。
SQL> alter session set container=PDBDTJK; 會話已更改。 SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 13 PDBDTJK MOUNTED
5、脫機(offline,drop),成功!
SQL> alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' offline; alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' offline * 第 1 行出現(xiàn)錯誤: ORA-01145: 除非啟用了介質(zhì)恢復(fù), 否則不允許立即脫機 SQL> alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' offline drop; 數(shù)據(jù)庫已更改。
6、切換回CDB,打開,成功!
SQL> alter session set container=CDB$ROOT; 會話已更改。 SQL> alter database open; 數(shù)據(jù)庫已更改。
哎,我的天吶!吶啊~~~
7、總結(jié)
1)一個PDB損壞,導(dǎo)致整個CDB以及其他PDB都不能用,乃至于無法恢復(fù)?不應(yīng)該啊,這可是oracle啊,不可能這么弱智的
還真是。聽說oracle 12c r1版本就是,PDB宕機,CDB也會陪著一起宕;到r2就好一點,只宕PDB。
2)本次恢復(fù),從CDB切換到PDB是關(guān)鍵。網(wǎng)上給出的答案,都是11g或以前的,一個實例對應(yīng)一個數(shù)據(jù)庫,所以沒有數(shù)據(jù)庫切換的概念,文件說脫機就脫機了。
3)只要數(shù)據(jù)庫實例能啟動,不管CDB是否已打開,sys都能進去:
sqlplus sys/pwd@servername as sysdba;
而PDB則不行。在未打開的情況下,你用 conn user/pwd@servername 這種方式已經(jīng)進不去了,但切換會話還可以:
SQL> alter session set container=PDBDTJK; 會話已更改。
這是孫悟空的一根救命毫毛。
4)以上問題的解決,現(xiàn)在看起來一步一步的,清晰明了,但這中間經(jīng)過了多少煎熬和痛苦。昨天傍晚出現(xiàn)的問題,搞到21點,還沒搞定?;丶依^續(xù)查資料到晚上快24點。早上七點醒來,才查了一下會話切換。早上是人最清醒的時候。
我都不清楚這個文件是怎么刪除的。在繼續(xù)使用的情況下,刪除文件系統(tǒng)會提示被鎖定,估計是停掉數(shù)據(jù)庫再刪除,叉啊,這不是找死嗎。我都不敢想象,如果今天數(shù)據(jù)庫沒起來,會有一翻怎樣的折騰。雖然是開發(fā)數(shù)據(jù)庫,但好多項目在使用,各有各的PDB。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法
Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法...2007-03-03Oracle 創(chuàng)建監(jiān)控賬戶 提高工作效率
有很多Oracle服務(wù)器,需要天天查看TableSpace,比較麻煩了。2009-10-10Oracle密碼錯誤次數(shù)過多賬號鎖定的問題(推薦)
一般數(shù)據(jù)庫默認是10次嘗試失敗后鎖住用戶。這篇文章主要介紹了Oracle密碼錯誤次數(shù)過多賬號鎖定的問題,需要的朋友可以參考下2017-03-03Oracle刪除重復(fù)的數(shù)據(jù),Oracle數(shù)據(jù)去重復(fù)
這篇文章主要介紹了Oracle刪除重復(fù)的數(shù)據(jù),Oracle數(shù)據(jù)去重復(fù),需要的朋友可以參考下2016-08-08CentOS8下安裝oracle客戶端完整(填坑)過程分享(推薦)
這篇文章主要介紹了CentOS8下安裝oracle客戶端完整(填坑)過程分享,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12oracle 數(shù)據(jù)泵導(dǎo)入導(dǎo)出介紹
本文將介紹oracle數(shù)據(jù)泵導(dǎo)導(dǎo)出步驟詳細介紹,需要的朋友可以參考下2012-12-12Oracle數(shù)據(jù)庫性能優(yōu)化技術(shù)開發(fā)者網(wǎng)絡(luò)Oracle
Oracle數(shù)據(jù)庫性能優(yōu)化技術(shù)開發(fā)者網(wǎng)絡(luò)Oracle...2007-03-03Oracle 11g Release (11.1) 索引底層的數(shù)據(jù)結(jié)構(gòu)
本文介紹關(guān)于 Oracle 索引的結(jié)構(gòu)。大概了解 Oracle 索引底層的數(shù)據(jù)結(jié)構(gòu),從而更好地理解 Oracle 索引對增、刪、改、查的性能2012-11-11使用PL/SQL Developer連接Oracle數(shù)據(jù)庫的方法圖解
之前因為項目的原因需要使用Oracle數(shù)據(jù)庫,由于時間有限沒辦法從基礎(chǔ)開始學(xué)習(xí),而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer這個很好用的軟件來間接使用數(shù)據(jù)庫,下面簡單介紹一下如何用這個軟件連接Oracle數(shù)據(jù)庫2016-12-12