Oracle資料庫(資料泵)遷移方案(下)

龍山游龍發表於2023-03-14

第三部分  源端執行資料匯出

3.1  源端生產庫執行狀態確認

為保證 資料嚴格一致性 關閉監聽,重啟資料庫

Shell> su - oracle
Shell> lsnrctl stop
SQL> shutdown immediate
SQL> startup

確認 沒有 活動 客戶端連線,確認監聽已經停止

Shell> ps -ef | grep tns
Shell> ps -ef | grep LOCAL=NO | grep -v grep | wc -l

3.2  目標端掛載 N FS 至生產端

目標端( Linux )開啟 NFS 服務

Shell> su - root
Shell> vi /etc/exports
/backup  {源端IP**.**}(rw,async,no_root_squash)
Shell> /etc/rc.d/init.d/portmap start  
Shell> /etc/init.d/nfs start         #啟動NFS服務端程式
Shell> exportfs -a                     #輸出配置資訊命令
Shell> chkconfig nfs on               #增加到自啟動指令碼中
Shell> chkconfig portmap on           #增加到自啟動指令碼中

源端掛載 N FS 檔案系統

su - root
mkdir -p /backup
mount {目標端IP**.**}:/backup /backup

注: Linux 不同作業系統版本, N FS 服務配置有差異,需要根據實際版本做調整。

3.3  源端查詢資料庫物件數量

比對 表格的建立,方便後期的資料比對

create table object_tmp_201702 as select * from dba_objects ;

紅部分 ,需要 按照 遷移時 具體 業務 使用者 做替換,如下:

SELECT D.OWNER,COUNT(1)
  FROM dba_objects d
 WHERE d.OWNER   in ('SJZLCK', 'YDJW_ZP', 'HZ2004','TEST','DRB','RMAN','MOCHA','CZRKRZSJ','ZJCONN','CZRKTJXX','OGGADMIN','ZJGAZHCX')
 and d.OWNER not in ('PUBLIC') 
 AND NOT EXISTS (SELECT 1 FROM DBA_RECYCLEBIN B WHERE B.object_name=D.OBJECT_NAME AND D.OWNER=B.owner) 
 GROUP BY D.OWNER
 ORDER BY D.OWNER ;

3.4  邏輯匯出生產端資料

透過掛載 NFS 目錄,將 源端 資料 匯出到 對應的NFS 檔案系統上 ,如下:

Shell> expdp \'/ as sysdba\' directory=dump_dir dumpfile=JKfull.dmp  logfile=JKfull.log full=y

第四部分  目標端執行資料匯入

4.1  目標端建立業務表空間

根據 2.1 節生成的建立 語句, 在目標庫 建立對應的 業務 表空間 ,要注意表空間預分配大小,建議直接分配(非自動擴充套件)提高匯入效能

SQL> @/home/oracle/tts_create_ts.sql

4.2  目標端資料邏輯匯入

Shell> impdp \'/ as sysdba\' directory=dump_dir dumpfile=JKfull.dmp  logfile=JKfull.log full=y

4.3  目標端啟動監聽服務

複製源端生產庫的 tnsnames.ora 檔案到新環境目標端,並且開啟資料庫監聽檔案,確保資料庫例項資訊已經註冊到監聽中。

4.4  編譯無 效物件並確認

手動編譯目標庫 無 效物件:

@?/rdbms/admin/utlrp.sql

編譯完成之後,再確認 不存在無 效物件:

select a.owner, a.object_name, a.OBJECT_TYPE
  from dba_objects a, object_201702 b
 where a.OBJECT_NAME = b.OBJECT_NAME
   and a.STATUS = 'INVALID'
   and b.STATUS = 'VALID';

第五部分  應用測試部分

首先, 業務開發人員 進行 應用全模組通測 業務全生命週期測試 沒有問題後 ,將生產主機替換成臨時 IP 地址 ,將目標端 ip 改成老生產端的 ip 接管業務。

第六部分  R AC 叢集 I P 修改

與最終客戶確認,是否需要將目標端的 I P 地址替換成老生產環境 I P 地址,如果需要,則手動進行修改源端和目標端 R AC SCAN VIP Pu blic IP 等工作。

第1部分 

第2部分 

第3部分 

第4部分 

第5部分 

6.1  修改 R AC 兩節點 / etc/ hosts

1 節點:

Vi /etc/hosts
10.10.17.101 host-fefcfedb0f4f
10.10.17.13 host-fefcfedb0f4f-vip
10.253.253.101 host-fefcfedb0f4f-priv
10.10.17.102 host-fefcfebc5b0d
10.10.17.14 host-fefcfebc5b0d-vip
10.253.253.102 host-fefcfebc5b0d-priv
10.10.17.15 orcl-scan

2 節點:

Vi /etc/hosts
10.10.17.101 host-fefcfedb0f4f
10.10.17.13 host-fefcfedb0f4f-vip
10.253.253.101 host-fefcfedb0f4f-priv
10.10.17.102 host-fefcfebc5b0d
10.10.17.14 host-fefcfebc5b0d-vip
10.253.253.102 host-fefcfebc5b0d-priv
10.10.17.15 orcl-scan

6.2  先停SCAN 監聽,再停 SCAN VIP

[grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl stop scan_listener
[grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl stop scan
[grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl status scan

6.3  先停本地監聽,再停本地VIP

[grid@host-fefcfebc5b0d ~]$ srvctl stop listener
[grid@host-fefcfebc5b0d ~]$ srvctl stop vip -n host-fefcfedb0f4f
[grid@host-fefcfebc5b0d ~]$ srvctl stop vip -n host-fefcfebc5b0d

6.4  修改 R AC 兩節點 PUBLIC   IP

[root@host-fefcfedb0f4f ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.10.17.101
GATEWAY=10.10.17.254
[root@host-fefcfedb0f4f ~]# ifdown eth0
[root@host-fefcfedb0f4f ~]# ifup eth0
[root@host-fefcfedb0f4f ~]# ip a
 
[root@host-fefcfebc5b0d ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.10.17.102
GATEWAY=10.10.17.254
[root@host-fefcfebc5b0d ~]# ifdown eth0
[root@host-fefcfebc5b0d ~]# ifup eth0
[root@host-fefcfebc5b0d ~]# ip a

6.5  修改 R AC 叢集 PUBLIC 註冊資訊

[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/oifcfg delif -global eth0
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/oifcfg setif -global eth0/10.10.17.0:public

6.6  修改 R AC 兩節點 V IP

[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n host-fefcfedb0f4f -A 10.10.17.13/255.255.255.0/eth0
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n host-fefcfebc5b0d -A 10.10.17.14/255.255.255.0/eth0
 
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl config vip -n host-fefcfedb0f4f
VIP exists: /host-fefcfedb0f4f-vip/10.10.17.13/192.168.0.0/255.255.255.0/eth0, hosting node host-fefcfedb0f4f
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl config vip -n host-fefcfebc5b0d
VIP exists: /host-fefcfebc5b0d-vip/10.10.17.14/192.168.0.0/255.255.255.0/eth0, hosting node host-fefcfebc5b0d

6.7  修改 R AC 叢集 SCAN VIP

[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify scan -n 10.10.17.15

6.8  先啟本地VIP ,再啟本地監聽

[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start vip -n host-fefcfedb0f4f
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start vip -n host-fefcfebc5b0d
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start listener

6.9  先啟SCAN VIP ,再啟 SCAN 監聽

[root@host-fefcfedb0f4f ~]#/u01/app/12.2/grid/bin/srvctl start scan
[root@host-fefcfedb0f4f ~]#/u01/app/12.2/grid/bin/srvctl start scan_listener

第七部分  遷移失敗回退方案

7.1  關閉目標端資料庫或主機

SQL> shutdown immediate
或者
Shell> shutdown -h now

7.2  啟動老生產資料庫和監聽

Shell> lsnrctl start
Shell> sqlplus / as sysdba
SQL> startup

注:由於老生產庫環境未作任何變更,因此在極端情況下,可以直接拉起資料庫例項和監聽,恢復業務。

 


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

相關文章