schema compare - nls_length_semantics - incorrect difference

t800hk

Member
I have two databases:
- DB1: local, windows64, oracle 11.2.0.2, charset: UTF8, nls_length_semantics: CHAR for database/instance/session
- DB2: remote, linux64, oracle 11.2.0.2, charset: EE8ISO8859P2, nls_length_semantics: BYTE for database, but CHAR for instance/session

I created a table in DB1 and DB2 with same structure (in separate schema), e.g: create table tmp (col1 varchar2(10));
(note: nls_length_semantics: CHAR was used for session executing above script)

I compared created table using "compare user objects" from DB1 (to DB2).

I received difference: DB1:VARCHAR2(10) vs. DB2:VARCHAR2(10 char)

Workaround: I changed DB1 session nls_length_semantics to BYTE there were no difference after compare. However this way I loose nls_length_semantics=CHAR advantages for other session operations.

Possible reasons:
1, during schema compare remote session does not inherit local session's NLS parameters (e.g. nls_length_semantics)
2, schema compare uses only database nls_length_semantics instead of instance/session nls_length_semantics
3, else?

Ps.: It might be a good feature to be able to specify NLS parameters for pl/sql developer connections (not only via system env/registry)

PL/SQL dev version: 9.0.1.1613
 
Last edited:
Back
Top