【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 有差别么?的更多相关文章

  1. windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群

     windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群 oracle 11g 以后 ocr 能够放到 asm 磁盘上,而ASM的启动依赖于ocr和vo ...

  2. oracle 11g GRID 中 关于 OLR 须要知道的一些内容

     oracle 11g GRID 中 关于 OLR 须要知道的一些内容 1.检查olr 的状态: [root@vmrac1 ~]# ocrcheck -local Status of Oracle ...

  3. oracle 11g grid软件安装[20180121]

      实验环境:     系统->Redhat 6.5     Oracle软件版本->oracle 11.2.0.4.0        系统初始化     设定hosts主机名和对应IP地 ...

  4. 卸载oracle 11g grid软件

    一,使用deinstall 同样,卸载grid软件在11g中也推出了了卸载工具deinstall卸载同卸载oracle数据库软件 具体可参考:Behaviour of the Oracle De-in ...

  5. Linux安装Oracle 11g Grid Infrastructure 出现OUI-10182错误解决办法

      已确保安装的ORACLE_BASE目录是属于grid:oinstall 但安装时总是报:OUI-10182 The effective user ID does not match the own ...

  6. oracle 11g 中 (oracle 10g) crsctl 的 替换命令

     oracle 11g 中 (oracle 10g) crsctl 的 替换命令 Deprecated Command Replacement Commands crs_stat  ---集群状态 ...

  7. 安装Oracle 11g RAC R2 之Linux DNS 配置

    Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念,也就是指集群的单客户端访问名称.SCAN 这个特性为客户端提供了单一的主机名,用于访问集 ...

  8. Oracle 11g rac中关于crsctl stop cluster/crs/has的区别

    转载至http://www.oracleplus.net/arch/1203.html,整理后得. 1 通过命令查看cluster/has/crs管理的内容 [root@11rac1 ~]# crsc ...

  9. 測试oracle 11g cluster 中OLR的重要性

     測试oracle 11g cluster 中OLR的重要性 called an Oracle Local Registry (OLR): each node in a cluster has a ...

随机推荐

  1. Linq学习(一)-初涉Linq

    一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封 ...

  2. Objective-C——Runtime理解

    动态语言 OC是一门不折不扣的动态语言,所以它的很多机制都是动态运行时决定的.这点和C语言不一样,C语言是静态绑定,也就是编译后所有的一切都已经决定了.这一点和C语言的函数指针有些类似,很多时候函数指 ...

  3. asp.net MVC 下拉多级联动及编辑

    多级联动实现,附源码.当前,部分代码是参与博客园其它网友. 新增,前台代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

  4. 3星|《腾讯产业森林:AI时代的创业密码》:后半部分是较详细的创业指南,前面泛泛介绍腾讯、AI

    腾讯产业森林:AI时代的创业密码 前半部分泛泛介绍腾讯对创业者的支持,腾讯支持的创业项目的案例.AI的一些基本介绍,后半部分是比较详细的写给创业者的各阶段行动与选择的指南. 总体评价3星,有一些参考价 ...

  5. 让Android的WebView支持html里面的文件上传

    默认情况下,Android的webview是不支持<input type=file>的,点击没有任何反应,如果希望点击上传,弹出选择文件.图片的窗口,那就需要自定义一个WebChromeC ...

  6. sublime右键菜单,anaconda设置

    1.sublime_addright.inf [Version]Signature="$Windows NT$" [DefaultInstall]AddReg=SublimeTex ...

  7. yum插件

    参考文章: http://www.linuxfly.org/post/297/ [root@dnstest07.tbc /home/ahao.mah] #rpm -qa |grep yum yum-p ...

  8. [SQL Service] 时间处理:获取今天的00:00:00/获取今天的23:59:59

    获取今天的00:00:00 SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10),GETDATE(),120)) 获取今天的23:59:59 1.SELECT DAT ...

  9. js 阻止冒泡事件和默认事件

    阻止事件冒泡 window.enent ? window.enent.cancelBubble = true : e.stopPropagation() function stopBubble(eve ...

  10. PostgreSQL使用总结

    最近项目用到了PostgreSQL数据库,网上一堆教程,这里自己整理一下做个笔记: 1,下载安装,我这边安装在Windows7,在这里找到大象一样的标志: 2,双击打开,这里的话按流程直接走: 3,这 ...