I am trying to login to an Oracle 10g database vía sqlplus.

In the nls_session_parameters I need NLS_DATE_LANGUAGE in American, but I always have Spanish.

In the database server my NLS_LANG is SPANISH_SPAIN.WE8ISO8859P1.


I tried setting this with an after logon trigger, but it does not work. If I change this setting vía ALTER SESSION it works ok, but it is not a solution.

The database server is a Red Hat Enterprise 5.6 The client is a CentOS 7.5. I am using Oracle Instant client

I do not know how to continue...

  • NLS_LANG exist only on your client. There is no NLS_LANG on database server side. Commented Feb 18, 2019 at 21:39
  • If your NLS_LANG is "AMERICAN_AMERICA.UTF8" then you also should get Spanish date names. Verify carefully if environment is properly set and exported. Is there any startup script login.sql or glogin.sql? Commented Feb 18, 2019 at 21:44

1 Answer 1


I am presuming you are setting it to AMERICAN_AMERICA.* with your ALTER SESSION.

In my experience the language setting has to match between the client, server and nls_database_parameters. It might be a big mission for your DBA to convert your character set to AMERICAN_AMERICA.UTF8 using the Database Migration tool, so would it be possible to make your change to NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1 on the server?

Another problem is that WE8ISO8859P1 is a subset of UTF8 so when your RDBMS does its single-pass (or more) conversions when transporting data between the layers, you can get lossy results and see strange characters returning to your client. So you would be better off to set your client and server locale to WE8ISO8859P1 to match your nls_database_parameters on the database.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.