|
参考
Scope and Application
Under normal circumstances the automatic NLS conversion on a database
link is a good thing, because it means Oracle understands the data on
both sides of the database link. Therefore this note should only be in
very specific circumstances.
If either of the databases in a database link is mis-configured, then as
a short term measure it can be useful to either have no NLS conversion,
or to override the automatic conversion, on this database link.
Moving data across a database link with manual or no NLS conversion
*Normal circumstances*
Database links are used to move data between 2 databases. If the 2
databases have a different character set, then there will be automatic
conversion of data from the character set in the source database to the
character set in the target database. As long as you move (N)(VAR)CHAR
or (N)CLOB data across this is not something that can be switched off in
any way. This will always work automatically.
*Mis-configurations*
If, for whatever reason, you have data that is not stored correctly in
the database character set on the source side of the database link, the
automatic conversion on these database links can lead to problems in the
transfer of data. Here are 2 examples of situations you might find
yourself in, but this issue can occur in very many similar situations as
well:
/Example 1/
The source database stores data that is inserted from US or Western
European Windows machines. However, when this database was created the
US7ASCII character set was chosen. Because the NLS_LANG on the clients
is also set up as US7ASCII the data appears to be loaded correctly in
this database. This is of course an invalid set up, but it all looks
correct â |
|