溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開怎么辦

發(fā)布時間:2021-07-28 11:30:17 來源:億速云 閱讀:192 作者:小新 欄目:數(shù)據(jù)庫

這篇文章給大家分享的是有關(guān)oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開怎么辦的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

方法如下:

1、用sys賬號進(jìn)入實例,可見容器數(shù)據(jù)庫處于mounted狀態(tài);插在上面的所有PDB當(dāng)然也都是mounted。

sqlplus sys/pwd@orcl12c as sysdba;

2、試圖打開CDB,提示有數(shù)據(jù)庫文件未能加載。

SQL> alter database open;
alter database open
*
第 1 行出現(xiàn)錯誤:
ORA-01157: 無法標(biāo)識/鎖定數(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: 無法標(biāo)識/鎖定數(shù)據(jù)文件 101 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數(shù)據(jù)文件 101:
'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'

3、查閱網(wǎng)上資料,應(yīng)該是將此遺失文件標(biāo)為脫機(jī)、刪除。但提示找不到該文件!

SQL> alter database datafile 101 offline;
alter database datafile 101 offline
*
第 1 行出現(xiàn)錯誤:
ORA-01516: 不存在的日志文件, 數(shù)據(jù)文件或臨時文件 "101"

這就奇怪了,明明是你提示了該文件的,現(xiàn)在又說不知道這個文件。

4、估計是當(dāng)前所在數(shù)據(jù)庫是CDB,而這個文件屬于PDB,所以應(yīng)該切換到相關(guān)PDB,再進(jìn)行文件脫機(jī)。

SQL> alter session set container=PDBDTJK;

會話已更改。

SQL> show pdbs;

 CON_ID CON_NAME      OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
  13 PDBDTJK      MOUNTED

5、脫機(jī)(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ù), 否則不允許立即脫機(jī)


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宕機(jī),CDB也會陪著一起宕;到r2就好一點,只宕PDB。

2)本次恢復(fù),從CDB切換到PDB是關(guān)鍵。網(wǎng)上給出的答案,都是11g或以前的,一個實例對應(yīng)一個數(shù)據(jù)庫,所以沒有數(shù)據(jù)庫切換的概念,文件說脫機(jī)就脫機(jī)了。

3)只要數(shù)據(jù)庫實例能啟動,不管CDB是否已打開,sys都能進(jìn)去:

sqlplus sys/pwd@servername as sysdba;

而PDB則不行。在未打開的情況下,你用 conn user/pwd@servername 這種方式已經(jīng)進(jìn)不去了,但切換會話還可以:

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。

感謝各位的閱讀!關(guān)于“oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI