そんなわけで、その影響について調べてみることにする。
ウチのWindowsに入っているOracleは・・・
NLS_CHARACTERSETがJA16SJISだ。
(DBCAでカスタムデータベース以外で作成するとこうなるはず)
職場のDBではJA16SJISTILDEなので、変更したい。
・・・が。
ダメだった。
ところで、「スーパーセット」ってなんだ?
スーパーでお肉とかが3パック1000円とかで売っていたりするが、そういうセットなのか。
スーパーセット、それで通じるのか?
まぁ調べてみることにしよう(後日)。
で、とっととあきらめて、DBCAを使ってDBを再作成することにした。
文字セットはカスタムデータベースで作成しないと任意に設定できない。
「カスタム」だから、いろいろと設定させられるが、データベース名とパスワードくらい指定して、あとはデフォルトのまま、ぽんぽんと進む。
で、「初期化パラメータの設定」のところで、キャラクタセットを指定する。
というわけで、現在DB再作成中・・・。
大したサイズじゃないのに、時間が掛かるわ。
で、サブセットっていうのは、ある仕様のうちその一部分を満たす仕様ということだそうな。
つまり、JA16SJISはJA16SJISTILDEのサブセットということになるわけだ(たぶん)。とすると、当然変更は無理だわな。
Shift The Oracleに以下のような記述があった。
http://www.shift-the-oracle.com/oracle/limits.html
『CREATE DATABSE で作成したデータベースのキャラクタセットは変更することができない。
( ALTER DATABASE CHARACTER SET 構文は無くなった。(実行ができるか未検証) )
日本語キャラクタセットの場合で望まれているであろう、EUC⇔SJISなどのコード変換を伴う変更は、もともとサポートされていない。 ALTER DATABASE CHARACTER SET で行なうことができた変更は、すべての文字に対して移行先に文字が存在し、同じコードポイント(バイト列)をもつことが必要=スーパーセットである場合に限られていた。』
というわけで、JA16SJISTILDEからJA16SJISには変更できそうな気がするが・・・あ、違うか。
チルダとかのコードが違うんだよね。
試してみればわかることなんだろうけど、今はちょっとパス。
で、DB再作成後の設定はこうなっている。
ちゃんとJA16SJISTILDEになった。
めでたしめでたし。
というわけで、つづく。