ITPub博客

首页 > 数据库 > Oracle > 表空间传输与交换分区

表空间传输与交换分区

Oracle 作者:lpwebnet 时间:2014-02-08 11:01:10 0 删除 编辑
一个数据迁移的实验。
假设每个分公司定期导出一份数据(普通表)到总公司进行汇总(分区表)。
分公司使用windows系统,而总公司使用Linux系统。
这个时候可以使用表空间传输,配合交换分区的功能,快速导入数据。

主要步骤
1.分公司(分公司内部ID为11)
   
    1.1 新创建一个表空间,用于导出数据
    1.2 复制生产库的表数据到新建的表空间
    1.3 将新建的表空间设置为只读模式
    1.4 使用exp导出表空间的元数据
    1.5 使用rman将数据文件转换为目标平台的文件

2.总公司
    2.1 rman转换文件到数据文件
    2.2 导入表空间
    2.3 交换分区,将分公司普通表的数据交换到总公司的分区表

这个方案的优点
    可以跨系统
    因为交换分区只是更改数据字典的信息,所以速度很快。
缺点
    不能提交增量数据。(也许分区表设计的很复杂也是可以的)
    过程相对复杂

1.分公司准备数据
    需要标明分公司的内部ID为11
  1. CREATE TABLESPACE t DATAFILE 'C:\Users\lihuilin\Desktop\t.dbf\' SIZE 50m;
  2. CREATE TABLE export TABLESPACE t AS SELECT '11' dept_id,object_name c1 FROM DBA_OBJECTS;
  3. insert into export values('11','测试');
  4. commit;
    新建表空间和创建测试数据

    查看Oracle版本和表空间传输支持的平台

    将新建的表空间设置为只读

    导出元数据
  1. exp 'edmond/edmond as sysdba' tablespaces=t transport_tablespace=y file=C:\Users\lihuilin\Desktop\t.dmp

    使用Rman转换数据文件
  1. convert tablespace t to platform 'Linux IA (32-bit)' format 'C:\Users\lihuilin\Desktop\%N%f';

最后将文件T6和t.dmp上传至总公司。

2.总公司导入数据
    首先,还是使用rman转换数据文件
  1. convert datafile '/home/lihuilin/T6' db_file_name_convert '/home/lihuilin/T6','/home/lihuilin/t.dbf';

    导入表空间
  1. imp \'edmond/edmond as sysdba\' transport_tablespace=y file='/home/lihuilin/t.dmp' tablespaces=t datafiles='/home/lihuilin/t.dbf'

    查看导入的数据

    总公司准备汇总用的分区表
  1. create table total_table
  2. (
  3.     dept_id char(2),
  4.     c1 varchar(128)
  5. )
  6. partition by range(dept_id)
  7. (
  8.     partition p11 values less than ('12'),
  9.     partition p12 values less than ('13'),
  10.     partition p13 values less than ('14'),
  11.     partition p14 values less than ('15')
  12. );

    最后交换分区,将分公司导入的普通表与总公司的分区表交换数据。

    经过交换之后,可以看到总公司的汇总表已经有了分公司的数据。

参考:
http://www.luocs.com/archives/226.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17172228/viewspace-1077940/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-07-21

  • 博文量
    120
  • 访问量
    846437