Oracle 12c 起开始支持可插拔数据库(PDB),这为数据库运维带来了很大便利。
然而……
某天晚上迁移数据,很开心的拔出插入拔出插入的过程中,一个不小心,把拔出的 XML 文件给删了!
当时我的表情是这样的:Σ(っ °Д °;)っ
还好数据文件还在,就想着怎么恢复该文件能顺利恢复该数据库。
好吧,思路 1:打开另一份 xml 文件,修改其中的内容,然后插进去。
然后打开:
Σ(  ̄д ̄;) !!!
这 TM 什么鬼,各种参数,要手动改想来不易。
然后就去 google 去了,果然有方法,Oracle 大厂就是周到。
执行如下 procedure:
1 | DBMS_PDB.RECOVER ( |
第一个参数是重新生成的 xml 文件路径,第二个为 PDB 名字,第三个则是原来拔出的 PDB 的数据文件的路径了。
几秒钟,生成了一个 xml 文件,小心翼翼搞出来,删掉原 PDB 名字。
(..•˘_˘•..)
然后插入,打开 PDB。
状态正常,没报错。
(●´∀`●)
所谓“不残血不秀”,搞数据库也是“不手抖不进步”。
当然权当玩笑,涉及数据还是要万事小心,知道自己在做什么!
PS: 元宵节遇到这种事情,怕是没吃到汤圆撒( ´◔ ‸◔`)
2018.03.04 更新:
在迁移过程中,尝试拔出,这次没有丢失 xml 文件,仍旧无法插回去,报错如下:
ORA-65180: duplicate file name encountered -
仍旧需要恢复出一个 xml 来重新插回去,对比两个 xml 文件,发现有问题的 xml 文件多了 undo 文件描述和临时表空间描述
+DATA/TEST/6007BF8…21F/DATAFILE/undo_3.234.123453671
+DATA/TEST/6614D72…4BF/TEMPFILE/test_temp.498.12345375
而可以恢复的是没有这两个表空间描述的。
具体原因待发掘。
-EOF-