利用10g传输表空间实现AIX平台到LINUX平台数据迁移

在 oracle10g 之前,数据文件是不能跨平台传输使用的,从oracle 10g 开始,oracle支持跨平台表空间传输(transport tablespace)。

数据文件 不能跨平台的原因是:不同平台操作系统的字、字节存储顺序不同

如果将 4567 这个数据存储到不同的系统中,那么就会出现如下的顺序:

little-endian:存储的顺序是7654 , 小数在前 (windows平台,LINUX平台)

big-endian:   存储的顺序是 4567 ,大数在前  (solaris及aix平台)

本文主要描述采用oracle的 transport tablespace技术,实现不同字节序跨平台迁移。

注意:传输表空间技术不能应用于system表空间或sys用户拥有的对象

源平台(AIX6.1+ oracle 11.2.0.4.0)相关信息如下

SQL> select * from v$version where rownum=1;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SQL> set lines 200

SQL> col platform_name for a30;

SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name;

PLATFORM_NAME                  ENDIAN_FORMAT

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

AIX-Based Systems (64-bit)     Big

目的平台(linux5.8 + oracle 11.2.0.4.0)相关信息如下

SQL> select * from v$version where rownum=1;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name;

PLATFORM_NAME       ENDIAN_FORMAT

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

Linux x86 64-bit       Little

从上面的输出可以看到字节顺序是不同的, Linux平台是 低位 (Little),aix 平台是高位(Big)

实施如下;
    前提条件:
        a,在源和目标库构建directory(以sysdba用户)
        b,以system用户在源和目标库进行expdp/impdp
        c,在源库进行cross os表空间导出时,先须offline(alter tablespace crosstbs read only;)
        d,在源库和目标库要构建cross os表空间的对应用户
        e,源库和目标库存储dmp文件的目录(directory),可一致也可不一样,这个

目标库和源库上都要构建:

SQL> create directory backup as ‘/home/oracle/backup‘;

1:在AIX上创建表空间 aix_trans , 然后在该表空间上创建 aix_trans 用户

SQL> create tablespace aix_trans datafile ‘/oradata/CWFOL/datafile/test/aix_trans.dbf‘ size 10m;

Tablespace created.

SQL> create user trans identified by trans default tablespace aix_trans;

User created.

SQL> conn trans/trans;

Connected.

SQL> create table t(id int);

Table created.

SQL> insert into t values(200);

1 row created.

SQL> insert into t values(2001);

1 row created.

SQL> commit;

Commit complete.

SQL> select count(*) from t;

COUNT(*)

----------

2

2:将 aix_trans 表空间设置为只读,并导出

SQL> conn /as sysdba

Connected.

SQL> alter tablespace aix_trans read only;

Tablespace altered.

$ expdp \‘/ as sysdba\‘ directory=backup dumpfile=aix_trans.dmp transport_tablespaces=aix_trans

Export: Release 11.2.0.4.0 - Production on Wed Jan 7 15:32:38 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" directory=backup dumpfile=aix_trans.dmp transport_tablespaces=aix_trans

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

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

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

Dump file set for SYS.SYS_EXPORT_TRANSPORTABLE_01 is:

/home/oracle/backup/aix_trans.dmp

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

Datafiles required for transportable tablespace AIX_TRANS:

/oradata/CWFOL/datafile/test/aix_trans.dbf

Job "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Wed Jan 7 15:33:14 2015 elapsed 0 00:00:35

3:使用 rman的 convert 命令进行转换

$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jan 7 15:42:48 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CWFOL (DBID=325303246)

RMAN> convert tablespace aix_trans to platform ‘Linux x86 64-bit‘ format=‘/tmp/aix_trans01.dbf‘;

Starting conversion at source at 07-JAN-15

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=293 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input datafile file number=00009 name=/oradata/CWFOL/datafile/test/aix_trans.dbf

converted datafile=/tmp/axi_trans01.dbf

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at source at 07-JAN-15

Starting Control File and SPFILE Autobackup at 07-JAN-15

piece handle=/backup/oradata/cf_c-325303246-20150107-04 comment=NONE

Finished Control File and SPFILE Autobackup at 07-JAN-15

上传aix_trans.dmp和axi_trans01.dbf到目标库:

在linux库上转换数据文件,将数据文件 axi_trans01.dbf 转换为 aix_trans.dbf

ASMCMD [+DATA/MECBS/DATAFILE] > cp /home/oracle/backup/axi_trans01.dbf +DATA/MECBS/DATAFILE/

copying /home/oracle/backup/axi_trans01.dbf -> +DATA/MECBS/DATAFILE/axi_trans01.dbf

[[email protected] backup]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jan 7 15:49:33 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: MECBS (DBID=1527329870)

RMAN> convert datafile ‘+DATA/MECBS/DATAFILE/axi_trans01.dbf‘ db_file_name_convert ‘+DATA/MECBS/DATAFILE/axi_trans01.dbf‘,‘+DATA/MECBS/DATAFILE/aix_trans.dbf‘;

Starting conversion at target at 07-JAN-15

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=79 instance=MECBS1 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=143 instance=MECBS1 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input file name=+DATA/mecbs/datafile/axi_trans01.dbf

converted datafile=+DATA/mecbs/datafile/aix_trans.dbf

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:08

Finished conversion at target at 07-JAN-15

Starting Control File and SPFILE Autobackup at 07-JAN-15

piece handle=+BACK/backup/db210_incr_20150107/pid-c-1527329870-20150107-08 comment=NONE

Finished Control File and SPFILE Autobackup at 07-JAN-15

SQL> create user trans identified by trans;

User created.

SQL>  grant connect,resource to trans;

Grant succeeded.

在linux 平台导入数据

[[email protected] backup]$ impdp \‘ / as sysdba\‘ directory=backup dumpfile=aix_trans.dmp  transport_datafiles=+DATA/MECBS/DATAFILE/aix_trans.dbf

Import: Release 11.2.0.4.0 - Production on Wed Jan 7 16:05:52 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

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

Source time zone version is 11 and target time zone version is 14.

Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" directory=backup dumpfile=aix_trans.dmp transport_datafiles=+DATA/MECBS/DATAFILE/aix_trans.dbf

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Wed Jan 7 16:06:19 2015 elapsed 0 00:00:21

验证:

SQL> set lines 200

SQL> col PLATFORM_NAME for a30;

SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name;

PLATFORM_NAME       ENDIAN_FORMAT

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

Linux x86 64-bit       Little

SQL> SQL>

SQL> conn trans/trans

Connected.

SQL> select * from t;

ID

----------

200

2001

sql> alter tablespace aix_trans read write

-------------------------The end--------------------------------------------

时间: 2024-08-06 07:58:45

利用10g传输表空间实现AIX平台到LINUX平台数据迁移的相关文章

Oracle Study之案例--异构平台传输表空间(Linux至AIX)

Oracle Study之案例--异构平台传输表空间(Linux至AIX) 系统架构: 可                   源    库               目标库 操作系统 Linux RH6    AIX 5.3-09 主机名 rh6(192.168.8.245) aix211(192.168.8.211) 数据版本 Oracle 11gR2 Oracle 11gR2 数据库名 prod orcl 表空间 test1 test1    可传输表空间概述 Oracle 的可传输表空

【TTS】传输表空间AIX asm -> linux asm

[TTS]传输表空间AIX asm -> linux asm 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 异构平台下传输表空间的实施 ② 传输表空间基于表空间的read only和rman2种方式 ③ 平台字节序.自包含概念 ④ expdp/impdp的应用     Tips:        ① 若文章代码格式有错乱,推荐使用搜狗或3

【TTS】传输表空间Linux asm -> AIX asm

[TTS]传输表空间Linux asm -> AIX asm 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 异构平台下传输表空间的实施 ② 传输表空间基于表空间的read only和rman2种方式 ③ 平台字节序.自包含概念 ④ expdp/impdp的应用     Tips:        ① 若文章代码格式有错乱,推荐使用QQ或3

如何通过RMAN使用传输表空间迁移到不同的Endian平台 (Doc ID 371556.1)

How to Migrate to different Endian Platform Using Transportable Tablespaces With RMAN (Doc ID 371556.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 12.1.0.2 to 12.2.0.1 [Release 12.1 to 12.2]Oracle Database - Enterprise Edition - Versi

[20170623]利用传输表空间恢复部分数据.txt

--//昨天我测试使用传输表空间+dblink,上午补充测试发现表空间设置只读才能执行impdp导入原数据,这个也很好理解.--//这样的操作模式仅仅减少expdp生成原数据的过程. --//我想一下,rman也支持建立传输表空间的命令.我仔细看了以前的笔记,发现这样最大的有点不用设置只读,实际上它是通过建立辅组实--//例来建立传输文件,理论讲可以恢复到特定的scn,这样可以利用它解决一些误操作的问题,还是通过例子来说明问题. 1.环境:--//前面的测试有点乱,我使用冷备份恢复数据库. [e

Oracle传输表空间迁移数据库

本文是通过exp/imp方式实现,需要将数据库表空间处于只读模式,对于实时应用的生产数据库,可以采用rman方式进行传输表空间.   执行表空间传输有以下限制条件:    (1)源数据库和目标数据库必须处于相同的平台,10g以后可以用RMAN命令修改数据文件实现跨平台移动表空间.    (2)对于源数据库和目标数据库版本不同时,源数据库的版本必须低于目标数据库.    (3)两边数据库字符集和国家字符集必须一致.    (4)目标数据库不能存在同名的表空间. 1. 查询oracle支持的平台转换

使用传输表空间迁移数据

一.检查是否满足传输表空间的条件1.检查源库与目标库的平台支持 源库: SQL> select d.name,i.version,d.platform_name,endian_format from v$transportable_platform tp,v$database d,v$instance i 2 where tp.PLATFORM_NAME=d.platform_name; NAME VERSION PLATFORM_NAME ENDIAN_FORMAT --------- ---

可传输表空间

oracle2271 对于可传输表空间有一个重要概念:自包含(Self-Contained). 在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集.自包含分为两种:一般自包含表空间集和完全(严格)自包含表空间集. 常见的以下情况是违反自包含原则的:  索引在内部表空间集,而表在外部表空间集(相反地,如果表在内部表空间集,而索引在外部表空间集,则不违反自包含原则).  分区表一部分区在内部表空间集,一部分在外部表空间集(对于分区表,要么全部包含在

Oracle网络公开课《请搭载我们的雷霆战机进行跨平台的数据迁移-可传输表空间》

雷霆战机是最近火热的空战射击游戏,刘老师说:请搭载我们的雷霆战机进行跨平台的数据迁移-可传输表空间,还犹豫什么,请立即登机,开启无尽挑战模式! 可以使用可传输表空间功能将表空间的集合从一个数据库拷贝到另一个数据库. 可传输表示空间在很多场景下都很有用: ■导出和导入数据仓库表的分区 ■在CD上发布结构化的数据 ■在多个数据库上拷贝表空间的多个只读 ■归档历史数据 ■执行表空间时间点恢复(TSPITR)Table Space point in time recovery 传输表空间有2种方法: ■