has、ohasd、crs、cluster區別和聯絡

lusklusklusk發表於2017-11-17
has是高可用服務,用在restart環境,可以是單機環境也可以是RAC環境,不管單機環境還是RAC環境,都可以執行crsctl check has,在RAC環境下,可以簡單理解成cluster的一部分
ohasd是has後臺程式的概念
crs是叢集就緒服務,用在RAC環境,單機環境不能執行crsctl check crs,crsctl start CRS不單單啟動CRSD了,等於啟動OHASD、CRSD、CSSD三者了
cluster就是叢集的意思,用在RAC環境,單機環境不能執行crsctl check cluster

單機環境無法執行crsctl check crs、crsctl check cluster,但是可以執行crsctl stat res、crsctl check css、crsctl check has


Oracle high availability services(HAS)
Oracle Restart uses Oracle high availability services to start and stop automatically the components managed by Oracle Restart. For example, Oracle high availability services daemons automatically start databases, listeners, and Oracle ASM instances. When Oracle high availability services are disabled, none of the components managed by Oracle Restart are started when a node is rebooted.
Oracle Restart使用Oracle高可用性服務來自動啟動和停止由Oracle Restart管理的元件。 例如,Oracle高可用性服務守護程式自動啟動資料庫,偵聽器和Oracle ASM例項。 當Oracle高可用性服務被禁用時,重啟節點時將不啟動Oracle Restart管理的元件。
crsctl command has

where command is a verb such as start, stop, or enable. The has object indicates Oracle high availability services
check   Displays the Oracle Restart status.
config  Displays the Oracle Restart configuration.
disable Disables automatic restart of Oracle Restart.
enable  Enables automatic restart of Oracle Restart.
start   Starts Oracle Restart.
stop    Stops Oracle Restart.


Oracle High Availability Services Daemon(OHASD) 
This process anchors the lower part of the Oracle Clusterware stack, which consists of processes that facilitate cluster operations.
Oracle Restart improves the availability of your Oracle database. When you install OracleRestart, various Oracle components can be automatically restarted after ahardware or software failure or whenever your database host computer restarts.
此過程將固定Oracle Clusterware堆疊的較低部分,該堆疊由促進群集操作的程式組成。
Oracle Restart 能提高資料庫的可用性,當安裝了Oracle Restart 之後,在系統出現硬體或者軟體問題,或者主機重啟之後,OracleRestart管理的元件都能自動的進行啟動。
OHASD是一個後臺的守護程式,其可用來啟動和監控OracleRestart程式。該程式由/etc/init.d/ohasd 指令碼來初始化,並由root使用者來執行ohasd.bin來啟動,如下
[root@pdba ~]# ps -ef|grep has|grep -v grep
root      5281     1  0 Jun25 ?        14:28:09 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
root     13261     1  0 Jun25 ?        00:00:00 /bin/sh /etc/init.d/init.ohasd run

OHASD無法kill,一旦kill,立馬又會被拉起了(參考/etc/initab中的respawn含義)
[root@TEST ~]# cat /etc/inittab|grep init.ohasd  
h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1
Note: Oracle Linux 6 (OL6) or Red Hat Linux 6 (RHEL6) has deprecated inittab, rather, init.ohasd will be configured via upstart in /etc/init/oracle-ohasd.conf, however, the process ""/etc/init.d/init.ohasd run" should still be up. Oracle Linux 7 (and Red Hat Linux 7) uses systemd to manage start/stop services (example: /etc/systemd/system/oracle-ohasd.service)
注意:Oracle Linux 6(OL6)或Red Hat Linux 6(RHEL6)已經棄用了inittab,相反,init.ohasd將透過/etc/init/oracle-ohasd.conf中的upstart配置,但是,程式“/etc/init.d/init.ohasd run“仍然應該啟動,Oracle Linux 7(和Red Hat Linux 7)使用systemd來管理啟動/停止服務(例如:/etc/systemd/system/oracle-ohasd.service)

[root@pdba ~]# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m

[root@pdba ~]# cat /etc/init/oracle-ohasd.conf
# Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
#
# Oracle OHASD startup
start on runlevel [35]
stop  on runlevel [!35]
respawn
exec /etc/init.d/init.ohasd run >/dev/null 2>&1

對於standalone server,使用OHASD來管理Oracle Restart,並且不需要CRSD程式的支援。可以使用OHASD管理的元件如下:
1.CSSD: This is used for Group Services as it was inprevious releases (when it was installed using “localconfig add“)
2.ASM Instance :if Automatic Storage Management is used.
3.ASM Disk Groups: if Automatic Storage Management is used.
4.Listeners
5.Database Instances
6.Database Services
7.ONS/EONS :Used for automatic failover of connections  usingFast Application Notification (FAN) in a Data Guard environment


Cluster Ready Services (CRS)

Cluster Ready Services Daemon (CRSD)
The primary Oracle Clusterware process that performs high availability recovery and management operations, such as maintaining OCR. Also manages application resources and runs as root user (or by a user in the admin group on Mac OS X-based systems) and restarts automatically upon failure.
執行高可用性恢復和管理操作(如維護OCR)的主要Oracle Clusterware程式。 還管理應用程式資源並以root使用者(或基於Mac OS X的系統上的管理員組中的使用者)身份執行,並在失敗時自動重新啟動。

[root@pdb02 ~]# ps -ef|grep crs|grep -v grep
root      3672     1  0 13:15 ?        00:00:48 /u01/app/11.2.0/grid/bin/crsd.bin reboot


Cluster
Oracle Clusterware enables servers to communicate with each other, so that they appear to function as a collective unit. This combination of servers is commonly known as a cluster. Although the servers are standalone servers, each server has additional processes that communicate with other servers. In this way the separate servers appear as if they are one system to applications and end users.
Oracle叢集件使伺服器能夠相互通訊,以使它們看起來像是一個集體單元。 這種伺服器組合通常被稱為叢集。 雖然伺服器是獨立的伺服器,但每臺伺服器都有其他的程式與其他伺服器通訊。 透過這種方式,獨立伺服器看起來好像是應用程式和終端使用者的一個系統。


CRS
crsctl start crs
Use the crsctl start crs command to start Oracle High Availability Services on the local server.
crsctl check crs
Use the crsctl check crs command to check the status of Oracle High Availability Services and the Oracle Clusterware stack on the local server.
crsctl stop crs
Use the crsctl stop crs command to stop Oracle High Availability Services on the local server.

cluster
crsctl start cluster
Use the crsctl start cluster command on any node in the cluster to start the Oracle Clusterware stack.
crsctl check cluster
Use the crsctl check cluster command on any node in the cluster to check the status of the Oracle Clusterware stack.
crsctl stop cluster
Use the crsctl stop cluster command on any node in the cluster to stop the Oracle Clusterware stack on all servers in the cluster or specific servers.

has
crsctl start has
Use the crsctl start has command to start Oracle High Availability Services on the local server
crsctl check has
Use the crsctl check has command to check the status of ohasd.
crsctl stop has
Use the crsctl stop has command to stop Oracle High Availability Services on the local server


RAC的一臺節點執行的結果
[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl config has
CRS-4622: Oracle High Availability Services autostart is enabled.
[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl config crs
CRS-4622: Oracle High Availability Services autostart is enabled.
[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl config cluster
Parse error:
  'cluster' is an invalid argument

[root@node1 grid]# 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
----crsctl start CRS不單單啟動CRSD了,等於啟動OHASD、CRSD、CSSD三者了

[root@node1 grid]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

[root@pdba ~]# crsctl check has
CRS-4638: Oracle High Availability Services is online

crsctl check cssd被crsctl check css取代了
[root@node1 ~]# crsctl check cssd
CRS-272: This command remains for backward compatibility only
Cluster Synchronization Services is online

crsctl check crsd被crsctl check crs取代了
[root@node1 grid]# crsctl check crsd
CRS-272: This command remains for backward compatibility only
Cluster Ready Services is online
但是沒有crsctl start cssd、crsctl start crsd這樣的命令


RAC的一臺節點執行的結果
[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl start has
CRS-4123: Oracle High Availability Services has been started.

[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl start has
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl check has
CRS-4638: Oracle High Availability Services is online

[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'pdb02'
CRS-2673: Attempting to stop 'ora.crsd' on 'pdb02'
CRS-2677: Stop of 'ora.crsd' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.mdnsd' on 'pdb02'
CRS-2673: Attempting to stop 'ora.ctssd' on 'pdb02'
CRS-2673: Attempting to stop 'ora.evmd' on 'pdb02'
CRS-2673: Attempting to stop 'ora.asm' on 'pdb02'
CRS-2677: Stop of 'ora.ctssd' on 'pdb02' succeeded
CRS-2677: Stop of 'ora.evmd' on 'pdb02' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'pdb02' succeeded
CRS-2677: Stop of 'ora.asm' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'pdb02'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'pdb02'
CRS-2677: Stop of 'ora.cssd' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.crf' on 'pdb02'
CRS-2677: Stop of 'ora.crf' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'pdb02'
CRS-2677: Stop of 'ora.gipcd' on 'pdb02' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'pdb02'
CRS-2677: Stop of 'ora.gpnpd' on 'pdb02' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'pdb02' has completed
CRS-4133: Oracle High Availability Services has been stopped

[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl check has
CRS-4639: Could not contact Oracle High Availability Services

[root@pdb02 ~]# /u01/app/11.2.0/grid/bin/crsctl stop has
CRS-2796: The command may not proceed when Cluster Ready Services is not running
CRS-4687: Shutdown command has completed with errors.
CRS-4000: Command Stop failed, or completed with errors.


單機執行的結果
[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl start has
CRS-4123: Oracle High Availability Services has been started.

[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl start has
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl check has
CRS-4638: Oracle High Availability Services is online

[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'giosonly'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'giosonly'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'giosonly'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'giosonly' succeeded
CRS-5022: Stop of resource "ora.DATA.dg" failed: current state is "UNKNOWN"
CRS-2675: Stop of 'ora.DATA.dg' on 'giosonly' failed
CRS-2679: Attempting to clean 'ora.DATA.dg' on 'giosonly'
CRS-2681: Clean of 'ora.DATA.dg' on 'giosonly' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'giosonly'
CRS-2677: Stop of 'ora.asm' on 'giosonly' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'giosonly'
CRS-2677: Stop of 'ora.cssd' on 'giosonly' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'giosonly'
CRS-2677: Stop of 'ora.evmd' on 'giosonly' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'giosonly' has completed
CRS-4133: Oracle High Availability Services has been stopped.

[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl check has
CRS-4639: Could not contact Oracle High Availability Services

[root@GIOSONLY app]# /u01/app/oracle/product/11.2.0/grid/bin/crsctl stop has
CRS-4544: Unable to connect to OHAS
CRS-4000: Command Stop failed, or completed with errors.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2147382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章