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
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg22010696