概述
分享下最近對資料庫擴容的大致過程,僅供參考。
1、 擴容前準備
1.1. 提供設備清單
將設備的大小和個數給系統和存儲工程師,要求在節點上增加新的磁碟,其中 RAC 需要共享磁碟。
1.2. 對資料庫進行備份
因為每晚都有做備份,所以這裡做個檢查就可以了
rman target /
backup full database;
1.3. 檢查備份及可恢復性
rman target /
list backup summary; --概述可用的備份
說明:B表示backup,F表示FULL,A表示archive log,0 1表示incremental backup,S說明備份狀態(A AVAILABLE X EXPIRED )
1.4. 備份ASM磁碟頭(兩個節點的grid用戶)
當前系統所有 asm 已使用的 pv 磁碟頭均需進行備份
kfed read /dev/rhdisk1 >/home/grid/rhdisk1bak.txt
kfed read /dev/rhdisk4 >/home/grid/rhdisk4bak.txt
kfed read /dev/rhdisk6 >/home/grid/rhdisk6bak.txt
kfed read /dev/rhdisk8 >/home/grid/rhdisk8bak.txt
kfed read /dev/rhdisk10 >/home/grid/rhdisk10bak.txt
kfed read /dev/rhdisk11 >/home/grid/rhdisk11bak.txt
kfed read /dev/rhdisk12 >/home/grid/rhdisk12bak.txt
2、 新設備調整(兩個節點的root用戶)
2.1 主機掃描新劃的磁碟
cfgmgr
--確認新盤
lspv
2.2. 權限調整(兩個節點的root用戶)
chmod 660 /dev/rhdisk13chown grid:dba /dev/rhdisk13ls -l /dev/rhdisk*
注意節點 2 也需要調整確認
2.3. 確認沒有PVID(兩個節點的root)
# lspv |grep hdisk--都是NONE就對了
說明:PVID 全稱 physical volume identifier,它非常重要,相當於軟序列號,當把一個磁碟變成 PV 時, 就生成了 PVID , PVID 是由機器序列號 (uname -m的前
8位 ) 和它生成的時間組成,這種機制保證了 PVID 的唯一性。當系統啟動時,磁碟配置程序會尋找磁 盤上的 PVID ,並把它跟 ODM 庫中的 PVID 信息進行比對,如果在 ODM 中找到匹配的條目,則把和這個 PVID 相對應的 hdisk 號賦予這個 PV ,如果沒有匹配 的條目,則賦予這個 PVID 新的 hdisk 號。
--如果存在 pvid ,需要清空(一定要慎重執行)
/usr/sbin/chdev -l hdisk-a pv=clear
2.3. 調整RESERVE_POLICY(兩個節點的root執行)
如果是為 RAC 資料庫添加新磁碟,還需要調整新磁碟的 reserve_policy 應為 no_reserve 或者 reserve_lock 應為no
lsattr -El hdisk13 | grep -E "reserve_policy|reserve_lock"
chdev -l hdisk13 -a reserve_policy=no_reserve
lsattr -El hdisk13 | grep -E "reserve_policy|reserve_lock"
3、 擴容
3.1. 擴容前ASM檢查(其中一個節點的grid用戶)
$sqlplus / as sysasm
set linesize 1000 pagesize 1000
col state for a20
col path for a50
col name for a30
select path,name,state from v$asm_disk where path like '/dev/rhdisk%' order by 1;
--冗餘級別為EXTERNAL
select NAME,STATE,TYPE,TOTAL_MB,FREE_MB from v$asm_diskgroup;
PS:三種冗餘方式
1) 外部冗餘(external redundancy):
表示Oracle不幫你管理鏡像,功能由外部存儲系統實現,比如通過RAID技術;有效磁碟空間是所有磁碟設備空間的大小之和。
2) 默認冗餘(normal redundancy):
表示Oracle提供2份鏡像來保護數據(鏡像數據一次),有效磁碟空間是所有磁碟設備大小之和的1/2 (使用最多)。
3) 高度冗餘(high redundancy):
表示Oracle提供3份鏡像來保護數據(鏡像數據兩次),以提高性能和數據的安全,最少需要三塊磁碟(三個failure group);
有效磁碟空間是所有磁碟設備大小之和的1/3,雖然冗餘級別高了,但是硬體的代價也最高。
3.2. 加入新磁碟到磁碟組(其中一個節點的grid用戶)
sqlplus / as sysasm
alter diskgroup DATA add disk '/dev/rhdisk13' rebalance power 8;
--其中 power n 區間[0,11],n 越大 REBAL 越快,IO 壓力也就越大。
--如果磁碟組是 NOMAL 冗餘需要指定 FAILGROUP,如:
--alter diskgroup dgname add failgroup fgname1 disk '/dev/rhdiskpower453』 add failgroup fgname2 disk
'/dev/rhdiskpower454' [ rebalance power n] ;
3.3、監控REBAL進度
sqlplus / as sysasm
set linesize 1000
col OPERATION format a15
col state for a15
--無記錄表示 REBAL 完成
SQL> select * from gv$asm_operation;
3.4、監控告警日誌
tail -200f alert_otmdb1.log
4、 擴容後檢查
4.1. 擴容後ASM檢查
SQL> select NAME,STATE,TYPE,TOTAL_MB,FREE_MB from v$asm_diskgroup;
SQL> select path,name,state from v$asm_disk where path like '/dev/rhdisk%' order by 1;
4.2. 備份新增加的設備
kfed read /dev/rhdisk13 >/home/grid/rhdisk13bak.txt
4.3、檢查監聽(兩個節點)
到這裡我們就完成了資料庫的擴容了,覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~