用戶一個Oracle 10g RAC的基于ocfs2的集群,redhat 5.4 64bit環境,需要更換存儲和升級更換8GHBA卡,過程總結如下:
用戶一個Oracle 10g RAC的基于ocfs2的集群,RedHat 5.4 64bit環境,需要更換存儲和升級更換8GHBA卡,過程總結如下:
準備篇:
1、先在root用戶下,用df -h 查看原存儲掛載的使用情況,評估遷移的數據量
2、用mount顯示現在存儲的掛載的情況和格式,把/etc/fstab 文件備份、記錄下來
3、考慮到加入新HBA卡,原存儲LUN識別位置會發生改變,難以識別,通過
/sbin/scsi_id -g -u -s /block/sdX,查看現有存儲的每個LUN的uuid,記錄下來,為保險起見,在每個掛載的LUN,touch 一個標識原sdX的和掛載點的空文件,以便同時掛載新老存儲時方便識別。
4、記錄下新的存儲的LUN的UUID,截圖備查。
操作篇:
1、oracle下
su - oracle 切換到oracle用戶
sqlplus / as sysdba
shutdown immediate
退出oracle
在oracle安裝的$ORACLE_HOME/crs/bin目錄下,以root用戶執行 ./crs_ctl disable crs,以便在這個切換重啟過程中RAC crs資源不自動啟動,防止數據損壞。
2、把/etc/fstab里的原存儲的自動掛載注解掉,逐臺關閉服務器,插入新8G FC HBA卡,先啟動1臺rac主機,啟動后果然存儲的ID發生改變,自動發現與原來fdisk -l 的id不一致,先不管
3、在存儲端發現新的服務器,將預先分好的LUN分配給主機,原服務器上已經安裝過多路徑軟件,這里沒有做改變,主機端需要重新啟動以便發現新分配的存儲,重起后fdisk-l發現更多的存儲LUN,有文件格式是原LUN,但sdX的存儲完全不對,這時原來記錄的UUID使用上了,用/sbin/scsi_id -g -u -s /block/sdX,逐個查看,用cat /sys/block/sda/device/vendor 也可以看到存儲的生產廠商(新老存儲不同廠商),這里一定仔細,老存儲有數據,新存儲需要掛載后格式化。
4、根據uuid把原存儲的LUN還掛載到原目錄下,如
mount -o datavolume,nointr -t ocfs2 /dev/sdi1 /oa 類似,把原來的存儲逐一掛載到原目錄,這時可以在$ORACLE_HOME/crs/bin目錄下,通過./crs_crl start crs把crs啟動起來,可以通過 ./crs_crl check crs 來檢查,切換到oracle下,通過crs_stat -t查看RAC資源是否在線,RAC online后,那原存儲和RAC啟動沒有問題
5、在根目錄下,根據原來的掛載目錄建立新目錄,如原/oa,那就建/oa1目錄,用來掛載新存儲,LUN大于2T,需要用parted來分區,操作如下:
parted /dev/sdX
mklabel gpt
mkpart primary 0% 100%
quit
把規劃的LUN都分好區后,需要把分區格式化為ocfs2,只需要在一個node做一次,命令mkfs.ocfs2 -b 4K -C 32K -N 4 -L oa /dev/sdc1,逐一格式化
通過mount -o datavolume,nointr -t ocfs2 /dev/sdi1 /oa1類似的命令,把規劃的新存儲按對應關系掛載到新的目錄下。
6、停掉oracle ,停掉crs資源,通過cp -rp /原存儲掛載目錄 /新存儲掛載目錄,把文件和子目錄及對應的權限都拷貝到新存儲中,過程漫長,可以通過du -sh 查看新存儲的容量變化,把老存儲的內容原封不動拷貝到新存儲。
7、拷貝完成后,umount掉所有掛載到存儲,然后按原來的掛載目錄,把新存儲掛載到原來的掛載點,重新啟動crs資源,用crs_stat -t 查看rac是否在線,如正常,那說明新存儲已經可以正常工作了。
8、停數據庫,停crs,關機,,把原4G HBA卡那掉,重新開機后,盤符發生改變,通過mount先手工加載,起動crs,都正常后,在/etc/fstab 下,語法如下
/dev/sde1 on /oa type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local),逐條加入,這樣新存儲就可以開機自動加載了,不要忘了 crscrl enable crs,讓crs可以自動啟動。
9、另一個節點只要同樣分配LUN,也按原來的目錄掛載,最后crs_stat -t 2個節點都在線,并且重啟后存儲掛載和crs都自動啟動,工作正常,可通過在sqlplus下執行
select instance_name from v$instance;
select open_mode fromv$database;
查看數據庫工作情況,這樣存儲遷移和HBA卡更換就完成了。
總結:
通過以上遷移方式,只涉及到數據庫很少的操作,不需要導入導出數據庫,完全在linux的文件層面完成遷移,對oracle水平要求比較低,邏輯上簡單,可操作性強,可以比較順利完成遷移。
本文永久更新鏈接地址:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com