RAC与ASM


1.1.   RAC
体系结构简介

1.1.1.什么是RAC

Oracle RAC是Oracle数据库推出的实时应用集群技术,它起源于8i的OPS(Oracle Parallel Server),最开始的设计初衷就是系统与应用的高可用性。但是直到Oracle 9i才出现真正的意义上的集群产品(RealApplication Clusters RAC),从Oracle 10g开始的RAC得到了全面的推广,其具备稳定可靠、负载均衡和分布计算的特性,并可以实现性能随服务器线性扩充。如下图,是一个2节点RAC的典型硬件架构。


RAC作为集群系统其不同于传统的HA集群软件,主要表现为多实例并行运行和数据文件所有节点共同访问。因此在进行数据库备份恢复操作的时候需要考虑多实例这一特点,不能单纯只在一个节点上操作。

1.1.2.操作RAC中的数据库实例

由于RAC是并行服务集群,每个节点上都有一个运行着的单独实例、监听和集群服务,我们可以通过crs_stat工具查看这些对象的状态,如果要对这些对象进行停止,我们可以在每个节点类似于单实例的方式对这些对象进行停止操作,也可以直接用SRVCTL工具在一个节点上对所有节点的对象进行操作,这里我们介绍下如何通过SRVCTL工具停止数据库、实例和监听的操作,下面我们举例进行下演示。

  1. 首先切换到oracle用户

[root@rac1~]#su–oracle

  1. 查看RAC状态,这里我们的节点名称分别是rac1和rac2。

[oracle@rac1 ~]$ crs_stat -t

Name           Type           Target    State    Host       

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

ora.orcl.db    application    ONLINE   ONLINE    rac1   

ora....l1.inst application    ONLINE   ONLINE    rac1   

ora....l2.inst application    ONLINE   ONLINE    rac2   

ora....SM1.asm application    ONLINE   ONLINE    rac1   

ora....01.lsnr application    ONLINE   ONLINE    rac1   

ora....c01.gsd application    ONLINE   ONLINE    rac1   

ora....c01.ons application    ONLINE   ONLINE    rac1   

ora....c01.vip application    ONLINE   ONLINE    rac1   

ora....SM2.asm application    ONLINE   ONLINE    rac2   

ora....02.lsnr application    ONLINE   ONLINE    rac2   

ora....c02.gsd application    ONLINE   ONLINE    rac2   

ora....c02.ons application    ONLINE   ONLINE    rac2   

ora....c02.vip application    ONLINE   ONLINE    rac2  

下面对字段列表做一些说明:

Ø  Name资源名称

Ø  Type类型,一般都为application

Ø  Target目标状态

Ø  State当前状态

Ø  Host资源所在的当前主机

如果资源的当前状态为offline或unknown,就表示资源状态不正常。如下例,就是表示一个节点上的数据库实例没有启动。

ora....l2.inst application    OFFLINEOFFLINE

  1. 使用srvctl工具停止整个数据库,将会停止所有节点属于这个数据库的实例,使用-d参数指定SID;我们这里数据库SID为orcl:

[oracle@rac1~]$ srvctl stop database –dorcl

[oracle@rac1 ~]$ crs_stat -t

Name           Type           Target    State    Host       

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

ora.orcl.db   application    OFFLINE   OFFLINE              

ora....l1.inst application   OFFLINE   OFFLINE              

ora....l2.inst application   OFFLINE   OFFLINE

ora....SM1.asm application    ONLINE   ONLINE    rac1   

ora....01.lsnr application    ONLINE   ONLINE    rac1   

ora....c01.gsd application    ONLINE   ONLINE    rac1   

ora....c01.ons application    ONLINE   ONLINE    rac1   

ora....c01.vip application    ONLINE   ONLINE    rac1   

ora....SM2.asm application    ONLINE   ONLINE    rac2   

ora....02.lsnr application    ONLINE   ONLINE    rac2   

ora....c02.gsd application    ONLINE   ONLINE    rac2   

ora....c02.ons application    ONLINE   ONLINE    rac2   

ora....c02.vip application    ONLINE   ONLINE    rac2   

  1. 使用srvctl工具停止对应节点的实例,如下表示只停止orcl2实例。

[oracle@rac1~]$ srvctl stop instance –dorcl –i orcl2

[oracle@rac1 ~]$ crs_stat -t

Name           Type           Target    State    Host       

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

ora.orcl.db    application    ONLINE   ONLINE    rac1   

ora....l1.inst application    ONLINE   ONLINE    rac1   

ora....l2.inst application   OFFLINE   OFFLINE

ora....SM1.asm application    ONLINE   ONLINE    rac1   

ora....01.lsnr application    ONLINE   ONLINE    rac1   

ora....c01.gsd application    ONLINE   ONLINE    rac1   

ora....c01.ons application    ONLINE   ONLINE    rac1   

ora....c01.vip application    ONLINE   ONLINE    rac1   

ora....SM2.asm application    ONLINE   ONLINE    rac2   

ora....02.lsnr application    ONLINE   ONLINE    rac2   

ora....c02.gsd application    ONLINE   ONLINE    rac2   

ora....c02.ons application    ONLINE   ONLINE    rac2   

ora....c02.vip application    ONLINE   ONLINE    rac2   

  1. 也可以使用srvctl工具停止对应节点的监听程序。例如要停止节点rac1下的监听程序,命令操作如下:

[oracle@rac1~]$ srvctl stop listener –nrac1

[oracle@rac1 ~]$ crs_stat -t

Name           Type           Target    State    Host       

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

ora.orcl.db    application    ONLINE   ONLINE    rac1   

ora....l1.inst application    ONLINE   ONLINE    rac1   

ora....l2.inst application    ONLINE   ONLINE    rac2   

ora....SM1.asm application    ONLINE   ONLINE    rac1   

ora....01.lsnr application    OFFLINE  OFFLINE              

ora....c01.gsd application    ONLINE   ONLINE    rac1   

ora....c01.ons application    ONLINE   ONLINE    rac1   

ora....c01.vip application    ONLINE   ONLINE    rac1   

ora....SM2.asm application    ONLINE   ONLINE    rac2   

ora....02.lsnr application    ONLINE   ONLINE    rac2   

ora....c02.gsd application    ONLINE   ONLINE    rac2   

ora....c02.ons application    ONLINE   ONLINE    rac2   

ora....c02.vip application    ONLINE   ONLINE    rac2   

  1. 上面只介绍了停止的命令,如果要启动对象,只需要把关键字stop改为start是启动命令,如下就是分别用以下三个命令操作。

[oracle@rac1~]$ srvctl start database –d orcl

[oracle@rac1~]$ srvctl start instance –d orcl –i orcl2

[oracle@rac1~]$ srvctl start listener–n rac1

当然也可以使用sqlplus来启动/关闭数据库,通过lsnrctl来启动/关闭监听,这些就不做具体介绍了。

1.1.3.数据文件共享存储

RAC采用多节点共享磁盘方式实现数据库群集,它的数据文件、联机日志和数据库控制文件都能为集群中的每个节点所访问,RAC允许多个实例同时访问同一数据库,所以一个实例的故障不会导致无法访问数据库。RAC的这种基于共享磁盘体系结构的特性,使得用户能够方便地按需要增加和减少集群的服务器,并为用户提供了容错、负载均衡和性能效益等特性。

由于RAC的数据文件需要所有节点同时访问,因此RAC的共享数据文件一般采用3种方式存放:

Ø  裸设备

Ø  集群文件系统

Ø  ASM

它们各有优缺点,在中联的用户中最常见的是使用ASM方式存放共享数据文件,这里我们只重点介绍ASM,其他2种方式可以自行参阅相关资料。

1.2.  ASM简介

1.2.1. 什么是ASM?

ASM的全称是自动存储管理(Automatic Storage Management),是 Oracle 数据库 10g 中一个非常出色的新特性,它以平台无关的方式提供了文件系统、逻辑卷管理器以及软件 RAID 等服务。ASM 可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。

ASM 不是一个通用的文件系统,并只能用于 Oracle 数据文件、重做日志以及控制文件。ASM中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。

ASM被广泛地用于RAC环境,在中联的用户中得到了较为广泛的应用,事实也证明ASM的稳定性是有保障的。

1.2.2. 访问ASM中的文件

要使用ASM,Oracle会在RAC中的节点上创建一个单独的 Oracle 实例,并作为CRS集群资源来管理:

ora....SM1.asm application    ONLINE   ONLINE    rac1

ora....SM2.asm application    ONLINE   ONLINE    rac2

由于使用ASM来保证数据库文件,因而只有ASM实例正常运行时,数据库实例才能启动和动迁。ASM也有独立的SGA和后台进程结构,不同的是它没有属于自己的数据库文件,只是为普通数据库实例提供IO能力。

ASM不同于一般的文件系统,不可以通过操作系统命令对它进行访问,只能通过数据库对进行操作和查询。我们可以在普通数据库实例中通过查询v$datafile来查看数据文件的存放的路径:

SQL> Select Name From v$datafile;

NAME

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

+DATE/orcl/datafile/system.260.782241001

+DATE/orcl/datafile/undotbs1.301.782241003

+DATE/orcl/datafile/sysaux.267.782241003

+DATE/orcl/datafile/users.263.782241003

+DATE/orcl/datafile/undotbs2.300.782241163

+DATE/orcl/datafile/zl9indexcis.dbf

+DATE/orcl/datafile/zl9cisrec.dbf

可以清楚的看到,ASM下存放的数据文件的路径不同于常规文件系统下的路径,其都是以+DATE开头,这里的DATA是ASM磁盘组名称,表示我们的数据文件是存放在DATA这个ASM磁盘组下的;当然我们也可以创建多个ASM磁盘组。

如果我们要直接访问这些数据文件应该怎么办呢?Oracle提供了一个asmcmd工具来直接操作ASM中的文件,asmcmd在windows与Unix/Linux中用法相同的。

在使用asmcmd工具前,必须要指定访问的ASM实例(设置环境ORACLE_SID变量),有点类似于指定数据库实例,只是实例名是+ASMn,具体操作如下,其中n为节点编号,过程简述如下:

  1. 首先切换到oracle用户:

[root@rac1~]#su–oracle

  1. 设置ORACLE_SID环境变量为+ASM,如果当前登陆的是第一节点,就设置为+ASM1,第二节点就是+ASM2

export ORACLE_SID=+ASM1

 [oracle@rac1~]$asmcmd

ASMCMD>

接着我们做一些简单的操作,看下如何通过ASMCMD访问ASM中的文件,asmcmd中命令用法大体类似Unix/Linux命令,这里我们列举几个简单的示例:

ASMCMD>ls

DATE/

进入指定名录

ASMCMD>cd DATE

ASMCMD>ls

ORCL/

ASMCMD>cd ORCL

ASMCMD> ls

CONTROLFILE/

DATAFILE/

ONLINELOG/

PARAMETERFILE/

TEMPFILE/

spfileorcl.ora

ASMCMD>

  1. 使用asmcmd命令访问数据文件时命令类似于DOS命令,其包含的命令不多,主要有:

Ø  cd,进入指定目录

Ø  du,显示文件/目录的空间占用情况

Ø  find,查找文件或目录

Ø  help,帮助,列出主要命令的用法

Ø  ls,列举目录/文件

Ø  lsct,显示显示ASM和数据库实例连接情况

Ø  lsdg,显示ASM磁盘组的使用情况

Ø  mkalias,建立别名

Ø  mkdir,建立目录

Ø  pwd,显示当前目录

Ø  rm,删除目录或文件

Ø  rmalias,删除别名

具体每个命令的含义的使用通过help进行查阅,有详细的说明,如下。

ASMCMD>help cd

       cd <dir>

       Change the current directory to <dir>.

由于ASM是一个单独的实例,操作系统无法直接访问 ASM 中存储的文件,无法直接对其进行复制、粘贴和删除操作,因此对使用 ASM 文件的数据库执行备份和恢复操作的唯一途径就是通过RMAN,后面我们将对RMAN的具体使用进行详细的说明。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值