Error Message: RPC: Remote System error or Program Unavailable
- General Cases
- Special Consideration for Request Brokers running on Windows NT or 2000 Workstation
- Evidence
General Cases
The Multi-Tier Generic Client (whether ODBC Driver, JDBC Driver, or ADO.NET Provider) expects to find a running Request Broker. Specifically, it will call for the Broker at the machine and port specified in the Host field of the client DSN (e.g., broker-host.example.com:5000). If a running Broker cannot be reached, Remote System and Program Unavailable errors occur. The most common causes of these errors should be resolved by the steps below.
- Ensure that the
OpenLink Request Broker and Database Agents are installed somewhere on the network. Typically, these components are installed on the database server. However, they are occasionally installed on clients or third-tier "gateway" hosts. If in doubt, use the Windows Explorer or the Unix find command to search for the oplrqb executable.
- Review your client's DSN.
- Ensure that the Host field passes the IP address or a DNS-resolvable fully qualified hostname (e.g., broker-host.example.com) of the machine which contains the
OpenLink Request Broker.
- Ensure that the Broker's Listen port (found in the [Protocol TCP] stanza of the Broker Rulebook, oplrqb.ini) is also specified in the DSN, whether in its own field (e.g., Port = 5000), or as part of the Server field (e.g., Host = brokerhost.example.com:5000).
The following examples are all equivalent --
[OpenLink Multi-Tier DSN 1] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = broker-host.example.com:5000 [OpenLink Multi-Tier DSN 2] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = 192.168.123.234 Port = 5000 [OpenLink Multi-Tier DSN 3] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = 192.168.123.234:5000
- If you specify the Broker host by hostname, substitute the machine's IP address and retest; success with this substitution indicates issues with the client host's DNS setup and/or server.
You can also test for DNS issues by "pinging" the Broker host by name and by address (ctrl-C to exit the ping utility) --
ping broker-host.example.com ping 192.168.123.231
- Ensure that the Host field passes the IP address or a DNS-resolvable fully qualified hostname (e.g., broker-host.example.com) of the machine which contains the
- Ensure that the Request Broker is running.
Unix users generally start the Broker with the commands --
. /path/to/openlink.sh oplrqb
Windows users generally start theOpenLink Request Broker service through the Services control panel.
- If the Broker is running, determine whether firewalls exist between the client and the machine with the Broker.
If firewalls exist, take the following action:
- Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
- Locate the [Protocol TCP] section.
- Record the values passed to PortLow and PortHigh.
If PortHigh is set to no value, is not set, and/or its entry is commented out, treat it as if set to 60000.
(To minimize future confusion, you may wish to set it to 60000, now.)
- On the firewall, open TCP ports
PortLow through PortHigh, inclusive. In other words, if PortLow = 5000 and PortHigh = 5500, open all TCP ports 5000 to 5500.
- On the firewall, open TCP port 60001 and UDP port 60001.
- Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
- If firewalls do not exist, determine whether multiple network cards have been installed in the machine containing the Broker and agents, or if this machine has multiple IP addresses.
If multiple network cards (even if only one is active) or IP addresses exist, take the following action:
- Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
- Locate the [Protocol TCP] section.
- Remove the leading semicolon (";") from the IPAddress entry, if present.
- Set IPAddress equal to the IP address at which the Broker and Agents should be found.
For example:
IPAddress = 192.168.123.234
- Save your changes and exit the file.
- Restart your Request Broker.
- Ensure that client DSNs specify that IP address or a fully qualified hostname (e.g., broker-host.example.com) which resolves to the same IP address.
- Test.
- Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
Special Consideration for Request Brokers running on Windows NT or 2000 Workstation
Applications making 6 (or more) connections in rapid succession to
This is due to the size of the backlog queue for TCP sockets and RPC on the host OS, upon which our Multi-Tier communications layer depends. On Windows NT Workstation and Windows 2000 Workstation, the maximum queue size is 5; on Windows Server (NT, 2000, and later), the queue size can be 200 (or more). The Broker's internal backlog queue was 8 through Release 4.0, and increased to 32 in Release 4.1, but due to the OS limitations, on Windows Workstations, the effective value remains 5. Unfortunately, there is no way to increase the maximum size of the Windows Workstation backlog queue.
The following Microsoft Knowledgebase articles discuss this Winsock-specific phenomenon:
- Article ID: 127144 - Windows NT
WinSock Listen (Backlog) Parameter Limit
- Article ID: 113576 - Winsock App's Reject Connection Requests with Reset Frames
As these articles state, applications targeting an
Evidence
- output of commands --
- HP-UX
for i in `lanscan -i | awk '{print $1}'` ; do ifconfig $i ; done
- Windows
ipconfig /all
- Mac OS X, Linux, AIX, Solaris, other Unix-like OS
ifconfig -a
- All OS (including the above)
netstat -na
- HP-UX
- DSN and Communications settings (from odbc.ini or Windows Registry)
- Session Rulebook (oplrqb.ini)
Referenced by...