Oracle使用exp/imp导出导入数据
exp导出
# exp导出数据库下所有的对象
# 注意full=y不再区分用户,而是所有用户的对象
# 另外使用full=y的时候,exp后的用户test必须具备exp_full_database权限
exp test/123456 file='E:\backup\orabak\test.dmp' log='E:\backup\orabak\test.LOG' full=y
# exp导出TEST用户下的所有数据
# owner用来指定用户,只导出TEST用户下的所有对象数据,而不会导出全库的对象数据
exp system/123456 file='E:\backup\orabak\test.dmp' log='E:\backup\orabak\test.LOG' owner='TEST';
# exp导出TEST用户下的所有数据,不包括权限、约束、触发器
exp system/123456 file='E:\backup\orabak\test.dmp' log='E:\backup\orabak\test.LOG' owner='TEST' grants=n constraints=n triggers=n;
# exp导出TEST用户下的指定的表数据
# tables用来指定需要导出的表名
exp system/123456 file='E:\backup\orabak\test.dmp' log='E:\backup\orabak\test.LOG' tables=(TEST.T1,TEST.T2);
imp导入
# 将备份文件中的DBO用户下的数据导入到TEST用户下
imp system/123456 file='E:\backup\orabak\DBO.dmp' log='E:\backup\orabak\DBO.LOG' fromuser='DBO' touser='TEST';
# 将备份文件中的DBO用户下的数据导入到TEST用户下,不包括权限、约束、触发器等
imp system/123456 file='E:\backup\orabak\DBO.dmp' log='E:\backup\orabak\DBO.LOG' fromuser='DBO' touser='TEST' grants=n constraints=n;
补充说明
导入导出的用户名最好保持一致,这样可以避免很多对象重建失败。
触发器、约束、权限是一个比较麻烦的选项,如果导入导出的用户名不同,无法将源库中的这些对象正常导入进新的用户下,需要重建,所以在初步导出导入的时候尽量不要加上约束、触发器等对象,后续单独导出导入这些对象。