Using Automatic Storage Management

12 Using Automatic Storage Management

ASM是什么

ASM是一个集成的文件系统,VOL管理器,这是特地为ORACLE文件系统设计的。ASM提供了RAW I/O的性能,并且使文件系统易于管理。通过消除直接管理潜在的几千个数据库文件而简化了数据库管理。ORACE通过把所有可用的存储空间划分为磁盘组来实现这一步。你只需管理很少的一组磁盘组,而ORACLE会自动的在那些磁盘组中分配数据文件。

在用用来创建数据库结构(如表空间,控制文件,在线和归档日志文件)SQL中,你可以根据磁盘组指定文件位置。ASM会为你创建和管理底层的文件。

Mirroring and Striping

ASM扩展了ORACLE管理的文件的能力。通过ORACLE管理的文件,文件会自动并管理。但是通过ASM你可以得到其他的好处,如:镜像,条带化。

ASM把文件分成1M的区间,并且会把这些区间均匀的分布在磁盘组中的各个磁盘上。这些能优化磁盘的性能和磁盘使用率,也使手工I/O性能调整变的不再必要。

ASM镜像比操作系统磁盘镜像更灵活,因为ASM镜像使用文件为基础冗余等级。因此两个文件可以使用同一磁盘组,一个镜像而另一个不作镜像。镜像使用外部冗余等级。一个文件作了镜像,根据为文件设置的冗余等级,一个区间会有一个或多个镜像考贝,镜像考贝通常分布在磁盘组内的不同磁盘上。以下是ASM支持的三类文件级镜像选择:

Table 12-1 ASM Mirroring Options

Mirroring Option

Description

2-way mirroring

Each extent has 1 mirrored copy.

3-way mirroring

Each extent has 2 mirrored copies.

Unprotected

ASM provides no mirroring. Used when mirroring is provided by the disk subsystem itself.

 

Dynamic Storage Configuration

ASM允许你在不用停数据库的同时又能改变存储配置。它会自动重新平衡------在向磁盘组添加或删除磁盘后,ASM重新分布文件的数据,在磁盘组的各个磁盘之间均匀的重新分布文件的数。磁盘失败时,ASM自动重新平衡,以恢复失败磁盘上的文件的全部冗余。当用新磁盘替换了失败磁盘后,ASM重新平衡数据分布,把数据重新均匀的分布到磁盘组中的磁盘上,当然也包括替换上来的那个磁盘在内。

Interoperability with Existing Databases

ASM不会删除数据库的任何现存的功能。现存的使用文件系统或RAW存储的数据库,可以按原有的模式运行。新文件可以使用ASM来创建,已有的文件可以按他们以前的方式 进行管理 。数据库可以存在一种混合模式:ASM文件和非ASM文件

ASM Instance

ASM实例是一种特殊的ORACLE实例,有自己的SGA和一组后台进程,典型的特点:ASM实例有一个比数据库实例小的多的SGA

Single Instance and Clustered Environments

使用ASM管理数据库文件的每个数据库服务器都必须要有一个ASM实例。单机服务器上的一个单一ASM实例可以为一个或多个单实例数据库提供服务。在本机上的所有数据库可以共享本机上的每个ASM磁盘组。

集群环境中,每个节点都运行一个ASM实例,所有的ASM实例在一个对等网a peer-to-peer basis的基础上相互通信。This is true for both Real Application Clusters (RAC) environments, and non-RAC clustered environments where multiple single-instance databases across multiple nodes share a clustered pool of storage that is managed by ASM.对于集群环境,非集群环境中多个单实例数据库通过多个节点共享ASM管理的同一个存储池的情况,对等通信这是事实。如果节点已经是集群系统的一部分,那么对等通信服务就已经在那个节点上安装了,如果没有安装,那么ORACLE集群软件,CRS必须安装在该节点上。

集群中的一个节点的ASM实例可以同时管理一个或多个RAC数据库实例,一个或多个单实例数据库使用的存储。

Overview of the Components of Automatic Storage Management

ASM组成部分:磁盘组,磁盘,失败磁盘组,文件,模板。

Disk Groups

ASM主要组成部分是磁盘组。磁盘组是由一些作为一个单元集中管理的磁盘组成。通过创建磁盘组而配置ASM以存储数据库文件。ORACLE提供SQL语句来创建和管理磁盘组,磁盘组中的内容,以及相关的元数据。

磁盘组的类型决定了在磁盘组中创建文件时的镜像级别。创建磁盘组时可以指定磁盘组类型。下表是磁盘组类型,他们支持的镜像等级,及默认的镜像等级。默认镜像等级表示在创建文件时使用的镜像等级,除非另外指定其他不同的镜像等级。

Table 12-2 Mirroring Options for Each Disk Group Type

Disk Group Type

Supported Mirroring Levels

Default Mirroring Level

Normal redundancy


2-way
3-way
Unprotected (none)

2-way

High redundancy

3-way

3-way

External redundancy

Unprotected (none)

Unprotected

 

创建磁盘组时不指定类型(冗余级别),则磁盘组默认是普通冗余。

上表表明,在一个高冗余磁盘组中的文件通常是3路镜像,在外部冗余磁盘组中的文件是没有ASM镜像的,在普通磁盘组中的文件可有2路,3路,或者不镜像(unprotected),每个文件的镜像等级是由模板指定的,后面再说这个问题。

Disks

磁盘组中的磁盘是ASM DisksWin操作系统中,一个ASM磁盘通常是一个分区。其他平台上,ASM磁盘可以是:

一个逻辑单元LUN

网络附加文件

尽管也可以提出一个卷(一个磁盘的逻辑组合)ASM来管理 ,但是不建议在一个host-based的卷管理器之上再运行ASM

ASM实例启动时,自动搜索所有可用的ASM磁盘。搜索是这样一个过程:确定每一个磁盘设置的I/O权限是否已经被授予了ASM (通过一些操作系统机制),检查这些磁盘的第一个块的内容,看他们是否可以被识别,是属于哪个磁盘组的。ASM在一个初始化参数指定的路径中搜索磁盘,如果这个参数为NULL,则在一个操作系统相关的默认路径中搜索。

 

Failure Groups

失败组定义了共享同样的潜在的失败机制的ASM磁盘。一个失败组的一个例子是:使用同一个SCSI控制器的一组SCSI磁盘。失败组用来确定哪些ASM磁盘用来存放数据的冗余拷贝。例如:文件是2路镜像,ASM自动存储文件区的冗余拷贝到一个单独的失败组中。失败组只会应用于普通和高冗余磁盘组。当创建或修改磁盘组时可以定义磁盘组中的失败组。


Description of the illustration admin070.gif

 

Files

写到ASM磁盘上的文件是ASM文件,ASM会自动生成文件名。也可以为ASM文件指定用户友好的别名(或者只是别名)。也可以为这些文件创建层次目录结构。一个ASM文件完全放在一个单一的磁盘组中,文件空间均匀分布在磁盘组中的所有磁盘上。

 

Templates

模板是文件属性值的集合,用来设置在ASM磁盘组中创建的每种数据库文件(数据文件,控制文件,重做日志等)的镜像,条带化属性。每个磁盘组有与每种文件类型相关的一个默认的模板。See "Managing Disk Group Templates" for more information

可以创建模板以适应独特的需求,然后可以在创建文件时包含一个模板,从而在文件级指定需要的属性,而不是在文件类型级别指定。See "About ASM Filenames" for more information.

 

Administering an Automatic Storage Management Instance

管理ASM实例跟管理数据库实例有点像,但管理任务更少。不需要运行数据库实例也可以管理ASM实例。

可以用SQL*Plus执行所有的管理任务。

为了使用SQL*Plus执行管理任务,必须得在使用之前设置ORACLE_SID环境变量为ASM SID。如果ASM与数据库使用不同的ORACLE HOME,那也必须得设置ORACLE_HOME指向ASM ORACLE HOME,根据平台的不同,可能还需要同时修改其他环境变量 See "Selecting an Instance with Environment Variables" for more information.

单实例数据库默认的ASM SID+ASM,集群中的ASM的默认SID+ASMnode#.

 

可以使用EM或者DBCA来配置或修改磁盘组。DBCA容易配置,创建数据库,而EM则提供了一个集成的图形界面以管理ASM实例和数据库实例。See Appendix A of Oracle Database 2 Day DBA for instructions on administering an ASM instance with EM.

 

Installing ASM

ASM是集成在数据库服务中的,可以使用OUIDBCA来安装,初始化配置它。OUI有一个选项:或者安装或者配置使用ASM作为存储的数据库,或者单独安装配置ASM实例但不创建数据库实例。Refer to the Oracle Database Installation Guide for your operating system for details on installing ASM.

 

ASM Installation Tips

安装ASM时记住这些

当在一个单一的服务器或节点上运行一个以上的数据库实例时,建议在那个机器或节点上把ASM安装在他自己的ORACLE HOME中。这是明智的,即使现在只运行一个数据库实例,但将来打算在这些服务器或节点上添加一个或多个数据库实例。

使用单独的ORACLE HOMES,对ASM和数据库,可以单独的对他们升级或打补丁。也可以卸载数据库软件而不影响ASM实例。

如果ASM实例不存在,你只是选择OUI选项来安装配置ASMOUIASM安装到他自己的ORACLE HOME

如果在一个服务器或节点上只运行一个数据库实例,并且也不打算添加一个或多个数据库实例,那么ASM与数据库可以共享同一个ORACLE HOME

如果ASM实例不存在,选择OUI选项来创建使用ASM作为存储的数据库,OUI creates this single-home configuration.

在单实例配置中安装ASMDBCA会为ASM创建SPFILE,密码文件

在集群中安装ASM,并且所有的节点共享同一个ASM ORACLE HOMEDBCAASM创建SPFILE。在不共享ASM ORACLE HOME的集群环境中,DBCA为各个节点的ASM创建PFILE

See the ASM page of the Oracle Technology Network web site at http://www.oracle.com/technology/products/database/asm for more information on ASMLib. To download ASMLib for Linux, go to http://www.oracle.com/technology/tech/linux/asmlib.

 

Authentication for Accessing an ASM Instance

管理ASM实例跟管理数据库实例有点像,但管理任务更少。不需要运行数据库实例也可以管理ASM实例。

可以用SQL*Plus执行所有的管理任务。

为了使用SQL*Plus执行管理任务,必须得在使用之前设置ORACLE_SID环境变量为ASM SID。如果ASM与数据库使用不同的ORACLE HOME,那也必须得设置ORACLE_HOME指向ASM ORACLE HOME,根据平台的不同,可能还需要同时修改其他环境变量 See "Selecting an Instance with Environment Variables" for more information.

单实例数据库默认的ASM SID+ASM,集群中的ASM的默认SID+ASMnode#.

 

可以使用EM或者DBCA来配置或修改磁盘组。DBCA容易配置,创建数据库,而EM则提供了一个集成的图形界面以管理ASM实例和数据库实例。See Appendix A of Oracle Database 2 Day DBA for instructions on administering an ASM instance with EM.

 

Installing ASM

ASM是集成在数据库服务中的,可以使用OUIDBCA来安装,初始化配置它。OUI有一个选项:或者安装或者配置使用ASM作为存储的数据库,或者单独安装配置ASM实例但不创建数据库实例。Refer to the Oracle Database Installation Guide for your operating system for details on installing ASM.

 

ASM Installation Tips

安装ASM时记住这些

当在一个单一的服务器或节点上运行一个以上的数据库实例时,建议在那个机器或节点上把ASM安装在他自己的ORACLE HOME中。这是明智的,即使现在只运行一个数据库实例,但将来打算在这些服务器或节点上添加一个或多个数据库实例。

使用单独的ORACLE HOMES,对ASM和数据库,可以单独的对他们升级或打补丁。也可以卸载数据库软件而不影响ASM实例。

如果ASM实例不存在,你只是选择OUI选项来安装配置ASMOUIASM安装到他自己的ORACLE HOME

如果在一个服务器或节点上只运行一个数据库实例,并且也不打算添加一个或多个数据库实例,那么ASM与数据库可以共享同一个ORACLE HOME

如果ASM实例不存在,选择OUI选项来创建使用ASM作为存储的数据库,OUI creates this single-home configuration.

在单实例配置中安装ASMDBCA会为ASM创建SPFILE,密码文件

在集群中安装ASM,并且所有的节点共享同一个ASM ORACLE HOMEDBCAASM创建SPFILE。在不共享ASM ORACLE HOME的集群环境中,DBCA为各个节点的ASM创建PFILE

See the ASM page of the Oracle Technology Network web site at http://www.oracle.com/technology/products/database/asm for more information on ASMLib. To download ASMLib for Linux, go to http://www.oracle.com/technology/tech/linux/asmlib.

 

Authentication for Accessing an ASM Instance

ASM安全因素衍生自这样一个事实:运行在同一个服务器上的一个特殊的ASM实例与一个或多个数据库实例紧密的联系在一起。事实上ASM实例是这些数据库实例的一个逻辑扩展。对于磁盘组中的磁盘成员,ASM实例和数据库实例必须要有相同的操作系统访问权限(读,写)。对UNIX这可以通过共享组成员关系实现,See the Oracle Database Installation Guide for your operating system for information on how to ensure that the ASM and database instances have the proper access to member disks.

ASM实例没有数据字典,连接到实例的唯一途径是作为管理员连接。这意味着你使用操作系统授权并作为SYSDBA来连接,或者使用密码文件,通过ORACLE网络服务名过程连接。

 

Operating System Authentication for ASM

使用操作系统授权,进行本地连接的SYSDBA权限是通过一个特殊的操作系统用户组来授权的。通常指的是       OSDBA(UNIXOSDBA就是   dba) See "Using Operating System Authentication" for more information about OSDBA.

默认情况下,OSDBA组的成员被授予了该节点上所有实例的SYSDBA的连接权限,包括ASM实例。使用SYSDBA权限连接到ASM实例的用户,对ASM管理的磁盘组具有全部管理控制权。

数据库ORACLE HOME软件所有者对应的用户(通常是oracle)必须是为ASM ORACLE HOME而定义的OSDBA组的一个成员。这是一个案例:当ASM与单实例数据库共享同一个ORACLE HOME时。如果ASM与数据库实例安装在不同的目录中,必须确认你已经正确的配置了组成员,不然的话数据库实例会连接不上ASM实例。

 

Password File Authentication for ASM

启用远程管理(通过网络服务名),则必须为ASM创建密码文件,EM也需要密码文件才能连接到ASM

DBCA初始化配置ASM磁盘组时,会为ASM创建密码文件。跟数据库密码文件一样,在创建时添加到密码文件中的唯一用户是SYS。如果要添加其他用户,则必须共享相应数据库实例的密码文件,并添加相应数据库的用户。

如果不使用DBCA配置ASM,则必须手工创建一个密码文件。

 

 

Setting Initialization Parameters for an ASM Instance

ASM实例可以有自己的参数文件,跟数据库实例一样,可以有SPFILE或者文本文件。

在集群环境中的安装ASM,除非使用共享的ASM ORACLE HOME,否则不会使用SPFILE,不使用共享的ASM ORACLE HOME,各实例使用自己的PFILE

ASM参数文件通过在文件名中加入SID,所以与数据库参数文件名不同。(单实例数据库ASM默认实例名是+ASM,集群环境中ASM实例名则为+ASMnode#)。对数据库而言的一些参数文件的默认规则:默认位置,默认搜索顺序,同样也适用于ASM参数文件。因此,单实例UNIX平台,ASM服务器参数文件格式为:

For more information about initialization parameter files, see "Understanding Initialization Parameters".

一些特殊的初始化参数是与ASM相关,在那些也是给数据库实例使用的初始化参数文件中,只有一小部分是与ASM实例相关的。在使用DBCA创建数据库期间,或者是后来使用EM都可以设置这些参数。剩下的部分描述了通过编辑初始化参数文件,手工设置这些参数。

 

Initialization Parameters for ASM Instances

以下参数跟ASM实例相关,ASM_开头的参数不能在数据库实例中设置。

 

INSTANCE_TYPE必须设置成ASM,这是唯一必须的参数。所有其他有合适默认值的参数对大多数系统都能用。

ASM_POWER_LIMIT磁盘平衡的默认能力。默认值是1,取值范围:0-11See Also: "Tuning Rebalance Operations"

ASM_DISKSTRING 一个逗号分隔的字符串列表,他限制了ASM搜索时的磁盘集合。可包含通配符。只有与字符串匹配的磁盘才会被搜索到,字符串格式与所在的平台及所使用的ASM库相关。ASM使用的标准系统库支持一团模式匹配glob pattern matching

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

See Also: "Improving Disk Discovery Time"

ASM_DISKGROUPS ASM实例启动时可以安装磁盘组列表,或者是ALTER DISKGROUP ALL MOUNT语句使用时的磁盘组列表。

默认值是: NULL,如果没有设置该值,则不会安装任何磁盘组。

如果使用SPFILE,则这个参数是动态修改的,没有必要手工修改这个值。当成功创建或安装一个磁盘后,ASM会自动把磁盘组添加到这个参数中,当一个磁盘组被删除或卸载时,ASM自动从这个参数中删除相应的磁盘组。当使用文本参数文件PFILE时,必须编辑PFILE,添加希望自动安装的磁盘组名到这个参数中,或者删除不希望自动安装的磁盘组名。

Note: Issuing the ALTER DISKGROUP...ALL MOUNT or ALTER DISKGROUP...ALL DISMOUNT command does not affect the value of this parameter.

 

Tuning Rebalance Operations

ALTER DISKGROUP中没有指定POWER子句,或者在增加,删除磁盘时隐式调用重新平衡也没有指定POWER,重新平衡能力默认是初始化参数ASM_POWER_LIMIT的值。可以动态调整该参数,The higher the limit, the faster a rebalance operation may complete,值越高,重新平衡的时间就会越短,速度就会越快。值越低,重新平衡就会需要更长的时间,但会消耗更少的处理和IO资源,这可以把其他可用的资源留给其他应用,例如数据库。默认值是1,对其他应用程序来说,这会引起最小的中断。该参数的适当值既与硬件配置有关也与性能及可用性需求相关。

因为一个磁盘被手工或自动删除了,重新平衡正在进行中,增加重新平衡的能力可以减小被删除磁盘上的数据拷贝在其他磁盘上重建所用的时间窗口。

V$ASM_OPERATION也提供了信息可以用来调整ASM_POWER_LIMIT以及重新平衡操作的目标值the resulting power。V$ASM_OPERATION 中的EST_MINUTES字段提供了一个大约值,该值表示剩余平衡操作完成还需要多少时间,通过观察剩余时间的变化可以看到改为重新平衡能力所产生的影响。

 

Improving Disk Discovery Time

ASM_DISKSTRING 是一个操作系统相关的值,

搜索进程可以用来控制搜索路径的集合。当一个新磁盘被添加到磁盘组中时,每一个安装该磁盘组的ASM实例一定能通过他的ASM_DISKSTRING找到这个新磁盘。

在很多情况下,这个参数的默认值(NULL)就足够了。使用一个更有限制性的值可以减少ASM需要的用来执行搜索所需要的时间,因此能提高磁盘组的安装时间或者添加新磁盘到磁盘组中的时间。在添加磁盘前可能需要动态修改ASM_DISKSTRING,这样通过这个参数新磁盘会被搜索到。

ASM_DISKSTRING的默认值可能找不到所有情况下的全部磁盘。如果你的站点使用第三方供应商提供的ASMLib,那个供应商可能有搜索字符串约定,你需要设置ASM_DISKSTRING。另外,如果安装使用多路径软件,软件会把虚拟设备写到路径中,这些设备并不是操作系统默认的设备。参考多路径供应商文档获得更多信息。

 

Behavior. of Database Initialization Parameters in an ASM Instance

如果在ASM初始化文件中指定数据实例初始化参数,则会有下面几个影响中的一个:

如果参数在ASM实例中是无效参数,则会产生ORA-15021 error

如果数据库参数在ASM实例中是有效的,例如:与目标DUMP相关的参数,一些缓冲区设置参数,ASM接受这些参数。总之,ASM为任何与ASM 实例相关的数据库参数选择合适的默认值

 

Behavior. of ASM Initialization Parameters in a Database Instance

如果在数据库实例参数文件中指定任何ASM特定参数(ASM_开关的参数),将会收到ORA-15021错误

 

Starting Up an ASM Instance

ASM实例启动时与ORACLE数据实例的启动相似,但存在很小的差异:

要通过SQL*Plus连接到ASM,必须设置ORACLE_SID环境变量以指向ASM SID。单实例数据库的默认ASM SID+ASM,集群环境中默认的ASM SID+ASMnode#。依赖于操作系统和你是否把ASM安装在他自己的ORACLE HOME中,你可能要修改其他环境变量。For more information, see "Selecting an Instance with Environment Variables".

初始化参数文件, 该文件可以是SPFILE,必须包含:

INSTANCE_TYPE=ASM

这个参数告知ORACLE可执行程序,一个ASM实例正在启动而不是数据库实例。

STARTUP命令试图安装初始化ASM_DISKGROUPS指定的磁盘组,而不是加载和打开一个磁盘。如果ASM_DISKGROUPS是空的,ASM实例启动并告警:没有安装任何磁盘组。随后可以通过ALTER DISKGROUP。。。MOUNT命令安装磁盘组。

SQL*Plus中的STARTUP命令参数被ASM解释成如下:

FORCE 在重启ASM实例前,向ASM实例发出SHUTDOWN ABORT

MOUNTOPEN 安装ASM_DISKGROUPS参数指定的磁盘组,如果不指定没有命令参数则这是默认动作。

NOMOUNT 启动ASM实例,但不安装任何磁盘组

示例:

ASM Instance Memory Requirements

ASM实例比数据库实例小的多。除了最大的ASM安装,那么一个64MBSGA对所有的安装就足够了。对于一个典型的ASM实例来说,总内存footprint大约是100MB

 

CSS Requirement

CSS daemon是用来在ASM实例与它的客户端数据库实例之间同步数据。在用DBCA来创建数据库时,CSS daemon通常是启动的(并且被配置成在重启时启动的)。如果不用DBCA来创建数据库,必须确认在启动数据库实例前CSS daemon是启动的。

 

CSS Daemon on the Linux and Unix Platforms

可以通过命令:crsctl check cssd来检查CSS daemon是否正在运行。如果收到CSS appears healthy,则表明CSS daemon正在运行中。

启动CSS daemon并且配置主机总是在重启时启动该CSS daemon,这样做:

1.               root用户登录主机

2.               确认$ORACLE_HOME/binPATH环境变量中

3.               输入:localconfig add

 

CSS Daemon on the Windows Platform

Windows平台上也可以通过:crsctl,localconfig命令来检查CSS daemon的状态或者启动CSS Daemon.如果更喜欢使用图形用户工具,这样做:

为了确认CSS Daemon是否正确的配置并运行,双击Services图标在控制面板中,找到OracelCSService服用。他的状态应该是已经启动并且启动类型为自动启动。

 

Disk Discovery

ASM实例初始化时,ASM会搜索并且检查初始化参数ASM_DISKSTRING参数指定的路径中的全部磁盘的内容。在这里,一个磁盘是按照 "Overview of the Components of Automatic Storage Management".来定义的ASM磁盘。下面的情况也会发现磁盘搜索:

运行ALTER DISKGROUP 。。。ADD DISKALTER DISKGROUP 。。。RESIZE DISK命令。

查询v$asm_diskgroup,v$asm_disk视图。

在一个磁盘被搜索到后,该磁盘会出现在v$asm_disk。属于磁盘组的磁盘也会出现在这个视图中,在磁盘头部会有一个磁盘组名字,磁盘头部的状态是:MEMBER。被搜索到的磁盘如果还没有被分配到其他磁盘组则该磁盘头部的状态是:CADIDATE或者PROVISIONED

头部状态是PROVISIONED,这说明有管理员已经在另一个特定的平台上把这个磁盘设为了ASM磁盘。例如:Windows上,管理员用asmtool或者asmtoolg标记一个磁盘的头部,或者Linux平台上,管理员使用ASMLib将磁盘设置为ASM磁盘。

这个查询 6MEMBER磁盘,1CANDIDATE磁盘

SQL> select name, header_status, path from v$asm_disk;
 
NAME         HEADER_STATUS PATH
------------ ------------- -------------------------
             CANDIDATE     /dev/rdsk/disk07
DISK06       MEMBER        /dev/rdsk/disk06
DISK05       MEMBER        /dev/rdsk/disk05
DISK04       MEMBER        /dev/rdsk/disk04
DISK03       MEMBER        /dev/rdsk/disk03
DISK02       MEMBER        /dev/rdsk/disk02
DISK01       MEMBER        /dev/rdsk/disk01
 
7 rows selected.

 

Discovery Rules

搜索规则:

ASM搜索的磁盘不超过10,000个,因为,如果参数ASM_DISKSTRING中匹配的磁盘超过10,000,只有前10,000个能被搜索到。

ASM不会搜索包含操作系统分区表的磁盘,即使这个磁盘出现在ASM_DISKSTRING搜索路径中,并且ASM对这些磁盘有读写权限。

如果ASM识通过磁盘头部识别出这是一个ORACLE对象,例如:ORACLE数据文件的头部,这个磁盘就是要搜索的磁盘,但是只能通过FORCE关键字添加到磁盘中。这样的磁盘在V$ASM_DISK中的头部状态是FOREIGN

另外,ASM在搜索过程中会发现以下配置错误:

同一个磁盘有多个访问路径

这种情况下,如果一个磁盘属于一个磁盘组,磁盘组就会安装失败。如果磁盘能过ADD DISK或者CREATE DISKGROUP命令添加到磁盘组中,这两个命令会失败。为了修正这个问题,限制ASM_DISKSTRING使它不再包含同一个磁盘的多个访问路径,或者使用多路径软件,确认在ASM_DISKSTRING中只包含一个虚拟设备。

多个ASM磁盘有相同的磁盘头部信息

这可能是因为从一个盘到另一个盘的bit拷贝引起的,这种情况下磁盘组安装会失败。

 

 

 

Disk Group Recovery

像其他的文件系统,或者卷管理器一样,如果ASM实例失败,那么同一节点上的所有使用ASM实例管理的磁盘组的ORACLE数据库实例也会失败,在ASM元数据打开更新时,如果ASM实例失败,那么在ASM实例重新初始化后,ASM实例读取磁盘组日志,并恢复全部临时变化

多个ASM实例共享磁盘组时,如果一个ASM实例失败,其他ASM实例会自动恢复由失败实例引起的临时的ASM元数据变化。在这里如果数据库实例失败并没有什么影响,因为只有ASM实例会更新ASM元数据。

 

Shutting Down an ASM Instance

 SQL*Plus中使用SHUTDOWN关闭ASM

要连接到ASM实例,必须先确认ORACLE_SID环境变量已经设置成ASM SID,根据操作系统以及是否把ASM安装到他自己的ORACLE HOME中,在全用SQL*Plus前,你可能还需要修改其他环境变量。For more information, see "Selecting an Instance with Environment Variables".

% sqlplus /nolog
SQL> CONNECT / AS sysdba
Connected.
SQL> SHUTDOWN NORMAL

SHUTDOWN的模式以及ASM实例在各种模式中的动作。

NORMAL, IMMEDIATE, or TRANSACTIONAL

在执行一个正常的卸载磁盘组并关闭ASM实例前,ASM会等待正在处理中的SQL,直到SQL完成。如果还有数据库实例连接到该ASM实例,那么SHUTDOWN命令会返回错误,并且ASM实例会继续运行。

ABORT

ASM实例会立即关闭,但不执行正常的卸载磁盘的操作。在正次启动时需要恢复实例。任何连接到该ASM实例的数据库实例也会中止。

强烈建议在关闭ASM实例前先关闭所有使用该ASM实例的数据库实例。

 

Administering Automatic Storage Management Disk Groups

创建,管理自己的ASM磁盘组。如果有一个或多个使用ASM实例的数据库实例,在管理磁盘组时,他们可以保持打开状态。

可以能过DBCAEMSQL*Plus 来管理ASM磁盘组。另外,ASM命令行,ASMCMD可以更容易的浏览,操作磁盘组中的文件和目录。

 

本节中提到的SQL语句只能用于ASM实例

·         Considerations and Guidelines for Configuring Disk Groups

·         Creating a Disk Group

·         Altering the Disk Membership of a Disk Group

·         Mounting and Dismounting Disk Groups

·         Checking Internal Consistency of Disk Group Metadata

·         Dropping Disk Groups

·         Managing Disk Group Directories

·         Managing Alias Names for ASM Filenames

·         Dropping Files and Associated Aliases from a Disk Group

·         Managing Disk Group Templates

Considerations and Guidelines for Configuring Disk Groups

以下是在配置磁盘组时需要知道的需要考虑的事情和指导。

 

Determining the Number of Disk Groups

以下标准可以帮助你确定你要创建的磁盘组的数量。

在一个磁盘组中的磁盘要有相同的大小和性能。如果有几个大小和性能不同的磁盘,那么最好据此组成几个磁盘组。

考虑到恢复因素,存在单独的数据库文件磁盘组和闪回恢复区磁盘组会感觉更合适。能过这些途径,即使丢失一个磁盘组,数据库仍能完整无缺。

 

Performance Characteristics when Grouping Disks

ASM消除了手工手工I/O调整的要求。然而,为了确保可靠的性能,应当避免把不相同的磁盘放到同一个磁盘组中。例如:最新,最快的磁盘组成的磁盘组会留给数据库工作区,慢一点的磁盘所在的磁盘组用作闪回恢复区。

在所有磁盘组之间统一分布文件区间实现ASM负载平衡。为了保持这个技术手段有效,同一个磁盘组中要使用相同性能牲的磁盘。

可能会有这样一类情形,需要临时接受一个磁盘组中大小和性能不同的磁盘共存。这种情形是:从一组老的磁盘迁移数据到一组新的磁盘上。添加新磁盘,删除原来的磁盘。当旧的磁盘删除时,新磁盘组一旦在上线,存储就会迁移到新磁盘上。

 

Effects of Adding and Dropping Disks from a Disk Group

无论何时,当添加或删除磁盘时ASM自动重新平衡。对于一个正常的删除操作(不使用FORCE选项),通过重新平衡,在数据从磁盘上移走之前,磁盘不会从磁盘组中释放。同样,a newly added disk cannot support its share of the I/O workload until rebalancing completes。同时添加或删除多个磁盘将会更有好处,这样可以在同一个操作中完成平衡的工作。

对于一个删除操作,当重新平衡完成时,ASM会立即把这个磁盘下线,然后删除该磁盘,并把磁盘头部状态置为:FORMER

 

How ASM Handles Disk Failures

根据磁盘组定义的冗余级别和失败组,一个或多个磁盘失败结果会是下面中的一个:

磁盘先下线,然后自动删除。

由于镜像,磁盘组保持安装并提供服务,所有磁盘组数据保持可以访问。在磁盘删除后,ASM执行一个平衡为失败磁盘上的所有冗余数据恢复冗余(为数据重新建立冗余?)

整个磁盘组自动卸载,这意味着所有的数据将不能再访问了。

 

 Disk failure in this context means individual spindle failure or failure of another disk subsystem component,例如:电源,控制器或主机总线适配器。以下是ASM如何处理这些失败:

A failure group is considered to have failed if at least one disk in the failure group fails.

一个普通冗余磁盘组可以承受一个失败组出现失败。如果只有一个失败组失败了,磁盘组保持安装和对外服务,ASM在可用的磁盘中执行一个平衡操作,以恢复失败磁盘上的数据的冗余级别。如果有一个以上的失败组失败了,ASM卸载该磁盘组。

高冗余级别磁盘组可以承受一个或两个失败组出现失败。如果一个或两个失败组失败了,磁盘组保持安装和对对外服务,ASM在可用的磁盘中执行一个平衡,以恢复失败磁盘上的数据的冗余级别。如果有两个以上的失败组挂了,那ASM卸载该磁盘组。

外部冗余磁盘组不能承受磁盘组中的任何磁盘出现问题。任何类型的磁盘失败都会导致ASM卸载该磁盘组。

当考虑到这些规则,那么就应该记住,在使用CREATE DISKGROUP时,如果没有明确的为磁盘指定一个失败组,ASM把这个磁盘放在他自己的失败组中。同样,失败组中的一个磁盘出现了失败,不会影响失败组中的其他磁盘。例如:一个失败组同6个磁盘组成,并连接到同一个磁盘控制器。如果6个磁盘中的一个失败了,其他5个可以继续工作。失败的磁盘被从磁盘组中删除,其他5个继续保留在磁盘组中。根据前面提到的规则,磁盘组可以保持安装,或者被卸载掉。

ASM删除了一个磁盘,当这个磁盘修复或替换后,这个磁盘不会自动加回到磁盘组中。你必须能过ALTER DISKGROUP。。ADD DISK命令将磁盘重新加回到磁盘组中。同样,当ASM自动卸磁盘组时,你也得能过ALTER DISKGROUP 。。。MOUNT重新加载磁盘组。

 

Failure Groups and Mirroring

元数据镜像,用户数据能过失败组备份。系统可用性会因为使用一个不充分的失败组而受到影响。因些,创建一个高可用系统,配置失败组就很重要了。以下是与失败组有关的一些规则和提示:

# 磁盘组中的一个磁盘严格的属于一个磁盘组。

# 一个磁盘被指派了一个失败组后,不能再为磁盘指定另一个失败组。如果需要指定另一个失败组,可以从一个磁盘组中删除然后再添加回来。因为失败组选项与硬件配置有关,一个磁盘不需要重新指定,除非磁盘物理的移动了。

# 最好是所有失败组都有相同的大小,不同大小的失败会导致磁盘空间浪费。

ASM需要至少两个失败组才能创建一个普通冗余磁盘组,至少三个失败组才创建一个高冗余磁盘组。这表明,如果不明确定义失败组,一个普通冗余磁盘组需要至少两个磁盘,一个高冗余磁盘组至少需要三个磁盘。

# 很多系统不需要明确定义失败组。把每个磁盘放到他自己的失败组中的这个默认的行为,对多数安装来说工作的很好。失败组只在大型,复杂的系统中用来保护失败而不是单点故障Failure groups are only needed for large, complex systems that need to protect against failures other than individual spindle failures.

# 根据可以承受的不丢失数据可用性类型选择失败组。对于少量磁盘(少于20)通常最好使用默认失败组,每一个磁盘在他自己的失败组中。当主要关心单点故障时,对磁盘很多的情况也适用。如果需要保护因为一个组件失败引起的多个磁盘连续失败的情况时,可以指定失败组。例如:一个磁盘组可能由几个小型磁盘阵列组成,系统需要在一个阵列失败时继续可用,一个失败组需要包含一个模块的全部磁盘。如果一个模块失败了,重新平衡就会在可用模块中执行,以恢复失败组中的数据的冗余级别,You must place disks in the same failure group if they depend on a common piece of hardware whose failure needs to be tolerated with no loss of availability.

# 在有些情况下,使用少量的大失败组实际上会降低可用性。例如:磁盘组中的一半磁盘连接到同一个电源,另一半连接到另一个电源。如果这被 用来把磁盘组分成两个失败组,一个电源中断会丢掉磁盘组中的一半磁盘。恢复丢掉磁盘上数据的冗余级别将需要从可用磁盘上拷贝全部数据。这可以在线操作,但会消耗大量的I/O,并会导致在复制数据过程中出现单点故障。然而,如果每个磁盘在自己的失败组中,当电源中断时磁盘组将会卸载,(假设这导致很多失败组挂了,并超出了磁盘组可承受的要求)恢复电源将允许磁盘组手工安装,并且不需要复制数据。

 

Managing Capacity in Disk Groups

每一个磁盘组中必须要有的空闲空间以应对将会面对的最大失败。在一个或多个磁盘失败后,为所有数据恢复冗余等级的处理过程需要该磁盘组中可用磁盘的空间。如果没有足够的空间可用,一个文件会降低级别。

降低冗余等级意味着,文件中的一个或多个区间在不会有预期等级的镜像。例如:在高冗余等级磁盘组中,一个降低冗余等级的文件只会有文件区间的两个或更少的拷贝,而不是区间的三个拷贝。在不保护文件的情况下,数据区间可能会同时丢失。降低文件冗余等级的其他原因有磁盘空间不足,或失败组数量不足。V$ASM_FILE的列REDUNANCY_LOWERED表示一个文件是降低冗余的文件。

以下的提示可帮助确认:在一个或多个磁盘失败时,恢复磁盘组中这些失败磁盘的冗余等级是否有充足的空间。

# 在一个普通冗余级别的磁盘组中,磁盘组中最好是有足够的空闲空间以承受一个失败组中所有磁盘都出现了数据丢失。空闲空间的总量跟最大失败组的大小是相同的。

# 在一个高冗余等级磁盘组中,最好是有能应付两个失败组中的磁盘同现数据丢失的足够空闲空间。空闲空间的总量等于两个最大失败组的总大小。

V$ASM_DISKGROUP中有些列可帮助管理这个容量:

# REQUIRED_MIRROR_FEE_MB表明磁盘组中的可用空间总量,在磁盘组出现了可以承受的最坏的失败情况下,可以恢复全部冗余。

# USABLE_FILE_MB表明空闲空间总量,已经为镜像做过整理adjusted for mirroring,也是新文件可以使用的空间。

USABLE_FILE_MB是从磁盘组可用空间减去REQUIRED_MIRROR_FREE_MB,然后再调整为镜像后的值。例如,一个普通冗余磁盘组,默认镜像文件占用磁盘空间是两倍文件大小 ,如果有4G实际可用空间,USABLE_FILE_MB大约等于2G,你可以添加一个2G文件。

以下查询描述:对于一个普通冗余磁盘组的容量计算方法,该磁盘组有61G磁盘,每个磁盘在自己的失败组中。

select name, type, total_mb, free_mb, required_mirror_free_mb, 
usable_file_mb from v$asm_diskgroup;
 
NAME         TYPE     TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------------ ------ ---------- ---------- ----------------------- --------------
DISKGROUP1   NORMAL       6144       3768                    1024           1372

REQUIRED_MIRROR_FREE_MB列显示1G的额外空间必须可用,这样才能在一个或多个磁盘失败后足可以恢复冗余。查询结果中的前三个数据列是原始数值,也就是说他们没有计入冗余。只有最后一列是已经考虑上了冗余后的值。也就是:

FREE_MB - REQUIRED_MIRROR_FREE_MB = 2 * USABLE_FILE_MB
 
or
 
3768 - 1024 = 2 * 1372 = 2744

Negative Values of USABLE_FILE_MB 因为FREE_MB, REQUIRED_MIRROR_FREE_MB, and USABLE_FILE_MB, USABLE_FILE_MB之间的关系,可以为负值。Although this is not necessarily a critical situation, it does mean that:

# 根据FREE_MB的值,你将不能创建文件

# 下一个失败可能会导致文件降低冗余。

如果USABLE_FILE_MB变为负值,强烈建议只要有可能就向磁盘组增加更多空间。

 

Scalability

ASM使用以下限制:

# 一个存储系统中有63个磁盘组

# 一个存储系统中有10,000ASM磁盘

# 每个ASM磁盘最大存储是4PB

# 每个存储系统最大40EB

# 一个磁盘组有1百万个文件

# 最大文件大小:

Disk Group Type

Maximum File Size

External redundancy

35 TB

Normal redundancy

5.8 TB

High redundancy

3.9 TB

 

Creating a Disk Group

可以使用CREATE DISKGROUP语句创建磁盘组。可以为磁盘组指定一个名字,指定磁盘组使用的磁盘,并把这些磁盘格式化为ASM磁盘。为这些磁盘指定一个或多个操作系统相关的搜索字符串,ASM使用这个串来搜索磁盘。

可以指定特定失败组的磁盘,可以为磁盘组指定冗余级别。

如果想要ASM镜像文件,指定冗余等级为NORMAL REDUNDANCY(默认的2路镜像适合多数文件类型)HIGH REDUNDANCY(为所有的文件3 镜像)。如果不要求ASM镜像则指定外部冗余。例如:如果使用存储阵列保护,则可以选择EXTERNAL REDUNDANCYSee the Oracle Database SQL Reference for more information on redundancy levels. See "Overview of the Components of Automatic Storage Management" and "Failure Groups and Mirroring" for information on failure groups.

ASM programmatically determines the size of each disk。如果由于某些原因这不可用,或者你想限制磁盘上使用的空间的总量,你需要为每个磁盘指定SIZE子句。ASM为磁盘组中的磁盘创建一个与操作系统无关的名字,在其他SQL语句中可以引用这些磁盘。可选的,通过NAME子句也可以为磁盘指定一个名字。磁盘名字显示在V$ASM_DISK中。

ASM实例需要确认任何添加到新创建磁盘组中的磁盘都是可寻址的,可访问的,并且也不是其他磁盘组的成员。这需要读取磁盘的第一个块以确认该磁盘是否已经是划分给一个磁盘组。如果不是,一个头部信息就会写到磁盘上的第一个块中。一个磁盘成为多个磁盘组的一个成员,这是不可能的。

如果磁盘有一个头表明他已经属于另一个磁盘,通过使用FORCE,也可以强制该磁盘成为一个要创建的磁盘组的成员,例如:一个有ASM头信息的磁盘暂时性失败了,当从磁盘组中删除时,该头部信息没能清除。当磁盘修好后,他不在任何磁盘组的成员,但该磁盘仍有一个头部信息。这时就可以使用FORCE标志,把该磁盘添加到一个新磁盘组中。原来的磁盘组不能安装,该磁盘组还有一个磁盘头部信息,否则该操作会失败。如果这样做了则会导致另一个磁盘组也变的不可用。如果指定NOFORCE,这是默认情况,试图添加一个已经属于另一个磁盘组的磁盘将会收到一个错误信息。

 

 

CREATE DISKGROUP语句第一次会安装磁盘组,如果使用SPFILE则会添加磁盘组名到ASM_DISKGROUPS参数。如果使用PFILE,并且希望实例启动时自动安装磁盘组,则需要记住在下次关闭并重启ASM实例前,添加磁盘组名到ASM_DISKGROUPS参数中

 

Creating a Disk Group: Example

假定ASM_DISKSTRING参数设置为’/devices/*’

l        /devicesASM搜索找到了以下磁盘:

/devices/diska1

/devices/diska2

/devices/diska3

/devices/diska4

/devices/diskb1

/devices/diskb2

/devices/diskb3

/devices/diskb4

Diska1-diska4Diskb1-diskb4不在同一个控制器上。

启动ASM实例,并创建一个磁盘组dgroup1

% SQLPLUS /NOLOG
SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP NOMOUNT
SQL> CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY 
  2  FAILGROUP controller1 DISK
  3 '/devices/diska1',
  4 '/devices/diska2',
  5 '/devices/diska3',
  6 '/devices/diska4'
  7 FAILGROUP controller2 DISK
  8 '/devices/diskb1',
  9 '/devices/diskb2',
 10 '/devices/diskb3',
 11 '/devices/diskb4';

dgroup18个磁盘组成,这些磁盘分别属于失败组controller1controller2。因为给磁盘组指定了NORMAL REDUNDANCY等级,根据系统默认模板中的镜像设置,ASM为每种类型的数据库文件提供镜像。

例如:系统默认模板中,在线日志文件(ONLINE模板)的普通冗余磁盘组的默认冗余是镜像。这意味着,当有在线日志文件区间的一个拷贝被写到失败组controller1,一个镜像拷贝也会写到失败组controller2中。可以看到为了支持普通冗余磁盘组的默认镜像,至少要定义两个失败组。

如果不指定失败组,则每个磁盘自动放在他自己的失败组中。

因为没使用NAME子句,系统为磁盘指定了名字:dgroup1_0001, dgroup1_0002, ..., dgroup1_0008

如果没有使用NAME子句,但使用ASMLib为磁盘指定了一个Label,该Label作为磁盘名字使用。

 

Altering the Disk Membership of a Disk Group

创建了磁盘组后,通过一些操作可以变更磁盘组的组成:添加更多的磁盘,调整磁盘大小,删除磁盘。使用ALTER DISKGROUP来执行操作。在一个ALTER DISKGROUP中可能同时执行多个操作。

当磁盘组成发了变化,ASM会自动重新平衡。因为重新平衡可能是一个长时间运行的操作,ALTER DISKGROUP默认不会等到所有的操作都已经完成才返回。可以通过发V$ASM_OPERATION监视长时间运行的操作。

如果希望在执行ALTER DISKGROUP时,直到所有的平衡操作都完成才返回,可以指定REBALANCE WAIT子句。在脚本中这很有用。语句也接受REBALANCE NOWAIT子句,这会调用默认的操作在后台异步完成数据平衡。在多数平台上通过CTL-C可以中断一个等待模式的平衡操作。命令会立即返回,并显示ORA-01013: user requested cancel of current operation,操作会继续异步执行,CTRL-C不会取消平衡操作或者任何磁盘添加,删除,重设大小的操作。

为了控制重新平衡操作的速度和资源消耗,可以在add, drop, or resize disks语句中包含REBALANCE POWER子句,See "Manually Rebalancing a Disk Group" for more information on this clause.

 

Adding Disks to a Disk Group

ALTER DISGROUP中使用ADD添加磁盘到磁盘组中,或者为磁盘组添加一个失败组。添加磁盘到磁盘组中使用的ALTER DISKGROUP的子句同样也可以使用初始创建磁盘组时使用的那些子句。This is discussed in "Creating a Disk Group".

The new disks will gradually start to carry their share of the workload as rebalancing progresses.

ASM behavior. when adding disks to a disk group is best illustrated through examples

Adding Disks to a Disk Group: Example 1

ALTER DISKGROUP dgroup1 ADD DISK
     '/devices/diska5' NAME diska5,
     '/devices/diska6' NAME diska6;

 

ALTER DISKGROUP因为没有指定FAILGROUP,每一个磁盘被分配到他自己的失败组中。通过NAME为磁盘指定了名字,否则这些磁盘会被分配一个系统生成的名字。

如果没使用NAME子句,但已经使用了ASMLIB为磁盘指定了LABEL,则这个LABEL会作为磁盘的名字。

Adding Disks to a Disk Group: Example 2 The statements presented in this example demonstrate the interactions of disk discovery with the ADD DISK operation.

/devices中搜索到以下磁盘:

/devices/diska1 -- member of dgroup1
/devices/diska2 -- member of dgroup1
/devices/diska3 -- member of dgroup1
/devices/diska4 -- member of dgroup1
/devices/diska5 -- candidate disk
/devices/diska6 -- candidate disk
/devices/diska7 -- candidate disk
/devices/diska8 -- candidate disk

/devices/diskb1 -- member of dgroup1
/devices/diskb2 -- member of dgroup1
/devices/diskb3 -- member of dgroup1
/devices/diskb4 -- member of dgroup2

/devices/diskc1 -- member of dgroup2
/devices/diskc2 -- member of dgroup2
/devices/diskc3 -- member of dgroup3
/devices/diskc4 -- candidate disk

/devices/diskd1 -- candidate disk
/devices/diskd2 -- candidate disk
/devices/diskd3 -- candidate disk
/devices/diskd4 -- candidate disk
/devices/diskd5 -- candidate disk
/devices/diskd6 -- candidate disk
/devices/diskd7 -- candidate disk
/devices/diskd8 -- candidate disk

Unix,Solaris,linux平台,没有安装ASMLIB,使用以下名字可以成功添加/devices/diska5/devices/diska8dgroup1

ALTER DISKGROUP dgroup1 ADD DISK ‘/devices/diska[5678];

以下命令会添加/devices/diska5 and /devices/diskd5dgroup1

ALTER DISKGROUP dgroup1 ADD DISK ‘/DEVICES/DISK*5’;

以下操作将会失败,因为/devices/diska1 - /devices/diska4已经是dgroup1的成员

ALTER DISKGROUP dgroup1 ADD DISK ‘/devices/disk*’;

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/280958/viewspace-665070/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/280958/viewspace-665070/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值