• SYSOPER:该权限授予使用一组非破坏性ALTER DISKGROUP命令以及启动和中止ASM 实例的权限。不容许使用CREATE DISKGROUP等其它命令。
Oracle Universal Installer (OUI) 实用程序将这些组分别称为OSASM、OSDBA和 OSOPER组,即OSASM组是授予了 SYSASM权限的操做系统组。
所以,SYSASM是数据库使用的名称,OSASM是OUI 实用程序使用的名称,而 asmadmin是操做系统使用的名称。它们都是指同一组用户。
- 使用Oracle Enterprise Manager 管理ASM 用户
Oracle Enterprise Manager 容许你管理经过远程链接(使用口令文件验证)访问ASM 的
用户。这些用户是专门为ASM 实例保留的。
仅当你做为SYSASM用户链接时才具备此功能。若是你做为SYSDBA或SYSOPER用户
链接,该功能将隐藏。
• 单击“Creat(建立)”按钮时将显示“Create User(建立用户)”页。
• 单击“Edit(编辑)”按钮时将显示“Edit User(编辑用户)”页。
• 经过单击“Delete(删除)”按钮能够删除建立的用户。
注:要以SYSASM角色登陆ASM,请单击该页顶部的“Preferences(首选项)”连接,
而后单击“Preferred Credentials(首选身份证实)”连接。此时你将在目标类型列表中
看到ASM。单击ASM 目标类型旁边的“Set Credentials(设置身份证实)”图标,定义
具备SYSASM权限的账户和口令。你须要从Database Control 中注销并再次登陆,更改才
会生效。
使用SQL*Plus 启动和中止ASM 实例与启动和中止数据库
实例的方式类似。
$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is
/u01/app/oracle
$ sqlplus / AS SYSASM
SQL*Plus: Release 11.2.0.1.0 - Production on Wed Jul 8 20:46:46 2009
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1336028 bytes
Variable Size 258063652 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM diskgroups volume enabled
SQL> shutdown abort
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
RECOVERY MOUNTED
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM STARTED
在SQL*Plus 中使用STARTUP命令启动ASM 实例,其方式与启动Oracle DB 实例的方式
类似。启动ASM 实例时,请注意如下几点:
• 要使用SQL*Plus 链接ASM 实例,请将 ORACLE_SID环境变量设置为ASM SID。
单实例数据的默认ASM SID 为 +ASM,Oracle RAC 节点的默认ASM SID 是
+ASMnode_number,其中node_number是节点的编号。oraenv脚本将设置
ORACLE_BASE、ORACLE_SID、ORACLE_HOME和 PATH变量。
• 初始化参数文件必须包含下面的条目:
INSTANCE_TYPE = ASM
该参数指示正在启动ASM 实例,而不是数据库实例。
• 运行STARTUP命令时,该命令尝试装载初始化参数ASM_DISKGROUPS指定的磁盘
组,而不是尝试装载和打开某个数据库。若是还没有为 ASM_DISKGROUPS输入值,
稍后能够经过ALTER DISKGROUP...MOUNT命令装载磁盘组。
下面的列表讲述了与ASM 相关的 STARTUP命令参数。
• FORCE:在从新启动ASM 实例以前向它发出SHUTDOWN ABORT。
• MOUNT或 OPEN:装载ASM_DISKGROUPS初始化参数中指定的磁盘组。这是未指定
命令参数时的默认值。
• NOMOUNT:启动ASM 实例而不装载任何磁盘组。
• RESTRICT:在受限模式下启动实例。RESTRICT子句能够与 MOUNT、NOMOUNT和
OPEN子句组合使用。
在受限模式下,数据库实例不能使用磁盘组。即,数据库没法打开磁盘组中的文件。
另外,若是磁盘组是由某个实例在受限模式下装载的,则该磁盘组没法由集群中的任
何其它实例装载。经过受限模式,你能够在磁盘组上执行维护任务,而不会受到客户
机的干扰。在磁盘组处于受限模式下时执行从新平衡操做,就再也不须要在集群环境中
的ASM 实例之间传递锁定和取消锁定区映射消息。这样能够提升从新平衡操做的整
体吞吐量。在维护期间结束时,你必须显式卸载该磁盘组并在正常模式下从新装载该
磁盘组。
在SQL*Plus 中运行SHUTDOWN命令时将启动ASM 关闭进程。在运行此命令以前,请确
保已设置ORACLE_SID和 ORACLE_HOME环境变量,从而你能够链接到ASM 实例。
Oracle 强烈建议你在尝试关闭ASM 实例以前关闭使用该ASM 实例的全部数据库实例。
下面的列表讲述了与ASM 相关的 SHUTDOWN命令参数。
• NORMAL:ASM 在卸载全部磁盘组并关闭ASM 实例以前,将等待任何正在进行的
SQL 完成执行。在关闭实例以前,ASM 将等待全部当前链接的用户从该实例断开。
若是任何数据库实例与ASM 实例链接,则 SHUTDOWN命令将返回错误并保持ASM
实例继续运行。NORMAL是默认关闭模式。
• IMMEDIATE或 TRANSACTIONAL:ASM 在卸载全部磁盘组并关闭ASM 实例以前,
将等待任何正在进行的SQL 完成执行。ASM 不等待当前与实例链接的用户断开连
接。若是任何数据库实例与ASM 实例链接,则 SHUTDOWN命令将返回错误并保持
ASM 实例继续运行。
• ABORT:ASM 实例当即关闭,而不按顺序卸载磁盘组。这将致使下次启动ASM 时进
行恢复操做。若是有任何数据库实例与ASM 实例链接,则该数据库实例也将停止。
注:有链接的RDBMS 实例时,不该用NORMAL、IMMEDIATE和 TRANSACTIONAL形式
的关闭,而将返回下面的错误:
SQL> shutdown
ORA-15097: cannot SHUTDOWN ASM instance with connected client (process 14372)
ASM是依赖于CSS守护进程的,所以在启动ASM实例前要确保css守护进程已经启动 。 CSS(Cluster Synchronization Services) 守护进程用来维持ASM 及客户端数据库实例间的一致性同步,若是是经过dbca建库的话,那么CSS守护进程默认即会启动(跟随系统reboot)。
可使用Server Control 实用程序(srvctl) 启动和中止
ASM 实例。
$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for
ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is
/u01/app/oracle
$ srvctl start asm -o mount
$ srvctl stop asm -f
可使用Server Control 实用程序(srvctl) 检查ASM
实例的状态。
$ srvctl status asm
ASM is running on edrsr25p1
使用srvctl启动和中止ASM 实例
可使用Server Control 实用程序(srvctl) 启动和中止ASM 实例以及由Grid
Infrastructure 管理的其它资源。srvctl实用程序位于Grid Infrastructure 的
ORACLE_HOME/bin位置下和数据库安装的 ORACLE_HOME/bin位置下。管理ASM、
监听程序或Oracle Restart 时,应该使用位于Grid Infrastructure ORACLE_HOME中的
srvctl实用程序。
能够下列方式使用 srvctl实用程序来控制ASM:
• 启动ASM 实例。
srvctl start asm [-o <start_option>]
<start_option>是有效的实例启动选项
(FORCE、MOUNT、OPEN、NOMOUNT或RESTRICT)之一(可选)
• 中止ASM 实例。
srvctl stop asm [-o <stop_option>] -f
<stop_option>是有效的实例关闭选项
(NORMAL、IMMEDIATE、TRANSACTIONAL或 ABORT)之一(可选),
–f 是强制
• 报告ASM 实例的状态。
srvctl status asm
asmcmd实用程序提供了一个访问ASM 的命令行界面,
无需使用SQL 语言。
$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is
/u01/app/oracle
$ asmcmd
Connected to an idle instance.
ASMCMD> startup
ASM instance started
Total System Global Area 284565504 bytes
Fixed Size 1336028 bytes
Variable Size 258063652 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM diskgroups volume enabled
ASMCMD> shutdown --abort
ASM instance shut down
Connected to an idle instance.
使用asmcmd启动和中止ASM 实例
用于管理的ASM 元数据位于ASM 实例内包含的动态性能视图内。一般经过ASM 实用
程序使用SQL 语言来访问这些视图。要求了解SQL 语言增长了掌握ASM 的学习时间,
并且SQL 语言培训一般不在系统管理员和存储管理员的学习范围内。asmcmd实用程序
提供了一个相似伪Shell 的环境,能够接受UNIX 格式的语法执行经常使用的ASM 管理任务。
它能够用于管理Oracle ASM 实例、磁盘组、磁盘组的文件访问控制、磁盘组内的文件和
目录、磁盘组的模板以及卷。
可使用 asmcmd实用程序启动和关闭ASM 实例。支持的启动选项包括:
--nomount(在不装载磁盘组的状况下启动ASM 实例)
--restrict(启动ASM 实例并限制数据库使用)
--pfile <pfile.ora>(使用定制pfile 启动ASM 实例)
支持的关闭选项包括:
--immediate(当即执行关闭)
--abort(停止全部现有操做)
磁盘组是一个或多个磁盘的逻辑分组,ASM 将其做为一个集合来管理。每一个磁盘组都包含
与自身相关联的元数据。在概念上,ASM 磁盘组相似于典型存储区域网络中的逻辑卷。
从磁盘组内分配文件空间。磁盘组中存储的文件的内容将在该磁盘组的磁盘中平均分布或
条带化,以便消除热点并在各磁盘上提供一致的性能。每一个ASM 文件都彻底包含在一个
磁盘组中。可是,一个磁盘组能够包含属于多个数据库的文件,而一个数据库可使用来
自多个磁盘组的不一样文件。
磁盘组的关键属性是它的冗余设置。有三种可能的磁盘组冗余设置:
• 外部冗余,其中ASM 不提供任何镜像,磁盘都假设为高度可靠。
• 正常冗余,其中ASM 默认支持双向镜像,从而保证在较不可靠的存储上实现数据
完整性。
• 高冗余,其中ASM 默认支持三向镜像,从而更好地保证数据完整性。
ASM 最多支持建立63 个磁盘组;可是,对于大多数安装,你不多会须要不少磁盘组。
ASM磁盘组的管理方式比较多,好比DBCA、EM、SQL*PLUS等均可以操做,还有oracle专门提供了ASMCMD命令行方式,像操做文件系统同样来操做磁盘组。
ASM 磁盘:
• 是为ASM 磁盘组预配的存储设备
• 经过正常O/S 接口来访问
• 必须可由ASM 全部者读取和写入
• 必须可由集群中的全部节点访问
• 在不一样的节点上能够有不一样的O/S 名称或路径
• 能够是:
– 整个物理磁盘或物理磁盘的分区
– 存储阵列中的磁盘或分区
– 逻辑卷(LV) 或逻辑单元(LUN)
– 网络链接文件(NFS)
ASM 磁盘组包含一个或多个ASM 磁盘。
ASM 磁盘必须可由集群中全部节点的ASM 全部者读取和写入。
ASM 磁盘能够是磁盘上的分区,可是Oracle 强烈建议不要与其它应用程序程序共享ASM
使用的物理磁盘。这是由于在应用ASM 条带化和镜像策略时,磁盘组内的各个ASM 磁
盘的I/O 性能必须类似且一致,才能得到最佳性能。在ASM 和其它应用程序之间共享设
备会难以确保磁盘性能类似且一致。
集群中不一样节点上的ASM 磁盘的O/S 设备名称没必要相同。ASM 经过读取ASM 磁盘的标
头来识别磁盘组的成员。
一般,ASM 磁盘是以存储阵列中的裸LUN 提供给ASM 的。另外,ASM 磁盘还能够是远
程NFS 文件器中的文件。
ASM 磁盘划分为分配单元(AU):
• 在建立磁盘组时能够配置AU 大小。
• AU 默认大小为1 MB:
– 足够小,可以被数据库缓存;但又足够大,可以提供
高效的后续访问
• 容许的AU 大小:
– 一、二、四、八、1六、32 或64 MB
– 在超大型数据库(VLDB) 中或使用专门的存储硬件时,
较大的AU 可能很是有用
在ASM 磁盘内,空间划分为分配单元(AU)。AU 默认大小是1 MB,该大小足够小,不会
变为热点,但又足够大,可以提供高效的后续访问。建立磁盘组时能够设置AU 大小。你
没法更改磁盘组的AU 大小。在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大
的AU 大小可能会颇有用。若是常常访问某个AU,则数据库内核会将其缓存以便实现更
高的访问效率。
ASM 文件:
• 是由AU 组成的ASM 区的集合
– 可变大小的区支持大型文件
• 对数据库内核显示为普通文件
• 文件名以“+”开头
– 例如,
+DATA/orcl/datafile/system.256.689832921
• 能够与可选的文件名别名相关联
– 例如,+DATA/dbfiles/mydb/system01.dbf
• 在磁盘组中的磁盘中平均分布
• 根据磁盘组中定义的策略进行镜像
ASM 呈现一组文件供ASM 的客户机使用。ASM 文件由一组分配单元组成,这些文件对
数据库内核显示为普通文件。
每一个ASM 文件都具备惟一的系统生成的名称。
生成格式为:+diskgroup/dbname/file_type/file_type_tag.file.incarnation ,
• +diskgroup :磁盘组名称;
• dbname :数据库的DB_UNIQUE_NAME参数值;
• file_type :建立的文件类型,好比CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBAC
K等等;
•
file_type_tag :文件类型的标签,好比表空间对应的一般为该表空间名称;
•
file.incarnation :文件序号+incarnation,用来确保文件的惟一;
sys@TEST0924> alter tablespace INVENTORY add datafile '+DATA';
Tablespace altered.
ASMCMD> pwd
+data/test0924/datafile
ASMCMD> ls
INVENTORY.266.829658135
示例显示了一个彻底限定的ASM 文件
名的示例。彻底限定的ASM 文件名表示一个层次结构,其开头是加号与磁盘组名称的组
合。磁盘组名称后是数据库名称和文件类型。最后的元素由标记名称、文件编号和原型编
号组成。能够建立别名(可选),为管理员提供一种更用户友好的方式来引用ASM 文件。
文件使用条带化和镜像全部内容(SAME) 策略在磁盘组的各ASM 磁盘中平均分布。
ASM 自己支持大多数与数据库相关的文件类型,例如数据文件、日志文件、控制文件、
RMAN 备份及其它文件。在Oracle Database 11g发行版2 以前,ASM 仅支持与Oracle DB
相关的文件,没法用于存储和管理ASCII 跟踪文件和预警日志、Oracle 二进制文件、
Oracle 集群注册表(OCR) 和集群表决磁盘。Oracle Database 11g发行版2 提供在ASM 上
运行通用文件系统的方式,从而消除了上述限制。
ASM 经过称为区映射的元数据跟踪文件的分布。区映射是一个表,将文件中的数据区映
射到磁盘上的分配单元。
文件区与分配单元之间的关系以下所示。区包含:
• 一个AU 用于前20,000 个区(0-19999)
•4 个AU 用于接下来的20,000 个区(20000-39999)
• 16 个AU 用于40,000 以上的区
将可变大小的区与大型分配单元结合使用,可知足很是大的ASM 文件的须要。
ASM 用于负载平衡的条带化策略与用于等待时间的条带化
策略不一样:
• 对于负载平衡,粗粒度条带化将多个分配单元链接起来
使用。
– 例如:
在ASM 中,条带化主要具备两种用途:
• 在磁盘组的全部磁盘中执行I/O 负载平衡。
• 改善I/O 等待时间。
粗粒度条带化在磁盘组的各磁盘中分布分配单元。这用于为磁盘组提供负载平衡。分配
文件时,ASM 会在全部磁盘中平均分布分配单元。有时分布没法很是平均,可是随着时
间的流逝,会变得几乎相等。上图显示了一个具备五个分配单元的文件,这些分配单元
在条带化以后,分布在一个外部冗余磁盘组的五个磁盘中,该磁盘组共包含八个磁盘。
对于前20,000 个区,区大小等于AU 大小。从第20,001 个区到第40,000 个区,该区组
老是一次分配8 个区,区大小等于4 倍AU 大小。若是AU 大小为1 MB,这意味着ASM
文件将一次增大64 MB (8 * 4 * 1 MB)。若是文件采用粗粒度条带化,则它将在8 个区中
进行条带化,条带大小为1 AU。条带化始终在AU 级别进行,而不是在区级别。所以,
不管文件多大,粗粒度文件的每一个AU 都与该文件的前一个AU 所在的磁盘不一样。在第
40,000 个区以后,仍旧是每次分配8 个区,但区大小等于16 倍AU 大小。
细粒度条带化在分配单元组中放置128 KB 条带单元来改善
等待时间。
• 磁盘组具备8 个磁盘和外部冗余
• 使用默认的AU 大小:1 MB
• 第一个1 MB 区在8 个AU 中以128 KB 条带形式写入
细粒度条带化将数据区拆分为128 KB 的块,而后在许多磁盘中分布每一个区的负载,从而
改善特定类型文件的等待时间。默认状况下,细粒度条带化用于控制文件和联机重作日志
文件。
图显示了细粒度条带化的工做原理。在此示例中,新文件的第一个1 MB 区最终占
用8 个不一样分配单元中的第一个128 KB 块,这8 个分配单元分布在磁盘组的八个磁盘中。
所以,1 MB 的读取或写入分布在八个磁盘(而不是一个磁盘)中。
示例:
• 磁盘组具备8 个磁盘和外部冗余
• 使用默认的AU 大小:1 MB
• 下一个1 MB 区以128 KB 条带的形式在相同的8 个
分配单元中写入,直到这些分配单元写满
继续前面的示例,空间中的下一个1 MB 区将分布在相同分配单元组的每一个单元的第二个
128 KB 块中。这种模式将继续,直到第一组分配单元写满,而后分配另外一组。
• 共享须要容错的一项公用资源的一组磁盘
• 镜像的区副本存储在不一样的故障组中
• 存储硬件指示故障组边界
– 分离磁盘控制器的示例:
在磁盘组内,能够将一些磁盘归到故障组中。故障组是存储或数据库管理员指定ASM
镜像操做的硬件边界的一种方式。
例如,能够将链接到一个磁盘控制器的全部磁盘指定为某个公用故障组的磁盘。这样,
将在链接到不一样控制器的磁盘上镜像文件区。另外,管理员能够配置ASM 来选择默认
故障组策略。默认策略是每一个磁盘位于本身的故障组中。
你可使用所需的任何标准将磁盘归到故障组中。故障组能够用于避免单个磁盘、磁盘
控制器、I/O 网络组件以及甚至整个存储系统的故障。一般,管理员将分析其存储环境
并对故障组进行组织来消除特定故障状况。
由数据库或存储管理员肯定其安装的最佳故障组配置。
一个共含八个磁盘的正常冗余磁盘组,其中的磁盘分布在
两个故障组中。
条带化和镜像示例
本页中的图显示了一个正常冗余磁盘组中条带化和镜像的示例。红块表示一个包含五个区
的文件,这些区在条带化后,分布在磁盘组(共八个磁盘)的五个磁盘中。蓝块表示文件
区的镜像副本。请注意,不管区在各个磁盘和故障组中如何分布,每一个区在一个故障组中
仅有一个副本。
分配文件时,主区的分配用于保证性能,辅助副本的分配用于保证完整性。所以,默认情
况下,全部数据库读取都针对主区进行。
ASM中的磁盘组可分红两类,普通磁盘组和failure磁盘组,后者又与ASM的荣誉方式有所关联。
普通磁盘组就是标准的存储单元,ASM能够向其可访问的磁盘组中读写数据,failure磁盘组是为了提升数据的高可用性。
ASM中的磁盘荣誉策略分红三类,外部冗余,标准冗余和高度冗余,其中
外部冗余
与failure磁盘组无关,若是设置了
标准冗余和高度冗余,那么该磁盘组就必须拥有failure磁盘组。
标准冗余,ASM要求改磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护
,对于同一份数据(ASM中镜像单位不是磁盘,也不是块,而是一种AU的单位,该单位大小默认是1M)将有主从两份镜像,而且ASM经过算法来自动确保主、从镜像不会存在于同一份failure 磁盘组,这样就保障了就算整个failure 磁盘组都损坏,数据也不会丢失。至于高度冗余(High Redundancy)就更安全了,它至少须要三个failure 磁盘组,也就是一份AU有一主多从的镜像,理论上将更加安全。
若是磁盘发生损坏,那么损坏的磁盘默认自动offlice并被drop掉,不过该磁盘所在的磁盘组仍将保持MOUNT状态,若是该盘有镜像的话,那么应用不会有影响,镜像盘将自动实现接管--只要不是全部failure磁盘组都损坏掉,不然的话,该磁盘组将自动DISMOUNT。
若是磁盘H 发生故障,则将根据正常镜像在正常磁盘上
从新建立该磁盘包含的区。
此处扩展了上一页中的示例,假设磁盘H 发生故障,没法再访问其包含的数据。该故障
要求恢复故障磁盘上的全部区并将这些区复制到另外一磁盘。
区3 和5 的正常副本将复制到同一故障组中另外一磁盘的空闲区域。在此示例中,区5 将从
磁盘B 复制到磁盘F,区3 将从磁盘C 复制到磁盘G。
磁盘发生故障后的最后一步是ASM 从磁盘组中删除故障磁盘。
删除磁盘基本上会触发相同的过程;不过,在删除磁盘时,要被删除的磁盘上的区首先会
复制到可用替代位置。
• 最多支持63个磁盘组;
•最多支持10000个磁盘;
•最大支持4pb/磁盘;
•最大支持40 exabyte/ASM存储;
•最大支持1百W个文件/磁盘组;
•外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb。
ASM 实例的主要目的是管理磁盘组和保护其数据。ASM 实例还将文件分布传送到数据库
实例。这样,数据库实例就能够直接访问磁盘组中存储的文件。
有多个磁盘组管理命令。执行这些命令都须要SYSASM或SYSDBA权限,且必须从ASM
实例发出。
你能够添加新磁盘组。还能够修改现有磁盘组来添加新磁盘、删除现有磁盘以及执行许多
其它操做。能够删除现有磁盘组。
。
CREATE DISKGROUP语句,该语句的语法以下:
CREATE DISKGROUP diskgroup_name
[ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]
[ FAILGROUP failgroup_name ]
DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;
•首先要指定的就是磁盘组名称(diskgroup_name);
•指定冗余度,有三个选择:HIGH(高度冗余>三路)、NORMAL(标准冗余--双路)和XTERNAL(外
部存储冗余);
•选择是否指定FAILGROUP(若是选择非external则必须指定);
•指定该磁盘组中的成员(对应的LUN),在指定成员时通常ASM可以自动检测出磁盘的容量,不过
若是DBA基于某些方面的考虑,但愿限制ASM使用的空间的话,也能够在指定成员过程当中,顺
便指定大小(只要指定的大小不超出磁盘实际容量),在添加成员时,ASM也会自动检查磁盘头以
肯定该磁盘是否被加入到其它的磁盘组中,当发现该盘已加入其它磁盘组的话,你能够经过
FORCE选项来强制修改该盘所属磁盘组。
$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is
/u01/app/oracle
$ sqlplus / AS SYSASM
SQL*Plus: Release 11.2.0.1.0 - Production on Wed Jul 8 20:46:46 2009
Copyright (c) 1982, 2009, Oracle. All rights reserved.
..
SQL>
CREATE DISKGROUP dgroupA NORMAL REDUNDANCY
FAILGROUP controller1 DISK
'/devices/A1' NAME diskA1 SIZE 120G FORCE,
'/devices/A2',
FAILGROUP controller2 DISK
'/devices/B1',
'/devices/B2';
SQL>
DROP DISKGROUP dgroupA INCLUDING CONTENTS;
建立和删除磁盘组
假设ASM 磁盘搜索在/dev目录中找到了下列磁盘:A一、A二、B1和B2。另外,假设磁
盘A1和A2的磁盘控制器不一样于B1和B2的磁盘控制器。第一个示例说明如
何配置名为DGROUPA的磁盘组,其包含两个故障组:CONTROLLER1和ONTROLLER2。
该示例还对该磁盘组使用默认冗余属性NORMAL REDUNDANCY。你还能够提供磁盘名称
和磁盘的大小(可选)。若是你不提供此信息,ASM 会建立默认名称并尝试肯定磁盘的
大小。若是没法肯定大小,将返回错误。FORCE指示指定的磁盘应该添加到指定的磁盘
组,即便该磁盘已经格式化为某个ASM 磁盘组的成员。对未格式化为某个ASM 磁盘组
的成员的磁盘使用FORCE选项将返回错误。
第二个语句所示,你能够删除磁盘组及其全部文件。为了不意外删除,若是
磁盘组除内部ASM 元数据外还包含任何其它文件,则必须指定INCLUDING CONTENTS
选项。必须先装载磁盘组才能将其删除。在确保未打开任何磁盘组文件后,将从磁盘组中
删除该组及其全部驱动器。而后,将覆盖每一个磁盘的标头来清除ASM 格式信息。
ALTER DISKGROUP dgroupA ADD DISK
'/dev/sde1' NAME A5,
'/dev/sdf1' NAME A6,
'/dev/sdg1' NAME A7,
'/dev/sdh1' NAME A8;
ALTER DISKGROUP dgroupA ADD DISK '/devices/A*';
磁盘格式化---------->
磁盘组从新平衡
向磁盘组添加磁盘
此示例显示如何向磁盘组添加磁盘。能够执行ALTER DISKGROUP ADD DISK命令来
添加磁盘。第一个语句向DGROUPA磁盘组添加四个新磁盘。
第二个语句说明搜索字符串的相互影响。请考虑下列配置:
/devices/A1是磁盘组DGROUPA的成员。
/devices/A2是磁盘组DGROUPA的成员。
/devices/A3是磁盘组DGROUPA的成员。
/devices/A4是候选磁盘。
第二个命令将A4添加到DGROUPA磁盘组。该命令将忽略其它磁盘,即便它们与搜索字
符串相匹配,由于它们已是DGROUPA磁盘组的一部分。上图显示当你向磁盘组添加磁
盘时,ASM 实例会确保该磁盘是可寻址且可用的。而后会对该磁盘进行格式化和从新平
衡。从新平衡过程比较耗费时间,由于该过程会将全部文件的区移至新磁盘。
注:从新平衡不会阻止任何数据库操做。从新平衡过程主要影响系统的I/O 负载。从新平
衡的能力越高,对系统施加的I/O 负载越多,可用于数据库I/O 的I/O 带宽也就越少。
当发生添加/删除磁盘组中磁盘的操做时,ASM可以自动平衡。对于普通的删除操做(无force选项),被删除的磁盘在该上数据被有效处理前并不会马上释放,一样,新增磁盘时,在重分配工做完成前,该盘也不会承担I/O负载的工做。要监控后台进行的操做,能够经过V$ASM_OPERATION视图查询。
若是但愿ALTER DISKGROUP语句完成全部工做才返回的话,能够在执行时附加REBALANCE WAIT子句,这样该语句就会等待自动平衡的操做,直接全部操做完成才返回结果,固然在等待期间,若是你不想等待,使用CTRL+C终端既能够得到控制权,而平衡的操做不受影响,会在后台继续进行。
从dgroupA删除磁盘:
ALTER DISKGROUP dgroupADROP DISK A5;
在单个命令中添加和删除磁盘:
ALTER DISKGROUP dgroupA
DROP DISKA6
ADD FAILGROUPcontroller3
DISK '/dev/sdi1'NAME A9;
取消磁盘删除操做:
ALTER DISKGROUP dgroupA UNDROP DISKS;
其它ALTER命令
第一个语句显示如何从DGROUPA磁盘组中删除一个磁盘。
第二个语句显示如
何在单个命令中添加和删除磁盘。这种方式的一大优势就是在该命令完成后才开始从新平
衡操做。
第三个语句显示如何取消磁盘删除操做。
当删除磁盘时,ASM发现平衡不过来时(好比剩下的磁盘空间不足以存放全部数据时),删除操做也会失败,这种状况要么先删数据,要么取消删除的操做。
只要删除操做尚未真正完成,就能够取消删除磁盘的操做,
UNDROP命令仅对磁盘的暂挂删除操做起做用;它对于已经完成的删除操做没有影响。
若是须要,可使用下面的语句对DGROUPB磁盘组进行从新平衡:
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
此命令一般是不须要的,由于在添加、删除磁盘或调整磁盘大小时会自动执行该操做。
可是若是你但愿使用POWER子句覆盖由初始化参数ASM_POWER_LIMIT定义的默认速
度,此命令很是有用。经过从新输入具备新级别的命令,能够更改正在进行的从新平衡
操做的能力级别。能力级别为零会致使从新平衡操做中断,直到隐式或显式从新调用该
命令。
下面的语句能够卸载DGROUPA:
ALTER DISKGROUP dgroupA DISMOUNT;
经过MOUNT和DISMOUNT选项,你可使一个或多个磁盘组对数据库实例可用或不可用。
在支持单实例的集群ASM 环境中,当该实例故障转移到另外一节点时,手动卸载和装载功
能很是有用。
无论你是加仍是山磁盘组中的磁盘,ASM都能自动进行平衡,确保该磁盘组中的每块盘存储的数据量平均,以实现最优化的IO性能,而且这一过程不会对数据形成影响。
通常
状况下ASM都会自动对其下的磁盘组进行平衡,不过ORACLE也提供了手动平衡磁盘组的方式,
经过alter diskgroup ... power 语句。前面提到过磁盘组的平衡度有1到11多个级别,默认是按照
ASM_POWER_LIMIT初始化参数中设置的值,手动平衡的话,设置的平衡度能够与初始化参数中并不相
同,例如,设置磁盘组平衡度为6,语句以下:
SQL> alter diskgroup DATA rebalance power 6;
Diskgroup altered.
手动平衡磁盘组可能涉及大量的工做,该操做可能费时较久,所以DBA在执行该语句时,必定要注意
该操做对IO 性能的影响。
另外再次强调,上述语句将很快返回diskgroup altered的提示,但这并不表示操做真正完成,它只是反馈语句提交而已,查看磁盘后台的操做,能够经过v$asm_operator视图,或者在语句执行时增长wait子句,这样ASM将会等到操做真正完成时,才返回提示信息。
ASM 磁盘组中文件和目录的管理自动化水平至关高,应该说基本上彻底不须要DBA参与,
固然,也是能够手动修改的。
建立新目录:
SQL> alter diskgroup asmdisk2 add directory '+ASMDISK2/JSS1';
Diskgroup altered.
修改目录名:
SQL> alter diskgroup asmdisk2 rename directory '+ASMDISK2/JSS1'
2 to '+ASMDISK2/JSS2';
Diskgroup altered.
删除目录名:
SQL> alter diskgroup asmdisk2 drop directory '+ASMDISK2/JSS2';
Diskgroup altered.
实际上,ASM中目录和文件的管理,也能够经过ASMCMD命令行方式进行,该命令行进入以后,是一个相似文件系统的管理界面,ORACLE提供了一些最基础的,如cd、ls、mkdir、rm等等几个有限的操做命令。
当系统自动产生的名称太过复杂不怎么好记,DBA能够经过别名,为它建立一
个简单化的名称,而又不会对其现有名称形成任何影响。ASM中建立别名是经过alter diskgroup的alias
子句实现,支持增长/修改/删除等多项操做。V$ASM_ALIAS视图中能够查询到当前实例中建立的别名。
例如,增长别名:
SQL> alter diskgroup asmdisk2 add alias '+ASMDISK2/repdb/datafile/temp01.dbf' for '+ASMDI
SK2/repdb/TEMPFILE/TEMP.267.714576831';
Diskgroup altered.
修改别名:
SQL> alter diskgroup asmdisk2 rename alias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+AS
MDISK2/repdb/TEMPFILE/temp01.dbf';
Diskgroup altered.
删除别名:
SQL> alter diskgroup asmdisk2 drop alias '+ASMDISK2/repdb/TEMPFILE/temp01.dbf';
Diskgroup altered.
无论是添加/删除或是修改别名,对原有文件路径均不会有影响。
- 使用Oracle Enterprise Manager 管理ASM
Oracle Enterprise Manager (EM) 是Oracle 的管理工具系列,管理对象涵盖数据库、中间
件、应用程序、网络、IT 基础结构及其它。Oracle Enterprise Manager 是一个基于浏览器
的环境,为常见ASM 管理任务提供了一个点击式替代方案。
• 每一个磁盘组的兼容性均可以分别控制:
– ASM 兼容性控制磁盘上ASM 元数据结构。
– RDBMS 兼容性控制最低使用者客户机级别。
– ADVM 兼容性肯定磁盘组是否能够包含Oracle ASM 卷。
• 设置磁盘组兼容性的操做是不可逆的。
适用于ASM 磁盘组的兼容性有三种:涉及描述磁盘组的持久性数据结构,客户机(磁盘
组的使用者)的功能,以及可否在磁盘组中包含卷。这些属性分别称为“ASM 兼容性”、
“RDBMS 兼容性”和“ADVM 兼容性”。每一个磁盘组的兼容性均可以独立控制。这是
支持包含Oracle Database 10g和Oracle Database 11g磁盘组的异构环境所必需的。
这三种
兼容性设置是每一个ASM 磁盘组的属性:
•RDBMS 兼容性是指RDBMS 实例的最低兼容版本,此设置将容许该实例装载磁盘组。
该兼容性肯定了ASM 实例与数据库(RDBMS) 实例间交换消息的格式。ASM 实例可
以支持以不一样兼容性设置运行的不一样RDBMS 客户机。每一个实例的数据库兼容版本
设置必须高于或等于该数据库使用的全部磁盘组的RDBMS 兼容性。数据库实例与
ASM 实例一般在不一样的Oracle 主目录中运行。这意味着数据库实例能够运行与
ASM 实例不一样的软件版本。数据库实例第一次链接到ASM 实例时,系统会协定这
两个实例都支持的最高版本。
数据库的兼容性参数设置、数据库的软件版本以及磁盘组的RDBMS 兼容性设置确
定了数据库实例可否装载给定的磁盘组。
•ASM 兼容性是指控制磁盘上ASM 元数据的数据结构格式的持久性兼容性设置。
磁盘组的ASM 兼容性级别必须始终高于或等于同一磁盘组的RDBMS 兼容性级别。
ASM 兼容性只与ASM 元数据的格式相关。文件内容的格式取决于数据库实例。例
如,能够将某个磁盘组的ASM 兼容性设置为11.0,而将该磁盘组的RDBMS 兼容
性设置为10.1。这意味着该磁盘组只能由软件版本为11.0 或更高的ASM 软件管理,
而软件版本高于或等于10.1 的任何数据库客户机均可以使用该磁盘组。
• ADVM 兼容性属性肯定磁盘组可否包含Oracle ASM 卷。该值必须设置为11.2 或更
高。设置该属性前,必须确保COMPATIBLE.ASM的值为11.2 或更高。此外,还必
须加载ADVM 卷驱动程序。
仅当持久性磁盘结构或消息传送协议发生更改时,才须要提升磁盘组的兼容性。可是,
提升磁盘组兼容性是一个不可逆的操做。可使用CREATE DISKGROUP命令或ALTER
DISKGROUP命令来设置磁盘组兼容性。
注:除了磁盘组兼容性,兼容参数(数据库兼容版本)肯定了启用的功能;该参数适用于
数据库或ASM 实例,具体取决于instance_type参数。例如,将该参数设置为10.1 将禁止
使用Oracle Database 11g中引入的任何新功能(磁盘联机/脱机、可变区等)。
CREATE DISKGROUP DATA2 NORMAL REDUNDANCY
DISK '/dev/sda1','/dev/sdb1'
ATTRIBUTE 'compatible.asm'='11.2';
每当建立或更改ASM 磁盘组时,均可以使用CREATE DISKGROUP和ALTER
DISKGROUP命令新增的ATTRIBUTE子句更改其属性。图中的表简要概述了这些
属性:
•ASM 容许使用在建立磁盘组时指定的不一样分配单元(AU) 大小。AU 大小能够是
一、二、四、八、1六、32 或64 MB。
•RDBMS 兼容性:有关详细信息,请参阅“ASM 磁盘组兼容性”一节。
•ASM 兼容性:有关详细信息,请参阅“ASM 磁盘组兼容性”一节。
• 能够用分钟(M)、小时(H) 或天(D) 为单位指定DISK_REPAIR_TIME。若是省略
单位,则使用默认值H。若是省略此属性,则使用默认值3.6H。可使用ALTER
DISKGROUP ... DISK OFFLINE语句覆盖此属性。
• 还能够为指定的模板指定冗余属性。
• 还能够为指定的模板指定条带化属性。
注:对于每一个已定义的磁盘组,能够经过V$ASM_ATTRIBUTE固定视图查看全部已定义
的属性。
- 使用Oracle Enterprise Manager 编辑磁盘组属性
Oracle Enterprise Manager 提供了一种简便方式用于存储和检索与磁盘组相关的环境设置。
在“Create Disk Group(建立磁盘组)”页和“Edit Advanced Attributes for Disk Group
(编辑磁盘组的高级属性)”页中均可以设置兼容属性。仅“Edit Advanced Attributes for
Disk Group(编辑磁盘组的高级属性)”页中添加了disk_repair_time属性。
注:对于低于11g的ASM 实例,默认ASM 兼容性和客户机兼容性都为10.1。对于11g
ASM 实例,默认ASM 兼容性为11.2,数据库兼容性为10.1。
• 使用SQL*Plus:
SQL> SELECT f.type, f.redundancy, f.striped, f.modification_date,
a.system_created, a.name FROM v$asm_alias a, v$asm_file f WHERE
a.file_number = f.file_number and a.group_number = f.group_number
and type='DATAFILE';
TYPE REDUND STRIPE MODIFICAT S NAME
-------- ------ ------ --------- - ---------------------DATAFILE MIRROR COARSE 08-JUL-09 Y SYSTEM.256.689832921
DATAFILE MIRROR COARSE 08-JUL-09 Y SYSAUX.257.689832923
..
• 使用asmcmd:
ASMCMD> ls -l +DATA/orcl/datafile
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE JUL 08 21:00:00 Y SYSTEM.256.689832921
DATAFILE MIRROR COARSE JUL 08 21:00:00 Y SYSAUX.257.689832923
..
检索ASM 元数据
ASM 实例托管基于内存的元数据表,这些表经过动态性能视图呈现。可使用SQL*Plus、
asmcmd或Oracle Enterprise Manager 查询该数据。
使用SQL*Plus 须要具备SQL 语言知识,可能要联接多个动态性能视图来检索相关信息。
第一个示例显示v$asm_file和v$asm_alias之间创建了一个联接,以便
显示关于数据库的数据文件的元数据。若是针对ASM 实例执行此查询,根据语法的定义
方式,将检索多个数据库的数据文件。须要使用附加过滤条件才能将输出限定为单个数
据库。
asmcmd实用程序的优势在于,不须要SQL 语言知识就能链接到ASM 实例并检索元数据。
它使用与UNIX 表示法相似的样式。此幻灯片上的第二个示例使用asmcmd命令来检索
SQL 示例中的元数据。此示例的另外一个优势是输出限制为单个数据库的数据文件,由于
列出的路径包含数据库名称orcl和文件类型datafile。所以,对于asmcmd中显示
的目录,须要使用WHERE子句设置SQL 过滤条件才能给出相同结果。
注:在Oracle Enterprise Manager Database Control 中,只需在各个ASM Web 页中浏览就
能查看大多数ASM 元数据。
ASM 快速镜像从新同步能够显著减小从新同步临时故障磁盘所需的时间。若是某个磁盘
因临时故障而脱机,ASM 将跟踪在中断期间发生修改的区。临时故障被修复后,ASM
能够快速地仅从新同步在中断期间受影响的ASM 磁盘区。
此功能假设受影响的ASM 磁盘的内容未被破坏或修改。
某个ASM 磁盘路径出现故障时,若是您已设置了相应磁盘组的DISK_REPAIR_TIME
属性,则ASM 磁盘会脱机,但不会被删除。此属性的设置肯定了ASM 可容忍的磁盘中
断持续时间;若是中断在此时间范围内,则修复完成后仍可从新同步。
注:跟踪机制对每一个修改的分配单元使用1 位。这样可确保跟踪机制很是高效。
• 使用SQL*plus、asmcmd和Oracle Enterprise
Manager 管理ASM 实例
• 建立和删除ASM 磁盘组
• 指定ASM 兼容性属性
• 扩展ASM 磁盘组
• 比较检索ASM 元数据的方