ORACLE 数据泵技术

一. 理论部分

数据泵(EXPDPIMPDP)10g的新增功能;而10g之前的替代工具是EXPIMP;

注(官方文档):The Data Pump API provides a high-speed mechanism to move all or part of the data and metadata for a site from one database to another. To use the Data Pump API, you use the procedures provided in the DBMS_DATAPUMP PL/SQL package. The Data Pump Export and Data Pump Import utilities are based on the Data Pump API.

1EXPIMP是客户端工具程序,它们既可以在客户端使用,也可以在服务器端使用。

2EXPDPIMPDP调用Server端的API在执行操作,在客户端可以使用,但是生成的dump 文件存在于服务器上。

3IMP只适合EXP导出的文件,而不适合于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适合于EXP导出的文件。

数据泵导出包括导出表、导出方案、导出表空间、导出数据库等4种模式。使用EXPDP工具时,转蓄文件只能存放在DRIXCEROY对象对应的OS目录中,而不能直接指定转蓄文件所在的OS目录。因此必须首先创建DRIXCEROY对象。并且需要为数据库用户授予使用DRIXCEROY对象的权限。普通用户只能导出自己方案下的表,如果要导出其他方案下的表或是导出其他方案或是表空间或是数据库,需要是EXP_FULL_DATABASE角色或是DBA角色;需要注意:导出数据库时,不会导出SYSORDSYSORDPLUGINSSTXSYSCTXSYSMDSYSLBACSYS以及XDB等方案的对象。相应的越权导入需要有IMP_FULL_DATABASE角色或DBA角色;导入方案是既可以将方案所有对象导入到源方案中,也可以将方案所有对象导入到其他方案中。如果要将方案导入到其他方案中,必须指定REMAP_SCHEMA选项。

二. 实战部分

有一用户A的所有表所占用的都是users 表空间,为了管理方便和提高效率,决定新建立一个表空间TS,然后把A的所有表转移到此表空间下!

此问题涉及一个从一个表空间到另一个表空间的转换,所以要用到数据泵技术。(以内网数据库为例)

首先创建表空间TS

Create tablespace TS

datafile ‘/opt/oracle/product/10.1.0/oradata/orcl/ts.dbf’

size 500 M

extent management local

uniform size 1M;

然后在Linux下的/opt/oracle/ 中创建数据泵导入导出数据目录和日志目录etl

Mkdir /opt/oracle/etl

之后用PL/SQL 在数据库中注册刚才创建数据泵导入导出数据目录和日志目录

Create directory data_dir as ‘/opt/oracle/etl’

Create directory log_dir as ‘/opt/oracle/etl’

随后就把这两个目录的读写权限授予用户A

Grant read,write on directory data_dir to A

Grant read,write on directory log_dir to A

再在/opt/oracle/etl里创建数据泵导出文件并编辑

Touch expdpA.txt

Vi expdpA.txt

DIRECTORY=data_dir

SCHEMAS=A

DUMPFILE=SCHEMA_A.DAT

最后在Linux里执行数据泵操作

Cd /opt/oracle/etl

Expdp system/admin parfile=expdpA.txt

这样就把A的数据表给全部导出来了,并随日志文件一起放在刚才创建的目录下。

接下来是数据泵的导入操作

在刚才创建的目录里创建数据泵导入文件并编辑

Touch impdpA.txt

Vi impdpA.txt

DIRECTORY=data_dir

DUMPFILE=SCHEMA_A.DAT

REMAP_TABLESPACE=USERS:TS

如果是不同的用户的话可以加上这一句(例如导入到用户B里面。REMAP_SCHEMA=A:B

最后在Linux里执行数据泵操作

Cd /opt/oracle/etl

Expdp system/admin parfile=impdpA.txt

此问题得到解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值