This section discusses the following Net8 configurations:
- Dedicated server
- Multi-threaded server (MTS)
- Oracle Internet Directory
- Oracle Names
- Connection Manager
As you read these sections, bear in mind that these configurations are not mutually exclusive. They are presented separately to keep the diagrams simple and to keep the discussion focused. The simplest configuration, and the one you'll get by default when you do a fresh install of Oracle, is a dedicated server configuration that does not use any of the other components. However, it is entirely possible for a Net8 environment to use Oracle Internet Directory (or Oracle Names) and Connection Manager to implement the multi-threaded server option, and to still use dedicated server connections as well.
A dedicated server environment is one in which each database session communicates with a corresponding server process that has been dedicated to it. Figure 1 below shows an example of this environment. The term refers to the dedicated server processes that are started for each client connection to the Oracle database.
The following list describes the major components that you will need to deal with in a simple dedicated server configuration such as that shown in the above figure.
- Net8 listener A process that runs on the server and monitors the network for incoming connection requests. When a connection is made, the listener starts up a dedicated server process and hands off the connection to that process. The listener does not stay involved in the connection after that point.
- Net8 session layer The low-level software that enables Net8 communication over a network. The session layer consists of a generic network interface; a routing, naming, and authentication layer; and the Transparent Network Substrate (TNS). You'll read more about these later in this chapter in the "Stack Communications" section.
- sqlnet.ora file A text file that exists on both the client and the server machines. It contains settings that control various aspects of Net8's operation.
- tnsnames.ora file A text file that translates net service names to specific server addresses and instance names.
- listener.ora file A text file containing settings that control the operation of the Net8 listener.
Although Figure 1 only shows one listener, it is possible to configure Net8 to use multiple listener processes on one machine. When you configure multiple listeners, you still have only one listener.ora file. All the parameters for all the listeners are in that one file. Click here for details on configuring Net8 listeners.
A multi-threaded server environment is one in which the client connections share access to a pool of shared server processes. In a dedicated server environment, as the number of client connections to an Oracle database increases, the resulting dedicated server processes can quickly eat away at the available CPU and memory resources on the server. This has an adverse impact on scalability; you won't be able to support as many users as you might like. If you expect to have a large number of client connections to your database, you may be able to improve scalability by using Net8's multi-threaded server (MTS) option. The MTS option, illustrated in figure 2 below, allows one server process to handle more than one client connection.
Using the MTS option adds one component to the Net8 environment
the dispatcher process. Whereas in a dedicated server environment each new connection is handed off to a dedicated server process, in an MTS environment, each new connection is handed off to a dispatcher process. Each dispatcher process can handle a large number of client connections. When a client sends a SQL statement to the database to be executed, the dispatcher routes that SQL statement to an available shared server process. The shared server process is analogous to a dedicated server process, except that it is shared by more than one connection. The shared server process takes care of executing the SQL statement, and then returns the results back to the client.
The multi-threaded server option is only beneficial in cases where your client connections sporadically use the database. The idea is that while one connection is sitting idle, another connection can be serviced. Clients with little or no idle time should be connected to dedicated server processes.
Oracle Internet Directory
Oracle Internet Directory (OID) is not, strictly speaking, a Net8 component. It's an implementation of a standards-based Lightweight Directory Access Protocol (LDAP) directory server. An LDAP directory server such as OID can be used to maintain a central repository of net service names that can be referenced by all clients.
When you connect to an Oracle database, you specify the database in question by supplying a net service name. Somehow, Net8 needs to resolve that service name into a specific Oracle instance on a specific server. One way to do that is through the use of tnsnames.ora files. These are text files that sit on each client machine, and also on the servers, and that contain the information needed to resolve each net service name.
Because they must reside on each machine, tnsnames.ora files do not represent a very scalable solution to the problem of resolving net service names. Every time changes are made, the tnsnames.ora files on all your machines need to be refreshed. You can imagine how burdensome and error-prone that task becomes as the number of machines increases. OID, shown in figure 3 , allows you to define net service names in one central repository.
OID is shipped with the Enterprise Edition of the Oracle database software. Currently, if you are licensed for the Enterprise Edition, that confers a license to use OID for the purposes of net service name resolution. Click here for more information on using LDAP with Net8.
Oracle Names is a soon-to-be obsolete Net8 component that allows net service names to be defined centrally. It functions in much the same manner as the OID. To resolve a net service name, clients contact an Oracle Names server. The Names server sends back the definition for the name, and the client uses that definition to connect to a database service.
Using Oracle Names allows you to dispense with the tnsnames.ora files, and adds the following two components to your Net8 environment:
- Oracle Names: Software that maintains a central repository of net service name definitions
- names.ora file: A text file containing settings that control the operation of the Oracle Names server
Oracle Names is a proprietary solution, and it has always been somewhat buggy and difficult to use. Oracle still supports Names because there are sites that continue to use it, but the future lies with OID and LDAP. If you need a centralized net service name repository, we strongly recommend the use of the OID/LDAP solution. If you are currently using Oracle Names, you should already be planning your switch to a directory-based name resolution solution.
The Oracle Connection Manager is an optional Net8 component that functions much like a router. Connection Manager is shown in figure 4 below and provides the following functionality:
- Protocol conversion – Connection Manager can convert between two different protocols. For example, Connection Manager can convert an SPX/IPX connection from a client into a TCP/IP connection to a database server.
- Connection concentration – Multiple client connections can be combined into one protocol connection to a server.
- Access control – Database access may be restricted based on the network address of the client or of the server.