Oracle 的导出导入工具expimp,是老 DBA 们手里常备的家伙事儿,尤其适合那种表多、数据量不算大的项目。配置简单,命令行就能搞定,适合日常做备份或者跨库迁移那类活儿。

exp 命令的逻辑挺直观:指定用户名、导出对象、文件路径这些参数后,它就能把你想要的数据打包成.dmp文件。你要是只导一个表,tables=(表名)就能搞定。如果要整个用户的库都导出,用owner=用户名就行。

举个例子:

exp wzw/wzw@test file=d:/wzw/1.dmp tables=(t_wzw)
这一条命令就把wzw用户下的t_wzw表导出了,文件保存在d:/wzw/1.dmp。简单明了,挺适合自动化脚本里跑。

imp 命令用法也差不多,参数基本对称。如果你之前导出的是全库,导入时加上full=y就能还原全部。如果数据库里已经有表了,记得加ignore=y,不然会报错。

比如下面这条:

imp dw/dw@test file=d:/wzw.dmp full=y ignore=y
,它的意思是“把d:/wzw.dmp这个文件里的所有东西导回来,遇到重复的别管,照样搞”。嗯,平时备份恢复的时候用得还挺多。

比较实用的一点是bufferrecordlength这些性能相关参数,调一下能加快速度,尤其是大表。还有direct=y可以试试,直接路径导出模式,快,但不一定兼容所有场景。

要注意,exp/imp属于老工具了,现在 Oracle 更推荐expdp/impdp,功能更强。只是你要是维护一些老系统,这俩老工具还真少不了。想多了解的话可以看看这些:

如果你正好维护老项目,或者临时要备份个库,不妨试试expimp。命令简单,上手快,还挺稳的。