インストール中のキャラクタ・セット選択について
データベースを作成する前に、使用するキャラクタ・セットを決定します。
データベースを作成した後でキャラクタ・セットを変更すると、一般的に、時間およびリソースの面で大きなコストがかかります。このような処理を行うには、データベース全体をエクスポートした後で再びインポートすることにより、すべての文字データの変換が必要な場合もあります。そのため、データベース・キャラクタ・セットは、インストールの時点で慎重に選択することが重要です。
Oracle Databaseでは、キャラクタ・セットを次のものに使用します。
-
SQL文字データ型(
CHAR
、VARCHAR2
、CLOB
、およびLONG
)で格納されているデータ。 -
表名、列名、PL/SQL変数などの識別子。
-
ストアドSQLおよびPL/SQLソース・コード(このコードに埋め込まれたテキスト・リテラルも含む)。
Oracle Database 12cリリース2 (12.2)以降、汎用/トランザクション処理またはデータ・ウェアハウスのテンプレートから作成されたデータベースのデフォルトのデータベース・キャラクタ・セットは、Unicode AL32UTF8
です。
Unicodeは、現在世界で使用されている言語のほとんどをサポートしている汎用キャラクタ・セットです。また、現在では使用されていない歴史的な文字(アルファベット)も多数サポートしています。Unicodeは、Java、XML、XHTML、ECMAScript、LDAPなど、多くのテクノロジのネイティブ文字コードです。Unicodeは、インターネットや世界経済をサポートしているデータベースに非常に適しています。
AL32UTF8
はマルチバイト・キャラクタ・セットであるため、文字データに対するデータベース操作の速度は、WE8ISO8859P1
やWE8MSWIN1252
などのシングルバイト・データベース・キャラクタ・セットと比較すると若干遅い可能性があります。使用する文字がASCIIのレパートリ以である大部分の言語について、その言語のテキストに必要な記憶領域をみると、その言語をサポートしているレガシー・キャラクタ・セットを使用した場合よりもAL32UTF8
を使用した場合の方が大きくなります。CLOB
(キャラクタ・ラージ・オブジェクト)列に保存される場合のみ、英語データにはより多くの領域が必要になります。NUMBER
またはDATE
などの文字以外のデータ型の記憶域は、キャラクタ・セットに依存しません。Unicodeでは、汎用性や柔軟性があるために、通常はこうした過剰な負担が生じます。
データベースで単一グループの言語を必ずサポートする必要があり、互換性、記憶域またはパフォーマンス要件を満たすためにレガシー・キャラクタ・セットが重要である場合にのみ、レガシー・キャラクタ・セットを検討します。この場合、対象のデータベースに接続しているクライアントに最も多く使用されているキャラクタ・セットを、データベース・キャラクタ・セットとして選択します。
マルチテナント・コンテナ・データベース(CDB)のデータベース・キャラクタ・セットにより、後でプラグインできるデータベースが決まります。CDBに選択したキャラクタ・セットが、このCDBにプラグインするデータベースのデータベース・キャラクタ・セットと互換性があることを確認します。CDBのキャラクタ・セットとしてUnicode AL32UTF8
を使用する場合は、LinuxのOracle Databaseでサポートされている任意のデータベース・キャラクタ・セットでプラガブル・データベース(PDB)をプラグインできます。
関連項目:
マルチテナント・コンテナ・データベース(CDB)のデータベース・キャラクタ・セットの選択の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください