打杂
全部博文(524)
分类: Oracle
2015-01-06 14:03:33
原文地址:oracle10G新特性之ASM的应用 作者:jasoname
racle10G新特性之ASM的应用
ASM的应用:
1、ASM的特点:
不是镜像整个硬盘而是镜像数据库对象,如果在硬件级别上做了raid则不可以分段对象
自动平衡:增加额外的硬盘时,ASM会将一定比列的文件从一个或多个硬盘上移动到新硬盘上,从而维持所有磁盘之间整体的I/O平衡
ASM有自己独有的实例来提供oracle实例和文件系统之间的接口。有两个新的oracle后台进程支持ASM实例,RBAL和ORBn
.
RBAL协调磁盘组的磁盘活动,而ORBn(n是0-9之间的数字)执行磁盘组中磁盘之间的实际盘区移动
ASM实例也有两个后台进程:OSMB和RBAL。OSMB执行数据库和ASM实例之间的通信。RBAL执行代表数据库的磁盘组中磁盘的打开和关闭
ASM有它自己的初始化文件和密码文件,但是没有数据字典,ASM实例都通过SYS或SYSTEM连接并使用操作系统验证,ASM只能处于nomount或mount状态,不存在open状态
作为sysdba连接ASM实例可以执行所有
ASM操作,而sysoper则只提供用来执行已配置的和稳定的ASM实例的例程操作。
2、ASM初始化参数说明:
instance_type:ASM实例具有ASM特有的值,传统的ORACLE实例默认值为rdbms
db_unique_name:默认值是+ASM,它是集群中或单节点上ASM实例组的唯一名称
asm_power_limit:用于控制重新平衡操作发生的速度。值的范围1-11,默认是1(较低的I/O开销)
asm_diskstring:指定一个或多个串,这些串与操作系统有关,用于限制可用于创建磁盘组的磁盘设备。如过为NULL,则表示所有可见的所有磁盘都可以做为创建磁盘组的候选项
asm_diskgroups:指定一个包含磁盘组名称的列表,可以在启动时由ASM实例自动安装这些磁盘组,或者通过alter
diskgroup all mount命令安装
large_pool_size:表示所有的ASM程序包都在该池中执行,因此最少要设置8M
3、ASM实例的启动和关闭:
startup默认为startup mount;
startup nomount
只启动实例,不安装任何ASM磁盘
startup restrict 临时防止数据库实例连接到ASM实例而安装磁盘组
shutdown
4、ASM的动态性能视图:
v$asm_disk:磁盘信息
v$asm_diskgroup:磁盘组信息
v$asm_file:磁盘组上文件信息
v$asm_operation:ASM上正在执行或长期运行的操作
v$asm_template:磁盘组中的模板
v$asm_client:ASM与数据库的连接信息
v$asm_alias:磁盘组的别名
5、ASM文件名称格式:
1)、完全限定的名称
+group/dbname/file type/tag.file.incarnation
如:+data2/rac/datafile/users3.311.1
2)、数字名称:+DATA2.311.1
3)、别名:alter
diskgroup data2 add alias '+data2/purch/users.dbf' for
'+data2/rac/datafile/users3.311.1';
4)、具有模板名称的别名:create tablespace users4
datafile '+data2/user_spare(datafile)';
5)、不完整的名称:create tablespace users5
datafile '+data2';
6)、具有模板的不完整名称:create tablespace users6 datafile
'+data2(datafile)';
6、管理ASM磁盘组:
粗糙分段:在磁盘上对磁盘组中的文件分段。以每个1M为单位将文件扩展到所有的磁盘。适合于OLTP高度并发的小I/O请求系统
细密分段:以128K为单位扩展文件到磁盘组中所有磁盘上。适合于并发性低的OLTP系统或传统的数据仓库
如果要定义磁盘组的镜像必须先定义磁盘的故障组,可用于磁盘组中的故障组的数量可以限制可用于磁盘组的镜像类型。
有三中镜像类型:
外部冗余:只需要一个故障组,一般是由raid卡提供冗余
普通冗余:磁盘组中需要两个故障组
高度冗余:磁盘组中需要至少三个故障组
普通和高度冗余镜像的是盘区而不是硬盘,同时每个磁盘将具有每个磁盘上主要的和镜像的盘区
举例:
新增一个具有高度冗余的磁盘组:
查看使用v$asm_disk查看初始化参数asm_diskstring发现的所有可以用于创建磁盘组的磁盘,以及这些磁盘的状态
select
group_number,disk_number,name,failgroup,create_date,path from
v$asm_disk;
查看已存在的磁盘组的信息:
select group_number,name,type,total_mb,free_mb
from v$asm_diskgroup;
创建高度冗余的磁盘组,如果是普通的话,high redundancy
改成normal,并只建立两个故障组
create diskgroup data2 high redundancy
failgroup fg1
disk '/dev/raw/raw3' name d2a
failgroup fg2 disk '/dev/raw/raw4' name
d2b
failgroup fg3 disk '/dev/raw/raw5' name d2c;
如果用两块硬盘组成一个故障组
ALTER DISKGROUP data2
ADD FAILGROUP fg1 disk
'/dev/raw/raw6' name
d2a1;
为了确保镜像有足够的空间,因此故障组fg2,fg3也应该加上一个磁盘。
建完以后再查看下磁盘组的信息和磁盘的信息,确认已经将相关磁盘完成创建好磁盘组
select
group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
select
group_number,disk_number,name,failgroup,create_date,path from v$asm_disk;
删除磁盘组:
drop diskgroup date2 (including
contents);如果里面已经有数据
完成创建磁盘组后,可以新建表空间来存放相关数据
create tablespace user
datafile '+data2';
增加一块硬盘到磁盘组中
ALTER DISKGROUP data2
ADD FAILGROUP fg4 disk
'/dev/raw/raw6' name
d2d;
可以通过v$asm_operation视图来查看正在进行的操作,因为默认的重新平衡初始化参数值asm_power_limit是1,可以改变该值以便重新平衡操作的功率
alter
diskgroup data2 rebalance power 8;
执行完后再看正在进行的操作:
select
group_number,operation,state,power,actual,sofar,est_work,est_rate,est_minutes
from
v$asm_operation;
EST_WORK是要移动的单元的总数,SOFAR是重新平衡操作中到目前为止已移动的单元的数量。EST_RATE是重新平衡操作每分钟移动的单元的当前数量,EST_MINUTES给出剩余时间的估计值(以分钟计)。
如果是普通冗余,增加了一个故障组,但是还是普通冗余,由于磁盘组中有额外的盘区副本,因此可以改进针对磁盘组中对象的SELECT语句的I/O性能。
执行ALTER DISKGROUP
DROP命令可以从盘组中删除磁盘。但是要注意,要删除的磁盘的磁盘名应是Oracle生成的ASM磁盘名,
不是添加该磁盘时所用的操作系统盘名。要确定删除磁盘时使用的正确名字,可查询V$ASM_DISK。在LABEL列找到操作系统磁盘名,
再使用NAME列中相应的ASM磁盘名:
ALTER
DISKGROUP data2
DROP DISK d2d;
从磁盘组中删除所有想删的磁盘后,执行ALTER DISKGROUP
REBALANCE命令初始化重新平衡操作。然后等待ASM移去被删除磁盘上的所有数据。
监视V$ASM_OPERATION视图来观察该过程,或观察V$ASM_DISK视图的STATUS列。当重新平衡完成后,你可以删除或重新使用该驱动器。
对磁盘组修改的所有相关命令:
alter diskgroup ... drop disk
alter diskgroup ... drop
...add
alter diskgroup ... mount
alter diskgroup ... dismount
alter
diskgroup ... check all