Managing Global Names in a Distributed System - Oracle 10g

In a distributed database system, each database should have a unique global database name. Global database names uniquely identify a database in the system. A primary administration task in a distributed system is managing the creation and alteration of global database names. This section contains the following topics:

  • Understanding How Global Database Names Are Formed
  • Determining Whether Global Naming Is Enforced
  • Viewing a Global Database Name
  • Changing the Domain in a Global Database Name
  • Changing a Global Database Name: Scenario

Understanding How Global Database Names Are Formed

A global database name is formed from two components: a database name and a domain. The database name and the domain name are determined by the following initialization parameters at database creation:

Understanding How Global Database Names Are Formed

Component Parameter Requirements Example

These are examples of valid global database names:

Component Parameter Requirements Example

The DB _DOMAIN initialization parameter is only important at database creation time when it is used, together with the DB _NAME parameter, to form the database global name. At this point, the database global name is stored in the data dictionary. You must change the global name using an ALTER DATABASE statement, not by altering the DB _DOMAIN parameter in the initialization parameter file. It is good practice, however, to change the DB _DOMAIN parameter to reflect the change in the domain name before the next database startup.

Determining Whether Global Naming Is Enforced

The name that you give to a link on the local database depends on whether the remote database that you want to access enforces global naming. If the remote database enforces global naming, then you must use the remote database global database name as the name of the link. For example, if you are connected to the local hq server and want to create a link to the remote mfg database, and mfg enforces global naming, then you must use the mfg global database name as the ink name.

You can also use service names as part of the database link name. For example, if you use the service names sn1 and sn2 to connect to database hq.acme.com, and hq enforces global naming, then you can create the following link names to hq:

  • HQ.ACME.COM@SN1
  • HQ.ACME.COM@SN2

To determine whether global naming on a database is enforced on a database, either examine the database initialization parameter file or query the V$PARAMETER view. For example, to see whether global naming is enforced on mfg, you could start a session on mfg and then create and execute the following globalnames.sql script (sample output included):

Viewing a Global Database Name

Use the data dictionary view GLOBAL_NAME to view the database global name. For example, issue the following:

Changing the Domain in a Global Database Name

Use the ALTER DATABASE statement to change the domain in a database global name. Note that after the database is created, changing the initialization parameter DB _DOMAIN has no effect on the global database name or on the resolution of database link names.

The following example shows the syntax for the renaming statement, where database is a database name and domain is the network domain:

ALTER DATABASE RENAME GLOBAL_NAME TO database.domain;

Use the following procedure to change the domain in a global database name:

  1. Determine the current global database name. For example, issue:

  2. Rename the global database name using an ALTER DATABASE statement. For example, enter:
    ALTER DATABASE RENAME GLOBAL_NAME TO sales.us.oracle.com;
  3. Query the GLOBAL_NAME table to check the new name. For example, enter:

Changing a Global Database Name: Scenario

In this scenario, you change the domain part of the global database name of the local database. You also create database links using partially specified global names to test how Oracle Database resolves the names. You discover that the database resolves the partial names using the domain part of the current global database name of the local database, not the value for the initialization parameter DB _ DOMAIN.

  1. You connect to SALES.US.ACME.COM and query the GLOBAL _NAME data dictionary view to determine the current database global name:
  2. You query the V$PARAMETER view to determine the current setting for the DB _DOMAIN initialization parameter:

  3. You then create a database link to a database called hq, using only a partially -specified global name:
    CREATE DATABASE LINK hq USING 'sales';

    The database expands the global database name for this link by appending the domain part of the global database name of the local database to the name of the database specified in the link.

  4. You query USER _DB _LINKS to determine which domain name the database uses to resolve the partially specified global database name:

    This result indicates that the domain part of the global database name of the local database is us.acme.com. The database uses this domain in resolving partial database link names when the database link is created.

  5. Because you have received word that the sales database will move to Japan, you rename the sales database to sales.jp.acme.com:

  6. You query V$PARAMETER again and discover that the value of DB_DOMAIN is not changed, although you renamed the domain part of the global database name:

    This result indicates that the value of the DB _DOMAIN initialization parameter is independent of the ALTER DATABASE RENAME GLOBAL _NAME statement. The ALTER DATABASE statement determines the domain of the global database name, not the DB _DOMAIN initialization parameter (although it is good practice to alter DB _DOMAIN to reflect the new domain name).

  7. You create another database link to database supply, and then query USER _DB _LINKS to see how the database resolves the domain part of the global database name of supply:

    This result indicates that the database resolves the partially specified link name by using the domain jp.acme.com. This domain is used when the link is created because it is the domain part of the global database name of the local database. The database does not use the DB_DOMAIN initialization parameter setting when resolving the partial link name.

  8. You then receive word that your previous information was faulty: sales will be in the ASIA.JP.ACME.COM domain, not the JP.ACME.COM domain. Consequently, you rename the global database name as follows:

  9. You query V$PARAMETER to again check the setting for the parameter DB_DOMAIN:

    The result indicates that the domain setting in the parameter file is exactly the same as it was before you issued either of the ALTER DATABASE RENAME statements.

  10. Finally, you create a link to the warehouse database and again query USER _DB _LINKS to determine how the database resolves the partially- specified global name:

    Again, you see that the database uses the domain part of the global database name of the local database to expand the partial link name during link creation.


All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd DMCA.com Protection Status

Oracle 10g Topics