Global Solution Exchange (GSX) Copyright(c) Oracle Corporation 1998. All Rights Reserved. 1. Prob# 1025330.6 ORA-12705: WHEN RUNNING A 7.3.X CLIENT PRODUCT WITH NLS 2. Soln# 2073009.6 SET NLS_LANG TO A VALID VALUE AND VERIFY LOCATION OF OR 1. Prob# 1025330.6 ORA-12705: WHEN RUNNING A 7.3.X CLIENT PRODUCT WITH NLS Problem ID : 1025330.6 Affected Platforms : Generic: not platform specific Affected Products : Oracle Server - Enterprise Edition V7 Affected Components : RDBMS V07.03.XX Affected Oracle Vsn : V07.03.XX Summary: ORA-12705: WHEN RUNNING A 7.3.X CLIENT PRODUCT WITH NLS_LANG SET +=+ Problem Description: ==================== An ORA-12705 error is raised when trying to connect using a 7.3.x client product to any version of Oracle7 server when the NLS_LANG environmental variable is set. The set of client products can include any of the following: - SQL*Plus r3.3.x - Server Manager r2.3.x - Precompiler and OCI programs that has been linked with Oracle7 Server Release 7.3.x libraries - Developer/2000 r1.3 products This is an example of the error with SQL*Plus: % setenv NLS_LANG invalid_value % sqlplus system/manager ERROR: ORA-12705: invalid or unknown NLS parameter value specified Server Manager -------------- The problem shows differently with Server Manager when connecting INTERNAL, or when connecting as SYSOPER or SYSDBA. The connect is successful, but any attempt to access the database will fail. The initial CONNECT shows the message "Connected to an idle instance." The following message is returned whether the instance is already running or not: % setenv NLS_LANG invalid_value % svrmgrl SVRMGR> connect INTERNAL Connected to an idle instance. - OR - % svrmgrl SVRMGR> connect system/manager as SYSDBA Connected to an idle instance. NOTE: The instance is running in this example, despite the "Connected to an idle instance" message. If the instance is already running, suppose another startup is issued. The following errors are returned: SVRMGR> startup LCC-00161: ORACLE error (possible syntax error) parameter [NULL] ORA-01031: insufficient privileges If the instance is not running and startup is issued, the instance starts, the following error is returned: SVRMGR> startup ORACLE instance started. ORA-01012: not logged on If connecting normally (not SYSDBA or SYSOPER) as any user other than INTERNAL, ORA-12705 is returned. Problem Explanation: ==================== The automatic ALTER SESSION done during login will return an ORA-12705 error if an invalid value for NLS_LANG is specified, and the login will not proceed. The check is against the valid values for the client-side product you are using, not the valid values for the Oracle7 server. The valid values for the client and the server may not be identical. This error may also occur if NLS_LANG is specified correctly, but the environmental variable ORA_NLS32 does not refer to the proper NLS boot files. ORA-12705: "invalid or unknown NLS parameter value specified" // *Cause: There are two possible causes: Either an attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value; or the NLS_LANG environment variable contains an invalid language, territory, or character set. // *Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable. ORA-01012: "not logged on" // *Cause: A host language program issued an Oracle call, other than OLON or OLOGON, without being logged on to Oracle. This can occur when a user process attempts to access the database after the instance it is connected to terminates, forcing the process to disconnect. // *Action: Log on to Oracle, by calling OLON or OLOGON, before issuing any Oracle calls. When the instance has been restarted, retry the action. ORA-01031: "insufficient privileges" // *Cause: an attempt was made to change the current username or password without the appropriate privilege. This error also occurs if attempting to UPDATE a table with only SELECT privileges, if attempting to CONNECT INTERNAL, or if attempting to install a database without the necessary operating-system privileges. When Trusted Oracle7 is configured in DBMS MAC, this error may occur if the user was granted the necessary privilege at a higher label than the current login. // *Action: Ask the database administrator to perform the operating or grant the required privileges. For Trusted Oracle7 users getting this error although granted the appropriate privilege at a higher label, ask the database administrator to regrant the privilege at the appropriate label. LCC-00161: "Oracle error (possible syntax error) parameter <name> // *Cause: A parameter was specified incorrectly, possible with a syntax error. // *Action: Correct the error as described in the accompanying message. Problem References: =================== Oracle Documentation: --------------------- Oracle7 server SQL Reference, "ALTER SESSION command" Additional Search Words: ======================== ORA_NLS, ORA_NLS32, ORA-1012, ORA-1031, LCC-161, d2k, dev2k nlslang +==+ Diagnostics and References: * {515.6,Y,100} TRYING TO CONNECT TO A DATABASE * {7350.6,Y,100} ORA-12705: INVALID OR UNKNOWN NLS PARAMETER VALUE SPECIFIED * {8557.4,Y,100} LCC-00161: ORACLE ERROR (POSSIBLE SYNTAX ERROR) PARAMETER <%.*S> * {8664.4,Y,100} ORA-01012: NOT LOGGED ON * {8665.4,Y,100} ORA-01031: INSUFFICIENT PRIVILEGES * {8666.4,Y,100} NLS_LANG ENVIRONMENT VARIABLE 2. Soln# 2073009.6 SET NLS_LANG TO A VALID VALUE AND VERIFY LOCATION OF OR Solution ID : 2073009.6 For Problem : 1025330.6 Affected Platforms : Generic: not platform specific Affected Products : Oracle Server - Enterprise Edition V7 Affected Components : RDBMS V07.03.XX Affected Oracle Vsn : V07.03.XX Summary: SET NLS_LANG TO A VALID VALUE AND VERIFY LOCATION OF ORA_NLS32 +=+ Solution Description: ===================== Set the environmental variable NLS_LANG to a valid value before starting the client product. If NLS_LANG is set correctly, ensure ORA_NLS32 is set to the directory where the NLSRTL r3.2 boot files are located. NLS_LANG -------- NLS_LANG must be set to a value that is supported by the client product. The Installation Guide for the client product contains a list of valid NLS_LANG values for that particular product. If the product was distributed with the Oracle7 Server (e.g., SQL*Plus) all the values specified in the Installation Guide for the Oracle7 Server are valid. NOTE: The set of valid values for a specific Oracle7 Server release can be different from that for a specific client-side product release, for example Developer/2000. This arises because each product may be using different releases of the NLS RunTime Library (NLSRTL) and/or releases for different platforms. An example of a valid setting for NLS_LANG for the client environment is: For the C shell: % setenv NLS_LANG american_america.us7ascii For the Bourne or Korn shell: $ NLS_LANG=american_america.us7ascii $ export NLS_LANG V$NLS_VALID_VALUES ------------------ The data dictionary fixed table V$NLS_VALID_VALUES returns all valid language, territory, sorting sequence and character encoding scheme names for that specific SERVER release (not the client release). ORA_NLS32 --------- If NLS_LANG is set correctly, ensure ORA_NLS32 is set to the directory where the NLSRTL r3.2 boot files are located. If ORA_NLS32 is not set, the default location the client product will access is "$ORACLE_HOME/ocommon/nls/admin/data". An example of a valid directory setting for ORA_NLS32 is: For the C shell: % setenv ORA_NLS32 $ORACLE_HOME/ocommon/nls/admin/data For the Bourne or Korn shell: $ ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data $ export ORA_NLS32 Solution Explanation: ===================== An invalid value for NLS_LANG prior to Oracle7 Server Releases 7.0, 7.1, and 7.2 is replaced by a default value, usually "American_America.US7ASCII". Allowing NLS_LANG to default can cause unexpected behavior when the default <character encoding scheme> is not the one intended. Oracle7 Server Release 7.3 products (and any client products built with those libraries) return an error message if NLS_LANG is invalid, and logon will not proceed. V$NLS_VALID_VALUES ------------------ It is important to realize that V$NLS_VALID_VALUES only tells you what is supported by that Server release, and any products using the same version of NLSRTL (on that platform) that the Server does. It is a safe assumption that this applies, for example, to Server Manager, Import and Export. It may not be such a safe assumption for products such as Developer/2000, even if these products are running on the same platform. There is no direct way to find out which character encoding schemes, for example, are supported by a specific release of Oracle Forms, other than checking the Installation Guide, release notes and/or Oracle Worldwide Support. Additional Information: ======================= Oracle Documentation: --------------------- Oracle7 Installation Guide, Release 7.3 - Appendix A Oracle7 Server Reference Manual, Release 7.3 - Chapter 4 Developer/2000 Installation and Configuration Guide, Release 1.0 - Chapter 5 Developer/2000 Installation Guide, Release 1.3 - Chapter 5 +==+ |