|Oracle9i Database Globalization Support Guide
Release 2 (9.2)
Part Number A96529-01
This chapter provides an overview of Oracle globalization support. It includes the following topics:
Oracle's globalization support enables you to store, process, and retrieve data in native languages. It ensures that database utilities, error messages, sort order, and date, time, monetary, numeric, and calendar conventions automatically adapt to any native language and locale.
In the past, Oracle's globalization support capabilities were referred to as National Language Support (NLS) features. National Language Support is a subset of globalization support. National Language Support is the ability to choose a national language and store data in a specific character set. Globalization support enables you to develop multilingual applications and software products that can be accessed and run from anywhere in the world simultaneously. An application can render content of the user interface and process data in the native users' languages and locale preferences.
Oracle's globalization support is implemented with the Oracle NLS Runtime Library (NLSRTL). The NLS Runtime Library provides a comprehensive suite of language-independent functions that allow proper text and character processing and language convention manipulations. Behavior of these functions for a specific language and territory is governed by a set of locale-specific data that is identified and loaded at runtime.
The locale-specific data is structured as independent sets of data for each locale that Oracle supports. The data for a particular locale can be loaded independent of other locale data. The advantages of this design are as follows:
Figure 1-1 shows that locale-specific data is loaded at runtime. In this example, French data and Japanese data are loaded into the multilingual database, but German data is not.
The locale-specific data is stored in a directory specified by the
ORA_NLS* environment variable. There is a different
ORA_NLS data directory for different releases of the Oracle database server. For Oracle9i, the
ORA_NLS33 directory is used. Table 1-1 shows the environment variable that specifies the location of locale-specific data for different releases of the Oracle database server.
8.0, 8.1, 9.0.1, 9.2
ORA_NLS* environment variable is not defined, then the default value relative to the Oracle home directory is used to locate the locale-specific data. The default location of locale data is
$ORACLE_HOME/ocommon/nls/admin/data in all releases. In most cases, the default value is sufficient. The
ORA_NLS* variable should be defined only when the system has multiple Oracle homes that share a single copy of NLS datafiles.
A boot file is used to determine the availability of the NLS objects that can be loaded. Oracle supports both system and user boot files. The user boot file gives you the flexibility to tailor what NLS locale objects are available for the database. Also, new locale data can be added and some locale data components can be customized.
Chapter 12, "Customizing Locale Data" for more information about customizing locale data
The Oracle9i database is implemented to enable multitier applications and client/server applications to support languages for which the database is configured.
The locale-dependent operations are controlled by several parameters and environment variables on both the client and the database server. On the database server, each session started on behalf of a client may run in the same or a different locale as other sessions, and have the same or different language requirements specified.
The database has a set of session-independent NLS parameters that are specified when the database is created. Two of the parameters specify the database character set and the national character set, an alternate Unicode character set that can be specified for
NCLOB data. The parameters specify the character set that is used to store text data in the database. Other parameters, like language and territory, are used to evaluate check constraints.
If the client session and the database server specify different character sets, then the Oracle9i database converts character set strings automatically.
From a globalization support perspective, all applications are considered to be clients, even if they run on the same physical machine as the Oracle instance. For example, when SQL*Plus is started by the UNIX user who owns the Oracle software from the Oracle home in which the RDBMS software is installed, and SQL*Plus connects to the database through an adapter by specifying the
ORACLE_SID parameter, SQL*Plus is considered a client. Its behavior is ruled by client-side NLS parameters.
Another example of an application being considered a client occurs when the middle tier is an application server. The different sessions spawned by the application server are considered to be separate client sessions.
When a client application is started, it initializes the client NLS environment from environment settings. All NLS operations performed locally are executed using these settings. Examples of local NLS operations are:
When the application connects to a database, a session is created on the server. The new session initializes its NLS environment from NLS instance parameters specified in the initialization parameter file. These settings can be subsequently changed by an
SESSION statement. The statement changes only the session NLS environment. It does not change the local client NLS environment. The session NLS settings are used to process SQL and PL/SQL statements that are executed on the server. For example, use an
ALTER SESSION statement to set the
NLS_LANGUAGE initialization parameter to Italian:
You should see results similar to the following:
LAST_NAME HIRE_DATE SALARY ------------------------- --------- ---------- Sciarra 30-SET-97 962.5 Urman 07-MAR-98 975 Popp 07-DIC-99 862.5
Note that the month name abbreviations are in Italian.
Immediately after the connection has been established, if the
NLS_LANG environment setting is defined on the client side, then an implicit
ALTER SESSION statement synchronizes the client and session NLS environments.
Unicode is a universal encoded character set that enables you to store information in any language, using a single character set. Unicode provides a unique code value for every character, regardless of the platform, program, or language.
When Unicode is used in an Oracle9i database, it has the following advantages:
Oracle's standard features include:
The Oracle9i database enables you to store, process, and retrieve data in native languages. The languages that can be stored in an Oracle9i database are all languages written in scripts that are encoded by Oracle-supported character sets. Through the use of Unicode databases and datatypes, Oracle9i supports most contemporary languages.
Additional support is available for a subset of the languages. The Oracle9i database knows, for example, how to display dates using translated month names or how to sort text data according to cultural conventions.
When this manual uses the term language support, it refers to the additional language-dependent functionality (for example, displaying dates or sorting text), not to the ability to store text of a specific language.
For some of the supported languages, Oracle provides translated error messages and a translated user interface of the database utilities.
The Oracle9i database supports cultural conventions that are specific to geographical locations. The default local time format, date format, and numeric and monetary conventions depend on the local territory setting. By setting different NLS parameters, the database session can use different cultural settings. For example, you can set British pound sterling (
GBP) as the primary currency and the Japanese yen (
JPY) as the secondary currency for a given database session even when the territory is defined as
Different conventions for displaying the hour, day, month, and year can be handled in local formats. For example, in the United Kingdom, the date is displayed using the
DD-MON-YYYY format, while Japan commonly uses the
Time zones and daylight saving support are also available.
Currency, credit, and debit symbols can be represented in local formats. Radix symbols and thousands separators can be defined by locales. For example, in the US, the decimal point is a dot (.), while it is a comma (,) in France. Therefore, the amount $1,234 has different meanings in different countries.
Many different calendar systems are in use around the world. Oracle supports seven different calendar systems: Gregorian, Japanese Imperial, ROC Official (Republic of China), Thai Buddha, Persian, English Hijrah, and Arabic Hijrah.
Oracle9i provides linguistic definitions for culturally accurate sorting and case conversion. The basic definition treats strings as sequences of independent characters. The extended definition recognizes pairs of characters that should be treated as special cases.
Strings that are converted to upper case or lower case using the basic definition always retain their lengths. Strings converted using the extended definition may become longer or shorter.
Oracle supports a large number of single-byte, multibyte, and fixed-width encoding schemes that are based on national, international, and vendor-specific standards.
Oracle9i introduces character semantics. It is useful for defining the storage requirements for multibyte strings of varying widths in terms of characters instead of bytes.
You can customize locale data such as language, character set, territory, or linguistic sort using the Oracle Locale Builder.
You can customize calendars with the NLS Calendar Utility.
You can store Unicode characters in an Oracle9i database in two ways:
NCHARdatatypes regardless of how the database character set has been defined. The
NCHARdatatype has been redefined in Oracle9i to be an exclusively Unicode datatype.