oracle 11g 是先启动asm还是启动crs

oracle 11g 是先启动asm还是启动crs,第1张

在Oracle 11gR2和12cR1的集群环境中,OCR和voteing disk都可以存储在ASM中。你思考过么,当启动一个Oracle集群时,OCR所在的ASM还没有启动,集群软件是如何得到集群信息的呢? 看起来这是一个相互依赖的关系,集群启动需要ASM中的OCR,访问ASM中的OCR又需要集群已经启动。到底谁先启动呢?

其实,在高可用堆栈启动时,Oracle集群件是通过$GRID_HOME/gpnp/<homename>/profiles/peer/profile.xml来读取集群信息的,并不是通过OCR。

下面来看看这个配置文件的样子:

Oracle 12C ASM和集群谁先启动?

下面看一个小案例

当集群资源变更后,重新启动crs报错,提示无法访问ASM,启动ASM又提示CRS没有启动。陷入一个死循环。这个时候需要理解一个概念,集群堆栈与高可用堆栈。高可用堆栈是底层堆栈,集群堆栈依赖于高可用堆栈。简单的说,启动CRS是启动上层集群资源,启动cluster是启动高可用堆栈。

所以集群资源变更后使用crsctl start crs是没用的,应该使用crsctl stop cluster -all, 然后在crsctl start cluster -all

这种启动方法就不需要依赖ASM中的OCR了,也体现出了GPnP的作用。

Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同步的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案。而对于RAC,则是本地的高可用集群,每个节点用来分担不用或相同的应用,以解决运算效率低下,单节点故障这样的问题,它是几台硬件相同或不相同的服务器,加一个SAN(共享的存储区域)来构成的。

Data Guard由两个多两个以上的独立的数据库构成,他们各自有各自的存储,Oracle负责他们之间的切换和数据同步

双机热备由两台计算机和一个共享存储设备构成,通过第三方软件(HA Rose等)实现切换,不需要做数据同步

建议应用RAC+Dataguard ,RAC保证可用性,Dataguard在RAC组独立磁盘上和另外一台主机上,保证可靠性。

双机就是人们所说的双机热备,数据库放在共享设备上,同一时刻只能有一台主机接管,另一台待用,这种方式只能保护实例,不能保护db,而且备机长期处于闲置,对资源是一种极大的浪费!

如果原本是双机,建议转换为RAC

规划好应用,DML *** 作从一个节点跑,查询 *** 作从另一个节点跑,通常不需要太多调优就可以利用闲置的另外一台机器了

RAC服务器共用一套存储,同时提供服务,没有主备之分.宕一个其它的可以继续服务.

双机热备,共用一套存储,一个提供服务一个备份,主机宕了切换到备份服务器提供服务.

data guard 完全两套系统,存储是单独的,用日志同步.

RAC: 实例层冗余

DG :数据库层冗余

热备:仅仅只是数据冗余

个人理解:

RAC :实例冗余,而且还可以做到数据库的loadbalance。

DG :多份数据,所以能做到数据冗余,但是只有主节点提供服务。

热备:与RAC最大的差异可能就是RAC有多个实例,一个数据库。而热备只是一个实例,一个数据库。所以做不了并发和loadbalance。

Oracle RAC只是做Oracle的应用,rose,legato还可以做其它的

HA:是High Availability 的首字母组合,翻译过来,可以叫做高可用,或高可用性,高可用(环境)。我觉得应该说HA是一个观念而不是一项或一系列具体技术,就象网格一样。作过系统方案就知道了,评价系统的性能当中就有一项高可用。广义的高可用涉及到系统的各个方面,简单来说,让系统不会中断 运行,就是高可用。包括软件的高可用,硬件的高可用,网络的高可用等等。具体实现的方案包括 *** 作系统的集群,数据库的集群,硬件的冗余,网络的冗余等等。做HA方面的软件,有IBM的HACMP(很多常用AIX的人,常说的HA就指HACMP,乱啊)、SUN的Sun Cluster、HP的MC/SG等。

在2000年以前,大家谈HA,大部分时候说的是 *** 作系统一级的双机热备,主流产品当时有IBM HACMP4.1,HP的MC/SG啥版本忘了,sun的系统很多人不用VCS,用的是一个叫dataware的东西。现在很多人眼中的HA也还是这样。时至今日,HA包括的东西可就多了,先不说其他方面,单就数据库,单就Oracle,与HA相关的产品先后有:高级复制(AdvanceRepication)、OPS/RAC(Real Application Cluster)、数据卫士(Data Guard)、oracle流(Oracle Streams)、分区(Oracle Partition)这样数款产品。照这么说,RAC只是HA这个概念下的一个具体产品而已!目前为止,只有RAC和分区是Oracle要收取licence的,其他的,只要给经验丰富的第三方实施方付一定的规划/设计及部署费用就可以了;当然,也可以自己照着文档依葫芦画瓢,但是这样弄出的环境是否能达到高可用就难说了。事实上,大部分人所说的HA,还是狭义上的HA,也就是OS一级的双机热备。

RAC:是real application cluster的简称,它是在多个主机上运行一个数据库的技术,即是一个db多个instance。它的好处是 可以由多个性能较差的机器构建出一个整体性能很好的集群,并且实现了负载均衡,那么当一个节点出现故障时,其上的服务会自动转到另外的节点去执行,用户甚 至感觉不到什么。

双机热备(HA)和RAC有啥区别呢?

1、对于硬件来说,基本上一样,共享存储、光纤线(也有还用SCSI线的)、多台小型机(可以做多节点的相互热备,也可以做多节点的RAC)、光纤交换机(如果是用光纤卡的话);但做RAC,在主机之间,最好使用高带宽网络交换机(虽然不用也可以做成);因此硬件成本相差不大。

2、软件呢,差别可不小。如果是双机热备,必须买 *** 作系统级的双机管理软件;如果是RAC,目前还是建议购买双机管理软件(尽管10g的crs+asm可以摆脱双机软件了,但ASM目前实在太难伺候了),当然还得买RAC license。

3、日常维护。RAC要求的技术含量更高,也应该更勤快。最关键的是得买oracle服务,否则遇到有些问题(bug),你就比单机还不高可用了。

4、优缺点。这个,看看RAC的官方论述吧。如果能用好,确实是很有好处的。目前我们的40多个客户的使用情况来看,RAC确实大大降低了他们的downtime,另一方面可以说就是提高了生产力咯。

Dataguard:一般是出于容灾的目的。是主数据库的备用库(standby 库)通过自动传送和接受archivelog,并且在dataguard库自动apply 这些log,从而达到和主数据库同步的目的,可能dataguard 库是建立的异地的,当主库所在的区域出现了致命性的灾难时(火灾、地震等),主库没法修复时,这时可以切换dataguard 为主库的模式,对外提供服务,而它的数据基本是当前最新的。目前可能大家对于 dataguard 库的使用已经拓展出了其他更多的用途,比如备份,跑报表等等。

正好刚整理了一个这方面的资料,先贴给你吧.

准备ASM环境

ASM使用一个名叫“+ASM”的数据库实例来管理ASM磁盘,因此在配置ASM磁盘之前,需要先启动ASM实例。另外还需要注意,ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。ASM 实例的创建和删除可以用DBCA 工具来 *** 作。在DBCA的第一个界面选择配置自动存储管理就可以进入ASM配置的界面。

根据提示运行脚本就可以配置和启动CSS(Cluster Synchronization Service)了,注意要以root的身份运行这个脚本,运行情况如下:

# /u01/app/oracle/product/10.2.0/db_1/bin/localconfig add

/etc/oracle does not exist. Creating it now.

Successfully accumulated necessary OCR keys.

Creating OCR keys for user 'root', privgrp 'root'..

Operation successful.

Configuration for local CSS has been initialized

Adding to inittab

Startup will be queued to init within 90 seconds.

Checking the status of new Oracle init process...

Expecting the CRS daemons to be up within 600 seconds.

CSS is active on these nodes.

s1

CSS is active on all nodes.

Oracle CSS service is installed and running under init(1M)

ASM可以使用裸设备或者ASMLib方式, 因为裸设备的维护更罗嗦一些,本文只讨论ASMLib方式。为了在Linux系统中使用ASMLib方式准备ASM磁盘,需要安装相关的软件,下载链接如下:

下载时注意选择自己的 *** 作系统和内核的版本,我下载到的是以下三个软件:

oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm

oracleasmlib-2.0.4-1.el5.i386.rpm

oracleasm-support-2.1.4-1.el5.i386.rpm

这里特别需要注意第一个软件要和你的Linux内核的版本一致。(其实我的内核版本是2.6.18-155.el5,但是在官方网站找不到完全对应的版本,只好使用这个2.6.18-164.el5的版本了,后面会讲怎么解决这个问题。)接下来进行软件的安装,只需要使用rpm命令即可。

# rpm -ivh oracleasm*

现在安装oracleasm模块可能会报错,像我因为没有找到对应我的内核版本的oracleasm软件就遇到了这个问题。经过一番查找,发现软件将oracleasm的模块文件oracleasm.ko安装到了目录/lib/modules/2.6.18-164.el5/kernel/drivers/addon/oracleasm中,而我的默认的模块文件路径应该是/lib/modules/2.6.18-155.el5,因此决定手工建立相关的目录和文件。

# mkdir -p /lib/modules/2.6.18-155.el5/kernel/drivers/addon/oracleasm

# cp oracleasm.ko /lib/modules/2.6.18-155.el5/kernel/drivers/addon/oracleasm

然后再安装oracleasm的模块文件就可以通过了:

# depmod -a

# modprobe oracleasm

最后进行oracleasm服务的初始配置

# service oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets ('[]'). Hitting <ENTER>without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: dba

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [ OK ]

Scanning the system for Oracle ASMLib disks: [ OK ]

好了,现在已经有了初步的ASM配置环境,接下来就可以准备磁盘了。

添加ASM磁盘组

为了实现ASM的磁盘负载均衡和冗余能力,我准备使用四个磁盘建立ASM的磁盘组,因此需要为Linux系统添加四个磁盘。为了搭建这个环境,我使用的是VMware环境,因此添加磁盘就非常容易了。只需要在VMware的设置中选择添加硬件即可,而且现在的VMware版本是可以支持磁盘的热插拔的。无需关闭Linux系统,直接添加磁盘即可。添加完四个磁盘之后,为了让Linux系统马上识别这几个磁盘,可以运行如下命令:

# echo 'scsi add-single-device 0 0 1 0' >/proc/scsi/scsi

# echo 'scsi add-single-device 0 0 2 0' >/proc/scsi/scsi

# echo 'scsi add-single-device 0 0 3 0' >/proc/scsi/scsi

# echo 'scsi add-single-device 0 0 4 0' >/proc/scsi/scsi

运行fdisk -l命令可以看到系统中增加了/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde四个磁盘。使用fdisk工具在这个四个磁盘上各建立一个分区(具体步骤略,不熟悉的可以查阅Linux的fdisk命令用法)。

然后运行oracleasm createdisk命令添加ASM磁盘:

# oracleasm createdisk VOL1 /dev/sdb1

Writing disk header: done

Instantiating disk: done

依次添加/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1四个磁盘分区,完成后检查如下:

# oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

这时运行DBCA工具的ASM配置向导就可以建立ASM磁盘组了。进入DBCA向导后,选择“Configure Automatic Storage Management”,然后单击“Create New”按钮,可以看到ASM磁盘组的配置界面。输入磁盘组的名称,如“dg1”,关于冗余级别,我选择了Norma,并且将VOL1和VOL2设置为一个Failure Group,而VOL3和VOL4设置为一个Failure Group。

以上 *** 作也可以使用sqlplus连接到ASM实例上,使用命令完成。

为了连接到ASM实例上,首先需要设置ORACLE_SID环境变量,然后再使用sqlplus进行连接:

# ORACLE_SID=+ASM

# sqlplus / as sysdba

创建Disk Group的语句如下:

SQL>create diskgroup dg1 normal redundancy

failgroup fg1 disk 'ORCL:VOL1','ORCL:VOL2'

failgroup fg2 disk 'ORCL:VOL3','ORCL:VOL4'

至此,ASM磁盘组的准备已经完成,终于可以在ASM上建立数据库了。还是使用DBCA工具,选择“Create Database”进入创建数据库的向导。按照向导 *** 作,只是在选择存储机制时,选择ASM类型。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9992921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存