Each Oracle instance generates a globally unique instance identifier (UII) for itself This UII does not reveal system ID, server names, instances, or other sensitive information about network resources. The listeners 102, 106-110 route the connection and once the connection is established between a client and a server instance, the client and server communicates directly with each other (as shown in
A first and second database server 202 and 204 are shown here in an example of how the method 200 can function. Server 202 includes a first database (DB1) 206 with two instances. As a first instance (Inst-1) 208 was started, it generated a unique instance identifier (UII) for it represented as UII-B 210. Similarly, as a second instance (Inst-2) 212 was started, it generated a unique instance identifier (UII) for it, here represented as UII-Y 214. Server 204 includes a second database (DB2) 220 with three instances. As a first instance (Inst-1) 222 was started, it generated a unique instance identifier (UII) for it represented as UII-F 224. Similarly, as a second instance (Inst-2) 226 was started, it generated a unique instance identifier (UII) for it, here represented as UII-O 228. And the third instance (Inst-3) 230 generated a UII-C 232.
A set of three clients 240, 242, and 244, represent clients that can request connections to the servers. In
Method embodiments of the present invention can be used globally on all Oracle instances, each instance has its own unique number (UII) and no other Oracle instance will have the same number. Newer versions of Oracle can benefit in particular. The UII can be exposed through API by the client library attached to a middleware application. Each time a connection is established between a client and a server, the server identifies itself by its unique key/identifier.
Embodiments may be packaged for users for other purposes, such as indexing or tracking data exchanges. Non-Oracle databases can benefit as well. Each instance is uniquely identified to the client before authentication. Resources, database instances, and web server agents that register with a common system over a network, exchange a lot of information with the common system about their respective resources. When a conventional client and server contact each other, they typically do not know if they had ever been in contact before. So they end up exchanging their complete list of mutual capabilities every time, on every contact. The unique ID of the present invention reduces the capability exchange overhead by maintaining a proper index inside the common system.
Embodiments of the present invention are particularly suited to Oracle database implementations. See, Net8 Administrator's Guide, Oracle Corporation (Redwood Shores, Calif.), for more detail on the following summary of operations.
Clients initiate requests for operation by the database server. Web browsers or other enduser processes can act as clients. In multi-tier architectures, the clients connect to the database server through application servers.
Conventionally, Oracle web agent services specify values needed by the web agent every time it makes a database connection. For example, an Oracle username and password are needed, as well as an Oracle SID or SQL*Net V2 service. The Oracle web agent service name is specified in the uniform resource locator (URL) line of a browser.
Application servers provide data access for the clients by interfacing them to the database servers, and can provide an added level of security. Application servers do some of the query processing for the clients, off-loading those chores from the database server. Each application server assumes a respective client's identity when it operates with the database server. But the application server's privileges are limited to prevent unneeded and unwanted operations during client operations.
Database servers provide the data requested, and all of the remaining query processing. An Oracle database server can audit operations by the application servers for individual clients of its own. For example, a client operation can request information to be displayed on the client workstation, and an application server operation can request a connection to the database server.
Oracle Net Services provides enterprise-wide connectivity in distributed, heterogeneous computing environments, and provides for network sessions between client applications and an Oracle database.
After a network session is established, Oracle Net Services acts as a data courier for the client application and the database server. It establishes and maintains the connection between the client application and database server, and exchanging messages between them. An instance of Oracle Net Services is located on each computer in the network.
Oracle databases and client applications operate in a distributed processing environment. Distributed or cooperative processing involves interaction between two or more computers to complete a single data transaction. Applications such as an Oracle tool act as clients requesting data to accomplish a specific operation. Database servers store and provide the data.
In a typical network configuration, clients and servers exist as separate logical entities on separate physical machines. Such configuration allows for a division of labor where resources are allocated efficiently between a client workstation and the server machine. This type of client-server architecture also enables users to distribute databases across a network.
A distributed database is a network of databases stored on multiple computers that appears to the user as a single logical database. Distributed database servers are connected by a database link, or path from one database to another. One-server uses a database link to query and modify information on a second server as needed, thereby acting as a client to the second server.
Computers separated by both design and physical location can communicate and interact with each other using stack communications. In the OSI model, communication between separate computers occurs in a stack-like fashion with information passing from one node to the other through several layers of code. A typical OSI protocol communications stack contains seven layers.
In a typical Oracle Networking Environment, Stack communications allow Oracle clients and servers to share, modify, and manipulate data between themselves. The layers in a typical Oracle communications stack are similar to those of a standard OSI communications stack.
In an Oracle client-server transaction, information passes through several layers, e.g., Client Application, Oracle Call Interface (OCI), Two-Task Common, Net8, Oracle Protocols, Oracle Protocols, and Network-Specific Protocols. Oracle client applications provide all user-oriented activities, such as character or graphical user display, screen control, data presentation, application flow, and other application specifics. The application identifies database operations to send to the server and passes them through to the Oracle Call Interface (OCI).
The OCI code contains all the information required to initiate a SQL dialogue between the client and the server. It defines calls to the server to parse SQL statements for syntax validation, open a cursor for the SQL statement, bind client application variables into the server shared memory, describe the contents of the fields being returned based on the values in the server's data dictionary, execute SQL statements within the cursor memory space, fetch one or more rows of data into the client application, and close the cursor.
The client application uses a combination of these calls to request activity within the server. When a call is performed, control is passed to Net8 to establish the connection and transmit the request to the server.
Two-Task Common is an implementation of a presentation layer. It provides character set and data type conversion between different character sets or formats on the client and server. Such layer is optimized to do conversion only when required on a per connection basis.
At the time of initial connection, Two Task Common is responsible for evaluating differences in internal data and character set representations and determining whether conversions are required for the two computers to communicate.
Net8 provides all session layer functionality in an Oracle communications stack. It is responsible for establishing and maintaining the connection between a client application and server, as well as exchanging messages between them.
Oracle protocols are Oracle's implementation of the transport layer. Oracle protocols are responsible for mapping TNS functionality to industry-standard protocols used in the client-server connection. Each protocol is responsible for mapping the equivalent functions between TNS and a specific protocol. Oracle protocols include LU6.2, Named Pipes, SPX, TCP/IP, TCP/IP with SSL, and Network-Specific Protocols.
All Oracle software in the client-server connection process require an existing network protocol stack to make the machine-level connection between the two machines for the transport layer. The network protocol is responsible only for getting the data from the client machine to the server machine, at which point the data is passed to the server-side Oracle protocol.
For Server-Side Interaction, information passed from a client application across a network protocol is received by a similar communications stack on the server side. The process stack on the server side is the reverse of what occurred on the client side with information ascending through communication layers. An operation unique to the server side is receiving the initial connection through the listener.
The Oracle Server side of a connection receives dialog requests from the client OCI code and resolves SQL statements for the client application. Once received, a request is processed and the resulting data is passed to the OPI for responses to be formatted and returned to the client application.
When two servers communicate to complete a distributed transaction, the process, layers, and dialogues are the same as in the client-server scenario, except that there is no client application. The server has its own version of OCI, e.g., the Network Program Interface (NPI). The NPI interface does all of the functions that the OCI does for clients, allowing a coordinating server to construct SQL requests for additional servers.
The listener is started and listens on an address specified in a listener configuration file (LISTENER.ORA). A client connects to a listener with a network address. When the listener receives the network session request, it determines if the client's request be serviced. If not, the listener refuses the network session. The listener spawns a new dedicated server process to serve the incoming network session, and bequeaths the network session to that server process. Once the network session is established, data flows directly between the client and dedicated server process.
The listener continues listening for incoming network sessions. When a client disconnects, the dedicated server process associated with the client closes.
The listener receives connection requests for a client application. Database instances register themselves with the listener when started. Database instance registration includes (1) service registration which provides the listener with instance information, such as database service names and instance names, and, (2) MTS dispatcher registration which provides dispatcher information to the listener.
When a client requests a connection from a listener, the service name is sent to the listener. The listener receives the network session request, determines if the information passed to it matches the information it has registered, and determines if the client request should be serviced.
While the present invention has been described with reference to several particular example embodiments, those skilled in the art will recognize that many changes be made thereto without departing from the spirit and scope of the present invention, which is set forth in the following claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 1342/CHE/2006 | Jul 2006 | IN | national |