使用ASMCMD管理Oracle ASM

与ASMCMD一起管理Oracle ASM

Oracle自动存储管理(ASM)命令行实用工具(ASMCMD)提供用于管理ASM的命令。

About ASMCMD

ASMCMD是一个命令行实用工具,您可以使用它来管理ASM实例、磁盘组、磁盘组的文件访问控制、磁盘组中的文件和目录、磁盘组的模板和卷。

您可以以交互或非交互模式运行ASMCMD实用程序。

Types of ASMCMD Commands

Category Commands

Oracle ASM instance management

For a list of commands, refer to ASMCMD Instance Management Commands

Oracle ASM member cluster

For a list of commands, refer to ASMCMD Member Cluster Management Commands

Oracle ASM Filter Driver management

For a list of commands, refer to ASMCMD Oracle ASM Filter Driver Management Commands

Oracle ASM file management

For a list of commands, refer to ASMCMD File Management Commands

Oracle ASM disk group management

For a list of commands, refer to ASMCMD Disk Group Management Commands

Oracle ASM file group management

For a list of commands, refer to ASMCMD File Group Management Commands

Oracle ASM template management

For a list of commands, refer to ASMCMD Template Management Commands

Oracle ASM file access control

For a list of commands, refer to ASMCMD File Access Control Commands

Oracle ADVM volume

For a list of commands, refer to Managing Oracle ADVM with ASMCMD

About Oracle ASM Files, File Names, Directories, and Aliases

关于ASM文件、文件名、目录和别名

ASMCMD可以处理ASM文件、目录和别名。在使用ASMCMD之前,您应该了解这些通用计算概念如何应用于Oracle ASM环境。

System-Generated File Name or Fully Qualified File Name

系统生成的文件名或完全限定的文件名

在Oracle ASM中创建的每个文件都有一个系统生成的文件名,也称为完全限定文件名。这类似于本地文件系统中的完整路径名。

ASM根据以下方案生成文件名:

+diskGroupName/databaseName/fileType/fileTypeTag.fileNumber.incarnation

一个完全限定文件名的例子如下:

+data/orcl/CONTROLFILE/Current.256.541956473

在前面的完全限定文件名中,data是磁盘组名,orcl是数据库名,CONTROLFILE是文件类型,等等。

ASMCMD只支持斜杠(/)。文件名不区分大小写,但保留大小写。如果您键入的路径名是小写的,ASMCMD将保留小写。

Directory

目录

与其他文件系统一样,Oracle ASM目录是文件的容器,而Oracle ASM目录可以是其他目录树结构的一部分。完全限定的文件名表示目录的层次结构,其中加号(+)表示根目录。在每个磁盘组中,ASM自动创建一个目录层次结构,该结构对应于磁盘组中完全限定文件名的结构。这个层次结构中的目录称为系统生成的目录。

ASMCMD允许您使用cd(更改目录)命令在这个目录层次结构中上下移动。ASMCMD ls (list directory)命令列出当前目录的内容,而pwd命令打印当前目录的名称。

启动ASMCMD时,当前目录设置为root(+)。对于包含两个磁盘组(例如data和fra)的Oracle ASM实例,在根目录下输入ls命令作为当前目录,将产生以下输出:

ASMCMD> ls
data/
fra/

下面的例子演示了在Oracle ASM目录树中导航(参考前面显示的完全限定文件名):

ASMCMD> cd +data/orcl/CONTROLFILE
ASMCMD> ls
Current.256.541956473
Current.257.541956475

您可以使用ASMCMD mkdir命令将自己的目录创建为系统生成目录的子目录。您创建的目录可以有子目录,您可以使用cd命令在系统生成的目录和用户创建的目录之间导航。

 

下面的示例在磁盘组data 中创建orcl下的目录mydir:

ASMCMD> +data/orcl/mydir

注意:orcl目录是系统生成的目录。数据的内容表示磁盘组数据的内容。

如果您使用-p标志启动ASMCMD,那么ASMCMD将显示当前目录作为其提示符的一部分。参见在ASMCMD提示符中包含当前目录。

ASMCMD [+]> cd data/orcl
ASMCMD [+data/orcl]>

ASMCMD 保留您输入的目录的大小写。

 Alias

别名

别名是指向系统生成文件名的引用或指针的文件名。然而,别名是用户友好的名称。别名类似于UNIX或Linux计算机中的符号链接。您可以创建别名来简化ASM文件名管理。您可以使用mkalias ASMCMD命令或SQL ALTER DISKGROUP命令创建别名。

别名至少将磁盘组名作为其完整路径的一部分。您可以在磁盘组级或任何系统生成的或用户创建的子目录中创建别名。以下是别名的例子:

+data/ctll.f
+data/orcl/ctll.f
+data/mydir/ctll.f

如果使用-l 标志运行ASMCMD ls (list目录),则每个别名都与别名所指向的系统生成的文件一起列出。

ctll.f => +data/orcl/CONTROLFILE/Current.256.541956473

Absolute Path and Relative Path

绝对路径和相对路径

当运行接受文件名或目录名作为参数的ASMCMD命令时,可以将该名称用作绝对路径或相对路径。

绝对路径是指文件或目录的完整路径。绝对路径以一个加号(+)开始,后跟一个磁盘组名,然后是目录树中的后续目录。绝对路径包括目录,直到到达感兴趣的文件或目录。完整的系统生成文件名(也称为完全限定文件名)是文件的绝对路径的一个示例。

使用绝对路径使命令能够访问文件或目录,而不管当前目录设置在何处。

 The following rm command uses an absolute path for the file name:

ASMCMD [+]> rm +data/orcl/datafile/users.259.555341963

下面的cd命令使用该目录的绝对路径。

ASMCMD [+data/mydir] > cd +data/orcl/CONTROLFILE

相对路径只包含文件名或目录名中不属于当前目录的部分。也就是说,文件或目录的路径相对于当前目录。

 

在下面的示例中,rm命令操作文件undotbs1.272.557429239,在本例中它是一个相对路径。ASMCMD将当前目录附加到命令参数以获得文件的绝对路径。在本例中,这是+data/orcl/DATAFILE/undotbs1.272.557429239。

ASMCMD [+] > cd +data
ASMCMD [+data] > cd orcl/DATAFILE
ASMCMD [+data/orcl/DATAFILE] > ls
EXAMPLE.269.555342243
SYSAUX.257.555341961
SYSTEM.256.555341961
UNDOTBS1.258.555341963
UNDOTBS1.272.557429239
USERS.259.555341963
ASMCMD [+data/orcl/DATAFILE] >
 rm undotbs1.272.557429239

到目录的路径也可以是相对的。通过为cd命令提供一个目录参数(其路径相对于当前目录),可以向上或向下移动当前目录树分支的层次结构。

 

此外,可以使用伪目录“.”和“..”,而不是使用目录名。伪目录是当前目录。伪目录是当前目录的父目录。

下面的例子演示了如何使用相对目录路径和伪目录:

ASMCMD [+data/orcl]> cd DATAFILE
ASMCMD [+data/orcl/DATAFILE] >cd ..
ASMCMD [+data/orcl]>

Wildcard Characters

通配符

通配符*和%匹配绝对路径或相对路径中任何位置的零个或多个字符,从而节省了输入整个目录或文件名的时间。这两个通配符的行为相同。有各种接受通配符的ASMCMD命令,如cd、du、find、ls、lsattr、lsdg、lsdsk、lsgrp、lsusr和rm。

如果通配符模式在cd上使用通配符时只匹配一个目录,那么cd将目录更改为该目的地。如果通配符模式匹配多个目录,那么ASMCMD不会更改目录,而是返回一个错误。

如果您在非交互模式下运行ASMCMD命令,那么在大多数操作系统中,必须将通配符括在引号中。有关更多信息,请参考在非交互模式下运行ASMCMD。

Using wildcards with ASMCMD commands

ASMCMD [+] > cd +data/orcl/*FILE
ASMCMD-08005: +data/orcl/*FILE: ambiguous

ASMCMD [+] > cd +data/orcl/C*
ASMCMD [+data/orcl/CONTROLFILE] >

ASMCMD [+] > ls +fra/orcl/A%
2009_07_13/
2009_07_14/

ASMCMD [+] >  ls +fra/orcl/ARCHIVELOG/2009%

+fra/orcl/ARCHIVELOG/2009_07_13/:
thread_1_seq_3.260.692103543
thread_1_seq_4.261.692108897
thread_1_seq_5.262.692125993
thread_1_seq_6.263.692140729
thread_1_seq_7.264.692143333
 
+fra/orcl/ARCHIVELOG/2009_07_14/:
thread_1_seq_8.271.692158265
thread_1_seq_9.272.692174597

ASMCMD [+] > ls data/orcl/*

+data/orcl/CONTROLFILE/:
Current.260.692103157

+data/orcl/DATAFILE/:
EXAMPLE.265.692103187
SYSAUX.257.692103045
SYSTEM.256.692103045
UNDOTBS1.258.692103045
USERS.259.692103045

+data/orcl/ONLINELOG/:
group_1.261.692103161
group_2.262.692103165
group_3.263.692103169

+data/orcl/PARAMETERFILE/:
spfile.266.692103315

+data/orcl/TEMPFILE/:
TEMP.264.692103181
spfileorcl.ora

Preparing to Run ASMCMD

准备运行ASMCMD

在运行ASMCMD实用程序之前,您应该查看本主题中的信息。

您可以以交互或非交互模式运行ASMCMD实用程序。在运行ASMCMD之前,请查看以下列表中的项目。

  登录到包含计划管理的Oracle ASM实例的主机。

  您必须以具有SYSASM或SYSDBA特权的用户身份通过操作系统身份验证登录。SYSASM特权是管理Oracle ASM实例所需的连接。

  

  要连接到Oracle ASM实例,运行位于Oracle Grid Infrastructure home (Oracle ASM home)的bin子目录中的ASMCMD。

  连接为SYSASM(默认连接)来管理Oracle ASM实例。

  确保ORACLE_HOME和ORACLE_SID环境变量引用Oracle ASM实例。根据操作系统的不同,可能需要设置其他环境变量才能正确连接到Oracle ASM实例。

  确保您的Oracle Grid Infrastructure home的bin子目录位于PATH环境变量中。

   对于单实例数据库,Oracle ASM SID的默认值是+ASM。在Oracle实际应用程序集群环境中,任何节点上的Oracle ASM SID的默认值都是+ASMnode#。

 

  要使用大多数ASMCMD命令,请确保启动了Oracle ASM实例并挂载了Oracle ASM磁盘组。

  如果ASM实例没有运行,ASMCMD只运行那些不需要ASM实例的命令。这些命令包括startup、shutdowmn、lsdsk、help和exit。如果您尝试运行其他ASMCMD命令,将显示一条错误消息。

 

  您可以通过运行位于Oracle数据库home的bin目录中的ASMCMD来连接数据库实例SYSDBA。

   确保ORACLE_HOME和ORACLE_SID环境变量引用数据库实例。根据操作系统的不同,可能需要设置其他环境变量来正确连接数据库实例。

您必须包含--privilege选项来连接SYSDBA。

有了这个连接,就可以运行一组有限的操作。

在管理磁盘组时,Oracle建议您从数据库实例的数据库主数据库运行ASMCMD,该数据库实例是磁盘组中文件的所有者。

Running ASMCMD in Interactive Mode

在交互模式下运行ASMCMD

ASMCMD实用程序的交互模式提供了一个类似shell的环境,提示您输入ASMCMD命令。

Syntax for Starting ASMCMD

The syntax for starting ASMCMD in interactive mode is:

asmcmd [-V]
asmcmd [--nocp] [-v {errors|warnings|normal|info|debug}]
       [--privilege connection_type ] [-p]
       [--inst instance_name] [--discover]

ASMCMD interactive options

ASMCMD交互选项

Option Description

-V

Displays the version of ASMCMD and then exits.

显示ASMCMD的版本,然后退出。

--nocp

Disables connection pooling. For information about connection pooling, refer to Oracle Database Administrator's Guide.


禁用连接池。有关连接池的信息,请参阅Oracle数据库管理员指南。

-v display_level

Displays additional information with some commands to help users diagnose problems and writes to a message file when logging is required. normal is the default if the display level is not specified.

显示附加信息和一些命令,以帮助用户诊断问题,并在需要日志记录时写入消息文件。如果未指定显示级别,则默认为normal。

--privilege 

connection_type

Specifies the privilege to connect as when accessing an Oracle ASM or database instance. Can be either SYSASM or SYSDBA. The default is SYSASM and is used when administering the Oracle ASM instance.

指定在访问ASM或数据库实例时连接的特权。可以是SYSASM,也可以是SYSDBA。默认值是SYSASM,用于管理Oracle ASM实例。

 

-p

Displays the current directory in the prompt.

在提示中显示当前目录。

--inst instance_name

Specifies to connect to a specific Oracle ASM instance.

指定连接到特定的ASM实例。

--discover

Uses the discovery string obtained from listener, not from the ORACLE_SID environmental variable.


使用从侦听器而不是从ORACLE_SID环境变量获得的发现字符串。

ORACLE_HOME和ORACLE_SID环境变量决定ASMCMD连接到的实例。ASMCMD以与SQLPLUS / as SYSASM相同的方式建立一个bequeath连接,要求用户是OSASM组的成员。

当启用Oracle Flex ASM时,ASMCMD连接到集群中运行的任何一个Oracle ASM实例。到Oracle ASM实例的连接不依赖于ORACLE_HOME和ORACLE_SID环境变量。ASMCMD警报日志显示连接到哪个实例ASMCMD。如果您想连接到特定的ASM实例,那么使用--inst选项。

 

ASMCMD可以通过多个选项启动。例如:

asmcmd -p -v info

对于本章中的大多数例子,ASMCMD都是从-p选项开始的。

Running ASMCMD without Any Options

运行ASMCMD没有任何选项

1. 在没有任何选项的交互模式下运行ASMCMD:

asmcmd

在操作系统命令提示符中输入以下内容:

ASMCMD>

Oracle显示一个ASMCMD命令提示符,如下所示:

ASMCMD >

 2.  输入ASMCMD命令并按Enter该命令运行并显示其输出(如果有的话),然后ASMCMD提示输入下一个命令。

3.  继续输入ASMCMD命令,直到完成任务。

4. 输入exit或quit命令以退出ASMCMD。

Specifying the Type of Connection

指定连接的类型

您可以指定--privilege选项来选择连接类型,SYSASM或SYSDBA。默认值是SYSASM,用于管理Oracle ASM实例。连接到数据库实例时,以SYSDBA的身份连接。

例如:

$ asmcmd --privilege sysasm

Specifying the Verbose Mode

指定详细模式

您可以使用asmcmd命令指定-v选项,用一些命令显示附加信息,以帮助用户诊断问题,如下例所示:

$ asmcmd -v debug

当asmcmd操作期间必须记录一条消息时,将该消息写入alert.log文件或trace.trc文件。

当asmcmd以-v错误、-v警告或-v正常显示级别启动时,将创建或更新alert.log文件。跟踪。当asmcmd以-v信息或-v调试显示级别启动时,将创建或更新trc文件。

默认情况下,alert.log是在$ORACLE_BASE/diag/asmcmd/user_username/hostname/alert/目录中创建的文件。默认情况下是trace.trc文件是在$ORACLE_BASE/diag/asmcmd/user_username/hostname/trace/目录中创建的。

在某些情况下,可以将$ORACLE_BASE和$ORACLE_HOME设置为覆盖alert.log和trace的默认位置trace.trc文件。

When there is a message that must be logged during asmcmd operations, the message is written to the alert.log file or the trace.trc file.

The alert.log file is created or updated when asmcmd is started with the -v errors-vwarnings, or -v normal display level. The trace.trc file is created or updated when asmcmd is started with the -v info or -v debug display level.

By default, the alert.log is file created in the $ORACLE_BASE/diag/asmcmd/user_username/hostname/alert/ directory. By default, the trace.trc file is created in the $ORACLE_BASE/diag/asmcmd/user_username/hostname/trace/ directory.

Under certain circumstances, $ORACLE_BASE and $ORACLE_HOME can be set to override the default locations of the alert.log and trace.trc files.

Including the Current Directory in the ASMCMD Prompt

在ASMCMD提示符中包含当前目录

您可以使用asmcmd命令指定-p选项,以在asmcmd提示符中包含当前目录,如下面的示例所示:

$ asmcmd -p
ASMCMD [+] > cd data
ASMCMD [+data] >

Displaying the ASMCMD Version Number

显示ASMCMD版本号

您可以在启动asmcmd时指定-V选项来显示asmcmd版本号。在显示版本号之后,asmcmd立即退出。

$ asmcmd -V
   asmcmd version 19.0.0.0.0

Running ASMCMD in Noninteractive Mode

在非交互模式下运行ASMCMD

在非交互模式下,通过在调用ASMCMD时在命令行上包含命令和命令选项,可以运行单个ASMCMD命令。ASMCMD运行命令,生成输出(如果有的话),然后退出。非交互模式对于运行脚本特别有用。

在大多数操作系统中,在非交互模式下运行ASMCMD命令时,通配符必须括在引号中。

要在非交互模式下运行ASMCMD,命令是任何有效的ASMCMD命令,选项是命令选项列表,在命令提示符中输入以下内容:

asmcmd command options

在非交互模式下,ASMCMD返回表10-3中列出的代码。

ASMCMD return codes

Type Return Code Description

General

0

No issues for the command.

命令没有问题。

General

1

Internal error.

内部错误。

General

255 or -1

External user error as returned by a command.

由命令返回的外部用户错误。

lsdsk

0

Results include member disks only.

结果只包括成员磁盘。

lsdsk

1

Results include candidate disks only.

结果只包含候选磁盘。

lsdsk

2

Results include both member and candidate disks.


结果包括成员磁盘和候选磁盘。

示例10-2展示了如何在非交互模式下运行ASMCMD。第一个命令运行ls命令,列出Oracle ASM实例的磁盘组。第二个命令将lsod命令的输出重定向到my_lsod_test文件。第三个命令使用带有通配符的模式运行lsdsk,以列出数据磁盘组中的特定磁盘。注意,在大多数操作系统上以非交互模式运行ASMCMD时,通配符必须括在引号中。

 Displaying a return code when running ASMCMD in noninteractive mode

$ asmcmd ls -l
State    Type    Rebal  Name
MOUNTED  NORMAL  N      DATA/
MOUNTED  NORMAL  N      FRA/

$ asmcmd lsod --suppressheader -G data > my_lsod_test


$ asmcmd lsdsk -G data '/devices/diska*'
Path
/devices/diska1
/devices/diska2
/devices/diska3

例10-3提出一个错误,磁盘组名不正确,返回码等于(255)。

 Displaying a return code when running ASMCMD in noninteractive mode

$ asmcmd ls -l dat
ASMCMD-08001: diskgroup 'dat' does not exist or is not mounted


$ echo $?
255

示例10-4显示了在脚本中以非交互模式运行的ASMCMD命令的一个示例。

Running ASMCMD commands in a script

#! /bin/sh
for ((i=1; i <=3; i++))
    do
        asmcmd lsdsk -G data '/devices/diska'$i
    done

   
     $ ./asmcmd_test_script
    Path
    /devices/diska1
    Path
    /devices/diska2
    Path
    /devices/diska3

Getting Help

得到帮助

在ASMCMD提示符处键入帮助,或者作为非交互模式下的命令来查看关于ASMCMD的一般信息和可用ASMCMD命令的列表。

您可以键入help command来显示特定命令的帮助文本,包括关于如何使用其选项运行命令的使用信息。

下面是使用help命令的一个示例。

Displaying ASMCMD help text

ASMCMD [+] > help startup
        startup [--nomount] [--restrict] [--pfile <pfile.ora>]
 
        Start the ASM instance.
 
        [--nomount]           specifies the nomount option.
        [--restrict]          start the instance in restricted mode.
        [--pfile <pfile.ora>] specifies the location of the pfile.