Oracle-ASM实例管理



Oracle文件系统的历史

 

操作系统--逻辑卷管理器(LVM

管理文件相对容易,性能较差

裸设备

管理文件相对困难,性能好

ASM

ASMORACLE数据库文件支持的卷管理

ASM磁盘组里面只能存放Oracle数据库文件:数据文件、联机重做日志文件、控制文件等

OCFS(Oracle Cluster File System

ORACLE数据库文件系统


Oracle-ASM实例管理_第1张图片

ASM的优点

 

1ASM是跨平台的,主流的硬件平台都能使用、且管理方式一致

2、数据均匀的分布在磁盘组里所有的磁盘上,实现了文件级别的条带化,提高了读取和写入数据的性能

3、提供多重冗余级别,保证数据不丢失

4、支持在线的磁盘更换,添加或删除磁盘以后,自动重分布数据,这个过程叫做rebalance


数据库实例与 ASM之间的交互


Oracle-ASM实例管理_第2张图片


ASM实例主要的3个后台进程

 

1RBAL:负责协调组内不同磁盘组之间的rebalance工作,reblance工作指的是数据在不同的磁盘之间转移

2ARBn:用来实际完成rebalance工作,可以由多个进程并发完成rebalance的工作

3GMON用来监控磁盘组内有关元数据的维护操作

 

每个使用了ASM存储的数据库实例也有两个新的进程

1RBAL用来打开磁盘组里的磁盘,然后通过DBWn进程将数据写入到这些打开的磁盘里去

2ASMB当数据库实例要向某个磁盘组里写入数据时,ASMB会访问Group Services,从中获取有关ASM实例所管理的磁盘组的信息,并通过RBAL进程打开磁盘组,于是就可以将数据写入磁盘组。

Group Services用来注册ASM实例所管理的磁盘组,以及连接磁盘组的信息。

数据库 I/O不通过ASM实例来传输,而是通过RBAL直接根据ASM文件执行I/O操作

数据库实例只能与其所在的同一台主机上的ASM实例通信,如果当前主机上存在多个数据库,则这些数据库可以共享同一个ASM实例。


一、RBAL
       在ASM实例中还存在另外一个新的进程,即RBAL,此进程负责规划和协调磁盘组的重新平衡活动。除此之外,ASM实例还有一些与数据库实例中的进程相同的后台进程,例如LGWR、SMON、PMON、DBWR 、CKPT等。
如果一个数据库实例使用ASM作为存储,那么它将多出两个后台进程,即RBAL和ASMB。RBAL 负责打开磁盘组中所有磁盘和数据,而ASMB负责和ASM实例进程通信。
二、管理ASM实例
 在使用ASM作为数据存储时,ASM实例管理显得非常重要,Oracle提供了丰富的管理功能,对ORACLE实例进行管理需要具备SYSDBA权限,在Oracle 11g中可以使用一个新角色 ,即SYSASM,此角色只用于管理ASM实例

 

ASM磁盘组的概念

Oracle-ASM实例管理_第3张图片


ASM磁盘组可以包含多个磁盘

1磁盘中可以包含多个文件,因为文件打散以后放在多个磁盘上,因此磁盘和文件是多对多的关系

2一个ASM磁盘被分成多个AU(分配单元allocation unit),AUASM进行扩张和收缩时的最小单位

3一个磁盘组可以包含多个数据库文件


ASM磁盘

 

整个物理磁盘或物理磁盘的分区

Oracle强烈建议不要与其它应用程序程序共享ASM使用的物理磁盘

存储阵列中的磁盘或分区

ASM 磁盘是以存储阵列中的裸 LUN 提供给ASM

逻辑卷 (LV)或逻辑单元(LUN)

网络连接文件 (NFS)

磁盘尺寸一致

磁盘转速一致


ASM文件

 

是由 AU组成的ASM区的集合

可变大小的区支持大型文件

文件名以+”开头

例如,+DATA/orcl/datafile/system.256.689832921

可以在ASM disk group中存储如下类型的文件

Control files

Date filestemporary date filesdata file copies

Spfiles

Online redo logsArchive logsFlashback logs

RMAN backups

可以通过 select name,state from v$asm_diskgroup;来查看磁盘组信息。

 

分配单元AU


Oracle-ASM实例管理_第4张图片

细粒度条带

细粒度的条带化能降低IO延时

在任何配置下,细粒度的条带化strpe size总是等于128KB

默认情况下,细粒度条带化用于控制文件和联机重做日志文件

粗粒度条带

粗粒度的条带化提供负载均衡功能(load balance

粗粒度的strip size总是等于AU SIZE大小

Rebalance

disk group添加和删除磁盘时,ASM会自动重新分布整个disk group磁盘中的数据

Rebalance不是根据组中磁盘个数来平均分布,而是根据磁盘大小分布,所以,组中磁盘大小要保持一样,而且转速也要一致

Rebalance操作不会影响数据库的正常使用

 

故障组(failure group FG

 

故障组主要是为了镜像,在ASM磁盘组里面,镜像是在AU级别上完成的,而不是文件级别上

三种镜像级别

外部镜像(external redundancy)不在ASM磁盘组里面提供镜像功能,如果ASM本身就建立在硬件冗余的基础上,或者容忍数据的丢失,可以配置成外部镜像。

普通镜像(normal redundancy)提供两重镜像功能,对于文件里面的每个AU,都会存在该AU的一份副本。对于普通镜像,ASM要求该磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护,对于同一份数据,将有主从两份镜像

高镜像(high redundancy)提供三重镜像功能,对于文件里面的每个AU,都会存在该AU的两份副本

 

ASM故障组条带化和镜像

 

Oracle-ASM实例管理_第5张图片


安装Oracle Grid  Infrastructure

 

Udev方法安装

使用udev的好处是不管磁盘和sdasdbsdc这些怎么变都没问题,因为udev只看磁盘的uuid

当频繁的给系统添加,删除磁盘,或者两个节点公用一组磁盘的时候,udev的好处就体现出来了

通过udev,可以把指定的磁盘(通过uuid唯一确定磁盘)映射到/dev/asm-diskb,/dev/asm-diskc,/dev/asm-diskd这样的设备文件

 

ASMLib方法安装

Red Hat Enterprise Linux (RHEL)6以前,Oracle均是使用ASMLib这个内核支持库配置ASMASMLIB是一种基于Linux module,专门为Oracle Automatic Storage Management特性设计的内核支持库(kernel support library)。但是,在20115月,甲骨文发表了一份Oracle数据库ASMLib的声明,声明中称甲骨文将不再提供Red Hat Enterprise Linux (RHEL)6ASMLib和相关更新。

 

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

 

ASM_POWER_LIMIT:指定磁盘rebalance的程度,有0-11个级别,默认值为1指定的级别越高,则rebalance的操作就会越快被完成(当然这也意味着这个时间段内将占用更多的资源)

ASM_DISKSTRING:设置ASM启动时检查的磁盘,该选项可以同时指定多个值,并且支持通配符。

/dev/dsk/*只检查/dev/dsk/下的设备,默认情况下该参数为空,表示ASM将查找系统中所有ASM拥有读写权限的设备。

ASM_DISKGROUPS:指定实例启动或alter diskgroup all mount语句时要加载的磁盘组,如果是使用SPFILE的话,该参数一般不需要手动修改,ASM能够自动更新该初始化参数中的值。

 

关闭Oracle数据库实例:

1.先关闭Oracle实例

2.再关闭ASM实例:

$ export ORACLE_SID= ORCL

$ sqlplus / as sysdba

SQL> shutdown immediate

...

再关闭ASM实例

$export ORACLE_SID=+ASM

$ sqlplus / as sysasm

SQL> shutdown immediate


Oracle-ASM实例管理_第6张图片

Oracle-ASM实例管理_第7张图片Oracle-ASM实例管理_第8张图片Oracle-ASM实例管理_第9张图片

ASM查看磁盘组状态

SQL>select group_number,name, state,total_mb,free_mb from v$asm_diskgroup;


SQL> select group_number,name,path,failgroup from v$asm_disk;

Oracle-ASM实例管理_第10张图片

要手工向ASM添加磁盘

1[root@db4 ~]# oracleasm listdisks

VOL1

VOL2

使用oracleasm querydisk列出某一磁盘的详细信息,如指向的哪个磁盘分区。(这些盘都是通过ASMLIB包构建的)

[root@db4 ~]# oracleasm querydisk

[root@db4 ~]# oracleasm querydisk vol1

Disk "VOL1" is a valid ASM disk

[root@db4 ~]# oracleasm querydisk -v vol1

Disk "VOL1" is a valid ASM disk

[root@db4 ~]# oracleasm querydisk -v -d vol1

Disk "VOL1" is a valid ASM disk on device /dev/sdb1[8,17]

[root@db4 ~]# oracleasm querydisk -v -p vol1

Disk "VOL1" is a valid ASM disk

/dev/sdb1: LABEL="VOL1" TYPE="oracleasm"

/dev/mapper/mpath1p1: LABEL="VOL1" TYPE="oracleasm"

2)在asm通过v$asm_disk可以查看到哪些磁盘在使用,对比上面得出的信息,可以向磁盘组添加信息

SQL>CRAETE DISKGROUP TEST EXTERNAL REDUNDANCY DISKORL:VOL7;

 

 

创建和删除磁盘组

 

CREATE DISKGROUP test NORMAL REDUNDANCY

FAILGROUP F1 DISK '/dev/asm-diskm' NAME D1 SIZE 1024 M ,

                                 '/dev/asm-diskn' NAME D2 SIZE 1024 M

FAILGROUP F2 DISK '/dev/asm-disko' SIZE 1024 M ,

                                 '/dev/asm-diskp' SIZE 1024 M;

首先要指定的就是磁盘组名称(diskgroup_name);           

● 指定冗余度,有三个选择:HIGH(高度冗余三路)NORMAL(标准冗余双路)EXTERNAL(外部存储冗余);           

● 选择是否指定FAILGROUP(如果选择非external则必须指定);           

● 指定该磁盘组中的成员(对应的LUN),在指定成员时一般ASM能够自动检测出磁盘的容量,也可以指定大小。

Oracle-ASM实例管理_第11张图片


Oracle-ASM实例管理_第12张图片




添加或删除磁盘的影响

  当发生添加/删除磁盘组中磁盘的操作时,ASM能够自动平衡。对于普通的删除操作(force选项)被删除的磁盘在该上数据被有效处理前并不会立刻释放,同样,新增磁盘时,在重分配工作完成前,该盘也不会承担I/O负载的工作。 

         由于ASM自动平衡的特性,当删除磁盘操作返回后并不代表磁盘已经被删除,此时后台可能正忙碌地执行着IO重平衡的工作,如果是一个失误的删除操作,那也可以通过alter diskgroup dgname undrop disks语句来取消删除的操作

 

添加一块磁盘到磁盘组中,如果没有指定故障组,则磁盘组会为这块磁盘创建一个新的故障组,故障组的名字就是磁盘的名字。

删除磁盘以后,ASM磁盘组会自动进行一次rebalance操作,添加磁盘后,还会进行一次rebalance如果我们需要更换磁盘,那么建议将删除和添加磁盘的操作放在一起执行。

实际生产中

1、先拔下损坏的磁盘,再插入新的磁盘以后

2、执行下面的语句(假设DgroupBDisk3损坏,现在使用raw4去替换)

SQL>alter diskgroup DgroupB

         drop disk Disk3

         add failgroup fg1 disk /dev/raw/raw4’  nameDisk4;

 

ASM磁盘所对应的物理磁盘

1.查看ASM磁盘名称

2.在操作系统root下:oracleasm querydisk  -p  ASM磁盘名称    查看对应的物理盘

  如:[root@localhost ~]# oracleasm querydisk -p disk2

          Disk "DISK2" is a valid ASM disk

          /dev/sdc1: LABEL="DISK2" TYPE="oracleasm"

3.parted -l  查看物理磁盘信息

你可能感兴趣的:(ORACLE,RAC+ASM)