Debian の監査テーブルにおける Oracle データベースの文字セットの問題

Debian の監査テーブルにおける Oracle データベースの文字セットの問題

Debian Linux に Oracle XE をインストールし、文字セットを AL32UTF8 に設定しました。Windows からデータベースに接続するクライアント アプリケーションは複数あり、ロケールは英語ではなくフランス語などです。これらのアプリケーションがデータベースに入力するすべてのクライアント データは問題なく、何も変換されず、フランス語のテキスト データも正しく表示されます。

しかし、監査テーブル内のテキストに英語以外の文字が含まれている場合、テキストは「??????」のように見えます。これは、監査レコードが異なるロケールのデータベースに保存され、クライアントのグローバリゼーション/ロケール設定に依存しないためだと考えられます。

このグローバル化の問題はどのように解決できるでしょうか? よろしくお願いします!

答え1

おそらく、監査データはフランス語で正しく保存されているが、クライアントがそれをサポートしていないため、Oracle クライアントがフランス語の文字を ???? に翻訳しているということになります。

  1. クライアント/環境の NLS_LANG は何ですか? (たとえば、自分の環境から)
  2. データが sys.aud$ テーブルに正しく保存されているかどうかを確認するには、次のコマンドを実行します。

SELECT username, ascii(username) from DBA_AUDIT_TRAIL; --オプションでWHERE句を使用して、疑わしい行をいくつかに制限する

すべての ??? 文字が同じ ASCII コードを持つ場合、Oracle は ??? を保存します。すべての ??? が異なる ASCII コードを持つ場合、Oracle はフランス語の文字を保存しますが、クライアントの NLS_LANG 構成ではフランス語の文字がサポートされません。

トラブルシューティングに役立つことを願っています...

関連情報