
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 구성은 프랑스어 문자를 지원하지 않습니다.
문제 해결에 도움이 되길 바랍니다...