应用层:
应用层就是指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》