【kingsql分享】Oracle跨版本遷移之XTTS_V4版本的實施

kingsql發表於2019-02-13

本文介紹了將v4跨平臺可傳輸表空間(xtts)與rman增量備份結合使用所需的步驟,

以最少的應用程式停機時間遷移資料。

#################################################

希望本文能對您有所幫助,如需指令碼,請留言,謝謝您的關住和支援

#################################################


首先是將完整備份從源複製到目標。

然後,透過使用一系列增量備份(每個備份都小於最後一個備份),

在需要任何停機時間之前,可以將目標系統中的資料幾乎與源系統同步。

此過程僅在最終增量備份和後設資料匯出/匯入期間需要停機時間。


本文件描述了可與11.2.0.4及更高版本一起使用的跨平臺增量備份v4過程。

這個新過程是先前XTTS版本的簡化版本。

此版本有以下區別:

I.此過程使用簡化的命令。一個命令(--backup)用於源,一個命令(--restore)用於目標。

//原來要-p,-c,-i,-r,-s等一系列華麗的操作,現在只要2個引數

II.此過程只需要在源和目標的$tmpdir(res.txt)之間複製一個檔案。

III.此過程將自動解析新增的資料檔案,無需額外干預。

IV.此過程允許在不執行恢復的情況下從源中取出多個增量備份。在此之後,將立即恢復目標中的所有增量備份。


1-初始設定

執行以下步驟配置環境以使用跨平臺增量備份:

1.1-安裝目標資料庫軟體並建立目標資料庫

在將執行目標資料庫的目標系統上安裝所需的Oracle資料庫軟體。

在目標系統上標識(或建立)一個資料庫,以便將表空間傳輸到其中,

並建立表空間傳輸所需的模式使用者。 即,在所傳輸的表空間中擁有物件的使用者。


1.2-標識要傳輸的表空間

標識要傳輸的源資料庫中的表空間。

表空間ts1和ts2將在本文件的示例中使用。

如上所述,必須遵循可傳輸表空間的限制和注意事項。

1.3-在源系統上安裝XttConvert指令碼

在源系統上,作為Oracle軟體的所有者,

下載並提取作為rman-xttconvert-ver4.zip附加到本文件的支援指令碼。

[oracle@kingsql]$ pwd

/home/oracle/xttv4


[oracle@kingsql]$ unzip rman_xttconvert_VER4.zip

inflating: xtt.properties

inflating: xttcnvrtbkupdest.sql

inflating: xttdbopen.sql

inflating: xttdriver.pl

inflating: xttprep.tmpl

extracting: xttstartupnomount.sql


1.4-建立必要的目錄

源端:

由xtt.properties檔案中的src_scratch_location引數定義的備份位置。


目標端:

由xtt.properties檔案中的dest_scratch_location引數定義的備份位置。

目標上資料檔案的位置,由xtt.properties檔案中的dest_datafile_location引數定義。


1.5-在源系統上配置xtt.properties

使用特定於站點的配置編輯源系統上的xtt.properties檔案。

有關xtt.properties檔案中引數的詳細資訊,

請參閱下面附錄中配置檔案xtt.properties部分中的引數說明。

對於此過程,只有以下引數是必需的。其他可供選擇和/或使用。

tablespaces

platformid

src_scratch_location

dest_scratch_location

dest_datafile_location

(12c特殊新增) -- usermantransport=1

1.6-將xttconvert指令碼和xtt.properties複製到目標系統

[oracle@kingsql]$ scp -r /home/oracle/xttv4 oracle@destsql:/home/oracle/xttv4


1.7-設定TMPDIR環境變數

[oracle@kingsql]$ export TMPDIR=/home/oracle/xttv4

[oracle@destsql]$ export TMPDIR=/home/oracle/xttv4


2.-準備階段

在準備階段,將要傳輸的表空間的資料檔案備份到源上,

備份傳輸到目標系統,並由xttdriver.pl指令碼還原。


2.1-在源系統上執行備份

在源系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向源資料庫,

按如下方式執行備份:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


2.2-將以下檔案傳輸到目標系統:

從源“src-scratch-location”到目標目標“scratch-location”建立的備份

從源$tmpdir到目標$tmpdir的res.txt檔案:

[oracle@kingsql]$ scp /src_scratch/* oracle@destsql:/dest_scratch

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


2.3-還原目標系統上的資料檔案

在目標系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向目標資料庫,

按如下方式執行還原:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


3-前滾階段

在此階段,將從源資料庫建立增量備份,傳輸到目標系統,轉換為目標系統endian格式,

然後將其應用到轉換後的目標資料檔案副本以進行前滾。 此階段可以執行多次。

每一次連續的增量備份所需的時間應少於先前的增量備份所需的時間,

並將使目標資料檔案副本在源資料庫中更為新。

在這個階段,正在傳輸的資料(源)是完全可訪問的。

3.1-為源系統上正在傳輸的表空間建立增量備份

在源系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向源資料庫,

執行如下建立增量步驟:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


此步驟將為xtt.properties中列出的所有表空間建立增量備份。


3.2-將增量備份和res.txt傳輸到目標系統

將增量備份(在src-scratch-location和dest-scratch-location之間)和res.txt(在$tmpdirs之間)

從源傳輸到目標。當前備份的增量備份檔案列表可以是在源系統的incrbacks.txt檔案中找到。

[oracle@kingsql]$ scp `cat incrbackups.txt` oracle@destsql:/dest_scratch_location

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


3.3-對目標系統上的資料檔案副本應用增量備份

在目標系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向目標資料庫,

按如下所示執行前滾資料檔案步驟:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


前滾步驟連線到目標資料庫,併為所傳輸的每個表空間在表空間的資料檔案上應用增量備份。

儘管可以對源執行多個備份而不在目標上應用,但是必須在上次備份之後和在目標上執行“--restore”之前複製res.txt。


3.4-重複前滾第3階段(3.1-3.3)或繼續第4階段,最終增量備份

此時有兩種選擇:

如果需要使目標資料庫中的檔案與生產系統更接近同步,則從步驟3.1開始,重複前滾階段。

如果目標資料庫中的檔案與源資料庫的距離儘可能接近,則繼續到傳輸階段。


4-最終增量備份

在此階段,透過建立和應用最終增量備份,將源資料設為只讀,並使目標資料檔案與源資料庫保持一致。

在目標資料檔案保持一致之後,將執行常規的可傳輸表空間步驟,

從源資料庫匯出物件後設資料並將其匯入目標資料庫。

在本階段結束之前,只能以只讀模式訪問正在傳輸的資料。


4.1-將源資料庫中的源表空間更改為只讀

在源系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向源資料庫,

將要傳輸的表空間更改為只讀。

SQL> alter tablespace TS1 read only;

SQL> alter tablespace TS2 read only;


4.2-建立正在源系統上傳輸的表空間的最終增量備份:

在源系統上,以Oracle使用者身份登入,環境 (ORACLE_HOME和ORACLE_SID環境變數) 指向源資料庫,

按如下方式執行備份:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


注意:由於表空間處於只讀模式,因此可以忽略收到的以下警告:

####################################################################
Warning:
------
Warnings found in executing /home/oracle/radranly/convert_source/backup_Nov9_Fri_09_08_26_213//xttpreparenextiter.sql
####################################################################
Prepare newscn for Tablespaces: 'T1'
DECLARE*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284  


4.3-將增量備份和res.txt傳輸到目標系統

[oracle@kingsql]$ scp 'cat incrbackups.txt' oracle@destsql:/dest_scratch_location

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


4.4-將上次增量備份應用於目標資料檔案

最終增量備份必須應用於目標資料檔案,此步驟將對目標上的資料檔案應用最後一次增量備份。

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


5-傳輸階段:將物件後設資料匯入目標資料庫

在這個階段,您需要從源中匯出表空間的後設資料,並將表空間插入到目標中。

5.1-目標庫建立目錄物件

SQL> create directory hzh as '/home/oracle/destination/convert';

SQL> GRANT READ, WRITE ON DIRECTORY hzh TO system;


5.2-匯入生成新的xttplugin.txt

在目標系統上,以Oracle使用者身份登入,環境(ORACLE_HOME和ORACLE_SID環境變數)指向目標資料庫,

執行generate data pump tts命令步驟,如下所示:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -e


這將在xttplugin.txt檔案中生成一個示例命令,

並正確設定transportable tablespaces引數“transport_tablespaces”和“transport_datafiles”。

此外,還將建立一個資料泵匯出檔案。


5.3-在目標資料庫上建立資料庫連結

連線到目標資料庫,建立連線到源資料庫的資料庫連結

SQL> create public database link ttslink connect to system identified by hongzhuohui using 'kingsql';

驗證資料庫連結是否可以正確訪問源系統

SQL>  select name from v$database@ttslink;


5.4-修改並執行IMPDP命令:

[oracle@dest]$ impdp directory=hzh logfile=tts_imp.log network_link=ttslink \ 

transport_full_check=no \ 

transport_tablespaces=TS1,TS2 \ 

transport_datafiles='+DATA/prod/datafile/ts1.285.771686721', \ 

'+DATA/prod/datafile/ts2.286.771686723', \ 

'+DATA/prod/datafile/ts2.287.771686743' 


6 -驗證資料

6.1-檢查表空間

在此步驟中,傳輸的資料在目標資料庫中是隻讀的。執行特定於應用程式的驗證以驗證傳輸的資料。

RMAN> validate tablespace TS1, TS2 check logical;


6.2-更改目標資料庫中的表空間讀寫

最後一步是使目標表空間在目標資料庫中讀寫。

SQL> alter tablespace TS1 read write; 

SQL> alter tablespace TS2 read write; 


7 - 清理環境

源端:src_scratch

目標端:dest_scratch

源端和目標端

$TMPDIR


轉載請註明出處

hongzhuohui@qq.com

本來好幾年沒有更新部落格了,最近我的學生們都在勤勞的寫部落格,所以帶動了我。。

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

我曾發現有寫網站直接複製貼上,連圖片都能複製,請把作者也加上謝謝O(∩_∩)O

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-2629881/,如需轉載,請註明出處,否則將追究法律責任。

相關文章