日期:2014-05-16  浏览次数:20502 次

ASM 知识(转自三思笔记)
ORACLE10g推出了ASM(Automatic Storage Management --自动存储管理)特性,该特性拥有易管理,高自动性,并且,拥有号称超越裸设备IO性能。这个特性实际上就是oracle回收了数据库依赖的第三方文件系统的功能,与oracle一贯的习惯是一致的。在oracle10gr2中又推出了ASMCMD增强对ASM的管理。升级到11gR2版本后,又被正名为传说中的ASMFS,并推出了ASMCA,这也说明了ORACLE对这一特性的重视程度。

 1、ASM实例

  ASM实例与ORACLE实例差不多,都是由sga和一堆后台进程组成,从功能上来看,区别在于oracle实例管理的是数据库,而asm实例只是管理asm盘阵。

  通过Oracle EM或DBCA或者11g中的ASMCA都可以对asm进行一些配置,同样sqlplus也是管理ASM的常用工具。在进入sqlplus前需要设置ORACLE_SID的环境变量,其他与操作数据库的sqlplus完全一样。

  ASM实例没有数据字典之类的东西存储用户系统,因此最常见的连接认证方式就是操作系统认证as sysdba进入(OSDBA组的用户)。如果是通过远程连接的话(比如远程通过tnsnames或OEM管理),也可以使用密钥文件进行验证,该密钥文件直数据库的密钥文件在命名规则及使用规则上完全一模一样。如果使用dbca建库的话,默认就会创建asm的密钥文件,当然也可以自行手动通过orapwd命令进行创建,与数据库的密钥文件有所不同的是,asm的密钥文件对应的用户只有一个----sys。

提示:什么是ASMLib!
即ASM support Library,是由ORACLE提供的简化管理操作系统管理的API。

1.1、启动/关闭ASM实例
  ASM实例与DB实例高度相似,启动和停止实例的命令也一模一样,就启动来说,也同样拥有NOMOUNT/MOUNT/OPEN /FORCE几种状态。

NOMOUNT:仅启动实例;
MOUNT、OPEN:启动实例并加载磁盘,注意加载的是磁盘组(如果当前未创建或配置任何磁盘组,则提示敬告信息),OPEN选项对于ASM实例无意义,等同于MOUNT。
FORCE:相当于先执行shutdown abort,然后再startup。
[oracle@jssdbn1 ~]$ export ORACLE_SID=+ASM1

[oracle@jssdbn1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed May 19 08:34:22 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup nomount

ASM instance started

Total System Global Area  130023424 bytes

Fixed Size                  2082208 bytes

Variable Size             102775392 bytes

ASM Cache                  25165824 bytes

SQL> select name,state from v$asm_diskgroup;

NAME                           STATE

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

ASMDISK1                       DISMOUNTED

ASMDISK2                       DISMOUNTED

SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS

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

+ASM1            STARTED
  加载磁盘组,注意,不是alter database:

SQL> alter diskgroup all mount;

Diskgroup altered.

SQL> select name,state from v$asm_diskgroup;

NAME                           STATE

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

ASMDISK1                       MOUNTED

ASMDISK2                       MOUNTED

  这样,该ASM就可以提供存储服务了。

  提示一点,在10g版本中,ASM是依赖于CSS守护进程的,因此在启动ASM实例前要确保css守护进程已经启动。CSS(Cluster Synchronization Services)守护进程用来维持ASM及客户端数据库实例间的一致性同步,如果是通过dbca建库的话,那么CSS守护进程默认即会启动(跟随系统reboot)。

  检查css守护进程是否启动非常简单,直接使用crsctl check cssd即可,如果启动的话会收到"CSS appears healthy"的返回消息,例如:

[oracle@jssdbn1 ~]$ crsctl check cssd

CSS appears healthy

  关闭ASM实例,简单了,NORMAL/IMMEDIATE/TRANSACTIONAL/ABORT几个选项的定义与关闭普通数据库实例完全一模一样!例如:

SQL> shutdown immediate