Oracle11gR1中ASM增强

http://tech.it168.com/a2008/1120/211/000000211426.shtml

   本文主要概述了Oracle数据库11g第1版中对自动存储管理(ASM)的增强,其中包括:

  Oracle数据库存储管理员指南

白朗网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

  新的磁盘组兼容属性

  镜像快速重新同步

  滚动升级

  SYSMAN特权和OSASM操作系统组

  可扩展性和性能增强

  新的ASMCMD命令和选项

  Preferred Read Failure(首选读失效)组

  快速重新平衡

  混合磁盘组维护增强

 Oracle数据库存储管理员指南

 在Oracle官方网站上首次放出了存储管理员指南,参见http://download.oracle.com/docs/cd/B28359_01/server.111/b31107/toc.htm。

 新的磁盘组兼容属性

 Oracle 11g包括了两个新的兼容属性,让数据库软件可以使用特殊的磁盘组:

 (1) COMPATIBLE.ASM:可以访问磁盘组的ASM软件最小版本。在11g中,默认设置是10.1

 (2) COMPATIBLE.RDBMS:对于任何使用磁盘组的数据库实例,COMPATIBLE数据库初始化参数最小值。在11g中,默认设置是10.1。

 兼容版本的磁盘组只能增加,不能减少,如果你在增加版本时犯错,只能重新创建一个新的磁盘组。

 磁盘组的兼容属性可以在创建磁盘组期间给CREATE DISKGROUP目录添加ATTRIBUTE子句进行设置。

CREATE DISKGROUP dataDISK'/dev/raw/*'

 ATTRIBUTE'compatible.asm'='11.1';

 CREATE DISKGROUP dataDISK'/dev/raw/*'

 ATTRIBUTE'compatible.rdbms'='11.1','compatible.asm'='11.1';

 可以在ALTER DISKGROUP命令后面加上SET ATTRIBUTE子句改变现有磁盘组的兼容属性。 

ALTER DISKGROUP dataSET ATTRIBUTE'compatible.asm'='11.1';

 ALTER DISKGROUP dataSET ATTRIBUTE'compatible.rdbms'='11.1';

 可以从V$ASM_DISKGROUP 和 V$ASM_ATTRIBUTE视图查看当前有效的兼容性设置。

COLUMN name FORMAT A10

 COLUMN compatibility FORMAT A20

 COLUMN database_compatibility FORMAT A20

 SELECT group_number, name, compatibility, database_compatibilityFROM v$asm_diskgroup;

 GROUP_NUMBER NAME COMPATIBILITY DATABASE_COMPATIBILI

 ------------ ---------- -------------------- --------------------

 1 DATA11.1.0.0.011.1.0.0.0

 1 row selected.

 SQL>

 COLUMN name FORMAT A20

 COLUMN value FORMAT A20

 SELECT group_number, name, valueFROM v$asm_attributeORDERBY group_number, name;

 GROUP_NUMBER NAME VALUE

 ------------ -------------------- --------------------

 1 au_size1048576

 1 compatible.asm11.1.0.0.0

 1 compatible.rdbms11.1

 1 disk_repair_time3.6h

 4 rows selected.

 SQL>

 镜像快速重新同步

 在短暂的磁盘失效期间,ASM跟踪那些必须应用到离线磁盘的有变化的区间(extend),一旦磁盘可用了,只将那些改变的区间同步回磁盘,而不是全部磁盘内容,显著增加了重新同步进程的速度。

 只有当磁盘组的兼容属性设置为11.1或更高时,镜像快速重新同步才可用。

ALTER DISKGROUP disk_group_1SET ATTRIBUTE'compatible.asm'='11.1';

 ALTER DISKGROUP disk_group_1SET ATTRIBUTE'compatible.rdbms'='11.1;

 ASM会删除离线时间超过3.6小时的磁盘,可以通过修改DISK_REPAIR_TIME(单位可以是分钟,M或m,或小时,H或h)参数设置磁盘组默认时间限制。

-- 以小时为单位进行设置

 ALTER DISKGROUP disk_group_1SET ATTRIBUTE'disk_repair_time'='4.5h';

 -- 以分钟为单位进行设置

 ALTER DISKGROUP disk_group_1SET ATTRIBUTE'disk_repair_time'='300m';

 ALTER DISKGROUP命令的DROP AFTER子句用于废除DISK_REPAIR_TIME参数设置的默认时间。 

--使用默认的DISK_REPAIR_TIME.

 ALTER DISKGROUP disk_group_1 OFFLINEDISK D1_0001;

 --废除默认的DISK_REPAIR_TIME.

 ALTER DISKGROUP disk_group_1 OFFLINEDISK D1_0001DROP AFTER 30m;

 如果磁盘在滚动升级期间离线,直到滚动升级完成,计时器才会启动。


 滚动升级

 使用滚动升级11g ASM群集实例可以向前升级,处于滚动升级模式下的ASM群集可以在其中一个节点上使用下面的命令进行滚动升级:

ALTER SYSTEM START ROLLING MIGRATIONTO11.2.0.0.0;

 只要群集处于滚动升级模式,其中每个节点就可以按顺序执行关闭、升级、启动,在升级过程中,群集处于一个混合版本的环境中,直到所有升级全部完成,在这种情况下,群集受到下列操作的限制:

  Mount和dismount磁盘组

  Open、close、resize和delete数据库文件

  访问本地固定视图和固定程序包

 使用下面的查询语句可以查询出ASM群集的当前状态:

SELECT SYS_CONTEXT('sys_cluster_properties','cluster_state')FROM dual;

 当最后一个节点升级完成后,使用下面的命令来停止滚动升级,它会检查所有的ASM实例版本是否正确,然后关闭滚动升级模式,并重新启动挂起的平衡操作。

ALTER SYSTEM STOP ROLLING MIGRATION;

 滚动升级过程包括下列限制和其他约定:

  在ASM滚动升级启动之前必须打上所有的Oracle clusterware补丁。

  滚动升级只从11g开始才可用,因此这个方法不适合从10g升级到11g。

  如果在滚动升级完成之前失败,可以回退到之前的版本。

  如果升级失败,在尝试新的升级之前必须完成平衡操作。

  在滚动升级期间新加入群集的实例会自动进入滚动升级模式。

  如果在滚动升级期间群集中的所有实例都处于停止状态,一旦实例重新启动,它们将不再处于滚动升级模式,升级就必须重新初始化,就好像是一个新的进程一样。

SYSMAN特权和OSASM操作系统组

 引入ASM后,使得存储的管理从系统管理员领域转移到DBA的领域了,不幸的是,不是每家公司都是这种情况,结果就是,一些系统管理员都必须获取特权用户来处理磁盘存储,Oracle引入了SYSASM特权和OSASM操作系统组解决了这一问题,它提供了两个机制,使存储和数据库管理的职责分离。

 在ASM实例上可以象创建数据库用户那样创建一个用户,授予这些用户SYSASM特权,让它们可以连接到ASM实例处理管理任务,首先,连接到ASM实例:

$ export ORACLE_SID=+ASM

 $ sqlplus/as sysasm

 接下来,在ASM实例中创建一个新用户,并授予它SYSASM特权,这个用户就可以使用SYSASM特权连接了: 

SQL>CREATEUSER asm_user_1 IDENTIFIEDby asm_password;

 User created.

 SQL>GRANT SYSASMTO asm_user_1;

 Grant succeeded.

 SQL> CONN asm_user_1/asm_passwordAS SYSASM

 Connected.

 SQL>

 另外,给OSASM组( asmadmin )指派一个操作系统用户,允许以SYSASM身份连接时使用操作系统认证,下面的例子创建了一个新操作系统用户,并将它指派给OSASM组( asmadmin ):

# useradd tim_hall-G asmadmin

 # su- tim_hall

 $ export ORACLE_SID=+ASM

 $ export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1

 $ $ORACLE_HOME/bin/sqlplus/as sysasm

 SQL*Plus: Release11.1.0.6.0- Productionon Fri Aug816:48:372008

 Copyright (c)1982,2007, Oracle.All rights reserved.

 Connectedto:

 OracleDatabase 11g Enterprise Edition Release11.1.0.6.0- Production

 With the Partitioning, OLAP, Data MiningandReal Application Testing options

 SQL>

 可扩展性和性能增强

 ASM文件以区间集形式存储在磁盘组上,在Oracle 10g中,每个区间直接映射到一个分配单元(AU),但在Oracle 11g中,一个区间可以由一个或多个分配单元组成,因为文件在不断变大,区间尺寸可以变大以减少区间映射的文件的大小,因此更节约内存。

 当磁盘组兼容属性设置为11.1或更高时,区间大小将根据文件大小自动增长,第一个20,000区间匹配分配单元(AU)大小,下一个20,000区间大小由8个分配单元组成(8*AU),除了这一点,区间大小都是64个分配单元(64*AU)。

 除了自动扩展区间大小外,Oracle 11g也允许在CREATE DISKGROUP语句中使用ATTRIBUTE子句来控制分配单元的大小,分配单元大小范围从1M到64M。

CREATE DISKGROUP disk_group_2

 EXTERNAL REDUNDANCY

 DISK'/dev/sde1'

 ATRRIBUTE'au_size'='32M';

 对于非常大的数据库,同时使用扩展区间大小和分配更大的分配单元将会使I/O开销更大。


新的ASMCMD命令和选项

 ASM命令行实用程序包括了多个新的命令,下面的示例输出假设你已经以-p选项启动了实用程序:

$ asmcmd-p

 ASMCMD[+]>

 在asmcmd中输入help <命令>可以查看每个命令的用法。

 lsdsk命令从V$ASM_DISK_STAT and V$ASM_DISK视图查询出所有ASM磁盘的信息,简要用法如下所示: 

lsdsk[-ksptcgHI][-d][pattern]

 下面是不加-k选项和加上-k选项后的输出结果示例:

ASMCMD[+]> lsdsk

 Path

 /dev/sdc1

 /dev/sdd1

 /dev/sde1

 ASMCMD[+]> lsdsk-d data-k

 Total_MB Free_MB OS_MB Name Failgroup Library Label UDID Product Redund Path

 818969618189 DATA_0000 DATA_0000 System UNKNOWN/dev/sdc1

 818969618189 DATA_0001 DATA_0001 System UNKNOWN/dev/sdd1

 818969508189 DATA_0002 DATA_0002 System UNKNOWN/dev/sde1

 ASMCMD[+]>

 cp命令允许文件在ASM和本地或远程目标之间拷贝,简要用法如下所示:

cp[-ifr]<[\@connect_identifier:]src><[\@connect_identifier:]tgt>

 下面的示例从ASM拷贝USERS数据文件到本地文件系统:

ASMCMD[+]> cp+DATA/db11g/datafile/users.273.661514191/tmp/users.dbf

 source+DATA/db11g/datafile/users.273.661514191

 target/tmp/users.dbf

 copyingfile(s)...

 file,/tmp/users.dbf, copycommitted.

 ASMCMD[+]>

 但遗憾的是cp命令不能拷贝控制文件。

 md_backup命令拷贝一个或多个磁盘组的元数据,简要用法如下所示:

md_backup[-b location_of_backup][-g dgname [-g dgname ???]]

 下面是一个示例命令,命令结果包括了所有重新创建ASM设置需要的元数据:

ASMCMD[+]> md_backup-b/tmp/backup.txt-g data

 Diskgroupto be backed up: DATA

 ASMCMD[+]>

 md_restore命令允许从md_backup命令创建的元数据恢复磁盘组设置,简要用法如下所示: 

md_restore-b[-li]

 [-t (full)|nodg|newdg][-f]

 [-g ',,...']

 [-o ':,...']

 直接从以前的备份还原的命令如下:  

ASMCMD[+]> md_restore-b/tmp/backup.txt-tfull-g data

 remap命令修复磁盘上一段范围的物理块,每个块的内容都无效,因此只有展示了读错误的块被修复,简要用法如下所示; 

remap

 下面是这个命令的一个示例:

ASMCMD[+]> remap data data_00015000-5999

Preferred Read Failure(首选读失效)组

 在Oracle 10g中,ASM总是读取镜像区间集的主要拷贝,当两个节点和两个失效组都位于同一个站点中时,这样做没有问题,但群集扩大后,它的效率就变得低下了,因为它会引起很多不必要的网络通讯,Oracle 11g允许每个节点定义一个首选失效组,允许群集中的节点优先于远程失效组访问本地失效组。

 为了配置首选读失效组,磁盘组兼容属性必须设置为11.1或更高,兼容选项设置正确了,就可以使用ASM_PREFERRED_READ_FAILURE_GROUPS参数为每个节点设置首选失效组。

SELECT name, failgroupFROM v$asm_disk;

 NAME FAILGROUP

 ------------------------------ ------------------------------

 DATA_0000 DATA_0000

 DATA_0001 DATA_0001

 DATA_0002 DATA_0002

 3 rows selected.

 SQL>

 ALTER SYSTEMSET ASM_PREFERRED_READ_FAILURE_GROUPS='data.data_0000','data.data_0001','data.data_0002';

 快速重新平衡

 ALTER DISKGROUP ... MOUNT语句允许磁盘组以限制(RESTRICTED)模式挂载:

SQL>SELECT nameFROM v$asm_diskgroup;

 NAME

 ------------------------------

 DATA

 SQL>ALTER DISKGROUP data DISMOUNT;

 Diskgroup altered.

 SQL>ALTER DISKGROUP data MOUNT RESTRICTED;

 Diskgroup altered.

 SQL>ALTER DISKGROUP data DISMOUNT;

 Diskgroup altered.

 SQL>ALTER DISKGROUP data MOUNT;

 Diskgroup altered.

 SQL>

 在RAC环境中,磁盘组以RESTRICTED模式挂载时,只能有一个实例访问它,受限的磁盘组对任何ASM客户端都是不可用的,即使节点已经挂载。

 使用RESTRICTED模式改善了RAC环境中重新平衡操作的性能,当重新平衡操作完成时,应该卸载磁盘组,然后以NORMAL模式挂载(默认模式)。

 混合磁盘组维护增强

  CREATE DISKGROUP 和 ALTER DISKGROUP包括了新的ATTRIBUTE子句(compatible, disk_repair_time, au_size)。

  ALTER DISKGROUP命令的CHECK子句已经被简化,只留下了两个选项:NOREPAIR和REPAIR。默认使用NOREPAIR。这时只会显示错误概要,详细错误信息会写到警告日志中。  

ALTER DISKGROUP dataCHECK;-- Like NOREPAIR

 ALTER DISKGROUP dataCHECK NOREPAIR;

 ALTER DISKGROUP dataCHECK REPAIR;

  磁盘组可以以限制(RESTRICTED)模式挂载了,它改善了某些维护任务的性能。

  ALTER DISKGOUP命令包括了ONLINE和OFFLINE子句,在磁盘维护时可以先离线,修复好后再恢复到在线状态。 

-- 个体磁盘.

 ALTER DISKGROUP data OFFLINEDISK'disk_0000','disk_0001';

 ALTER DISKGROUP data ONLINEDISK'disk_0000','disk_0001';

 -- 失效组.

 ALTER DISKGROUP data OFFLINE DISKSIN FAILGROUP'fg_0000';

 ALTER DISKGROUP data ONLINE DISKSIN FAILGROUP'fg_0000';

 -- 将所有磁盘以磁盘组形式恢复到在线状态.

 ALTER DISKGROUP data ONLINEALL;

  ASM不能挂载的磁盘组现在可以使用DROP DISKGROUP命令加上FORCE关键字进行强制删除了。

DROP DISKGROUP data FORCE;


本文标题:Oracle11gR1中ASM增强
标题网址:http://azwzsj.com/article/pgjegd.html