本文共 3681 字,大约阅读时间需要 12 分钟。
ORACLE中逻辑备份可以用EXPDP,EXP,在这里我不想详细讨论这两者之间的区别,一句话,EXPDP是服务器端的工具,EXP是客户端的工具(EXPORT
DUMP)
主机: ORACLE版本
A: 11.2.0.1.0
B: 10.2.0.1.0
主机A ORACLE除了系统用户还有两个用户 TSHIS、TSHIS2
主机B ORACLE除了系统用户还有一个用户 OWHIS
主机A可连接到主机B的数据库 TNSNAME 为TEST_XL
一、EXPDP 对应IMPDP的用法 (只简单说明)在主机A上进行操作
首先需要有一个DIRECTORY
用来指向导出的文件或者导入的文件位置在哪里,一般都用系统用户建立如SYS、SYSTEM,创建语法如下:
CREATE DIRECTORY EXPDP_DIR AS 'D:\EXPDP_IMPDP';
需要授权给相应的用户使用如TSHIS:GRANT READ,WRITE ON DIRECTORY EXPDP_DIR TO
TSHIS;
需要将TSHIS用户下的JK_ARCHIVE表中的数据导出后导入到TSHIS2中,并且表名改为JK_ARCHIVE2.脚本如下:
EXPDP TSHIS/TSHIS DIRECTORY=EXPDP_DIR
DUMPFILE=JK_ARCHIVE_DATA.DMP TABLES=JK_ARCHIVE;导出成功。
IMPDP TSHIS2/TSHIS2 DIRECTORY=EXPDP_DIR
DUMPFILE=JK_ARCHIVE_DATA.DMP REMAP_SCHEMA=TSHIS:TSHIS2
REMAP_TABLE=JK_ARCHIVE:JK_ARCHIVE2 导入成功。
二、EXP 对应 IMP 的用法(也是简单说明)在主机A上进行操作
需要将TSHIS用户下的JK_ARCHIVE_LIST表中的数据导出后导入到TSHIS2中(这个工具改不了表名)脚本如下:
exp tshis/tshis file=e:\exp\jk_archive_list_data.dmp
tables=jk_archive_list ;成功导出
imp tshis2/tshis2 file=e:\exp\jk_archive_list_data.dmp
fromuser=tshis touser=tshis2;成功导入
三、EXPDP,IMPDP ORACLE高低版本之间导入导出的情况
将主机B中的GM_CODE表导出后导入主机A中
可以用两种方式(不一定都有用)
1.在主机B中执行导出,再将DMP文件复制到主机A的相应目录中(EXPDP_DIR中)后执行导入,脚本如下:
expdp owhis/owhis directory=data_dir dump=gm_code_data.dmp
tables=gm_code; OK
将gm_code_data.dmp复制到主机A的相应目录中
impdp tshis/tshis directory=expdp_dir dump=gm_code_data.dmp
remap_schema=owhis:tshis; 成功。
2.在主机A上执行导出(主机A可连接到主机B的数据库 TNSNAME 为TEST_XL)
expdp owhis/owhis@test_xl
directory=data_dir dumpfile=gm_code_data.dmp tables=gm_code
报下如错误
Export: Release 11.2.0.1.0 - Production on 星期二 8月 21 11:07:58
2012
Copyright (c) 1982, 2009, Oracle and/or its
affiliates. All rights
reserved.
UDE-00018: 数据泵客户机与数据库版本 10.2.0.1.0 不兼容
将主机A中的gm_user表导入到主机B中(不可能)
1.在主机A上导出,将文件复制到主机B相应目录中,再执行导入报错
Import: Release 10.2.0.1.0 - 64bit Production on 星期二, 21 8月,
2012
10:31:13
Copyright (c) 2003, 2005, Oracle. All rights
reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
64bit
Produc
tion
With the Partitioning, OLAP and Data Mining options
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39142: 版本号 3.1 (在转储文件 "D:\expdp\jk_archive.dmp" 中) 不兼容
2.在主机B上导出A的数据,此时数据文件还是在A上,将文件复制到主机B相应目录,再执行导入报错
Import: Release 10.2.0.1.0 - 64bit Production on 星期二, 21 8月,
2012
14:21:39
Copyright (c) 2003, 2005, Oracle. All rights
reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
64bit
Produc
tion
With the Partitioning, OLAP and Data Mining options
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39142: 版本号 3.1 (在转储文件 "D:\expdp\test1.dmp" 中) 不兼容
四、EXP,IMP ORACLE高低版本之间导入导出的情况
将主机B中的GM_CODE表导出后导入主机A中
可以用两种方式(不一定都有用)
1.在主机B中执行导出,再将DMP文件复制到主机A的中后执行导入,成功。
2.在主机A上执行导出(主机A可连接到主机B的数据库 TNSNAME 为TEST_XL)
Export: Release 11.2.0.1.0 - Production on 星期二 8月 21 11:19:11
2012
Copyright (c) 1982, 2009, Oracle and/or its
affiliates. All rights
reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
64bit
Produc
tion
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
EXP-00008: 遇到 ORACLE 错误 904
ORA-00904: "POLTYP": 标识符无效
EXP-00000: 导出终止失败
将主机A中的gm_user表导入到主机B中(不是都有用)
1.在主机A上导出,将文件复制到主机B相应目录中,再执行导入报错
Import: Release 10.2.0.1.0 - Production on 星期二 8月 21 11:23:23
2012
Copyright (c) 1982, 2005, Oracle. All rights
reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
64bit
Produc
tion
With the Partitioning, OLAP and Data Mining options
IMP-00010: 不是有效的导出文件, 头部验证失败
IMP-00000: 未成功终止导入
2.在主机B上导出A中的数据,再执行导入 成功。
总结:EXPDP,IMPDP不管以哪种方式,只能把低版本中的数据导入高版本中(只能把主机B中的数据导到主机A中)
EXP,IMP双向导数据都可以,但要从高版本中导数据到低版本中,只能在低版本服务器上进行导出导入,
从低版本导数据到高版本,也只能在低版本服务器上导出再把文件复制到高版本服务器上,进行导入操作。
一句话,在低版本服务器上执行导出,最好将DUMP文件复制到目标服务器上执行导入(加快效率),DUMP文件的盘最好与数据文件所在盘不一样
另说明:IMPDP中的参数REMAP_TABLE 11G才有
转载地址:http://reycy.baihongyu.com/