Oracle8i Concepts
Release 2 (8.1.6)

Part Number A76965-01

Library

Product

Contents

Index

Go to previous page Go to next page

30
Distributed Database Concepts

This chapter describes the basic concepts and terminology of Oracle's distributed database architecture. The chapter includes:

Introduction to Distributed Database Architecture

A distributed database system allows applications to access data from local and remote databases. In a homogenous distributed system, each database is an Oracle database. In a heterogeneous distributed system, at least one of the databases is a non-Oracle database. Distributed database uses a client-server architecture to process information requests.

This section contains the following topics:

Homogenous Distributed Database Systems

A homogenous distributed database system is a network of two or more Oracle databases that reside on one or more machines. Figure 30-1 illustrates a distributed system that connects three databases: HQ, MFG, and SALES. An application can simultaneously access or modify the data in several databases in a single distributed environment. For example, a single query on local database MFG can retrieve joined data from the PRODUCTS table on the local database and the DEPT table on the remote HQ database.

For a client application, the location and platform of the databases are transparent. You can also create synonyms for remote objects in the distributed system so that users can access them with the same syntax as local objects. For example, if you are connected to database MFG yet want to access data on database HQ, creating a synonym on MFG for the remote DEPT table allows you to issue this query:

SELECT * FROM dept;

In this way, a distributed system gives the appearance of native data access. Users on MFG do not have to know that the data they access resides on remote databases.

Figure 30-1 Homogeneous Distributed Database


An Oracle distributed database system can incorporate Oracle databases of different versions. All supported releases of Oracle can participate in a distributed database system. Nevertheless, the applications that work with the distributed database must understand the functionality that is available at each node in the system--for example, a distributed database application cannot expect an Oracle7 database to understand the object SQL extensions that are only available with Oracle8i.

Distributed Databases Vs. Distributed Processing

The terms distributed database and distributed processing are closely related, yet have distinct meanings:

Distributed Database 

A set of databases in a distributed system that can appear to applications as a single data source.  

Distributed Processing 

The operations that occurs when an application distributes its tasks among different computers in a network. For example, a database application typically distributes front-end presentation tasks to client computers and allows a back-end database server to manage shared access to a database. Consequently, a distributed database application processing system is more commonly referred to as a client-server database application system. 

Oracle distributed database systems employ a distributed processing architecture. For example, an Oracle server acts as a client when it requests data that another Oracle server manages.

Distributed Databases Vs. Replicated Databases

The terms distributed database system and database replication are related, yet distinct. In a pure (i.e., non-replicated) distributed database, the system manages a single copy of all data and supporting database objects. Typically, distributed database applications use distributed transactions to access both local and remote data and modify the global database in real-time.


Note:

This book discusses only pure distributed databases. 


The term replication refers to the operation of copying and maintaining database objects in multiple databases belonging to a distributed system. While replication relies on distributed database technology, database replication offers applications benefits that are not possible within a pure distributed database environment.

Most commonly, replication is used to improve local database performance and protect the availability of applications because alternate data access options exist. For example, an application may normally access a local database rather than a remote server to minimize network traffic and achieve maximum performance. Furthermore, the application can continue to function if the local server experiences a failure, but other servers with replicated data remain accessible.

See Also:

Oracle8i Replication for more information about Oracle's replication features 

Heterogeneous Distributed Database Systems

In a heterogeneous distributed database system, at least one of the databases is a non-Oracle system. To the application, the heterogeneous distributed database system appears as a single, local, Oracle database; the local Oracle server hides the distribution and heterogeneity of the data.

The Oracle server accesses the non-Oracle system using Oracle8i Heterogeneous Services and a system-specific transparent gateway. For example, if you include a DB2 database in an Oracle distributed system, you need to obtain a DB2-specific transparent gateway so that the Oracle databases in the system can communicate with it.

See Also:

Oracle8i Distributed Database Systems for more information about Oracle's replication features 

Heterogeneous Services

Heterogeneous Services are an integrated component within the Oracle8i server and the enabling technology for the current suite of Open Gateway products. Heterogeneous Services provide the common architecture and administration mechanisms for Oracle gateway products and other heterogeneous access facilities. Also, they provide upwardly compatible functionality for users of most of the earlier Oracle Open Gateway releases.

See Also:

Oracle8i Distributed Database Systems for an overview of heterogeneous services 

Transparent Gateway Agents

For each non-Oracle system that you want to access, Heterogeneous Services require a transparent gateway agent to access the specified non-Oracle system. The transparent gateway agent facilitates communication between Oracle and non-Oracle databases and uses the Heterogeneous Services component in the Oracle server. The agent executes SQL, procedural, and transactional requests at the non-Oracle system on behalf of the Oracle server.

See Also:

Oracle Open Gateway Installation and User's Guide for detailed information on installation and configuration 

Features

The features of the Heterogeneous Services include the following:

Feature  Purpose 

Distributed Transactions 

Allows a transaction to span both Oracle and non-Oracle systems, while still guaranteeing transaction consistency. 

SQL Translations 

Integrates data from non-Oracle systems into the Oracle environment as if the data is stored in one local database. SQL statements are transparently transformed into SQL statement understood by the non-Oracle system.  

Procedural Access 

Allows access to procedural systems, e.g., messaging from an Oracle8i server using PL/SQL remote procedure calls. 

Data Dictionary Translations 

Makes a non-Oracle system appear as an Oracle server. SQL statements containing references to Oracle's data dictionary tables are transformed into SQL statements containing references to a non-Oracle system's data dictionary tables. 

Pass-Through SQL 

Gives application programmers direct access to a non-Oracle system from an Oracle application using the non-Oracle system's SQL dialect. 

Stored Procedure Access 

Allows access to stored procedures in SQL-based non-Oracle systems as if they were PL/SQL remote procedures. 

NLS Support 

Supports multi-byte character sets, and translates character sets between a non-Oracle system and the Oracle8i server. 

Multi-Threaded Agents 

Takes advantage of your operating system's threading capabilities by reducing the number of required processes. 

Agent Self-Registration 

Automates the updating of Heterogeneous Services configuration data on remote hosts, ensuring correct operation over heterogeneous database links. 


Note:

Not all listed features are necessarily supported by your Heterogeneous Services agent or Oracle Gateway. See your system-specific documentation for supported features. 


Client-Server Database Architecture

A database server is the Oracle software managing a database, and a client is an application that requests information from a server. Each computer in a network is a node that can host one or more databases. Each node in a distributed database system can act as a client, a server, or both, depending on the situation.

In Figure 30-2, the host for the HQ database is acting as a database server when a statement is issued against its local data (for example, the second statement in each transaction issues a statement against the local DEPT table), but is acting as a client when it issues a statement against remote data (for example, the first statement in each transaction is issued against the remote table EMP in the SALES database).

Figure 30-2 An Oracle Distributed Database System


Direct and Indirect Connections

A client can connect directly or indirectly to a database server. A direct connection occurs when a client connects to a server and accesses information from a database contained on that server. For example, if you connect to the HQ database and access the DEPT table on this database as in Figure 30-2, you can issue the following:

SELECT * FROM dept;

This query is direct because you are not accessing an object on a remote database.

In contrast, an indirect connection occurs when a client connects to a server and then accesses information contained in a database on a different server. For example, if you connect to the HQ database but access the EMP table on the remote SALES database as in Figure 30-2, you can issue the following:

SELECT * FROM emp@sales;

This query is indirect because the object you are accessing is not on the database to which you are directly connected.

Database Links

The central concept in distributed database systems is a database link. A database links is a connection between two physical database servers that allows a client to access them as one logical database.

This section contains the following topics:

What Are Database Links?

A database link is a pointer that defines a one-way communication path from an Oracle database server to another database server. The link pointer is actually defined as an entry in a data dictionary table. To access the link, you must be connected to the local database that contains the data dictionary entry.

A database link connection is one-way in the sense that a client connected to local database A can use a link stored in database A to access information in remote database B, but users connected to database B cannot use the same link to access data in database A. If local users on database B want to access data on database A, they must define a link that is stored in the data dictionary of database B.

A database link connection allows local users to access data on a remote database. For this connection to occur, each database in the distributed system must have a unique global database name in the network domain. The global database name uniquely identifies a database server in a distributed system.

Figure 30-3 shows an example of user SCOTT accessing the EMP table on the remote database with the global name HQ.ACME.COM:

Figure 30-3 Database Link


Database links are either private or public. If they are private, only the user who created the link has access; if they are public, all database users have access.

One principal difference among database links is the way that connections to a remote database are made. Users accessing a remote database using a:

Create database links using the CREATE DATABASE LINK statement. After a link is created, you can use it to specify schema objects in SQL statements.

What Are Shared Database Links?

A shared database link is a link between a local server process and the remote database. The link is shared because multiple client processes can use the same link simultaneously.

When a local database is connected to a remote database through a database link, either database can run in dedicated or multi-threaded server (MTS) mode. The following table illustrates the possibilities:

Local Database Mode  Remote Database Mode 

Dedicated 

Dedicated 

Dedicated 

Multi-threaded 

Multi-threaded 

Dedicated 

Multi-threaded 

Multi-threaded 

A shared database link can exist in any of these four configurations. Shared links differ from standard database links in the following ways:

Why Use Database Links?

The great advantage of database links is that they allow users to access another user's objects in a remote database so that they are bounded by the privilege set of the object's owner. In other words, a local user can access a link to a remote database without having to be a user on the remote database.

For example, assume that employees submit expense reports to Accounts Payable (A/P), and further suppose that a user using an A/P application needs to retrieve information about employees from the HR database. The A/P users should be able to connect to the HR database and execute a stored procedure in the remote HR database that retrieves the desired information. The A/P users should not need to be HR database users to do their jobs; they should only be able to access HR information in a controlled way as limited by the procedure.

Database links allow you to grant limited access on remote databases to local users. By using current user links, you can create centrally managed global users whose password information is hidden from both administrators and non-administrators. For example, A/P users can access the HR database as SCOTT, but unlike fixed user links, SCOTT's credentials are not stored where database users can see them.

By using fixed user links, you can create non-global users whose password information is stored in unencrypted form in the LINK$ data dictionary table. Fixed user links are easy to create and require low overhead because there are no SSL or directory requirements, but a security risk results from the storage of password information in the data dictionary.

See Also:

Oracle8i Distributed Database Systems for an explanation of database link users and how to hide passwords from non-administrators 

Global Database Names in Database Links

To understand how a database link works, you must first understand what a global database name is. Each database in a distributed database is uniquely identified by its global database name. Oracle forms a database's global database name by prefixing the database's network domain, specified by the DB_DOMAIN initialization parameter at database creation, with the individual database name, specified by the DB_NAME initialization parameter.

For example, Figure 30-4 illustrates a representative hierarchical arrangement of databases throughout a network.

Figure 30-4 Network Directories and Global Database Names


The name of a database is formed by starting at the leaf of the tree and following a path to the root. For example, the MFTG database is in DIVISION3 of the ACME_TOOLS branch of the COM domain. The global database name for MFTG is created by concatenating the nodes in the tree as follows:

MFTG.DIVISION3.ACME_TOOLS.COM

While several databases can share an individual name, each database must have a unique global database name. For example, the network domains US.AMERICAS.ACME_AUTO.COM and UK.EUROPE.ACME_AUTO.COM each contain a SALES database. The global database naming system distinguishes the SALES database in the AMERICAS division from the SALES database in the EUROPE division as follows:

SALES.US.AMERICAS.ACME_AUTO.COM
SALES.UK.EUROPE.ACME_AUTO.COM

See Also:

Oracle8i Distributed Database Systems to learn how to specify and change global database names 

Names for Database Links

Typically, a database link has the same name as the global database name of the remote database it references. For example, if the global database name of a database is SALES.US.ORACLE.COM, then the database link is also called SALES.US.ORACLE.COM.

When you set the initialization parameter GLOBAL_NAMES to TRUE, Oracle ensures that the name of the database link is the same as the global database name of the remote database. For example, if the global database name for HQ is HQ.ACME.COM, and GLOBAL_NAMES is TRUE, then the link name must be called HQ.ACME.COM. Note that Oracle checks the domain part of the global database name as stored in the data dictionary, not the DB_DOMAIN setting in the init.ora file (see Oracle8i Distributed Database Systems).

If you set the initialization parameter GLOBAL_NAMES to FALSE, you are not required to use global naming. You can then name the database link whatever you want. For example, you can name a database link to HQ.ACME.COM as FOO.


Note:

Oracle Corporation recommends that you use global naming because many useful features, including Oracle Advanced Replication, require global naming be enforced.  


After you have enabled global naming, database links are essentially transparent to users of a distributed database because the name of a database link is the same as the global name of the database to which the link points. For example, the following statement creates a database link in the local database to remote database SALES:

CREATE PUBLIC DATABASE LINK sales.division3.acme.com USING 'sales1';

See Also:

Oracle8i Reference for more information about specifying the initialization parameter GLOBAL_NAMES 

Types of Database Links

Oracle allows you to create private, public, and global database links. These basic link types differ according to which users are allowed access to the remote database:

Type  Owner  Description 

Private  

User who created the link. Access ownership data via DBA_DB_LINKS or ALL_DB_LINKS. 

Creates link in a specific schema of the local database. Only the owner of a private database link or PL/SQL subprograms in the schema can use a private database link to access database objects in the corresponding remote database. 

Public  

User called PUBLIC. Access ownership data via DBA_DB_LINKS or ALL_DB_LINKS. 

Creates a database-wide link. All users and PL/SQL subprograms in the database can use the link to access database objects in the corresponding remote database. 

Global  

User called PUBLIC. Access ownership data via DBA_DB_LINKS or ALL_DB_LINKS. 

Creates a network-wide link. When an Oracle network uses Oracle Names, the names servers in the system automatically create and manage global database links for every Oracle database in the network. All users and PL/SQL subprograms in any database can use a global link to access database objects in the corresponding remote database. 

Determining the type of database links to employ in a distributed database depends on the specific requirements of the applications using the system. Consider these advantages and disadvantages:

Private Database Link 

This link is more secure than a public or global link, because only the owner of the private link, or subprograms within the same schema, can use the link to access the remote database. 

Public Database Link 

When many users require an access path to a remote Oracle database, you can create a single public database link for all users in a database. 

Global Database Link 

When an Oracle network uses Oracle Names, an administrator can conveniently manage global database links for all databases in the system. Database link management is centralized and simple. 

See Also:

Oracle8i Distributed Database Systems to learn how to create different types of database links sand to learn how to access information about links 

Users of Database Links

When creating the link, you determine which user should connect to the remote database to access the data. The following table explains the differences between the categories of users involved in database links:

User Type  Meaning  Sample Link Creation Syntax 

Connected user 

A local user accessing a database link in which no fixed username and password have been specified. If SYSTEM accesses a public link in a query, then the connected user is SYSTEM, and Oracle connects to the SYSTEM schema in the remote database.

Note: A connected user does not have to be the user who created the link, but is any user who is accessing the link.  

CREATE PUBLIC DATABASE LINK hq USING 'hq'; 

Current user 

A global user in a CURRENT USER database link. The global user must be authenticated by an X.509 certificate and a private key and be a user on both databases involved in the link. Current user links are an aspect of the Oracle Advanced Security (OAS) option.

See Also: Oracle Advanced Security Administrator's Guide for more information about global security. 

CREATE PUBLIC DATABASE LINK hq CONNECT TO CURRENT_USER using 'hq'; 

Fixed user 

A user whose username/password is part of the link definition. If a link includes a fixed user, then the fixed user's username and password are used to connect to the remote database. 

CREATE PUBLIC DATABASE LINK hq CONNECT TO jane IDENTIFIED BY doe USING 'hq'; 

See Also:

Oracle8i Distributed Database Systems to learn how to specify users where creating links 

Connected User Database Links

Connected user links have no connect string associated with them. The advantage of a connected user link is that a user referencing the link connects to the remote database as the same user. Furthermore, because no connect string is associated with the link, no password is stored in clear text in the data dictionary.

Connected user links have some disadvantages. Because these links require users to have accounts and privileges on the remote databases to which they are attempting to connect, they require more privilege administration for administrators. Also, giving users more privileges than they need violates the fundamental security concept of least privilege: users should only be given the least privilege they need to perform their jobs.

The ability to use connected user database link depends on several factors, chief among them whether the user is authenticated by Oracle using a password, or externally authenticated by the operating system or a network authentication service. If the user is externally authenticated, then the ability to use a connected user link also depends on whether the remote database accepts remote authentication of users, which is set by the REMOTE_OS_AUTHENT initialization parameter.

The REMOTE_OS_AUTHENT parameter operates as follows:

If REMOTE_OS_AUTHENT is  Then 

TRUE for the remote database 

An externally-authenticated user can connect to the remote database using a connected user database link. 

FALSE for the remote database 

An externally-authenticated user cannot connect to the remote database using a connected user database link unless a secure protocol is used or a network authentication service supported by the Oracle Advanced Security option is used.  

Fixed User Database Links

A benefit of a named link is that it connects a user in a primary database to a remote database with the security context of the user in the connect string. For example, local user JOE can create a public database link in JOE's schema that specifies the fixed user SCOTT with password TIGER. If JANE uses the fixed user link in a query, then JANE is the user on the local database, but she connects to the remote database as SCOTT/TIGER.

Fixed user links have a username and password associated with the connect string. The username and password are stored in unencrypted form in the data dictionary in the LINK$ table. This fact creates a possible security weakness of fixed user database links: a user with the SELECT ANY TABLE privilege has access to the data dictionary so long as the O7_DICTIONARY_ACCESSIBILITY initialization parameter is set to TRUE, and thus the authentication associated with a fixed user is compromised.


Note:

The default value for O7_DICTIONARY_ACCESSIBILITY is FALSE. 


For an example of this security problem, assume that JANE does not have privileges to use a private link that connects to the HR database as SCOTT/TIGER, but has SELECT ANY TABLE privilege on a database in which the O7_DICTIONARY_ACCESSIBILITY initialization parameter is set to TRUE. She can select from LINK$ and read that the connect string to HR is SCOTT/TIGER. If JANE has an account on the host on which HR resides, then she can connect to the host and then connect to HR as SCOTT using the password TIGER. She will have all SCOTT's privileges if she connects locally and any audit records will be recorded as if she were SCOTT.

Current User Database Links

Current user database links make use of a global user. A global user must be authenticated by an X.509 certificate and a private key and be a user on both databases involved in the link.

The user invoking the CURRENT_USER link does not have to be a global user. For example, if JANE is authenticated by password to the Accounts Payable database, she can access a stored procedure to retrieve data from the HR database. The procedure uses a current user database link, which connects her to HR as global user SCOTT. SCOTT is a global user and thereby authenticated through a certificate and private key over SSL, but JANE is not.

Note that current user database links have these consequences:

Creation of Database Links: Examples

Create database links using the CREATE DATABASE LINK statement. The table gives examples of SQL statements that create database links in a local database to the remote SALES.US.AMERICAS.ACME_AUTO.COM database:

SQL Statement  Connects To Database  Connects As  Link Type 

CREATE DATABASE LINK sales.us.americas.acme_auto.com USING 'sales_us'; 

SALES using net service name SALES_US 

Connected user 

Private connected user 

CREATE DATABASE LINK foo CONNECT TO CURRENT_USER USING 'am_sls'; 

SALES using service name AM_SLS 

Current global user 

Private current user 

CREATE DATABASE LINK sales.us.americas.acme_auto.com CONNECT TO scott IDENTIFIED BY tiger USING 'sales_us'; 

SALES using net service name SALES_US 

SCOTT using password TIGER 

Private fixed user  

CREATE PUBLIC DATABASE LINK sales CONNECT TO scott IDENTIFIED BY tiger USING 'rev'; 

SALES using net service name REV 

SCOTT using password TIGER 

Public fixed user  

CREATE SHARED PUBLIC DATABASE LINK sales.us.americas.acme_auto.com CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY anupam IDENTIFIED BY bhide USING 'sales'; 

SALES using net service name SALES 

SCOTT using password TIGER, authenticated as ANUPAM using password BHIDE 

Shared public fixed user  

See Also:

 

Schema Objects and Database Links

After you have created a database link, you can execute SQL statements that access objects on the remote database. For example, to access remote object EMP using database link FOO, you can issue:

SELECT * FROM emp@foo;

Constructing properly formed object names using database links is an essential aspect of data manipulation in distributed systems.

Naming of Schema Objects Using Database Links

Oracle uses the global database name to name the schema objects globally using the following scheme:

schema.schema_object@global_database_name

where:

schema
 

is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema. 

schema_object
 

is a logical data structure like a table, index, view, synonym, procedure, package, or a database link. 

global_database_name
 

is the name that uniquely identifies a remote database. This name must be the same as the concatenation of the remote database's initialization parameters DB_NAME and DB_DOMAIN, unless the parameter GLOBAL_NAMES is set to FALSE, in which case any name is acceptable. 

For example, using a database link to database SALES.DIVISION3.ACME.COM, a user or application can reference remote data as follows:

SELECT * FROM scott.emp@sales.division3.acme.com;  # emp table in scott's schema
SELECT loc FROM scott.dept@sales.division3.acme.com;

If GLOBAL_NAMES is set to FALSE, then you can use any name for the link to SALES.DIVISION3.ACME.COM. For example, you can call the link FOO. Then, you can access database as follows:

SELECT name FROM scott.emp@foo; # link name different from global name

Synonyms for Schema Objects

Oracle allows you to create synonyms so that you can hide the database link name from the user. A synonym allows access to a table on a remote database using the same syntax that you would use to access a table on a local database. For example, assume you issue the following query against a table in a remote database:

SELECT * FROM emp@hq.acme.com;

You can create the synonym EMP for EMP@HQ.ACME.COM so that you can issue the following query instead to access the same data:

SELECT * FROM emp;

See Also:

Oracle8i Distributed Database Systems to learn how to create synonyms for objects specified using database links 

Schema Object Name Resolution

To resolve application references to schema objects (a process called name resolution), Oracle forms object names hierarchically. For example, Oracle guarantees that each schema within a database has a unique name, and that within a schema each object has a unique name. As a result, a schema object's name is always unique within the database. Furthermore, Oracle resolves application references to an object's local name.

In a distributed database, a schema object such as a table is accessible to all applications in the system. Oracle extends the hierarchical naming model with global database names to effectively create global object names and resolve references to the schema objects in a distributed database system. For example, a query can reference a remote table by specifying its fully qualified name, including the database in which it resides.

For example, assume that you connect to the local database as user SYSTEM:

CONNECT system/manager@sales1

You then issue the following statements using database link HQ.ACME.COM to access objects in the SCOTT and JANE schemas on remote database HQ:

SELECT * FROM scott.emp@hq.acme.com;
INSERT INTO jane.accounts@hq.acme.com (acc_no, acc_name, balance)
  VALUES (5001, 'BOWER', 2000);
UPDATE jane.accounts@hq.acme.com
  SET balance = balance + 500;
DELETE FROM jane.accounts@hq.acme.com
  WHERE acc_name = 'BOWER';

Database Link Restrictions

You cannot perform the following operations via database links:

Distributed Database Administration

The following sections explain some of the topics relating to database management in an Oracle distributed database system:

Site Autonomy

Site autonomy means that each server participating in a distributed database is administered independently from all other databases. Although several databases can work together, each database is a separate repository of data that is managed individually. Some of the benefits of site autonomy in an Oracle distributed database include:

Although Oracle allows you to manage each database in a distributed database system independently, you should not ignore the global requirements of the system. For example, you may need to:

Distributed Database Security

Oracle supports all of the security features that are available with a non-distributed database environment for distributed database systems, including:

The following sections explain some additional topics to consider when configuring an Oracle distributed database system:

Authentication Through Database Links

Database links are either private or public, authenticated or non-authenticated. You create public links by specifying the PUBLIC keyword in the link creation statement. For example, you can issue:

CREATE PUBLIC DATABASE LINK foo USING 'sales';

You create authenticated links by specifying the CONNECT TO clause, AUTHENTICATED BY clause, or both clauses together in the database link creation statement. For example, you can issue:

CREATE DATABASE LINK sales CONNECT TO scott IDENTIFIED BY tiger USING 'sales';
CREATE SHARED PUBLIC DATABASE LINK sales CONNECT TO mick IDENTIFIED BY jagger 
     AUTHENTICATED BY david IDENTIFIED BY bowie USING 'sales';

This table describes how users access the remote database through the link:

Link Type  Authenticated?  Security Access 

Private 

No 

When connecting to the remote database, Oracle uses security information (userid/password) taken from the local session. Hence, the link is a connected user database link. Passwords must be synchronized between the two databases. 

Private 

Yes 

The userid/password is taken from the link definition rather than from the local session context. Hence, the link is a fixed user database link.

This configuration allows passwords to be different on the two databases, but the local database link password must match the remote database password. The password is stored in clear text on the local system catalog, adding a security risk. 

Public 

No 

Works the same as a private non-authenticated link, except that all users can reference this pointer to the remote database.  

Public 

Yes 

All users on the local database can access the remote database and all use the same userid/password to make the connection. Also, the password is stored in clear text in the local catalog, so you can see the password if you have sufficient privileges in the local database.  

Authentication Without Passwords

When using a connected user or current user database link, you can use an external authentication source such as Kerberos to obtain end-to-end security. In end-to-end authentication, credentials are passed from server to server and can be authenticated by an database server belonging to the same domain. For example, if JANE is authenticated externally on a local database, and wants to use a connected user link to connect as herself to a remote database, the local server passes the security ticket to the remote database.

Supporting User Accounts and Roles

In a distributed database system, you must carefully plan the user accounts and roles that are necessary to support applications using the system. Note that:

As you create the database links for the nodes in a distributed database system, determine which user accounts and roles each site needs to support server-to-server connections that use the links.

In a distributed environment, users typically require access to many network services. When you must configure separate authentications for each user to access each network service, security administration can become unwieldy, especially for large systems.

See Also:

Oracle8i Distributed Database Systems for more information about the user accounts that must be available to support different types of database links in the system 

Centralized User and Privilege Management

Oracle provides different ways for you to manage the users and privileges involved in a distributed system. For example, you have these options:

Schema-Dependent Global Users

One option for centralizing user and privilege management is to create the following:

For example, you can create a global user called FRED with the following SQL statement:

CREATE USER fred IDENTIFIED GLOBALLY AS 'CN=fred adams,O=Oracle,C=England';

This solution allows a single global user to be authenticated by a centralized directory.

The schema-dependent global user solution has the consequence that you must create a user called FRED on every database that this user must access. Because most users need permission to access an application schema but do not need their own schemas, the creation of a separate account in each database for every global user creates significant overhead. Because of this problem, Oracle also supports schema-independent users, which are global users that an access a single, generic schema in every database.

Separation of Global Users from Database Schema

Oracle8i supports functionality that allows a global user to be centrally managed by an enterprise directory service. Users who are managed in the directory are called enterprise users. This directory contains information about:

The administrator of each database is not required to create a global user account for each enterprise user on each database to which the enterprise user needs to connect. Instead, multiple enterprise users can connect to the same database schema, called a shared schema.

For example, suppose JANE, BILL, and SCOTT all use a human resources application. The HR application objects are all contained in the GUEST schema on the HR database. In this case, you can create a local global user account to be used as a shared schema. This global username, that is, shared schema name, is GUEST. JANE, BILL, and SCOTT are all created as enterprise users in the directory service. They are also mapped to the HRAPP schema in the directory, and can be assigned different authorizations in the HR application.

Figure 30-5 illustrates an example of global user security using the enterprise directory service:

Figure 30-5 Global User Security


Assume that the enterprise directory service contains the following information on enterprise users for DB1 and DB2:

Database  Role  Schema  Enterprise Users 

DB1 

clerk1 

guest 

bill

scott 

DB2 

clerk2 

guest 

jane

scott 

Also, assume that the local administrators for DB1 and DB2 have issued statements as follows:

Database  CREATE Statements 

DB1 

CREATE USER guest IDENTIFIED GLOBALLY AS '';
CREATE ROLE clerk1 GRANT select ON emp;
CREATE PUBLIC DATABASE LINK db2_link CONNECT AS CURRENT_USER USING 
'db2';
 

DB2 

CREATE USER guest IDENTIFIED GLOBALLY;
CREATE ROLE clerk2 GRANT select ON dept;
 

Assume that enterprise user SCOTT requests a connection to local database DB1 in order to execute a distributed transaction involving DB2. The following steps occur (not necessarily in this exact order):

  1. Enterprise user SCOTT and database DB1 mutually authenticate one another using SSL.

  2. SCOTT issues the following statement:

    SELECT e.ename, d.loc 
    FROM emp e, dept@db2_link d
    WHERE e.deptno=d.deptno
    
    
  3. Databases DB1 and DB2 mutually authenticate one another using SSL.

  4. DB1 queries the enterprise directory service to determine whether enterprise user SCOTT has access to DB1, and discovers SCOTT can access local schema GUEST using role CLERK1.

  5. Database DB2 queries the enterprise directory service to determine whether enterprise user SCOTT has access to DB2, and discovers SCOTT can access local schema GUEST using role CLERK2.

  6. Enterprise user SCOTT logs into DB2 to schema GUEST with role CLERK2 and issues a SELECT to obtain the required information and transfer it to DB1.

  7. DB1 receives the requested data from DB2 and returns it to the client SCOTT.

    See Also:

    for more information about enterprise user security 

Data Encryption

The Oracle Advanced Security option also enables Net8 and related products to use network data encryption and checksumming so that data cannot be read or altered. It protects data from unauthorized viewing by using the RSA Data Security RC4 or the Data Encryption Standard (DES) encryption algorithm.

To ensure that data has not been modified, deleted, or replayed during transmission, the security services of the Oracle Advanced Security option can generate a cryptographically secure message digest and include it with each packet sent across the network.

See Also:

for more information about these and other features of the Oracle Advanced Security option 

Auditing Database Links

You must always perform auditing operations locally. That is, if a user acts in a local database and accesses a remote database through a database link, the local actions are audited in the local database, and the remote actions are audited in the remote database--provided that appropriate audit options are set in the respective databases.

The remote database cannot determine whether a successful connect request and subsequent SQL statements come from another server or from a locally connected client. For example, assume the following:

Actions performed during the remote database session are audited as if SCOTT were connected locally and performing the same actions there. You must set audit options in the remote database to capture the actions of the username--in this case, SCOTT--embedded in the link if the desired effect is to audit what JANE is doing in the remote database.


Note:

You can audit the global username for global users.  


You cannot set local auditing options on remote objects. Therefore, you cannot audit use of a database link, although access to remote objects can be audited on the remote database.

Administration Tools

The database administrator has several choices for tools to use when managing an Oracle distributed database system:

Enterprise Manager

Enterprise Manager is Oracle's database administration tool. The graphical component of Enterprise Manager (Enterprise Manager/GUI) allows you to perform database administration tasks with the convenience of a graphical user interface (GUI). The non-graphical component of Enterprise Manager provides a command line interface.

Enterprise Manager provides administrative functionality via an easy-to-use interface. You can use Enterprise Manager to:

Third-Party Administration Tools

Currently more than 60 companies produce more than 150 products that help manage Oracle databases and networks, providing a truly open environment.

SNMP Support

Besides its network administration capabilities, Oracle Simple Network Management Protocol (SNMP) support allows an Oracle server to be located and queried by any SNMP-based network management system. SNMP is the accepted standard underlying many popular network management systems such as:

Transaction Processing in a Distributed System

A transaction is a logical unit of work constituted by one or more SQL statements executed by a single user. A transaction begins with the user's first executable SQL statement and ends when it is committed or rolled back by that user.

A remote transaction contains only statements that access a single remote node. A distributed transaction contains statements that access more than one node.

The following sections define important concepts in transaction processing and explain how transactions access data in a distributed database:

Remote SQL Statements

A remote query statement is a query that selects information from one or more remote tables, all of which reside at the same remote node. For example, the following query accesses data from the DEPT table in the SCOTT schema of the remote SALES database:

SELECT * FROM scott.dept@sales.us.americas.acme_auto.com;

A remote update statement is an update that modifies data in one or more tables, all of which are located at the same remote node. For example, the following query updates the DEPT table in the SCOTT schema of the remote SALES database:

UPDATE scott.dept@mktng.us.americas.acme_auto.com
  SET loc = 'NEW YORK'
  WHERE deptno = 10;


Note:

A remote update can include a subquery that retrieves data from one or more remote nodes, but because the update happens at only a single remote node, the statement is classified as a remote update.  


Distributed SQL Statements

A distributed query statement retrieves information from two or more nodes. For example, the following query accesses data from the local database as well as the remote SALES database:

SELECT ename, dname
  FROM scott.emp e, scott.dept@sales.us.americas.acme_auto.com d
  WHERE e.deptno = d.deptno;

A distributed update statement modifies data on two or more nodes. A distributed update is possible using a PL/SQL subprogram unit such as a procedure or trigger that includes two or more remote updates that access data on different nodes. For example, the following PL/SQL program unit updates tables on the local database and the remote SALES database:

BEGIN
  UPDATE scott.dept@sales.us.americas.acme_auto.com
    SET loc = 'NEW YORK'
    WHERE deptno = 10;
  UPDATE scott.emp
    SET deptno = 11
    WHERE deptno = 10;
END;
COMMIT;

Oracle sends statements in the program to the remote nodes, and their execution succeeds or fails as a unit.

Shared SQL for Remote and Distributed Statements

The mechanics of a remote or distributed statement using shared SQL are essentially the same as those of a local statement. The SQL text must match, and the referenced objects must match. If available, shared SQL areas can be used for the local and remote handling of any statement or decomposed query.

Remote Transactions

A remote transaction contains one or more remote statements, all of which reference a single remote node. For example, the following transaction contains two statements, each of which accessing the remote SALES database:

UPDATE scott.dept@sales.us.americas.acme_auto.com
  SET loc = 'NEW YORK'
  WHERE deptno = 10;
UPDATE scott.emp@sales.us.americas.acme_auto.com
  SET deptno = 11
  WHERE deptno = 10;
COMMIT;

Distributed Transactions

A distributed transaction is a transaction that includes one or more statements that, individually or as a group, update data on two or more distinct nodes of a distributed database. For example, this transaction updates the local database and the remote SALES database:

UPDATE scott.dept@sales.us.americas.acme_auto.com
  SET loc = 'NEW YORK'
  WHERE deptno = 10;
UPDATE scott.emp
  SET deptno = 11
  WHERE deptno = 10;
COMMIT;


Note:

If all statements of a transaction reference only a single remote node, the transaction is remote, not distributed.  


Two-Phase Commit Mechanism

An database must guarantee that all statements in a transaction, distributed or non-distributed, either commit or rollback as a unit. The effects of an ongoing transaction should be invisible to all other transactions at all nodes; this transparency should be true for transactions that include any type of operation, including queries, updates, or remote procedure calls.

The general mechanisms of transaction control in a non-distributed database are discussed in the Oracle8i Concepts. In a distributed database, Oracle must coordinate transaction control with the same characteristics over a network and maintain data consistency, even if a network or system failure occurs.

Oracle's two-phase commit mechanism guarantees that all database servers participating in a distributed transaction either all commit or all roll back the statements in the transaction. A two-phase commit mechanism also protects implicit DML operations performed by integrity constraints, remote procedure calls, and triggers.

See Also:

Oracle8i Distributed Database Systems for more information about Oracle's two-phase commit mechanism 

Database Link Resolution

A global object name is an object specified using a database link. The essential components of a global object name are:

The following table shows the components of an explicitly specified global database object name:

Statement  Object  Database  Domain 

SELECT * FROM joan.dept@sales.acme.com 

dept 

sales 

acme.com 

SELECT * FROM emp@mktg.us.acme.com 

emp 

mktg 

us.acme.com 

Whenever a SQL statement includes a reference to a global object name, Oracle searches for a database link with a name that matches the database name specified in the global object name. For example, if you issue the following statement:

SELECT * FROM scott.emp@orders.us.acme.com;

Oracle searches for a database link called ORDERS.US.ACME.COM. Oracle performs this operation to determine the path to the specified remote database.

Oracle always searches for matching database links in the following order:

  1. Private database links in the schema of the user who issued the SQL statement.

  2. Public database links in the local database.

  3. Global database links (only if an Oracle Name Server is available).

Resolution When the Global Database Name Is Complete

Assume you issue the following SQL statement, which specifies a complete global database name:

SELECT * FROM emp@prod1.us.oracle.com

In this case, both the database name (PROD1) and domain components (US.ORACLE.COM) are specified, so Oracle searches for private, public, and global database links. Oracle searches only for links that match the specified global database name.

Resolution When the Global Database Name Is Partial

If any part of the domain is specified, Oracle assumes that a complete global database name is specified. If a SQL statement specifies a partial global database name (that is, only the database component is specified), Oracle appends the value in the DB_DOMAIN parameter to the value in the DB_NAME parameter to construct a complete name. For example, assume you issue the following statements:

CONNECT scott/tiger@locdb
SELECT * FROM scott.emp@orders;

If the network domain for LOCDB is US.ACME.COM, then Oracle appends this domain to ORDERS to construct the complete global database name of ORDERS.US.ACME.COM. Oracle searches for database links that match only the constructed global name. If a matching link is not found, Oracle returns an error and the SQL statement cannot execute.

Resolution When No Global Database Name Is Specified

If a global object name references an object in the local database and a database link name is not specified using the @ symbol, Oracle automatically detects that the object is local and does not search for or use database links to resolve the object reference. For example, assume you issue the following statements:

CONNECT scott/tiger@locdb
SELECT * from scott.emp;

Because the second statement does not specify a global database name using a database link connect string, Oracle does not search for database links.

Terminating the Search for Resolution

Oracle does not necessarily stop searching for matching database links when it finds the first match. Oracle must search for matching private, public, and network database links until it determines a complete path to the remote database (both a remote account and service name).

The first match determines the remote schema as illustrated in the following table:

If you  Then Oracle  As in the example 

Do not specify the CONNECT clause 

Uses a connected user database link 

CREATE DATABASE LINK k1 USING 'prod' 

Do specify the CONNECT TO ... IDENTIFIED BY clause 

Uses a fixed user database link 

CREATE DATABASE LINK k2 CONNECT TO scott IDENTIFIED BY tiger USING 'prod' 

Specify the CONNECT TO CURRENT_USER clause 

Uses a current user database link 

CREATE DATABASE LINK k3 CONNECT TO CURRENT_USER USING 'prod' 

Do not specify the USING clause 

Searches until it finds a link specifying a database string. If matching database links are found and a string is never identified, Oracle returns an error. 

CREATE DATABASE LINK k4 CONNECT TO CURRENT_USER 

After Oracle determines a complete path, it creates a remote session--assuming that an identical connection is not already open on behalf of the same local session. If a session already exists, Oracle re-uses it.

Schema Object Name Resolution

After the local Oracle database connects to the specified remote database on behalf of the local user that issued the SQL statement, object resolution continues as if the remote user had issued the associated SQL statement. The first match determines the remote schema according to the following rules:

If you use  Then object resolution proceeds in the 

A fixed user database link 

Schema specified in the link creation statement. 

A connected user database link 

Connected user's remote schema. 

A current user database link 

Current user's schema. 

If Oracle cannot find the object, it checks public objects of the remote database. If it cannot resolve the object, then the established remote session remains but the SQL statement cannot execute and returns an error.

Examples of Name Resolution

The following are examples of global object name resolution in a distributed database system. For all the following examples, assume that:

Example: Resolving a Complete Object Name

This example illustrates how Oracle resolves a complete global object name and determines the appropriate path to the remote database using both a private and public database link. For this example, assume that a remote table EMP is contained in the schema TSMITH.

Consider the following statements issued by SCOTT at the local database:

CONNECT scott/tiger@hq

CREATE PUBLIC DATABASE LINK sales.division3.acme.com 
CONNECT TO guest IDENTIFIED BY network 
  USING 'dbstring'; 

Later, JWARD connects and issues the following statements:

CONNECT jward/bronco@hq

CREATE DATABASE LINK sales.division3.acme.com 
  CONNECT TO tsmith IDENTIFIED BY radio; 

UPDATE tsmith.emp@sales.division3.acme.com 
  SET deptno = 40 
  WHERE deptno = 10; 

Oracle processes the final statement as follows:

  1. Oracle determines that a complete global object name is referenced in JWARD's update statement. Therefore, the system begins searching in the local database for a database link with a matching name.

  2. Oracle finds a matching private database link in the schema JWARD. Nevertheless, the private database link JWARD.SALES.DIVISION3.ACME.COM does not indicate a complete path to the remote SALES database, only a remote account. Therefore, Oracle now searches for a matching public database link.

  3. Oracle finds the public database link in SCOTT's schema. From this public database link, Oracle takes the service name DBSTRING.

  4. Combined with the remote account taken from the matching private fixed user database link, Oracle determines a complete path and proceeds to establish a connection to the remote SALES database as user TSMITH/RADIO.

  5. The remote database can now resolve the object reference to the EMP table. Oracle searches in the TSMITH schema and finds the referenced EMP table.

  6. The remote database completes the execution of the statement and returns the results to the local database.

Example: Resolving a Partial Object Name

This example illustrates how Oracle resolves a partial global object name and determines the appropriate path to the remote database using both a private and public database link.

For this example, assume that:

Consider the following statements issued at local database HQ:

CONNECT scott/tiger@hq

CREATE DATABASE LINK sales.division3.acme.com;

DELETE FROM emp@sales 
  WHERE empno = 4299; 

Oracle processes the final DELETE statement as follows:

  1. Oracle notices that a partial global object name is referenced in SCOTT's DELETE statement. It expands it to a complete global object name using the domain of the local database as follows:

    DELETE FROM emp@sales.division3.acme.com 
      WHERE empno = 4299; 
    
    
    
  2. Oracle searches the local database for a database link with a matching name.

  3. Oracle finds a matching private connected user link in the schema SCOTT, but the private database link indicates no path at all. Oracle uses the connected username/password as the remote account portion of the path and then searches for and finds a matching public database link:

    CREATE PUBLIC DATABASE LINK sales.division3.acme.com 
      CONNECT TO guest IDENTIFIED BY network 
      USING 'dbstring'; 
    
    
  4. Oracle takes the database net service name DBSTRING from the public database link. At this point, Oracle has determined a complete path.

  5. Oracle connects to the remote database as SCOTT/TIGER and searches for and does not find an object named EMP in the schema SCOTT.

  6. The remote database searches for a public synonym named EMP and finds it.

  7. The remote database executes the statement and returns the results to the local database.

Global Name Resolution in Views, Synonyms, and Procedures

A view, synonym, or PL/SQL program unit (e.g., procedure, function, or trigger) can reference a remote schema object by its global object name. If the global object name is complete, then Oracle stores the definition of the object without expanding the global object name. If the name is partial, however, Oracle expands the name using the domain of the local database name.

The following table explains when Oracle completes the expansion of a partial global object name for views, synonyms, and program units:

If you  Then Oracle 

Create a view 

Does not expand partial global names--the data dictionary stores the exact text of the defining query. Instead, Oracle expands a partial global object name each time a statement that uses the view is parsed. 

Create a synonym 

Expands partial global names. The definition of the synonym stored in the data dictionary includes the expanded global object name. 

Compile a program unit 

Expands partial global names.  

What Happens When Global Names Change

Global name changes can affect views, synonyms, and procedures that reference remote data using partial global object names. If the global name of the referenced database changes, views and procedures may try to reference a nonexistent or incorrect database. On the other hand, synonyms do not expand database link names at runtime, so they do not change.

For example, consider two databases named SALES.UK.ACME.COM and HR.UK.ACME.COM. Also, assume that the SALES database contains the following view and synonym:

CREATE VIEW employee_names AS 
        SELECT ename FROM scott.emp@hr; 

CREATE SYNONYM employee FOR scott.emp@hr; 

Oracle expands the EMPLOYEE synonym definition and stores it as:

scott.emp@hr.uk.acme.com 
Scenario 1: Both Databases Change Names

First, consider the situation where both the Sales and Human Resources departments are relocated to the United States. Consequently, the corresponding global database names are both changed as follows:

Scenario 2: One Database Changes Names

Now consider that only the Sales department is moved to the United States; Human Resources remains in the UK. Consequently, the global database names are now:

In this case, the defining query of the EMPLOYEE_NAMES view expands to a non-existent global database name. On the other hand, the EMPLOYEE synonym continues to reference the correct database, HR.UK.ACME.COM.

Distributed Database Application Development

Application development in a distributed system raises issues that are not applicable in a non-distributed system. This section contains the following topics relevant for distributed application development:

Transparency in a Distributed Database System

With minimal effort, you can develop application that make an Oracle distributed database system transparent to users that work with the system. The goal of transparency is to make a distributed database system appear as though it is a single Oracle database. Consequently, the system does not burden developers and users of the system with complexities that would otherwise make distributed database application development challenging and detract from user productivity.

The following sections explain more about transparency in a distributed database system.

Location Transparency

An Oracle distributed database system has features that allow application developers and administrators to hide the physical location of database objects from applications and users. Location transparency exists when a user can universally refer to a database object such as a table, regardless of the node to which an application connects. Location transparency has several benefits, including:

Most typically, administrators and developers use synonyms to establish location transparency for the tables and supporting objects in an application schema. For example, the following statements create synonyms in a database for tables in another, remote database.

CREATE PUBLIC SYNONYM emp
  FOR scott.emp@sales.us.americas.acme_auto.com
CREATE PUBLIC SYNONYM dept
  FOR scott.dept@sales.us.americas.acme_auto.com

Now, rather than access the remote tables with a query such as:

SELECT ename, dname
  FROM scott.emp@sales.us.americas.acme_auto.com e,
       scott.dept@sales.us.americas.acme_auto.com d
  WHERE e.deptno = d.deptno;

an application can issue a much simpler query that does not have to account for the location of the remote tables.

SELECT ename, dname
  FROM emp e, dept d
  WHERE e.deptno = d.deptno;

In addition to synonyms, developers can also use views and stored procedures to establish location transparency for applications that work in a distributed database system.

SQL and COMMIT Transparency

Oracle's distributed database architecture also provides query, update, and transaction transparency. For example, standard SQL statements such as SELECT, INSERT, UPDATE, and DELETE work just as they do in a non-distributed database environment. Additionally, applications control transactions using the standard SQL statements COMMIT, SAVEPOINT, and ROLLBACK--there is no requirement for complex programming or other special operations to provide distributed transaction control.

Internal Operations

Each committed transaction has an associated system change number (SCN) to uniquely identify the changes made by the statements within that transaction. In a distributed database, the SCNs of communicating nodes are coordinated when:

Among other benefits, the coordination of SCNs among the nodes of a distributed database system allows global distributed read-consistency at both the statement and transaction level. If necessary, global distributed time-based recovery can also be completed.

Replication Transparency

Oracle also provide many features to transparently replicate data among the nodes of the system. For more information about Oracle's replication features, see Oracle8i Replication.

Remote Procedure Calls

Developers can code PL/SQL packages and procedures to support applications that work with a distributed database. Applications can make local procedure calls to perform work at the local database and remote procedure calls (RPCs) to perform work at a remote database.

When a program calls a remote procedure, the local server passes all procedure parameters to the remote server in the call. For example, the following PL/SQL program unit calls the packaged procedure DEL_EMP located at the remote SALES database and passes it the parameter 1257:

BEGIN
 emp_mgmt.del_emp@sales.us.americas.acme_auto.com(1257);
END;

In order for the RPC to succeed, the called procedure must exist at the remote site.

When developing packages and procedures for distributed database systems, developers must code with an understanding of what program units should do at remote locations, and how to return the results to a calling application.

Distributed Query Optimization

Distributed query optimization is a default Oracle8i feature that reduces the amount of data transfer required between sites when a transaction retrieves data from remote tables referenced in a distributed SQL statement.

Distributed query optimization uses Oracle's cost-based optimization to find or generate SQL expressions that extract only the necessary data from remote tables, process that data at a remote site or sometimes at the local site, and send the results to the local site for final processing. This operation reduces the amount of required data transfer when compared to the time it takes to transfer all the table data to the local site for processing.

Using various cost-based optimizer hints such as DRIVING_SITE, NO_MERGE, and INDEX, you can control where Oracle processes the data and how it accesses the data.

See Also:

Oracle8i Distributed Database Systems for more information about cost-based optimization 

National Language Support

Oracle supports environments in which clients, Oracle servers, and non-Oracle servers use different character sets. In Oracle8i, NCHAR support is provided for heterogeneous environments. You can set a variety of NLS and HS parameters to control data conversion between different character sets.

Character settings are defined by the following NLS and HS parameters:

Parameters  Environment  Defined For 

NLS_LANG 

Client-Server 

Client 

NLS_LANGUAGE

NLS_CHARACTERSET

NLS_TERRITORY 

Client-Server

Non-Heterogeneous Distributed

Heterogeneous Distributed  

Oracle server 

HS_LANGUAGE 

Heterogeneous Distributed  

Non-Oracle server

Transparent gateway 

NLS_NCHAR

HS_NLS_NCHAR 

Heterogeneous Distributed 

Oracle server

Transparent gateway 

Client-Server Environment

In a client-server environment, set the client character set to be the same as or a subset of the Oracle server character set, as illustrated in Figure 30-6:

Figure 30-6 NLS Settings in a Client-Server Environment


Homogeneous Distributed Environment

In a non-heterogeneous environment, the client and server character sets should be either the same as or subsets of the main server character set, as illustrated in Figure 30-7:

Figure 30-7 NLS Settings in a Homogeneous Environment


Heterogeneous Distributed Environment

In a heterogeneous environment, the NLS settings of the client, the transparent gateway and the non-Oracle data source, should be either the same or a subset of the Oracle server NLS character set as illustrated in Figure 30-8. Transparent gateways have full NLS support.

Figure 30-8 NLS Settings in a Heterogeneous Environment


In a heterogeneous environment, only transparent gateways built with HS technology support complete NCHAR capabilities. Whether a specific transparent gateway supports NCHAR depends on the non-Oracle data source it is targeting. For further information on how a particular transparent gateway handles NCHAR support, consult the particular transparent gateway documentation.

See Also:

Oracle8i Reference for more information about National Language Support features 


Go to previous page Go to next page
Oracle
Copyright © 1996-2000, Oracle Corporation.

All Rights Reserved.

Library

Product

Contents

Index