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

使用impdp复制oracle的schema数据迁移,第1张

测试环境:     源 windows oracle      目标 windows oracle      注 本文中所说的 schema 和 user 是一个意思      impdp 的数据源既可以是expdp 导出来的DMP文件 也可以是一数据库 通过neork_link 参数来指定数据源 schemas 参数说明要复制的用户 remap_schemas 参数说明源用户与目标用户的匹配关系 remap_tablepace 来调整原 schemas 使用的表空间与目标数据库用户要表空间的对应关系 这样 基本上可以把源schema的数据导入到目标数据库 格式如下     impdp user/password parfile=parfile log     parfile log 的内容     neork_link=目标数据库上的数据库链     schema=源数据库上导出数据的用户      remap_schema=源用户:目标用户      remap_tablespace=源用户使用的表空间:目标用户将使用的表空间(包括临时表空间)      parfile log 的内容     过程举例       在目标数据库上创建数据库链 指向源数据库 数据库链中连接的用户必须具备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 LINK DOC_TYPE AS SELECT FROM INFO DOC_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 non privileged user 错误      d:\oracle\product\ \db_ \BIN>impdp neork_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 non privileged user

F 授予 exp_ful_database 权限后 复制成功      SQL> grant exp_full_database to link;     授权成功      d:\oracle\product\ \db_ \BIN>impdp neork_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 SYS SYS_IMPORT_SCHEMA_ : / AS SYSDBA neork_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 LINK DOC_TYPE rows     Job SYS SYS_IMPORT_SCHEMA_ successfully pleted at : :

lishixinzhi/Article/program/Oracle/201311/18055

EXPDP命令行选项

ATTACH

expdp scott/tiger ATTACH=scott export_job

EXPORT> start_job stop_job kill_job status

CONTENT

选项用于指定要导出的内容 默认值为ALL

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

DIRECTORY

指定转储文件和日志文件所在的目录

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dump

建立目录:

CREATE DIRECTORY dump as e:\dump ;

授权

grant read write on directory testdump to als_adp;

查询创建了那些子目录:

SELECT FROM dba_directories;

DUMPFILE

用于指定转储文件的名称 默认名称为expdat dmp

通配符%U

ESTIMATE

指定估算被导出表所占用磁盘空间分方法 默认值是BLOCKS

EXTIMATE={BLOCKS | STATISTICS}

EXTIMATE_ONLY

指定是否只估算导出作业所占用的磁盘空间 默认值为N

EXTIMATE_ONLY={Y | N}

EXCLUDE

该选项用于指定执行 *** 作时释放要排除对象类型或相关对象

EXCLUDE=object_type[:name_clause] [ … ]

Object_type用于指定要排除的对象类型 name_clause用于指定要排除的具体对象 EXCLUDE和INCLUDE不能同时使用

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dup EXCLUDE=VIEW

FILESIZE

指定导出文件的最大尺寸 默认为 (表示文件尺寸没有限制)

FLASHBACK_SCN

指定导出特定SCN时刻的表数据

FLASHBACK_SCN=scn_value

Scn_value用于标识SCN值 FLASHBACK_SCN和FLASHBACK_TIME不能同时使用

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dmp FLASHBACK_SCN=

FLASHBACK_TIME

指定导出特定时间点的表数据

FLASHBACK_TIME= TO_TIMESTAMP(time_value)

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a dmp FLASHBACK_TIME= TO_TIMESTAMP( : : DD MM YYYY HH :MI:SS )

FULL

指定数据库模式导出 默认为N

FULL={Y | N}为Y时 标识执行数据库导出

HELP

指定是否显示EXPDP命令行选项的帮助信息 默认为N

当设置为Y时 会显示导出选项的帮助信息

Expdp help=y

INCLUDE

指定导出时要包含的对象类型及相关对象

INCLUDE = object_type[:name_clause] [ … ]

JOB_NAME

指定要导出作用的名称 默认为SYS_XXX

JOB_NAME=jobname_string

LOGFILE

指定导出日志文件文件的名称 默认名称为export log

LOGFILE=[directory_object:]file_name

NEORK_LINK

指定数据库链名 如果要将远程数据库对象导出到本地例程的转储文件中 必须设置该选项

NOLOGFILE

该选项用于指定禁止生成导出日志文件 默认值为N

PARALLEL

指定执行导出 *** 作的并行进程个数 默认值为

PARFILE

指定导出参数文件的名称

PARFILE=[directory_path] file_name

QUERY

用于指定过滤导出数据的where条件

QUERY=[schema ] [table_name:] query_clause

Schema用于指定方案名 table_name用于指定表名 query_clause用于指定条件限制子句 QUERY选项不能与CONNECT=METADATA_ONLY EXTIMATE_ONLY TRANSPORT_TABLESPACES等选项同时使用

Expdp scott/tiger directory=dump dumpfiel=a dmp

Tables=emp query= WHERE deptno=

SCHEMAS

该方案用于指定执行方案模式导出 默认为当前用户方案

STATUS

指定显示导出作用进程的详细状态 默认值为

TABLES

指定表模式导出

TABLES=[schema_name ]table_name[:partition_name][ …]

Schema_name用于指定方案名 table_name用于指定导出的表名 partition_name用于指定要导出的分区名

TABLESPACES

指定要导出表空间列表

TRANSPORT_FULL_CHECK

该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式 默认为N

当设置为Y时 导出作用会检查表空间直接的完整关联关系 如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移 将显示错误信息 当设置为N时 导出作用只检查单端依赖 如果搬移索引所在表空间 但未搬移表所在表空间 将显示出错信息 如果搬移表所在表空间 未搬移索引所在表空间 则不会显示错误信息

TRANSPORT_TABLESPACES

指定执行表空间模式导出

VERSION

指定被导出对象的数据库版本 默认值为PATIBLE

VERSION={PATIBLE | LATEST | version_string}

为PATIBLE时 会根据初始化参数PATIBLE生成对象元数据;为LATEST时 会根据数据库的实际版本生成对象元数据 version_string用于指定数据库版本字符串

IMPDP命令行选项与EXPDP有很多相同的 不同的有:

REMAP_DATAFILE

该选项用于将源数据文件名转变为目标数据文件名 在不同平台之间搬移表空间时可能需要该选项

REMAP_DATAFIEL=source_datafie:target_datafile

REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中

REMAP_SCHEMA=source_schema:target_schema

REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中

REMAP_TABLESPACE=source_tablespace:target:tablespace

REUSE_DATAFILES

该选项指定建立表空间时是否覆盖已存在的数据文件 默认为N

REUSE_DATAFIELS={Y | N}

SKIP_UNUSABLE_INDEXES

指定导入是是否跳过不可使用的索引 默认为N

SQLFILE

指定将导入要指定的索引DDL *** 作写入到SQL脚本中

SQLFILE=[directory_object:]file_name

Impdp scott/tiger DIRECTORY=dump DUMPFILE=tab dmp SQLFILE=a sql

STREAMS_CONFIGURATION

指定是否导入流元数据(Stream Matadata) 默认值为Y

TABLE_EXISTS_ACTION

该选项用于指定当表已经存在时导入作业要执行的 *** 作 默认为SKIP

TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

当设置该选项为SKIP时 导入作业会跳过已存在表处理下一个对象;当设置为APPEND时 会追加数据 为TRUNCATE时 导入作业会截断表 然后为其追加新数据;当设置为REPLACE时 导入作业会删除已存在表 重建表病追加数据 注意 TRUNCATE选项不适用与簇表和NEORK_LINK选项

TRANSFORM

该选项用于指定是否修改建立对象的DDL语句

TRANSFORM=transform_name:value[:object_type]

Transform_name用于指定转换名 其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性 存储属性 表空间 日志等信息) STORAGE用于标识段存储属性 VALUE用于指定是否包含段属性或段存储属性 object_type用于指定对象类型

Impdp scott/tiger directory=dump dumpfile=tab dmp Transform=segment_attributes:n:table

TRANSPORT_DATAFILES

该选项用于指定搬移空间时要被导入到目标数据库的数据文件

TRANSPORT_DATAFILE=datafile_name

Datafile_name用于指定被复制到目标数据库的数据文件

lishixinzhi/Article/program/Oracle/201311/18965

1问题再现

sec@secDB /db_backup/dpump_dir$ impdp sec/sec directory=dpump_dir dumpfile=20100604020437_secdmp logfile=impdplog

Import: Release 102030 - 64bit Production on Friday, 04 June, 2010 14:39:16

Copyright (c) 2003, 2005, Oracle All rights reserved

Connected to: Oracle Database 10g Enterprise Edition Release 102030 - 64bit Production

With the Partitioning, OLAP and Data Mining options

ORA-39002: invalid operation

ORA-39070: Unable to open the log file

ORA-29283: invalid file operation

ORA-06512: at "SYSUTL_FILE", line 475

ORA-29283: invalid file operation

2问题分析

这里的“ORA-39070”提到的“Unable to open the log file”初看非常的“诡异”,到底无法打开什么日志文件呢?难道是没有权限在这个目录下写文件?经过“touch”测试排除了这种可能性。

不管怎么说,这个问题与文件 *** 作相关。顺着这个思路继续前行,终于发现原来数据库中的directory数据库对象所指向的目录为“/oradata/dpump_dir”,而在该 *** 作系统中根本没有这个目录,因目录不存在,日志文件也就理所当然的无处可写。

不过这个报错的信息却是不够明显,如果能够给出更多的检查和明确的报错信息就更好了。

sys@ora10g> col owner for a6

sys@ora10g> col DIRECTORY_NAME for a20

sys@ora10g> col DIRECTORY_PATH for a30

sys@ora10g> select from dba_directories where DIRECTORY_NAME = 'DPUMP_DIR';

OWNER DIRECTORY_NAME DIRECTORY_PATH

------ -------------------- ------------------------------

SYS DPUMP_DIR /oradata/dpump_dir

3问题处理

发现问题后,处理方法就简单了许多,只需要重新创建directory数据库对象即可。

sys@sec> drop directory dpump_dir;

Directory dropped

sys@sec> create directory dpump_dir as '/db_backup/dpump_dir';

Directory created

sys@sec> grant read, write on directory dpump_dir to public;

Grant succeeded

4导致该问题的潜在原因

在10g环境中即使在创建directory数据库对象的过程中即使所引用的目录不存在,该命令也是可以正常创建的,这就是容易误 *** 作的根本原因。

sys@ora10g> create directory dpump_dir_test as '/sec/ool/er';

Directory created

小心陷阱。

5小结

从该问题的处理过程中我们可以看到,在报错信息不实很明显的时候我们往往手足无措。越是在这样的场景,我们越应该沉着冷静,从整个 *** 作的源头一步一步的去排查,终有柳暗花明之时。

以上就是关于使用impdp复制oracle的schema数据迁移全部的内容,包括:使用impdp复制oracle的schema数据迁移、EXPDP和IMPDP使用说明、oracle还原数据库时报错39002怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9768372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存