oracle xtts遷移 AIX to Linux

巡完南山巡南山發表於2019-01-14

以下是XTTS遷移的全過程,

需要根據實際情況更改,主要包括以下幾個流程:

檢查資料庫使用者自包含

準備 xtts 前期環境

進行全量備份並傳輸備份集到目標端

目標端進行全量恢復

源端目標端多次增量恢復

表空間 readonly 進行最後一次增量

後設資料匯入匯出

檢查物件


源端

目標端

Oracle 版本

10.2.0.3

11.2.0.4

作業系統

AIX 5.3

RHEL 6.7

是否 RAC

資料庫名稱

oraold

oranew

 

                                             

本次只遷移 TESTUSER 使用者,只檢查 TESTUSER 使用者所在表空間的自包含驗證即可,無需額外操作。

SQL>

 

TABLESPACE_NAME

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

TESTUSER_DAT_4

TESTUSER_DAT_1

TESTUSER_DAT_2

TESTUSER_IDX_2

TESTUSER_DAT_3

TESTUSER_IDX_3

TESTUSER_ALL

TESTUSER_IDX_1

TESTUSER_IDX_4

 

9 rows selected.

SQL> execute dbms_tts.transport_set_check ,true,true);

 

PL/SQL procedure successfully completed.

 

SQL>

 

no rows selected

所需目錄

源端和目標端建立 相關 目錄

mkdir -p  /exp/xtts/src_backup

mkdir -p  /exp/xtts/tmp

mkdir -p  /exp/xtts/dump

mkdir -p /exp/xtts/backup_incre

chown -R ora103:dba /exp/xtts

源端AIX上傳rman-xttconvert_2.0.zip至/exp/xtts

cd /exp/xtts

unzip rman-xttconvert_2.0.zip

 

目標端上傳rman-xttconvert_2.0.zip至/exp/xtts

cd /exp/xtts

unzip rman-xttconvert_2.0.zip

目標端建立其他相關目錄

mkdir -p  /exp/xtts

mkdir -p  /exp/xtts/src_backup

mkdir -p  /exp/xtts/tmp

mkdir -p  /exp/xtts/dump

mkdir -p /exp/xtts/backup_incre

chown -R ora11g:dba /exp/xtts

SQL>

Database altered.

SQL> ;

 

STATUS

----------

FILENAME

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

     BYTES

----------

ENABLED

/exp/xtts/bct  11599872

關閉tracking可以使用如下命令完成:

配置源端AIX xtt.properties屬性檔案

cd /exp/xtts

vi

#增加如下配置資訊:

tablespaces=TESTUSER_DAT_4,TESTUSER_DAT_1,TESTUSER_DAT_2,TESTUSER_IDX_2,TESTUSER_DAT_3,TESTUSER_IDX_3,TESTUSER_ALL,TESTUSER_IDX_1,TESTUSER_IDX_4

platformid=6

dfcopydir=/exp/xtts/src_backup

backupformat=/exp/xtts/backup_incre

backupondest=/exp/xtts/backup_incre

stageondest=/exp/xtts/src_backup

storageondest=+DG_DATA/oranew/datafile

parallel=16

rollparallel=16

getfileparallel=6

配置目標端Linux xtt.properties屬性檔案

cd /exp/xtts

vi xtt.properties

#增加如下配置資訊:

tablespaces=TESTUSER_DAT_4,TESTUSER_DAT_1,TESTUSER_DAT_2,TESTUSER_IDX_2,TESTUSER_DAT_3,TESTUSER_IDX_3,TESTUSER_ALL,TESTUSER_IDX_1,TESTUSER_IDX_4

platformid=6

dfcopydir=/exp/xtts/src_backup

backupformat=/exp/xtts/backup_incre

backupondest=/exp/xtts/backup_incre

stageondest=/exp/xtts/backup_incre

storageondest=+DG_DATA/oranew/datafile

parallel=16

rollparallel=16

getfileparallel=6

asm_home=/opt/app/11.2.0/grid

asm_sid=+ASM1

以下命令為建立使用者命令參考,也可以使用 plsql 等工具生成類似相關資訊。使用者和角色必須手工建立。最好使用 plsql 拿出所需使用者的 ddl 以免漏掉許可權。

建立 EBPF 使用者,完成後設資料匯入後才可修改預設表空間

SQL> select name ,PASSWORD from user$ where name='TESTUSER';

 

NAME                           PASSWORD

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

TESTUSER                      

 

create user TESTUSER identified by values 'C987AC3B738BCF43';

grant resource to TESTUSER;

grant alter session to TESTUSER;

grant create session to TESTUSER;

grant select any dictionary to TESTUSER;

grant unlimit tablespace to TESTUSER;

 

建立角色

賦予角色相應操作許可權

源端AIX執行被傳輸業務表空間全量備份建立xtts表空間全量備份指令碼執行過程中產生的配置檔案,用於資料檔案轉換及每次增量備份及恢復,同時每次執行增量備份過程中,配置檔案內容會發生變化,用於新的增量恢復,主要是SCN的變化。增加rman備份並行度

show all;

 

cd /exp/xtts

full_backup.sh指令碼內容如下

export ORACLE_SID=TESTUSER

export TMPDIR=/exp/xtts/tmp

export PERL5LIB=/opt/app/ora103/10.2.0/product/perl/lib

/opt/app/ora103/10.2.0/product/perl/bin/perl /exp/xtts/xttdriver.pl -p -d

執行全量備份

cd /exp/xtts

目標端Linux執行表空間恢復並將資料檔案轉換至ASM磁碟組中,每次恢復失敗時會在 /exp/xtts/tmp 產生fails檔案需要刪除後方可再次執行(做之前檢視下文中的特別說明步驟)

cd /exp/xtts

full_restore.sh指令碼內容如下

export TMPDIR=/exp/xtts/tmp

export ORACLE_SID=oranew1

/opt/app/ora11g/product/11.2.0/perl/bin/perl /exp/xtts/xttdriver.pl -c -d

執行恢復

> full_restore.log &

源端進行增量備份

cd /exp/xtts

增量備份指令碼incre_backup.sh內容如下

export ORACLE_SID=TESTUSER

export TMPDIR=/exp/xtts/tmp

export PERL5LIB=/opt/app/ora103/10.2.0/product/perl/lib

/opt/app/ora103/10.2.0/product/perl/bin/perl /exp/xtts/xttdriver.pl -i -d

執行增量備份

cd /exp/xtts

> incre_backup.log &

cd /exp/xtts

incre_recover.sh指令碼內容如下

export TMPDIR=/exp/xtts/tmp

export ORACLE_SID=oranew1

/opt/app/ora11g/product/11.2.0/perl/bin/perl /exp/xtts/xttdriver.pl -r -d

執行增量恢復

> incre_recover.log &

源端AIX將被傳輸業務表空間修改為READ ONLY狀態

--恢復

alter system set job_queue_processes=10;

 

select tablespace_name,status from dba_tablespaces order by 2;

alter tablespace TESTUSER_DAT_1 read only;

alter tablespace TESTUSER_DAT_2 read only;

alter tablespace TESTUSER_IDX_2 read only;

alter tablespace TESTUSER_DAT_3 read only;

alter tablespace TESTUSER_IDX_3 read only;

alter tablespace TESTUSER_ALL read only;

alter tablespace TESTUSER_IDX_1 read only;

alter tablespace TESTUSER_IDX_4 read only;

按照 2.4.1 、2.4.2完成最後一次增量備份與恢復。

目標端Linux開啟在匯入後設資料前開啟閃回

SQL> alter system set db_recovery_file_dest_size=50g scope=both;

 

System altered.

 

SQL> alter system set db_recovery_file_dest='+DG_DATA' scope=both;

 

System altered.

 

SQL> alter database flashback on;

 

Database altered.

 

SQL> select flashback_on from v$database;

 

FLASHBACK_ON

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

YES

 

SQL> create restore point before_imp_xtts guarantee flashback database;

 

Restore point created.

 

SQL> select name from v$restore_point;

後設資料

AIX 源端匯出XTTS後設資料

匯出表空間後設資料

expdp system/passwd parfile=expdp_xtts.par

expdp_xtts.par內容如下

directory=dump

dumpfile=tbs_xtts.dmp

logfile=expdp_xtts.log

transport_tablespaces=('TESTUSER_DAT_4','TESTUSER_DAT_1','TESTUSER_DAT_2','TESTUSER_IDX_2','TESTUSER_DAT_3','TESTUSER_IDX_3','TESTUSER_ALL','TESTUSER_IDX_1','TESTUSER_IDX_4')

transport_full_check=y

cluster=n

metrics=yes

 

匯出使用者後設資料

expdp system/passwd parfile=expdp_xtts_other.par

expdp_xtts_other.par內容如下

directory=dump

dumpfile=tbs_xtts_other.dmp

logfile=expdp_xtts_other.log

content=metadata_only

schemas=TESTUSER

metrics=yes

 

執行

cd /exp/xtts/dump

./expdp_xtts.sh

./expdp_xtts_other.sh

 

LINUX 目標端匯入後設資料

impdp system/passwd parfile=impdp_xtts.par

impdp_xtts.par內容如下

directory=dump

logfile=impdp_xtts.log

dumpfile=tbs_xtts.dmp

cluster=n

metrics=yes

transport_datafiles='+DG_DATA/ORANEW/DATAFILE/TESTUSER_ALL.456.995114385',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_DAT_1.532.995106883',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_DAT_1.528.995107837',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_DAT_1.524.995107839',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_DAT_1.543.995106883',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_IDX_2.496.995109429',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_IDX_4.432.995115329',

'+DG_DATA/ORANEW/DATAFILE/TESTUSER_IDX_4.430.995115329'

 

cd /exp/xtts/dump

./impdp_xtts.sh

LINUX 目標端表空間 readwrite

alter tablespace TESTUSER_DAT_1 read write;

alter tablespace TESTUSER_DAT_2 read write;

alter tablespace TESTUSER_IDX_2 read write;

alter tablespace TESTUSER_DAT_3 read write;

alter tablespace TESTUSER_IDX_3 read write;

alter tablespace TESTUSER_ALL read write;

alter tablespace TESTUSER_IDX_1 read write;

alter tablespace TESTUSER_IDX_4 read write;

目標端Linux在其他後設資料匯入前再次開啟閃回

sqlplus / as sysdba

select flashback_on from v$database;

create restore point before_imp_other guarantee flashback database;

select name from v$restore_point;

impdp system/passwd parfile=impdp_xtts_other.par

impdp_xtts_other.par 內容如下

directory=dump

dumpfile=tbs_xtts_other.dmp

logfile=impdp_xtts_other.log

content=metadata_only

schemas=TESTUSER

cluster=n

metrics=yes

執行

cd /exp/xtts/dump

./impdp_xtts_other.sh


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

相關文章