ORA-01890: NLS error detected

文档解释

ORA-01890: NLS error detected

Cause: An NLS error was detected.

Action: Look for additional error messages and take appropriate action. If there are no additional errors, call Oracle Worldwide Support.

ORA-01890错误是一个通用及全局错误,它表示操作中预期的一个本地化参数格式不正确。这个错误在系统及客户端之间无缝交互以及字符的翻译过程中可能会出现。

官方解释

常见案例

正常处理方法及步骤

1)首先,您需要找出导致 ORA-01890 的原因,对 SQL 语句的每一列运行以下查询:

SELECT data_type

FROM user_tab_columns

WHERE table_name = ‘SOME_TABLE’

AND lower(column_name) = ‘somecolumn’;

2)检查 NLS 参数:

SELECT *

FROM nls_session_parameters

ORDER BY parameter;

3)检查NLS_LANG 全局变量:

SHOW PARAMETER NLS_LANG

4)查看游标是否已设定为保存PDSE:

SELECT value

FROM v$parameter

WHERE name = ‘open_cursors’;

如果 PDSE 被指定为保存,则需重新设置该参数:

ALTER SYSTEM SET open_cursors=xxx;

5)检查字符集是否相同:

SELECT value

FROM nls_database_parameters

WHERE parameter = ‘NLS_CHARACTERSET’;

SELECT value

FROM nls_instance_parameters

WHERE parameter = ‘NLS_CHARACTERSET’;

如果两个值不同,请联系系统管理员,重新设置它们。

6)最后查看在系统上是否存在日期格式不匹配的问题:

SELECT*

FROMNLS_SESSION_PARAMETERS

WHERE PARAMETER=’NLS_DATE_FORMAT’;

如果格式不匹配,您可以尝试将 NLS_DATE_FORMAT 参数更改为和数据库中相匹配的格式,如:

ALTER SESSION SET NLS_DATE_FORMAT=’dd-mm-yyyy hh24:mi:ss’;

你可能感兴趣的