共計 7068 個字符,預計需要花費 18 分鐘才能閱讀完成。
本篇文章為大家展示了 udev 下 oracle 11g RAC asm 在線擴盤和刪盤操作是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
我們都知道 ORACLE 在 RAC 的部署和安裝的時候非常推薦我們使用 ASM 來管理存儲,而非之前的裸設備和本地文件系統。原因有很多,我覺得最主要的還是 ASM 的易用性、性能、容錯機制相對其他方式都要更優秀。
但是生產系統使用一段時間之后,經?;爻霈F ASM 沒有可擴展的存儲的情況,這個時候就需要在線給數據庫擴存儲的情況,這樣的情況相信也是經常困擾 dba 的一項工作。
本文重點介紹使用 UDEV 方式在線擴 ASM 存儲的方法和注意事項,供大家參考
1、需要存儲工程師劃共享磁盤到兩臺 RAC 主機
/home/oracle/Skillset/questions/Skillset3/Skillset3.html
[root@rac1 by-path]# fdisk -l
Disk /dev/sdh: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 32768 bytes / 32768 bytes
Disk identifier: 0x00000000
我這里只顯示了我新加的磁盤
兩個節點查看 uuid
[root@rac1 by-path]# ll /dev/disk/by-id
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000424 – ../../sdc
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000425 – ../../sdd
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000426 – ../../sde
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000427 – ../../sdf
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000428 – ../../sdg
lrwxrwxrwx 1 root root 9 Apr 11 09:51 scsi-3600507680c808021b800000000000429 – ../../sdh
查看 rac2 節點 uuid
[root@rac2 ~]# ll /dev/disk/by-id
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000424 – ../../sdc
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000425 – ../../sdd
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000426 – ../../sde
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000427 – ../../sdf
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000428 – ../../sdg
lrwxrwxrwx 1 root root 9 Apr 11 10:46 scsi-3600507680c808021b800000000000429 – ../../sdh
對比是否一致,如果一致的話,說明這個盤是共享的,沒有問題。
2、配置 udev
下面是添加磁盤的 udev 文件
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL== sd* , SUBSYSTEM== block , PROGRAM== /sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name , RESULT== 3600507680c808021b800000000000429 , NAME= asm-diskh , OWNER= oracle , GROUP= dba , MODE= 0660
在兩個節點分別增加這么一行
然后在兩個節點分別重啟 udev
start_udev
檢查兩個節點共享磁盤是否添加到 ASM 里面
[root@rac1 ~]# ll /dev/asm*
brw-rw—- 1 oracle dba 8, 112 Apr 23 15:55 /dev/asm-diskh
3、在線為 ASM 擴磁盤
rac2:/home/oracle@grid sqlplus / as sysasm
SQL set lines 200 pages 1000
SQL col PATH for a30
SQL select group_number,path,state,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER PATH STATE TOTAL_MB FREE_MB
———— —————————— —————- ———- ———-
1 /dev/asm-diskg NORMAL 102400 97445
2 /dev/asm-diskh NORMAL 0 0
2 /dev/asm-diskf NORMAL 102400 38788
3 /dev/asm-diske NORMAL 10240 9932
3 /dev/asm-diskd NORMAL 10240 9930
3 /dev/asm-diskc NORMAL 10240 9932
SQL select name,state,type,total_mb,free_mb,round(((total_mb-free_mb)/total_mb)*100,2) tbs_used from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB TBS_USED
———————————————————— ———————- ———— ———- ———- ———-
ARCH MOUNTED EXTERN 102400 97445 4.84
DATA MOUNTED EXTERN 102400 29535 71.16
OCR MOUNTED NORMAL 30720 29794 3.01
SQL alter system set asm_power_limit=10;
System altered.
SQL alter diskgroup data add disk /dev/asm-diskh
Diskgroup altered.
SQL alter system set asm_power_limit=1;
System altered.
擴完之后,查看 asm 是否在動態平衡
SQL select * from v$asm_operation;
GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
———— ———- ——– ———- ———- ———- ———- ———- ———– —————————————————————————————-
2 REBAL RUN 10 10 36430 36430 0 0
SQL select group_number,path,state,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER PATH STATE TOTAL_MB FREE_MB
———— —————————— —————- ———- ———-
1 /dev/asm-diskg NORMAL 102400 97445
2 /dev/asm-diskh NORMAL 102400 65968
2 /dev/asm-diskf NORMAL 102400 65965
3 /dev/asm-diske NORMAL 10240 9932
3 /dev/asm-diskd NORMAL 10240 9930
3 /dev/asm-diskc NORMAL 10240 9932
這里有幾個概念需要解釋一下
ASM 實例的 SGA 需要的內存很小。
當在磁盤組中添加刪除磁盤時,磁盤組會自動對數據在新舊磁盤間重新分配,從而實現分散 IO, 這個過程就叫再平衡 (Rebalance)。在磁盤組中添加刪除磁盤會在磁盤間移動數據,因此雖然是聯機操作,仍然會影響部分性能,所以要在系統空閑的時候進行。
asm_power_limit 參數控制 Rebalance 速度, 取值范圍 0 -11. 最小值 0,代表不做 Rebalance, 最大值 11 代表最快的速度,也意味著嚴重影響性能, 1 代表最慢的速度和最小的性能影響。 其中 1 是默認值。
4、在線為 ASM 刪磁盤
生產中雖然輕易對生產的磁盤做調整,但是也存在在線刪 ASM 磁盤的需求。那么我們來測試一下,刪盤是否會影響數據庫的使用呢?
創建測試表 crm.obj 表
rac2:/home/oracle@db . gdenv
rac2:/home/oracle@grid sqlplus / as sysasm
SQL select group_number,name,path,state,total_mb,free_mb from v$asm_disk;
GROUP_NUMBER NAME PATH STATE TOTAL_MB FREE_MB
———— ———————————————————— —————————— —————- ———- ———-
1 ARCH_0000 /dev/asm-diskg NORMAL 102400 97445
2 DATA_0001 /dev/asm-diskh NORMAL 102400 65968
2 DATA_0000 /dev/asm-diskf NORMAL 102400 65965
3 OCR_0002 /dev/asm-diske NORMAL 10240 9932
3 OCR_0001 /dev/asm-diskd NORMAL 10240 9930
3 OCR_0000 /dev/asm-diskc NORMAL 10240 9932
SQL alter diskgroup data drop disk DATA_0001;
Diskgroup altered.
這里需要注意的是要填 name,不能填具體哪個磁盤。
SQL select GROUP_NUMBER,name,state,type,total_mb,free_mb,round(((total_mb-free_mb)/total_mb)*100,2) tbs_used from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB TBS_USED
———— ———————————————————— ———————- ———— ———- ———- ———-
1 ARCH MOUNTED EXTERN 102400 97445 4.84
2 DATA MOUNTED EXTERN 102400 29533 71.16
3 OCR MOUNTED NORMAL 30720 29794 3.01
SQL select disk_number, state, name, total_mb, free_mb from v$asm_disk where group_number = 2;
DISK_NUMBER STATE NAME TOTAL_MB FREE_MB
———– —————- ———————————————————— ———- ———-
1 DROPPING DATA_0001 102400 72948
0 NORMAL DATA_0000 102400 58985
我們可以看到這個磁盤正在被刪除,因為要做動態平衡嘛,所以可以看到底下的動態平衡的過程。
SQL select * from v$asm_operation;
GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
———— ———- ——– ———- ———- ———- ———- ———- ———– —————————————————————————————-
2 REBAL RUN 1 1 8172 36430 3897 7
而這個過程是完全不影響用戶使用數據庫的,這個我在我的測試庫上做了測試。
上述內容就是 udev 下 oracle 11g RAC asm 在線擴盤和刪盤操作是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。