第47章 移动数据
EXP/IMP到处示例
Oracle数据泵:概览
是一种基于服务器的用于高速移动数据与元数据的工具,Oracle数据泵具有以下特点
可通过DBMS_DATAPUMP调用
可提供以下工具
expdp
impdp
基于web的界面
可提供以下数据访问方法
直接路径
外部表
可与长时间运行的作业分离,然后阈值重新挂接
可重新启动数据泵作业
Oracle数据泵优点
与早期的数据移动工具相比,数据泵具有许多有点并提供了一些新的功能,如:
细粒度级的对象和数据选择
显示指定数据库版本
并且执行
估计导出作业占用的时间
分布式环境中的网络模式
重新映射功能
数据采样率和元数据压缩
在数据泵到处期间压缩数据
通过加密增强安全性
能够将XMLType数据作为CLOB导出
在旧模式下支持旧的导入和导出文件
比较旧的数据导入导出工具EXP/IMP
1. EXP
有三种主要的方式(完全、用户、表)
1.1 完全
EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
如果要执行完全导出,必须具有特殊的权限
1.2 用户模式
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
这样用户SONIC的所有对象被输出到文件中。
1.3 表模式
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
这样用户SONIC的表SONIC就被导出
2. IMP
具有三种模式(完全、用户、表)
1.1 完全:
IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
1.2 用户模式:
IMP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
1.3 表模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
这样用户SONIC的表SONIC就被导入。
比较新版的数据导入导出工具EXPDP/IMPDP
1.建立目录对象
create or replace directory ext as ‘/u01/oracle/exp/‘;
ho mkdir /u01/oracle/exp
grant read,write on directory ext to scott;
2.EXPDP数据的导出
2.1全部full-->
expdp \‘/ as sysdba\‘ full=y directory=ext dumpfile=full.dmp
ls /u01/oracle/exp/full.dmp
2.2用户导user-->
expdp scott/tiger directory=ext dumpfile=scott.dmp
ls /u01/oracle/exp/scott.dmp
expdp system/oracleSys1 schemas=scott directory=ext dumpfile=scott
ls /u01/oracle/exp/scott.emp
2.3表table -->
expdp scott/tiger tables=emp.dept,dept salgrade directory=ext dunfile=emptables.dmp
2.4行rows-->
expdp scott/tiger tables=emp query=\‘where deptno=10\‘ directory=ext dumpfile=emp10.dmp
DDL DML DDL&DML
content=all DDL DML
content-data_only DML
context=metadata_only DDL
3.IMPDP数据的导入
3.1全部full
impdp \‘/ as sysdba\‘ directory=ext dumpfile=dull.dmp full=y TABLE_EXISTS_ACTION=append
TABLE_EXISTS_ACTION=skip(跳过错误)
TABLE_EXISTS_ACTION=append(表存在就只导入行,如果行违背约束就报错,但是会继续往下走)
TABLE_EXISTS_ACTION=replace(替换,但不释放表空间)
TABLE_EXISTS_ACTION=trunction(释放表空间)
以前的版本只能是ignore=y
3.2user
自己给自己导入
impdp scott/tiger directory=ext dumpfile=scott.dmp TABLE_EXISTS_ACTION=trunction
把scott用户的资料给s1
scott-->s1
impdp system/oracleSys1 directory=ext dumfile=scott.dmp remap_schema=scott:s1
也可以直接导入不用提前导出
impdp system/oracleSys1 network_link=wyzc10g schemas=scott remao_schema=scott:s1
这个属于Oracle比较新的功能
3.3表table
impdp scott/tiger directory=ext dumpfile=scott.dmp tables=emp TABLE_EXISTS_ACTION=append
从10g里面直接将数据导入到11g
10g
grant exp_full_database to scott;
11g里面
vi /u01/oracle/11g/network/admin/tnsnames.ora
将WYZC10G的端口改成1522
然后测试一下
tnsping wozc10g
然后是创建database link
db11g
sqlplus / as sysdba
create pulic database link d10g connect to scott identified by tiger using ‘wyzc10g‘;
exit
之后就可以从10g直接往11g里面导入数据了
impdp \‘/ as sysdba\‘ network_link=d10g schemas=scott remap_schema=scott:s2