数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

使用impdp复制oracle的schema数据迁移


发布日期:2018年03月03日
 
使用impdp复制oracle的schema数据迁移

测试环境:

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=源用户:目标用户 中的目标用户可以事先创建

上一篇:oracle的分析函数over(Partition by...)

下一篇:怎样保持Oracle数据库SQL性能的稳定性