IBM Support

What role does ORACLE_NLS_LENGTH_SEMANTICS in sandbox.cfg play in enabling multibyte support?

Question & Answer


Question

ORACLE_NLS_LENGTH_SEMANTICS is a property provided in sandbox.cfg. This can be assigned two values - 1. CHAR 2. BYTE (default) In order to enable multibyte Support, the following was done - 1. Set ORACLE_NLS_LENGTH_SEMANTICS=CHAR 2. Drop the OOB tables 3. Run dbverify.cmd/dbverify.sh to generate the columns for all tables 4. The tables are still generated in BYTE format and not CHAR. Why is this so?

Cause

ORACLE_NLS_LENGTH_SEMANTICS property is used to get DB length semantics, so column size calculations in product are correct, it doesn't set nls_length_semantics at Oracle DB.

Answer

In order to enable multibyte Support , the application provides two options -


Option 1-
If you are using a multi-byte character set, set the following and restart Oracle: nls_length_semantics=CHAR

Option 2 - You can run the following prior to running any create table scripts:
alter session set nls_length_semantics = CHAR

The SchemaSynchronizer merely compares column size of old entity(DB) and new entity(entity XML). During this, the ORACLE_NLS_LENGTH_SEMANTICS property is used to find exact column size of old column size. If it finds column is modified, alter command will be issued, the type of the modified columns will be the format of what is set at the DB

[{"Product":{"code":"SS6PEW","label":"Sterling Order Management"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"--","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"9.3;9.4;9.5","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
16 June 2018

UID

swg22010696