この章では、Oracleデータベースのグローバリゼーション・サポートの概要を説明します。この章の内容は、次のとおりです。
Oracleデータベースのグローバリゼーション・サポートによって、データの格納、処理および取出しをネイティブ言語で実行できます。このアーキテクチャによって、データベース・ユーティリティ、エラー・メッセージ、ソート順序、日付、時刻、通貨単位、数値およびカレンダに関する規則が、各国の言語やロケールに自動的に適応されます。
Oracleのグローバリゼーション・サポート機能は、以前はNational Language Support(NLS)機能と呼ばれていました。実際のところ、NLSはグローバリゼーション・サポートのサブセットです。NLSとは、各国語を選択してデータを特定のキャラクタ・セットで格納する機能です。グローバリゼーション・サポートを使用すると、世界中から同時にアクセスして実行できる多言語アプリケーションやソフトウェア製品の開発が可能になります。アプリケーションでは、ユーザー・インタフェースの内容表示とデータ処理に、ユーザーの母国語と選択したロケールを使用できます。
Oracleデータベースのグローバリゼーション・サポートは、Oracle NLS Runtime Library(NLSRTL)とともに実装されます。NLSランタイム・ライブラリは、広範囲にわたる言語非依存の関数のパッケージを提供します。これによって、適切なテキストと文字の処理および言語規則に従った操作を行うことができます。特定の言語や地域に対応した関数の動作は、実行時に指定してロードされたロケール固有データ・セットによって制御されます。
ロケール固有データは、Oracleデータベースでサポートされるロケールごとに独立したデータ・セットとしての構造を持ちます。特定のロケールのデータを、他のロケール・データに依存せずにロードできます。
この設計の利点は、次のとおりです。
必要なロケール・セットを選択してメモリー消費を管理できます。
他のロケールに影響を与えずに、特定のロケールのロケール・データを追加してカスタマイズできます。
図1-1に、実行時のロケール固有データのロードを示します。この例では、フランス語データと日本語データが多言語データベースにロードされますが、ドイツ語データはロードされません。
ロケール固有のデータは、ORACLE_HOME/nls/data
ディレクトリに格納されます。環境変数ORA_NLS10
を定義する必要があるのは、ロケール固有のデータファイルの単一コピーがシステムの複数のOracleホームで共有される場合など、ロケール固有のデータファイルについてデフォルトのディレクトリ位置を変更する必要がある場合のみです。
ロードする有効なNLSオブジェクトは、ブート・ファイルを使用して指定します。Oracleデータベースでは、システムとユーザーの両方のブート・ファイルをサポートしています。ユーザーのブート・ファイルを使用すると、そのデータベースで使用可能なNLSロケール・オブジェクトを柔軟に調整できます。また、新しいロケール・データを追加したり、一部のロケール・データ・コンポーネントをカスタマイズすることができます。
Oracleデータベースは、データベースの構成に使用される言語を複数層アプリケーションとクライアント/サーバー・アプリケーションでサポートできるようにしています。
ロケール依存操作は、クライアントとデータベース・サーバーの両方にある複数のパラメータと環境変数によって制御されます。データベース・サーバーでは、クライアント用に起動された各セッションが他のセッションと同じまたは異なるロケールで実行され、同じまたは異なる言語要件が指定されることがあります。
Oracleデータベースには、セッションに依存しないNLSパラメータのセットがデータベースの作成時に指定されます。その2つのパラメータによって、データベース・キャラクタ・セットと各国語キャラクタ・セット、つまりNCHAR
、NVARCHAR2
およびNCLOB
データに指定できる代替Unicodeキャラクタ・セットを指定します。このパラメータは、テキスト・データをデータベースに格納するために使用するキャラクタ・セットを指定します。他のパラメータ(言語や地域など)は、CHECK制約の評価で使用されます。
クライアント・セッションとデータベース・サーバーが異なるキャラクタ・セットを指定している場合、データベースではキャラクタ・セットの文字列を自動的に変換します。
グローバリゼーション・サポートの観点では、すべてのアプリケーションは、Oracleデータベース・インスタンスと物理的に同じマシン上で実行している場合でも、クライアントとみなされます。たとえば、Oracleソフトウェア所有者であるUNIXユーザーが、SQL*PlusをRDBMSソフトウェアがインストールされているOracleホームから起動し、ORACLE_SID
パラメータを指定してアダプタ経由でデータベースに接続している場合、このSQL*Plusはクライアントとみなされます。その動作はクライアント側のNLSパラメータによって規定されます。
別の例をあげると、中間層がアプリケーション・サーバーの場合に、アプリケーションがクライアントとみなされます。そのアプリケーション・サーバーによって起動される様々なセッションは、個別のクライアント・セッションとみなされます。
クライアント・アプリケーションが起動されると、環境設定に従ってクライアントのNLS環境が初期化されます。ローカルで実行されるNLS操作は、すべてこの設定を使用して実行されます。ローカルNLS操作の例を次に示します。
Oracle Developerアプリケーションの表示書式設定
OCI環境ハンドルを使用してNLS OCI関数を実行するユーザーOCIコード
アプリケーションをデータベースに接続すると、サーバー上にセッションが作成されます。新しいセッションは、初期化パラメータ・ファイルに指定されたNLSインスタンス・パラメータに従って、NLS環境を初期化します。この設定は、ALTER
SESSION
文により、後で変更できます。この文によって変更されるのは、そのセッションのNLS環境のみです。ローカル・クライアントのNLS環境は変更されません。セッションのNLS設定は、サーバー上で実行されるSQL文とPL/SQL文の処理に使用されます。たとえば、ALTER SESSION
文を使用してNLS_LANGUAGE
初期パラメータをItalianに設定します:
ALTER SESSION SET NLS_LANGUAGE=Italian;
SELECT
文を入力します。
SQL> SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees;
結果は次のようになります。
LAST_NAME HIRE_DATE SALARY ------------------------- --------- ---------- Sciarra 30-SET-97 962.5 Urman 07-MAR-98 975 Popp 07-DIC-99 862.5
月名の略称にイタリア語が使用されていることに注意してください。
NLS_LANG
環境設定がクライアント側で定義されている場合は、接続直後にALTER SESSION
文が暗黙的にクライアントとセッションのNLS環境を同期させます。
ここでは、Oracleデータベースの標準的なグローバリゼーション機能の概要を説明します:
Oracleデータベースでは、データの格納、処理および取出しをネイティブ言語で行うことができます。データベースに格納できる言語は、Oracleがサポートしているキャラクタ・セットでエンコードされているスクリプトで記述されたすべての言語です。Unicodeデータベースとデータ型を使用することで、Oracleデータベースは、ほとんどの現代言語をサポートしています。
各国語のサブセットに対しては、追加サポートが用意されています。たとえば、データベースでは、翻訳された月の名前を使用して日付を表示し、文化的な慣習に従ってテキスト・データをソートできます。
このマニュアルで使用している言語サポートという用語は、言語依存の追加機能を指しており、特定の言語のテキストを格納できることを示すわけではありません。たとえば、言語サポートには、特定のロケールおよび文化的慣習に従った日付の表示やテキストのソートが含まれます。一部のサポート対象言語については、翻訳済エラー・メッセージやデータベース・ユーティリティに関する翻訳済ユーザー・インタフェースが用意されています。
関連項目:
|
Oracleデータベースでは、地域に固有な文化的慣習をサポートしています。デフォルトのローカル時刻書式、日付書式、数値および通貨単位に関する規則は、ローカル地域設定によって異なります。多様なNLSパラメータの設定によって、データベース・セッションでは様々な文化的設定を使用できます。たとえば、地域がAMERICA
と定義されている場合でも、指定したデータベース・セッションに、第1通貨としてユーロ(EUR
)を、第2通貨として日本円(JPY
)を設定できます。
時間、日、月および年に関する多様な表記規則は、ローカル書式で処理されます。たとえば、日付の表示の場合、英国ではDD-MON-YYYY
書式が使用され、日本では一般的にYYYY-MM-DD
書式が使用されます。
タイム・ゾーンや夏時間もサポートされます。
通貨、貸方および借方の記号は、ローカル書式で表すことができます。基数記号と3桁区切りは、ロケールで定義できます。たとえば、小数点は、米国ではドット(.)ですが、フランスではカンマ(,)です。したがって、金額1,234の持つ意味は、国によって異なります。
世界中で様々な暦法が使用されています。Oracleデータベースでは7種類の暦法をサポートしています。
Gregorian(グレゴリオ暦)
Japanese Imperial(日本の元号暦)
ROC Official(台湾暦)
Thai Buddha(タイ仏教暦)
Persian(ペルシャ暦)
English Hijrah(英語版イスラム歴)
Arabic Hijrah(イスラム歴)
Oracleデータベースには、文化に応じた正確なソートおよび大/小文字の変換を行うために、言語の定義が用意されています。基本定義では、文字列を独立した文字の連続として扱います。拡張定義では、特殊な事例として扱う必要のある文字のペアを認識します。
基本定義を使用して大文字または小文字に変換された文字列は、常に同じ長さです。拡張定義を使用して変換された文字列は、長くなったり短くなったりすることがあります。
Oracleデータベースでは、多数のシングルバイト、マルチバイトおよび固定幅のコード体系をサポートしています。これらのコード体系は、各国の規格、国際規格およびベンダー固有の規格に基づいています。
Oracleデータベースには、キャラクタ・セマンティクスが用意されています。キャラクタ・セマンティクスは、可変幅のマルチバイト文字列の記憶要件をバイト数ではなく文字数で定義する場合に役立ちます。
Oracle Locale Builderを使用して、言語、キャラクタ・セット、地域または言語ソートなどのロケール・データをカスタマイズできます。
NLSカレンダ・ユーティリティを使用すると、カレンダをカスタマイズできます。
Unicodeはコンピュータによる一貫性のある表現および操作のために、すべての言語のテキストや記号を使用可能にする業界標準です。現時点でのUnicode規格の最新バージョンは5.0です。
Oracleデータベースは、Oracle 7からUnicode規格を採用しています。それ以降では、Oracleデータベース10g リリース2がUnicode 4.0をサポートしています。Oracleデータベース11g リリース1では、Unicode 5.0をサポートしています。
次の2つの方法でUnicode文字をOracleデータベースに格納できます。
UTF-8エンコードされた文字をSQL CHAR
データ型として格納できるように、Unicodeデータベースを作成できます。
Unicodeデータ型を使用して、特定の列の多言語データをサポートできます。データベース・キャラクタ・セットの定義方法に関係なく、SQL NCHAR
データ型の列にUnicode文字を格納できます。NCHAR
データ型はUnicodeデータ型専用です。