Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1244899
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-28 10:10:30

ORACLE10g版本推出时,为了简化中存储端的配置,新推出了(Automatic Storage Management --自动存储)特性,该特性拥有易管理,高自动性,并且,拥有号称超越裸设备IO性能。升级到11gR2版本后,又被正名为传说中的ASMFS,这也说明了ORACLE对这一特性的重视程度。

  因此从今天起,三思决定花个三二分钟时间,跟大学一块学学关于ASM的那点儿事儿,另注,本文操作的版本为10gR2。

1、About ASM 实例

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

  通过Oracle EM或DBCA都可以对asm进行一些配置,不过三思觉着管理asm括弧实例的最佳工具仍是sql*plus,在进入sql*plus前也需要设置ORACLE_SID的环境变量,该环境变量通常是+ASM[node#] 。

  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_SID),先启动到NOMOUNT:

    [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就可以提供存储服务了。

  提示一点,在版本中,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

    ASM diskgroups dismounted

    ASM instance shutdown

1.2、关于ASM实例的初始化参数

  ASM 实例的初始化参数形式上与数据库的初始化参数相同,也分spfile和pfile,操作方式也完全相同,只不过具体的参数及参数值略有差异,大多数数据库的初始化参数在这里也能见到,并且某些参数意义都完全相同,同样也有一些参数虽然见到了,不过并不需要设置,这个可以理解,毕竟asm只有实例,相对比数据库的初始化参数要简单的多了,还有一些参数则是数据库初始化参数中没有的。比如ASM开头的那几个初始化参数,俺争取把差异的部分都列出来写明了。

  ASM 实例在内存占用这块还是比较轻量级的,基本上有个100m空间就很充足了 ,因此内存这块相关参数就不说了,下面说说几个ASM实例特别需要的参数。

  首先,初始化参数中的INSTANCE_TYPE,该参数必须被设置为ASM,如:

    INSTANCE_TYPE=ASM

  标识要启动的实例是ASM,而不是数据库实例(数据库实例对应类型为RDBMS)。

  与ASM相关的初始化参数有三个:

  • ASM_POWER_LIMIT :指定磁盘rebalance的程度,有0-11个级别,默认值为1,指定的级别越高,则rebalance的操作就会越快被完成(当然这也意味着这个时间段内将占用更多的资源),指定级别较低的话,虽然rebalance操作会耗时更久,但对当前系统的IO及负载影响会更少,这中间的度需要DBA根据实际情况衡量。另外,这个参数指定的只是一个默认值,在操作过程中,即可以随便动态修改,也可以在语句级命令行时指定power,覆盖该默认值。
    提示:关于rebalance操作,如果你没接触过,还不明白是什么意思,没关系,继续往下看!
  • ASM_DISKSTRING :用最简单的话说,就是设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。比如说,只检查/dev/dsk/下的设备,可以设置该参数如下:/dev/dsk/*,默认情况下该参数为空,为空的话,表示ASM将查找系统中所有ASM拥有读写权限的设备。
  • ASM_DISKGROUPS :指定实例启动或alter diskgroup all mount语句时要加载的磁盘组,如果为空的话,那么实际就仅启动到NOMOUNT状态了。如果是使用SPFILE的话,该参数一般不需要手动修改,ASM能够自动更新该初始化参数中的值。

  修改 ASM 实例初始化参数文件的命令规则与数据库初始化参数完全相同 ,比如说:

    SQL> alter system set asm_power_limit=5 sid='*';

    System altered.

阅读(2381) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~