TOPサーバ構築・運用> Oracle Database 10gで必要な対処
Vista&データベース
Windows Vistaで発生するデータベーストラブル対応指南

第4回:Oracle Database 10gやMySQLで必要な対処

著者:一志 達也   2007/7/25
1   2  3  4  次のページ
Oracle Database 10gで必要な対処

   自社製品としてもERPを有し、世界の拠点で共通の基幹系にも使われるOracle Databaseは、Unicodeへの対応も早かった。今回話題のJIS X 0213:2004に対応するために必要なUnicode 3.2については、Oracle Database 10g以降での対応となっている。したがって、Vista環境で利用する際には、それ以降のバージョンを使う必要がある。

   SQL Serverにもデータ型の先頭に「n」がつくものと、そうでないものがあったように、Oracle Databaseにもnvarchar2やncharといったデータ型が用意される。しかし「JIS X 0213:2004に対応する」という意味では、これらのデータ型を使う必要はない。

   それは一般に用いられているcharやvarchar2といった「n」の付かないデータ型でも、Oracle Databaseの場合にはサロゲートペアで扱われる文字も含めてJIS X 0213:2004に対応できるためである。またSQL Serverの場合は必要とされていたUnicodeの文字列の前に付けるプリフィックスもOracle Databaseでは必要ない。

   これから実験を行っていくが、これらが事実であるならばOracle DatabaseでのJIS X 0213:2004対応はSQL Server 2005よりも遙かに簡単なものとなりそうだ。

キャラクタセットの設定はAL32UTF8に

   とはいえ、Oracle Databaseでは何もしなくていい、というものではない。オラクルのユーザであれば承知していると思うが、Oracle Databaseにはデータベースへ格納する文字コードを決定づける「キャラクタセット」を定義する必要がある。日本語を中心に取り扱うシステムでは、JA16SJISやJA16EUCを設定しているのではないだろうか。

   これらのキャラクタセットでは、charやvarchar2といったデータ型でUnicodeを扱えないので、それをUnicodeに対応したものへ変更する必要がある。JIS X 0213:2004に対応するという観点で考えれば、AL32UTF8を設定するのが妥当なところだろう。

   ではすでに存在するデータベースの場合、どうやって変更するのかという問題が浮上する。

   データベースのキャラクタセットは、データベースを作成する際に決定されるので、本来はデータベースを作成し直さなくてはならない。データをすべてエクスポートした上でデータベースを再作成し、再度データをインポートするのである。これはSQL Server 2005でシステムデータベースも含めて、照合順序を変更するために再作成が必要であることに似ている。

   キャラクタセットの変更の詳細はマニュアルを参照していただきたいのだが、CSALTERというスクリプトで変換する方法も用意されている。この方法で移行できるのは元々のキャラクタセットが新しいもののサブセットであることが求められるし、それでもすべてを完全に移行できるかどうかはDatabase Character Set Scannerユーティリティ(CSSCAN)の結果をみないと何ともいえない。推奨されるのは、やはりデータベースを再作成する方法ではあるが、どうしてもという場合の手段として知っておいても損はない。



身近なところにあるJIS X 0213:2004を必要とする文字

   サロゲートペアを含め、JIS X 0213:2004で追加された、第3水準や第4水準の文字は一体どれくらいの頻度で使われるのだろう。そもそも、対応する必要などあるのだろうか。そう感じる方もいることだろう。

   筆者も気になって調べてみたのだが、意外と身近なところで必要なことがわかった。たとえば、東日本旅客鉄道(JR東日本)の鉄という字は、本来は「金」に「矢」なのである。あるいは「麹町」「醤油」「刺繍」「石鹸」なども、本来はJIS X 0213:2004で追加された文字を使うのが正しいのだ。

   正しい漢字を正しく使うという日本人として当然のことを、コンピュータの都合で忘れていたとさえいえるのかもしれない。

1   2  3  4  次のページ


一志 達也
著者プロフィール
一志 達也
SI企業において、アプリケーション開発や、データベースを中心としたインフラを担当。開発者向け、初心者向けの講座を得意とする。著書に「やさしいOracle PL/SQL入門」「Oracle10g 真剣勝負」などがある。


INDEX
第4回:Oracle Database 10gやMySQLで必要な対処
Oracle Database 10gで必要な対処
  事前実験:キャラクタセットの確認
  実験3:文字の長さを正しく計測できるかやってみる
  MySQLでは?