Oracle中expdp与impdp--导入和导出操作步骤

    Oracle expdp 与impdp

一, 根据用户导出导入数据(用户和表空间都相同):

这些命令必须在Oracle 工具执行:

create directory dpdata1 as ‘E:\oracle_home\product\backup’;

这个E:\oracle_home\product\backup必须存在也就是在E盘创建这个目录;

grant create any directory to dev_ocs;

expdp ‘dev_ocs/oracle@fdbusionline’ directory=dpdata1 dumpfile=dev_ocs.dmp logfile=dev_ocs.log schemas=dev_ocs

会报下列错误:

ORA-31631: 需要权限

ORA-39109: 未授权用户不能对其他用户的方案进行操作

可以增加 dev_ocs的权限, 比如授予dba权限,上面的错误就可以解决

grant dba to dev_ocs;

impdp ‘dev_ocs/oracle@fdbusionline’ DIRECTORY=DMPDIR DUMPFILE=DEV_OCS.DMP logfile=dev_ocs.log SCHEMAS=dev_ocs

如果数据库存在用户dev_ocs, 并且还有对应用户的表和数据, 执行上面的命令会报很多错误,建议 删除这个用户

drop user dev_ocs cascade; 执行这个命令不会删除物理文件,比如创建这个用户的表空间文件(.dbf)和表空间

select * from dba_data_files where tablespace_name=’DEV_OCS’可以看到创建这个用户的DEV_OCS的表空间依然存在, 临时表空间也会存在

如果不存在,也可以重新创建

CREATE TABLESPACE DEV_OCS DATAFILE ‘/u01/app/oracle/oradata/fdbusionline/dev_ocs.dbf’ SIZE 500M AUTOEXTEND ON;

CREATE TEMPORARY TABLESPACE DEV_IDS_TEMP TEMPFILE ‘/u01/app/oracle/oradata/fdbusionline/dev_ocs_temp.dbf’ SIZE 100M AUTOEXTEND ON;

ØCREATE USER dev_ocs IDENTIFIED BY oracle DEFAULT TABLESPACE DEV_OCS TEMPORARY TABLESPACE DEV_OCS_TEMP;

– Grant/Revoke role privileges

grant contentserver_role to DEV_OCS;

grant dba to DEV_OCS;

– Grant/Revoke system privileges

grant create any directory to DEV_OCS;

grant unlimited tablespace to DEV_OCS;

就可以重新执行impdp的命令

二, 根据用户导出导入数据(用户和表空间都不同相同):

impdp admuser1/admuser DUMPFILE=CRV_ADMUSER.DMP remap_schema=admuser:admuser1 remap_tablespace=PMDB_DAT1:PMDB_DAT2

impdp ‘dev_ocs/oracle@fdbusionline’ DIRECTORY=DMPDIR DUMPFILE=DEV2_OCS.DMP logfile=dev_ocs.log REMAP_SCHEMAS=dev2_ocs:dev_ocs remap_tablespace=dev2_ocs:dev_ocs

impdp admuser1/admuser DUMPFILE=CRV_ADMUSER.DMP remap_schema=admuser:admuser1 remap_tablespace=PMDB_DAT1:PMDB_DAT2

说明:

REMAP_SCHEMA可以定义用户的切换,其格式为:
remap_schema=old_schema_name:new_schema_name

REMAP_TABLESPACE可以定义切换对象的不同表空间,其格式为:
remap_tablespace=old_tablespace_name:new_tablespace_name

在使用impdp时,会发现,有很多参数选项与imp不同,比如说,找不到了fromuser和touser参数,也找不到了ignore参数,indexes等参数也不再存在。

当然这些功能都还在,而且更加强大,impdp有了不少新的替代参数。
以下三个参数极大的增强了用户转换及表空间转换的操作:
REMAP_DATAFILE Redefine datafile references in all DDL statements.
REMAP_SCHEMA Objects from one schema are loaded into another schema.
REMAP_TABLESPACE Tablespace object are remapped to another tablespace.

REMAP_SCHEMA可以定义用户的切换,其格式为:
remap_schema=old_schema_name:new_schema_name

REMAP_TABLESPACE可以定义切换对象的不同表空间,其格式为:
remap_tablespace=old_tablespace_name:new_tablespace_name

以前类似IGNORE的忽略创建错误,可以使用CONTENT参数:
CONTENT Specifies data to load where the valid keywords are:
(ALL), DATA_ONLY, and METADATA_ONLY.

如果数据结构已经存在可以指定CONTENT=DATA_ONLY,仅导入数据。

而关于索引的排除,可以使用EXCLUDE参数:
EXCLUDE Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.

IMPDP导入时忽略索引可以使用类似: EXCLUDE=CONSTRAINT EXCLUDE=INDEX

如果导入时遇到如下错误,就需要调整REMAP_SCHEMA参数:

遇到如下错误,那就需要制定REMAP_TABLESPACE参数:
ORA-00959: tablespace ‘SMS_MT’ does not exist

今天使用的参数是:
impdp sms4/sms4 dumpfile=08.dmp directory=impdp TABLES=smsmg REMAP_SCHEMA=SMS:SMS4 REMAP_TABLESPACE=SMS_MT:SMS CONTENT=DATA_ONLY PARALLEL=8 EXCLUDE=CONSTRAINT EXCLUDE=INDEX

猜你喜欢

转载自blog.csdn.net/frank_ldw/article/details/80036860