【oracle 11G Grid 】Crsctl start cluster 和 crsctl start crs 有差别么?
【oracle 11G Grid 】Crsctl start cluster 和 crsctl start crs 有差别么?
q:Crsctl start cluster 是
11.2新特性和 crsctl start crs
有啥差别呢?
Crsctl start/stop crs管理本地节点的clusterware
stack的启停。包括启动ohasd进程。这个命令仅仅能用来管理本地节点
。
[root@vmrac2 ~]# crsctl start crs -h
Usage:
crsctl start crs[-excl [-nocrs]|-nowait]
Start OHAS onthis server
where
-excl
Start Oracle Clusterware in exclusivemode
-nocrs
Start Oracle Clusterware in exclusivemode without starting CRS
-nowait
Do not wait for OHAS to start
crsctl start/stop cluster - Manage start/stop the Oracle Clusterware stack onlocal node if you do not specify either -all or -n and nodes remote if option-n or -all be specified ,NOT includingthe
OHASD process. You can't start/stop clusterware stack without OHASD processrunning.
crsctl strat/stop cluster既能够管理本地
clusterware stack,也能够管理整个集群
指定–all
启动集群中全部节点的集群件,即启动整个集群。
-n
启动指定节点的集群件
可是不包括OHASD进程。You
can't start/stop clusterware stack without OHASDprocess running.
[root@vmrac2 ~]# crsctl start cluster -h
Usage:
crsctl startcluster [[-all]|[-n <server>[...]]]
Start CRS stack
where
Default
Start local server
-all
Start all servers
-n
Start named servers
server [...] One or more blank-separated server names
Despite crsctl start/stop crs manage entire Oracle Clusterware stack on localnode crsctl start/stop crs not allow you to manage remote nodes, unlike crsctlstart/stop cluster that allows you to manage all the nodes, but if the processOASH
is runing.
crsctl start/stop crs 仅仅能管理本地节点的clusterware stack。并不同意我们管理远程节点。
可是当远程或者本地节点OHASD process执行时(Oracle
High AvailabilityServices服务必须可用),才干使用crsctl start/stop crs管理全部节点
我们来做一个实验验证下
我们先把节点2的crs停掉,确保本地已经没有OHASD进程。
[root@vmrac2 ~]# crsctl stop crs
CRS-2791: Starting shutdown of Oracle High AvailabilityServices-managed resources on 'vmrac2'
CRS-2673: Attempting to stop 'ora.crsd' on 'vmrac2'
。。。
。。
CRS-2673: Attempting to stop 'ora.DATANEW.dg' on 'vmrac2'
。
。。。。
CRS-2677: Stop of 'ora.gipcd' on 'vmrac2' succeeded
。。。
。。
CRS-2793: Shutdown of Oracle High AvailabilityServices-managed resources on 'vmrac2' has completed
CRS-4133: Oracle High Availability Services has beenstopped.
这里能够看到使用 crsctl stop crs已经本地的集群件所有停了下来。
可是为了去确保万无一失。建议在os层面查看下
cluster的进程是否存在
[root@vmrac2 ~]# ps -ef|grep ohasd
root 3747
1 0Jun19 ? 00:00:00 /bin/sh/etc/init.d/init.ohasd run
[root@vmrac2 ~]# ps -ef|grep d.bin
root 3064427369
0 13:08 pts/2 00:00:00 grep d.bin
------到这里能够确认集群已经全宕下来了
[root@vmrac2 ~]# ps -ef|grep ohasd
root 3747
1 0Jun19 ?
00:00:00 /bin/sh/etc/init.d/init.ohasd run
------当然这个脚本存在没有什么关系。假设没有这个sh进程,则
ohasd.bin就无法启动,
这时须要去调查下Snncommd –S96ohasd脚本为什么不能运行
这个后台脚本直接用kill去杀是无法杀掉的,会自己主动再生一个进程。
[root@vmrac2 ~]# ps -ef|grep ohasd
root 3747
1 0Jun19 ?
00:00:00 /bin/sh/etc/init.d/init.ohasd run
root 4888
4812 013:39 pts/1 00:00:00 grep ohasd
[root@vmrac2 ~]# kill -9 3747
[root@vmrac2 ~]# ps -ef|grep ohasd
root 4895
1 013:39 ? 00:00:00 /bin/sh/etc/init.d/init.ohasd run
root 4920
4812 013:39 pts/1 00:00:00 grep ohasd
[root@vmrac2 ~]# kill -9 4895
[root@vmrac2 ~]# ps -ef|grep ohasd
root
4933 1 013:40 ? 00:00:00 /bin/sh/etc/init.d/init.ohasd run
root 4958
4812 013:40 pts/1 00:00:00 grep ohasd
详细測试例如以下:
节点二的集群已经关闭,节点一的还在
节点一操作:
使用crsctl start cluster启动节点2的集群
[root@vmrac1 ~]# crsctl start cluster -n vmrac2
CRS-4405: The following nodes are unknown to Oracle HighAvailability Services:vmrac2
------报错非常明显啊,vmrac2节点上ohasd进程不存在。所以节点1无法启动节点2上的集群
[root@vmrac1 ~]# crsctl start cluster -all
CRS-4690: Oracle Clusterware is already running on 'vmrac1'
CRS-4000: Command Start failed, or completed with errors.
--------------还是由于vmrac2节点上ohasd进程不存在,所以节点1无法启动节点2上的集群
[root@vmrac1 ~]#
节点二操作:
[root@vmrac2 ~]# crsctl start cluster
CRS-4639: Could not contact Oracle High AvailabilityServices
CRS-4000: Command Start failed, or completed with errors.
------crsctl start cluster缺省代表启动本地节点。还是由于vmrac2节点上ohasd进程不存在,所以无法启动节点2上的集群
[root@vmrac2 ~]# crsctl start cluster -n vmrac1
CRS-4639: Could not contact Oracle High AvailabilityServices
CRS-4000: Command Start failed, or completed with errors.
------还是由于vmrac2节点上ohasd进程不存在,集群节点间无法通信,所以无法启动节点1上的集群(这里仅仅是測试下,实际节点1集群是已经启动的)
[root@vmrac2 ~]# crsctl start cluster -all
CRS-4639: Could not contact Oracle High AvailabilityServices
CRS-4000: Command Start failed, or completed with errors.
------还是由于vmrac2节点上ohasd进程不存在,集群节点间无法通信。所以无法启动节点1上的集群(这里仅仅是測试下,实际节点1集群是已经启动的)
通过上面的測试能够发现要想通过crsctl start cluster来管理远程集群节点,则ohasd
(Oracle High AvailabilityServices Daemon)必须在全部集群节点上执行。假设没有执行,则会报出:
CRS-4639: Could not contact Oracle High AvailabilityServices
CRS-4000: Command Start failed, or completed with errors.
类似的错误。
这里我们再略微讨论下为什么必需要求ohasd进程,crsctl
start cluster才干管理各个远程节点
int socket(int domain, inttype,int protocol)
domain:说明我们网络程序所在的主机採用的通讯协族(AF_UNIX和AF_INET等).
AF_UNIX仅仅可以用于单一的Unix系统进程间通信,而AF_INET是针对Internet的,因而可以同意在远程主机之间通信
type:我们网络程序所採用的通讯协议(SOCK_STREAM,SOCK_DGRAM等)
SOCK_STREAM表明我们用的是TCP协议,这样会提供按顺序的,可靠,双向,面向连接的比特流.
SOCK_DGRAM 表明我们用的是UDP协议,这样仅仅会提供定长的,不可靠,无连接的通信.
socket()系统调用,带有三个參数:
1、參数domain指明通信域,如PF_UNIX(unix域)。PF_INET(IPv4)。
PF_INET6(IPv6)等
2、type指明通信类型,最经常使用的如SOCK_STREAM(面向连接可靠方式,
比方TCP)、SOCK_DGRAM(非面向连接的非可靠方式,比方UDP)等。
3、參数protocol指定须要使用的协议。尽管能够对同一个协议
家族(protocol
family)(或者说通信域(domain))指定不同的协议
參数,可是通常仅仅有一个。对于TCP參数可指定为IPPROTO_TCP,对于
UDP能够用IPPROTO_UDP。你不必显式制定这个參数,使用0则依据前
两个參数使用默认的协议。
这里对 crsctl startcluster启动跟踪下,trace文件例如以下:
。
。。。。
6009 socket(PF_INET6,SOCK_DGRAM,
IPPROTO_IP) = 3
6009 bind(3, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6,"::1",
&sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
6009 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(19527),inet_pton(AF_INET6,
"::1", &sin6_addr), sin6_flowinfo=0,sin6_scope_id=0}, [15812988179826343964]) = 0
6009 getpeername(3, 0x7fff0257b028, [15812988179826343964])
= -1 ENOTCONN(Transport endpoint is not connected)
6009 getsockopt(3, SOL_SOCKET, SO_SNDBUF, [168803484727246848],
[4]) = 0
6009 getsockopt(3, SOL_SOCKET, SO_RCVBUF, [168803484727246848],
[4]) = 0
6009 fcntl(3, F_SETFD, FD_CLOEXEC) =
0
6009 fcntl(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
6009 times({tms_utime=2, tms_stime=2, tms_cutime=0, tms_cstime=0})
=465828655
6009 access("/var/tmp/.oracle", F_OK) =
0
6009 chmod("/var/tmp/.oracle", 01777) =
0
6009 socket(PF_FILE, SOCK_STREAM, 0) =
4
6009 access("/var/tmp/.oracle/sOHASD_UI_SOCKET", F_OK) = 0
6009 connect(4, {sa_family=AF_FILE, path="/var/tmp/.oracle/sOHASD_UI_SOCKET"...},
110)= -1 ECONNREFUSED (Connection refused)
6009 access("/var/tmp/.oracle/sOHASD_UI_SOCKET", F_OK) = 0
6009 nanosleep({0, 100000000}, {16, 140733232680592}) = 0
6009 close(4) =
0
6009 socket(PF_FILE, SOCK_STREAM, 0) =
4
。。。。。
。。
------这里我们再节点以上观察下是谁会使用这个socket文件
root@vmrac1 ~]# lsof/var/tmp/.oracle/sOHASD_UI_SOCKET
COMMAND PID USER FD TYPE DEVICE
SIZE NODE NAME
ohasd.bin 29191 root 634u unix
0xffff81005b939700 9176933 /var/tmp/.oracle/sOHASD_UI_SOCKET
[root@vmrac1 ~]# ls -l/var/tmp/.oracle/sOHASD_UI_SOCKET
srwxrwxrwx 1 root root 0 Jun 19 13:27/var/tmp/.oracle/sOHASD_UI_SOCKET
那节点二上的状况如呢?
[root@vmrac2 ~]# ls -l/var/tmp/.oracle/sOHASD_UI_SOCKET
srwxrwxrwx 1 root root 0 Jun 19 13:27/var/tmp/.oracle/sOHASD_UI_SOCKET
[root@vmrac2 ~]# lsof/var/tmp/.oracle/sOHASD_UI_SOCKET
这时我使用crsctl start crs继续观察:
[root@vmrac2 ~]# crsctl start crs
lsof/var/tmp/.oracle/sOHASD_UI_SOCKETCRS-4123: Oracle High Availability Serviceshas been started.
[root@vmrac2 ~]# ps -ef|grep 6560
root 6560 1 214:53
?
00:00:01/u02/app/11.2.0.3/grid/bin/ohasd.bin reboot
root 6877 4812 0
14:54 pts/1 00:00:00 grep 6560
此时迅速在节点2的还有一个窗体观察/var/tmp/.oracle/sOHASD_UI_SOCKET这个socket
[root@vmrac2 ~]# lsof/var/tmp/.oracle/sOHASD_UI_SOCKET
[root@vmrac2 ~]# lsof/var/tmp/.oracle/sOHASD_UI_SOCKET
[root@vmrac2 ~]# lsof/var/tmp/.oracle/sOHASD_UI_SOCKET
COMMAND PID USER FD TYPE DEVICE
SIZE NODE NAME
ohasd.bin
6560 root 631u unix 0xffff8100792f71c0 151906805
/var/tmp/.oracle/sOHASD_UI_SOCKET
这里能够观察到 ohasd进程会使用/var/tmp/.oracle/sOHASD_UI_SOCKET这个socket文件来建立集群间节点通信,这也就解释了。为什么没有ohasd进程,我就不能使用
crsctl start cluster 命令来管理集群中远程节点。
【oracle 11G Grid 】Crsctl start cluster 和 crsctl start crs 有差别么?的更多相关文章
- windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群
windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群 oracle 11g 以后 ocr 能够放到 asm 磁盘上,而ASM的启动依赖于ocr和vo ...
- oracle 11g GRID 中 关于 OLR 须要知道的一些内容
oracle 11g GRID 中 关于 OLR 须要知道的一些内容 1.检查olr 的状态: [root@vmrac1 ~]# ocrcheck -local Status of Oracle ...
- oracle 11g grid软件安装[20180121]
实验环境: 系统->Redhat 6.5 Oracle软件版本->oracle 11.2.0.4.0 系统初始化 设定hosts主机名和对应IP地 ...
- 卸载oracle 11g grid软件
一,使用deinstall 同样,卸载grid软件在11g中也推出了了卸载工具deinstall卸载同卸载oracle数据库软件 具体可参考:Behaviour of the Oracle De-in ...
- Linux安装Oracle 11g Grid Infrastructure 出现OUI-10182错误解决办法
已确保安装的ORACLE_BASE目录是属于grid:oinstall 但安装时总是报:OUI-10182 The effective user ID does not match the own ...
- oracle 11g 中 (oracle 10g) crsctl 的 替换命令
oracle 11g 中 (oracle 10g) crsctl 的 替换命令 Deprecated Command Replacement Commands crs_stat ---集群状态 ...
- 安装Oracle 11g RAC R2 之Linux DNS 配置
Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念,也就是指集群的单客户端访问名称.SCAN 这个特性为客户端提供了单一的主机名,用于访问集 ...
- Oracle 11g rac中关于crsctl stop cluster/crs/has的区别
转载至http://www.oracleplus.net/arch/1203.html,整理后得. 1 通过命令查看cluster/has/crs管理的内容 [root@11rac1 ~]# crsc ...
- 測试oracle 11g cluster 中OLR的重要性
測试oracle 11g cluster 中OLR的重要性 called an Oracle Local Registry (OLR): each node in a cluster has a ...
随机推荐
- 上传Android代码到gerrit服务器
1. 配置default.xml default.xml是跟Android代码配套的,可参考google Android源码下的default.xml(.repo/manifests/default. ...
- linux的touch命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a ...
- Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数
Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic ...
- Redis 的简单运算
Redis 的简单运算 命令 说明 备注 incr key 在原字段上加 1 只能对整数操作 incrby key increment 在原字段上加上整数 (increment) 只能对整数操作 de ...
- webstorm进行VisualSVN配置及上传项目到项目库
以前建站一直都是自己一个人,最近要做一个比较大的网站,寻思着利用svn在整个开发过程中会比较快,于是摸索着配置了一下. 首先,下载VisualSVN这个软件,官网链接 https://www.visu ...
- servlet-响应信息的content-Type作用
package servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; im ...
- 海盗(Haidao)网店系统最新官方版
产品介绍:经过开发团队半个月的努力,Haidao v1.1 beta版终于和大家见面了,在这个版本中我们重点系统目录结构和整体框架进行了改进,同时新增加了多个功能模块. 四大功能模块意在打造最灵活的电 ...
- Python标准库sys
1.命令行参数sys.argv 我们从Python语言之模块第一部分的例子开始,看看sys.argv中到底存了些什么内容. #Filename: using_sys.py import sys i=0 ...
- (转)分布式文件存储FastDFS(五)FastDFS常用命令总结
http://blog.csdn.net/xingjiarong/article/details/50561471 1.启动FastDFS tracker: /usr/local/bin/fdfs_t ...
- python开发 面试题
一.简述列表与元组的区别 答: 元组tuple与列表List相同点 元组tuple与列表List都是序列类型的容器对象,可以存放任何类型的数据.支持切片.迭代等操作. 元组tuple与列表List区别 ...