1.1 Background

NLS_LENGTH_SEMANTICS parameter allows you to specify the length of a column datatype/PLSQL variable in terms of characters (CHAR) instead of the default BYTE. Typically, you would need this if you were to deal with (in PL/SQL code) and store data that contains multi-byte characters such as Japanese or Mandarin characters.

Oracle strongly recommends that you do not set NLS_LENGTH_SEMANTICS parameter on instance level (i.e. in the server parameter file) but only use it to alter session-level semantics as necessary. From MOS note 144808.1:

“Oracle advices to use explicit CHAR semantics in the SQL or PL/SQL syntax

OR

To make sure your application does an "ALTER SESSION SET

NLS_LENGTH_SEMANTICS=CHAR;" when connecting if CHAR semantics is required but the semantic is not defined explicit in SQL.”

Based on this note and other available documentation for the parameter, we recommend an approach in the next section, which should be followed in sites where multi-byte character support is required.

Note:

SR with oracle mentioned below is feasible. (SR 3-16364463401)