一、环境。
[grid@rhel2 ~]$ cat /etc/issue
Red Hat Enterprise Linux Server release 5.5 (Tikanga) Kernel \r on an \m
[grid@rhel2 ~]$ uname -a
Linux rhel2.localdomain 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
[root@rhel2 bin]# ./crsctl query crs softwareversion 
Oracle Clusterware version on node [rhel2] is [11.2.0.2.0]

二、磁盘组兼容性属性。
1、设置磁盘组兼容性属性:
SQL> CREATE DISKGROUP data EXTERNAL REDUNDANCY DISK '/dev/raw/raw8' ATTRIBUTE 'compatible.rdbms' = '10.1', 'compatible.asm' = '11.2', 'compatible.advm' ='11.2';
要想使用11gR2的新功能ASM卷和文件系统,必须设置磁盘组的compatible.advm属性为11.2(由于ADVM是11gR2的新功能,所以compatible.advm只能设置为11.2),对应的compatible.asm属性也必须设置为11.2,否者将收到如下报错:
SQL> CREATE DISKGROUP data DISK '/dev/raw/raw8' ATTRIBUTE 'compatible.rdbms' = '10.1', 'compatible.asm' = '11.1', 'compatible.advm' ='11.2';
ORA-15493: target ADVM compatibility (11.2.0.0.0) exceeds ASM compatibility (11.1.0.0.0)

compatible.advm只能设置为11.2:
SQL> CREATE DISKGROUP data EXTERNAL REDUNDANCY DISK '/dev/raw/raw8' ATTRIBUTE 'compatible.rdbms' = '10.1','compatible.advm' ='11.1';
ORA-15238: 11.1 is not a valid value for attribute compatible.advm
ORA-15494: compatible.advm must be 11.2.0.0.0 or higher

下面是对COMPATIBLE.ASM和COMPATIBLE.RDBMS含义的解释:
COMPATIBLE.ASM - The minimum version of the ASM software that can access the disk group. In 11g, the default setting is 10.1.
COMPATIBLE.RDBMS - The minimum COMPATIBLE database initialization parameter setting for any database instance that uses the disk group. In 11g, the default setting is 10.1.
注:使用ASMCA工具创建的磁盘组,compatible.asm默认值为11.2.0.0.0,compatible.rdbms默认值为10.1.0.0.0,compatible.advm为空。

2、修改磁盘组兼容性属性:
SQL> ALTER DISKGROUP data SET ATTRIBUTE 'compatible.rdbms' = '11.1';
磁盘组的属性只能增大,不能减小,如果增大过程出现错误,那么只能通过重建磁盘组来调整兼容性属性值。

3、查看磁盘组当前兼容性属性:
SQL> set linesize 200
SQL> col name format a10
SQL> col compatibility format a30
SQL> col DATABASE_COMPATIBILITY format a30
SQL> select group_number,name,compatibility,database_compatibility from v$asm_diskgroup where name='DATA';
GROUP_NUMBER NAME       COMPATIBILITY                  DATABASE_COMPATIBILITY
------------ ---------- ------------------------------ ------------------------------
           2 DATA       11.2.0.0.0                     11.1.0.0.0
SQL> col name format a30
SQL> col value format a30
SQL> select name,value from v$asm_attribute where group_number=2 and name like 'compatible.%';
NAME                           VALUE
------------------------------ ------------------------------
compatible.asm                 11.2.0.0.0
compatible.rdbms               11.1
compatible.advm                11.2.0.0.0

三、快速镜像重新同步功能。
    在一个故障组短暂的磁盘失败期间,ASM记录改变区间的轨迹,以便在磁盘恢复正常后能够快速的同步改变的区间,而不是将整个磁盘的数据重新覆盖一遍,这能够大幅度的提高数据重新同步的过程。
该功能要求磁盘组的兼容性属性必须设置为11.1或者更高。
另外,该功能只对Normal和High冗余级别的磁盘组有用,因为External冗余级别的磁盘脱机会导致写失败。
SQL> CREATE DISKGROUP DATA NORMAL REDUNDANCY
  2  FAILGROUP A disk '/dev/raw/raw8' name data01
  3  FAILGROUP B disk '/dev/raw/raw9' name data02
  4  ATTRIBUTE 'compatible.rdbms'='11.2','compatible.asm'='11.2','compatible.advm'='11.2';

SQL> col name format a30
SQL> col value format a30
SQL> set linesize 200
SQL> select name,value from v$asm_attribute where name like 'compatible.%' and group_number=(select group_number from v$asm_diskgroup where name='DATA');
NAME                           VALUE
------------------------------ ------------------------------
compatible.asm                 11.2.0.0.0
compatible.rdbms               11.2.0.0.0
compatible.advm                11.2.0.0.0

磁盘默认的可脱机时间为3.6小时,可以通过修改磁盘组的disk_repair_time属性来调整这个值(H或者h表示小时,M或者m表示分钟):
SQL> select name,value from v$asm_attribute where name='disk_repair_time' and group_number=(select group_number from v$asm_diskgroup where name='DATA');
NAME                           VALUE
------------------------------ ------------------------------
disk_repair_time               3.6h
SQL> alter diskgroup data set attribute 'disk_repair_time'='4.5h';
SQL> select name,value from v$asm_attribute where name='disk_repair_time' and group_number=(select group_number from v$asm_diskgroup where name='DATA');
NAME                           VALUE
------------------------------ ------------------------------
disk_repair_time               4.5h

另外还可以使用ALTER DISKGROUP的DROP AFTER子句来覆盖磁盘组的disk_repair_time属性:
SQL> select name,group_number from v$asm_diskgroup where name='DATA';
NAME                           GROUP_NUMBER
------------------------------ ------------
DATA                                      2

SQL> select group_number,name,state from v$asm_disk where group_number=2;
GROUP_NUMBER NAME                           STATE
------------ ------------------------------ ----------------
           2 DATA02                         NORMAL
           2 DATA01                         NORMAL

SQL> alter diskgroup data offline disk data02;
SQL> alter diskgroup data online disk data02; 
SQL> alter diskgroup data offline disk data02 drop after 20m;
SQL> alter diskgroup data online disk data02;

四、SYSASM权限和OSASM(asmadmin)系统组。
    为了使管理更加有针对性,Oracle 11gR2将管理权限进行细化,管理ASM的操作系统组叫做OSASM(asmadmin),凡是属于该组的用户都可以以sysasm的身份登录ASM实例。sysasm权限是管理ASM的最高权限,可以执行所有的ASM实例管理操作;另外还保留了sysdba权限,被赋予该权限的ASM用户只能执行普通的管理操作。SYSASM、SYSDBA是ASM实例用户具有的权限,asmadmin是操作系统组。
  [grid@rhel2 ~]$ id grid
uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1100(asmadmin),1300(asmdba),1301(asmoper)
[grid@rhel2 ~]$ sqlplus / as sysasm
SQL> create user asm_check identified by asm_check;
SQL> grant sysasm to asm_check;
[grid@rhel2 ~]$ sqlplus asm_check/asm_check as sysasm
SQL> show user
USER is "SYS"

五、AU_SIZE大小设置。
    对于磁盘组来说,除了上面讲到了compatible.*和disk_repair_time属性外,还有一个重要的属性au_size。该属性是设置磁盘组的分配单元大小,可配置的范围包括:1、2、4、8、16、32、64MB。ASM文件也是以区间的形式存储在ASM磁盘组中,在10g每个区间直接映射到AU,从11g开始区间能够映射到1个或多个AU。
    当磁盘组兼容性属性设置为11.1或者更高,区间大小将自动增长,在11.1的版本,前20000个区间匹配AU大小,接下来的20000个区间匹配8个AU大小,大于40000的区间匹配64个AU大小,在11.2,这个增长比例从1:8:64变成了1:4:16。
执行以下的命令使用CREATE DISKGROUP语句的ATTRIBUTE子句控制AU的大小:
SQL> CREATE DISKGROUP disk_group_2
  2    EXTERNAL REDUNDANCY
  3    DISK '/dev/raw/raw10'
  4    ATTRIBUTE 'compatible.rdbms'='11.1','compatible.asm'='11.1','au_size' = '32M';
如果au_size设置较大,需要和compatible.rdbms,compatible.asm两个属性一起设置。
可扩展的区间大小和大AU的组合能够增加非常大的数据库的IO性能。
AU_SIZE只能在创建磁盘组的时候设置,之后只能查看不能调整。

六、新的ASMCMD命令及选项。
    11g对ASMCMD工具也做了很多的增强。
[grid@rhel2 ~]$ asmcmd -p
ASMCMD [+] >
-p参数可以在提示符中显示ASM的当前全路径。
ASMCMD [+] >help lsdg
help [command]将显示命令的详细帮助信息。
lsdsk命令从V$ASM_DISK_STAT和V$ASM_DISK视图列出ASM磁盘信息。下面是该命令的用法:
lsdsk [-kptgMI][-G diskgroup ] [--suppressheader] [ --member|--candidate] [--discovery][--statistics][pattern]
ASMCMD [+] > lsdsk   
ASMCMD [+] > lsdsk -k 
ASMCMD [+] >  lsdsk -p
ASMCMD [+] > lsdsk -t
    顺便想提一下,V$ASM_DISK和V$ASM_DISK_STAT两个视图之间的区别在于查询V$ASM_DISK视图每次都会扫描磁盘头获取相关信息,而查询V$ASM_DISK_STAT视图相关信息是从内存中获取,这两个视图之间是有时间差,所以比较两个视图之间的数据差异可以获得ASM磁盘的IO性能等指标。其它的视图也有类似功能。

4.可以使用cp命令在ASM和本地、远程操作系统文件系统之间直接拷贝数据。下面是该命令的用法:
cp [-i][-f][connect_str:]src_file [connect_str:]tgt_file
ASMCMD [+data1/orcl/datafile] > cp USERS.276.816871609 /tmp/users01.dbf
ASMCMD [+data1/orcl/datafile] > cp /tmp/users01.dbf +DATA/users01.dbf

cp只能拷贝Oracle自身的文件类型,例如:数据文件、日志文件等。
ASMCMD [+data1/orcl/datafile] > cd +DATA
ASMCMD [+DATA] > ls        
ASMCMD [+DATA] > ls -l
    有关ASM和文件系统之间的数据拷贝还可以参考文章:《使用RMAN在ASM和文件系统之间拷贝数据 》:http://blog.itpub.net/23135684/viewspace-775905/

md_backup命令针对一个或更多磁盘组创建元数据拷贝,下面是该命令的用法:
md_backup backup_file [-G diskgroup [,diskgroup,...]]
结果文件包含需要重建ASM磁盘的所有元数据。
ASMCMD [+data1/orcl] >  md_backup /tmp/backup.txt -G data

md_restore命令允许从使用md_backup命令创建的元数据中还原磁盘组,下面是该命令的用法:
md_restore backup_file [--silent][--full|--nodg|--newdg -o 'old_diskgroup:new_diskgroup [,...]'][-S sql_script_file] [-G 'diskgroup [,diskgroup...]']
ASMCMD [+] > md_restore /tmp/backup.txt --full -G data
    恢复磁盘组元数据信息磁盘组不能处于MOUNT状态,md_restore命令只恢复元数据信息,但磁盘组的数据是无法恢复的。

remap命令修复磁盘一个范围的物理块,不验证每个块的内容,只有读错误的块能被修复,下面是该命令的用法:
remap diskgroup disk block_range
ASMCMD [+] > remap data data01 1000-2000

七、失败组优先读。
   在Oracle 10g,ASM一直读镜像区间设置的主拷贝,当两个节点和两个故障组位于相同的物理位置是没问题的,但是对于扩展集群的效率很低,常常引起不必要的网络传输。
从Oracle 11g开始,允许每个节点定义一个优先的故障组;允许扩展集群中的节点优先访问本地故障组。
配置磁盘组的优先读故障组要求兼容性属性必须设置为11.1或者更高。一旦兼容性选项正确,针对每个节点,ASM_PREFERRED_READ_FAILURE_GROUPS参数设置优先故障组。
SQL> select group_number,name,failgroup from v$asm_disk where group_number=2;
GROUP_NUMBER NAME                           FAILGROUP
------------ ------------------------------ ------------------------------
           2 DATA02                         B
           2 DATA01                         A

SQL> show parameter asm_preferred_read_failure_groups
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
asm_preferred_read_failure_groups    string                 OCRVDISK.OCRVDISK_0001
SQL> alter system set asm_preferred_read_failure_groups='OCRVDISK.OCRVDISK_0001','DATA.DATA01' sid='+ASM1';
SQL> alter system set asm_preferred_read_failure_groups='OCRVDISK.OCRVDISK_0001','DATA.DATA02' sid='+ASM2';
SQL> show parameter asm_preferred_read_failure_groups
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
asm_preferred_read_failure_groups    string                 OCRVDISK.OCRVDISK_0001, DATA.D
                                                            ATA02

八、快速平衡。
"ALTER DISKGROUP ... MOUNT"语句允许磁盘组在restricted模式加载。
SQL> alter diskgroup data dismount;
SQL> alter diskgroup data mount restricted;
SQL> alter diskgroup data dismount;
SQL> alter diskgroup data mount;
    在RAC环境,磁盘组在RESTRICTED模式加载只能被单一实例访问,restricted磁盘组对于任何ASM客户端都是不活动的,即使在加载磁盘组的节点也是如此。
    使用RESTRICTECD模式能提升RAC环境下rebalance操作的性能,这样能消除ASM实例之间锁和解锁区间映射消息的传递,一旦rebalance操作完成,应该卸载磁盘组,然后再以Normal模式(默认)加载。

九、磁盘组维护增强。
CRETAE DISKGROUP和ALTER DISKGROUP命令包含新的ATTRIBUTE子句(compatible,disk_repair_time,au_size)。
ALTER DISKGROUP命令的CHECK子句被简化,只包含两个选项,NOREPAIR和REPAIR,NOREPAIR是默认选项。错误概要被显示,完整的错误消息将写入告警日志。
ALTER DISKGROUP data CHECK; -- 类似NOREPAIR
ALTER DISKGROUP data CHECK NOREPAIR;
ALTER DISKGROUP data CHECK REPAIR;

ALTER DISKGROUP命令包含ONLINE和OFFLINE子句,因此磁盘能脱机修复,之后再联机。
-- 个别磁盘
ALTER DISKGROUP data OFFLINE DISK 'disk_0000','disk_0001';
ALTER DISKGROUP data ONLINE DISK 'disk_0000','disk_0001';

-- 故障组
ALTER DISKGROUP data OFFLINE DISKS IN FAILGROUP 'fg_0000';
ALTER DISKGROUP data ONLINE DISKS IN FAILGROUP 'fg_0000';

-- 使磁盘组中的所有磁盘在线
ALTER DISKGROUP data ONLINE ALL;

磁盘组不能通过ASM被加载,可以使用DROP DISKGROUP命令的FORCE关键字DROP磁盘组。
DROP DISKGROUP data FORCE;

对于以上谈到的众多特性而言,大部分功能都需要将磁盘组的兼容性属性设置为11.1或者更高;一部分特性都是在Normal和High冗余级别的磁盘组才具有的,例如:快速镜像重新同步功能,失败组优先读功能等;对于日常工作中最长用到的应该是AU_SIZE大小设置,并需要了解它和区间之间的关系。

转://Oracle 11gR2 ASM磁盘组管理的更多相关文章

  1. Oracle 11gR2 RAC DBCA无法识别ASM磁盘组(ORA-19504,ORA-15045,ORA-17502,ORA-15081)

    ORA-19504: failed to create file "+DATA" ORA-15045: ASM file name '+DATA' is not in refere ...

  2. 使用asmcmdcp命令把datafile从文件系统移动(move)到asm磁盘组中 针对11gR2

    使用asmcmd cp命令 把datafile从文件系统移动(move)到asm磁盘组中--针对11gR2 参考原文:How to Move a Datafile from Filesystem to ...

  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.5.安装Grid,创建ASM磁盘组空间不足

    因之前分区时,分区的Last cylinder的值选了“1”,导致创建磁盘组空间不足.解决办法是先删除分区,重新创建分区并删除ASM磁盘,然后重建ASM磁盘 1. 先删除分区,重新创建分区: 1)查询 ...

  4. oracle 11gR2 ASM添加和删除磁盘

    一.环境 oracle 11gR2 RAC + Oracle Linux Server release 5.9 二.实施 备注:安全起见,操作之前停数据库实例.ASM实例 1.节点1.2磁盘信息 -- ...

  5. OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  6. Oracle ASM 磁盘组基础知识整理(收藏版)

    转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...

  7. 11G ORACLE RAC DBCA 无法识别asm磁盘组

    ASM磁盘无法识别几种现象: 1) gi家目录或者其子目录权限错误 2)asm磁盘的权限错误 3)asm实例未启动或者asm磁盘组没有mount上 4)asm磁盘组资源没有在线 5)oracle用户的 ...

  8. 案例:Oracle报错ASM磁盘组不存在或没有mount

    案例:Oracle报错ASM磁盘组不存在或没有mount 环境:RHEL 6.5 + Oracle Standby RAC 11.2.0.4 我做Standby RAC实验时,在恢复控制文件时,报错无 ...

  9. Oracle RAC环境下ASM磁盘组扩容

    生产环境注意调整以下参数: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

随机推荐

  1. JVM参数以及用法

    工作以后,发觉真的几乎没有像大学那样空闲的时间,坐下来看看书写写博客了.最近的一篇博客距离现在已经近一个多月了,最近也在复习Java的东西,准备校招,看了看JVM的东西,就当作记笔记. (一)JVM参 ...

  2. Java的XML解析

    XML:(eXtensible Markup Language) 可扩展标记语言 是一种数据格式,用于存储和传输数据 声明一个xml文件 <?xml version="1.0" ...

  3. try、catch、finally详解,你不知道的异常处理

    介绍 不管是新手还是工作几年的老油条,对try{}catch{}来说是不陌生的.他可以来帮助我们获取异常信息,在try中的代码出现错误,火灾catch代码块中被捕获到.官方也给了详细的解释:. 抛出异 ...

  4. Mapreduce的api编程

    KEYIN:输入的KEY是maptask所读取到的一行文本的起始偏移量,longVALUEIN:输入的VALUE的类型,输入的VALUE是maptask所读取到的一行文本内容,StringKEYOUT ...

  5. 【Linux】CentOS7 安装rabbitmq

    [1.安装erlang环境]yum install http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64. ...

  6. vue VNode如何使用,是什么东西?

    前言:element ui 中有些 demo 使用了 vue 的 VNode,但是 demo 毕竟不全,所以想要了解 VNode 到底是什么,如何写出符合自己业务的代码. vue 官网介绍:渲染函数 ...

  7. 外机连接本机的虚拟机服务器_VM端口映射

    说明:有时候我们把服务器放在虚拟机上的时候只能本机在网页上连接,但是如果想要别的电脑也能访问的话,需要在VM上做一个映射.实现如下: 设置VM端口映射 一.打开VM->编辑->虚拟网络编辑 ...

  8. vue项目sql图片动态路径引用问题

    最近遇到一个vue动态图片路径的引用问题?明明路径是正确的但是却渲染不出图片!先看我慢慢说来!! 1.当我们把图片的路径放置在data(){return:{}}中的数组中的时候,然后通过v-for循环 ...

  9. 从零开始学习html(一) Html介绍

    我是初学者,这个是我学习的过程,当做笔记记录下来,如有错误希望高手指正. 原地址 一.代码初体验,制作我的第一个网页 <!DOCTYPE HTML> <html> <he ...

  10. Python-初识模块

    #系统自带的模块 import sys print(sys.path)#打印环境变量 print(sys.argv)#打印绝对路径 import os #cmd_res = os.system(&qu ...