
У меня установлен Oracle XE на Debian linux, а набор символов настроен на AL32UTF8. Есть несколько клиентских приложений, которые подключаются к базе данных из Windows с разными локалями - французской и т. д., а не английской. Это нормально со всеми клиентскими данными, которые эти приложения помещают в базу данных, ничего не преобразуется, и текстовые данные на французском языке отображаются правильно.
Но тексты в таблицах аудита выглядят как '??????', если содержат любой неанглийский символ. Я предполагаю, что это происходит потому, что записи аудита попадают в базу данных в другой локали, и это не зависит от настроек глобализации/локали клиента.
Как можно решить эту проблему глобализации? Спасибо!
решение1
Вероятный вариант — данные аудита сохранены правильно на французском языке, но ВАШ клиент его не поддерживает, поэтому ваш клиент Oracle переводит для вас французские буквы на ????.
- Каков NLS_LANG вашего клиента/среды? (например, из вашей среды)
- Чтобы проверить, правильно ли сохранены данные в таблице sys.aud$, выполните:
SELECT username, ascii(username) from DBA_AUDIT_TRAIL;
--опционально с предложением WHERE, чтобы ограничить его несколькими подозрительными строками
Если все символы ??? имеют одинаковый код ascii, Oracle сохраняет ???. Если каждый ??? имеет разный код ascii, Oracle сохраняет французские буквы, а конфигурация вашего клиента NLS_LANG не поддерживает французские буквы.
Надеюсь, это поможет вам устранить неполадки...