使用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 |
---|---|
- |
Displays the version of ASMCMD and then exits. 显示ASMCMD的版本,然后退出。 |
|
Disables connection pooling. For information about connection pooling, refer to Oracle Database Administrator's Guide.
|
|
Displays additional information with some commands to help users diagnose problems and writes to a message file when logging is required. 显示附加信息和一些命令,以帮助用户诊断问题,并在需要日志记录时写入消息文件。如果未指定显示级别,则默认为normal。 |
|
Specifies the privilege to connect as when accessing an Oracle ASM or database instance. Can be either 指定在访问ASM或数据库实例时连接的特权。可以是SYSASM,也可以是SYSDBA。默认值是SYSASM,用于管理Oracle ASM实例。
|
|
Displays the current directory in the prompt. 在提示中显示当前目录。 |
|
Specifies to connect to a specific Oracle ASM instance. 指定连接到特定的ASM实例。 |
|
Uses the discovery string obtained from listener, not from the
|
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
, -v
warnings
, 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. 由命令返回的外部用户错误。 |
|
0 |
Results include member disks only. 结果只包括成员磁盘。 |
|
1 |
Results include candidate disks only. 结果只包含候选磁盘。 |
|
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.