Oracle 的导出导入工具exp
和imp
,是老 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
这个文件里的所有东西导回来,遇到重复的别管,照样搞”。嗯,平时备份恢复的时候用得还挺多。
比较实用的一点是buffer
和recordlength
这些性能相关参数,调一下能加快速度,尤其是大表。还有direct=y
可以试试,直接路径导出模式,快,但不一定兼容所有场景。
要注意,exp/imp
属于老工具了,现在 Oracle 更推荐expdp/impdp
,功能更强。只是你要是维护一些老系统,这俩老工具还真少不了。想多了解的话可以看看这些:
如果你正好维护老项目,或者临时要备份个库,不妨试试exp
和imp
。命令简单,上手快,还挺稳的。