quinta-feira, 31 de outubro de 2019

Alterando o CHARSET num banco de dados Oracle

Eventualmente, me deparo com o seguinte cenário: pedem para preparar uma instância Oracle para restaurar uma base de dados que veio de um cliente, mas as informações da base de origem são mínimas. Você realiza toda a instalação e quando chega o backup, o charset é diferente do que você configurou. E agora? Instala tudo de novo?

Primeiro, para saber qual o charset atual, execute a seguinte consulta:
SELECT value FROM nls_database_parameters 
WHERE parameter = 'NLS_CHARACTERSET';

Para proceder com a alteração, siga os passos seguintes, através de uma sessão no sqlplus:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE WE8ISO8859P1;
SHUTDOWN IMMEDIATE;
STARTUP;

Pronto! Basta dar sequência ao trabalho agora!