Oracle
是否有任何技巧可以在沒有文件系統的情況下通過 UDEV 規則線上調整原始 LVM 大小?
例如,這裡是邏輯卷:
lvcreate -L2G -n Lv_OraD1 vg_db lvcreate -L180G -n Lv_OraD2 vg_db lvdisplay /dev/mapper/Lv_OraD*
UDEV 規則原始 LV:
vi /etc/udev/rules.d/60-raw.rules ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="3", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="4", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add",KERNEL=="raw[1-9]",OWNER="grid",GROUP="dba",MODE="660" start_udev raw -qa
ASM Diskgroup 可能是這樣的:
CREATE DISKGROUP DATA1 NORMAL REDUNDANCY FAILGROUP Fg1 DISK '/dev/raw/raw1' SIZE 2048M ,'/dev/raw/raw2' SIZE 184320M;
效果:無法使用 DISKGROUP DATA1 最大 2G 的大小。
那麼有什麼技巧可以線上實現這個結果嗎?
lvreduce -L90G /dev/mapper/Lv_OraD2 lvextend -L90G /dev/mapper/Lv_OraD1
謝謝。
首先找到磁碟名稱和路徑:
select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;
在找到要縮小的磁碟的 ASM 生成名稱後,將其在 ASM 中減小到所需大小(我假設它被稱為
DATA1_0002
:alter diskgroup data1 resize disk DATA1_0002 size 90G;
這將啟動重新平衡,等到重新平衡完成,您可以查看其進度:
select * from v$asm_operation;
重新平衡後,再次執行此查詢:
select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;
在那裡,您應該看到原始 184320
OS_MB
和 92160TOTAL_MB
用於您剛剛縮小的磁碟。接下來使用 lvreduce 縮小 LV:lvreduce -L 90G vg_db/Lv_OraD2
確保不要將 LV 的大小減小到 ASM 磁碟大小以下
TOTAL_MB
。完成後,增加另一個 LV:
lvextend -L 90G g_db/Lv_OraD1
回到 ASM,再次執行:
select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;
這裡
OS_MB
第一盤應該增加到 92160,但TOTAL_MB
仍然是 2048。最後一步是增加 ASM 中的第一個磁碟大小:
alter diskgroup data1 resize all;
以上將磁碟組中所有 ASM 磁碟的大小調整為
OS_MB
. 這會觸發另一個短暫的重新平衡,完成後,您應該會看到兩個磁碟OS_MB
的92160TOTAL_MB
。