Varchar2 datatypes are longer than expected

oracleoracle-11g-r2plsql

When I run the following script :

create table tbl1 (
col1 varchar2(30),
col2 varchar2(50),
col3 number(4,2)
);
desc tbl1;
alter table tbl1 modify (col1 varchar2(35));
desc tbl1;
drop table tbl1;

Here is the output I get :

Table created.
TABLE tbl1
 Name                                      Null?    Type                        
 ----------------------------------------- -------- ----------------------------
 COL1                                               VARCHAR2(120)               
 COL2                                               VARCHAR2(200)               
 COL3                                               NUMBER(4,2)                 
Table altered.
TABLE tbl1
 Name                                      Null?    Type                        
 ----------------------------------------- -------- ----------------------------
 COL1                                               VARCHAR2(140)               
 COL2                                               VARCHAR2(200)               
 COL3                                               NUMBER(4,2)                 
Table dropped.

Can somebody explain me why the column lengths for varchar2 would be 4 times larger than they should ?

Best Answer

My guess would be a combination of your NLS_LENGTH_SEMANTICS = 'CHAR' system parameter and a character set defined that is 4 bytes per character.

Can you check on what your NLS settings are?