《Oracle编程艺术》第15章-数据加载和卸载,15.2数据泵卸载

数据泵卸载 / 数据迁移

以下内容可以直接复用

将数据从生产环境导入到开发数据库

Oracle 9i开始引入外部表作为将外部数据加载到数据库中的一种方法。Oracle 10g中引入了一种反向的操作方式,能够使用CREATE TABLE 语句,用外部表把数据库中的数据卸载到文件系统。

从Oracle 10g开始,卸载出来的数据存储为数据泵专有的二进制文件格式,与数据泵工具EXPDP和IMPDP使用的文件格式相同。

使用外部表卸载数据其实很简单,就好像使用CREATE TABLE AS SELECT语句创建表一样

开始卸载数据之前,我们需要准备一个目录对象:

SQL> create or replace directory tmp as '/tmp';

Directrory created.

现在我们就可以通过一句简单的查询语句来把数据卸载到这个目录中,例如:

SQL> create table all_objects_unload

organization external

(type oracle_datapump

default directory TMP

location ('allobjects.dat')

)

as

selet * from all_objects 

/

特意选择了ALL_OBJECTS视图,因为它是一个相当复杂的视图,底层有很多的关联查询和谓词。这说明可以使用数据泵卸载技术,从数据库中提取任意数据。还可以添加谓词或进行各种数据切片操作。

注意:

需要控制具有创建和读写目录对象权限的人的访问权限,还要控制对能下载数据库导出数据的主机的访问权限。

最后是把allobjects.dat复制到另外一个服务器,抽取表的DDL,以便建表:

SQL> select dbms_metadata.get_ddl('TABLE','表名')  from dual;

获取到表的DDL后,执行。

再执行如下语句将外部表中的数据加载到本地数据库:

SQL> insert /*+ append */ into 表名 select * from all_objects_unload;

发布了57 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shafatutu/article/details/95904253