Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2013-10-15 23:43:53 | 查看: 2867| 回复: 0
管理 ASM 实例



ASM 对于管理员的好处
使用 ASM 可以免除非 ASM 存储环境中必不可少的许多任务。其中包括:
I/O 性能优化 - ASM 采用条带化和镜像所有内容的策略,且执行自动重新平衡操作,这意味着不再需要旨在平衡磁盘使用以及消除磁盘热点的 I/O 性能优化。
数据文件移动和重新组织 - 不再需要更改数据文件的位置来满足性能要求和空间 制约。
文件名管理 - 不再需要定义和强制执行文件命名策略。
逻辑卷、文件系统、集群文件系统和裸设备管理 - 不再需要这些存储元素。
使用 ASM 可以减少下列重要方面的工作,从而提供更多好处:
LUN 管理工作量减少,因为 ASM 通常需要更少但更大的 LUN。
数据库管理员与系统管理员之间通常存在的依赖性将大大减少。例如,添加新数据文件或将磁盘资源从一个磁盘组移至另一磁盘组时不再需要系统管理员干预。
手动执行维护任务时可能发生的错误将大大减少。例如,使用常规文件系统时,新建数据文件时可能不慎违反了文件命名惯例,导致数据库的其余部分不支持该文件。


ASM 实例
每次启动 ASM 或数据库时,都会分配一个称为系统全局区 (SGA) 的共享内存区域并启动 Oracle ASM 或数据库后台进程。后台进程和 SGA 的组合称为 Oracle ASM 实例或 Oracle DB 实例。该实例表示正在运行的 ASM 环境的 CPU 和 RAM 组件。
ASM 实例中的 SGA 与数据库实例中的 SGA 在内存分配和使用方面是不同的。ASM 实例中的 SGA 分为四个主要区域,如下所述:
共享池:用于元数据信息
大型池:用于并行操作
ASM 高速缓存:用于在重新平衡操作期间读取和写入块
空闲内存:可用的未分配内存
建议为 ASM 实例使用的最低内存量为 256 MB。自动内存管理在 ASM 实例上默认启用,它将动态优化各个 SGA 内存组件的大小。ASM 实例所需的内存量将取决于 ASM 管理的磁盘空间量。
ASM 实例的第二部分是后台进程。一个 ASM 实例可以具有许多后台进程;并不是总是会出现所有进程。


ASM 组件:ASM 实例(续)
下一幻灯片将讲述特定于 ASM 功能的后台进程。后台进程分为必需和可选两种。其中一些进程如下所述:
ARCn:归档进程
CKPT:检查点进程
DBWn:数据库写进程
DIAG:诊断进程
Jnnn:作业队列进程
LGWR:日志写进程
PMON:进程监视器进程
PSP0:进程衍生程序进程
QMNn:队列监视器进程
RECO:恢复器进程
SMON:系统监视器进程
VKTM:虚拟计时器进程
MMAN:内存管理器进程
以上进程列表不是完整列表。对于 ASM 实例,这些进程不是始终会执行在数据库实例中 会执行的任务。例如,数据库实例中的 LGWR 进程负责将更改向量从 SGA 的日志缓冲区 部分复制到磁盘上的联机重做日志。ASM 实例的 SGA 中不包含日志缓冲区,该实例也不使用联机重做日志。ASM 实例中的 LGWR 进程将日志记录信息复制到 ASM 磁盘组。
如果 ASM 是集群形式的,则将在 ASM 实例中运行与集群管理相关的附加进程。其中一些进程如下所述:
LMON:全局入队服务监视器进程
LMDn:全局入队服务守护程序
LMSn:全局高速缓存服务进程
LCKn:锁进程



ASM 组件:ASM 实例 - 主进程
ASM 实例使用专用后台进程来实现大多数功能。RBAL 进程在自动存储管理实例中协调磁盘组的重新平衡活动。它负责对自动存储管理磁盘执行全局打开操作。ARBn 进程在自动存储管理实例中执行实际的重新平衡数据区移动。可能同时存在多个这样的进程,这些进程名为 ARB0、ARB1,等等。GMON 进程维护 ASM 磁盘组中的磁盘成员资格。在向脱机磁盘写入失败后,MARK 进程将 ASM 分配单元标记为过时。Onnn 进程表示客户机/服务器连接的服务器端。启动实例时将出现这些进程,之后它们将消失。它们形成与 ASM 实例的一组连接,用于交换消息,并且只在需要时显示。PZ9n 进程表示当 ASM 同时在集群配置中的多台计算机上运行时,用于提取数据的一个或多个并行从属进程。


ASM 实例初始化参数
与常规数据库实例相同,ASM 实例是由参数文件控制的。其中通常需要设置的参数包括:
对于 ASM 实例,INSTANCE_TYPE 应设置为 ASM。这是唯一一个必须定义的参数。对于数据库实例,该参数设置为 RDBMS。
ASM_POWER_LIMIT 控制重新平衡操作的速度。值的范围在 1 到 11 之间,11 表示速度最快。如果省略,该值默认为 1。
ASM_DISKSTRING 是一个与操作系统相关的值,ASM 使用它来限制搜索时考虑的磁盘集。默认值为空字符串,这在大都数情况下就足够了。如上所示的约束性更强的值可以减少 ASM 执行搜索所需的时间,从而提高磁盘组装载次数。
ASM_DISKGROUPS 列出 ASM 实例启动时或者使用 ALTER DISKGROUP ALL MOUNT 命令时装载的磁盘组的名称。Oracle Restart 会装载列为依赖项的磁盘组,即使这些磁盘组未与 ASM_DISKGROUPS 参数列在一起也是如此。该参数没有默认值。
ASM_PREFERRED_READ_FAILURE_GROUPS 指定包含首选读取磁盘的故障组。对于包含数据的镜像副本且有一个副本非常接近于服务器的扩展或延伸集群数据库,该参数非常有用。


DIAGNOSTIC_DEST 指定自动诊断资料档案库 (ADR) 主目录的位置。此目录下有跟踪文件、预警日志、核心文件和意外事件文件。此参数的默认值是由 ORACLE_BASE 的值派生的。
LARGE_POOL_SIZE 指定大型池分配堆的大小(以字节为单位)。大型池分配堆用于共享服务器系统中的会话内存,供消息缓冲区的并行执行和磁盘 I/O 缓冲区的备份进程使用。ASM 实例使用自动内存管理,所以此参数是大型池不能低于的最小大小。
REMOTE_LOGIN_PASSWORDFILE 指定 Oracle 软件是否检查口令文件。默认值为 EXCLUSIVE。
上面列出的八个参数是需要为 ASM 实例创建的唯一几个非默认参数。ASM 实例与数据库实例的区别是:不是所有数据库参数都对 ASM 实例有效。在全部 344 个数据库实例参数中,大约有 74 个参数可以用于 ASM 实例。对于幻灯片中未列出的其它参数,虽然其默认值对于大多数安装来说应该已经足够了,但也可以根据需要进行设置。

注:ASM 实例默认启用自动内存管理,即使未明确设置 MEMORY_TARGET 参数也是如此。这是您需要为整个 ASM 内存管理设置的唯一参数。Oracle Corporation 强烈建议您对 ASM 使用自动内存管理。



数据库实例与 ASM 之间的交互
文件创建过程很好地说明了数据库实例和 ASM 之间发生的交互。文件创建过程如下所示:
数据库请求文件创建。
ASM 前台进程创建一个持续操作目录 (COD) 条目并在磁盘组中为新的文件分配空间。
ASMB 数据库进程接收新文件的区映射。
该文件现在打开,数据库进程直接初始化该文件。
初始化完成后,数据库进程将请求提交文件创建。这将导致 ASM 前台进程清除 COD 条目,并将文件标记为已创建。
文件提交确认会隐式关闭该文件。将来发生 I/O 时,数据库实例需要重新打开该文件。
此示例强调了关于 ASM 体系结构的重要两点:
数据库实例和 ASM 实例以协调的方式一起工作。数据库实例必须与 ASM 互交,以便将数据库文件映射到 ASM 区。数据库实例还接收与 ASM 操作(例如磁盘组重新平衡)相关的持续消息流,这类操作可能锁定或移动 ASM 区。
数据库 I/O 不通过 ASM 实例来传输。实际上,数据库直接根据 ASM 文件执行 I/O 操作,如幻灯片中步骤 4 所示。

ASM 实例承载基于内存的元数据表,这些表通过动态性能视图呈现。
ASM 实用程序使用 SQL 语言访问这些表来检索仅含 元数据的信息
包含许多专用的 ASM 相关视图,例如:


V$ASM_ALIAS                         V$ASM_ATTRIBUTE                 V$ASM_CLIENT
V$ASM_DISK                        V$ASM_DISK_IOSTAT                 V$ASM_DISK_STAT
V$ASM_DISKGROUP        V$ASM_DISKGROUP_STAT         V$ASM_FILE
V$ASM_OPERATION        V$ASM_TEMPLATE




ASM 实例:动态性能视图
对于任何实例而言,其主要功能之一就是存储基于内存的元数据表。这些表以前缀 X$ 开头并且通常不进行记录。以前缀 V$ 开头的一系列动态性能视图用于以定制形式显示 X$ 内存表中包含的数据。这类信息是以只读方式提供的,只有具有相应权限的管理员可以使用。此信息是使用 SQL 语言从 ASM 检索的。上面的幻灯片列出了包含 ASM 相关元数据的最常用动态性能视图。还有数百个其它动态性能视图,但是其中大多数视图都是空的,因为它们需要数据库实例装载数据库控制文件。ASM 实例不装载数据库控制文件。有关动态性能视图的完整列表,请参阅《Oracle Database Reference 11g Release 2 (11.2)》文档手册。


ASM 系统权限
由于 ASM 实例没有数据字典,因此连接到 ASM 实例的唯一方法是使用以下三个系统权限之一:SYSASM、SYSDBA 或 SYSOPER。下面的列表讲述了这些 ASM 系统权限。
SYSASM:此权限提供对 ASM 实例的完全管理权限。
SYSDBA:此权限授予对 ASM 中存储的数据的访问权限,在当前版本中还授予 SYSASM 管理权限。
SYSOPER:此权限授予使用一组非破坏性 ALTER DISKGROUP 命令以及启动和停止 ASM 实例的权限。不允许使用其它命令,例如 CREATE DISKGROUP。
安装 ASM 后,操作系统组将被分配 SYSASM、SYSDBA 以及 SYSOPER 权限。这些组又分别称为 OSASM、OSDBA 和 OSOPER 组。这些操作系统组的成员资格会将相关系统权限自动地分配给相关操作系统用户。
首次创建 ASM 实例时,只会定义 sys 和 asmsnmp 这两个 ASM 用户。  


使用 Oracle Enterprise Manager 管理 ASM 用户
使用 Oracle Enterprise Manager,您可以管理通过远程连接(使用口令文件验证)访问 ASM 实例的用户。这些用户是专为 ASM 实例保留的。
但是,仅当以 SYSASM 用户身份连接时才能使用此功能。如果以 SYSDBA 或 SYSOPER 用户身份连接,则此功能将处于隐藏状态。
单击“Create(创建)”按钮后,会显示“Create User(创建用户)”页。
单击“Edit(编辑)”按钮后,会显示“Edit User(编辑用户)”页。
单击“Delete(删除)”按钮可以删除已创建的用户。
注:要以 SYSASM 角色登录 ASM,请单击页面顶部的“Preferences(首选项)”链接,然后单击“Preferred Credentials(首选身份证明)”链接。此时您将在目标类型列表中看到 ASM。单击 ASM 目标类型旁的“Set Credentials(设置身份证明)”图标,以定义拥有 SYSASM 权限的帐户和口令。可能需要从 Database Control 中注销并再次登录,更改 才会生效。


使用 SQL*Plus 启动和停止 ASM 实例
在 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 形式的关闭。此时将返回以下错误:
ORA-15097: cannot SHUTDOWN ASM instance with connect RDBMS instance

使用 srvctl
启动和停止 ASM 实例可以使用 Server Control 实用程序 (srvctl) 启动和停止 ASM 实例以及由 Grid Infrastructure 管理的其它资源。srvctl 实用程序位于 Grid Infrastructure 的 ORACLE_HOME/bin 位置下和数据库安装的 ORACLE_HOME/bin 位置下。管理 ASM、监听程序或 Oracle Restart 时,应该使用位于 Grid Infrastructure 中的 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

$ . 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 磁盘
ASM 磁盘组包含一个或多个 ASM 磁盘。
ASM 磁盘必须可由集群中所有节点的 ASM 所有者读取和写入。
ASM 磁盘可以是磁盘上的分区,但是 Oracle 强烈建议不要与其它应用程序共享 ASM 使用的物理磁盘。这是因为在应用 ASM 条带化和镜像策略时,磁盘组内的各个 ASM 磁盘的 I/O 性能必须相似且一致,才能获得最佳性能。在 ASM 和其它应用程序之间共享设备将难以确保磁盘性能相似且一致。
集群中不同节点上的 ASM 磁盘的 O/S 设备名称不必相同。ASM 通过读取 ASM 磁盘的 标头来识别磁盘组的成员。
通常,ASM 磁盘是存储阵列中提供给 ASM 的裸 LUN。另外,ASM 磁盘还可以是远程 NFS 文件器中的文件。


分配单元
在 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 文件由一组分配单元组成,这些文件对数据库内核显示为普通文件。
每个 ASM 文件都有一个唯一的系统生成名称。幻灯片显示了一个完全限定的 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 中,条带化主要有两个用途:
在磁盘组的所有磁盘中执行 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 的块,然后在许多磁盘中分布每个区的负载,从而改善特定类型文件的等待时间。默认情况下,细粒度条带化用于控制文件和联机重做日志文件。
本页的图显示了细粒度条带化的工作原理。在此示例中,新文件的第一个 1 MB 区最终占用 8 个不同分配单元中的第一个 128 KB 块,这 8 个分配单元分布在磁盘组的八个磁盘中。因此,1 MB 的读取或写入分布在八个磁盘(而不是一个磁盘)中...


继续前面的示例,空间中的下一个 1 MB 区将分布在相同分配单元组的每个单元的第二个 128 KB 块中。这种模式将继续,直到第一组分配单元写满,然后分配另一组。


ASM 故障组
在磁盘组内,可以将一些磁盘归到故障组中。故障组是存储管理员或数据库管理员指定 ASM 镜像操作的硬件边界的一种方式。
例如,可以将连接到一个磁盘控制器的所有磁盘指定为某个公用故障组的磁盘。这样,将在连接到不同控制器的磁盘上镜像文件区。另外,管理员可以对 ASM 进行配置来选择默认故障组策略。默认策略是每个磁盘位于自己的故障组中。
您可以使用所需的任何标准将磁盘归到故障组中。故障组可以用于在单个磁盘、磁盘控制器、I/O 网络组件甚至整个存储系统发生故障时提供保护。通常,管理员将分析其存储环境并对故障组进行组织来减轻特定故障情况。
数据库管理员或存储管理员将为其安装确定最佳故障组配置。


条带化和镜像示例
本页中的图显示了一个正常冗余磁盘组中条带化和镜像的示例。红块表示一个包含五个区的文件,这些区在条带化后,分布在磁盘组(共八个磁盘)的五个磁盘中。蓝块表示文件区的镜像副本。请注意,无论区在各个磁盘和故障组中如何分布,每个区在一个故障组中仅有一个副本。
分配文件时,主区的分配用于保证性能,辅助副本的分配用于保证完整性。因此,默认情况下,所有数据库读取都针对主区进行。

故障示例
此处扩展了上一页中的示例,假设磁盘 H 发生故障,无法再访问其包含的数据。该故障要求恢复故障磁盘上的所有区并将这些区复制到另一磁盘。
区 3 和 5 的正常副本将复制到同一故障组中另一磁盘的空闲区域。在此示例中,区 5 将从磁盘 B 复制到磁盘 F,区 3 将从磁盘 C 复制到磁盘 G。
磁盘发生故障后的最后一步是 ASM 从磁盘组中删除故障磁盘。
删除磁盘基本上会触发相同的过程;不过,在删除磁盘时,要被删除的磁盘上的区首先会复制到某个可用的替代位置。


管理磁盘组
ASM 实例的主要目标是管理磁盘组并保护其中的数据。ASM 实例还可以向数据库实例传递有关文件布局的信息。通过这种方式,数据库实例可以直接访问磁盘组中存储的文件。
系统提供了多个磁盘组管理命令。使用这些命令需要具有 SYSASM 或 SYSDBA 权限,并且必须从 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> CREATE DISKGROUP dgroupA NORMAL REDUNDANCY  
FAILGROUP controller1 DISK
   '/devices/A1' NAME diskA1 SIZE 120G FORCE,
   '/devices/A2',
FAILGROUP controller2 DISK
   '/devices/B1',
   '/devices/B2';




创建和删除磁盘组
假定在 ASM 磁盘搜索过程中,在 /dev 目录中找到以下磁盘:A1、A2、B1 和 B2。另外,假设磁盘 A1 和 A2 位于一个控制器上,而磁盘 B1 和 B2 位于另一个控制器上。幻灯片中的第一个示例说明了如何配置名为 DGROUPA 的磁盘组,该磁盘组有两个故障组:CONTROLLER1 和 CONTROLLER2。
该示例还对该磁盘组使用默认冗余属性 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 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 带宽就越少。


其它 ALTER 命令
幻灯片中的第一个语句说明如何从 DGROUPA 磁盘组中删除一个磁盘。第二个语句显示如何使用单个命令添加和删除磁盘。本例的最大优点在于:在命令完成前不会启动重新平衡。第三个语句显示如何取消磁盘删除操作。UNDROP 命令只对磁盘的暂挂删除操作有效,对已完成的删除操作没有任何影响。
以下语句将根据需要重新平衡 DGROUPB 磁盘组:
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
此命令通常不是必需的,因为在添加、删除磁盘或调整磁盘大小时会自动执行此操作。不过,如果希望使用 POWER 子句来覆盖初始化参数 ASM_POWER_LIMIT 定义的默认速度,则该命令非常有用。通过在命令中重新输入新的级别,可以更改正在进行的重新平衡操作的强度。如果强度级别为 0,则重新平衡操作将中断,直到重新隐式或显式调用该命令。以下语句将卸装 DGROUPA:
ALTER DISKGROUP dgroupA DISMOUNT;
使用 MOUNT 和 DISMOUNT 选项,可以指定可供数据库实例使用或不可供其使用的一个或多个磁盘组。当实例故障转移到其它节点时,这种在支持单个实例的集群 ASM 环境中手动执行卸载和装载的功能很有用。


使用 Oracle Enterprise Manager 的 ASM 管理
Oracle Enterprise Manager (EM) 是 Oracle 的管理工具系列,管理对象涵盖数据库、中间件、应用程序、网络、IT 基础结构及其它。Oracle Enterprise Manager 提供了一个基于浏览器的环境,为常见 ASM 管理任务提供了一个点击式替代方案。


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 中引入的任何新功能(磁盘联机/脱机、可变区等)。


ASM 磁盘组属性
创建或变更 ASM 磁盘组时,可以使用 CREATE DISKGROUP 和 ALTER DISKGROUP 命令新增的 ATTRIBUTE 子句更改其属性。幻灯片中的表简要概括了这些属性:
通过 ASM,可以使用在创建磁盘组时指定的不同分配单元 (AU) 大小。分配单元的大小可以为 1、2、4、8、16、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。

检索 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 和文件类型 data file。因此,对于 asmcmd 中显示的目录,需要使用 WHERE 子句设置 SQL 过滤条件才能得到相同结果。
注:在 Oracle Enterprise Manager Database Control 中,只需在各个 ASM Web 页中浏览就能查看大多数 ASM 元数据。


ASM 快速镜像再同步概览
ASM 快速镜像重新同步可以显著减少重新同步临时故障磁盘所需的时间。如果某个磁盘因临时故障而脱机,ASM 将跟踪在中断期间发生修改的区。临时故障被修复后,ASM 可以快速地仅重新同步在中断期间受影响的 ASM 磁盘区。
此功能假定受影响的 ASM 磁盘的内容未被破坏或修改。
某个 ASM 磁盘路径出现故障时,如果您已经为相应磁盘组设置了 DISK_REPAIR_TIME 属性,则 ASM 磁盘会脱机,但不会被删除。此属性的设置确定了 ASM 可容忍的磁盘中断持续时间;如果中断在此时间范围内,则修复完成后仍可重新同步。
注:跟踪机制对每个修改的分配单元使用 1 位。这样可确保跟踪机制非常高效。
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-1 22:26 , Processed in 0.052074 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569