dポイントプレゼントキャンペーン実施中!

英語OS上にOracleをインストールし、
Oracle上では日本語のデータを格納する必要がある。

/etc/sysconfig/i18nの設定は
LANG="en_us.utf-8"
SUPPORTED="en_us.utf-8:en_us:en:ja_jp.eucjp:ja_jp:ja"
sysfont="latarcurheb-sun16"
で固定。
(エラーメッセージを英語で収集する必要があるため)

この状態でOracleをインストールしたところ、
インスタンスのnls_languageなどを日本語にしても、
日本語データを格納しても正しく取り出すことができません。

select * from nls_database_parameters;
の結果は
NLS_LANGUAGE AMERICAN

select * from v$nls_PARAMETERS;
の結果は
NLS_LANGUAGE JAPANESE

この場合、Oracleインストールの際に
環境変数のLANGを一時的に
LANG=ja_jp.eucjp
に変更することで対応可能でしょうか。
それとも他に何か対応方法は有りますでしょうか?
宜しくお願いいたします。

A 回答 (2件)

データの漢字変換に問題があるのではないでしょうか。



漢字データの内部の格納コードを以下のSQLで確認してください。
そして、16進コードと文字がコード表と一致していますか?
一致するなら、取り出す側の問題となり。
一致しなければ、データ投入側の変換問題です。
どちらも 投入するクライアントの NLS_LANGの設定ミス
と思われます。

-- kanji_columnを16進で取り出す
select dump(kanji_column, 1016)
from kanji_table
where rownum <= 10
    • good
    • 0
この回答へのお礼

回答に気づく前に再インストールを実施してしまったため、
確認することはできませんでした。

UFT8でinsert用sqlファイルを作成し、
Oracleを実行しているマシン上からsqlplusで投入、
取り出しを行っても、うまく表示することはできませんでした。
(NLS_LANGはjapanese_japan.al32utf8)

結果として、Oracleを一度アンインストールし
oracle install userの環境変数を一時的に
LANGをja_jp.utf8
LANGVARをja_jp.utf8
NLS_LANGをjapanese_japan.al32utf8
に変更し、再インストールを行ったところ、
正常にデータの書き込み、取り出しが可能になりました。
(以前は
LANG=en_us.utf-8
LANGVAR=en_us-utf-8:en_US:en
NLS_LANG=japanese_japan.al32utf8
でインストールを行い、データの入出力の際は
LANG=ja_jp.utf8
LANGVAR=ja_jp.utf8
NLS_LANG=japanese_japan.al32utf8
にしてみたりしたが、駄目だった)

教えて頂いたselect文を実行することはありませんでしたが、
今後のためにも覚えておこうと思います。
有難う御座いました。

お礼日時:2004/11/18 10:24

文字コードとLANGUAGEを混同されておりませんでしょうか?



環境変数 NLS_LANGを調べてみてください

NLS_LANG=language_territory.charset で構成されます。

文字コードは、charsetですので NLS_LANGUAGEを変更しても
メッセージやソートなどの条件に影響するだけとなります。
また、データベースの作成時に、キャラクタセットを指定しなければ
ASCIIで作成されていると思われます。

再インストールはしなくても、データベースの再作成で済むのではないでしょうか。
CREATE DATABASE 文の CHARSETを確認してください。
    • good
    • 0
この回答へのお礼

回答有難う御座います。
NLS_LANG=japanese_japan.al32utf8
CREATE DATABASE 文の CHARSET はUTF8ですので、
特に問題はないと思っています・・・

お礼日時:2004/11/16 16:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!