ASM Administration
Add New Disk to ASM Group Roadmap
- In hardware\Vmware\VirtualBox
- Create disk.
- Set as Shareable.
- Add new disk to RAC Node 1.
- Attach new disk to other RAC nodes.
- Linux OS:
- Partition new disk.
- Update UDev configuration.
- Add new disk to ASM group.
VMware vs. Disk Skewing
- If VMware and you find a new disk skews the disk order even after UDev, bring it in via a new SCSCI controller number.
- For example, if on 2 2:2 use 1 1:1.
ASMCMD
Launch console: | grid> asmcmd |
Command Line: | grid> asmcmd <cmd> |
Example: | asmcmd ls GRID/_mgmtdb/* |
If you start ASMCMD with the -p the current directory shown as part of the prompt.
COMMAND | DESCRIPTION |
---|---|
cd | Change directory |
cp | Copy file |
du | Disk space used by a directory and its subdirectories |
exit | Exit the utility. |
find | Locate the path for specified filename. Ex: find / spfile* |
help | Displays command assistance |
ls | List the contents of a directory |
lsct | List info about ASM clients |
lsdg | List all disk groups and their attributes |
lsdsk | List all physical disks visible to ASM |
md_backup | Create a backup of the mounted diskgroups |
md_restore | Restore the diskgroups from a backup |
mkalias | Create an alias for a system generated filename |
mkdir | Create directory |
pwd | Print working directory (i.e. list current directory location) |
remap | Repair a range of blocks on a disk |
rm | Remove (i.e. delete) the specified files or directories |
rmalias | Remove (i.e. delete) the specified alias |
Disk Group
Create Group
Requires at least one disk to exist.
- Login as grid user.
- asmca &
- Select Create.
- Enter Disk Group Name: Ex: DATA
- Select disk(s) for group. Ex: [x] /dev/sdc1
- Select OK
Drop Group
- Login as grid user.
- asmca &
- Right-click on desired Disk Group.
- Select Drop.
- Confirm Drop: select Yes.
Disks
Disk group rebalance is triggered automatically on ADD, DROP and RESIZE disk operations and on moving a file between hot and cold regions. This means you may experience very slow performance so do this during off hours if possible.
Changing the Power option value can help shorten the time of a REBAL.
Add Disk
- Login as grid user.
- asmca &
- Expand Disk Groups
- Right-click on Disk Group name to add disk.
- Select Add Disks.
- Select disk(s) for group.
Ex1: [x] /dev/asm-disk04
Ex2: [x] /dev/sde1 - Select OK
Example Oracle Alert Log Entries
2021-10-14T14:12:22.536719-04:00
NOTE: ASMB process initiating disk discovery for grp 1 (reqid:10403972101718538279)
2021-10-14T14:12:23.889750-04:00
NOTE: Assigning number (1,1) to disk (/dev/asm-disk04)
SUCCESS: completed reconfiguration of group 1 (DATA)
Drop Disk
- Login as grid user.
- asmca &
- Right-click on desired Disk Group.
- Select Drop Disks.
- Select disk(s) for group.
Ex1: [x] /dev/asm-disk04
Ex2: [x] /dev/sde1 - Select OK
Example Oracle Alert Log Entries
2021-10-14T14:15:00.578112-04:00
NOTE: updating disk modes to 0x5 from 0x7 for disk 1 (DATA_0001) in group 1 (DATA): lflags 0x0
NOTE: disk 1 (DATA_0001) in group 1 (DATA) is offline for reads
NOTE: updating disk modes to 0x1 from 0x5 for disk 1 (DATA_0001) in group 1 (DATA): lflags 0x0
NOTE: disk 1 (DATA_0001) in group 1 (DATA) is offline for writes
SUCCESS: disk DATA_0001 (1.4042261182) dropped from diskgroup DATA
Add\Drop from Command Line
Add Disk
-- Show Current Disk Status
set linesize 240 COL group_number FORMAT 9999 COL name FORMAT a15 COL header_status FORMAT a25 COL path FORMAT a25 SELECT group_number group#, name, header_status, path FROM V$ASM_DISK; GROUP# NAME HEADER_STATUS PATH ---------- --------------- ------------------------- ------------------------- 1 DATA_0001 MEMBER /dev/sde1 2 FRA_0000 MEMBER /dev/sdc1 3 GRID_0000 MEMBER /dev/sdb1 1 DATA_0000 MEMBER /dev/sdd1 0 CANDIDATE /dev/sdf1
Note GROUP# is 0.
-- Add Disk to Group
grid> sqlplus / as sysasm ALTER DISKGROUP DATA ADD DISK '/dev/sdf1'; Diskgroup altered.
Replace blue items with values for your environment.
Drop Disk
-- Get Disk Name to Drop
set linesize 240
COL group_number FORMAT 9999
COL name FORMAT a15
COL header_status FORMAT a25
COL path FORMAT a25
SELECT group_number group#, name, header_status, path FROM V$ASM_DISK;
Example: DATA_0001
-- Drop Disk
grid> sqlplus / as sysasm ALTER DISKGROUP DATA DROP DISK 'DATA_0001'; Diskgroup altered.
Replace blue items with values for your environment.
-- Common Error: ORA-15054
ALTER DISKGROUP DATA DROP DISK '/dev/sdf1'; ERROR at line 1: ORA-15032: not all alterations performed ORA-15054: disk "/dev/sdf1" does not exist in diskgroup "DATA"
Solution: Specify disk NAME not PATH.
Display
ASM Driver (/dev/oracleasm)
As root: oracleasm statusChecking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes
ASM & RAC Database Instances
[oracle@rac1]$ ps -ef | grep pmon
oracle 3325 1 0 17:39 ? 00:00:00 asm_pmon_+ASM1 oracle 3813 1 0 17:40 ? 00:00:00 mdb_pmon_-MGMTDB oracle 5806 1 0 17:42 ? 00:00:00 ora_pmon_orcl1 oracle 6193 1 0 17:42 ? 00:00:00 apx_pmon_+APX1
SQL> SELECT instance_name,instance_number FROM gv$instance; INSTANCE_NAME INSTANCE_NUMBER ------------------------------------------- orcl2 2 orcl1 1
ASM Space Usage
asmcmd
grid> asmcmd -p lsdg
SQL
SET LINESIZE 145 SET PAGESIZE 9999 SET VERIFY off COLUMN group_name FORMAT a12 HEAD 'Disk Group|Name' COLUMN sector_size FORMAT 99,999 HEAD 'Sector|Size' COLUMN block_size FORMAT 99,999 HEAD 'Block|Size' COLUMN allocation_unit_size FORMAT 999,999,999 HEAD 'Allocation|Unit Size' COLUMN state FORMAT a11 HEAD 'State' COLUMN type FORMAT a6 HEAD 'Type' COLUMN total_mb FORMAT 999,999,999 HEAD 'Total Size (MB)' COLUMN used_mb FORMAT 999,999,999 HEAD 'Used Size (MB)' COLUMN pct_used FORMAT 999.99 HEAD 'Pct. Used' break on report on disk_group_name skip 1 compute sum label "Grand Total: " of total_mb used_mb on report SELECT name group_name , sector_size sector_size , block_size block_size , allocation_unit_size allocation_unit_size , state state , type type , total_mb total_mb , (total_mb - free_mb) used_mb , ROUND((1- (free_mb / total_mb))*100, 2) pct_used FROM v$asm_diskgroup ORDER BY name /
Show ASM Disks
COL name FORMAT a15 COL os_mb FORMAT 999,999,999,999 COL total_mb FORMAT 999,999,999,999 COL path FORMAT a25 SELECT name, disk_number, os_mb, total_mb, path, group_number FROM V$ASM_DISK_STAT ORDER BY name;
Cluster Services Status
[grid@rac1]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online
Disks, List
/usr/sbin/oracleasm listdisks VOL01
ls -l /dev/oracleasm/disks brw-rw----. 1 oracle dba 8, 17 Oct 11 08:23 VOL01
Flex ASM Usage
[grid@rac1]$ asmcmdASMCMD> showclustermode ASM cluster : Flex mode enabled ASMCMD> showclusterstate Normal
Instance
[oracle@rac1]$ srvctl status asm
ASM is running on rac2,rac1
Rebalance
Status
show parameter power NAME TYPE VALUE ---------------- ----------- ----- asm_power_limit integer 1 SELECT INST_ID, OPERATION, STATE, POWER, SOFAR, EST_WORK, EST_RATE,EST_MINUTES FROM GV$ASM_OPERATION WHERE GROUP_NUMBER=1; grid> asmcmd -p lsop Group_Name Pass State Power EST_WORK EST_RATE EST_TIME DATA COMPACT WAIT 1 0 0 0 DATA REBUILD DONE 1 0 0 0 DATA REBALANCE RUN 1 1794 17404 0
Alter Power
ALTER DISKGROUP DATA REBALANCE POWER 8;
Default power value is 1.
Resize Disk Session
Change values to match your environment.
1. Disable CRS auto-start. 2. Shutdown OS if required in your environment to resize hardware volume\disk. 3. Resize hardware. 4. Start Linux OS. 5. From Linux resize the disk. parted (parted) select /dev/sdc (parted) print (parted) resizepart (parted) End? [20.0GB]? 25GB (parted) print (parted) quit lsblk ... sdc1 8:33 0 23.3G 0 part 6. Start CRS and ensure there are no errors. 7. Login as grid and from sqlplus resize ASM disk. -- Get Disk Info SELECT name, disk_number, os_mb, total_mb, path, group_number FROM V$ASM_DISK_STAT ORDER BY name; ...DATA_0000 -- Resize SQL> ALTER DISKGROUP DATA RESIZE DISK DATA_0000 SIZE 23G; Diskgroup altered.
Virtualbox Disk Resizing Considerations
VBox Disk Resizing Fun Facts!
- In VBox disk Disk File Type for ASM must be Fixed.
This is because only Fixed disks can have the Shareable attrbute set. - However, in VBox only Dynamic disks can be resized.
- In Linux you can use the parted resizepart cmd to resize a partition.
Some have found cloning a VM with a Fixed disk will make it Dynamic on the clone (and thus resizable).
Solution for Testing ASM Resize in VBox
Phase I
- Dont create the Linux partition for the entire VBox allocated disk (at first).
Ex: If 200g allocated create a 100g partition. - Create ASM disk to match Linux partition size.
Phase II
- Use the Linux parted resizepart to full size of Vbox allocated disk. Ex: 200gb.
- To resize disk in ASM use:
ALTER DISKGROUP <disk_group> RESIZE DISK <disk> SIZE <nnnG>;
ALTER DISKGROUP data_1 RESIZE DISK data_001 SIZE 200G;
Start|Stop
Boot process controlled here: /etc/init.d/oracleasm
Start
[grid@db1 ~]$ srvctl start asm
ASM is running on db1
Stop
Local ASM
[grid@db1 ~]$ srvctl stop asm -stop [option abort -force]
Status
[grid@db1 ~]$ srvctl status asm
ASM is not running.
Remote (RAC Database instance1: rac1.)
[grid@db1 ~]$ srvctl stop asm -node rac1 -stop [option abort -force]
---
Sweep ASM
Only do this post deletion of a database!
rm -f +data/ORADB/CONTROLFILE/* rm -f +data/ORADB/DATAFILE/* rm -f +data/ORADB/ONLINELOG/* rm -f +data/ORADB/TEMPFILE/* rm -f +fra/ORADB/CONTROLFILE/* rm -f +fra/ORADB/ONLINELOG/*
Alternatively
cd +data rm -rf ORADB cd +fra rm -rf ORADB
Will not work if data in directories is being used. You might need to reboot node or at least bounce the cluster.
Show ASM Free Space
grid> asmcmd -p lsdg