oracle asm学习笔记
时间:2010-09-14 来源:sun5411
课程目标
学完本课后,应能完成以下工作:
• 识别自动存储管理(ASM) 的功能
• 为ASM 和数据库实例设置初始化参数文件
• 使用ASM 文件名执行SQL 命令
• 启动和关闭ASM 实例
• 管理ASM 磁盘组
• 使用RMAN 将数据库移植到ASM 自动存储管理:概述
• 可移植的高性能集群文件系统
• 管理Oracle DB 文件
• 数据分布到各个磁盘中以平衡负载
• 跨磁盘的集成镜像
• 解决许多存储管理问题 1.自动存储管理:概述
Automatic Storage Management (ASM) 提供了文件系统与卷管理器的纵向集成,这是一项
专门为Oracle 数据库文件构建的技术。使用ASM 可以管理单个SMP 计算机,也可管理
集群的多个节点以便为Oracle Real Application Clusters (RAC) 提供支持。
ASM 将I/O 负载分布在所有可用的资源中来优化性能,不必手动进行I/O 优化。ASM
有助于DBA 管理动态数据库环境,使DBA 不必关闭数据库,就可以增加数据库的大小
来调节存储分配。
ASM 通过维护数据的冗余副本来提供容错能力,也可以基于供应商提供的可靠存储机制
来构建ASM。通过为各类数据选择所期望的可靠性和性能特性来进行数据管理,而不是
人工处理每个文件。
ASM 功能可以实现人工存储自动化,提高DBA 管理大型数据库及更多数据库的能力,
从而可以节省DBA 的时间并提高效率
ASM 将文件分为多个分配单元(AU),并在所有磁盘间平均分配每个文件的分配单元。
ASM 使用索引技术跟踪每个分配单元的位置。存储容量发生变化时,ASM 不会重新条
带化所有数据,而是根据添加或删除的存储量,按比例移动一定数量的数据,以重新
均匀分配文件,保持磁盘间的负载平衡。此操作可在数据库处于活动状态时执行。
可以提高或降低重新平衡操作的速度,以减小对I/O 子系统的影响。ASM 还提供了镜像
保护,因此您不必再购买第三方的逻辑卷管理器。ASM 的一个独特优势在于其镜像基于
文件而不是基于卷。因此,同一磁盘组中可以包含受镜像保护的文件和不受镜像保护的
文件的组合。
ASM 支持数据文件、日志文件、控制文件、归档日志、RMAN 备份集以及其它Oracle
数据库文件类型。ASM 支持Oracle Real Application Clusters,而且无需使用集群逻辑卷
管理器或集群文件系统。
2.ASM 常规体系结构
要使用ASM,在启动数据库实例之前,必须启动一个名为ASM 实例的特殊实例。ASM
实例不会装载数据库,而是管理使ASM 文件可用于普通数据库实例所必需的那些元数据。
ASM 实例和数据库实例都能访问一些公共的磁盘集,这些公共磁盘集称为磁盘组。数据
库实例直接访问ASM 文件的内容,它们与ASM 实例通信的目的只是为了获取这些文件
的布局信息。
ASM 实例包含两个新的后台进程。一个进程负责协调磁盘组的重新平衡活动,称为RBAL。
第二个进程负责执行实际的重新平衡分配单元移动操作。在同一时刻可以存在许多此类进
程,它们分别名为ARB0、ARB1,以此类推。ASM 实例还有一些与数据库实例相同的后
台进程,其中包括SMON、PMON、LGWR、DBWR 和CKPT。
每个使用ASM 的数据库实例都有两个新的后台进程,ASMB 和RBAL。RBAL 负责全局打
开磁盘组中的磁盘。数据库实例启动时,ASMB 作为前台进程连接到ASM 实例。数据库
实例和ASM 实例之间的通信就是通过这种桥接来实现的。此类通信包括物理文件更改,
例如数据文件的创建和删除。通过这种连接可以定期交换消息,以更新统计信息并确认
这两个实例都在正常运行。
3.ASM 实例任务
要使用ASM 实例,必须能够完成以下任务:
• 创建ASM 实例
• 设置初始化参数
• 启动ASM 实例
• 管理ASM 实例
• 关闭ASM 实例
创建ASM 实例
运行Database Configuration Assistant (DBCA),可创建ASM 实例。在第一个屏幕上,选择
用于“Configure Automatic Storage Management(配置自动存储管理)”的选项,然后按
照步骤说明操作。此时将为您创建并启动ASM 实例。然后,系统将指导您完成为实例定
义磁盘组的过程。
在ASM 实例创建过程中,DBCA 会自动创建一个条目并将其添加到oratab 文件中。
此条目仅用于搜索。在使用服务机制的Windows 平台上,DBCA 会自动创建Oracle
Service 以及相应的注册表项,以便于搜索该ASM 实例。
配置ASM 实例后,DBCA 会创建ASM 实例参数文件和ASM 实例口令文件。
如果您是第一次创建启用ASM 的数据库,则DBCA 会确定主机上是否已存在ASM 实例。
如果ASM 实例搜索返回一个空列表,则DBCA 会创建一个新的ASM 实例。
ASM 实例初始化参数
INSTANCE_TYPE = ASM
DB_UNIQUE_NAME = +ASM
ASM_POWER_LIMIT = 1
ASM_DISKSTRING = '/dev/rdsk/*s2', '/dev/rdsk/c1*'
ASM_DISKGROUPS = dgroupA, dgroupB
LARGE_POOL_SIZE = 8MB
ASM 实例初始化参数
• INSTANCE_TYPE:对于ASM 实例,该参数应设置为ASM。
• DB_UNIQUE_NAME:该参数指定此ASM 实例为其管理磁盘组的服务提供程序的
名称。默认值为+ASM。仅当在同一节点上运行多个ASM 实例时才须修改默认值。
• ASM_POWER_LIMIT:该参数控制重新平衡操作的速度。值的范围在1 到11 之间,
11 表示速度最快。如果省略,该值将默认为1。从属进程的数量可以从手动重新平
衡命令(POWER) 中指定的并行级别派生,或者通过ASM_POWER_LIMIT 参数派生。
• ASM_DISKSTRING:该参数是一个与操作系统相关的值,由ASM 用来限制搜索中
涉及的磁盘集。
• ASM_DISK_GROUPS:该参数列出ASM 实例启动时或者使用ALTER DISKGROUP
ALL MOUNT 命令时装载的磁盘组的名称。
INSTANCE_TYPE 参数是唯一一个必须由您定义的参数。其它所有ASM 参数都有适合于
大多数环境的默认值。
注:如果ASM 环境是使用命令行而不是通过EM 创建的,则必须先创建磁盘组然后才能
装载。
4.数据库实例参数更改
INSTANCE_TYPE = RDBMS
LOG_ARCHIVE_FORMAT
DB_BLOCK_SIZE
DB_CREATE_ONLINE_LOG_DEST_n
DB_CREATE_FILE_DEST
DB_RECOVERY_FILE_DEST
CONTROL_FILES
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST
STANDBY_ARCHIVE_DEST
LARGE_POOL_SIZE = 8MB INSTANCE_TYPE 默认设置为RDBMS,指定该实例是一个RDBMS 实例。
如果LOG_ARCHIVE_DEST 设置为不完整的ASM 文件名(例如+dGroupA),则将忽略
LOG_ARCHIVE_FORMAT。如果LOG_ARCHIVE_DEST 设置为ASM 目录(例如,
+dGroupA/myarchlogdir/),则将使用LOG_ARCHIVE_FORMAT,并且文件是非
OMF 文件。Oracle 数据库会自动为归档日志创建唯一的文件名。
以下参数允许将ASM 文件名的多文件创建上下文格式作为目标:
• DB_CREATE_ONLINE_LOG_DEST_n
• DB_CREATE_FILE_DEST
• DB_RECOVERY_FILE_DEST
• CONTROL_FILES
• LOG_ARCHIVE_DEST_n
• LOG_ARCHIVE_DEST
• STANDBY_ARCHIVE_DEST
注:由于ASM 文件的分配单元映射是从LARGE_POOL 分配的,因此必须将
LARGE_POOL_SIZE 初始化参数设置为至少8 MB,越大越好。
5.启动ASM 实例
$ export ORACLE_SID='+ASM'
$ sqlplus /nolog
SQL> CONNECT / AS sysdba
Connected to an idle instance.
SQL> STARTUP;
ASM 实例的启动类似于数据库实例,但初始化参数文件中包含一个
INSTANCE_TYPE=ASM 这样的条目。将该参数值设置为ASM 时,它会通知Oracle 可执行
文件要启动的是ASM 实例而不是数据库实例。同时,ORACLE_SID 变量必须设置为该
ASM 实例的名称。ASM 实例启动时,在装载阶段会尝试装载ASM_DISKGROUPS 初始化
参数指定的磁盘组,而不是像非ASM 实例那样装载数据库。
对于ASM 实例和数据库实例,其它STARTUP 子句的解释大致相同。OPEN 对于ASM
实例无效。NOMOUNT 将启动ASM 实例而不装载任何磁盘组。
6.访问ASM 实例
ASM 实例没有数据字典,因此连接此类实例的唯一方法是使用操作系统验证机制,即
SYSDBA 或SYSOPER。要进行远程连接,需要使用口令文件。通常,SYSDBA 权限是通
过使用操作系统组来授予的。在UNIX 上,通常是dba 组。默认情况下,dba 组的成员
对该节点上的所有实例(包括ASM 实例)拥有SYSDBA 权限。使用SYSDBA 权限连接到
ASM 实例的用户对系统中的所有磁盘组拥有管理权限。ASM 实例中支持SYSOPER 权限,
该权限将允许执行的SQL 命令集限制到最小,即能满足已配置系统上的基本操作即可。
SYSOPER 用户可以使用的命令如下:
• STARTUP/SHUTDOWN
• ALTER DISKGROUP MOUNT/DISMOUNT
• ALTER DISKGROUP ONLINE/OFFLINE DISK
• ALTER DISKGROUP REBALANCE
• ALTER DISKGROUP CHECK
• SELECT all V$ASM_* views
其它所有命令,例如CREATE DISKGROUP、ADD/DROP/RESIZE DISK 等等,都需要
具备SYSDBA 权限才能执行,使用SYSOPER 权限不能执行。 7.关闭ASM 实例
尝试关闭处于NORMAL、IMMEDIATE 或TRANSACTIONAL 模式下的ASM 实例时,只有
在没有任何数据库实例连接到该ASM 实例的情况下,操作才会成功。如果至少有一个实
例与之连接,则会显示以下错误:
ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS
instance
如果对该ASM 实例执行SHUTDOWN ABORT 命令,则该实例将关闭,但在下次启动时要
求进行恢复。任何与之连接的数据库实例最终也将关闭,同时报告以下错误:
ORA-15064: communication failure with ASM instance
在单个ASM 实例配置中,如果ASM 实例失败,而磁盘组为进行更新处于打开状态,则
在ASM 实例重新初始化后,它将读取磁盘组的日志并恢复所有临时更改。在多个ASM
实例共享磁盘组的情况下,如果一个ASM 实例失败,另一个ASM 实例会自动恢复实例
失败所导致的临时ASM 元数据更改。数据库实例故障不会对ASM 实例产生影响。只要
主机重新启动,ASM 实例就会自动启动。ASM 实例应该使用底层操作系统支持的自动启
动机制。请注意,文件系统故障通常会导致节点崩溃。
8.ASM 存储:概念
ASM 不会妨碍任何现有的数据库功能。现有数据库能够像平常一样工作。可以将新文件
创建为ASM 文件,但听任现有文件以原有的方式管理,也可以最终将这些文件移植到
ASM。
上图描述了使用ASM 的Oracle 数据库内部各存储组件之间的关系。图表的左侧部分和
中间部分显示了在以前的版本中各组件之间的关系。右侧部分是ASM 引入的新概念。
数据库文件可以存储为ASM 文件。新层次的顶部是ASM 磁盘组。任何单个ASM 文件只
能包含在一个磁盘组中。不过,一个磁盘组中可以包含属于多个数据库的多个文件,并且
单个数据库可以使用来自多个磁盘组的存储空间。正如您看到的那样,一个磁盘组由多个
ASM 磁盘组成,但每个ASM 磁盘只能属于一个磁盘组。ASM 文件始终分布在该磁盘组
中的所有ASM 磁盘上。ASM 磁盘按分配单元(AU) 进行分区,每个分配单元的大小为
1 MB。分配单元是ASM 分配的最小连续磁盘空间。ASM 不允许跨分配单元拆分一个
Oracle 块。
注:本图只处理了一种类型的ASM 文件:数据文件。不过,ASM 也可用于存储其它类型
的数据库文件。
9.ASM 磁盘组
• 作为逻辑单元管理的磁盘组
• 将磁盘总空间划分为统一大小的单元
• 将各个文件平均分配到所有磁盘中
• 根据文件类型使用粗粒度或细粒度的
条带化
• 管理的是磁盘组而非文件 ASM 磁盘组
磁盘组是作为逻辑单元进行管理的一组磁盘。以ASM 磁盘为单位在磁盘组中添加或删除
存储。每个ASM 磁盘都有一个ASM 磁盘名,该名称在集群的所有节点中都是相同的。
由于不同主机可以使用不同的名称引用同一磁盘,因此必须提供一个ASM 磁盘名称的
缩写。
ASM 始终以大小为1 MB 的分配单元块将文件平均分配到磁盘组的所有磁盘中。这称为
粗粒度条带化。通过这种方式,ASM 消除了手动进行磁盘优化的必要。但是,磁盘组中
的磁盘应当具有相似的大小和性能特性,以获取最佳I/O。对于大多数安装,将只有几个
磁盘组。例如,工作区需一个磁盘组,恢复区需一个磁盘组。对于要求等待时间较短的
文件(如日志文件),ASM 提供细粒度条带化(128 KB)。细粒度条带化对每个AU 进行
条带化。细粒度条带化将中等大小的I/O 操作细分为多个较小的且并行执行的I/O 操作。
当文件和磁盘的数量增加时,您只需管理固定数量的磁盘组即可。从数据库角度而言,
可以将磁盘组指定为在数据库中创建的文件的默认位置。
注:每个磁盘组都是自描述式的,均包含自己的文件目录和磁盘目录。
故障组
故障组是某个特定磁盘组中的一组磁盘,共享一个需要容错的公用资源。例如,故障组
可以是连接到公用SCSI 控制器的一组SCSI 磁盘。尽管每个单独的磁盘都功能正常,但
控制器的故障将导致SCSI 总线上的所有磁盘都不可用。
故障组的构成视站点而定。这主要取决于站点的容错模式。默认情况下,ASM 将每个磁
盘分配至其各自的故障组。创建磁盘组或将磁盘添加至磁盘组时,管理员可能会指定自己
的磁盘分组方法,并将磁盘划分到相应的故障组中。确定了故障组之后,ASM 可以优化
文件布局,降低因共享资源故障而导致的数据不可用。
10.磁盘组镜像
• 在分配单元级别镜像
• 在每个磁盘上混合主分配
单元和镜像分配单元
• 外部冗余:延迟硬件镜像
• 正常冗余:
– 双向镜像
– 至少两个故障组
• 高冗余:
– 三向镜像
– 至少三个故障组
磁盘组镜像
ASM 具有三种磁盘组类型,可支持不同镜像类型:
• 外部冗余:不提供镜像。如果使用硬件镜像,或可以容忍磁盘故障所导致的数据
丢失,则使用外部冗余磁盘组。故障组不与这些类型的磁盘组一起使用
• 正常冗余:支持双向镜像
• 高冗余:提供三向镜像
ASM 不镜像磁盘,而是镜像分配单元。因此,只有磁盘组需要备用容量。某一磁盘发生
故障时,ASM 将从磁盘组中的其它正常磁盘读取镜像内容,然后自动在正常磁盘中重建
故障磁盘的内容。这就将击中到故障磁盘的I/O 分布到其它几个磁盘。
ASM 将文件的一个主分配单元分配至磁盘组中的一个磁盘时,会将该分配单元的一个镜
像副本分配至该磁盘组的另一个磁盘。给定磁盘中的主分配单元可以在该磁盘组的一个
伙伴磁盘上拥有自己的镜像副本。ASM 将确保主分配单元及其镜像副本始终位于不同的
故障组中。如果为磁盘组定义了故障组,则ASM 可以对同一故障组中多个磁盘发生的同
步故障进行容错处理。
11.磁盘组动态重新平衡
• 无论存储配置何时发生
更改,都会自动联机
重新平衡
• 仅按相应比例将数据
移至添加的存储
• 无需手动优化I/O
• 联机移植到新的存储
• 可在系统上使用
ASM_POWER_LIMIT
配置负载
• 使用ASM,可以非常轻松的完成重新平衡过程,无需DBA 或系统管理员进行任何
干预。无论何时添加或删除磁盘,ASM 均可以自动重新平衡磁盘组。
• 通过使用索引技术将分配单元分布在各个可用磁盘上,ASM 不必重新条带化所有数
据,而只需根据添加或删除的存储量按相应比例移动一定数量的数据,以在磁盘组
中的各个磁盘上重新平均分配文件,并维护这些磁盘之间的I/O 负载平衡。
• 由于可以保持I/O 负载平衡,因此,无论何时分配文件,也不论存储配置何时发生
更改,DBA 都无需搜索磁盘组中的热点,也不用手动移动数据来恢复I/O 负载平衡。
• 如果同时添加或删除多个磁盘,则使用ASM 将更加有效,这样即可在单个操作中
实现各磁盘的重新平衡。这可避免数据发生不必要的移动。使用此技术,可以轻松
地实现数据的联机移植。只需在一个操作中添加新磁盘,并在另一个操作中删除旧
磁盘即可。
• 通过设置ASM_POWER_LIMIT 初始化变量,可以控制重新平衡操作在系统上分配的
负载量。取值范围为0 到11。数值越小,负载越少,而设置越高,负载越多,完成
的也更快。设置为0 表示暂挂重新平衡操作。默认值为1。
12.管理磁盘组
ASM 实例的主要目标是管理磁盘组和保护其中的数据。ASM 实例还可以向数据库实例传
递有关文件布局的信息。通过这种方式,数据库实例可以直接访问磁盘组中存储的文件。
系统提供了多个新的磁盘组管理命令。这些命令都要求具备SYSDBA 权限,并且必须从
ASM 实例发出。
您可以添加新的磁盘组,还可以修改现有的磁盘组,在其中添加新磁盘、删除现有磁盘和
执行许多其它操作。可以删除现有的磁盘组。
13.创建和删除磁盘组
CREATE DISKGROUP dgroupA NORMAL REDUNDANCY
FAILGROUP controller1 DISK
'/devices/A1' NAME diskA1 SIZE 120G FORCE,
'/devices/A2',
'/devices/A3'
FAILGROUP controller2 DISK
'/devices/B1',
'/devices/B2',
'/devices/B3';
DROP DISKGROUP dgroupA INCLUDING CONTENTS;
假定在ASM 磁盘搜索过程中,在/devices 目录中找到以下磁盘:A1、A2、A3、B1、
B2 和B3。又假定磁盘A1、A2 和A3 位于一个SCSI 控制器上,而磁盘B1、B2 和B3
位于另一个控制器上。幻灯片中的第一个示例说明了如何配置名为DGROUPA 的磁盘组,
该磁盘组有两个故障组:CONTROLLER1 和CONTROLLER2。
该示例中还对磁盘组使用了默认的冗余特性NORMAL REDUNDANCY。可以根据需要提供
磁盘的名称和大小。如果不提供此信息,ASM 将创建一个默认名称,并尝试确定磁盘的
大小。如果不能确定大小,则会返回错误。FORCE 表示,即使指定磁盘已作为ASM 磁盘
组的成员格式化,也应该将该磁盘添加到指定磁盘组中。如果对未作为ASM 磁盘组成员
格式化的磁盘使用FORCE 选项,则会返回错误。
如幻灯片中的第二个语句所示,可以删除磁盘组及其所有文件。为避免出现误删现象,
如果除内部ASM 元数据外磁盘组中还包含任何其它文件,则必须指定INCLUDING
CONTENTS 选项。必须先装载磁盘组,然后才能将其删除。确保磁盘组中的任何文件均
未打开后,将该组及其所有驱动器一起从磁盘组中删除。然后,将改写每个磁盘的标头,
去除其中的ASM 格式信息。
14.将磁盘添加至磁盘组
ALTER DISKGROUP dgroupA ADD DISK
'/dev/rdsk/c0t4d0s2' NAME A5,
'/dev/rdsk/c0t5d0s2' NAME A6,
'/dev/rdsk/c0t6d0s2' NAME A7,
'/dev/rdsk/c0t7d0s2' 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 带宽就越少。
15.其它ALTER 命令
从dgroupA 中删除一个磁盘:
ALTER DISKGROUP dgroupA DROP DISK A5;
在单个命令中添加和删除磁盘:
ALTER DISKGROUP dgroupA
DROP DISK A6
ADD FAILGROUP fred
DISK '/dev/rdsk/c0t8d0s2' NAME A9;
取消磁盘删除操作:
ALTER DISKGROUP dgroupA UNDROP DISKS;
其它ALTER 命令
幻灯片中的第一个语句显示如何从DGROUPA 磁盘组中删除一个磁盘。第二个语句显示
如何使用单个命令添加和删除磁盘。本例的最大优点在于:在命令完成前不会启动重新
平衡。第三个语句显示如何取消磁盘删除操作。UNDROP 命令只对磁盘的暂挂删除操作
有效,对已完成的删除操作没有任何影响。
以下语句将根据需要重新平衡DGROUPB 磁盘组:
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
此命令通常不是必需的,因为在添加、删除磁盘或调整磁盘大小时会自动执行此操作。
不过,如果希望使用POWER 子句来覆盖初始化参数ASM_POWER_LIMIT 定义的默认速
度,则该命令非常有用。通过在命令中重新输入新的级别,可以更改正在进行的重新平
衡操作的强度。如果强度级别为0,则重新平衡操作将中断,直到重新隐式或显式调用
该命令。
以下语句将卸装DGROUPA:
ALTER DISKGROUP dgroupA DISMOUNT;
使用MOUNT 和DISMOUNT 选项,可以分别指定一个或多个磁盘组可供数据库实例使用或
不可供其使用。 使用以下语句验证磁盘组元数据的内部一致性,并修复发现的任何错误:
ALTER DISKGROUP dgroupA CHECK ALL;
如果只希望发出错误预警,也可以使用NOREPAIR 子句。虽然示例中请求对磁盘组中的
所有磁盘进行检查,不过也可以指定对某个文件或单个磁盘进行检查。此命令要求磁盘组
已装载。一旦发现任何错误,就会显示一条错误概要消息,并在预警日志中报告检测到的
错误的详细资料。
注:在上面六个示例中,前四个示例触发了磁盘组重新平衡,而后两个则未触发。
16.ASM 文件
数据库文件
ASM 文件在磁盘组dgroupA 中自动分布
CREATE TABLESPACE sample DATAFILE '+dgroupA'; 您为某个表空间指定ASM 磁盘组作为数据文件名时,将在该磁盘组中创建一些ASM
文件,以便为该表空间提供存储空间。
创建ASM 文件时,会永久性地设置一些文件属性,其中包括文件的保护策略和条带化策
略。ASM 文件是Oracle 管理文件。ASM 创建的任何文件一旦不再需要,就会自动删除。
使用ASM 时,文件操作将按数据库对象来指定。虽然文件名会通过一些数据字典视图公
开,或可以通过ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令来获取,
但数据库管理从不需要知道文件的名称。在物理上,由于磁盘组中的每个文件都分布在
磁盘组中的所有磁盘上,因此备份单个磁盘没有任何用处。ASM 文件的数据库备份必须
通过RMAN 来完成。
注:ASM 不管理二进制文件、预警日志、跟踪文件或口令文件。
17.ASMCMD 实用程序
$ asmcmd
ASMCMD> ls -l DGROUP1/ORCL/DATAFILE
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE OCT 05 21:00:00 Y HRAPPS.257.570923611
DATAFILE MIRROR COARSE OCT 05 21:00:00 Y TBSASM.256.570922917
ASMCMD>
SQL> CREATE TABLESPACE tbsasm DATAFILE '+DGROUP1' SIZE 100M;
Tablespace created.
SQL> CREATE TABLESPACE hrapps DATAFILE '+DGROUP1' SIZE 10M;
Tablespace created. ASMCMD 实用程序
ASMCMD 是一个命令行实用程序,可用于轻松地查看和操纵ASM 磁盘组中的文件和目录。
该实用程序可以列出磁盘组内容、执行搜索、创建和删除目录以及显示空间使用情况等等。
注:有关ASMCMD 的详细信息,请参阅文档《Oracle 数据库实用程序》。 18.将数据库移植到ASM 存储区
1. 完全关闭数据库。
2. 关闭数据库并修改服务器参数文件,以使用Oracle
Managed Files (OMF)。
3. 编辑并执行以下RMAN 脚本:
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u1/c1.ctl';
ALTER DATABASE MOUNT;
BACKUP AS COPY DATABASE FORMAT '+dgroup1';
SWITCH DATABASE TO COPY;
SQL "ALTER DATABASE RENAME '/u1/log1' TO '+dgroup1' ";
# Repeat RENAME command for all online redo log members
...
ALTER DATABASE OPEN RESETLOGS;
SQL "ALTER DATABASE TEMPFILE '/u1/temp1' DROP";
将数据库移植到ASM 存储区
由于ASM 文件无法通过正常的操作系统界面访问,因此RMAN 是复制ASM 文件的
唯一途径。虽然由于表空间的历史原因,表空间中的文件既可以是ASM 文件,也可以
是非ASM 文件,但是RMAN 命令会将非ASM 文件移到ASM 磁盘组中。通过以下过程,
可以将整个数据库移到ASM 磁盘组中:(假定您使用的是服务器参数文件。)
1. 使用V$CONTROLFILE 和V$LOGFILE,获取当前控制文件和联机重做日志的
文件名。
2. 像平常一样关闭数据库。按如下所述,修改数据库的服务器参数文件:
- 将必要的OMF 目标参数设置为所需的ASM 磁盘组。
- 删除CONTROL_FILES 参数。
3. 编辑和运行RMAN 命令文件,这将备份数据库、将当前数据文件移到备份中并重命
名联机重做日志。使用BACKUP AS COPY 命令只能移动表空间或数据文件。
4. 删除旧的数据库文件。
注:如果创建一个OMF 控制文件,并且有一个服务器参数文件,则会在该服务器参数
文件中创建一个CONTROL_FILES 初始化参数条目。
学完本课后,应能完成以下工作:
• 识别自动存储管理(ASM) 的功能
• 为ASM 和数据库实例设置初始化参数文件
• 使用ASM 文件名执行SQL 命令
• 启动和关闭ASM 实例
• 管理ASM 磁盘组
• 使用RMAN 将数据库移植到ASM 自动存储管理:概述
• 可移植的高性能集群文件系统
• 管理Oracle DB 文件
• 数据分布到各个磁盘中以平衡负载
• 跨磁盘的集成镜像
• 解决许多存储管理问题 1.自动存储管理:概述
Automatic Storage Management (ASM) 提供了文件系统与卷管理器的纵向集成,这是一项
专门为Oracle 数据库文件构建的技术。使用ASM 可以管理单个SMP 计算机,也可管理
集群的多个节点以便为Oracle Real Application Clusters (RAC) 提供支持。
ASM 将I/O 负载分布在所有可用的资源中来优化性能,不必手动进行I/O 优化。ASM
有助于DBA 管理动态数据库环境,使DBA 不必关闭数据库,就可以增加数据库的大小
来调节存储分配。
ASM 通过维护数据的冗余副本来提供容错能力,也可以基于供应商提供的可靠存储机制
来构建ASM。通过为各类数据选择所期望的可靠性和性能特性来进行数据管理,而不是
人工处理每个文件。
ASM 功能可以实现人工存储自动化,提高DBA 管理大型数据库及更多数据库的能力,
从而可以节省DBA 的时间并提高效率
ASM 将文件分为多个分配单元(AU),并在所有磁盘间平均分配每个文件的分配单元。
ASM 使用索引技术跟踪每个分配单元的位置。存储容量发生变化时,ASM 不会重新条
带化所有数据,而是根据添加或删除的存储量,按比例移动一定数量的数据,以重新
均匀分配文件,保持磁盘间的负载平衡。此操作可在数据库处于活动状态时执行。
可以提高或降低重新平衡操作的速度,以减小对I/O 子系统的影响。ASM 还提供了镜像
保护,因此您不必再购买第三方的逻辑卷管理器。ASM 的一个独特优势在于其镜像基于
文件而不是基于卷。因此,同一磁盘组中可以包含受镜像保护的文件和不受镜像保护的
文件的组合。
ASM 支持数据文件、日志文件、控制文件、归档日志、RMAN 备份集以及其它Oracle
数据库文件类型。ASM 支持Oracle Real Application Clusters,而且无需使用集群逻辑卷
管理器或集群文件系统。
2.ASM 常规体系结构
要使用ASM,在启动数据库实例之前,必须启动一个名为ASM 实例的特殊实例。ASM
实例不会装载数据库,而是管理使ASM 文件可用于普通数据库实例所必需的那些元数据。
ASM 实例和数据库实例都能访问一些公共的磁盘集,这些公共磁盘集称为磁盘组。数据
库实例直接访问ASM 文件的内容,它们与ASM 实例通信的目的只是为了获取这些文件
的布局信息。
ASM 实例包含两个新的后台进程。一个进程负责协调磁盘组的重新平衡活动,称为RBAL。
第二个进程负责执行实际的重新平衡分配单元移动操作。在同一时刻可以存在许多此类进
程,它们分别名为ARB0、ARB1,以此类推。ASM 实例还有一些与数据库实例相同的后
台进程,其中包括SMON、PMON、LGWR、DBWR 和CKPT。
每个使用ASM 的数据库实例都有两个新的后台进程,ASMB 和RBAL。RBAL 负责全局打
开磁盘组中的磁盘。数据库实例启动时,ASMB 作为前台进程连接到ASM 实例。数据库
实例和ASM 实例之间的通信就是通过这种桥接来实现的。此类通信包括物理文件更改,
例如数据文件的创建和删除。通过这种连接可以定期交换消息,以更新统计信息并确认
这两个实例都在正常运行。
3.ASM 实例任务
要使用ASM 实例,必须能够完成以下任务:
• 创建ASM 实例
• 设置初始化参数
• 启动ASM 实例
• 管理ASM 实例
• 关闭ASM 实例
创建ASM 实例
运行Database Configuration Assistant (DBCA),可创建ASM 实例。在第一个屏幕上,选择
用于“Configure Automatic Storage Management(配置自动存储管理)”的选项,然后按
照步骤说明操作。此时将为您创建并启动ASM 实例。然后,系统将指导您完成为实例定
义磁盘组的过程。
在ASM 实例创建过程中,DBCA 会自动创建一个条目并将其添加到oratab 文件中。
此条目仅用于搜索。在使用服务机制的Windows 平台上,DBCA 会自动创建Oracle
Service 以及相应的注册表项,以便于搜索该ASM 实例。
配置ASM 实例后,DBCA 会创建ASM 实例参数文件和ASM 实例口令文件。
如果您是第一次创建启用ASM 的数据库,则DBCA 会确定主机上是否已存在ASM 实例。
如果ASM 实例搜索返回一个空列表,则DBCA 会创建一个新的ASM 实例。
ASM 实例初始化参数
INSTANCE_TYPE = ASM
DB_UNIQUE_NAME = +ASM
ASM_POWER_LIMIT = 1
ASM_DISKSTRING = '/dev/rdsk/*s2', '/dev/rdsk/c1*'
ASM_DISKGROUPS = dgroupA, dgroupB
LARGE_POOL_SIZE = 8MB
ASM 实例初始化参数
• INSTANCE_TYPE:对于ASM 实例,该参数应设置为ASM。
• DB_UNIQUE_NAME:该参数指定此ASM 实例为其管理磁盘组的服务提供程序的
名称。默认值为+ASM。仅当在同一节点上运行多个ASM 实例时才须修改默认值。
• ASM_POWER_LIMIT:该参数控制重新平衡操作的速度。值的范围在1 到11 之间,
11 表示速度最快。如果省略,该值将默认为1。从属进程的数量可以从手动重新平
衡命令(POWER) 中指定的并行级别派生,或者通过ASM_POWER_LIMIT 参数派生。
• ASM_DISKSTRING:该参数是一个与操作系统相关的值,由ASM 用来限制搜索中
涉及的磁盘集。
• ASM_DISK_GROUPS:该参数列出ASM 实例启动时或者使用ALTER DISKGROUP
ALL MOUNT 命令时装载的磁盘组的名称。
INSTANCE_TYPE 参数是唯一一个必须由您定义的参数。其它所有ASM 参数都有适合于
大多数环境的默认值。
注:如果ASM 环境是使用命令行而不是通过EM 创建的,则必须先创建磁盘组然后才能
装载。
4.数据库实例参数更改
INSTANCE_TYPE = RDBMS
LOG_ARCHIVE_FORMAT
DB_BLOCK_SIZE
DB_CREATE_ONLINE_LOG_DEST_n
DB_CREATE_FILE_DEST
DB_RECOVERY_FILE_DEST
CONTROL_FILES
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST
STANDBY_ARCHIVE_DEST
LARGE_POOL_SIZE = 8MB INSTANCE_TYPE 默认设置为RDBMS,指定该实例是一个RDBMS 实例。
如果LOG_ARCHIVE_DEST 设置为不完整的ASM 文件名(例如+dGroupA),则将忽略
LOG_ARCHIVE_FORMAT。如果LOG_ARCHIVE_DEST 设置为ASM 目录(例如,
+dGroupA/myarchlogdir/),则将使用LOG_ARCHIVE_FORMAT,并且文件是非
OMF 文件。Oracle 数据库会自动为归档日志创建唯一的文件名。
以下参数允许将ASM 文件名的多文件创建上下文格式作为目标:
• DB_CREATE_ONLINE_LOG_DEST_n
• DB_CREATE_FILE_DEST
• DB_RECOVERY_FILE_DEST
• CONTROL_FILES
• LOG_ARCHIVE_DEST_n
• LOG_ARCHIVE_DEST
• STANDBY_ARCHIVE_DEST
注:由于ASM 文件的分配单元映射是从LARGE_POOL 分配的,因此必须将
LARGE_POOL_SIZE 初始化参数设置为至少8 MB,越大越好。
5.启动ASM 实例
$ export ORACLE_SID='+ASM'
$ sqlplus /nolog
SQL> CONNECT / AS sysdba
Connected to an idle instance.
SQL> STARTUP;
ASM 实例的启动类似于数据库实例,但初始化参数文件中包含一个
INSTANCE_TYPE=ASM 这样的条目。将该参数值设置为ASM 时,它会通知Oracle 可执行
文件要启动的是ASM 实例而不是数据库实例。同时,ORACLE_SID 变量必须设置为该
ASM 实例的名称。ASM 实例启动时,在装载阶段会尝试装载ASM_DISKGROUPS 初始化
参数指定的磁盘组,而不是像非ASM 实例那样装载数据库。
对于ASM 实例和数据库实例,其它STARTUP 子句的解释大致相同。OPEN 对于ASM
实例无效。NOMOUNT 将启动ASM 实例而不装载任何磁盘组。
6.访问ASM 实例
ASM 实例没有数据字典,因此连接此类实例的唯一方法是使用操作系统验证机制,即
SYSDBA 或SYSOPER。要进行远程连接,需要使用口令文件。通常,SYSDBA 权限是通
过使用操作系统组来授予的。在UNIX 上,通常是dba 组。默认情况下,dba 组的成员
对该节点上的所有实例(包括ASM 实例)拥有SYSDBA 权限。使用SYSDBA 权限连接到
ASM 实例的用户对系统中的所有磁盘组拥有管理权限。ASM 实例中支持SYSOPER 权限,
该权限将允许执行的SQL 命令集限制到最小,即能满足已配置系统上的基本操作即可。
SYSOPER 用户可以使用的命令如下:
• STARTUP/SHUTDOWN
• ALTER DISKGROUP MOUNT/DISMOUNT
• ALTER DISKGROUP ONLINE/OFFLINE DISK
• ALTER DISKGROUP REBALANCE
• ALTER DISKGROUP CHECK
• SELECT all V$ASM_* views
其它所有命令,例如CREATE DISKGROUP、ADD/DROP/RESIZE DISK 等等,都需要
具备SYSDBA 权限才能执行,使用SYSOPER 权限不能执行。 7.关闭ASM 实例
尝试关闭处于NORMAL、IMMEDIATE 或TRANSACTIONAL 模式下的ASM 实例时,只有
在没有任何数据库实例连接到该ASM 实例的情况下,操作才会成功。如果至少有一个实
例与之连接,则会显示以下错误:
ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS
instance
如果对该ASM 实例执行SHUTDOWN ABORT 命令,则该实例将关闭,但在下次启动时要
求进行恢复。任何与之连接的数据库实例最终也将关闭,同时报告以下错误:
ORA-15064: communication failure with ASM instance
在单个ASM 实例配置中,如果ASM 实例失败,而磁盘组为进行更新处于打开状态,则
在ASM 实例重新初始化后,它将读取磁盘组的日志并恢复所有临时更改。在多个ASM
实例共享磁盘组的情况下,如果一个ASM 实例失败,另一个ASM 实例会自动恢复实例
失败所导致的临时ASM 元数据更改。数据库实例故障不会对ASM 实例产生影响。只要
主机重新启动,ASM 实例就会自动启动。ASM 实例应该使用底层操作系统支持的自动启
动机制。请注意,文件系统故障通常会导致节点崩溃。
8.ASM 存储:概念
ASM 不会妨碍任何现有的数据库功能。现有数据库能够像平常一样工作。可以将新文件
创建为ASM 文件,但听任现有文件以原有的方式管理,也可以最终将这些文件移植到
ASM。
上图描述了使用ASM 的Oracle 数据库内部各存储组件之间的关系。图表的左侧部分和
中间部分显示了在以前的版本中各组件之间的关系。右侧部分是ASM 引入的新概念。
数据库文件可以存储为ASM 文件。新层次的顶部是ASM 磁盘组。任何单个ASM 文件只
能包含在一个磁盘组中。不过,一个磁盘组中可以包含属于多个数据库的多个文件,并且
单个数据库可以使用来自多个磁盘组的存储空间。正如您看到的那样,一个磁盘组由多个
ASM 磁盘组成,但每个ASM 磁盘只能属于一个磁盘组。ASM 文件始终分布在该磁盘组
中的所有ASM 磁盘上。ASM 磁盘按分配单元(AU) 进行分区,每个分配单元的大小为
1 MB。分配单元是ASM 分配的最小连续磁盘空间。ASM 不允许跨分配单元拆分一个
Oracle 块。
注:本图只处理了一种类型的ASM 文件:数据文件。不过,ASM 也可用于存储其它类型
的数据库文件。
9.ASM 磁盘组
• 作为逻辑单元管理的磁盘组
• 将磁盘总空间划分为统一大小的单元
• 将各个文件平均分配到所有磁盘中
• 根据文件类型使用粗粒度或细粒度的
条带化
• 管理的是磁盘组而非文件 ASM 磁盘组
磁盘组是作为逻辑单元进行管理的一组磁盘。以ASM 磁盘为单位在磁盘组中添加或删除
存储。每个ASM 磁盘都有一个ASM 磁盘名,该名称在集群的所有节点中都是相同的。
由于不同主机可以使用不同的名称引用同一磁盘,因此必须提供一个ASM 磁盘名称的
缩写。
ASM 始终以大小为1 MB 的分配单元块将文件平均分配到磁盘组的所有磁盘中。这称为
粗粒度条带化。通过这种方式,ASM 消除了手动进行磁盘优化的必要。但是,磁盘组中
的磁盘应当具有相似的大小和性能特性,以获取最佳I/O。对于大多数安装,将只有几个
磁盘组。例如,工作区需一个磁盘组,恢复区需一个磁盘组。对于要求等待时间较短的
文件(如日志文件),ASM 提供细粒度条带化(128 KB)。细粒度条带化对每个AU 进行
条带化。细粒度条带化将中等大小的I/O 操作细分为多个较小的且并行执行的I/O 操作。
当文件和磁盘的数量增加时,您只需管理固定数量的磁盘组即可。从数据库角度而言,
可以将磁盘组指定为在数据库中创建的文件的默认位置。
注:每个磁盘组都是自描述式的,均包含自己的文件目录和磁盘目录。
故障组
故障组是某个特定磁盘组中的一组磁盘,共享一个需要容错的公用资源。例如,故障组
可以是连接到公用SCSI 控制器的一组SCSI 磁盘。尽管每个单独的磁盘都功能正常,但
控制器的故障将导致SCSI 总线上的所有磁盘都不可用。
故障组的构成视站点而定。这主要取决于站点的容错模式。默认情况下,ASM 将每个磁
盘分配至其各自的故障组。创建磁盘组或将磁盘添加至磁盘组时,管理员可能会指定自己
的磁盘分组方法,并将磁盘划分到相应的故障组中。确定了故障组之后,ASM 可以优化
文件布局,降低因共享资源故障而导致的数据不可用。
10.磁盘组镜像
• 在分配单元级别镜像
• 在每个磁盘上混合主分配
单元和镜像分配单元
• 外部冗余:延迟硬件镜像
• 正常冗余:
– 双向镜像
– 至少两个故障组
• 高冗余:
– 三向镜像
– 至少三个故障组
磁盘组镜像
ASM 具有三种磁盘组类型,可支持不同镜像类型:
• 外部冗余:不提供镜像。如果使用硬件镜像,或可以容忍磁盘故障所导致的数据
丢失,则使用外部冗余磁盘组。故障组不与这些类型的磁盘组一起使用
• 正常冗余:支持双向镜像
• 高冗余:提供三向镜像
ASM 不镜像磁盘,而是镜像分配单元。因此,只有磁盘组需要备用容量。某一磁盘发生
故障时,ASM 将从磁盘组中的其它正常磁盘读取镜像内容,然后自动在正常磁盘中重建
故障磁盘的内容。这就将击中到故障磁盘的I/O 分布到其它几个磁盘。
ASM 将文件的一个主分配单元分配至磁盘组中的一个磁盘时,会将该分配单元的一个镜
像副本分配至该磁盘组的另一个磁盘。给定磁盘中的主分配单元可以在该磁盘组的一个
伙伴磁盘上拥有自己的镜像副本。ASM 将确保主分配单元及其镜像副本始终位于不同的
故障组中。如果为磁盘组定义了故障组,则ASM 可以对同一故障组中多个磁盘发生的同
步故障进行容错处理。
11.磁盘组动态重新平衡
• 无论存储配置何时发生
更改,都会自动联机
重新平衡
• 仅按相应比例将数据
移至添加的存储
• 无需手动优化I/O
• 联机移植到新的存储
• 可在系统上使用
ASM_POWER_LIMIT
配置负载
• 使用ASM,可以非常轻松的完成重新平衡过程,无需DBA 或系统管理员进行任何
干预。无论何时添加或删除磁盘,ASM 均可以自动重新平衡磁盘组。
• 通过使用索引技术将分配单元分布在各个可用磁盘上,ASM 不必重新条带化所有数
据,而只需根据添加或删除的存储量按相应比例移动一定数量的数据,以在磁盘组
中的各个磁盘上重新平均分配文件,并维护这些磁盘之间的I/O 负载平衡。
• 由于可以保持I/O 负载平衡,因此,无论何时分配文件,也不论存储配置何时发生
更改,DBA 都无需搜索磁盘组中的热点,也不用手动移动数据来恢复I/O 负载平衡。
• 如果同时添加或删除多个磁盘,则使用ASM 将更加有效,这样即可在单个操作中
实现各磁盘的重新平衡。这可避免数据发生不必要的移动。使用此技术,可以轻松
地实现数据的联机移植。只需在一个操作中添加新磁盘,并在另一个操作中删除旧
磁盘即可。
• 通过设置ASM_POWER_LIMIT 初始化变量,可以控制重新平衡操作在系统上分配的
负载量。取值范围为0 到11。数值越小,负载越少,而设置越高,负载越多,完成
的也更快。设置为0 表示暂挂重新平衡操作。默认值为1。
12.管理磁盘组
ASM 实例的主要目标是管理磁盘组和保护其中的数据。ASM 实例还可以向数据库实例传
递有关文件布局的信息。通过这种方式,数据库实例可以直接访问磁盘组中存储的文件。
系统提供了多个新的磁盘组管理命令。这些命令都要求具备SYSDBA 权限,并且必须从
ASM 实例发出。
您可以添加新的磁盘组,还可以修改现有的磁盘组,在其中添加新磁盘、删除现有磁盘和
执行许多其它操作。可以删除现有的磁盘组。
13.创建和删除磁盘组
CREATE DISKGROUP dgroupA NORMAL REDUNDANCY
FAILGROUP controller1 DISK
'/devices/A1' NAME diskA1 SIZE 120G FORCE,
'/devices/A2',
'/devices/A3'
FAILGROUP controller2 DISK
'/devices/B1',
'/devices/B2',
'/devices/B3';
DROP DISKGROUP dgroupA INCLUDING CONTENTS;
假定在ASM 磁盘搜索过程中,在/devices 目录中找到以下磁盘:A1、A2、A3、B1、
B2 和B3。又假定磁盘A1、A2 和A3 位于一个SCSI 控制器上,而磁盘B1、B2 和B3
位于另一个控制器上。幻灯片中的第一个示例说明了如何配置名为DGROUPA 的磁盘组,
该磁盘组有两个故障组:CONTROLLER1 和CONTROLLER2。
该示例中还对磁盘组使用了默认的冗余特性NORMAL REDUNDANCY。可以根据需要提供
磁盘的名称和大小。如果不提供此信息,ASM 将创建一个默认名称,并尝试确定磁盘的
大小。如果不能确定大小,则会返回错误。FORCE 表示,即使指定磁盘已作为ASM 磁盘
组的成员格式化,也应该将该磁盘添加到指定磁盘组中。如果对未作为ASM 磁盘组成员
格式化的磁盘使用FORCE 选项,则会返回错误。
如幻灯片中的第二个语句所示,可以删除磁盘组及其所有文件。为避免出现误删现象,
如果除内部ASM 元数据外磁盘组中还包含任何其它文件,则必须指定INCLUDING
CONTENTS 选项。必须先装载磁盘组,然后才能将其删除。确保磁盘组中的任何文件均
未打开后,将该组及其所有驱动器一起从磁盘组中删除。然后,将改写每个磁盘的标头,
去除其中的ASM 格式信息。
14.将磁盘添加至磁盘组
ALTER DISKGROUP dgroupA ADD DISK
'/dev/rdsk/c0t4d0s2' NAME A5,
'/dev/rdsk/c0t5d0s2' NAME A6,
'/dev/rdsk/c0t6d0s2' NAME A7,
'/dev/rdsk/c0t7d0s2' 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 带宽就越少。
15.其它ALTER 命令
从dgroupA 中删除一个磁盘:
ALTER DISKGROUP dgroupA DROP DISK A5;
在单个命令中添加和删除磁盘:
ALTER DISKGROUP dgroupA
DROP DISK A6
ADD FAILGROUP fred
DISK '/dev/rdsk/c0t8d0s2' NAME A9;
取消磁盘删除操作:
ALTER DISKGROUP dgroupA UNDROP DISKS;
其它ALTER 命令
幻灯片中的第一个语句显示如何从DGROUPA 磁盘组中删除一个磁盘。第二个语句显示
如何使用单个命令添加和删除磁盘。本例的最大优点在于:在命令完成前不会启动重新
平衡。第三个语句显示如何取消磁盘删除操作。UNDROP 命令只对磁盘的暂挂删除操作
有效,对已完成的删除操作没有任何影响。
以下语句将根据需要重新平衡DGROUPB 磁盘组:
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
此命令通常不是必需的,因为在添加、删除磁盘或调整磁盘大小时会自动执行此操作。
不过,如果希望使用POWER 子句来覆盖初始化参数ASM_POWER_LIMIT 定义的默认速
度,则该命令非常有用。通过在命令中重新输入新的级别,可以更改正在进行的重新平
衡操作的强度。如果强度级别为0,则重新平衡操作将中断,直到重新隐式或显式调用
该命令。
以下语句将卸装DGROUPA:
ALTER DISKGROUP dgroupA DISMOUNT;
使用MOUNT 和DISMOUNT 选项,可以分别指定一个或多个磁盘组可供数据库实例使用或
不可供其使用。 使用以下语句验证磁盘组元数据的内部一致性,并修复发现的任何错误:
ALTER DISKGROUP dgroupA CHECK ALL;
如果只希望发出错误预警,也可以使用NOREPAIR 子句。虽然示例中请求对磁盘组中的
所有磁盘进行检查,不过也可以指定对某个文件或单个磁盘进行检查。此命令要求磁盘组
已装载。一旦发现任何错误,就会显示一条错误概要消息,并在预警日志中报告检测到的
错误的详细资料。
注:在上面六个示例中,前四个示例触发了磁盘组重新平衡,而后两个则未触发。
16.ASM 文件
数据库文件
ASM 文件在磁盘组dgroupA 中自动分布
CREATE TABLESPACE sample DATAFILE '+dgroupA'; 您为某个表空间指定ASM 磁盘组作为数据文件名时,将在该磁盘组中创建一些ASM
文件,以便为该表空间提供存储空间。
创建ASM 文件时,会永久性地设置一些文件属性,其中包括文件的保护策略和条带化策
略。ASM 文件是Oracle 管理文件。ASM 创建的任何文件一旦不再需要,就会自动删除。
使用ASM 时,文件操作将按数据库对象来指定。虽然文件名会通过一些数据字典视图公
开,或可以通过ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令来获取,
但数据库管理从不需要知道文件的名称。在物理上,由于磁盘组中的每个文件都分布在
磁盘组中的所有磁盘上,因此备份单个磁盘没有任何用处。ASM 文件的数据库备份必须
通过RMAN 来完成。
注:ASM 不管理二进制文件、预警日志、跟踪文件或口令文件。
17.ASMCMD 实用程序
$ asmcmd
ASMCMD> ls -l DGROUP1/ORCL/DATAFILE
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE OCT 05 21:00:00 Y HRAPPS.257.570923611
DATAFILE MIRROR COARSE OCT 05 21:00:00 Y TBSASM.256.570922917
ASMCMD>
SQL> CREATE TABLESPACE tbsasm DATAFILE '+DGROUP1' SIZE 100M;
Tablespace created.
SQL> CREATE TABLESPACE hrapps DATAFILE '+DGROUP1' SIZE 10M;
Tablespace created. ASMCMD 实用程序
ASMCMD 是一个命令行实用程序,可用于轻松地查看和操纵ASM 磁盘组中的文件和目录。
该实用程序可以列出磁盘组内容、执行搜索、创建和删除目录以及显示空间使用情况等等。
注:有关ASMCMD 的详细信息,请参阅文档《Oracle 数据库实用程序》。 18.将数据库移植到ASM 存储区
1. 完全关闭数据库。
2. 关闭数据库并修改服务器参数文件,以使用Oracle
Managed Files (OMF)。
3. 编辑并执行以下RMAN 脚本:
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u1/c1.ctl';
ALTER DATABASE MOUNT;
BACKUP AS COPY DATABASE FORMAT '+dgroup1';
SWITCH DATABASE TO COPY;
SQL "ALTER DATABASE RENAME '/u1/log1' TO '+dgroup1' ";
# Repeat RENAME command for all online redo log members
...
ALTER DATABASE OPEN RESETLOGS;
SQL "ALTER DATABASE TEMPFILE '/u1/temp1' DROP";
将数据库移植到ASM 存储区
由于ASM 文件无法通过正常的操作系统界面访问,因此RMAN 是复制ASM 文件的
唯一途径。虽然由于表空间的历史原因,表空间中的文件既可以是ASM 文件,也可以
是非ASM 文件,但是RMAN 命令会将非ASM 文件移到ASM 磁盘组中。通过以下过程,
可以将整个数据库移到ASM 磁盘组中:(假定您使用的是服务器参数文件。)
1. 使用V$CONTROLFILE 和V$LOGFILE,获取当前控制文件和联机重做日志的
文件名。
2. 像平常一样关闭数据库。按如下所述,修改数据库的服务器参数文件:
- 将必要的OMF 目标参数设置为所需的ASM 磁盘组。
- 删除CONTROL_FILES 参数。
3. 编辑和运行RMAN 命令文件,这将备份数据库、将当前数据文件移到备份中并重命
名联机重做日志。使用BACKUP AS COPY 命令只能移动表空间或数据文件。
4. 删除旧的数据库文件。
注:如果创建一个OMF 控制文件,并且有一个服务器参数文件,则会在该服务器参数
文件中创建一个CONTROL_FILES 初始化参数条目。
相关阅读 更多 +