我在 Debian Linux 上安装了 Oracle XE,字符集配置为 AL32UTF8。有多个客户端应用程序从 Windows 连接到数据库,使用不同的语言环境 - 法语等,而不是英语。这些应用程序将所有客户端数据放入数据库,没有任何转换,法语文本数据可以正确显示,这没问题。
但是如果审计表中的文本包含任何非英文字符,则看起来像“??????”。我想这是因为审计记录进入不同语言环境的数据库,并且它不依赖于客户端的全球化/语言环境设置。
如何解决这个全球化问题?谢谢!
答案1
可能的情况是,审计数据以法语正确保存,但您的客户端不支持它,因此您的 Oracle 客户端将法语字母翻译为 ????。
- 您的客户端/环境的 NLS_LANG 是什么?(例如,从您的环境)
- 为了检查数据是否正确存储在 sys.aud$ 表中,请运行:
SELECT username, ascii(username) from DBA_AUDIT_TRAIL;
-- 可选地使用 WHERE 子句将其限制为几个可疑行
如果所有 ??? 字符都具有相同的 ascii 代码,则 Oracle 会存储 ???。如果每个 ??? 都有不同的 ascii 代码,则 Oracle 会存储法语字母,而您的客户端 NLS_LANG 配置不支持法语字母。
我希望这能帮助你解决问题...