Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 14

oracle@oel61 ~]$ asmcmd -p ASMCMD [+] > lsdsk Path /dev/oracleasm/disks/DISK1

/dev/oracleasm/disks/DISK2 /dev/oracleasm/disks/DISK3

oracle@rac1 ~]$ asmcmd


ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB
Offline_disks Name
MOUNTED EXTERN N 512 4096 1048576 546664 206178 0 206178 0 DATA/
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL> SELECT name, free_mb, total_mb, free_mb/total_mb*100 % FROM v$asm_diskgroup;
NAME FREE_MB TOTAL_MB %
- - DATA 206178 546664 37.7156718

. chk_asm_disk: Status and usage of ASM disks


----- script start below this line ---------#!/bin/csh
# chk_asm_disk
# displays one row for every disk discovered by the ASM instance, including disks which
are not part of any disk group
# source ~/.cshrc
10asm
clear
echo
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 50000 lines 130 echo on head on flush on veri on feed on
col PATH form a25
col GB_read for 99999
col GB_written for 9999
select PATH,
mount_status,
state,
TOTAL_MB,
FREE_MB,
mount_date,
bytes_read/1024/1024/1024 GB_read,
BYTES_WRITTEN/1024/1024/1024 GB_written
from v$asm_disk_stat
order by mount_status;
exit
EOF
echo
exit
# eof chk_asm_disk
----- script finish before this line ---------Output:
PATH MOUNT_S STATE TOTAL_MB FREE_MB MOUNT_DAT GB_READ GB_WRITTEN
------------------------- ------- -------- ---------- ---------- --------- ---------------/dev/raw/ASM4 CACHED NORMAL 118683 70107 11-JAN-07 6371 33
/dev/raw/ASM9 CACHED NORMAL 118683 70106 11-JAN-07 5919 37
/dev/raw/ASM8 CACHED NORMAL 118683 70112 11-JAN-07 5619 31
/dev/raw/ASM1 CACHED NORMAL 118683 70107 11-JAN-07 5874 31
/dev/raw/ASM2 CACHED NORMAL 118683 98958 11-JAN-07 0 28

/dev/raw/ASM3 CACHED NORMAL 118683 70106 11-JAN-07 5453 30


/dev/raw/ASM10 CACHED NORMAL 118683 98956 11-JAN-07 0 28
/dev/raw/ASM5 CACHED NORMAL 118683 70111 11-JAN-07 5566 34
/dev/raw/ASM6 CACHED NORMAL 118683 70112 11-JAN-07 6298 30
/dev/raw/ASM7 CACHED NORMAL 118683 70109 11-JAN-07 5908 31
/dev/raw/spfile+ASM.ora CLOSED NORMAL 149 0
/dev/raw/ocr.dbf CLOSED NORMAL 149 0
/dev/raw/votingdisk CLOSED NORMAL 149 0
13 rows selected.
================================================================

2. chk_asm_client: Clients connected to the ASM Instance


----- script start below this line ---------#!/bin/csh
# chk_asm_client
# Check disk groups assigned devices
# source ~/.cshrc
10asm
clear
echo
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 50000 lines 100 echo on head on flush on veri on feed on
col INSTANCE_NAME form a20
col SOFTWARE_VERSION form a20
col COMPATIBLE_VERSION form a20
select * from v$asm_client;
exit
EOF
echo
echo
exit
# eof chk_asm_client
----- script finish before this line --------Output:
GROUP_NUMBER INSTANCE_NAME DB_NAME STATUS SOFTWARE_VERSION COMPATIBLE_VERSION
------------ -------------------- -------- ------------ --------------------------------------1 racdbtst1 racdbtst CONNECTED 10.2.0.1.0 10.2.0.1.0
1 row selected.
================================================================
. chk_asm_diskgroup : This script display % free space on each diskgroup. Heading were
turned off to use the output to feed alert scripts.
----- script start below this line ----------#!/bin/csh
# chk_asm_diskgroup
# displays one row for every disk group discovered by the ASM instance
# source ~/.cshrc
10asm
clear
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set head off flush on veri on feed off
select

round(100*FREE_MB/TOTAL_MB) ||','|| NAME


from v$asm_diskgroup
/
exit
EOF
echo
echo
exit
# eof chk_asm_diskgroup
----- script finish before this line ---------Output:
83,CRMARCHDG
59,CRMDATADG
================================================================
4. chk_asm_file : Provide Information about ASM files
----- script start below this line ---------#!/bin/csh
# chk_asm_file
# displays one row for every disk group discovered by the ASM instance
# source ~/.cshrc
10asm
clear
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 100 lines 130 echo on head on flush on veri on feed on
col
col
col
col

TYPE form a15


FILE_NUMBER form 9999 head FILE_NUM
GROUP_NUMBER form 9999 head GR_NUM
GB for 9999.99

select GROUP_NUMBER ,
FILE_NUMBER ,
BYTES/1024/1024/1024 GB ,
TYPE ,
STRIPED ,
MODIFICATION_DATE
from v$asm_file
where TYPE != 'ARCHIVELOG'
/
exit
EOF
echo
exit
# eof chk_asm_file
----- script finish before this line ---------Output:
GR_NUM FILE_NUM GB TYPE STRIPE MODIFICAT
------ -------- -------- --------------- ------ --------1 256 .00 PARAMETERFILE COARSE 22-JAN-07
1 643 .02 CONTROLFILE FINE 22-JAN-07
1 644 .02 CONTROLFILE FINE 22-JAN-07
3 256 .02 CONTROLFILE FINE 08-MAY-06
3 257 3.32 DATAFILE COARSE 21-JAN-07
3 258 29.30 DATAFILE COARSE 22-JAN-07
3 259 6.40 DATAFILE COARSE 21-JAN-07
3 260 29.30 DATAFILE COARSE 22-JAN-07
3 261 6.73 DATAFILE COARSE 22-JAN-07
3 262 32.00 TEMPFILE COARSE 11-JAN-07
3 263 20.00 DATAFILE COARSE 22-JAN-07
3 264 12.95 DATAFILE COARSE 21-JAN-07

3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3

265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292

29.30 DATAFILE COARSE 22-JAN-07


29.30 DATAFILE COARSE 22-JAN-07
.78 DATAFILE COARSE 21-JAN-07
.02 CHANGETRACKING COARSE 22-JAN-07
.02 CONTROLFILE FINE 11-JAN-07
.02 CONTROLFILE FINE 11-JAN-07
.02 CONTROLFILE FINE 11-JAN-07
.10 DATAFILE COARSE 21-JAN-07
9.77 DATAFILE COARSE 21-JAN-07
9.77 DATAFILE COARSE 21-JAN-07
9.77 DATAFILE COARSE 21-JAN-07
10.77 DATAFILE COARSE 21-JAN-07
2.00 DATAFILE COARSE 21-JAN-07
1.00 DATAFILE COARSE 21-JAN-07
27.00 DATAFILE COARSE 22-JAN-07
26.00 DATAFILE COARSE 22-JAN-07
26.00 DATAFILE COARSE 22-JAN-07
13.00 DATAFILE COARSE 21-JAN-07
14.00 DATAFILE COARSE 21-JAN-07
15.00 DATAFILE COARSE 21-JAN-07
1.95 ONLINELOG FINE 21-JAN-07
1.95 ONLINELOG FINE 22-JAN-07
1.95 ONLINELOG FINE 21-JAN-07
1.95 ONLINELOG FINE 22-JAN-07
1.95 ONLINELOG FINE 21-JAN-07
1.95 ONLINELOG FINE 22-JAN-07
1.95 ONLINELOG FINE 22-JAN-07
1.95 ONLINELOG FINE 22-JAN-07

40 rows selected.
================================================================
5. chk_asm_file2 : same as chk_asm_file but provide more information
----- script start below this line ----------#!/bin/csh
# chk_asm_file2
# displays one row for every disk group discovered by the ASM instance
# source ~/.cshrc
10asm
clear
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 100 lines 130 echo on head on flush on veri on feed on
col
col
col
col

TYPE form a15


FILE_NUMBER form 9999 head FILE_NUM
GROUP_NUMBER form 9999 head GR_NUM
GB for 9999.99

select GROUP_NUMBER ,
FILE_NUMBER ,
COMPOUND_INDEX ,
INCARNATION ,
BLOCK_SIZE ,
BLOCKS ,
BYTES/1024/1024/1024 GB ,
TYPE ,
STRIPED ,
CREATION_DATE ,
MODIFICATION_DATE
from v$asm_file
where TYPE != 'ARCHIVELOG'
/
exit
EOF
echo
exit

# eof chk_asm_file2
----- script finish before this line ---------Output:
GR_NUM FILE_NUM COMPOUND_INDEX INCARNATION BLOCK_SIZE BLOCKS GB TYPE STRIPE CREATION_
MODIFICAT
------ -------- -------------- ----------- ---------- ---------- -------- -------------------- --------- --------1 256 16777472 589938807 512 13 .00 PARAMETERFILE COARSE 08-MAY-06 22-JAN-07
1 643 16777859 612467025 16384 1517 .02 CONTROLFILE FINE 21-JAN-07 22-JAN-07
1 644 16777860 612467037 16384 1517 .02 CONTROLFILE FINE 21-JAN-07 22-JAN-07
3 256 50331904 581368661 16384 1515 .02 CONTROLFILE FINE 02-FEB-06 08-MAY-06
3 257 50331905 602197139 8192 435201 3.32 DATAFILE COARSE 26-SEP-06 21-JAN-07
3 258 50331906 592234419 8192 3840001 29.30 DATAFILE COARSE 04-JUN-06 22-JAN-07
3 259 50331907 581368675 8192 838401 6.40 DATAFILE COARSE 02-FEB-06 21-JAN-07
3 260 50331908 581368683 8192 3840001 29.30 DATAFILE COARSE 02-FEB-06 22-JAN-07
3 261 50331909 581368685 8192 882769 6.73 DATAFILE COARSE 02-FEB-06 22-JAN-07
3 262 50331910 581368687 8192 4194177 32.00 TEMPFILE COARSE 02-FEB-06 11-JAN-07
3 263 50331911 581368691 8192 2621441 20.00 DATAFILE COARSE 02-FEB-06 22-JAN-07
3 264 50331912 581368733 8192 1697793 12.95 DATAFILE COARSE 02-FEB-06 21-JAN-07
3 265 50331913 581368733 8192 3840001 29.30 DATAFILE COARSE 02-FEB-06 22-JAN-07
3 266 50331914 592234263 8192 3840001 29.30 DATAFILE COARSE 04-JUN-06 22-JAN-07
3 267 50331915 590552237 8192 102401 .78 DATAFILE COARSE 16-MAY-06 21-JAN-07
3 268 50331916 581864701 512 43137 .02 CHANGETRACKING COARSE 08-FEB-06 22-JAN-07
3 269 50331917 589938393 16384 1517 .02 CONTROLFILE FINE 08-MAY-06 11-JAN-07
3 270 50331918 589938393 16384 1517 .02 CONTROLFILE FINE 08-MAY-06 11-JAN-07
3 271 50331919 589938393 16384 1517 .02 CONTROLFILE FINE 08-MAY-06 11-JAN-07
3 272 50331920 590541187 16384 6401 .10 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 273 50331921 590541193 16384 640001 9.77 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 274 50331922 590541287 16384 640001 9.77 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 275 50331923 590541383 16384 640001 9.77 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 276 50331924 590541477 16384 705537 10.77 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 277 50331925 590541577 16384 131073 2.00 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 278 50331926 590541591 16384 65537 1.00 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 279 50331927 590541663 8192 3538945 27.00 DATAFILE COARSE 15-MAY-06 22-JAN-07
3 280 50331928 590541677 8192 3407873 26.00 DATAFILE COARSE 15-MAY-06 22-JAN-07
3 281 50331929 590541691 8192 3407873 26.00 DATAFILE COARSE 15-MAY-06 22-JAN-07
3 282 50331930 590541707 8192 1703937 13.00 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 283 50331931 590541723 8192 1835009 14.00 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 284 50331932 590541737 8192 1966081 15.00 DATAFILE COARSE 15-MAY-06 21-JAN-07
3 285 50331933 590541871 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 21-JAN-07
3 286 50331934 590541895 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 22-JAN-07
3 287 50331935 590541921 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 21-JAN-07
3 288 50331936 590541943 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 22-JAN-07
3 289 50331937 590541969 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 21-JAN-07
3 290 50331938 590541989 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 22-JAN-07
3 291 50331939 590542011 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 22-JAN-07
3 292 50331940 590542031 512 4096001 1.95 ONLINELOG FINE 15-MAY-06 22-JAN-07
40 rows selected.
================================================================
6. chk_asm_file3: List files and total used space

----- script start below this line ----------#!/bin/csh


# chk_asm_files
# displays one row for every disk group discovered by the ASM instance
# source ~/.cshrc
10asm

clear
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 50000 lines 130 echo on head on flush on veri on feed on

col Disk_Group form a15


col File_Type form a30
col MB form '999,999,999'
select
a.NAME Disk_Group ,
b.TYPE File_Type ,
b.BYTES/1024/1024 MB
from v$asm_diskgroup a,
v$asm_file b
where a.GROUP_NUMBER=b.GROUP_NUMBER
order by 1,2
/
exit
EOF
echo
exit
# eof chk_asm_file3
----- script finish before this line ----------

Output:

DISK_GROUP FILE_TYPE MB
--------------- ------------------------------ -----------CRMARCHDG ARCHIVELOG 1,570
CRMARCHDG ARCHIVELOG 1,998
CRMARCHDG ARCHIVELOG 1,996
CRMARCHDG ARCHIVELOG 1,620
CRMARCHDG ARCHIVELOG 8

CRMARCHDG ARCHIVELOG 205


CRMARCHDG ARCHIVELOG 76
CRMARCHDG ARCHIVELOG 0
CRMARCHDG ARCHIVELOG 370
CRMARCHDG ARCHIVELOG 1,221
CRMARCHDG ARCHIVELOG 774
CRMARCHDG ARCHIVELOG 991
CRMARCHDG ARCHIVELOG 1,994
CRMARCHDG ARCHIVELOG 1,995
CRMARCHDG ARCHIVELOG 2,000
CRMARCHDG ARCHIVELOG 1,995
CRMARCHDG ARCHIVELOG 1,995
CRMARCHDG ARCHIVELOG 1,993
CRMARCHDG ARCHIVELOG 1,996
CRMARCHDG ARCHIVELOG 1,998
CRMARCHDG ARCHIVELOG 1,999
CRMARCHDG ARCHIVELOG 1,993
CRMARCHDG ARCHIVELOG 1,994
CRMARCHDG ARCHIVELOG 1,996
CRMARCHDG ARCHIVELOG 1,999
CRMARCHDG ARCHIVELOG 0
CRMARCHDG ARCHIVELOG 398
CRMARCHDG ARCHIVELOG 1,999
CRMARCHDG ARCHIVELOG 19
CRMARCHDG ARCHIVELOG 66
CRMARCHDG ARCHIVELOG 0
CRMARCHDG ARCHIVELOG 1,994
CRMARCHDG ARCHIVELOG 1,998
CRMARCHDG CONTROLFILE 24
CRMARCHDG CONTROLFILE 24
CRMARCHDG PARAMETERFILE 0
CRMDATADG CHANGETRACKING 21
CRMDATADG CONTROLFILE 24
CRMDATADG CONTROLFILE 24
CRMDATADG CONTROLFILE 24

CRMDATADG CONTROLFILE 24
CRMDATADG DATAFILE 3,400
CRMDATADG DATAFILE 30,000
CRMDATADG DATAFILE 15,360
CRMDATADG DATAFILE 14,336
CRMDATADG DATAFILE 13,312
CRMDATADG DATAFILE 26,624
CRMDATADG DATAFILE 26,624
CRMDATADG DATAFILE 27,648
CRMDATADG DATAFILE 1,024
CRMDATADG DATAFILE 2,048
CRMDATADG DATAFILE 6,550
CRMDATADG DATAFILE 30,000
CRMDATADG DATAFILE 6,919
CRMDATADG DATAFILE 20,480
CRMDATADG DATAFILE 13,264
CRMDATADG DATAFILE 30,000
CRMDATADG DATAFILE 30,000
CRMDATADG DATAFILE 800
CRMDATADG DATAFILE 100
CRMDATADG DATAFILE 10,000
CRMDATADG DATAFILE 10,000
CRMDATADG DATAFILE 10,000
CRMDATADG DATAFILE 11,024
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG ONLINELOG 2,000
CRMDATADG TEMPFILE 32,767

73 rows selected.
================================================================
7. chk_asm_grp_stat: Display configuration and statistics of ASM Disk Groups

----- script start below this line ----------#!/bin/csh


# chk_asm_grp_stat
# displays one row for every disk group discovered by the ASM instance
10asm
clear
echo
set asm_sid=`ps -ef |grep pmon|grep +ASM|awk '{print$8}'| cut -d"_" -f3`
setenv ORACLE_SID $asm_sid
sqlplus -s '/ as sysdba' << EOF
set pages 50000 lines 130 echo on head on flush on veri on feed on
col
col
col
col
col
col
col
col
col
col
col
col
col
col

NAME for a10


SEC_SZ for 999
BLK_SZ for 9999
STR_MB for 99
GROUP_NUMBER for 99 head GRP
COMPATIBILITY for a10
DB_COMPAT for a10
STATE for a7
TYPE for a7
TOT_GB for 999.9
USABLE_GB for 999.9
OFF_DSK for 999
UNBLC for a5
DB_COMPAT for a10

select GROUP_NUMBER ,
NAME ,
SECTOR_SIZE SEC_SZ ,
BLOCK_SIZE BLK_SZ ,
ALLOCATION_UNIT_SIZE /1024/1024 STR_MB,
STATE ,
TYPE ,
TOTAL_MB /1024 TOT_GB,
USABLE_FILE_MB /1024 USABLE_GB ,
OFFLINE_DISKS OFF_DSK ,
UNBALANCED UNBLC ,
DATABASE_COMPATIBILITY DB_COMPAT
from v$asm_diskgroup_stat
/
exit
EOF
echo
exit
# eof chk_asm_grp_stat
----- script finish before this line ---------Output:
GRP NAME SEC_SZ BLK_SZ STR_MB STATE TYPE TOT_GB USABLE_GB OFF_DSK UNBLC DB_COMPAT
--- ---------- ------ ------ ------ ------- ------- ------ --------- ------- -------------1 CRMARCHDG 512 4096 1 MOUNTED EXTERN 231.8 189.4 0 N 10.1.0.0.0
3 CRMDATADG 512 4096 1 MOUNTED EXTERN 927.2 547.7 0 N 10.1.0.0.0
2 rows selected.
================================================================

bash$ dfdg GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE TOTAL_MB


FREE_MB FREE_PCT ------------ ------------------------------ ----------- ----------------------------- ----------- ---------- ---------- -------- 1 DATA 1024 4096 1048576
MOUNTED 1099383 212474 19% 2 FLASH 1024 4096 1048576 MOUNTED 317440 41522 13% 3 REDO 1024

4096 1048576 MOUNTED 51200 39025 76% Use -d key to display usage by disks Use -o key to
display asm operations in progress (disk rebalancing) Use -f to list files and
directories of the disk group

bash$ dfdg -d GROUP_NUMBER NAME PATH STATE OS_MB TOTAL_MB FREE_MB FREE_PCT ----------------------------------------- --------------------------------------------------------- ---------- ---------- ---------- -------- 1 DATA_0000 /dev/rdisk/disk48 NORMAL
824536 824536 22240 3% 1 DATA_0001 /dev/rdisk/disk49 NORMAL 824536 824536 22208 3% 1
DATA_0002 /dev/rdisk/disk50 NORMAL 824536 824536 22184 3% 1 DATA_0003 /dev/rdisk/disk51
NORMAL 824536 824536 22176 3% 1 DATA_0004 /dev/rdisk/disk52 NORMAL 824536 824536 22184 3%
2 FLASH_0000 /dev/rdisk/disk115 NORMAL 1923918 1923912 154176 8% 2 FLASH_0001
/dev/rdisk/disk90 NORMAL 1923918 1923912 154136 8% 2 FLASH_0002 /dev/rdisk/disk84 NORMAL
1923918 1923912 154104 8% 3 REDO_0000 /dev/rdisk/disk61 NORMAL 30720 30720 3619 12% 9
rows selected.
#!/usr/local/bin/bash
#
#
#
#
#
#
#
#
#
#
#
#
#

-----------------------------------------------------------------------------FUNCTION
Displays ASM diskgroup information, space usage. Displays usage by DISKS.
Displays ongoing operations and list of files on diskgroup.
NOTES
Developed for 10g Oracle Version. The entry must be in the /etc/oratab
for ASM instance
CREATED
Aychin Gasimov 03/2011 aychin.gasimov@gmail.com
MODIFIED
Xavier Picamal 08/2012
Added -r key
------------------------------------------------------------------------------

TMP1=`grep -E '^\+' /etc/oratab`


if [ -z $TMP1 ]; then
echo "Please check /etc/oratab file, there is no entry for ASM instance."
exit 1
fi
ORACLE_HOME=`echo ${TMP1//\:/ } | awk {'print $2'}`
ORACLE_SID=`echo ${TMP1//\:/ } | awk {'print $1'}`
cd $ORACLE_HOME/bin
dispinfo () {
echo "Use -d key to display usage by disks"
echo "Use -o key to display asm operations in progress (disk rebalancing)"
echo "Use -r key to display min, max and avergage free megabytes by diskgroups"
echo "Use -f to list files and directories of the disk group"
}
case "$1" in
-d)
sqlplus -S '/ as sysdba' << EOF
set linesize 200
set pagesize 1000
col free_pct format a8
col path format a50
select
group_number,name,path,state,total_mb,free_mb,round(free_mb*100/total_mb)||'%' free_pct
from v\$asm_disk where header_status='MEMBER';
EOF
dispinfo;
;;

-o)

sqlplus -S '/ as sysdba' << EOF


set linesize 200
select * from v\$asm_operation;

EOF

;;

-f)

if [ -e $2 ]; then
echo "Please specify diskgroup name after -f key"
else
sqlplus -S '/ as sysdba' << EOF
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss';
set linesize 200
set pagesize 50000
variable pindx number;
exec select group_number into :pindx from v\$asm_diskgroup where
upper(name)=upper('$2');
col reference_index noprint
break on reference_index skip 1 on report
compute sum label "Total size of all files in MBytes on diskgroup $2" of mb on
report
col type format a15
col files format a80
select decode(aa.alias_directory,'Y',sys_connect_by_path(aa.name,'/'),'N',lpad('
',level)||aa.name) files, aa.REFERENCE_INDEX,
b.type, b.blocks, round(b.bytes/1024/1024,0) mb, b.creation_date,
b.modification_date
from v\$asm_alias aa,
(select parent_index from v\$asm_alias where group_number = :pindx and
alias_index=0) a,
(select * from v\$asm_file where group_number = :pindx) b
where aa.file_number=b.file_number(+)
start with aa.PARENT_INDEX=a.parent_index
connect by prior aa.REFERENCE_INDEX=aa.PARENT_INDEX;
EOF
dispinfo;
fi
;;
-r)
sqlplus -S '/ as sysasm' << EOF
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss';
set linesize 200
set pagesize 5000
select dg.name,dg.allocation_unit_size/1024/1024 "AU(Mb)",min(d.free_mb) Min,
max(d.free_mb) Max, round(avg(d.free_mb),2) as Avg
from gv\$asm_disk d, gv\$asm_diskgroup dg
where d.group_number = dg.group_number
group by dg.name, dg.allocation_unit_size/1024/1024;
EOF
dispinfo;
;;
-h)
dispinfo;
;;
*)
sqlplus -S '/ as sysdba' << EOF
set linesize 200
set pagesize 1000
col free_pct format a8
select
group_number,name,sector_size,block_size,allocation_unit_size,state,total_mb,free_mb,roun
d(free_mb*100/total_mb)||'%' free_pct from v\$asm_diskgroup;
EOF
dispinfo;
esac

dfdg for 11g Oracle and HP-UX OS:

#!/usr/local/bin/bash
#
#
#
#
#
#
#
#
#
#
#
#
#

-----------------------------------------------------------------------------FUNCTION
Displays ASM diskgroup information, space usage. Displays usage by DISKS.
Displays ongoing operations and list of files on diskgroup.
NOTES
Developed for 11g Oracle Version. The entry must be in the /etc/oratab
for ASM instance
CREATED
Aychin Gasimov 03/2011 aychin.gasimov@gmail.com
MODIFIED
Xavier Picamal 08/2012
Added -r key
------------------------------------------------------------------------------

TMP1=`grep -E '^\+' /etc/oratab`


if [ -z $TMP1 ]; then
echo "Please check /etc/oratab file, there is no entry for ASM instance."
exit 1
fi
ORACLE_HOME=`echo ${TMP1//\:/ } | awk {'print $2'}`
ORACLE_SID=`echo ${TMP1//\:/ } | awk {'print $1'}`
cd $ORACLE_HOME/bin
dispinfo () {
echo "Use -d key to display usage by disks"
echo "Use -o key to display asm operations in progress (disk rebalancing)"
echo "Use -r key to display min, max and avergage free megabytes by diskgroups"
echo "Use -f to list files and directories of the disk group"
}
case "$1" in
-d)
sqlplus -S '/ as sysasm' << EOF
set linesize 200
set pagesize 50000
col path format a50
col free_pct format a8
select
group_number,name,path,state,os_mb,total_mb,free_mb,round(free_mb*100/total_mb)||'%'
free_pct from v\$asm_disk where header_status='MEMBER';
EOF
dispinfo;
;;
-o)
sqlplus -S '/ as sysasm' << EOF
set linesize 200
select * from v\$asm_operation;
EOF
;;
-f)
if [ -e $2 ]; then
echo "Please specify diskgroup name after -f key"
else
sqlplus -S '/ as sysasm' << EOF
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss';
set linesize 200
set pagesize 50000
variable pindx number;
exec select group_number into :pindx from v\$asm_diskgroup where
upper(name)=upper('$2');
col reference_index noprint
break on reference_index skip 1 on report

report

compute sum label "Total size of all files in MBytes on diskgroup $2" of mb on

col type format a15


col files format a80
select decode(aa.alias_directory,'Y',sys_connect_by_path(aa.name,'/'),'N',lpad('
',level)||aa.name) files, aa.REFERENCE_INDEX,
b.type, b.blocks, round(b.bytes/1024/1024,0) mb, b.creation_date,
b.modification_date
from (select * from v\$asm_alias order by name) aa,
(select parent_index from v\$asm_alias where group_number = :pindx and
alias_index=0) a,
(select * from v\$asm_file where group_number = :pindx) b
where aa.file_number=b.file_number(+)
start with aa.PARENT_INDEX=a.parent_index
connect by prior aa.REFERENCE_INDEX=aa.PARENT_INDEX;
EOF
dispinfo;
fi;
;;
-r)
sqlplus -S '/ as sysasm' << EOF
alter session set nls_date_format='dd.mm.yyyy hh24:mi:ss';
set linesize 200
set pagesize 5000
select dg.name,dg.allocation_unit_size/1024/1024 "AU(Mb)",min(d.free_mb) Min,
max(d.free_mb) Max, round(avg(d.free_mb),2) as Avg
from gv\$asm_disk d, gv\$asm_diskgroup dg
where d.group_number = dg.group_number
group by dg.name, dg.allocation_unit_size/1024/1024;
EOF
dispinfo;
;;
-h)
dispinfo;
;;
*)
sqlplus -S '/ as sysasm' << EOF
set linesize 200
set pagesize 50000
col free_pct format a8
select
group_number,name,sector_size,block_size,allocation_unit_size,state,total_mb,free_mb,roun
d(free_mb*100/total_mb)||'%' free_pct from v\$asm_diskgroup;
EOF
dispinfo;
esac

select inst_id, name, total_mb, free_mb, round((free_mb/total_mb)*100,2) pct_free 2 from


gv$asm_diskgroup 3 where total_mb != 0 4 order by inst_id, name;

Instance ID Disk Group Total (MB) Free (MB) % Free ----------- -------------------------- ------------ ------- 1 CRS 2,205 1,809 82.04 FRA 33,887 24,802 73.19
RACDB_DATA 33,887 30,623 90.37 2 CRS 2,205 1,809 82.04 FRA 33,887 24,802 73.19 RACDB_DATA
33,887 30,623 90.37

SQL> select path, name, header_status, os_mb from v$asm_disk;

PATH NAME HEADER_STATUS OS_MB ------------------ --------------- ---------------------- ORCL:ASMDOCSVOL1 PROVISIONED 98,303 ORCL:CRSVOL1 CRSVOL1 MEMBER 2,205
ORCL:DATAVOL1 DATAVOL1 MEMBER 33,887 ORCL:FRAVOL1 FRAVOL1 MEMBER 33,887

[grid@racnode1 ~]$ asmcmd volinfo -G docsdg1 -a

Diskgroup Name: DOCSDG1 Volume Name: DOCSVOL1 Volume Device: /dev/asm/docsvol1-300 State:
ENABLED Size (MB): 32768 Resize Unit (MB): 256 Redundancy: UNPROT

SQL> select name, total_mb, free_mb, round((free_mb/total_mb)*100,2) pct_free 2 from


v$asm_diskgroup 3 where total_mb != 0 4 order by name;

Disk Group Total (MB) Free (MB) % Free --------------- ------------ ------------ ------CRS 2,205 1,809 82.04 DOCSDG1 98,303 12,187 12.40 FRA 33,887 22,795 67.27 RACDB_DATA
33,887 30,584 90.25

[grid@racnode1 ~]$ asmcmd volstat

DISKGROUP NUMBER / NAME: 2 / DOCSDG1

You might also like