ITPub博客

首页 > 数据库 > Oracle > 【数据迁移】XTTS跨平台传输表空间(1.传统方式)

【数据迁移】XTTS跨平台传输表空间(1.传统方式)

原创 Oracle 作者:恩强Boy 时间:2020-07-26 17:43:35 0 删除 编辑

一、  XTTS 概述

XTTS Cross-Platform transport tablespace )意为跨平台传输表空间。 XTTS 实际上是 TTS 的增强功能。 TTS 意为传输表空间,原理是将业务表空间从一个库传到另一个库,以达到数据迁移的目的。 XTTS 则可以支持跨平台字节格式、增量进行传输。(跨平台传输表空间仅支持 oracle 11g 或以上)

本文演示为传统方式传输表空间。

二、  限制条件

XTTS (传统方式)进行数据迁移的时候,需要具备以下限制条件:

ü  源库和目标库时区、字符集、国家集保持一致;

ü  目标库不能有和传输表空间相同命名的表空间,如果有,请将传输的表空间或目标库表空间改名;

ü  物化视图和分区表不能被传输,除非这些对象也在表空间集中。

ü  目标库应在传输前创建传输表空间对应的用户

ü  传输的表空间不能是system 表空间,或者对象的所有者是 sys

ü  源库的COMPATIBLE 参数不能大于目标库 COMPATIBLE 参数值(向下兼容)

三、  思路清晰

step1: 准备工作 , 检查环境

step2: 源库将要传输的表空间设置 read only

step3: 源库使用 data pump 导出该表空间元数据

step4: 按照目标端的字节格式使用 RMAN 转换数据文件

step5: 目标库使用 data pump 导入元数据

step6: 目标库将表空间设置 read write

step7: 数据验证

四、  迁移过程

1.  准备工作

1)  查看支持的操作系统平台信息

SQL> COLUMN PLATFORM_NAME FORMAT A36

SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY PLATFORM_NAME;

PLATFORM_ID PLATFORM_NAME                        ENDIAN_FORMAT

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

          6 AIX-Based Systems (64-bit)           Big

         16 Apple Mac OS                         Big

         21 Apple Mac OS (x86-64)                Little

         19 HP IA Open VMS                       Little

         15 HP Open VMS                          Little

          5 HP Tru64 UNIX                        Little

          3 HP-UX (64-bit)                       Big

          4 HP-UX IA (64-bit)                    Big

         18 IBM Power Based Linux                Big

          9 IBM zSeries Based Linux              Big

         10 Linux IA (32-bit)                    Little

PLATFORM_ID PLATFORM_NAME                        ENDIAN_FORMAT

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

         11 Linux IA (64-bit)                    Little

         13 Linux x86 64-bit                     Little

          7 Microsoft Windows IA (32-bit)        Little

          8 Microsoft Windows IA (64-bit)        Little

         12 Microsoft Windows x86 64-bit         Little

         17 Solaris Operating System (x86)       Little

         20 Solaris Operating System (x86-64)    Little

          1 Solaris[tm] OE (32-bit)              Big

          2 Solaris[tm] OE (64-bit)              Big

20 rows selected.

2)  检查源库和目标库的字节格式

(源库)

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

(目标库)

PLATFORM_NAME                        ENDIAN_FORMAT

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

Linux IA (64-bit)                      Little

如果源库和目标库的endian_format (字节格式)不一致,那就需要使用 rman 工具的 convert 功能将源库字节格式( endian_format )转换成目标库字节格式;如果源库和目标库的字节格式一致,那就无需转换。

3)  检查主备库字符集是否一致

SQL> select * from nls_database_parameters;

PARAMETER                      VALUE

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

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_NUMERIC_CHARACTERS         .,

NLS_CHARACTERSET                ZHS16GBK

NLS_CALENDAR                   GREGORIAN

NLS_DATE_FORMAT                DD-MON-RR

NLS_DATE_LANGUAGE              AMERICAN

NLS_SORT                       BINARY

NLS_TIME_FORMAT                HH.MI.SSXFF AM

 

PARAMETER                      VALUE

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

NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY              $

NLS_COMP                       BINARY

NLS_LENGTH_SEMANTICS           BYTE

NLS_NCHAR_CONV_EXCP            FALSE

NLS_NCHAR_CHARACTERSET          AL16UTF16

NLS_RDBMS_VERSION              11.2.0.4.0

20 rows selected.


4)  检查传输表空间是否被自包含

SQL>  execute sys.dbms_tts.transport_set_check('TBS1,TBS2', true);

SQL> select * from sys.transport_set_violations;

返回结果为no rows 为正常;如果返回其他结果,则需要在传输前处理。如果 检查出 Index 存在自包含问题,需要重建或者最后创建

5)  查看要传输的表空间对应的用户信息

源库检查用户信息

SQL> select 'create user '||username||' identified by '||''''||password||''''||';' from dba_users where default_tablespace in(' TBS1 ' , ' TBS2 ');

源库检查角色权限

SQL> select 'grant '||GRANTED_ROLE||' to '||grantee||';' from dba_role_privs where grantee in(select username from dba_users where default_tablespace in(' TBS1 ' , ' TBS2 '));

需要在目标库创建相应用户并赋予权限。示例如下:

SQL> create user tbs1 identified by oracle;

SQL> grant connect,resource to tbs1;

2.  源库将要传输的表空间设置read only

SQL> alter tablespace tbs1 read only;

SQL> alter tablespace tbs2 read only;

3.  源库使用data pump 导出该表空间元数据

SQL> create or replace directory dmp_dir as '/home/oracle/dmp';

SQL> grant read,write on directory dmp_dir to s ystem ;

$ mkdir -p /home/oracle/dmp

$ expdp system/oracle  dumpfile=expdp_tbs.dmp directory=dmp_dir logfile=expdp_tbs.log transport_tablespaces=TBS1,TBS2

将导出的expdp_tbs.dmp 和两个表空间的数据文件传输到目标端 /home/oracle/dmp 文件夹,步骤略

如果源库是asm 文件,则需要将 asm 文件转换为 os 文件,再传到目标端。示例如下:

RMAN> convert tablespace tbs1  format '/home/oracle/dmp/tbs1.dbf';

4.  按照目标端的字节格式使用RMAN 转换数据文件

这里分两种情况:

情况一:在第一步操作查询中,如果源库和目标库字节格式不一致,则需要进行转换,实例如下:

(转换字节格式可以在源端或者目标端进行。建议将数据文件传输到目标端后再进行转换)

RMAN> CONVERT DATAFILE

'/home/oracle/dmp/tbs1.dbf',

'/home/oracle/dmp/tbs2.dbf'

TO PLATFORM="Linux IA (32-bit)"

FROM PLATFORM="Linux x86 64-bit"

DB_FILE_NAME_CONVERT='/home/oracle/ dmp /','/oradata/ ORCL/ ';

如果目标端是ASM 磁盘组,需要修改上面的最后一句

DB_FILE_NAME_CONVERT='/home/oracle/ dmp /' , ' +DATA / ORCL/DATAFILE/ ';

情况二:在第一步查询中,发现源库和目标库的字节格式一致,那就不需要进行转换,直接进行下一步操作。

5.  目标库使用data pump 导入元数据

SQL> create or replace directory dmp_dir as '/home/oracle/dmp';

SQL> grant read,write on directory dmp_dir to s ystem ;

$ mkdir -p /home/oracle/dmp

$ impdp system/oracle dumpfile=expdp_tbs.dmp directory=dmp_dir transport_datafiles='/home/oracle/dmp/tbs1.dbf','/home/oracle/dmp/tbs2.dbf'

6.  将数据库设置为read write

SQL> alter tablespace tbs1 read write;

SQL> alter tablespace tbs2 read write;

7.  数据验证

步骤略

 

 

 

 

 

-------- end --------

 


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

请登录后发表评论 登录
全部评论
勤奋,专注和练习

注册时间:2018-04-03

  • 博文量
    77
  • 访问量
    143419