Oracle Clusterware工具4

应用层:

  应用层就是指RAC数据库了,这一层有若干资源组成,每个资源都是一个进程或者一组进程组成的完整服务,这一层的管理和维护都是
围绕这些资源进行的。有如下命令: onsctl,srvctl,crs_stat三个命令。

命令:onsctl

  这个命令用于管理配置ONS(Oracle Notification Service). ONS是Oracle Clusterware实现FAN Event Push模型的基础。在传统模型
中,客户端需要定期检查服务器来判断服务端状态,本质上是一个pull模型,Oracle 10g引入了一个全新的PUSH机制--FAN(Fast
Application Notification),当服务端发生某些事件时,服务器会主动的通知客户端这种变化,这样客户端就能尽早得知服务端的变化。而引入这种机制就是依赖ONS实现, 在使用onsctl命令之前,需要先配置ONS服务。

ons配置内容

  在RAC环境中,需要使用$CRS_HOME下的ONS,而不是$ORACLE_HOME下面的ONS, 这点需要注意。 配置文件在$CRS_HOME/opmn/conf/ons.config.

[root@rac1 conf]#pwd
/opt/ora10g/product/10.2.0/crs_1/opmn/conf
[oracle@node1 conf]$ more ons.config
localport=6113 
remoteport=6200 
loglevel=3
useocr=on

参数说明:
Localport:  这个参数代表本地监听端口,这里本地特指:127.0.0.1这个回环地址,用来和运行在本地的客户端进行通信
Remoteport:这个参数代表的是远程监听端口,也就是除了127.0.0.1以外的所有本地IP地址,用来和远程的客户端进行通信。
Loglevel:   Oracle允许跟踪ONS进程的运行,并把日志记录到本地文件中,这个参数用来定义ONS进程要记录的日志级别,从1-9,缺省值是3.
Logfile:    这个参数和loglevel参数一起使用,用于定义ONS进程日志文件的位置,缺省值是$CRS_HOME/opmn/logs/opmn.log

nodes和useocr:这两个参数共同决定了本地的ONS daemon要和哪些远程节点上的ONS daemon进行通信。
Nodes参数值格式如下:Hostname/IP:port[hostname/ip:port]
如:useoce=off
Nodes=rac1:6200,rac2:6200
useocr参数值为on/off,如果useocr是ON, 说明信息保存在OCR中;如果是OFF,说明信息取nodes中的配置。对于单实例而言,要把useocr设置为off。

当useocr=on时,信息保存在DATABASE.ONS_HOSTS键中。如下:

[oracle@node1 bin]$ ./ocrdump -stdout -keyname DATABASE.ONS_HOSTS -xml|more

<NAME>DATABASE.ONS_HOSTS.node1</NAME>
<VALUE_TYPE>ORATEXT</VALUE_TYPE>
<VALUE><![CDATA[node1]]></VALUE>
<USER_PERMISSION>PROCR_ALL_ACCESS</USER_PERMISSION>
<GROUP_PERMISSION>PROCR_READ</GROUP_PERMISSION>
<OTHER_PERMISSION>PROCR_READ</OTHER_PERMISSION>
<USER_NAME>oracle</USER_NAME>
<GROUP_NAME>oinstall</GROUP_NAME>

<NAME>DATABASE.ONS_HOSTS.node1.PORT</NAME>
<VALUE_TYPE>ORATEXT</VALUE_TYPE>
<VALUE><![CDATA[6200]]></VALUE>
<USER_PERMISSION>PROCR_ALL_ACCESS</USER_PERMISSION>
<GROUP_PERMISSION>PROCR_READ</GROUP_PERMISSION>
<OTHER_PERMISSION>PROCR_READ</OTHER_PERMISSION>
<USER_NAME>oracle</USER_NAME>
<GROUP_NAME>oinstall</GROUP_NAME>
..........

<NAME>DATABASE.ONS_HOSTS.node2</NAME>
<VALUE_TYPE>ORATEXT</VALUE_TYPE>
<VALUE><![CDATA[node2]]></VALUE>
<USER_PERMISSION>PROCR_ALL_ACCESS</USER_PERMISSION>
<GROUP_PERMISSION>PROCR_READ</GROUP_PERMISSION>
<OTHER_PERMISSION>PROCR_READ</OTHER_PERMISSION>
<USER_NAME>oracle</USER_NAME>
<GROUP_NAME>oinstall</GROUP_NAME>

<NAME>DATABASE.ONS_HOSTS.node2.PORT</NAME>
<VALUE_TYPE>ORATEXT</VALUE_TYPE>
<VALUE><![CDATA[6200]]></VALUE>
<USER_PERMISSION>PROCR_ALL_ACCESS</USER_PERMISSION>
<GROUP_PERMISSION>PROCR_READ</GROUP_PERMISSION>
<OTHER_PERMISSION>PROCR_READ</OTHER_PERMISSION>
<USER_NAME>oracle</USER_NAME>
<GROUP_NAME>oinstall</GROUP_NAME>
.....
[oracle@node1 bin]$ 

配置ons:

  可以直接编译ONS的配置文件来修改配置。如果使用了OCR,则可以通过racgons命令进行配置,但必须以root用户来执行,如果用oracle用户来执行,不会提示任何错误,但也不会更改任何配置。

若要添加配置,可以使用下面命令:
Racgons add_config rac1:6200 rac2:6200
若要删除配置,可以用下面命令:
Racgons remove_config rac1:6200 rac2:6200

onsctl命令:

  使用onsctl命令可以启动,停止,调试ONS,并重新载入配置文件,其命令格式如下:

[oracle@node1 bin]$ ./onsctl
usage: ./onsctl start|stop|ping|reconfig|debug

start                            - Start opmn only.
stop                             - Stop ons daemon
ping                             - Test to see if ons daemon is running
debug                            - Display debug information for the ons daemon
reconfig                         - Reload the ons configuration
help                             - Print a short syntax description (this).
detailed                         - Print a verbose syntax description.

[oracle@node1 bin]$

示例:

1.在OS级别查看进程状态。
[oracle@node1 bin]$ ps -ef|grep -v grep |grep ons
oracle    5909     1  0 21:59 ?        00:00:00 /opt/ora10g/product/10.2.0/crs_1/opmn/bin/ons -d
oracle    5910  5909  0 21:59 ?        00:00:00 /opt/ora10g/product/10.2.0/crs_1/opmn/bin/ons -d
[oracle@node1 bin]$

2.确认ONS服务的状态
[oracle@node1 bin]$ ./onsctl ping
Number of onsconfiguration retrieved, numcfg = 2
onscfg[0]
   {node = node1, port = 6200}
Adding remote host node1:6200
onscfg[1]
   {node = node2, port = 6200}
Adding remote host node2:6200
ons is running ...
[oracle@node1 bin]$ 

3.启动ONS服务
[root@rac1 bin]#./onsctl start

4.使用debug选项,可以查看详细信息,其中最有意义的就是能显示所有连接:

[oracle@node1 bin]$ ./onsctl debug
Number of onsconfiguration retrieved, numcfg = 2
onscfg[0]
   {node = node1, port = 6200}
Adding remote host node1:6200
onscfg[1]
   {node = node2, port = 6200}
Adding remote host node2:6200
HTTP/1.1 200 OK
Content-Length: 1357
Content-Type: text/html
Response: 


======== ONS ========

Listeners:

 NAME    BIND ADDRESS   PORT   FLAGS   SOCKET
------- --------------- ----- -------- ------
Local   127.000.000.001  6113 00000142      7
Remote  192.168.002.100  6200 00000101      8
Request     No listener

Server connections:

    ID           IP        PORT    FLAGS    SENDQ     WORKER   BUSY  SUBS
---------- --------------- ----- -------- ---------- -------- ------ -----
         1 192.168.002.101  6200 00104205          0               1     0

Client connections:

    ID           IP        PORT    FLAGS    SENDQ     WORKER   BUSY  SUBS
---------- --------------- ----- -------- ---------- -------- ------ -----
         3 127.000.000.001  6113 0001001a          0               1     0
         4 127.000.000.001  6113 0001001a          0               1     1

Pending connections:

    ID           IP        PORT    FLAGS    SENDQ     WORKER   BUSY  SUBS
---------- --------------- ----- -------- ---------- -------- ------ -----
         0 127.000.000.001  6113 00020812          0               1     0

Worker Ticket: 7/7, Idle: 208

   THREAD   FLAGS
  -------- --------
  b7ec0b90 00000012
  b6d03b90 00000012
  b6302b90 00000012

Resources:

  Notifications:
    Received: 3, in Receive Q: 0, Processed: 3, in Process Q: 0

  Pools:
    Message: 24/25 (1), Link: 25/25 (1), Subscription: 24/25 (1)
[oracle@node1 bin]$ 

 

--整理自《大话 oracle rac》

 

posted @ 2013-06-15 20:45  PoleStar  阅读(390)  评论(0编辑  收藏  举报