[HZ]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的体系结构与后台进程

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
四,启动ASM实例
1,无论是在RAC环境中还是在单实例环境,ASM实例都需要用到CSS进程,在RAC环境中,启动CRS后CSS已经运行,而在单实例环境下,需要以root用户运行脚本,进行初始化CSS服务,否则,在启动ASM实例时会报如下错误:
ORA-29701:unable to connect to Cluster Manager
[oracle@rac1~]$export ORACLE_SID=+ASM
[oracle@rac1~]$sqlplus / as sysdba
SQL>startup
如果首次启动asm实例,并没有创建ASM磁盘组,所以显示15110错误是正常的。
五,管理ASM磁盘组
ASM磁盘组是作为逻辑单元进行统一管理的一组磁盘,在ASM实例中,可以创建和添加新的磁盘组,还可以将修改现在的磁盘组,在其中添加一个磁盘或者删除一个磁盘,也可以删除现有的磁盘组。

1,
添加磁盘组

SQL>create diskgroup FLASH_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK1' name flashdisk;
SQL>create diskgroup ARCH_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK2' name archdisk1;
SQL>create diskgroup DATA_DISK external redundancy disk '/dev/oracleasm/disks/ASMDISK4' name datadisk1,'/dev/oracleasm/disks/ASMDISK5' name datadisk2;
2,查看磁盘组
[grid@rac1 ~]$ export ORACLE_SID=+ASM1
[grid@rac1 ~]$ sqlplus / as sysdba
SQL> select name,state from v$asm_diskgroup;
NAME                           STATE
------------------------------ -----------
DATA                           MOUNTED
3,挂载FLASH_DISK磁盘组
SQL>alter diskgroup FLASH_DISK mount;
SQL> select name,state from v$asm_diskgroup;
4,卸载FLASH_DISK磁盘组
SQL>alter diskgroup FLASH_DISK dismount;
5,
查看磁盘名与裸设备对应关系

SQL> select name,path from v$asm_disk_stat;
NAME
------------------------------
PATH
--------------------------------------------------------------------------------
DISK1
ORCL:DISK1
6,查看每个磁盘组可用大小
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;
NAME                           ALLOCATION_UNIT_SIZE   TOTAL_MB
------------------------------ -------------------- ----------
DATA                                        1048576      25570
SQL>
7,
想磁盘组中增加一个磁盘

SQL>alter diskgroup ARCH_DISK add disk '/dev/oracleasm/disks/ASMDISK3' name ARCHDISK2;
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;
SQL> select name,path from v$asm_disk_stat;
8,
在磁盘组中删除一个磁盘

SQL>ALTER DISKGROUP ARCH_DISK DROP DISK ARCHDISK2;
9,
删除一个磁盘组

SQL>drop diskgroup FLASH_DISK;
当有数据库使用ASM的磁盘组时,是无法卸载和删除的。ASM实例如果宕掉,那么使用ASM的数据库实例也会宕机。RAC环境中,在删除一个磁盘组之前,其他节点的ASM实例必须要将这个要删除的磁盘组卸载。
六,
关闭ASM实例

1,关闭ASM实例的命令和关闭数据库实例的命令相同,但只有在没有任何数据库实例连接到该ASM实例的情况下,才能正常关闭ASM实例,如果至少有一个数据库实例与之连接,会提示如下错误:
ORA-15097:cannot SHUTDOWN ASM instance with connected RDBMS instance
2,
此时如果对该ASM实例强制执行SHUTDOWN ABORT命令,那么ASM实例将关闭,同时,任何与之连接的数据库实例最终也将自动关闭,同时报一下错误:
ORA-15064:communication failure with ASM instance
3,
ASM 实例强制关闭后,在下次启动时,会要求进行恢复。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29611940/viewspace-1163532/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29611940/viewspace-1163532/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值