Oracle11g RAC添加删除asmdisk磁盘组

Oracle11g RAC添加删除asmdisk磁盘组

𝓓𝓸𝓷 Lv6

一、查看asmdisk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[grid@server01 ~]$ asmcmd -p lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 4096 1048576 40960 37262 0 18631 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 20480 20383 0 20383 0 N FRA/
MOUNTED NORMAL N 512 4096 1048576 3072 2146 310 918 0 N OCR/
[grid@server01 ~]$


set linesize 200 pagesize 200
col path for a20
col name for a15
col failgroup for a15
select group_number,disk_number,failgroup,name,path,state,mount_status,total_mb,free_mb,os_mb from v$asm_disk;

GROUP_NUMBER DISK_NUMBER FAILGROUP NAME PATH STATE MOUNT_S TOTAL_MB FREE_MB OS_MB
------------ ----------- --------------- --------------- -------------------- -------- ------- ---------- ---------- ----------
3 2 OCR_0002 OCR_0002 /dev/asm-diskb NORMAL CACHED 1024 717 1024
1 1 DATA_0001 DATA_0001 /dev/asm-diskh NORMAL CACHED 20480 18631 20480
2 1 FRA_0001 FRA_0001 /dev/asm-diskf NORMAL CACHED 10240 10192 10240
1 0 DATA_0000 DATA_0000 /dev/asm-diskg NORMAL CACHED 20480 18631 20480
2 0 FRA_0000 FRA_0000 /dev/asm-diske NORMAL CACHED 10240 10191 10240
3 1 OCR_0001 OCR_0001 /dev/asm-diskd NORMAL CACHED 1024 715 1024
3 0 OCR_0000 OCR_0000 /dev/asm-diskc NORMAL CACHED 1024 714 1024

7 rows selected.


[grid@server01 ~]$ ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Aug 2 20:34 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Aug 2 20:34 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Aug 2 20:34 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Aug 2 20:34 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Aug 2 19:00 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Aug 2 20:34 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Aug 2 20:34 /dev/asm-diskh

[grid@server01 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 300M 0 part /boot
└─sda2 8:2 0 49.7G 0 part
├─centos-root 253:0 0 33.7G 0 lvm /
└─centos-swap 253:1 0 16G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
sde 8:64 0 10G 0 disk
sdf 8:80 0 10G 0 disk
sdg 8:96 0 20G 0 disk
sdh 8:112 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom

二、查看udev配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[grid@server01 ~]$ more /etc/udev/rules.d/99-oracle-asmdevices.rules 
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc00000033dc2c470a9e5610dec", RUN+="/bin/sh -c 'mknod /dev/asm-diskb b $major $minor; chown grid:asmadmin /dev/asm-diskb; chmod 0660 /dev/asm-diskb '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc000000a9ecea8b54936dbd478", RUN+="/bin/sh -c 'mknod /dev/asm-diskc b $major $minor; chown grid:asmadmin /dev/asm-diskc; chmod 0660 /dev/asm-diskc '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc000000eca672bb88b43450a0b", RUN+="/bin/sh -c 'mknod /dev/asm-diskd b $major $minor; chown grid:asmadmin /dev/asm-diskd; chmod 0660 /dev/asm-diskd '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc000000ebb8a1bcf710e51b166", RUN+="/bin/sh -c 'mknod /dev/asm-diske b $major $minor; chown grid:asmadmin /dev/asm-diske; chmod 0660 /dev/asm-diske '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc000000b9339c90beae4d4f795", RUN+="/bin/sh -c 'mknod /dev/asm-diskf b $major $minor; chown grid:asmadmin /dev/asm-diskf; chmod 0660 /dev/asm-diskf '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc000000249c91ecfa63b64b5bd", RUN+="/bin/sh -c 'mknod /dev/asm-diskg b $major $minor; chown grid:asmadmin /dev/asm-diskg; chmod 0660 /dev/asm-diskg '"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36589cfc0000000d0b27d1f772759c706", RUN+="/bin/sh -c 'mknod /dev/asm-diskh b $major $minor; chown grid:asmadmin /dev/asm-diskh; chmod 0660 /dev/asm-diskh '"
[grid@server01 ~]$

三、查看归档日志存放路径

1
2
3
4
5
6
7
8
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA
Oldest online log sequence 27
Next log sequence to archive 28
Current log sequence 28

四、修改归档日志

1
2
3
4
5
6
7
8
9
10
---节点1和节点2都要执行或关闭其中一个节点,然后在另一个节点执行
SQL> alter system set log_archive_dest_1='location=+data' scope=spfile;

SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +DATA
Oldest online log sequence 31
Next log sequence to archive 32
Current log sequence 32

五、删除FRA磁盘组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
SQL> select name,type,state,total_mb,voting_files from v$asm_diskgroup;

NAME TYPE STATE TOTAL_MB V
------------------------------ ------ ----------- ---------- -
DATA NORMAL MOUNTED 40960 N
OCR NORMAL MOUNTED 3072 N
FRA EXTERN MOUNTED 20480 N


SQL> alter diskgroup fra dismount;

Diskgroup altered.

SQL> select name,type,state,total_mb,voting_files from v$asm_diskgroup;

NAME TYPE STATE TOTAL_MB V
------------------------------ ------ ----------- ---------- -
DATA NORMAL MOUNTED 40960 N
OCR NORMAL MOUNTED 3072 N
FRA DISMOUNTED 0 N

SQL> alter diskgroup fra mount;

Diskgroup altered.

SQL> drop diskgroup fra;
drop diskgroup fra
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15053: diskgroup "FRA" contains existing files


SQL> drop diskgroup fra including contents;
drop diskgroup fra including contents
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15073: diskgroup FRA is mounted by another ASM instance

dismount另一个节点的fra磁盘组:
SQL> alter diskgroup fra dismount;

Diskgroup altered.

SQL> drop diskgroup fra including contents;

Diskgroup dropped

SQL> select name,type,state,total_mb,voting_files from v$asm_diskgroup;

NAME TYPE STATE TOTAL_MB V
------------------------------ ------ ----------- ---------- -
DATA NORMAL MOUNTED 40960 N
OCR NORMAL MOUNTED 3072 N


--查看占用磁盘组的实例名
SQL> select instance_name,db_name,status from GV$ASM_CLIENT where group_number = (select group_number from v$asm_diskgroup where name='FRA');

[grid@server01 ~]$ asmcmd
ASMCMD> lsof
DB_Name Instance_Name Path
+ASM +ASM1 +ocr.255.4294967295
mydb mydb1 +data/mydb/control01.ctl
mydb mydb1 +data/mydb/control02.ctl
mydb mydb1 +data/mydb/redo01.log
mydb mydb1 +data/mydb/redo02.log
mydb mydb1 +data/mydb/redo03.log
mydb mydb1 +data/mydb/redo04.log
mydb mydb1 +data/mydb/sysaux01.dbf
mydb mydb1 +data/mydb/system01.dbf
mydb mydb1 +data/mydb/temp01.dbf
mydb mydb1 +data/mydb/undotbs01.dbf
mydb mydb1 +data/mydb/undotbs02.dbf
mydb mydb1 +data/mydb/users01.dbf

六、添加asmdisk磁盘

1
SQL> alter diskgroup DATA add disk  '/dev/asm-diskf' name DATA_0002, '/dev/asm-diske' name DATA_0003 rebalance power 8;

七、查看进度

1
SQL> select * from v$asm_operation;

八、验证磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

[grid@server01 ~]$ asmcmd -p lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL Y 512 4096 1048576 61440 57617 1708 27954 0 N DATA/
MOUNTED NORMAL N 512 4096 1048576 3072 2146 310 918 0 N OCR/


set linesize 200 pagesize 200
col path for a20
col name for a15
col failgroup for a15
select group_number,disk_number,failgroup,name,path,state,mount_status,total_mb,free_mb,os_mb from v$asm_disk;

GROUP_NUMBER DISK_NUMBER FAILGROUP NAME PATH STATE MOUNT_S TOTAL_MB FREE_MB OS_MB
------------ ----------- --------------- --------------- -------------------- -------- ------- ---------- ---------- ----------
1 1 DATA_0001 DATA_0001 /dev/asm-diskh NORMAL CACHED 20480 19240 20480
1 2 DATA_0002 DATA_0002 /dev/asm-diskf NORMAL CACHED 10240 9517 10240
2 0 OCR_0000 OCR_0000 /dev/asm-diskc NORMAL CACHED 1024 714 1024
1 0 DATA_0000 DATA_0000 /dev/asm-diskg NORMAL CACHED 20480 19239 20480
2 2 OCR_0002 OCR_0002 /dev/asm-diskb NORMAL CACHED 1024 717 1024
1 3 DATA_0003 DATA_0003 /dev/asm-diske NORMAL CACHED 10240 9519 10240
2 1 OCR_0001 OCR_0001 /dev/asm-diskd NORMAL CACHED 1024 715 1024

7 rows selected.

九、删除srvctl相应的资源(grid用户执行)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
---任意节点执行:
$ srvctl disable diskgroup -g FRA
$srvctl remove diskgroup -g FRA -f


删除磁盘组后,在crs资源里还是可以看到FRA磁盘信息,所以需要删除crs相关信息:
[grid@server01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.FRA.dg
ONLINE OFFLINE server01
ONLINE OFFLINE server02
ora.LISTENER.lsnr
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.OCR.dg
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.asm
ONLINE ONLINE server01 Started
ONLINE ONLINE server02 Started
ora.gsd
OFFLINE OFFLINE server01
OFFLINE OFFLINE server02
ora.net1.network
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.ons
ONLINE ONLINE server01
ONLINE ONLINE server02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server02
ora.cvu
1 ONLINE ONLINE server02
ora.oc4j
1 ONLINE ONLINE server02
ora.scan1.vip
1 ONLINE ONLINE server02
ora.mydb.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE OFFLINE Instance Shutdown
ora.server01.vip
1 ONLINE ONLINE server01
ora.server02.vip
1 ONLINE ONLINE server02



并且在启动DB的时候无法启动,会报以下错误,db资源状态显示offline:
grid@server01 ~]$ srvctl start database -d mydb
PRCR-1079 : 无法启动资源 ora.mydb.db
CRS-5017: The resource action "ora.FRA.dg start" encountered the following error:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "FRA" cannot be mounted
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "FRA"
. For details refer to "(:CLSN00107:)" in "/home/app/11.2.0/grid/log/server02/agent/crsd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.FRA.dg' on 'server02' failed
CRS-2632: There are no more servers to try to place resource 'ora.mydb.db' on that would satisfy its placement policy
CRS-5017: The resource action "ora.FRA.dg start" encountered the following error:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "FRA" cannot be mounted
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "FRA"
. For details refer to "(:CLSN00107:)" in "/home/app/11.2.0/grid/log/server01/agent/crsd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.FRA.dg' on 'server01' failed

十、删除磁盘组依赖

1.查看crs资源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[grid@server01 ~]$ crsctl status resource ora.mydb.db -f
NAME=ora.mydb.db
TYPE=ora.database.type
STATE=OFFLINE
TARGET=ONLINE
ACL=owner:oracle:rwx,pgrp:oinstall:r--,other::r--,group:dba:r-x,group:oper:r-x,user:grid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=2
CARDINALITY_ID=0
CHECK_INTERVAL=1
CHECK_TIMEOUT=30
CLUSTER_DATABASE=true
CREATION_SEED=71
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=mydb
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME= %GEN_USR_ORA_INST_NAME%) ELEMENT(DATABASE_TYPE= %DATABASE_TYPE%)
DEGREE=1
DESCRIPTION=Oracle Database resource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=60
FAILURE_THRESHOLD=1
GEN_AUDIT_FILE_DEST=/home/app/oracle/admin/mydb/adump
GEN_START_OPTIONS=
GEN_START_OPTIONS@SERVERNAME(server01)=open
GEN_START_OPTIONS@SERVERNAME(server02)=open
GEN_USR_ORA_INST_NAME=
GEN_USR_ORA_INST_NAME@SERVERNAME(server01)=mydb1
GEN_USR_ORA_INST_NAME@SERVERNAME(server02)=mydb2
HOSTING_MEMBERS=
ID=ora.mydb.db
INSTANCE_FAILOVER=0
LOAD=1
LOGGING_LEVEL=1
MANAGEMENT_POLICY=AUTOMATIC
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
ONLINE_RELOCATION_TIMEOUT=0
ORACLE_HOME=/home/app/oracle/product/11.2.0/db_1
ORACLE_HOME_OLD=
PLACEMENT=restricted
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=2
ROLE=PRIMARY
SCRIPT_TIMEOUT=60
SERVER_POOLS=ora.mydb
SPFILE=+DATA/mydb/spfilemydb.ora
START_DEPENDENCIES=hard(ora.DATA.dg,ora.FRA.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) pullup(ora.DATA.dg,ora.FRA.dg)
START_TIMEOUT=600
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA.dg)
STOP_TIMEOUT=600
TYPE_VERSION=3.2
UPTIME_THRESHOLD=1h
USR_ORA_DB_NAME=mydb
USR_ORA_DOMAIN=
USR_ORA_ENV=
USR_ORA_FLAGS=
USR_ORA_INST_NAME=
USR_ORA_INST_NAME@SERVERNAME(server01)=mydb1
USR_ORA_INST_NAME@SERVERNAME(server02)=mydb2
USR_ORA_OPEN_MODE=open
USR_ORA_OPI=false
USR_ORA_STOP_MODE=immediate
VERSION=11.2.0.4.0

2.确认当前依赖关系
1
2
3
[grid@server01 ~]$ crsctl status resource ora.mydb.db -f|grep DEPENDENCIES
START_DEPENDENCIES=hard(ora.DATA.dg,ora.FRA.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) pullup(ora.DATA.dg,ora.FRA.dg)
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA.dg)
3.更新依赖信息
1
2
3
4
5
6
---修改启动依赖
[root@server01 ~]# /home/app/11.2.0/grid/bin/srvctl modify database -d mydb -a "DATA"

[root@server01 ~]# /home/app/11.2.0/grid/bin/crsctl status resource ora.mydb.db -f|grep DEPENDENCIES
START_DEPENDENCIES=hard(ora.DATA.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) pullup(ora.DATA.dg)
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg)
4.验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[grid@server01 ~]$ srvctl start database -d mydb
[grid@server01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.LISTENER.lsnr
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.OCR.dg
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.asm
ONLINE ONLINE server01 Started
ONLINE ONLINE server02 Started
ora.gsd
OFFLINE OFFLINE server01
OFFLINE OFFLINE server02
ora.net1.network
ONLINE ONLINE server01
ONLINE ONLINE server02
ora.ons
ONLINE ONLINE server01
ONLINE ONLINE server02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server02
ora.cvu
1 ONLINE ONLINE server02
ora.oc4j
1 ONLINE ONLINE server02
ora.scan1.vip
1 ONLINE ONLINE server02
ora.mydb.db
1 ONLINE ONLINE server01 Open
2 ONLINE ONLINE server02 Open
ora.server01.vip
1 ONLINE ONLINE server01
ora.server02.vip
1 ONLINE ONLINE server02

  • Title: Oracle11g RAC添加删除asmdisk磁盘组
  • Author: 𝓓𝓸𝓷
  • Created at : 2025-06-25 18:39:57
  • Updated at : 2025-08-06 18:20:56
  • Link: https://www.zhangdong.me/oracle-rac-drop-asm-diskgroup.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论