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数据文件,整个数据库打不开,怎么办?”这篇文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。 !
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle 12c中误删除pdb数据文件导致整个数据库打不开怎么办?