oracle 分区表空间压缩,8.1.4.3 单个分区的表空间传输(Oracle 11g)

8.1.4.3  单个分区的表空间传输(Oracle 11g)

在Oracle数据库的早期版本中,能够传输表空间并且稍后能将其插入不同数据库或同一个数据库中。该过程涉及复制数据文件,因此它是跨数据库传输数据的最快方法。然而直到现在,仍然无法传输单个分区的表空间,然后再将其插回数据库中。在 Oracle 11g 中可以这么做。

假设有一个名为SALES5的表,它包括了几个名为CT、NY等的分区。SQL>select partition_name, tablespace_name

2  from user_tab_partitions

3  wheretable_name='SALES5';

PARTITION_NAME TABLESPACE_NAME

-------------- ---------------

CT             TS1

NY             TS2

现在,可以使用如下命令传输 CT 分区:$ expdptables=scott.sales5:cttransportable=alwaysdirectory=data_pump_dirdumpfile=p_ct.dmp

Export:Release 11.1.0.4.0 - Beta on Sunday, 10 June, 2007 16:05:40 Copyright    (c) 2003, 2005, Oracle.All rights reserved. Username:/ as sysdba

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.4.0 - Beta

With the Partitioning, Oracle Label Security, OLAP, Data Mining

and Oracle Database Vault options

Starting "SYS"."SYS_EXPORT_TABLE_01":  /******** AS SYSDBAtables=scott.sa-

les5:cttransportable=alwaysdirectory=data_pump_dirdumpfile=p_ct.dmp

Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLK

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLK

Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

*************************************************************************   ***

Dump file set for SYS.SYS_EXPORT_TABLE_01 is:

/home/oracle/oracle/admin/PROBE2/dpdump/p_ct.dmp

*************************************************************************   *****

Datafiles required for transportable tablespace TS1:

/home/oracle/oradata/PROBE2/PROBE2/ts1_01.dbf

Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at 16:05:55

现在,可以将p_ct.dmp 和ts1_01.dmp 这两个文件传递到其他系统,然后尝试将其插入到数据库中。出于学习目的,尝试插入到相同的数据库中。首先,需要删除该表,然后删除ts1表空间。SQL>drop table scott.sales5;

Table dropped.

SQL>drop tablespace ts1 including contents;

Tablespace dropped.

现在,将表空间插入到数据库中。但这里有个小问题,sales5表不再存在,最初只导出了一个分区(ct),并未导出整个表,那么如何只导入不存在表的一个分区呢?

在 Oracle 11g中,Data Pump 导入中的一个名为partition_options的新命令行选项可实现此操作。如果指定了值departition,Data Pump将根据导出的分区创建一个新表。该方法以这种方式"拆分"分区,因此它相应地被命名为取消分区。下面看一下它的工作原理。$ impdppartition_options=departitiondumpfile=p_ct.dmp

transport_datafiles='/home/oracle/oradata/PROBE2/PROBE2

/ts1_01.dbf'

Import: Release 11.1.0.4.0 - Beta on Sunday, 10 June, 2007 21:58:08

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Username: / as sysdba

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.4.0 - Beta

With the Partitioning, Oracle Label Security, OLAP, Data Mining

and Oracle Database Vault options

Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_04" successfully loaded/unloadded

Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_04":  /******** AS SYSDBA partit-

ion_options=departitiondumpfile=p_ct.dmptransport_datafiles=/home/orac-

le/oradata/PROBE2/PROBE2/ts1_01.dbf

Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLK

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLK

Job "SYS"."SYS_IMPORT_TRANSPORTABLE_04" successfully completed at 21:58:23

该SQL创建了一个名为sales5_ct的表,这个表只是由先前可传输的表空间导出的 SALES5表的ct分区,表名是原始表名和分区名的组合。可以通过检查 DBA_SEGMENTS视图来确认段的存在。SQL>select segment_name

2  from dba_segments

3  wheretablespace_name='TS1';

SEGMENT_NAME

-----------------

SALES5_CT

可以使用单个分区的可传输表空间特性将一个表的单个分区插入到其他数据库中。插入之后,人们可能希望执行交换分区操作,以便将其作为一个分区置于某个表上。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值