oracle Expdp和Impdp导入导出数据库

基本导入导出语句为

//将指定用户user和实例orcl下的数据库导入/导出
 impdp/expdp user/pwd@orcl directory=DATA_PUMP_DIR

DATA_PUMP_DIR是oracle数据库文件的默认导出路径,一般是oracle安装目录下的/admin/orcl(实例名)/dpdump目录,导出的数据库文件就是此目录下的expdat.dmp文件,也可以用select * from dba_directories查到。如果导出过一次,下次再导出就要先把原先生成的文件删掉。

我们如果想要自己指定导出路径和导出文件名,就要自行创建一个Oracle的directory,用于配置自己的路径。
创建directory:

//创建DIRECTORY
CREATE OR REPLACE DIRECTORY my_dir as '/opt/oracle/pump';
//将directory的权限分配给指定用户
GRANT CREATE ANY DIRECTORY TO user;
//删除创建的DIRECTORY
drop directory my_dir;

导入语句:

//directory用于指定要导入的文件路径
//dumpfile指定要导入的文件名,Linux下可以这样写文件名保证不重复:exp_"$(date -d "today"+"%Y%m%d_%H%M%S")".dmp
//remap_schema左边是数据库原来的用户,右边是要导入的用户
//remap_tablespace左边是数据库原来的实例名,右边是要导入的实例名
//table_exists_action:skip 是如果已存在表,则跳过并处理下一个对象;append是为表增加数据;truncate是截断表,然后为其增加新数据;replace是删除已存在表,重新建表并追加数据

//transform用于指定是否修改建立对象的DDL语句,左边是要转换的参数名,右边是参数类型如(y/n)
//TRANSFORM = transform_name:value[:object_type]
//这里用的OID:如果值被指定为n,那么在table和type的创建过程中,导出OID的分配就会被抑制。取而代之的是一个新的OID。这对于克隆模式很有用,不会影响被引用的对象。默认值是y,因此在进行Imp的时候,新创建的table或者type会赋予同样的OID,如果是位于同一个数据库上的不同schema,那就会造成OID冲突的问题,我这里一般都会加上transform=OID:N这个参数。

//提一下参数EXCLUDE=STATISTICS,排除统计值,EXCLUDE=job 表示不导出job对象,如果没有job则可以不写。该参数可以规避许多全局型不方便导出的对象。

impdp user_to/pwd directory=my_dir dumpfile=mydb.DMP remap_schema=user_from:user_to remap_tablespace=orcl_from:orcl_to table_exists_action=replace transform=OID:N

导出语句:

//基本语法参照导入语句
//schemas指定导出数据库所属用户
//dumpfile指出的导入的文件要放入my_dir指定的路径下
expdp user_from/pwd directory=my_dir dumpfile=mydb.DMP schemas=user_from

具体或者详情可参照[https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_import.htm]

猜你喜欢

转载自blog.csdn.net/yabaj/article/details/79944330