10g和之前,只有exp和imp,11g以后,就推荐使用expdp和impdp来导出、还原了。
但是,exp和imp还是有一些不可替代的优势,就是它们能够在客户端运行,而expdp和impdp只能在服务器端运行。
不过,客户端机器上要安装相应的oracle客户端才行。好比说,你的机器是一个客户端,只装了oracle 10g的客户端,而服务器的oralce是12c的,那么你在你机器上运行exp、imp来操作服务器这个12c数据库,是不行的,一定要在你机器上装12c客户端才行。
另外,用exp和imp可能备份、还原指定表(expdp、impdp应该也可以?),还原的时候,要求目标库要存在相应的表,没有的话,它会报错,不会替你自动创建。
但是,如果有的话,它是自动替你清掉目前的数据,将自己的数据插进去的。没有什么append的选项。impdp有。这时候,可以灵活变通一下:
在目标库中,将目标表的数据select into另一张新表,保存下来,然后imp;完了之后再从新表中将旧数据select into回来。