Oracle 10.2.0.2.0 on Sun Solaris 10 and is installing CRM 9.0 + P 8.48.xx manually. Launched Data Mover in Bootstrap mode, navigated to \File\Database Setup, selected Unicode as Database Type and UTF-8 as Character Set, clicked on Next, selected Demo for the Database Type, added ‘PeopleSoft CRM Database – US English’ then clicked on Next. The following error message appeared then: Character Length Semantics (CLS) is not enabled.
Note: This issue did not occur when using HCM 8.9
The PeopleSoft Unicode implementation for PT 8.48 no longer triples the VARCHAR2 datatype columns. Instead it relies on an Oracle feature called Character Lenght Semantics. This parameter is not needed for non-unicode DBs or for unicode application databases prior to release 9.
This ”Character Length Semantics (CLS) is not enabled” error will occur if Data Mover detects that NLS_LENGTH_SEMANTICS = CHAR” is not set in the init.ora file, if not enabled then Data Mover will fail. CLS should be enabled when running the createdb.sql script. Check out that script and make sure you build your database with the CLS option set to ”NLS_LENGTH_SEMANTICS=CHAR” instead of ”’NLS_LENGTH_SEMANTICS=BYTE” which is the default setting.
Background information on changing Length Semantics:
In single-byte character sets, the number of bytes and the number of characters in a string are typically the same. In multibyte character sets, a character or code unit consists of one or more bytes. Calculating column lengths in bytes is called byte semantics, while measuring column lengths in characters is called character semantics. Oracle9i allows column maximum length constraints to be expressed in character semantics, offering this way an alternative to redefining the byte sizes of columns. Length semantics are useful for both handling and defining the storage requirements for multibyte strings of varying width characters. For example, you are migrating from an 8-bit Western European character set to a Unicode database (AL32UTF8). Suppose that you have existing VARCHAR2 columns that contain characters with diacritic marks. The scan indicates these columns would need to be resized to accommodate the expansion in the migration to a byte semantic multibyte database. Additionally you plan to add Asian data to your system. Using character semantics for your new migrated database may offer the best solution – particularly when the requirements for what type of information will be stored in these columns do not change. By changing a VARCHAR2(10 BYTE) column definition to a VARCHAR2(10 CHAR) definition you ensure that 10 characters will still fit in the column after migration even if they expand to more than 10 bytes of binary codes.
The NLS_LENGTH_SEMANTICS initialization parameter determines whether columns of character datatypes use byte or character semantics when they are created without an explicit qualifier. Byte semantics is the default for the database character set. Character length semantics is the default and the only allowable kind of length semantics for NCHAR datatypes. Length semantics can be explicitly specified in definitions of columns of CHAR datatypes by appending the BYTE or CHAR qualifier to the length value. The user cannot specify the qualifiers for NCHAR definitions. Like with column length adjustments, if the original copy of a database migrated through Export and Import utilities is not used after the migration, altering the length semantics can be done before the export step (but after taking a backup). This allows the Import utility to automatically create tables with correct column lengths and load data without truncation errors in a single run. Otherwise, tables have to be pre-created in the new database.