测试环境: 源 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怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)