众所周知,IMP工具的FROMUSER和TOUSER参数可以实现将一个用户的的数据迁移到另外一个用户。同样的功能在IMPPDP工具中如何得以体现呢? 答案就是:使用IMPPDP的REMAP_SCHEMA参数实现。
简单演示一下,供参考。
任务:将sec用户中的数据迁移到secooler用户。
1.分别确认sec和secooler用户下的表和数据情况 1)sec用户下有一张T表,含有24360行数据 sys@ora10g> conn sec/sec Connected. sec@ora10g> select * from tab;
TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- T TABLE
sec@ora10g> select count(*) from t;
COUNT(*) ---------- 24360
2)确认secooler用户不包含表T secooler@ora10g> conn secooler/secooler Connected. secooler@ora10g> select * from tab;
no rows selected
2.创建目录对象expdp_dir sys@ora10g> create or replace directory expdp_dir as '/expdp';
Directory created.
3.将目录对象expdp_dir的读写权限授权给sec和secooler用户 sys@ora10g> grant read,write on directory expdp_dir to sec;
Grant succeeded.
sys@ora10g> grant read,write on directory expdp_dir to secooler;
Grant succeeded.
4.生成sec的备份文件 ora10g@secDB /expdp$expdpsec/sec directory=expdp_dir dumpfile=`date +"%Y%m%d%H%M%S"`_sec.dmp logfile=`date +"%Y%m%d%H%M%S"`_sec.log
Export: Release 10.2.0.3.0 - 64bit Production on Thursday,01 April,2010 10:29:17
Copyright (c) 2003,2005,153);">Oracle. All rights reserved.
Connected to: Oracle Database10gEnterprise Edition Release 10.2.0.3.0 - 64bit Production With the Partitioning,Oracle Label Security,OLAP andDataMining Scoring Engine options Starting "SEC"."SYS_EXPORT_SCHEMA_01": sec/******** directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec.log Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 3 MB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/TABLE/COMMENT . . exported "SEC"."T" 2.259 MB 24360 rows Master table "SEC"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SEC.SYS_EXPORT_SCHEMA_01 is: /expdp/20100401102917_sec.dmp Job "SEC"."SYS_EXPORT_SCHEMA_01" successfully completed at 10:29:20
生成的备份文件信息如下: ora10g@secDB /expdp$ ls -l *sec.dmp -rw-r----- 1 oracle oinstall 2.5M Apr 1 10:29 20100401102917_sec.dmp
5.使用IMPDP的REMAP_SCHEMA参数实现secooler用户的数据导入 ora10g@secDB /expdp$ impdp secooler/secooler directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log REMAP_SCHEMA=sec:secooler
Import: Release 10.2.0.3.0 - 64bit Production on Thursday,2010 10:32:10
Copyright (c) 2003,2005,Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production With the Partitioning,OLAP and Data Mining Scoring Engine options Master table "SECOOLER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SECOOLER"."SYS_IMPORT_FULL_01": secooler/******** directory=expdp_dir dumpfile=20100401102917_sec.dmp logfile=20100401102917_sec_impdp.log REMAP_SCHEMA=sec:secooler Processing object type SCHEMA_EXPORT/USER ORA-31684: Object type USER:"SECOOLER" already exists Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA . . imported "SECOOLER"."T" 2.259 MB 24360 rows Job "SECOOLER"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 10:32:12
OK,迁入任务完成。
6.确认最后的迁移迁移成果 连接到secooler用户确认T表及其中的数据是否已经完成导入。 sec@ora10g> conn secooler/secooler Connected. secooler@ora10g> select * from tab;
TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- T TABLE
secooler@ora10g> select count(*) from t;
COUNT(*) ---------- 24360
OK,搞定。
7.进一步参考资料 最好的参考资料就是Oracle的官方文档,参考链接如下: http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_import.htm#sthref340 便于参考,copy一份在此:
REMAP_SCHEMA
Default: none
Purpose
Loadsall objects from the source schema into a target schema.
Syntax and Description
REMAP_SCHEMA=source_schema:target_schema
MultipleREMAP_SCHEMA lines can be specified,but the source schema must be different for each one. However,different source schemas can map to the same target schema. The mapping may not be 100 percent complete,because there are certain schema references that Import is not capable of finding. For example,Import will not find schema references ××ded within the body of definitions of types,views,procedures,and packages.
If the schema you are remapping to does not already exist,the import operation creates it,provided the dump file set contains the necessaryCREATE USER metadata for the source schema and you are importing with enough privileges. For example,the following Export commands would create the dump file sets with the necessary metadata to create a schema,because the userSYSTEM has the necessary privileges:
>expdpSYSTEM/passwordSCHEMAS=hr
>expdpSYSTEM/passwordFULL=y
If your dump file set does not contain the metadata necessary to create a schema,or if you do not have privileges,then the target schema must be created before the import operation is performed. This is because the unprivileged dump files do not contain the necessary information for the import to create the schema automatically.
If the import operation does create the schema,then after the import is complete,you must assign it a valid password in order to connect to it. TheSQLstatement to do this,which requires privileges,is:
SQL>ALTERUSER[schema_name]IDENTIFIEDBY[new_pswd]
Restrictions
Unprivileged users can perform. schema remaps only if their schema is the target schema of the remap. (Privileged users can perform. unrestricted schema remaps.)
For example,SCOTT can remap hisBLAKE 's objects toSCOTT ,butSCOTT cannot remapSCOTT 's objects toBLAKE .
Example
Suppose that you execute the following Export and Import commands to remap thehr schema into thescott schema:
>expdpSYSTEM/passwordSCHEMAS=hrDIRECTORY=dpump_dir1DUMPFILE=hr.dmp
>impdpSYSTEM/passwordDIRECTORY=dpump_dir1DUMPFILE=hr.dmp
REMAP_SCHEMA=hr:scott
In this example,if userscott already exists before the import,then the ImportREMAP_SCHEMA command will add objects from thehr schema into the existingscott schema. You can connect to thescott schema after the import by using the existing password (without resetting it).
If userscott does not exist before you execute the import operation,Import automatically creates it with an unusable password. This is possible because the dump file,hr .dmp ,was created bySYSTEM, which has the privileges necessary to create a dump file that contains the metadata needed to create a schema. However,you cannot connect toscott on completion of the import,unless you reset the password forscott on the target database after the import completes.
8.小结 在从EXP备份工具转到EXPDP工具的过程中,有很多的变动一定要注意,防止因误用导致效率低下。 无论是从功能上还是效率上讲,EXPDP都是首选(需要在服务器端使用)。
Good luck.
secooler 10.04.01
-- The End --http://space.itpub.net/519536/viewspace-631042 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|