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
關注榮科雲數據公眾號:
TAG:榮科雲數據 |