KEMBAR78
ASMCMD - ASM Command Line Utility | PDF | Computer File | Command Line Interface
0% found this document useful (0 votes)
18 views6 pages

ASMCMD - ASM Command Line Utility

ASMCMD - ASM command line utility
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views6 pages

ASMCMD - ASM Command Line Utility

ASMCMD - ASM command line utility
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

ASMCMD - ASM command line utility (Doc ID 332180.

1)

Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.1 [Release 10.1 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 30-Apr-2010***

PURPOSE

Oracle database 10gR2 provides two new options to access and manage Automatic Storage
Management (ASM) files and related information via command line interface - asmcmd and ASM ftp.
This article will talk about asmcmd and provide sample Linux shell script to demonstrate the asmcmd
in action.

SCOPE

asmcmd can be used by Oracle database administrators to query and manage their ASM systems.
Oracle Support Services engineers can use asmcmd to easily retrieve ASM related info for diagnosing
and debugging purposes.

asmcmd can be used against ASM versions 10gR1 (10.1.0.n) and 10gR2 (10.2.0.n). In ASM version
10.2 asmcmd is provided by default ASM installation.

To use asmcmd in ASM version 10.1 environment we can just copy relevant files from 10.2 installation
into the 10.1 environment as follows.

Linux/UNIX:

Copy/ftp asmcmd and asmcmdcore from 10.2 install into 10.1 $ORACLE_HOME/bin , where
$ORACLE_HOME is the oracle home where ASM is installed. These two files should be owned by the
oracle user and the dba group, and have the following permissions:

asmcmd: 550

asmcmdcore: 440

Windows:

Copy/ftp asmcmd.bat and asmcmdcore from 10.2 install into %ORACLE_HOME%\bin, where
%ORACLE_HOME% is the oracle home where ASM is installed.

DETAILS

Reference summary of asmcmd commands.

cd Changes the current directory to the specified directory.

du Displays the total disk space occupied by ASM files in the


specified ASM directory and all its subdirectories, recursively.

exit Exits ASMCMD.

find Lists the paths of all occurrences of the specified name (with
wildcards) under the specified directory.
help Displays the syntax and description of ASMCMD commands.

ls Lists the contents of an ASM directory, the attributes of the


specified file, or the names and attributes of all disk groups.

lsct Lists information about current ASM clients.

lsdg Lists all disk groups and their attributes.

mkalias Creates an alias for a system-generated filename.

mkdir Creates ASM directory.

pwd Displays the path of the current ASM directory.

rm Deletes the specified ASM files or directories.

rmalias Deletes the specified alias, retaining the file that the alias
points to.

asm.sh, a Linux shell script, that demonstrates some of the asmcmd functionality.
#!/bin/bash
#
# asm.sh - ASM reports by Bane Radulovic, Oracle Corporation, 2005
#
# asm.sh [-db DBNAME]
# Report on all disk groups in the current ASM instance;
# Current ASM instance is determined by env variable ORACLE_SID;
# asmcmd should be in the PATH
# asm.sh [-db DBNAME] -space
# Report on space used by dataabase DBNAME
# If DBNAME not specified report on total disk space used by all databases
# asm.sh [-db DBNAME] -files
# Report all files for database DBNAME managed by this ASM instance
# If DBNAME not specified report all files managed by this ASM instance
#
# Usage notes:
# All arguments are optional.
# If database name is not supplied, report on all disk groups/space/files.
# Report on total space in all disk groups only if database name not specified.
#
# Open issues
# 1. We don't detect if ASM instance is not up and if the environment is
# not set up (ASM sid, asmcmd in PATH)
# 2. The script is not very useful - it's for demo purposes only :)
# 3. We may need to expand this to show the extents/AUs allocation
# or something more usefull;
#

#
# Parse command line arguments
#

while [ $# -gt 0 ]
do
case $1 in
-db) shift; DBNAME=$1;; # Database name
-space) SPACE=TRUE;; # User wants the space usage report
-files) FILES=TRUE;; # User wants the report on all files in db DBNAME
-help) echo "Usage: asm.sh [-db DBNAME] [-space] [-files]";exit 1;;
esac;
shift
done
echo ""

#
# Get all ASM disk groups using the 'asmcmd ls' command
#

for DIRECTORY in `asmcmd ls -d % 2>/dev/null`


do
echo $DIRECTORY | cut -f1 -d'/' >> /tmp/groups$$
done

if [ -s /tmp/groups$$ ]
then
echo "ASM instance $ORACLE_SID manages the following disk group(s):"
echo "=================================="
cat /tmp/groups$$
echo ""
else
echo "There are no disk groups in the ASM instance $ORACLE_SID"
echo ""
exit 2
fi

#
# If -files was specified, report on all files for database DBNAME
#

if [ $FILES ]
then
if [ $DBNAME ]
then
for GRP in `cat /tmp/groups$$`
do
asmcmd find $GRP/$DBNAME % >>/tmp/files$$ 2>/dev/null
done
if [ -s /tmp/files$$ ]
then
echo "$ORACLE_SID files for database $DBNAME:"
echo "=================================="
cat /tmp/files$$
else
echo "Database $DBNAME does not have any files in disk group $GRP."
fi
echo ""
else
echo "The list of all files managed by ASM instance $ORACLE_SID:"
echo "=================================="
for GRP in `cat /tmp/groups$$`
do
asmcmd find $GRP % 2>/dev/null
done
fi
fi

#
# If -space was specified, report on the space usage per ASM group
#

if [ $SPACE ]
then
if [ $DBNAME ]
then
for GRP in `cat /tmp/groups$$`
do
asmcmd du $GRP/$DBNAME > /tmp/grp$$ 2>/dev/null
if [ -s /tmp/grp$$ ]
then
echo "Space usage by database $DBNAME in disk group $GRP:"
echo "=================================="
cat /tmp/grp$$
echo ""
rm -f /tmp/grp$$
else
echo "Database $DBNAME does not use disk group $GRP."
fi
done
else
for GRP in `cat /tmp/groups$$`
do
asmcmd du $GRP > /tmp/grp$$ 2>/dev/null
if [ -s /tmp/grp$$ ]
then
echo "Total Space usage by all databases in disk group $GRP:"
echo "=================================="
cat /tmp/grp$$
echo ""
rm -f /tmp/grp$$
fi
done
fi
fi

#
# Clean up
#

rm -f /tmp/groups$$
rm -f /tmp/files$$
rm -f /tmp/grp$$

#
# All work done
#

exit 0

Sample output from asm.sh script:

1. Default output
$ ./asm.sh

ASM instance +ASM1 manages the following disk group(s):


=======================================================
GROUPB
GROUPC

2. Report on disk space for database V10


$ ./asm.sh -db V10 -space

ASM instance +ASM1 manages the following disk group(s):


=======================================================
GROUPB
GROUPC
Space usage by database V10 in disk group GROUPB:
=================================================
Used_MB Mirror_used_MB
1241 1241

Space usage by database V10 in disk group GROUPC:


=================================================
Used_MB Mirror_used_MB
251 251

3. Report all files for database BETA10

$ ./asm.sh -db BETA10 -files

ASM instance +ASM1 manages the following disk group(s):


=======================================================
GROUPB
GROUPC

+ASM1 files for database BETA10:


================================
+GROUPB/BETA10/CONTROLFILE/
+GROUPB/BETA10/CONTROLFILE/Current.256.562045125
+GROUPB/BETA10/DATAFILE/
+GROUPB/BETA10/DATAFILE/SYSAUX.261.562045249
+GROUPB/BETA10/DATAFILE/SYSTEM.259.562045149
+GROUPB/BETA10/DATAFILE/UNDOTBS1.260.562045211
+GROUPB/BETA10/DATAFILE/UNDOTBS2.263.562045281
+GROUPB/BETA10/DATAFILE/USERS.264.562045319
+GROUPB/BETA10/ONLINELOG/
+GROUPB/BETA10/ONLINELOG/group_1.257.562045127
+GROUPB/BETA10/ONLINELOG/group_2.258.562045137
+GROUPB/BETA10/ONLINELOG/group_3.265.562046853
+GROUPB/BETA10/ONLINELOG/group_4.266.562046863
+GROUPB/BETA10/PARAMETERFILE/
+GROUPB/BETA10/PARAMETERFILE/spfile.267.562046873
+GROUPB/BETA10/TEMPFILE/
+GROUPB/BETA10/TEMPFILE/TEMP.262.562045273
+GROUPB/BETA10/spfileBETA10.ora

4. Report on space and all files for database V10

$ ./asm.sh -space -db V10 -files

ASM instance +ASM1 manages the following disk group(s):


=======================================================
GROUPB
GROUPC

+ASM1 files for database V10:


=============================
+GROUPB/V10/CONTROLFILE/
+GROUPB/V10/CONTROLFILE/Current.272.564600723
+GROUPB/V10/DATAFILE/
+GROUPB/V10/DATAFILE/EXAMPLE.276.564600799
+GROUPB/V10/DATAFILE/SYSAUX.269.564600555
+GROUPB/V10/DATAFILE/SYSTEM.268.564600555
+GROUPB/V10/DATAFILE/UNDOTBS1.270.564600557
+GROUPB/V10/DATAFILE/UNDOTBS2.277.564601099
+GROUPB/V10/DATAFILE/USERS.271.564600557
+GROUPB/V10/ONLINELOG/
+GROUPB/V10/ONLINELOG/group_1.273.564600733
+GROUPB/V10/ONLINELOG/group_2.274.564600753
+GROUPB/V10/ONLINELOG/group_3.278.564601163
+GROUPB/V10/ONLINELOG/group_4.279.564601183
+GROUPB/V10/PARAMETERFILE/
+GROUPB/V10/PARAMETERFILE/spfile.280.564601203
+GROUPB/V10/TEMPFILE/
+GROUPB/V10/TEMPFILE/TEMP.275.564600787
+GROUPB/V10/spfileV10.ora
+GROUPC/V10/CONTROLFILE/
+GROUPC/V10/CONTROLFILE/Current.256.564600725
+GROUPC/V10/DATAFILE/
+GROUPC/V10/DATAFILE/TBS1.261.566401327
+GROUPC/V10/ONLINELOG/
+GROUPC/V10/ONLINELOG/group_1.257.564600743
+GROUPC/V10/ONLINELOG/group_2.258.564600761
+GROUPC/V10/ONLINELOG/group_3.259.564601173
+GROUPC/V10/ONLINELOG/group_4.260.564601191

Space usage by database V10 in disk group GROUPB:


=================================================
Used_MB Mirror_used_MB
1241 1241

Space usage by database V10 in disk group GROUPC:


=================================================
Used_MB Mirror_used_MB
251 251

Some minor issues and usage warnings for asmcmd version 10.2.0.1.

1. When using asmcmd non interactively (e.g. in a shell scripts) it may be easier to use % (not *) for
wildcard matching, to avoid shell substitution issues.

2. asmcmd does not support wildcard substitution in CD command. This will be addressed in later
versions of asmcmd.

3. 'asmcmd du' always reports "Mirror_used_MB" space for all ASM disk groups. If the disk group is not
mirrored, "Used_MB" and "Mirror_used_MB" values would be the same (represening the taken disk
space in megabytes). In a normal redundancy disk group (i.e. with one mirror) the space reported
under "Mirror_used_MB" would be double the ammout reported under "Used_MB". Similarly, for the
triple mirrored disk group we would expect the three times the space reported under
"Mirror_used_MB".

You might also like