重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你好:一般的数据库都是用的rac进行集群,用到负载均衡什么的,这个很复杂,一般都是系统工程师来进行维护,WebSphere等配置jdbc过程中配置成两个数据源就可以来均衡访问不同的服务器ip。
创新互联公司是一家专注于成都网站设计、成都做网站、外贸网站建设与策划设计,平陆网站建设哪家好?创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:平陆等地区。平陆做网站价格咨询:13518219792
通过RAC实现。只是共享存储。各台机器有自己的共享内存。并非每台机器的内存共享累加起来组成一个数据库的共享内存。 RAC的好处是所有机器组成一个集群。 ORACLE RAC工作原理 在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。 逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。 RAC中的特点是:每一个节点的instance都有自己的SGA 每一个节点的instance都有自己的background process 每一个节点的instance都有自己的redo logs 每一个节点的instance都有自己的undo表空间所有节点都共享一份datafiles和controlfiles Oracle还提出了一个缓存融合的技术(Cache fusion) 目的有两个 1.保证缓存的一致性IXPUB技术博客 2.减少共享磁盘IO的消耗IXPUB技术博客因此在RAC环境中多个节点保留了同一份的DB CACHE 缓存融合(Cache fusion)工作原理: 1.其中一个节点会从共享数据库中读取一个block到db cache中 2.这个节点会在所有的节点进行交叉db block copy 3.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改 4.为了达到存储的一致最终修改的结果也会写到磁盘上 ClusterWare组件 有四种Service Crsd - 集群资源服务 Cssd - 集群同步服务 Evmd - 事件管理服务 oprocd - 节点检测监控有三类Resource VIP - 虚拟IP地址(Virtual IP) OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息 Voting Disk - Establishes quorum (表决磁盘),仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。 RAC的组件 提供过了额外的进程,用来维护数据库 LMS - Gobal Cache Service Process 全局缓存服务进程 LMD - Global Enqueue Service Daemon 全局查询服务守护进程 LMON - Global Enqueue Service Monitor全局查询服务监视进程 LCK0 - Instance Enqueue Process 实例查询进程
VirtualBox远程显示使得虚拟机的访问更加随意和简单,但是该功能的初始安装就完全是另一种情况。
Oracle VM VirtualBox是免费的开源桌面虚拟化和服务器虚拟化软件。通过VirtualBox,可以支持三种虚拟机访问模式:通过VirtualBox软件自带界面;通过任意支持子虚拟机终端对话模式的界面(如VNC-Virtual Network Computing,RDS-Remote Desktop Service或任何其它协议)进行;通过远程显示系统进行。
远程显示系统是一个内置功能,功能强大但安装复杂。VirtualBox远程显示借助微软的RDP协议连接虚拟机,不仅Windows虚机,还包括所有安装了VirtualBox扩展包的子操作系统。让人沮丧的原因是在VirtualBox远程显示可以正常工作之前,需要经历一个异常繁琐的安装过程。
一旦它开始工作,您几乎可以在任何地方访问VirtualBox子虚拟机,而不受控制界面安装所在位置的限制。下面是关于如何安装Oracle VM VirtualBox远程访问的步骤:
增加VirtualBox远程显示扩展
首先,您需要安装可以启用VirtualBox远程显示系统的扩展包VirtualBox download页面中,可以找到Oracle VM VirtualBox Extension Pack,可以增加一系列的功能支持:USB2.0设备、因特尔网卡的PXE启动和VirtualBox远程显示系统。如果VirtualBox软件已经安装,所需的就是下载对应版本的扩展包。用于4.1.12和4.0.16版本的扩展包完全不同,所以您需要做出正确选择。
VirtualBox设置中显示的扩展包列表。在右侧位置可看到Add Package标签
在安装扩展包之前,需要关闭--注意不是挂起--所有运行中的虚拟机,并关闭整个VirtualBox系统。在Windows中,您只需双击扩展包或手动在File Preferences Extensions中点击Add Package图标找到正确的安装包列表。如果您是通过命令行操作的,通过VBoxManager extpack命令添加VirtualBox远程显示扩展包。
安装完成后,重启宿主机。简单地停止和重启VirtualBox软件是不可行的,但是VirtualBox并不会提示您重启。
设置虚拟机端口
现在您已经开始进入VirtualBox远程访问模式,但是还需要通过RDP单独地配置每台您需要访问的虚拟机端口。这一步需要注意:要为每台将建立RDP连接的子虚拟机分配端口号,但是连接所使用的是宿主机的IP地址,而不是子机。每台子机的端口号要不同以避免冲突。
为每台子虚拟机选择端口号。每台虚拟机必须拥有唯一的RDP访问端口
例如,我在VirtualBox中有两台虚拟机希望通过RDP访问--一台运行Windows而另一台运行测试版Haiku OS.Windows
VM分配5001端口,而Haiku分配5002端口。两台机器都通过宿主机IP地址加上子虚拟机的端口访问:输入192.168.0.30:5001访问Windows,192.168.0.30:5002访问Haiku.
要设置指定虚拟机的端口,登录到Settings页面,选择Display Remote Display.Check Enable
Server,选择服务器端口。您可以在虚拟机运行或停止状态时进行操作(暂停时不可以),而且不需要重启虚拟机启用配置。我不建议使用Windows
OS默认分配的3389端口,因为或许会跟已经在宿主机上的某台RDP服务器冲突。
接下来,在Authentication
Method下拉菜单中可以选择三种远程客户端连接VM的认证模式。Null模式如同字面理解:不需要认证,也就是任何知道该端口号的人都可以访问。External模式通过VirtualBox软件内置的证书库进行验证,防止用户使用宿主机或虚拟机XML设置文件中的证书登录。Guest模式是一种全新的模式,通过Guest
Addition可以防止子OS用户,这种模式没有测试过。
如果选择Null模式,您可以在任何时间连接到目标系统--即使它正在启动中。而且您不仅仅连接到运行OS的宿主机,同时连接到某台虚拟机。因此,首先要对连接模式的选择加以小心管理。
管理VirtualBox远程显示连接
最后,通过VirtualBox远程显示系统连接到虚拟机就变得简单了。需要做的就是通过一台支持微软RDP的终端访问,例如Windows的Remote
Desktop Connection终端,或Linux的rdesktop或krdc.
通过VirtualBox RDP访问一台Windows
7子机的实例。该显示大小经过了调整
通过远程设备连接所需的详细配置参数可能会差别很大。例如,在Windows Remote Desktop
Connection终端中,需要提前配置的是性能优化,可以在终端Experience页中的Options菜单配置。根据您使用的LAN或WAN环境,对参数进行修改。
如果您用的是VirtualBox Guest
Additions,显示画面会根据指定的RDP连接分辨率自动进行调整。但是如果您希望选择的分辨率跟虚拟机正在运行的不一致,那么VirtualBox远程显示的这个功能可能就无法实现。
最后一点,不是所有通过RDP连接的虚拟机表现都一样。采用了VirtualBox 子系统扩展包的OS可能在鼠标跟踪等方面要比其它终端更精确一些。
VirtualBox远程显示提供了单一的、统一机制的虚拟机远程访问模式。它开启了一种完全不同于本地控制台的管理方法。
一名学生最近在公司搭建RAC集群,但对其启动与关闭的顺序和原理不是特别清晰,我在教学工作中也发现了很多学员对RAC知识了解甚少,因此我在这里就把RAC里面涉及到的最常用的启动与关闭顺序和命令逐一列举出来,由于RAC的后台资源较多,因此涉及到的命令也很多,最后附上帮助手册让在工作中临时使用时也可以迅速查到,如果这篇文章能够帮到大家就是我今后继续努力撰写的动力,感谢大家对我文章的浏览多提宝贵意见。
关闭过程(CRS集群关闭-关闭数据库)
1.关闭数据库:
用oracl用户执行srvctl命令
语法:srvctl stop database -d dbname [-o immediate]
作用:可以一次性关闭dbname的所有实例
[oracle@rac1 ~]$ srvctl stop database -d racdb -停止所有节点上的实例
然后查看状态:
[oracle@rac1 ~]$ srvctl status database -d racdb
Instance rac1 is not running on node rac1
Instance rac2 is not running on node race
2.停止HAS(High Availability Services),必须以root用户操作
[root@rac1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@rac1 bin]# ./crsctl stop has -f
[root@rac1 bin]# ./crsctl stop crs -f
本命令只能关闭当前节点的CRS服务,因此需要在RAC的所有节点上执行,启动也一样。has与crs等同
3.停止节点集群服务,必须以root用户:
[root@rac1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@rac1 bin]# ./crsctl stop cluster ----停止本节点集群服务
[root@rac1 bin]# ./crsctl stop cluster -all ---停止所有节点服务
也可以如下控制所停节点:
[root@rac1 bin]# crsctl stop cluster -n rac1 rac2
CRS-2677: Stop of 'ora.cssd' on 'rac1' succeeded
CRS-2677: Stop of 'ora.cssd' on 'rac2' succeeded
。。。。。。。。。。。省略日志输出。。。。。。。。。。。。。。
你如果想一条命令把所有的进程全部停止可以使用上述命令。如果不指定参数的话对当前节点有效,如果指定参数的话对相关参数节点有效。
4.检查集群进程状态
[root@rac1 bin]# crsctl check cluster
详细输出
[root@rac1 bin]# crs_stat -t -v
只检查本节点的集群状态
[root@rac1 bin]# crsctl check crs
启动过程(CRS集群启动-启动数据库)
1.启动HAS
单一节点启动
[root@rac2 ~]# crsctl start has
[root@rac2 ~]# crsctl start crs
[root@rac2 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
所有节点启动
[root@rac1 bin]# crsctl start cluster -n rac1 rac2
CRS-4123: Oracle High Availability Services has been started.
[root@rac1 bin]# crsctl start cluster -all
[root@rac2 ~]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
此命令会在后台启动所有RAC CRS相关进程
[root@rac2 ~]# crs_stat -t -v
CRS-0184: Cannot communicate with the CRS daemon.
因为start has启动的crs进程比较多因此会启动的比较慢,我的机器等待了5分钟,在没有完全启动成功之前会报上述错误,需要耐心等待一段时间后执行下面命令即可查看到所有CRS相关进程服务已经启动。
[root@rac2 ~]# crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE rac1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac2
ora....N2.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1
ora....N3.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE rac1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE rac1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE rac1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac2
ora.scan2.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
ora.scan3.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
说明:
英文解释
ora.gsd is OFFLINE by default ifthere is no 9i database in the cluster.
ora.oc4j is OFFLINE in 11.2.0.1 as DatabaseWorkload Management(DBWLM) is unavailable. these can be ignored in11gR2 RAC.
中文解释
ora.gsd是集群服务中用于与9i数据库进行通信的一个进程,在当前版本中为了向后兼容才保存下来,状态为OFFLINE不影响CRS的正常运行与性能,我们忽略即可
ora.oc4j是在11.2.0.2以上版本中有效的服务进程,用于DBWLM的资源管理,因此在11.2.0.1以下版本并没有使用
2.启动数据库:
oracl用户执行srvctl命令:
语法:srvctl start|stop|status database -d dbname [-o immediate]
作用:可以一次性启动dbname的所有实例
[oracle@rac1 ~]$ srvctl start database -d racdb -启动所有节点上的实例
然后查看状态:
[oracle@rac1 ~]$ srvctl status database -d racdb
3.详细输出资源全名称并检查状态
crsctl status resource -t
crsctl status resource
4.常用srvctl命令
指定dbname上某个实例
srvctl start|stop|status instance -d -i instance_name
5.显示RAC下所有实例配置与状态
srvctl status|config database -d
6.显示所有节点的应用服务(VIP,GSD,listener,ONS)
srvctl start|stop|status nodeapps -nnode_name
7.ASM进程服务管理
srvctl start|stop|status|config asm -n [-i asm_inst_name] [-ooracle_home]
srvctl config asm -a
srvctl status asm -a
6.可以获取所有的环境信息:
srvctl getenv database -d [-iinstance_name]
7.设置全局环境和变量:
srvctl setenv database -d -t LANG=en
8.在OCR中删除已有的数据库信息
srvctl remove database -d
9.向OCR中添加一个数据库的实例:
srvctl add instance -d -iinstance_name -n
srvctl add instance -d -iinstance_name -n
10.检查监听的状态
srvctl status listener
srvctl config listener -a
SCAN配置信息
srvctl config scan
SCAN listener状态信息
srvctl status scan
小结:crsctl命令是一个集群级别命令,可以对所有集群资源进行统一启动、停止等管理操作
srvctl命令是一个服务级别命令,可以对单一服务资源进行统一启动、停止等管理操作
附:srvctl命令启动与停止的详细帮助
[root@rac2 ~]# srvctl start -h
The SRVCTL start command starts, Oracle Clusterware enabled, non-running objects.
Usage: srvctl start database -d db_unique_name[-o start_options] [-n ]
Usage: srvctl start instance -d db_unique_name{-n node_name[-i inst_name] | -i inst_name_list} [-o start_options]
Usage: srvctl start service -d db_unique_name[-s "service_name_list" [-n node_name| -i inst_name] ] [-o start_options]
Usage: srvctl start nodeapps [-n node_name] [-g] [-v]
Usage: srvctl start vip { -n node_name| -i vip_name} [-v]
Usage: srvctl start asm [-n node_name] [-o start_options]
Usage: srvctl start listener [-l lsnr_name] [-n node_name]
Usage: srvctl start scan [-i ordinal_number] [-n node_name]
Usage: srvctl start scan_listener [-n node_name] [-i ordinal_number]
Usage: srvctl start oc4j [-v]
Usage: srvctl start home -o oracle_home-s state_file-n node_name
Usage: srvctl start filesystem -d volume_device[-n node_name]
Usage: srvctl start diskgroup -g dg_name[-n "node_list"]
Usage: srvctl start gns [-l log_level] [-n node_name] [-v]
Usage: srvctl start cvu [-n node_name]
For detailed help on each command and object and its options use:
srvctl -h
[root@rac2 ~]# srvctl stop -h
The SRVCTL stop command stops, Oracle Clusterware enabled, starting or running objects.
Usage: srvctl stop database -d db_unique_name[-o stop_options] [-f]
Usage: srvctl stop instance -d db_unique_name{-n node_name| -i inst_name_list} [-o stop_options] [-f]
Usage: srvctl stop service -d db_unique_name[-s "service_name_list" [-n node_name| -i inst_name] ] [-f]
Usage: srvctl stop nodeapps [-n node_name] [-g] [-f] [-r] [-v]
Usage: srvctl stop vip { -n node_name | -i vip_name} [-f] [-r] [-v]
Usage: srvctl stop asm [-n node_name] [-o stop_options] [-f]
Usage: srvctl stop listener [-l lsnr_name] [-n node_name] [-f]
Usage: srvctl stop scan [-i ordinal_number] [-f]
Usage: srvctl stop scan_listener [-i ordinal_number] [-f]
Usage: srvctl stop oc4j [-f] [-v]
Usage: srvctl stop home -o oracle_home-s state_file-n node_name[-t stop_options] [-f]
Usage: srvctl stop filesystem -d volume_device[-n node_name] [-f]
Usage: srvctl stop diskgroup -g dg_name[-n "node_list"] [-f]
Usage: srvctl stop gns [-n node_name] [-f] [-v]
Usage: srvctl stop cvu [-f]
For detailed help on each command and object and its options use:
srvctl -h
因为在切换组的时候。你在资源里配置了mscs启动的资源。冲裁盘切换的时候会去尝试启动这些服务。如果你设置为了自动启动。那么2台机器在每次启动时都去自动启动的话,有一台服务器是没有数据文件盘的,服务起了也是白起,所以做ORACLE HA for windows的时候将oracle相关服务改为手动。
其次你还可以使用oracle的ORACLE FAILSAFE来帮助你配置windows 群集环境