1. 程式人生 > >oracle 12c誤刪pdb資料檔案導致整個資料庫無法開啟問題

oracle 12c誤刪pdb資料檔案導致整個資料庫無法開啟問題

同事誤刪了某個外掛資料庫(PDB)的資料檔案,結果整個資料庫,包括容器資料庫(CDB),以及其他外掛資料庫都用不了了。

1、用sys賬號進入例項,可見容器資料庫處於mounted狀態;插在上面的所有PDB當然也都是mounted。

sqlplus sys/pwd@orcl12c as sysdba;

2、試圖開啟CDB,提示有資料庫檔案未能載入。

SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定資料檔案 101 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 101:
'D:\APP
\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'

又關閉又啟動,來回折騰,都是如此:

SQL> shutdown immediate 
ORA-01109: 資料庫未開啟


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area 2147483648 bytes
Fixed Size                  3834152 bytes
Variable Size             671092440 bytes
Database Buffers         1459617792
bytes Redo Buffers 12939264 bytes 資料庫裝載完畢。 ORA-01157: 無法標識/鎖定資料檔案 101 - 請參閱 DBWR 跟蹤檔案 ORA-01110: 資料檔案 101: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'

3、查閱網上資料,應該是將此遺失檔案標為離線、刪除。但提示找不到該檔案!

SQL> alter database datafile 101 offline;
alter database datafile 101 offline
*
第 1 行出現錯誤:
ORA-01516
: 不存在的日誌檔案, 資料檔案或臨時檔案 "101"

這就奇怪了,明明是你提示了該檔案的,現在又說不知道這個檔案。

4、估計是當前所在資料庫是CDB,而這個檔案屬於PDB,所以應該切換到相關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 行出現錯誤:
ORA-01145: 除非啟用了介質恢復, 否則不允許立即離線


SQL> alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' offline drop;

資料庫已更改。

6、切換回CDB,開啟,成功!

SQL> alter session set container=CDB$ROOT;

會話已更改。

SQL> alter database open;

資料庫已更改。

哎,我的天吶!吶啊~~~

7、總結
1)一個PDB損壞,導致整個CDB以及其他PDB都不能用,乃至於無法恢復?不應該啊,這可是oracle啊,不可能這麼弱智的

還真是。聽說oracle 12c r1版本就是,PDB宕機,CDB也會陪著一起宕;到r2就好一點,只宕PDB。

2)本次恢復,從CDB切換到PDB是關鍵。網上給出的答案,都是11g或以前的,一個例項對應一個數據庫,所以沒有資料庫切換的概念,檔案說離線就離線了。

3)只要資料庫例項能啟動,不管CDB是否已開啟,sys都能進去:

sqlplus sys/pwd@servername as sysdba;

而PDB則不行。在未開啟的情況下,你用 conn user/[email protected] 這種方式已經進不去了,但切換會話還可以:

SQL> alter session set container=PDBDTJK;

會話已更改。

這是孫悟空的一根救命毫毛。

4)以上問題的解決,現在看起來一步一步的,清晰明瞭,但這中間經過了多少煎熬和痛苦。昨天傍晚出現的問題,搞到21點,還沒搞定。回家繼續查資料到晚上快24點。早上七點醒來,才查了一下會話切換。早上是人最清醒的時候。

我都不清楚這個檔案是怎麼刪除的。在繼續使用的情況下,刪除檔案系統會提示被鎖定,估計是停掉資料庫再刪除,叉啊,這不是找死嗎。我都不敢想象,如果今天資料庫沒起來,會有一翻怎樣的折騰。雖然是開發資料庫,但好多專案在使用,各有各的PDB。

相關推薦

oracle 12cpdb資料檔案導致整個資料庫無法開啟問題

同事誤刪了某個外掛資料庫(PDB)的資料檔案,結果整個資料庫,包括容器資料庫(CDB),以及其他外掛資料庫都用不了了。 1、用sys賬號進入例項,可見容器資料庫處於mounted狀態;插在上面的所有PDB當然也都是mounted。 sqlplus sys/p

12c容器資料庫匯入操作_筆記(Linux/oracle借用shell工具匯入資料檔案操作)

Linux/oracle借用shell工具匯入資料檔案操作 一、使用shell工具,遠端連線到Linux下的oracle資料庫服務上 Xshell 6 (Build 0095) Copyright (c) 2002 NetSarang Computer, Inc. All rights reserved

Oracle資料閃回恢復

今天在做測試時誤刪了一條資料,因為有關聯的原因,所以要想辦法恢復這條資料,在網上找到了這種方法。 1.首先確定要恢復的時間點 select * from XXX      AS OF TIMESTAMP TO_TIMESTAMP('2018-11-13 15:01:37'

恢復oracle的表 或delete 掉的資料恢復

查看回收站中表  drop表之後的恢復 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; SQL>flashback

oracle資料(delete)

轉:http://www.cnblogs.com/hqbhonker/p/3977200.html 1.開啟Flash儲存的許可權ALTER TABLE tableName ENABLE row movement ; 2.找到這個表在這個時間點的資料 select * from tabl

表空間檔案,造成“ORA-01033: ORACLE 正在初始化或關閉”

C:\Documents and Settings\Administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 5月 12 09:05:56 2010Copyright (c)

ORACLE 表、資料後恢復

最近在工作中使用ORACLE,一個失誤刪錯了表,當時心急如焚,因為接觸ORACLE時間不長,也不清楚ORACLE的功能, 同事就去找了下恢復的解決辦法,發現ORACLE刪除表後,是換了個名字,躺到了ORALCE的回收站中。         記錄一下使用的語句,以便以後遇到

Oracle閃回技術之一Oracle 11g 利用FlashTable (閃回表)恢復(用delete)資料

閃回表,實際上就是將表中的資料快速恢復到過去的一個時間點或者系統改變號SCN上。實現表的閃回,需要用到撤銷表空間相關的UNDO資訊,通過SHOW PARAMETER UNDO命令就可以瞭解這些資訊。使用者對錶的資料的修改操作,都記錄在撤銷表空間中,這為表的閃回提供的資料恢

資料庫檔案導致資料庫開啟問題

Q: 這個錯誤我覺得對於初學者來說還是有很大機會犯的,問題是這樣的,這一天,我照常啟動OracleOra11g_home1TNSListener和OracleServiceORCL 兩個服務,然後進入PL/SQL,登入,輸入使用者名稱和密碼後提示,資料庫未開啟,我又確定了一

oracle 12c 多租戶 pdb 恢復(單個pdb數據文件、非系統pdb表空間、整個pdb數據庫)

數據文件 ota ora-01110 創建 正常 方式 cti users rman 環境:數據庫版本 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production實驗準備:1.--

怎樣找到win8電腦分區資料

3D images 了解 image 幾分鐘 AC mage 暫時 數據 分區找不到是比較常見的數據恢復案例,需要註意,分區找不到後不要再重建新的分區。保護好數據丟失現場,可以最大程度的恢復出數據。具體的恢復方法看正文了解。 工具/軟件:AuroraDataRecovery

Oracle 12C CDB、PDB常用管理命令

自動 guid ont rep acl 數據 ace datafile con --查看PDB信息(在CDB模式下) show pdbs --查看所有pdb select name,open_mode from v$pdbs; --v$pdbs為PDB信息視圖 sel

Oracle恢復數據

恢復 flash div table flashback 數據 誤刪 ans nbsp 1.先查出被刪除的時間點: select * from flashback_transaction_query where table_name=‘表名‘; 2.根據時間點恢復數據

oracle備份之rman_恢復資料檔案

測試環境:redhat 5.5 oracle 11g 測試步驟: 1.備庫 2.插資料 3.刪dbf 4.關閉並啟動到mount 5.restore 6.recover 7.開啟 RMAN> backup database; Starting back

終極解決方案之——Centos7由於或更新python導致 No module named yum

之前由於不懂yum和python之間的關係,因為一直在學python3,看到系統裡/usr/lib下的python2我就直接刪了,結果。。。 可能還有人是因為python升級的原因,即系統自帶的python2還在,但由於升級導致問題,現在就這兩個原因提出我的解決方案。 1.由於python升級導致yum無

系統排錯4:若系統核心檔案,如何恢復?

系統排錯 若誤刪系統核心檔案,如何恢復? (1)模擬實驗環境 [[email protected] ~]# cd /boot/ [[email protected] boot]# ls ##刪除核心檔案 [[email protected] boot

系統排錯3:若grub引導檔案,如何恢復?

系統排錯 若誤刪grub引導檔案,如何恢復? (1)刪除grub引導檔案但系統並未重啟 1).模擬實驗環境 [[email protected] ~]# cd /boot/grub2 [[email protected] grub2]# ls device

Linux系統下/etc/passwd檔案的解決辦法

在Linux 中 /etc/passwd檔案中每個使用者都有一個對應的記錄行,它記錄了這個使用者的一些基本屬性。系統管理員經常會接觸到這個檔案的修改以完成對使用者的管理工作。 比如說:      root:x:0:0:root:/root

Oracle 10g使用amdu抽取資料檔案

環境:OEL 5.7 + Oracle 10.2.0.5 RAC 需求:實驗在Oracle 10g環境使用amdu抽取資料庫檔案 本文主要目的是介紹3個知識點: 1.使amdu可以在oracle 10g環境中使用 2.使kfed可以在oracle 10g環境中使用 3.amdu如何抽取損壞的

詳解:如何恢復MySQL資料庫資料

作者:馬哥Linux運維-Robin 血的教訓,事發經過就不詳述了。直接上操作步驟及恢復思路(友情提示:資料庫的任何操作都要提前做好備份),以下是Mysql資料後的恢復過程: 1. 找到binlog 恢復資料的前提是必須開啟Mysql的binlog日誌,如果binlog日誌沒開啟,請忽略此篇文件。b