管理ONS(Oracle Notification Service)

Onsctl

Onsctl这个命令是用来管理ONS(Oracle Notification Service)是OracleClustser实现FAN Event Push模型的基础。

Oracle Notification Service (ONS)--A
publish and subscribe service for communicating Fast Application Notification (FAN) events.

在RAC环境下,须要使用$CRS_HOME下的ONS,而不是$ORACLE_HOME下的ONS,这点须要注意。

配置文件位于$CRS_HOME/opmn/conf/ons.config。

[[email protected] conf]$ pwd

/u01/oracle/10.2.0/crs_1/opmn/conf

[[email protected] conf]$ cat ons.config

localport=6113

remoteport=6200

loglevel=3

useocr=on

[[email protected] conf]$ netstat  -ano | grep 6200

tcp       0      0 0.0.0.0:6200                0.0.0.0:*                   LISTEN      off (0.00/0/0)

tcp       0      0 192.168.10.102:8471         192.168.10.101:6200         ESTABLISHED off (0.00/0/0)

[[email protected] conf]$ netstat  -ano | grep 6113

tcp       0      0 127.0.0.1:6113              0.0.0.0:*                   LISTEN      off (0.00/0/0)

tcp       0      0 127.0.0.1:42331             127.0.0.1:6113              ESTABLISHED keepalive (2251.34/0/0)

tcp        0     0 127.0.0.1:42328            127.0.0.1:6113             ESTABLISHED keepalive (2185.99/0/0)

tcp       0      0 127.0.0.1:6113              127.0.0.1:42331             ESTABLISHED off (0.00/0/0)

tcp       0      0 127.0.0.1:6113              127.0.0.1:42328             ESTABLISHED off (0.00/0/0)

unix  3      [ ]         STREAM     CONNECTED     6113

[[email protected] conf]$

配置ONS:

加入ONS:

[[email protected] conf]$ racgons add_configfelix11:6200 felix22:6200

删除ONS:

[[email protected] conf]$ racgons remove_configfelix11:6200 felix22:6200

[[email protected] conf]$

Onsctl命令:

使用onsctl命令能够启动、停止、调试ONS,并又一次加载配置文件。其命令格式例如以下:

注意:

ONS进程执行,并不一定代表ONS正常工作,须要使用ping命令来确认。

[[email protected] conf]$ onsctl

usage: /u01/oracle/10.2.0/db_1/bin/onsctlstart|stop|ping|reconfig|debug

start                            - Start opmn only.

stop                             - Stop ons daemon

ping                             - Test to see ifons daemon is running

debug                            - Display debuginformation for the ons daemon

reconfig                         - Reload the onsconfiguration

help                             - Print a shortsyntax description (this).

detailed                         - Print a verbosesyntax description.

(1)在os级别查看进程

[[email protected] conf]$ ps -ef  | grep ons

root     2530     1  0 20:19 ?        00:00:00 sendmail: acceptingconnections

oracle   5223     1  0 20:22 ?        00:00:00/u01/oracle/10.2.0/crs_1/opmn/bin/ons -d

oracle   5224  5223  0 20:22 ?        00:00:00 /u01/oracle/10.2.0/crs_1/opmn/bin/ons-d

oracle  10833 29589  0 21:59 pts/2    00:00:00 grep ons

[[email protected] conf]$

(2)确认ONS服务的状态

[[email protected] conf]$ onsctl ping

Number of configuration nodes retrieved: 2

0: {node = felix1, port = 6200}

Adding remote host felix1:6200

1: {node = felix2, port = 6200}

Remote port for local node in local config doesnot match that from OCR.

ons is not running ...

[[email protected] conf]$

从输出的信息课件,ONS服务是停止的。

(3)启动ONS服务

[[email protected] conf]$ onsctl start

Number of configuration nodes retrieved: 2

0: {node = felix1, port = 6200}

Adding remote host felix1:6200

1: {node = felix2, port = 6200}

……

……

Configuring ONS for Fast Connection Failover

In order for Fast Connection Failover to work, you must configure ONS correctly. ONS is shipped as part of Oracle Database 11g.

This section covers the following topics:

ONS Configuration File

ONS configuration is controlled by the ONS configuration file, ORACLE_HOME/opmn/conf/ons.config.
This file tells the ONS daemon details about how it should behave and who it should talk to. Configuration information within ons.config is defined in simple name and value pairs. There are three values that should always
be configured within ons.config. The first is localport, the port that ONS binds to on the localhost interface to talk to local clients. An example of thelocalport configuration
is the following:

localport=4100

The second value is remoteport, the port that ONS binds to on all interfaces for talking to other ONS daemons. An example of the remoteport configuration
is the following:

remoteport=4200

The third value specifies nodes, a list of other ONS daemons to talk to. Node values are given as a comma-delimited list of either host names or IP addresses plus ports. Note that
the port value that is given is the remote port that each ONS instance is listening on. In order to maintain an identical file on all nodes, thehost:port of the current ONS node can also be listed in the nodes list. It will
be ignored when reading the list.

The nodes listed in the nodes line correspond to the individual nodes in the RAC instance. Listing the nodes ensures that the middle-tier node can communicate with the RAC nodes. At least one middle-tier node and one node in the RAC
instance must be configured to see one another. As long as one node on each side is aware of the other, all nodes are visible. You need not list every single cluster and middle-tier node in the ONS config file of each Oracle RAC node. In particular, if one
ONS config file cluster node is aware of the middle tier, then all nodes in the cluster are aware of it.

An example of the nodes configuration is the following:

nodes=myhost.example.com:4200,123.123.123.123:4200

There are also several optional values that can be provided in ons.config.The first optional value is a loglevel. This specifies the level of messages that should
be logged by ONS. This value is an integer that ranges from 1, which indicates least messages logged, to 9, which indicates most messages logged. The default value is 3.
The following is an example:

loglevel=3

The second optional value is a logfile name. This specifies a log file that ONS should use for logging messages. The default value for logfile is$ORACLE_HOME/opmn/logs/ons.log.
The following is an example:

logfile=/private/oraclehome/opmn/logs/myons.log

The third optional value is a walletfile name. A wallet file is used by the Oracle Secure Sockets Layer (SSL) to store SSL certificates. If a wallet file is specified to ONS, it will use SSL when
communicating with other ONS instances and require SSL certificate authentication from all ONS instances that try to connect to it. This means that if you want to turn on SSL for one ONS instance, then you must turn it on for all instances that are connected.
This value should point to the directory where your ewallet.p12 file is located. The following is an example:

walletfile=/private/oraclehome/opmn/conf/ssl.wlt/default

One optional value is reserved for use on the server-side. useocr=on is used to tell ONS to store all Oracle RAC nodes and port numbers in Oracle Cluster Registry (OCR) instead of in the ONS configuration
file. Do not use this option on the client-side.

The ons.config file allows blank lines and comments on lines that begin with the number sign (#).

Client-Side ONS Configuration

You can access the client-side ONS through ORACLE_HOME/opmn. On the client-side, there are two
ways to set up ONS:

Example 26-1 illustrates how a sample configuration file may look.

Example 26-1 Example of a Sample ons.config File

# This is an example ons.config file
#
# The first three values are required
localport=4100
remoteport=4200
nodes=racnode1.example.com:4200,racnode2.example.com:4200

After configuring ONS, you start the ONS daemon with the onsctl command. It is the user‘s responsibility to make sure that an ONS daemon is running at all times.

Using the onsctl Command

After configuring, use ORACLE_HOME/opmn/bin/onsctl to start, stop, reconfigure, and monitor the
ONS daemon. Table 26-1 is a summary of the commands thatonsctl supports.

Table 26-1 onsctl Commands

Command Effect Output

start


Starts the ONS daemon


onsctl: ons started


stop


Stops the ONS daemon


onsctl: shutting down ons daemon...


ping


Verifies whether or not the ONS daemon is running


ons is running ...


reconfig


Triggers a reload of the ONS configuration without shutting down the ONS daemon


help


Prints a help summary message for onsctl


detailed


Prints a detailed help message for onsctl

Server-Side ONS Configuration Using racgons

You can access the server-side ONS through ORA_CRS_HOME/opmn. You
configure the server-side by using racgons to add the middle-tier node information to OCR. This command is found in ORA_CRS_HOME/bin/racgons.
Before using racgons, you must edit ons.config to set useocr=on.

The middle-tier nodes should be configured in OCR, so that all nodes share the configuration, and no matter which Oracle RAC nodes are up they can communicate to the middle-tier. When running on a cluster, always configure the ONS
hosts and ports not by using the ONS configuration files but usingracgons. The racgons command stores the ONS hosts and ports in OCR, where every node can see it. That way, you do not
need to edit a file on every node to change the configuration, just run a single command on one of the cluster nodes.

The racogns command enables you to specify hosts and ports on one node, then propagate your changes among all nodes in a cluster. The command takes two forms:

racgons add_config hostname:port [hostname:port] [hostname:port] ...
racgons remove_config hostname[:port] [hostname:port] [hostname:port] ...

The add_config version adds the listed host name(s), the remove_config version removes them. Both commands propagate the changes among all instances in a cluster.

If multiple port numbers are configured for a host, the specified port number is removed from hostname. If only hostname is
specified, all port numbers for that host are removed.

See Also:

Oracle Real Application Clusters
Administration and Deployment Guide

Other Uses of racgons

You should run racgons whenever you add a new node to the cluster.

Remote ONS Subscription

The advantages of remote ONS subscription are the following:

  • Support for an All Java middle-tier stack
  • No ONS daemon needed on the client computer and, therefore, no need to manage this process
  • Simple configuration using the DataSource property

When using remote ONS subscription for Fast Connection Failover, the application invokes the following method on an OracleDataSource instance:

setONSConfiguration(String remoteONSConfig)

The remoteONSConfig parameter is a list of name and value pairs of the form name=value that
are separated by a new line character (\n). name can be one ofnodeswalletfile, or walletpassword.
This parameter should specify at least the nodes ONS configuration attribute, which is a list of host:port pairs,
each pair separated by comma (,). The hosts and ports denote the remote ONS daemons available on the Oracle RAC nodes.

See Also:

"ONS Configuration File"

SSL could be used in communicating with the ONS daemons when the walletfile attribute is specified as an Oracle wallet file. In such cases, if thewalletpassword attribute
is not specified, single sign-on (SSO) would be assumed.

Following are a few examples, assuming ods is an OracleDataSource instance:

ods.setONSConfiguration("nodes=racnode1.example.com:4200,racnode2.example.com:4200");

ods.setONSConfiguration("nodes=racnode1:4200,racnode2:4200\nwalletfile=/mydir/Wallet\nwalletpassword=mypasswd");

ods.setONSConfiguration("nodes=racnode1:4200,racnode2:4200\nwalletfile=/mydir/conf/Wallet");

Note:

The ons.jar file must be in the CLASSPATH on the client. In the case of Oracle Application Server, ONS is embedded in Oracle Process Manager and Notification Server (OPMN), as before, and
JDBC Fast Connection Failover continues to work as before.

Enabling Fast Connection Failover

An application enables Fast Connection Failover by calling setFastConnectionFailoverEnabled(true) on a DataSource instance, before retrieving any connections from
that instance.

You cannot enable Fast Connection Failover when reinitializing a connection cache. You must enable it before using the OracleDataSource instance.

Example 26-2 illustrates how to enable Fast Connection Failover.

Note:

After a cache is Fast Connection Failover-enabled, you cannot disable Fast Connection Failover during the lifetime of that cache.

To enable Fast Connection Failover, you must perform the following:

  • Configure and start ONS. If ONS is not correctly set up, then implicit connection cache creation fails and an ONSException is thrown at the firstgetConnection request.
  • Set the FastConnectionFailoverEnabled property before making the first getConnection request to an OracleDataSource. When Fast
    Connection Failover is enabled, the failover applies to all connections in the connection cache. If your application explicitly creates a connection cache using the Connection Cache Manager, then you must first set FastConnectionFailoverEnabled before
    retrieving any connections.
  • Use a service name rather than a service identifier when setting the OracleDataSource url property.

Example 26-2 Enabling Fast Connection Failover

// declare datasource
ods.setUrl(
"jdbc:oracle:oci:@(DESCRIPTION=
  (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)
    (PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=service_name)))");
ods.setUser("scott");
ods.setConnectionCachingEnabled(true);
ods.setFastConnectionFailoverEnabled(true):
ctx.bind("myDS",ods);
ds=(OracleDataSource) ctx.lookup("MyDS");
try {
 ds.getConnection();  // transparently creates and accesses cache
 catch (SQLException SE {
  }
}
...

Querying Fast Connection Failover Status

An application determines if Fast Connection Failover is enabled by calling OracleDataSource.getFastConnectionFailoverEnabled, which returns true if failover is
enabled, false otherwise.

Understanding Fast Connection Failover

After Fast Connection Failover is enabled, the mechanism is automatic; no application intervention is needed. This section discusses how a connection failover is presented to an application and what steps the application takes to recover.

This section covers the following topics:

What the Application Sees

By the time an Oracle RAC service failure is propagated to the JDBC application, the database already rolls back the local transaction. The cache manager then cleans up all invalid connections. When an application holding an invalid
connection tries to do work through that connection, it is possible to receiveSQLException, ORA-17008, Closed Connection.

When an application receives a Closed Connection error message, it should do the following:

  1. Retry the connection request. This is essential, because the old connection is no longer open.
  2. Replay the transaction. All work done before the connection was closed has been lost.

Note:

The application should not try to roll back the transaction. The transaction was already rolled back in the database by the time the application received the exception.

How It Works

Under Fast Connection Failover, each connection in the cache maintains a mapping to a service, instance, database, and host name.

When a database generates an Oracle RAC event, that event is forwarded to the JVM in which JDBC is running. A daemon thread inside the JVM receives the Oracle RAC event and passes it on to the Connection Cache Manager. The Connection
Cache Manager then throws SQL exceptions to the applications affected by the Oracle RAC event.

A typical failover scenario may work like the following:

  1. A database instance fails, leaving several stale connections in the cache.
  2. The RAC mechanism in the database generates an Oracle RAC event which is sent to the JVM containing JDBC.
  3. The daemon thread inside the JVM finds all the connections affected by the Oracle RAC event, notifies them of the closed connection through SQL exceptions, and rolls back any open transactions.
  4. Each individual connection receives a SQL exception and must retry.

Comparison of Fast Connection Failover and TAF

Fast Connection Failover differs from Transparent Application Failover (TAF) in the following ways:

  • Application-level connection retries

    Fast Connection Failover supports application-level connection retries. This gives the application control of responding to connection failovers. The application can choose whether to retry the connection or to rethrow the exception.
    TAF supports connection retries only at the OCI/Net layer.

  • Integration with the implicit connection cache

    Fast Connection Failover is well-integrated with the implicit connection cache, which allows the Connection Cache Manager to manage the cache for high availability. For example, failed connections are automatically invalidated in the
    cache. TAF works at the network level on a per-connection basis, which means that the connection cache cannot be notified of failures.

  • Event-based

    Fast Connection Failover is based on the Oracle RAC event mechanism. This means that Fast Connection Failover is efficient and detects failures quickly for both active and inactive connections.

  • Load-balancing support

    Fast Connection Failover supports UP event load balancing of connections and run-time work request distribution across active Oracle RAC instances.

时间: 2024-10-18 02:04:20

管理ONS(Oracle Notification Service)的相关文章

Windows无法连接到System event notification service服务

issue symptom: 某日打开电脑,在输入用户名和密码后,出现错误提示:Windows无法连接到System event notification service服务. solution: 推测为网络winsock目录服务出现问题. 按住电源键5S强制重启,按F8进入安全模式. 打开cmd命令窗口, 输入netsh winsock reset catalog.  然后重启正常登陆即可.

Oracle RAC 实例管理(Cluster Group Service)

CGS是Oracle RAC 实例管理的实现方法,负责实现如下功能 1)实例之间的心跳机制 2)当实例离开或者加入集群时完成数据库集群的重新配置 3)解决数据库层面出现的脑裂 1,网络心跳 数据库层面的网络心跳是通过LMON进程实现的,每个实例的LMON进程会定期通过数据库的私网与所有远程实例进行通信,以确认其他实例的状态,如果,某一个实例一段时间之内不能够响应其他节点发送的网络心跳信息,那么数据库集群就需要进行重新配置,用户能够看到的最直观的信息就是ora-29740错误. 2,磁盘心跳 数据

在Oracle/SQL Service中通过Function返回Table

本函数用途:返回一个Table 在Oracle中实现,范例: 1 --在Types中: 2 create or replace type objTable as object 3 ( 4 s_usercode varchar2(32767), 5 s_username varchar2(32767) 6 ); 7 8 CREATE OR REPLACE TYPE tabTemp AS TABLE OF objtable; 9 10 11 --在Function中: 12 --使用Pipeline

spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子

如何测试事务,测试事务回滚情况: 我做了大量的不同的测试: 场景1: Service层中使用注解@Transactional,注解@PersistenceContext     private EntityManager  emt; 写了两个方法 public void insertfail() //插入失败要回滚 { for(int i=0;i<20;i++) { User users=new User(); users.setEmail("[email protected]"

win7 提示&quot;Windows 无法连接到System Event Notification Service服务......&quot;的解决办法

登录win7系统,突然出现如图1的提示,无线网络中断,不能上网,多次插拔无线网卡问题依然. 图1 解决过程如下: 1.检查网卡硬件状况,在设备管理器中查看网卡现象正常,排除网卡硬件故障. 2.查看服务中部分状态为"自动"的服务并没有启动,其中包括"System Event Notification",手动启动提示错误,查看系统日志发现日志无法查看,应该是日志服务也没有启动的缘故. 3.百度后发现提供的解决方法都是运行——CMD,再运行"NETSH WINS

TimesTen更改CacheGroup管理用户ORACLE结束和TT结束password【TimesTen操作和维修基地】

password管理一直操作的一部分的安全管理和维护.CacheGroup管理用户password虽然并不复杂变化.然而,这是用于生产,改不好比较easy导致失败.简介点击这里CacheGroup管理用户password的改动.便于入门的兄弟学习. 1.在主备节点改动sys.odbc.ini配置文件 $ cd $TT_HOME/info $ vi sys.odbc.ini [$DSN] OracleNetServiceName=ORA11G OraclePWD=cgpasswd        #

iOS 8 Apple Push Notification Service

Apple Configuration 1. create Apple ID in Apple Developer Website 2. check on "Push Notification" in the functionality 3. configure for Push Notification in Development: create certificate 3.1 upload the certificate file which is generated by ke

oracle的service 脚本

[[email protected] init.d]# vim oracle #!/bin/sh # chkconfig: 35 80 10 # description: Oracle auto start-stop script. # # Set ORA_HOME to be equivalent to the $ORACLE_HOME # from which you wish to execute dbstart and dbshut; # # Set ORA_OWNER to the u

oracle 12c service之cdb和pdb

srvctl add service 参数如下:-s:服务名-r:首选实例名-a:备用实例名-p:TAF策略,有none,basic,preconnect三个值可选-d-pdb srvctl add service -help 查看各个参数的含义 这里如果未指定-pdb,则连到cdb上,这在远程克隆pdb,设置tns的时候需要 srvctl add service -s lych_srv -d xxx -pdb xxx -a xxx -r xxx ---手动配置TNS的话就srvctl conf