【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)

恩強Boy發表於2020-07-26

一、  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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章