12 ロケール・データのカスタマイズ

この章では、ロケール・データのカスタマイズ方法について説明します。この章の内容は、次のとおりです。

12.1 Oracle Locale Builderユーティリティの概要

Oracle Locale Builderは、ロケール・データをカスタマイズするための簡単で効率的な方法を提供します。ロケール固有のデータを簡単に表示、変更および定義できるGUIも提供します。Oracle Locale Builderではテキストおよびバイナリ定義ファイルからデータを抽出して、読取り可能な形式で表示するため、ユーザーはこれらのファイルで使用されている形式を気にせずに情報を処理できます。

Oracle Locale Builderでは、言語、地域、文字セットおよび言語ソートの4種類のロケール定義を管理します。ユーザー定義文字やカスタマイズされた言語規則もサポートします。既存のテキスト定義ファイルやバイナリ定義ファイルの定義を表示して、変更を加えたり、独自の定義を作成できます。

この項では、次の項目について説明します。

12.1.1 Oracle Locale Builder用のUnicodeフォントの構成

Oracle Locale Builderでは、多くの機能でUnicode文字が使用されます。たとえば、Unicodeコード・ポイントへのローカル文字コード・ポイントのマッピングが表示されます。Oracle Locale Builderは、文字を表示するためにJavaランタイムで構成される論理フォントSerifおよびSansSerifに依存します。構成されたフォントで文字を表現できない場合は、通常、その文字は空の四角として表示されます。Oracle Locale Builderユーザー・インタフェースで一部の文字を適切に表示できない場合、不足している文字をサポートする追加の物理フォントを含めるように、論理フォントを再構成する必要がある場合があります。

ノート:

Oracle Locale Builderで使用されるJavaランタイムは、Oracleホーム・ディレクトリのjdk/jreサブディレクトリにあります。

関連項目:

Javaランタイムで使用されるフォント構成ファイルの詳細は、「フォント構成ファイル」(https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html)を参照してください。

12.1.2 Oracle Locale Builderのユーザー・インタフェース

Oracle Locale Builderを起動する前に、ORACLE_HOMEパラメータが設定されていることを確認してください。

UNIXオペレーティング・システム上でOracle Locale Builderを起動するには、$ORACLE_HOME/nls/lbuilderディレクトリに変更して次のコマンドを発行します。

% ./lbuilder

Windowsオペレーティング・システム上では、「スタート」メニューからOracle Locale Builderを起動します。「スタート」「プログラム」Oracle-OraHome10「コンフィグレーションおよび移行ツール」「Locale Builder」を選択します。DOSプロンプトから%ORACLE_HOME%\nls\lbuilderディレクトリに移動してlbuilder.batコマンドを実行する方法もあります。

Oracle Locale Builderを起動すると、次の画面が表示されます。

図12-1 Oracle Locale Builderユーティリティ

図12-1の説明が続きます
「図12-1 Oracle Locale Builderユーティリティ」の説明

12.1.3 Oracle Locale Builderのページとダイアログ・ボックス

Oracle Locale Builderでの特定のタスクを使用する前に、次のようなタブ・ページとダイアログ・ボックスについて理解しておく必要があります。

12.1.3.1 「既存の定義」ダイアログ・ボックス

「新規言語」「新規地域」「新規文字セット」または「新規言語ソート」を選択すると、最初に「一般」タブ・ページが表示されます。「既存の定義の表示」をクリックすると、「既存の定義」ダイアログ・ボックスが表示されます。

「既存の定義」ダイアログ・ボックスでは、ロケール・オブジェクトを名前でオープンできます。起動する特定の言語、地域、言語ソート(照合)または文字セットがわかっている場合は、表示されている名前をクリックします。たとえば、次の図に示すように、AMERICAN言語定義ファイルをオープンできます。

図12-2 「既存の定義」ダイアログ・ボックス

図12-2の説明が続きます
「図12-2 「既存の定義」ダイアログ・ボックス」の説明

AMERICAN」を選択すると、lx00001.nlbファイルがオープンします。NLBファイルは、特定の言語、地域、文字セットまたは言語ソートの設定を含むバイナリ・ファイルです。

言語と地域の略称は参照用のため、オープンできません。

12.1.3.2 「セッション・ログ」ダイアログ・ボックス

「ツール」「ログの表示」を選択すると、「セッション・ログ」ダイアログ・ボックスが表示されます。「セッション・ログ」ダイアログ・ボックスには、現行のセッションで行われた処理が表示されます。「ログの保存」をクリックすると、すべての変更のレコードが保存されます。次の画面は、セッション・ログの例を示しています。

図12-3 「セッション・ログ」ダイアログ・ボックス

図12-3の説明が続きます
「図12-3 「セッション・ログ」ダイアログ・ボックス」の説明
12.1.3.3 「NLTのプレビュー」タブ・ページ

NLT(National Language Text)ファイルは、ファイル拡張子が.nltのXMLファイルで、特定の言語、地域、文字セットまたは言語ソートの設定を格納します。「NLTのプレビュー」タブ・ページには、ファイルが読取り可能な書式で表示されるため、変更内容が適切かどうかを確認できます。「NLTのプレビュー」タブ・ページからはNLTファイルを変更できません。NLTファイルを変更するには、Oracle Locale Builderで提供される特定のツールとプロシージャを使用する必要があります。

次の画面は、ユーザー定義言語AMERICAN FRENCHの「NLTのプレビュー」タブ・ページの例を示しています。

図12-4 NLTファイルのプレビュー

図12-4の説明が続きます
「図12-4 NLTファイルのプレビュー」の説明
12.1.3.4 ファイルを開くダイアログ・ボックス

「ファイル」「開く」ファイル名で指定を選択すると、「ファイルを開く」ダイアログ・ボックスを表示できます。次に、変更あるいはテンプレートとして使用するNLB(National Language Binary)ファイルを選択します。NLBファイルは、ファイル拡張子が.nlbのバイナリ・ファイルで、そのNLTファイル内の情報に相当するバイナリが含まれています。次の画面は、lx00001.nlbファイルが選択された「ファイルを開く」ダイアログ・ボックスを示しています。「プレビュー」ペインは、このNLBファイルがAMERICAN言語用であることを示しています。

図12-5 ファイルを開くダイアログ・ボックス

図12-5の説明が続きます
「図12-5 ファイルを開くダイアログ・ボックス」の説明

12.2 Oracle Locale Builderを使用した新規言語定義の作成

この項では、フランス語に基づいて新規言語を作成する方法について説明します。この新しい言語は、AMERICAN FRENCHと呼ぶことにします。最初に、「既存の定義」ダイアログ・ボックスからFRENCHをオープンします。次に、「一般」タブ・ページで言語名をAMERICAN FRENCHに変更し、「言語の略称」を「AF」に変更します。他の設定はデフォルト値のままにします。次の画面は、この結果の「一般」タブ・ページを示しています。

図12-6 言語の一般情報

図12-6の説明が続きます
「図12-6 言語の一般情報」の説明

言語などのロケール・オブジェクトの名前を選択するときには、次の制限事項が適用されます。

  • 名前にはASCII文字のみを使用する必要があります。

  • 名前は文字で開始する必要があります。

  • 言語、地域および文字セット名にはアンダースコアを使用できません。

ユーザー定義言語の場合、「言語ID」フィールドの有効範囲は1,000から10,000です。Oracle Locale Builderで提供される値を受け入れるか、この範囲内の値を指定できます。

ノート:

特定のID範囲は、ユーザー定義のLANGUAGETERRITORYCHARACTER SETMONOLINGUAL COLLATIONおよびMULTILINGUAL COLLATIONの定義に対してのみ有効です。この章の各項では、各タイプのユーザー定義ロケール・オブジェクトに関係する範囲が指定されています。

次の画面は、「月名」タブ・ページを使用して月名を設定する方法を示しています。

図12-7 「月名」タブ・ページ

図12-7の説明が続きます
「図12-7 「月名」タブ・ページ」の説明

すべての名前は、NLTファイルに表示されているとおりに示されます。先頭の文字を大文字にするかどうかに対して「はい」を選択すると、アプリケーションでは月の名前の先頭に大文字が使用されますが、「月名」タブ・ページでは大文字で表示されません。

次の画面は、「曜日」タブ・ページを示しています。

図12-8 「曜日」タブ・ページ

図12-8の説明が続きます
「図12-8 「曜日」タブ・ページ」の説明

ユーザー定義言語に曜日名を選択できます。すべての名前は、NLTファイルに表示されているとおりに示されます。先頭の文字を大文字にするかどうかに対して「はい」を選択すると、アプリケーションでは曜日名の先頭に大文字が使用されますが、曜日タブ・ページでは大文字で表示されません。

次の画面は、「共通情報」タブ・ページを示しています。

図12-9 「共通情報」タブ・ページ

図12-9の説明が続きます
「図12-9 「共通情報」タブ・ページ」の説明

現在の言語に関連付けられている地域、文字セット、Windows用文字セットおよび言語ソートを表示できます。通常、最も適切な項目または最も一般的に使用されている項目が、最初に表示されます。たとえば、FRENCH言語では、共通地域はFRANCE、BELGIUM、CANADAおよびDJIBOUTIで、サポートされている文字セットは、WE8ISO8859P1、WE8MSWIN1252、AL32UTF8およびWE8ISO8859P15です。Windows環境では、WE8ISO8859P1よりもWE8MSWIN1252が一般的であるため、最初に表示されます。

12.3 Oracle Locale Builderを使用した新規地域定義の作成

この項では、新規の地域REDWOOD SHORESを作成し、地域の略称としてRSを使用する方法について説明します。新規の地域は、既存の地域定義に基づいていません。

基本タスクは次のとおりです。

  • 地域名の割当て

  • カレンダ、数値、日付、時刻および通貨の各書式の選択

次の画面は、「地域名」としてREDWOOD SHORES、「地域ID」として1001、「地域の略称」としてRSが設定されている「一般」タブ・ページを示しています。

図12-10 地域の「一般」タブ・ページ

図12-10の説明が続きます
「図12-10 地域の「一般」タブ・ページ」の説明

ユーザー定義地域に対する地域IDの有効範囲は、1000から10000です。

次の画面は、「暦」タブ・ページでのカレンダ書式の設定方法を示しています。

図12-11 カレンダ書式の選択

図12-11の説明が続きます
「図12-11 カレンダ書式の選択」の説明

月曜日が週の開始日として設定され、暦年の第1週がISO週として設定されています。

関連項目:

次の画面は、日付書式と時間書式タブ・ページを示しています。

図12-12 日付書式と時刻書式の選択

図12-12の説明が続きます
「図12-11 カレンダ書式の選択」の説明

リストから書式を選択すると、書式の例が表示されます。このケースでは、短い日付書式がDD-MM-YY、短い時間書式がHH24:MI:SS、Oracle日付書式がDD-MM-YY、長い日付書式がfmDay, Month dd, yyyyに設定されています。タイムスタンプ・タイムゾーン書式は設定されていません。

ドロップダウン・メニューから選択せずに、独自のフォーマットを入力することもできます。

次の画面は、「数値」タブ・ページを示しています。

図12-13 数値書式の選択

図12-13の説明が続きます
「図12-13 数値書式の選択」の説明

「小数点記号」にはピリオドが選択されています。負の記号の位置は数値の左に設定されています。数値グループ・セパレータはカンマです。数値グループ化は3桁、リスト・セパレータはカンマ、測定法はメトリック、丸め指定は4に指定されています。

リストの値を使用せずに、独自の値を入力することもできます。

リストから書式を選択すると、書式の例が表示されます。

関連項目:

「数値書式」

次の画面は、「通貨」タブ・ページでの通貨書式の設定方法を示しています。

図12-14 通貨書式の選択

図12-14の説明が続きます
「図12-14 通貨書式の選択」の説明

各国通貨記号には$が設定されています。代替通貨記号はユーロ記号です。通貨表記には、各国通貨記号、借方記号および数値が順に並びます。「小数点記号」はピリオド、「グループ・セパレータ」はカンマ、通貨数値のグループ化は3です。通貨の精度、つまり小数点以下の桁数は3です。貸方記号は+、借方記号は-です。国際通貨セパレータは空白であるため、フィールドには表示されていません。国際通貨記号(ISO通貨記号)はUSDです。Oracle Locale Builderには、ユーザーが選択した通貨書式の例が表示されます。

リストを使用せずに、独自の値を入力することもできます。

関連項目:

「通貨書式」

次の画面は、「共通情報」タブ・ページを示しています。

図12-15 「共通情報」タブ・ページ

図12-15の説明が続きます
「図12-15 「共通情報」タブ・ページ」の説明

現在の地域の共通言語と共通タイム・ゾーンを表示できます。たとえば、地域がCANADAの場合、共通言語はENGLISH、CANADIAN FRENCHおよびFRENCHです。共通タイム・ゾーンは、America/Montreal、America/St_Johns、America/Halifax、America/Winnipeg、America/Regina、America/EdmontonおよびAmerica/Vancouverです。

12.4 Oracle Locale Builderを使用したコード・チャートの表示

Oracle Locale Builderでは、文字セットのコード・チャートを表示して印刷できます。Oracle Locale Builderの初期画面から「ファイル」「新規」「文字セット」を選択します。次の画面が表示されます。

図12-16 文字セットの「一般」タブ・ページ

図12-16の説明が続きます
「図12-16 文字セットの「一般」タブ・ページ」の説明

「既存の定義の表示」をクリックします。表示する文字セットを選択します。次の画面は、US7ASCIIが選択されている「既存の定義」ダイアログ・ボックスを示しています。

図12-17 「既存の定義」ダイアログ・ボックスでのUS7ASCIIの選択

図12-17の説明が続きます
「図12-17 「既存の定義」ダイアログ・ボックスでのUS7ASCIIの選択」の説明

「開く」をクリックして文字セットを選択します。次の画面は、US7ASCIIが選択された場合の「一般」タブ・ページを示しています。

図12-18 US7ASCIIが選択されている「一般」タブ・ページ

図12-18の説明が続きます
「図12-18 US7ASCIIが選択されている「一般」タブ・ページ」の説明

「文字データのマッピング」タブを選択します。次の画面は、US7ASCIIの「文字データのマッピング」タブ・ページを示しています。

図12-19 US7ASCIIの「文字データのマッピング」タブ・ページ

図12-19の説明が続きます
「図12-19 US7ASCIIの「文字データのマッピング」タブ・ページ」の説明

「コード・チャートの表示」をクリックします。次の画面は、US7ASCIIのコード・チャートを示しています。

図12-20 US7ASCIIコード・チャート

図12-20の説明が続きます
「図12-20 US7ASCIIコード・チャート」の説明

このコード・チャートは、ローカル文字セットでの各文字のエンコーディング値、各文字に関連付けられた絵文字、およびUnicode値を示しています。

コード・チャートを印刷する場合は、「ページの印刷」をクリックします。

12.5 Oracle Locale Builderを使用した新規文字セット定義の作成

特定のユーザーのニーズにあわせて文字セットをカスタマイズできます。エンコードされた既存の文字セット定義を拡張できます。ユーザー定義文字は、多くの場合、次のような文字要素を表現する特殊文字をエンコードするために使用されます。

  • 固有名

  • 既存の文字セット規格で定義されていない旧漢字

  • ベンダー固有の文字

  • ユーザーが新たに定義した記号または文字

この項では、Oracle Databaseでユーザー定義文字がどのようにサポートされているかを説明します。次のトピックが含まれています:

12.5.1 ユーザー定義文字(UDC)と文字セット

一般的に、ユーザー定義文字は東アジア諸国の文字セットでサポートされています。東アジア諸国の文字セットには、ユーザー定義文字を使用するために、コード・ポイントの予約域が少なくとも1つ用意されています。たとえば、日本語シフトJISでは、1880のコード・ポイントがユーザー定義文字用に確保されています。表12-1を参照してください。

表12-1 シフトJISのユーザー定義文字の範囲

日本語シフトJISのユーザー定義文字の範囲 コード・ポイント数

F040-F07E、F080-F0FC

188

F140-F17E、F180-F1FC

188

F240-F27E、F280-F2FC

188

F340-F37E、F380-F3FC

188

F440-F47E、F480-F4FC

188

F540-F57E、F580-F5FC

188

F640-F67E、F680-F6FC

188

F740-F77E、F780-F7FC

188

F840-F87E、F880-F8FC

188

F940-F97E、F980-F9FC

188

表12-2に示すOracle Database文字セットには、ユーザー定義文字をサポートする事前定義済の範囲が含まれています。

表12-2 ユーザー定義文字の範囲を含むOracle Databaseの文字セット

文字セット名 ユーザー定義文字に使用可能なコード・ポイント数

JA16DBCS

4370

JA16EBCDIC930

4370

JA16SJIS

1880

JA16SJISYEN

1880

KO16DBCS

1880

KO16MSWIN949

1880

ZHS16DBCS

1880

ZHS16GBK

2149

ZHT16DBCS

6204

ZHT16MSWIN950

6217

12.5.2 Oracle Databaseの文字セット変換アーキテクチャ

特定の文字を表すコード・ポイントの値は、文字セットによって異なります。次の図に、日本語の漢字を示します。

図12-21 日本語の漢字

図12-21の説明が続きます
「図12-21 日本語の漢字」の説明

次の表に、この文字が様々な文字セットでどのようにエンコードされるかを示します。

Unicodeエンコーディング JA16SJISエンコーディング JA16EUCエンコーディング JA16DBCSエンコーディング

4E9C

889F

B0A1

4867

Oracle Databaseでは、すべての文字セットをUnicode 7.0のコード・ポイントの見地から定義しています。つまり、それぞれの文字はUnicode 7.0のコード値として定義されています。中間フォームとしてUnicodeを使用することによって、ユーザーが意識することなく文字変換が行われます。たとえば、JA16SJISのクライアントがJA16EUCのデータベースに接続する場合、前の図に示されているJA16SJISのクライアントから入力した日本語の漢字のコード・ポイント値は889Fとなります。この文字は内部的にUnicode(コード・ポイント値は4E9C)に変換された後、JA16EUC(コード・ポイント値はB0A1)に変換されます。

12.5.3 Unicode 7.0のPrivate Use Area

Unicode 7.0では、Private Use Area(PUA)用にE000からF8FFの範囲が予約されています。PUAは、エンド・ユーザーまたはベンダーがプライベートで使用する文字を定義するためのものです。

ユーザー定義文字は、標準文字と同様に中間フォームとしてUnicode 7.0のPUAを使用して、2つのOracle Database文字セット間で変換されます。

12.5.4 文字セット間でのユーザー定義文字のクロス・リファレンス

ユーザー定義文字を複数のオペレーティング・システムにまたがって登録する場合は、異なる文字セット間のクロス・リファレンスが必要になります。クロス・リファレンスにより、文字セットがUnicode PUAの値にマッピングされ、ユーザー定義文字を異なる文字セット間で確実に正しく変換できます。

たとえば、ユーザー定義文字を日本語シフトJISのオペレーティング・システムと日本語IBMホスト・オペレーティング・システムの両方に登録する場合、この文字に対して、シフトJISのオペレーティング・システムではF040コード・ポイント、IBMホスト・オペレーティング・システムでは6941コード・ポイントの割当てができます。これによって、文字セットJA16SJISとJA16DBCSの間で、この文字が正しくマップされます。

Oracle Locale Builderを使用して文字セット定義を表示すると、ユーザー定義文字のクロス・リファレンス情報を検索できます。たとえば、シフトJISのUDC値F040とIBMホストのUDC値6941が、同じUnicode PUA値E000にマップされていることがわかります。

12.5.5 既存の文字セットから新規文字セットを作成する際のガイドライン

デフォルトの場合、Oracle Locale Builderは次に使用可能な文字セットIDを生成します。独自の文字セットIDを選択することもできます。文字セット定義用NLTファイルのネーミングには、次の書式を使用します。

lx2dddd.nlt

ddddは、16進数で4桁の文字セットIDです。

文字セットを変更する場合は、次のガイドラインに従ってください。

  • 既存の文字を再マップしないでください。

  • すべての文字のマッピングは一意であることが必要です。

  • 新規文字は、Unicodeのプライベート使用範囲(e000からf4ff)にマップする必要があります。(実際のUnicode 7.0のプライベート使用範囲はe000からf8ffです。ただし、f500からf8ffはOracle Database固有のプライベート使用のために予約されています。)

  • 文字セット定義ファイルでは、1行の最大文字数は80文字です。

    ノート:

    既存の文字セットから新規のマルチバイト文字セットを作成する場合は、元の文字セットとして8ビットまたはマルチバイト文字セットを使用してください。

新規文字セットを既存のOracle Database文字セットから導出する場合は、次の文字セットのネーミング規則を使用することをお薦めします。

<Oracle_character_set_name><organization_name>EXT<version>

たとえば、Sun社などの会社がJA16EUC文字セットにユーザー定義文字を追加する場合、適切な文字セット名は次のようになります。

JA16EUCSUNWEXT1

この文字セット名は、次の各部分で構成されています。

  • JA16EUCは、Oracle Databaseが定義した文字セット名です。

  • SUNWは、会社名(Sun社の株式取引上の略称)を表します。

  • EXTは、JA16EUC文字セットに対する拡張要素であることを示します。

  • 1はバージョンを示します

12.5.6 例: Oracle Locale Builderを使用した新規文字セット定義の作成

この項では、文字セットIDに10001を指定して、新規の文字セットMYCHARSETを作成する方法について説明します。この例では、WE8ISO8859P1文字セットを使用して中国語の10文字を追加します。

次の画面は、MYCHARSET文字セットの「一般」タブ・ページを示しています。

図12-22 MYCHARSETの「一般」タブ・ページ

図12-22の説明が続きます
「図12-22 MYCHARSETの「一般」タブ・ページ」の説明

「既存の定義の表示」をクリックし、「既存の定義」ダイアログ・ボックスからWE8ISO8859P1文字セットを選択します。

「ISO文字セットID」フィールドと「基本文字セットID」フィールドはオプションです。「基本文字セットID」は値の継承に使用され、基本文字セットのプロパティがテンプレートとして使用されます。文字セットIDは自動的に生成されますが、オーバーライドして変更することもできます。ユーザー定義文字セットIDの有効範囲は、8000から8999または10000から20000です。

ノート:

Pro*COBOLを使用している場合は、8000から8999の文字セットIDを選択してください。

ユーザー定義文字セットの場合、「ISO文字セットID」は空白のままです。

この例では、「基本文字セットID」は空白のままです。ただし、テンプレートとして使用する文字セットを指定できます。「型指定」タブ・ページの設定は、「基本文字セットID」フィールドに入力した基本文字セットの型設定と一致する必要があります。型設定が一致しない場合、カスタム文字セットの生成時にエラーが表示されます。

次の画面は、「型指定」タブ・ページを示しています。

図12-23 「型指定」タブ・ページ

図12-23の説明が続きます
「図12-23 「型指定」タブ・ページ」の説明

文字セット・カテゴリはASCII_BASEDで、BYTE_UNIQUEオプションが選択されています。

既存の文字セットを選択した場合、「型指定」タブ・ページのフィールドはすでに適切な値に設定されています。変更する特別な理由がないかぎり、これらの値を保持してください。設定の変更が必要な場合は、次のガイドラインを使用します。

  • 「FIXED_WIDTH」は、同じ長さの文字の文字セットを示すために使用します。

  • 「BYTE_UNIQUE」は、コード・ポイントのシングルバイト範囲がマルチバイト範囲と区別されていることを示します。先頭バイトのコードは、その文字がシングルバイトかマルチバイトかを示します。例: JA16EUC。

  • 「DISPLAY」は、格納用ではなくクライアントでの表示用にのみ使用される文字セットを示します。一部のアラビア語、デーバナーガリ語およびヘブライ語の文字セットは、表示用文字セットです。

  • 「SHIFT」は、シングルバイト文字とマルチバイト文字とを区別するために、追加のシフト文字が必要な文字セットに対して使用します。

次の画面は、ユーザー定義文字の追加方法を示しています。

図12-24 ユーザー定義文字データのインポート

図12-24の説明が続きます
「図12-24 ユーザー定義文字データのインポート」の説明

「文字データのマッピング」タブ・ページをオープンします。文字セット内で追加する文字の前になる文字を選択します。この例では、0xffローカル文字の値が選択されています。

1回に1文字を追加することも、テキスト・ファイルを使用して大量の文字をインポートすることも可能です。この例では、テキスト・ファイルをインポートしています。最初の列は、ローカル文字の値です。2列目はUnicode値です。このファイルには、次の文字の値が含まれています。

88a2 963f

88a3 54c0

88a4 611b

88a5 6328

88a6 59f6

88a7 9022

88a8 8475

88a9 831c

88aa 7a50

88ab 60aa

「ファイル」「インポート」「ユーザー定義文字データ」を選択します。

次の画面は、インポートした文字を文字セットの0xffの後に追加した状態を示します。

図12-25 文字セットの新しい文字

図12-25の説明が続きます
「図12-25 文字セットの新しい文字」の説明

12.6 Oracle Locale Builderを使用した新規言語ソートの作成

この項では、「照合ID」を10001に設定してMY_GENERIC_Mと呼ばれる新規の多言語ソートを作成する方法を示します。新規言語ソートの基礎としてGENERIC_M言語ソートを使用しています。次の画面に、開始方法を示します。

図12-26 照合の「一般」タブ・ページ

図12-26の説明が続きます
「図12-26 照合の「一般」タブ・ページ」の説明

フラグの設定は、自動的に導出されます。「SWAP_WITH_NEXT」は、タイ語とラオ語のソートに関係します。「REVERSE_SECONDARY」は、フランス語のソート用です。「CANONICAL_EQUIVALENCE」は、標準的な規則を使用するかどうかを決定します。この例では、「CANONICAL_EQUIVALENCE」がオンになっています。

ユーザー定義ソートのための「照合ID」(ソートID)の有効範囲は、単一言語照合の場合は1000から2000、多言語照合の場合は10000から11000です。

関連項目:

次の画面は、「Unicode照合順序」タブ・ページを示しています。

図12-27 「Unicode照合順序」タブ・ページ

図12-27の説明が続きます
「図12-27 「Unicode照合順序」タブ・ページ」の説明

この例では、文字の後にソートされるように数字を移動して、言語ソートをカスタマイズします。ステップは次のとおりです。

  1. 移動するUnicode値を選択します。前の画面では、\x0034 Unicode値が強調表示されています。「Unicode照合順序」タブ・ページでの値の位置は、ノードと呼ばれます。

  2. 「切取り」をクリックします。ノードを移動する位置を選択します。

  3. 「貼付け」をクリックします。「貼付け」をクリックすると、次の画面に示す「ノードの貼付け」ダイアログ・ボックスがオープンします。

    図12-28 「ノードの貼付け」ダイアログ・ボックス

    図12-28の説明が続きます
    「図12-28 「ノードの貼付け」ダイアログ・ボックス」の説明

    「ノードの貼付け」ダイアログ・ボックスでは、選択した位置の後にノードを貼り付けるか前に貼り付けるかを選択できます。隣に貼り付けるノードに対するノードのレベル(1次、2次または3次)を選択することもできます。

  4. ノードを貼り付ける位置とレベルを選択します。前の画面では、「後」および「1次」オプションが選択されています。

  5. 「OK」をクリックしてノードを貼り付けます。

    同様のステップに従って、他の数字を文字aからzの後の位置に移動します。

次の画面は、数字0から4を文字aからzの後の位置に移動した後の「Unicode照合順序」タブ・ページを示しています。

図12-29 変更後の「Unicode照合順序」画面

図12-29の説明が続きます
「図12-29 変更後の「Unicode照合順序」画面」の説明

この項の残りの部分は、次のトピックで構成されます。

12.6.1 同じ発音区別記号を持つすべての文字のソート順序の変更

次の例に、発音区別記号付きの文字のソート順序を変更する方法を示します。そのためには、特定の発音区別記号を含むすべての文字のソート順序を変更する方法と、一度に1文字ずつ変更する方法があります。この例では、曲折アクセント記号付きの各文字(ûなど)のソート順序を、チルドが付いた同じ文字の後になるように変更します。

「ツール」「標準規則」を選択して、現在のソート順序を確認します。これにより、次の画面に示されている「標準規則」ダイアログ・ボックスがオープンします。

図12-30 「標準規則」ダイアログ・ボックス

図12-30の説明が続きます
「図12-30 「標準規則」ダイアログ・ボックス」の説明

このダイアログ・ボックスは、アクセント記号付き文字が、対応する標準的な文字に分解される方法と現在のソート順序を示します。たとえば、ûu ^の組合せとして表されます。

関連項目:

標準的な規則の詳細は、「言語ソートと照合」を参照してください

(図12-26に示されている) Oracle Locale Builderの照合ウィンドウで、「空白以外の文字」タブをクリックします。「空白以外の文字」タブ・ページを使用すると、発音区別記号に対する変更がすべての文字に適用されます。次の画面は、「空白以外の文字」タブタブ・ページを示しています。

図12-31 同じ発音区別記号を持つすべての文字のソート順序の変更

図12-31の説明が続きます
「図12-31 同じ発音区別記号を持つすべての文字のソート順序の変更」の説明

曲折アクセント記号を選択して「切取り」をクリックします。「削除の確認」ダイアログ・ボックスで「はい」をクリックします。チルドを選択して「貼付け」をクリックします。「ノードの貼付け」ダイアログ・ボックスで「後」「2次」を選択して「OK」をクリックします。

次の画面は、新しいソート順序を示しています。

図12-32 同じ発音区別記号を持つ文字の新規のソート順序

図12-32の説明が続きます
「図12-32 同じ発音区別記号を持つ文字の新規のソート順序」の説明

12.6.2 発音区別記号を持つ1文字のソート順序の変更

発音区別記号を持つ特定の文字の順序を変更するには、その文字を適切な位置に直接挿入します。発音区別記号付きの文字は「Unicode照合順序」タブ・ページに表示されないため、新しい位置へのカット・アンド・ペーストはできません。

この例では、äのソート順序をZの後にソートされるように変更します。

「Unicode照合」タブをクリックします。äの隣に配置する文字Zを選択します。「追加」をクリックします。次の画面に示されている「新規ノードの挿入」ダイアログ・ボックスが表示されます。

図12-33 発音区別記号を持つ1文字のソート順序の変更

図12-33の説明が続きます
「図12-33 発音区別記号を持つ1文字のソート順序の変更」の説明

「新規ノードの挿入」ダイアログ・ボックスで「後」「1次」を選択します。äのUnicodeコード・ポイント値を入力します。このコード・ポイント値は、\x00e4です。「OK」をクリックします。

次の画面は、結果のソート順序を示しています。

図12-34 1文字を変更後の新規ソート順序

図12-34の説明が続きます
「図12-34 1文字を変更後の新規ソート順序」の説明

12.7 NLBファイルの生成とインストール

新規言語、地域、文字セットまたは言語ソートを定義した後は、NLTファイルから新規のNLBファイルを次のように生成します。

  1. ファイルの所有者(通常はユーザーoracle)として、ORA_NLS10ディレクトリ内で、NLSインストール・ブート・ファイル(lx0boot.nlb)とNLSシステム・ブート・ファイル(lx1boot.nlb)のバックアップを作成します。UNIXプラットフォームの場合は、次のようなコマンドを入力します。
    % setenv ORA_NLS10 $ORACLE_HOME/nls/data
    % cd $ORA_NLS10
    % cp -p lx0boot.nlb lx0boot.nlb.orig
    % cp -p lx1boot.nlb lx1boot.nlb.orig
    

    -pオプションを指定すると、元のファイルのタイムスタンプが保たれることに注意してください。

  2. Oracle Locale Builderで、「ツール」「NLBの生成」を選択するか、左側のバーで「NLBの生成」アイコンをクリックします。
  3. 「参照」をクリックして、NLTファイルが格納されているディレクトリを検索します。次に「位置」ダイアログ・ボックスを示します。

    図12-35 「位置」ダイアログ・ボックス

    図12-35の説明が続きます
    「図12-35 「位置」ダイアログ・ボックス」の説明

    NLTファイルは指定しないでください。Oracle Locale Builderは、各NLTファイルに対してNLBファイルを生成します。

  4. 「OK」をクリックしてNLBファイルを生成します。

    次の画面は、ディレクトリ内の全NLTファイルに対してNLBファイルが正常に生成されたことを示す最終的な通知を示しています。

    図12-36 「NLBの生成の成功」ダイアログ・ボックス

    図12-36の説明が続きます
    「図12-36 「NLBの生成の成功」ダイアログ・ボックス」の説明
  5. lx1boot.nlbファイルをORA_NLS10環境変数で指定したパスにコピーします。たとえば、UNIXプラットフォームの場合は、次のようなコマンドを入力します。
    % cp /directory_name/lx1boot.nlb $ORA_NLS10/lx1boot.nlb
    
  6. 新規のNLBファイルをORA_NLS10ディレクトリにコピーします。たとえば、UNIXプラットフォームの場合は、次のようなコマンドを入力します。
    % cp /directory_name/lx22710.nlb $ORA_NLS10
    % cp /directory_name/lx52710.nlb $ORA_NLS10

    ノート:

    NLTファイルが収容されているディレクトリにNLBファイルが生成されます。

  7. 新規に作成したロケール・データを使用できるように、データベースを再起動します。
  8. 新規のロケール・データをクライアント側で使用するには、NLBファイルをインストールしてからクライアントを終了し、再起動します。

    関連項目:

    ORA_NLS10環境変数の詳細は、「オンデマンドのロケール・データ」を参照してください

12.8 旧リリースOracle DatabaseからのカスタムNLBファイルのアップグレード

ロケール定義ファイルは、データベースのリリースに依存しています。たとえば、Oracle Database 9iおよびOracle Database 10gのNLBファイルは、Oracle Database 11のインストール環境などで直接サポートされていません。不具合の修正が必要になっても、パッチ・セット内のNLBファイルの形式が若干、変更されていることがあります。パッチ・セットに収容されているOracle提供のNLBファイルのいずれかが変更されている場合は、パッチ・セットまたはパッチ・セット更新(PSU)をインストールしたときに、ユーザーが設定した内容が上書きされる可能性があります。

ロケール・カスタマイズ・ファイルを現行リリースのデータベースから最新のリリースまたはパッチ・セットに移行するステップは、次のとおりです。

  1. ディレクトリをコピーし、カスタマイズしたNLBファイルまたはNLTファイルをそのディレクトリにコピーします。
  2. 最新リリースのデータベース、パッチ・セットまたはパッチ・セット更新を、必要に応じて既存のOracleホームまたは新しいOracleホームにインストールします。
  3. 新しいOracleホームまたは更新後のOracleホームのOracle Locale Builderを使用して、ステップ(1)でコピーしたファイルをそれぞれ開き、コピー元のディレクトリにNLT形式で保存します。
  4. 「NLBファイルの生成とインストール」の説明に従って、ここでも最新バージョンのOracle Locale Builderと同じコピー元のディレクトリを使用して、NLBの生成とインストールのステップを繰り返します。

Oracle Locale Builderは、旧バージョンのNLTファイルおよびNLBファイルの読込みと処理、さらに別のプラットフォームからのこれらのファイルの読込みと処理が可能である点に注意してください。ただし、Oracle Locale Builderでは、インストールされているOracle Databaseのリリースの最新の書式でNLTファイルが保存され、NLBファイルが生成されます。

12.9 同一プラットフォーム上のOracleインストール環境に対するカスタムNLBファイルのデプロイ

デプロイ元のカスタマイズの生成に使用するOracleホームと、データベースのリリース、パッチの構成、およびプラットフォームがまったく同じ別のOracleホームに、カスタマイズを追加するステップは、次のとおりです。

  1. ターゲットのOracleホームで、「NLBファイルの生成とインストール」のステップ1を実行します。
  2. ターゲットのOracleホームが別のマシン上にある場合は、FTPのバイナリ・モード、リモートにマウントされたファイル・システムへのコピー、rcpユーティリティのように、ファイルのバイナリ・レベルの整合性が維持される方式を使用して、カスタマイズしたNLBファイルと生成したlx1boot.nlbファイルをターゲットのコンピュータにコピーします。
  3. ターゲットのコンピュータで、カスタマイズしたNLBファイルとlx1boot.nlbファイルを含むディレクトリをdirectory_nameとして使用して、「NLBファイルの生成とインストール」のステップ5から8までを実行します。

12.10 別のプラットフォーム上のOracleインストール環境に対するカスタムNLBファイルのデプロイ

NLBファイルはリリースに応じて異なりますが、プラットフォームには依存しません。プラットフォームごとのバイナリ形式の違い(32ビットと64ビット、ビッグ・エンディアンとリトル・エンディアン、ASCIIとEBCDIC)は、NLBのロード時には透過的に処理されます。したがって、ロケール・カスタマイズ・ファイルを、Oracle Databaseのリリースとパッチ構成が同じで、オペレーティング・システム・プラットフォームが異なる別のOracle Databaseインストール環境にデプロイする場合は、次の2つの選択肢の中からいずれかを選択できます。

  1. カスタム.NLTファイルを新しいプラットフォームに上書きでコピーし、「NLBファイルの生成とインストール」の説明に従って、NLBの生成とインストールのステップを繰り返します。

  2. .NLBファイル一式(Oracle提供のNLBファイルとカスタムNLBファイルの両方)を新しいプラットフォームに上書きでコピーします。

2番目の選択肢を採用した場合、透過的なプラットフォームの処理が必要になるため、NLBのロードにかかる時間にある程度のオーバーヘッドが生じる可能性があることに注意してください。しかし、各NLBファイルは通常、Oracle DatabaseインスタンスまたはOracle Clientアプリケーションの起動後にのみロードされ、インスタンスまたはアプリケーションが停止するまではキャッシュされるため、このオーバーヘッドはごくわずかです。また、NLBファイルは必要になったときにロードされます。したがって、ほとんどのインストール環境では、存在するすべてのNLBファイルのうち、常にごく一部しかメモリーにロードされません。

2番目の選択肢は、Oracle Locale Builderがサポートされていないプラットフォーム用にファイルをカスタマイズするときに特に実用的です。

NLBファイル一式を新しいプラットフォームに上書きでコピーするステップは、次のとおりです。

  1. ターゲットのOracleホームを使用している、すべてのOracle DatabaseインスタンスとOracle Clientアプリケーションを停止します。

  2. ファイルを所有するユーザー(通常はユーザーoracle)になった状態で、すべてのNLBファイルをターゲットのOracleホームのORA_NLS10ディレクトリから、バックアップ用のディレクトリに移動します。UNIXプラットフォームの場合は、次のようなコマンドを入力します。

    % setenv ORA_NLS10 $ORACLE_HOME/nls/data
    % cd $ORA_NLS10
    % mkdir orig
    % mv *.nlb orig
    
  3. すべてのNLBファイルをソースのOracleホームNLBディレクトリからターゲットのOracleホームNLB($ORA_NLS10)ディレクトリにコピーします。FTPのバイナリ・モード、リモートにマウントされたファイル・システムへのコピー、rcpユーティリティのように、ファイルのバイナリ・レベルでの整合性が維持されるリモート・コピー方式を使用します。

  4. 必要に応じて、データベースのインスタンス、アプリケーションのいずれか、または両方を再起動します。

12.11 GINSTALLユーティリティを使用したJavaコンポーネントへのカスタムのロケール定義の追加

Ginstallユーティリティは、使用するアプリケーションのJavaコンポーネントにカスタム文字セット、言語、地域、および言語ソートを追加します。Locale Builderを使用して、カスタム文字セット、言語、地域、および言語ソートを定義します。カスタム定義を含むNLTファイルがLocale Builderによって生成されます。カスタム定義をJavaコンポーネントに追加するには、Ginstallを実行してgdk_custom.jarを生成します。

文字セット、言語、地域、および言語ソートにカスタム定義を追加する手順は、次のとおりです。

  1. Oracle Locale Builderを使用して、NLTファイルを生成します。

    カスタムのNLBファイルを旧リリースからアップグレードする場合、「旧リリースOracle DatabaseからのカスタムNLBファイルのアップグレード」で説明する手順に従ってください。

  2. Ginstall-addまたは-aオプションを指定して実行し、gdk_custom.jarを生成します。
    java -classpath $ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/lib/xmlparserv2.jar Ginstall -[add | a] <Name of NLT file>
    

    NLTファイルを生成するには:

    java -classpath $ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/lib/xmlparserv2.jar Ginstall -[add | a] <NLT file1>
     <NLT file2>
     <NLT file3>
    
  3. gdk_custom.jarを、orai18n.jarまたはorai18n-mapping.jarと同じディレクトリにコピーします。

カスタム定義を削除するには:

  • 次のようにして、Ginstallを実行します。

    java -classpath $ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/lib/xmlparserv2.jar Ginstall -[remove | r] <Name of NLT file>
    

カスタム定義を更新するには:

  • 次のようにして、Ginstallを実行します。

    java -classpath $ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/lib/xmlparserv2.jar Ginstall -[update | u] <Name of NLT file>

12.12 NLSカレンダ・ユーティリティを使用したカレンダのカスタマイズ

Oracle Databaseは、複数のカレンダをサポートしています。場合によっては、その中に、今後の元号の追加が必要なものや、地域的な要件に合せて、うるう年の日数の増減が必要なものがあります。Oracleの運用環境に必要な情報を追加する方法として、カレンダ機能の実行時に自動的にロードされる外部ファイルを使用できます。

カレンダのデータは、最初にテキスト・ファイルに定義します。このテキスト定義ファイルは、バイナリ形式に変換する必要があります。NLSカレンダ・ユーティリティ(lxegen)を使用すると、テキスト定義ファイルをバイナリ形式に変換できます。

テキスト定義ファイルの名前とlxegenユーティリティに対する位置は、プラットフォーム依存の値でハードコード化されています。UNIXプラットフォームの場合、ファイル名はlxecal.nltで、$ORACLE_HOME/nlsディレクトリにあります。テキスト定義ファイルのサンプルは、$ORACLE_HOME/nls/demoディレクトリに含まれています。

テキスト定義ファイル内の参照先カレンダの数に応じて、lxegenユーティリティによって、1つ以上のバイナリ・ファイルが生成されます。バイナリ・ファイルの名前もプラットフォーム依存の値でハードコード化されています。UNIXプラットフォームの場合、バイナリ・ファイルの名前はそれぞれ、lxecalah.nlb(アラビア語版ヒジュラ暦のうるう年)、lxecaleh.nlb(英語版のヒジュラ暦のうるう年)、lxecalji.nlb(日本の元号暦の元号)です。バイナリ・ファイルはテキスト・ファイルと同じディレクトリに生成され、同名のバイナリ・ファイルがあれば上書きされます。

バイナリ・ファイルが生成されると、そのファイルはシステムの初期化時に自動的にロードされます。このファイルを移動したり名前を変更しないでください。Oracle Locale Builderによって生成されるファイルとは異なり、カレンダ個別のバイナリ・ファイルはプラットフォームに依存します。Oracleソフトウェアのリリースとプラットフォームの組合せごとに別々に生成する必要があります。

カレンダ・ユーティリティを起動するには、コマンドラインから次のように入力します。

% lxegen

関連項目: