测试环境:
源 windows oracle
目标windows oracle
注本文中所说的 schema 和 user 是一个意思
impdp 的数据源既可以是expdp 导出来的DMP文件也可以是一数据库通过network_link 参数来指定数据源schemas 参数说明要复制的用户remap_schemas 参数说明源用户与目标用户的匹配关系remap_tablepace 来调整原 schemas 使用的表空间与目标数据库用户要表空间的对应关系这样基本上可以把源schema的数据导入到目标数据库格式如下
impdp user/password parfile=parfilelog
**********parfilelog 的内容***************
network_link=目标数据库上的数据库链
schema=源数据库上导出数据的用户
remap_schema=源用户:目标用户
remap_tablespace=源用户使用的表空间:目标用户将使用的表空间(包括临时表空间)
**********parfilelog 的内容***************
过程举例
在目标数据库上创建数据库链指向源数据库数据库链中连接的用户必须具备EXP_FULL_DATABASE
角色的权限 例
A新建数据库链里的用户授予create session 和使用users 空间的权限
SQL> create user link identified by ;
用户已创建
SQL> grant create session to link;
授权成功
SQL> ALTER USER LINK QUOTA UNLIMITED ON USERS;
用户已更改
B为该用户创建一表用于测试复制用户过程
SQL> CREATE TABLE LINKDOC_TYPE AS SELECT * FROM INFODOC_TYPE;
表已创建
SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER=LINK;
TABLE_NAME
DOC_TYPE
C使用该用户来创建数据库链
SQL> create public database link tolink connect to link identified by using ZHS;
数据库链接已创建
D使用该链来复制link用户报 ORA: cannot link privileged user to nonprivileged user
错误
d:\oracle\product\\db_\BIN>impdp network_link=tolink schemas=link remap_schema=link:link
Import: Release Production on Wednesday March ::
Copyright (c) Oracle All rights reserved
Username: / as sysdba
Connected to: Oracle Database g Enterprise Edition Release Production
With the Partitioning OLAP and Data Mining options
ORA: privileges are required
ORA: cannot link privileged user to nonprivileged user
F授予 exp_ful_database 权限后复制成功
SQL> grant exp_full_database to link;
授权成功
d:\oracle\product\\db_\BIN>impdp network_link=tolink schemas=link remap_schema=link:link
Import: Release Production on Wednesday March ::
Copyright (c) Oracle All rights reserved
Username: / as sysdba
Connected to: Oracle Database g Enterprise Edition Release Production
With the Partitioning OLAP and Data Mining options
FLASHBACK automatically enabled to preserve database integrity
Starting SYSSYS_IMPORT_SCHEMA_: /******** AS SYSDBA network_link=tolink schemas=link remap
_schema=link:link
Estimate in progress using BLOCKS method
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: KB
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/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
imported LINKDOC_TYPE rows
Job SYSSYS_IMPORT_SCHEMA_ successfully completed at ::
又如在两数据库间复制用户
A源数据库是上面例子中的LINK
B目标数据库是版本要将源中的LINK复制到目标中的LINK中
SYS@BTB>create public database link tolink connect to link identified by using zhs;
数据库链接已创建
SYS@BTB>SELECT * FROM TAB@TOLINK;
TNAME TABTYPE CLUSTERID
DOC_TYPE TABLE
F:\oracle\product\\db_\BIN>impdp network_link=tolink schemas=link remap_schema=link:link
Import: Release Production on 星期三 月 ::
Copyright (c) Oracle All rights reserved
用户名: / as sysdba
连接到: Oracle Database g Enterprise Edition Release Production
With the Partitioning OLAP and Data Mining options
自动启用 FLASHBACK 以保持数据库完整性
启动 SYSSYS_IMPORT_SCHEMA_: /******** AS SYSDBA network_link=tolink schemas=link remap_sch
ema=link:link
正在使用 BLOCKS 方法进行估计
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: KB
处理对象类型 SCHEMA_EXPORT/USER
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/TABLESPACE_QUOTA
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
导入了 LINKDOC_TYPE 行
作业 SYSSYS_IMPORT_SCHEMA_ 已于 :: 成功完成
F:\oracle\product\\db_\BIN>
SYS@BTB>select * from all_users order by ;
USERNAME USER_ID CREATED
SYSTEM ::
SYS ::
OUTLN ::
DIP ::
TSMSYS ::
DBSNMP ::
WMSYS ::
MGMT_VIEW ::
SCOTT ::
SCOTT ::
LINK ::
从LINK的创建时间可以知道该用户是刚创建的
注:
从上面两例子看出不论是在两数据库间哈市是在同一数据库里复制SCHEMAS都必须
使用network_link才能说明是在复制数据
remap_schema=源用户:目标用户 中的目标用户可以事先创建