在测试机的测试步骤:
ASM组的空闲空间,要大于被删除磁盘空间。
su - grid
sqlplus / as sysasm
SQL> select group_number, name, TOTAL_MB, FREE_MB from V$asm_disk_stat;
GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ------------------------------ ---------- ----------
2 DATA_0001 10239 8792
1 CRS_0000 2047 1738
2 DATA_0002 10239 8795
1 CRS_0002 2047 1738
1 CRS_0001 2047 1739
2 DATA_0000 10239 8793
SQL> select NAME,PATH from V$ASM_DISK;
NAME PATH
------------------------------ ----------------------------------------
DATA_0001 /dev/raw/raw5
CRS_0000 /dev/raw/raw1
DATA_0002 /dev/raw/raw6
CRS_0002 /dev/raw/raw3
CRS_0001 /dev/raw/raw2
DATA_0000 /dev/raw/raw4
SQL> alter diskgroup DATA drop disk DATA_0002;
Diskgroup altered.
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
2 REBAL RUN 1 1 1427 1538 14267 0
SQL> select * from v$asm_operation;
no rows selected
SQL> select NAME,PATH from V$ASM_DISK;
NAME PATH
------------------------------ ----------------------------------------
/dev/raw/raw6
DATA_0001 /dev/raw/raw5
CRS_0000 /dev/raw/raw1
CRS_0002 /dev/raw/raw3
CRS_0001 /dev/raw/raw2
DATA_0000 /dev/raw/raw4
SQL> select group_number, name, TOTAL_MB, FREE_MB from V$asm_disk_stat;
GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ------------------------------ ---------- ----------
2 DATA_0001 10239 8153
1 CRS_0000 2047 1738
1 CRS_0002 2047 1738
1 CRS_0001 2047 1739
2 DATA_0000 10239 8153
########################################################
oracle RAC ASM添加磁盘:
以RAC 环境为例: 假设 oracle 为oracle rdbms 属组;grid 为 gi 属组;
For ASMLIB users:
RAC 环境 gi owner 执行以下命令
1、# /etc/init.d/oracleasm scandisks #( root用户执行)
$> id
$> /etc/init.d/oracleasm listdisks
$> /etc/init.d/oracleasm querydisk <具体磁盘路径>
2、在操作系统层面检查磁盘是否可以读写(每个节点)(oracle 用户或者grid用户)
# raw device
$> dd if=/dev/raw/raw6 of=/dev/null count=100 bs=8192
3、适用kfed 验证磁盘是否为候选盘;
kfed read /dev/raw/raw6 |grep kfbh.type
kfbh.type:1 ; 0x002: KFBTYP_DISKHEAD 如果看到这么一个结果,表明该磁盘是可用的。
4、创建临时磁盘组,主要是用ASM 实例来检验下所有要加的盘没有问题,即使出问题,也不会影响原来的生产系统。虽然要检查的步骤比较多,比较烦,但是对于生产系统来说出不了任何意外。
CREATE DISKGROUP TEST EXTERNAL REDUNDANCY DISK '/dev/raw/raw6';
5、检查刚创建的dg 是否已经自动mount 了?
SELECT STATE, NAME FROM V$ASM_DISKGROUP;
6、如果没有mount,尝试手工mount
ALTER DISKGROUP TEST MOUNT;
---确认dg状态
SELECT STATE, NAME FROM V$ASM_DISKGROUP;
7、如果step6 查询lixora成功mount(如果rac ,则确保每个ASM实例都成功mount)
则说明我们需要添加的asm 盘都正常的,可以正常使用。那么我们就可以把他们加到生产的dg中了。
-----卸载dg(在ASM instance中执行这个命令)
alter diskgroup TEST dismount;
----删除测试用临时dg (在ASM instance 中执行这个命令)
DROP DISKGROUP TEST;
8、到这里就可以吧候选盘加到生产的dg里了。
ALTER DISKGROUP DATA ADD DISK '/dev/raw/raw6';