Oracle 12c中误删除pdb数据文件导致整个数据库打不开怎么办?

分类:编程技术 时间:2024-02-20 15:26 浏览:0 评论:0
0
本文将和大家分享一下Oracle 12c不小心删除了pdb数据文件导致整个数据库打不开怎么办。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

方法如下:

1.使用sys帐号进入实例。可以看到容器数据库处于mounted状态;当然,插入其上的所有 PDB 也都已挂载。 。

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> 立即关闭ORA-01109: 数据库未打开且数据库已卸载。 ORACLE例程已关闭。 SQL>startupORACLE 例程已启动。系统全局区域总计 2147483648 字节固定大小 3834152 字节可变大小 671092440 字节数据库缓冲区 1459617792 重做缓冲区 12939264 字节数据库已加载。 ORA-01157: 无法识别/锁定数据文件 101 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 101:'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF'

3、查看在线信息,将丢失的文件标记为离线并删除。但它说找不到该文件!

SQL> alterdatabasedatafile101offline;alterdatabasedatafile101offline*第 1 行错误: ORA-01516: 不存在的日志文件、数据文件或临时文件 " 101”

这很奇怪。明明是你提示了这个文件,现在却说你不知道这个文件。

4.估计当前数据库是CDB,这个文件属于PDB,因此您应该切换到相关的PDB,然后将该文件脱机。

SQL> alter session set container=PDBDTJK;会话已更改。 SQL> 显示 pdb; CON_ID CON_NAME 开放模式受限-------------------------------------------------------- --- ------- ---------- 13 PBDDTJK 安装

5。离线(离线、掉线),成功!

SQL> 更改数据库数据文件 'D:\APP\ADMINISTRATOR\ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' 离线;更改数据库数据文件 'D:\APP\ADMINISTRATOR \ORADATA\ORCL12C\PDBDTJK\NMEMC.DBF' 脱机* 第 1 行错误:ORA-01145:除非启用介质恢复,否则不允许立即脱机 SQL> alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ ORCL12C\PDBDTJK\ NMEMC.DBF'离线删除;数据库已更改。 

6.切换回CDB,打开,成功!

SQL> alter session set container=CDB$ROOT;会话已更改。 SQL> alter database open;数据库已修改盖德。 

天哪!呐~~~

7.总结

1)一个PDB损坏,导致整个CDB和其他PDB无法使用,甚至无法恢复?不应该的,这是神谕,不可能这么弱智

确实如此。听说在Oracle 12c r1版本中,如果PDB宕机了,CDB也会跟着宕机;在r2中,会好一些,只有PDB会down。

2)对于这次恢复,从CDB切换到PDB是关键。网上给出的答案都是针对11g或更早版本的。一个实例对应一个数据库,不存在数据库切换的概念。如果文件说它离线,那么它就会离线。

3)只要数据库实例能够启动,无论CDB是否打开,sys都可以进入:

sqlplus sys/pwd@ servername as sysdba;

但是 PDB 不起作用。如果没有打开,则无法再使用 conn user/pwd@servername 进入。 ,但是切换会话是可以的:

SQL> alter session set container=PDBDTJK;会话已更改。

这是孙悟空的救命毛。

4)解决办法以上问题现在看来已经一步步清晰了,但是却经历了很多煎熬和痛苦,昨天晚上出现的问题直到21点才解决,回家继续查资料直到晚上快24:00了。早上7点我就醒了,查看会话开关。早上是人最清醒的时间。

我也不知道怎么会这样文件被删除了,如果继续使用,删除文件系统会提示被锁定,大概需要停掉数据库再删除,哎呀,这不是找死吗?我无法想象如果今天数据库没有上来的话就会有点麻烦。虽然是开发数据库,​​但是很多项目都在使用它,每个项目都有自己的PDB。

谢谢对于雷亚尔叮!关于“Oracle 12c不小心删除了pdb数据文件,整个数据库打不开,怎么办?”这篇文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。 !

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle 12c中误删除pdb数据文件导致整个数据库打不开怎么办?

用户评论