當前位置:
首頁 > 最新 > Oracle調整硬體環境方案之ASM遷移

Oracle調整硬體環境方案之ASM遷移

編輯手記

關注榮科雲數據公眾號的朋友一定看過之前一篇《Oracle資料庫調整硬體環境方案簡述》,裡面介紹了在各種可能的硬體環境調整中,Oracle該如何做相應的調整。本文我們就介紹一個場景的實施案例,原環境是ASM單機環境,客戶計劃將資料庫架構變更為Oracle RAC,存儲利用原存儲,數據量2.5TB,可申請停機時間4小時。根據這些已知條件,大家會採取什麼樣的方案呢?

本次案例示意圖

上面的示意圖描述了本次案例需要做的調整,需要將原Oracle單機(11.2.0.4)+ASM環境,變更為Oracle RAC(11.2.0.4)+ASM環境。相當於更換主機,並將Oracle架構從單機調整為RAC,但存儲並不更換。

方案的選擇

1、利用ADG遷移

使用新環境做原庫的DG備端,需要割接時直接switchover

缺點:應用層要調整連接IP,需要雙倍的存儲空間

2、利用rman遷移

在新環境安裝集群軟體和資料庫軟體,與原庫保持版本一致,備份原庫,在新環境恢復資料庫,可以在新環境庫mount狀態時,不斷拷貝原庫歸檔文件進行恢復,減少停機切換窗口,切換時,停應用,切歸檔,在新環境最後恢復一次所有歸檔,資料庫打開

缺點:手動操作多,需要雙倍的存儲空間

3、利用數據泵遷移

在新環境(RAC)安裝集群軟體和資料庫軟體,創建資料庫,然後使用數據泵或exp/imp工具從源庫導出數據,再導入到新庫。

缺點:由於存儲並不更換,此種方案需要雙倍的存儲空間,再加上數據泵導出導入時間較長,4個小時的停機窗口很難滿足

4、直接遷移ASM數據盤組

使用新主機重新構建集群(ocr和vote需要額外磁碟),並安裝相同版本資料庫軟體。在原環境資料庫和ASM實例停止後,將ASM磁碟映射給所有新主機,新環境集群直接掛載資料庫所用ASM盤組,再啟動資料庫即可。

優點:能夠在停機窗口期完成,無需雙倍存儲空間,回退簡單(原端磁碟映射可以先不取消,但要停止HAS服務,遷移失敗可直接拉起原端)

通過以上四種方案的對比,我們選擇了第四種直接遷移ASM數據盤組的方案,下面我們就介紹一下這個方案的具體實施方法。

方案概述

注意什麼?

1、原生產端與新目標端的操作系統版本要求一致

2、原生產端與新目標端的資料庫版本要求一致

3、原生產端與新目標端ASM磁碟的屬主與許可權要求一致

4、新目標端RAC兩節點映射的磁碟路徑和名稱必須一致(原端和目標端的磁碟名稱可不同,ASM是靠盤頭信息確認盤組歸屬的)

基本實施步驟

1、在新目標端安裝與原生產端版本一致的操作系統

2、收集原生產環境ASM磁碟組相關信息並備份磁碟頭

3、從存儲端分配votedisk所需要的磁碟

4、在新目標環境安裝GRID軟體、配置集群環境(要求與原生產環境版本一致)

5、停止原生產環境資料庫和ASM實例(單機ASM需要停止HAS服務)

6、在新目標環境掛載ASM數據盤組相關磁碟,並確認磁碟的屬主與許可權

7、在新目標環境使用ASMCA命令mount同步過來的磁碟組

8、在新目標環境安裝RDBMS軟體(要求與原生產環境版本一致)

9、從原生產環境複製參數文件至新目標環境,並修改對應的參數變數

10、使用crsctl命令把資料庫以及實例註冊到集群環境中

11、使用setasmgidwrap命令修改oracle許可權,否則oracle用戶無法訪問ASM盤組

12、啟動目標環境資料庫

13、連接資料庫進行業務驗證

方案實施

1、安裝操作系統

兩台目標端伺服器安裝要求與原生產環境版本一致,包括操作系統相關補丁,安裝過程忽略,但提出以下幾點注意事項:

1)需要修改新目標端共享存儲盤的屬主和許可權(grid:asmadmin 660)

2)對目標端安裝集群前的準備工作(創建用戶、目錄,修改HOST文件、SHELL限制,內核參數等)

3)目標端主機名可與生產端不一致

2、原生產環境收集ASM盤組信息並備份盤頭

1)收集磁碟組信息

Select name,total_mb,free_mb,GROUP_NUMBER,DISK_NUMBER,path,FAILGROUP,MOUNT_STATUS,HEADER_STATUS,name,group_id,total_mb from v$asm_disk order by FAILGROUP;

2)備份磁碟頭信息

kfed read /dev/raw/raw1 text=raw1.txt

註:10.2.0.5之後,盤頭會自動備份,但仍然建議手工備份盤頭

3、安裝grid軟體

兩台目標端伺服器安裝與原生產端版本一致的Grid軟體,同時,需要新分配磁碟創建Votedisk和ocr盤組。具體細節忽略

4、掛載映射磁碟組

目標端集群安裝完畢後,原生產端資料庫及集群保證為關閉狀態。目標端用asmca命令掛載映射過來的磁碟組,asmca命令會自動掃描相關磁碟並將可用磁碟組列出,點擊mount all後會掛載盤組(相關盤組資源會自動載入進集群資源中)

5、安裝RDBMS軟體

兩台目標端伺服器安裝與原生產端版本一致的RDBMS軟體,注意安裝時選擇僅安裝軟體,不要創建資料庫。

6、設置Oracle參數文件

從原生產端複製參數文件到目標環境,並修改相對應的參數變數,步驟如下:

1)在生產端創建pfile

Create pfile=』/home/oracle/pfile.ora』 from spfile;

2)拷貝生產端pfile和密碼文件到兩台目標端

3)在目標端修改pfile,根據目標端環境修改相應參數(SGA、PGA)

DB_NAME不能被修改

4)增加集群相關參數,如下:

*.cluster_database=true

*.REMOTE_LISTENER=『ftpdb_scan:1521』

ftpdb1.instance_name=ftpdb1

ftpdb2.instance_name=ftpdb2

ftpdb1.instance_number=1

ftpdb2.instance_number=2

ftpdb1.undo_tablespace="UNDOTBS1"

ftpdb2.undo_tablespace="UNDOTBS2"

ftpdb1.thread=1

ftpdb2.thread=2

5)創建spfile,併到spfile文件存放到ASM中

su – oracle

sqlplus / as sysdba

create spfile="+datadg/ftpdb/spfileftpdb.ora" from pfile;

配置兩台伺服器的pfile文件

$more initftpdb1.ora

spfile="+datadg/ftpdb/spfileftpdb.ora"

6)在兩台目標端創建audit目錄

mkdir –p $ORACLE_BASE/admin/xxxx/adump

7、把資料庫及實例註冊進集群環境

su – oracle

srvctl add database -d ftpdb -o /u01/app/oracle/product/11.2.0/dbhome_1

srvctl add instance -d ftpdb -i ftpdb1 -n gkdb1

srvctl add instance -d ftpdb -i ftpdb2 -n gkdb2

查看配置

srvctl config database -d ftpdb

修改資料庫為自動啟動(如果DB資源的AUTO_START屬性不是always)

8、修改Oracle許可權

使用setasmgidwrap命令修改oracle許可權(兩個節點都執行)

su – grid

cd $ORACLE_HOME/bin

setasmgidwrap -o /oracle/app/oracle/product/11.2.0/bin/oracle

/oracle/app/oracle/product/11.2.0此路徑為RDBMS的$ORACLE_HOME

9、啟動Oracle實例並打開資料庫

1)先啟動實例1

su – oracle

srvctl start instance –d orcl –i ftpdb1

2)增加實例2的redolog日誌以及undotbs2表空間

alter database add logfile thread 2 group 6 ("+DATADG") size 2g reuse;

alter database add logfile thread 2 group 7 ("+DATADG") size 2g reuse;

alter database add logfile thread 2 group 8 ("+DATADG") size 2g reuse;

alter database add logfile thread 2 group 9 ("+DATADG") size 2g reuse;

alter database add logfile thread 2 group 10 ("+DATADG") size 2g reuse;

create undo tablespace UNDOTBS2 datafile "+DATADG" size 30G;

3)啟動集群線程2

SQL> alter database enable public thread 2;

SQL> select thread#,status,enabled from v$thread;

THREAD# STATUS ENABLED

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

1 OPEN PUBLIC

2 CLOSED PUBLIC

注意:如果thread2為private,可以採用下面的方法修改

關閉instance ORCL2,重啟至nomount狀態。在現有一個intsance ORCL1上操作:

alter database disable thread 2;

alter database enable public thread 2;

再開啟ORCL2

4)創建集群相關視圖

@$ORACLE_HOME/rdbms/admin/catclust.sql

5)啟動實例2

srvctl start instance –d orcl –i ftpdb2

關注榮科雲數據公眾號:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 榮科雲數據 的精彩文章:

Oracle資料庫調整硬體環境方案簡述

TAG:榮科雲數據 |