Oracle

Oracle ASM详解

日期:2015-06-28 00:00:00 来源: IT猫扑网

  ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以通过sqlplus 工具来维护。

  ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM 实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本

  $ORACLE_HOME/bin/localconfig add 启动CSS。

  1. ASM 实例由SGA 和后台进程组成。

  1.1 SGA 组成:

  ASM 实例的SGA包括Buffer Cache, Share Pool, Large Pool等。 需要注意的是Share Pool, 因为Extent Map 要放在这部分的内存中,需要更具数据量来估计Extent Map 的大小做相应的调整。

  Extent Map 的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:

  Select sum(bytes)/(1024*1024*1024) from v$datafile;

  Select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.Group#=b.Group#;

  Select sum(bytes)/(1024*1024*1024) from v$tempfile where status='online';

  这3个sum 的总和对应着数据库存放ASM中所有文件大小总和, 对于使用External Redundancy 的磁盘组, 每100G 需要1MB 的Extent Map, 根据这个比例计算Extent Map 所需要的空间,在加上额外的2MB就可以了。 在实际工作中一般不需要考虑ASM SGA的配置, 使用Oracle 提供的缺省值就可以了。

  1.2 后台进程

  ASM 实例比RDBMS 实例多2个进程: RBAL 和 ABRn。

  RBAL: 这个进程也叫Rebalancer进程, 负责规划ASM 磁盘组的Reblance活动。

  ABRn:是RBAL进程的子进程,这个进程在数量上可以有多个, n从1~9, 这组进程负责真正完成Reblance活动。

  使用ASM 作为存储的RDBMS 实例也会多出2个进程: RBAL 和 ASMB

  RBAL: 这个进程的主要功能是打开每个磁盘的所有磁盘和数据的Rebalance。

  ASMB: 这个进程作为ASM 实例和数据库实例之间的信息通道。 这个进程负责与ASM 实例的通信, 它先利用Diskgroup Name 从CSS 获得管理该Diskgroup 的ASM 实例的连接串, 然后建立到ASM 的持久连接, 两个实例之间通过这条连接定期交换信息,同时也是一种心跳机制。

  RDBMS 实例要想使用ASM 作为存储, RDBMS 实例必须在启动时从ASM 实例获得Extent Map, 以后发生磁盘组的维护操作, ASM 实例还要把Extent Map的更新信息通知给RDBMS 实例, 这2个实例间的信息交换就是他你哦刚过ASMB 进程完成的。 这也就为什么: ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。

  注意: ASM 实例和数据库实例的关系可以是1:1, 也可以是1:n。如果是1:n, 最好为ASM 安装单独的ASM_HOME。

  2. ASM 配置

  ASM 可以使用裸设备 或者ASMLib 方式, 因为裸设别的维护比较复杂,在此只讲解ASMLib 方式。

  对应不同的操作系统, 需要不同的包,下载的时候一定要和操作系统内核一致。 我的操作系统是 Red hat 4 update 7. 内核版本是2.6.9-78.ELSMP。

  oracleasmlib-2.0.4-1.el4.i386.rpm

  oracleasm-support-2.1.3-1.el4.i386.rpm

  oracleasm-2.6.9-78.EL-2.0.5-1.el4.i686.rpm

  linux/asmlib/index.html">http://www.oracle.com/technology/tech/linux/asmlib/index.html

  该页面有下载地址,注意选择CPU 类型。 asmlib 和 support,在同一个页面下载。

  安装包:

  #rpm -ivh *.rpm

  安装完之后进行配置:

  #/etc/init.d/oracleasm configure

  会有相应的提示, 回答 oracle , dba, y, y 就可以了

  分别对应默认用户, 默认组,随系统自启动, 启动时设置权限。

  /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1

  /etc/init.d/oracleasm scandisks

  /etc/init.d/oracleasm listdisks

  关于oracleasm 的更多用法参考help:

  [root@node1 ~]# /etc/init.d/oracleasm --help

  Usage: /etc/init.d/oracleasm {start|stop|restart|enable|disable|configure

  |createdisk|deletedisk|querydisk|listdisks|scandisks|status}

#p#副标题#e#

  3. ASM 实例配置

  3.1 初始化参数

  [oracle@node1 bin]$ export ORACLE_SID=+ASM1

  [oracle@node1 bin]$ sqlplus / as sysdba

  SQL*Plus: Release 10.2.0.1.0 - Production on Sun Feb 21 19:10:51 2010

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

  Connected to:

  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

  With the Partitioning, Real Application Clusters, OLAP and Data Mining options

  SQL> create pfile from spfile;

  File created.

  SQL> show parameter asm

  NAME   TYPE  VALUE

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

  asm_diskgroups     string      FLASH_RECOVERY_AREA, DATA

  asm_diskstring     string

  asm_power_limit    integer     1

  [oracle@node2 dbs]$ pwd

  /u01/app/oracle/product/10.2.0/db_1/dbs

  [oracle@node2 dbs]$ ls

  ab_+ASM2.dat  hc_rac2.dat    initrac2.ora  orapwrac2

  hc_+ASM2.dat  init+ASM2.ora  orapw+ASM2

  [oracle@node2 dbs]$ more init+ASM1.ora

  +ASM2.asm_diskgroups='FLASH_RECOVERY_AREA'#Manual Dismount

  +ASM1.asm_diskgroups='FLASH_RECOVERY_AREA','DATA'#Manual Mount

  *.asm_diskgroups='FLASH_RECOVERY_AREA','DATA'

  *.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'

  *.cluster_database=true

  *.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'

  +ASM2.instance_number=2

  +ASM1.instance_number=1

  *.instance_type='asm'

  *.large_pool_size=12M

  *.remote_login_passwordfile='exclusive'

  *.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'

  相关说明:

  ASM 实例的SGA 需要的内存很小, 一般默认值即可, 无需修改。 ASM SGA的默认值如下:

  SHARED_POOL_SIZE = 48M

  LARGE_POOL_SIZE = 12M

  SHARED_POOL_RESERVED_SIZE = 24M

  SGA_MAX_SIZE = 88M

  这些默认值可以在sqlplus 中通过show parameter 查看。

  Instance_type: 对于ASM 实例, 这个应该设置成ASM, 如果是数据库实例,则是RDBMS.

  DB_UNIQUE_NAME: 这个参数使用缺省值+ASM即可

  SQL> show parameter asm_power_limit

  NAME      TYPE   VALUE

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

  asm_power_limit   integer    1

  ASM_POWER_LIMIT: 当在磁盘组中添加删除磁盘时,磁盘组会自动对数据在新旧磁盘间重新分配, 从而实现分散IO, 这个过程就叫再平衡(Rebalance);

  这个动作会在磁盘间移动数据,因此虽然是联机操作,仍然会影响部分性能,所以要在系统空闲的时候进行。  该参数控制Rebalance速度, 取值范围0-11. 最小值0 代表不做Rebalance, 最大值11 代表最快的速度,也意味着严重影响性能, 1 代表最慢的速度和最小的性能影响。 除了在初始化参数中定义该参数, 也可以在操作时指定。

  比如:

  SQL> alter diskgroup DATA rebalance power 5;

  Disk groups can be rebalanced manually using the REBALANCE clause of the ALTER DISKGROUP statement. If the POWER clause is omitted the ASM_POWER_LIMIT parameter value is used. Rebalancing is only needed when the speed of the automatic rebalancing is not appropriate.

#p#副标题#e#

  ASM_DISKSTRING: 定义哪些磁盘可以被ASM 使用, ASM 实例启动时就根据这个参数值扫描发现ASM磁盘,配置了这个参数以后,还必须确认ORACLE 用户对这些磁盘有操作的权限

<

相关文章

相关下载

网友评论

我要评论...
    没有更早的评论了
    取消