ASM实例和管理

一,ASM的特点
 1,自动调整I/O负载
 ASM可以在所有可用的磁盘中自动调整I/O负载,不但避免了人工调整I/O难度,而且优化了性能的同时,利用ASM可以在线增加数据库的大小,而无需关闭数据库。
 2,条带化储存
 ASM将文件分为多个分配单元(allocation units,简称AU)进行存储,并在所有磁盘间分配每个文件的AU。
 3,在线自动负载均衡
 当共享存储设备有变化时,ASM中的数据会自动的均分配到现有存储设备中。同时,还可以调节数据的负载均衡速度。
 4,自动管理数据库文件
 在ASM存储管理中,Oracle数据文件是ASM自动管理的。ASM创建的任何文件一旦不再需要,就会自动删除。但是,ASM不管理二进制文件、跟踪文件、预警文件和口令文件。
 5,数据冗余
 ASM通过磁盘组镜像可以完成实现数据冗余,而不需要第三方工具来实现。
 6,支持各种oracle数据文件
 ASM存储支持oracle数据文件、日志文件、控制文件、归档日志、RMAN备份集等。

 二,ASM的结构图
 从图中可以看出ASM的物理组成结构,在最顶层是ASM磁盘组,ASM实例和数据库实例可以直接访问这些磁盘组;然后是ASM文件,每个ASM文件只能包含在一个磁盘组中,不过,一个磁盘组中可以包含属于多个数据库的多个ASM文件,并且单个数据库可以使用来自多个磁盘组的存储空间;第三部分是ASM磁盘,多个ASM磁盘组成了ASM磁盘组,但每个ASM磁盘只能属于一个磁盘组;接着是分配单元(AU),分配单元是ASM磁盘组分配的最小连续磁盘空间,ASM磁盘是按照AU进行分区,每个AU的大小为1MB;在这个结构的的最底层是oracle数据块,由于AU是ASM分配的最小的连续磁盘空间,因此,ASM是不允许跨分配单元拆分一个oracle数据块的。

ASM实例和管理
 
三,ASM的体系结构与后台进程
 1,要使用ASM,需要启动数据库实例之前,先启动一个名叫“+ASM”的实例,ASM实例不会装载数据库,它启动的目的是位了管理磁盘组和保护其中的数据。同时,ASM实例还可以向数据库传递有关文件布局的信息。通过这种方式,数据库实例就可以直接访问磁盘组中的存储的文件。
 2,ASM实例与数据库实例进行通信的桥梁是ASMB进程,此进程运行在每个数据库实例上,是两个实例间信息交换的通道,它先利用磁盘组名称通过CSS获得管理该磁盘组的ASM实例连接串,然后建立一个到ASM的持久连接,这样两个实例之间就可以通过这条连接定期交换信息,同时这也是一种心跳监控机制。
 3,在使用ASM作为数据存储时,ASM实例管理显得非常重要,oracle提供了丰富的管理功能,对ASM实例的管理要求具备SYSDBA权限,在Oracle 11g中可以使用一个新角色,即为SYSASM,此角色只用于管理ASM实例。
 四,创建一个ASM实例
 创建一个ASM实例有两种方法,第一种是用dbca创建,这种方法只需要运行Database configuration Assitant(DBCA),然后根据提示即可创建一个ASM实例。
 第二种方法
 1,创建ASM磁盘
 可以使用RAID划分的LUN,分区,裸设备等来创建ASM磁盘,但是在使用LUN、分区或裸设备时,要注意将属主和属组改为oracle用户及其对应的组,oracle提供ASMLIB来完成ASM磁盘的创建,
 (1),在创建ASM实例之前,首先应该确保节点上已经安装了ASMlib包,同时确认ASMLib是否已经自动加载:
 [root@rac1 dev]# lsmod | grep oracleasm
 oracleasm              46356  1
[root@rac1 dev]# /etc/init.d/oracleasm createdisk ASMDISK1 /dev/sdc1
 ASM磁盘创建完毕,可以查看系统的/dev/oracleasm/disks/目录下是否已经生成磁盘设备。可以通过如下命令查看asm磁盘:
 (2),[root@rac1 dev]# ll /dev/oracleasm/disks/
 total 0
 brw-rw---- 1 grid dba 8, 17 Apr 29 09:59 DISK1
 brw-rw---- 1 grid dba 8, 33 Apr 29 09:59 DISK2
 brw-rw---- 1 grid dba 8, 49 Apr 29 09:59 DISK3
 brw-rw---- 1 grid dba 8, 65 Apr 29 09:59 DISK4
 brw-rw---- 1 grid dba 8, 81 Apr 29 09:59 DISK5
 [root@rac1 dev]#
(3),也可以用如下命令查看:
 [root@rac1 disks]# service oracleasm listdisks
 DISK1
 DISK2
 DISK3
 DISK4
 DISK5
 [root@rac1 disks]#
(4),如果要删除ASM磁盘通过如下命令:
 [root@rac1]/etc/init.d/oracleasm deletedisk ASMDISK5
 (5),在RAC环境中,要注意另外一个节点是否能发现对应的asm disk,执行如下命令,让另外节点获取这种变化。
 [root@rac1 disks]# /etc/init.d/oracleasm scandisks
 Scanning the system for Oracle ASMLib disks: [  OK  ]
 [root@rac1 disks]#
到此为止,ASM磁盘已经创建完成了。
 2,初始化参数
 启动asm实例只需要如下几个参数即可,并且asm实例的内存自动分配并自动管理。
 下面讲述下ASM实例初始化参数:
 instance_type=asm
 cluster_database=true
 DB_UNIQUE_NAME=+ASM
 ASM_POWER_LIMIT=1
 large_pool_size=60M
 asm_diskgroups='FLASH_DISK','ARCH_DISK','DATA_DISK'
 asm_diskstring='/dev/oracleasm/disks/'
 对每个参数的含义解释如下:
 (1),instance_type:指定实例的类型,对于ASM实例,应设置为ASM。
 (2),cluser_database:指定是否是数据库集群,true是表示ASM集群。
 (3),DB_UNIQUE_NAME:指定ASM实例的名称,默认是+ASM。
 (4),ASM_POWER_LIMIT:该参数用来控制ASM中数据的负载均衡速度。
 (5),large_pool_size:设置大池的大小,由于ASM文件的分配单元映射是从LARGE_POOL分配的分配的,因此LARGE_POOL_SIZE至少要8M,建议越大越好。
 (6),asm_diskgroups:指定实例启动时可用的ASM磁盘组,ASM实例将在启动时自动挂载这些磁盘组。
 (7),asm_diskstring,用于限制ASM实例可用于创建磁盘组的磁盘设备。如果该值为NULL,则ASM实例可见的所有磁盘都可以称为创建磁盘组的可选磁盘。
 3,创建密码文件
 [oracle@rac1~]su -oracle
 [oracle@rac1~]$cd $ORACLE_HOME/dbs
 [oracle@rac1~]$orapwd file=orapw+ASM password=oracle
 4,创建目录结构
 [oracle@rac1~]$su - oracle
 [oracle@rac1~]$cd $ORACLE_HOME/dbs
 [oracle@rac1~]$mkdir -p $ORACLE_BASE/admin/+ASM/udump
 [oracle@rac1~]$mkdir -p $ORACLE_BASE/admin/+ASM/bdump
 [oracle@rac1~]$mkdir -p $ORACLE_BASE/admin/+ASM/adump
 [oracle@rac1~]$mkdir -p $ORACLE_BASE/admin/+ASM/cdump

相关推荐