Alterar idioma (página de código) do banco de dados Oracle

1

Temos dois Oracle DBs definidos para:

SQL> SELECT USERENV ('language') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

O restante de nossas instâncias é definido da seguinte maneira:

SQL> SELECT USERENV ('language') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.WE8ISO8859P1

Isso está criando todos os tipos de problemas nos dados enviados de um banco de dados para outro. É possível converter os dois bancos de dados "não-padrão" para corresponder aos outros. Se sim, como?

    
por jeffspost 20.07.2009 / 16:04

1 resposta

2

bem, o primeiro conjunto de caracteres é Unicode, que basicamente suporta todos os idiomas. O segundo ("P1") é o ASCII da Europa ocidental, suportando inglês e alguns caracteres extra-ocidentais.

Então,

  • em quais idiomas estão seus dados? que idiomas você precisará apoiar?
  • Deseja converter o UNICODE db em ASCII db ou vice-versa?

A conversão de WE8 ... P1 para Unicode pode ser feita facilmente exportando (configurando NLS_LANG para WE8..P1), criando um novo banco de dados vazio e importando (novamente, configurando NLS_LANG para WE8..P1). No entanto, a conversão para Unicode tem alguns efeitos colaterais, especialmente em relação aos limites de qualquer coluna varchar2 - se era varchar2 (20), normalmente significa 20 bytes, portanto, ao usar Unicode, 20 bytes podem conter menos caracteres (não ingleses). Assim, para evitar o truncamento de dados, algumas colunas podem precisar ser ampliadas ... Todos os detalhes estão aqui:

link

Converter de UTF8 para WE8..P1 é novamente, exportar com NLS_LANG = WE8 ... P1 (agora você perderá todos os caracteres que não mapearem para P1 ASCII, como árabe, chinês, etc.), criando um vazio We8..P1 e importando os dados com NLS_LANG = WE8ISO8859P1.

    
por 20.07.2009 / 16:59