You could change your DDL to always explicitly specify byte or char, e.g. create table test (v1 varchar2 (10 char)) ; Or create table test (v1 varchar2 (10 byte)) ; My opinion is that the explicit specification is the safest approach in the long run. Thank you for informing the list of the bug. -----Original Message----- Fuad Arshad yes, thats true but as we just found out this is a BUG the description is as below and as helpful as oracle always is its not fixed till 10gR2 [BUG:1488174] UNICODE: ALTER SYSTEM SET NLS_LENGTH_SEMANTICS DOESN'T TAKE EFFECT (this is an internal bug, sorry) Fixed Ver(s): will not be fixed before 10g R2 Testcase: alter system set nls_length_semantics='CHAR' create table test(v1 varchar2(10)); it should be 10 character, but actually, it is 10 BYTE; Workarounds: alter session, or set the parameter in the init.ora. Problem: ALTER SYSTEM does not change the current session's setting of NLS_LENGTH_SEMANTICS, at least not in the opinion of DDL. Workaround: Don't use ALTER SYSTEM SET NLS_LENGTH_SEMANTICS ... Both init.ora parameters and alter session work OK. ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx put 'unsubscribe' in the subject line. -- Archives are at //www.freelists.org/archives/oracle-l/ FAQ is at //www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------