Skip Headers

Oracle® Calendar Administrator's Guide
Release 2 (9.0.4)

Part Number B10892-02
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Feedback

Go to previous page
Previous
Go to next page
Next
View PDF

2
Calendar Architecture

This chapter examines the overall structure of the calendar server. An introduction to the concepts and terminology involved is followed by an examination of the function of the calendar server daemons/services, and an illustration of the basic internal operations and processes involved in client connections.

Overview

This section is a quick introduction to the concepts and terminology at the heart of the calendar server design. This information is intended as a preliminary to the architectural and structural information later in this chapter. More details on these subjects are presented in following chapters.

Hosts

A host is the physical machine running an installation of the calendar server. It is possible to have more than one installation of the calendar server on the same host, except on Windows NT where only one installation of the server may be present on any one host. When more than one calendar server is installed on the same machine, the two are differentiates by the port number used to access them. This will be reflected by the <hostname:portnumber> combination used when accessing a server using a utility. For example:

uniping -host host1:5730

Nodes

A node is a local database where the server stores information such as user records, meetings and events. Each node has a specific, unique identification number called the Node-ID. Multiple nodes may exist for the same calendar server. Nodes may also be connected into a node network, allowing users on separate servers to schedule meetings and events transparently with one another. When the calendar server is installed, a node is automatically configured.

Clusters and Master Nodes

A cluster is a node network in which one node is designated the "master node". The master node coordinates network management, finding user accounts on installations spanning multiple nodes and hosts. Use of a cluster type of network is optional.

Installation Options

When the Oracle Calendar Server is installed, by default it is integrated with the Oracle Internet Directory server (OiD) and other components of the Oracle Collaboration Suite. However, the Oracle Calendar Server can be deployed as a "standalone" application, storing all user information in a third party LDAP directory server. In either cases, the calendar server is said to be using an external directory.

The standalone installation also offers the possibility of installing the calendar server with no LDAP directory. In this case, the user information is stored in the calendar server's database and the calendar server is said to be using an internal directory.

Daemons/Services

The calendar server can contain up to six UNIX daemons/multi-threaded Windows NT services. The calendar server daemons/services are:

Oracle Calendar Engine

The Engine (uniengd) accepts and services calendar requests. All communication with the calendar database is handled by the engine. At startup, a series of uniengd daemons/services are started automatically for each node.

The first uniengd process created is the uniengd Controller. It then creates multiple uniengd Listeners. A listener listens for incoming client connections and either launches uniengd session processes or creates uniengd session threads for each client it accepts (depending on the OS of the system). One of the uniengd session belongs to the Synchronous Network Connection daemon (unisncd described later in this chapter).

Since many of the calendar requests can be received at the same time, the servicing engines rely on the Lock Manager to ensure orderly access to the database of the local node (see Oracle Calendar Lock Manager later in this chapter). Therefore the Lock Manager must be running in order for the Engine to function. The Engine must be running in order to operate the calendar server.

Oracle Calendar Lock Manager

The Lock Manager (unilckd) queues and processes the many requests for access to the calendar server's database. The Lock Manager must be running in order to operate the calendar server. On Unix, it is possible to have more than one lock manager per calendar server when more than one node is configured for the same calendar server. By default, one lock manager exists per node. See server parameter [LCK] maxnodesperlistener in Appendix C, "Server Parameters" of the Oracle Calendar Reference Manual.

Oracle Calendar Synchronous Network Connection

There is one Synchronous Network Connection daemon/service (unisncd) per server which services every node. It fulfills two roles in the server architecture. First, the unisncd is used to maintain open TCP/IP connections between nodes, and to grant those connections to clients that request access to another node. Each connection is unidirectional, from the current node to another node, but not vice versa. It is therefore important to ensure that node connections are set in both directions.

The Synchronous Network Connection daemon/service grants connections on a first in, first out basis. Requests that cannot be processed immediately are put in a queue. The number of connections between two nodes may be increased or decreased to minimize both the number of connections used and the traffic and connection time between two nodes. If a Synchronous Network Connection daemon/service loses a connection due to network problems, it will attempt to reconnect later.

In its second function, it is used in implementations with an external directory server, the unisncd acts as a broker, granting connections to the Directory Access Server (unidasd).

Configuration

For technical information concerning the configuration of the Synchronous Network Connections daemon/service, including a list of parameters and their default values, see Appendix C, "Server Parameters" of the Oracle Calendar Reference Manual. Unless otherwise indicated, the Synchronous Network Connections daemon/service must be restarted in order for a configuration change to take effect.

Oracle Calendar Directory Access Server

The Directory Access Server (unidasd) is used to maintain open connections to an LDAP directory server. Connections to the Directory Access Server are granted by the Synchronous Network Connection (unisncd) daemon/service. The unidasd daemon/service is not used when there is no external directory. By default, more than one unidasd is started when the calendar server is started.

The number of unidasd connections to establish to the directory server is defined by the parameter numconnect in section [<YOURHOSTNAME>,unidas]. If this parameter is set too low, the server may not be able to handle all requests made for directory server operations, in which case end users will get errors of the type "Unable to contact directory server". For more details on the numconnect parameter, see Appendix C, "Server Parameters" of the Oracle Calendar Reference Manual.

Oracle Calendar Corporate-Wide Services

The Corporate-Wide Services (unicwsd) daemon/service replicates data between nodes, provides e-mail notification through an SMTP mail server and wireless notification through Oracle's wireless services. It also processes server side reminders and synchronizes the calendar database with the directory server when necessary.

unicwsd communicates with other nodes using TCP/IP sockets and named pipe connections. These links provide fast communication. The TCP/IP sockets and named pipe connections are provided and managed by the Synchronous Network Connection daemon/service (unisncd).

By default, two unicwsd daemons/services are created when the calendar is started, one for the replication of calendar data between nodes and one for all the other tasks (mail, reminders, etc.).

Configuration

For each of the following activities one CWS (Corporate-Wide Services) job can be enabled:

Replication: Node to node data replication

Messaging: Messaging requests for e-mail, wireless alerts, iMeeting, etc.

SSR: Server side reminders

Snooze: Handling snoozed requests

DirSync: Synchronizing with Oracle Internet Directory

EventSync: Updating synchronization data for events recently modified.

GALSync: Synchronizing the Global Access List.

A CWS task is a process that handles one or more jobs.

The server can be configured to support one or many separate processes per job using server parameter [CWS]prioritizedjobs and the maximum number of nodes a Corporate Wide Server task can service can be configured using [CWS] maxnodepertask. For more details on theses parameters, see Appendix C, "Server Parameters" of the Oracle Calendar Reference Manual.

For more information concerning the configuration of the Corporate-Wide Services daemon/service, including a list of all [CWS] parameters and their default values, see Appendix C, "Server Parameters" of the Oracle Calendar Reference Manual. Unless otherwise indicated, the Corporate-Wide Services must be re-started in order for a configuration change to take effect.

Processing

Whenever a client requires a service from the Corporate-Wide Services daemon, a request is put in a local queue and the appropriate unicwsd will service it depending on the type of the request. One of the unicwsd daemon/service processes the requests by reading them from the queue.

When a remote node is temporarily shut down, replication requests destined for that node are accumulated in the queue and tagged as on hold until the node becomes available again. Similarly, if for any reason, mail cannot be sent, mail notification requests will accumulate in the queue. The utility unireqdump can be used to output the set of requests currently in the queue of the Corporate-Wide Services daemon/service. For more information on the utility unireqdump, see Appendix E, "Utilities" of the Oracle Calendar Reference Manual.

Oracle Calendar Server Manager

The Calendar Server Manager or CSM (unicsmd) provides the capability for remote administration of the calendar server. The following administrative operations will use the services provided by the CSM:

In order to start a server remotely, the server must be in "stand-by" mode. In this mode, all daemons/services are stopped except for unicsmd which is left up and running and waiting for a remote calendar request. If a server is stopped completely (all daemons/services are stopped including unicsmd), it will not be possible to restart it remotely.

At installation, the CSM is configured with the parameters in the [CSM] section of the $ORACLE_HOME/ocal/misc/unison.ini file. The port parameter specifies the TCP/IP port on which the unicsmd daemon/service listens. This port needs to be opened (as is the port for uniengd) on any firewall for remote management of the server to be possible. Remote management of the server can be disabled by setting the enable parameter to FALSE.

In a standalone installation of the calendar server, the password parameter must be specified in the [CSM] section of the unison.ini file. This will be the password to access the local calendar server via unicsmd from a remote location. In configurations where the complete Collaboration Suite has been installed, the SYSOP password is used. The ACE (Authentication, Compression and Encryption) framework is not used when authenticating remotely using the CSM. For more information on ACE, see Appendix C, "Security".


Note:

There is only one password for remote access. Two administrators who remotely manage the same server will use the same password, and there will be no way of determining who did what.


The calendar utilities that use the services of the CSM are unistart, unistop, unistatus and the Calendar Administrator. When accessing a remote server, the local utility is invoked with the host name and port number of the remote server's CSM which must be specified using the -csmhost option. The CSM password (for standalone installations) or SYSOP password of the remote server must be supplied; for example:

% unistart -n 120 -csmhost hercules:7688
Passwd:

The local utility communicates with the remote CSM which will invoke the remote version of the utility. Error codes and output produced by the remote utility will be passed back and displayed by the local utility. However, any log output will only be written to the log files on the remote host. You will need to sign-in to the remote host directly to access the log files. For more information on unistart, unistop, and unistatus, see Appendix E, "Utilities" of the Oracle Calendar Reference Manual.

The Calendar Administrator can also be used to manage a calendar server remotely. As with the utilities, you will be required to enter the remote host name, CSM port and password.

Note that the CSM is an optional part of the calender server. Whether unicsmd is up or down, it has no impact on the local calendar operations. In case of CSM failure, normal calendaring operations will not be affected. Only the ability to manage the server remotely will be affected.

The remote administration is cross-platform: a calendar server on a Windows NT system can be started remotely from a calendar server on a Solaris machine and vice-versa.

Calendar Server Architecture

When the Collaboration Suite is installed, the default configuration uses the Oracle Internet Directory to store user attributes. All nodes in a node network must use the same directory server. Figure 2-1 shows the Oracle Calendar internal architecture.

Figure 2-1 Calendar server internal architecture

Text description of calarch.gif follows.

Text description of the illustration calarch.gif

Initial Client Connection

For each client it accepts, the uniengd listener either forks a uniengd session process or creates a uniengd session thread. All subsequent requests from a client are sent to the client's dedicated uniengd session. This is referred to as a "persistent connection".


Note:

Web clients do not adhere to this model. Instead, the Web client application running on the Web server establishes a pool of persistent connections to the calendar server at startup. The client divides these connections among the users actively making requests through their Web browsers.


Client Requests

In the course of a user session, calendar and user information may be viewed, created, modified, or deleted. These operations involve either reads from, or writes to, node databases. The client's uniengd session handles reads and writes on the local node (the node containing the user) differently from reads and writes on remote nodes.

Reads and writes on the local node

To perform reads or writes on the local node, the client's uniengd session requests access to the node database ($ORACLE_HOME/ocal/db/<node name>) from the unilckd. When the unilckd grants access, the uniengd session performs the read or write operation. It then relinquishes access to the node database, and if necessary, returns data to the client.

Reads from a remote node

To read information from a remote node, the client's uniengd session requests a connection to the remote node from the unisncd. When the unisncd hands it a connection to that node, the client's uniengd session sends the read request to the uniengd server at the other end of the connection (see "Connections to Nodes" later in this chapter). The remote uniengd server then requests access to its local node database from its unilckd. When the unilckd grants access, the uniengd server retrieves the information, relinquishes access to the node database, and sends the information to the requesting uniengd session. The requesting uniengd session receives the information, returns the connection to the unisncd, and hands the information to the client.

Writes to a remote node

Writes to a remote node arise when the user adds, modifies, or deletes calendar and/or user information. In this case, the uniengd session places a request in the queue of the local node (see "Node Request Queue" later in this chapter for a discussion of the node queue). Another uniengd session associated with this local node services these requests in the same manner as reads on a remote node.

Connections to Nodes

unisncd establishes persistent connections to other nodes on startup, using information in the $ORACLE_HOME/ocal/misc/nodes.ini file to determine the number of connections to establish to each node. It establishes a connection by sending a request to the uniengd daemon/service (the uniengd daemon/service on the local host for nodes on the local machine, and the uniengd daemons/services on remote hosts for nodes on remote hosts). That uniengd daemon/service creates a uniengd session process or thread to handle requests to the specified node. A uniengd session sits on the end of each connection to a remote node. Each of these sessions obtains access to their node database from unilckd.

Node Request Queue

Each node has a request queue associated with it. This request queue is maintained within the node database and used by all uniengd sessions associated with the node. These request queues contain requests for alerts and e-mail notification, and requests for replication of data (resulting from creation, modification, and/or deletion of calendar information).

unicwsd manages the request queue of each node on the local host. On startup, unicwsd sends a request to the uniengd daemon/service for a uniengd session for each node on the local machine. The uniengd daemon/service then creates one uniengd session process or thread per node to service each node's request queue. The diagram shows one of these uniengd sessions.

unicwsd examines each request in the request queue and determines how to handle it. If the request is for a mail notification, it hands the mail to the mail server. Similarly, it passes requests for wireless reminders and notifications to the Oracle9iAS Wireless server. If the request is for a write to a remote node, it hands the request to the uniengd session servicing the request queue of the node. unicwsd also deletes redundant requests in order to optimize performance.

Connections to the Directory Server

On startup, unisncd reads the numconnect parameter from the [YOURHOSTNAME, unidas] section of the $ORACLE_HOME/ocal/misc/unison.ini file to determine the number of connections to establish to the LDAP directory server. It then sends a request to the unidasd daemon/service. The unidasd daemon/service spawns a unidasd server for each of the requested connections. When a uniengd session requires directory server access, it requests a connection to a unidasd server from unisncd. unisncd passes a connection to the requesting uniengd session, which retrieves the necessary information from unidasd and subsequently returns the connection to unisncd.