Oracle10g: Cambiar el juego de carácteres de la base de datos

Oracle10g: Canviar el joc de caràcters de la base de dades il_masacratore 10 March, 2010 - 10:34

Pot passar que després d'instal lar Oracle o configurar una nova base de dades ens adonem que el joc de caràcters escollit durant la instalació no és el correcte. El que se'ns pot passar en casos com aquest és esborrar la base de dades i reconfigurar o coses pitjors ... Però no cal. Podem canviar el joc de caràcters parant la base de dades, aixecant de manera restrictiva, canviant la configuració i reiniciat la base de dades. Howto:

- Primer ens connectem amb la base de dades 

$ sqlplus sys/pwd@prod as sysdba
 

- Aturem la base de dades 

SQL>SHUTDOWN IMMEDIATE;

 

- Aixequem de forma restrictiva * 

SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER DATABASE OPEN;

- Canviem el mapa de caràcters 

SQL>ALTER DATABASE CHARACTER SET <nou mapa de caràcters>;

- Reiniciem la base de dades i yata 

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP;

Per comprovar que els canvis han fet efecte podem consultar la vista v $ nls_parameters i comprovar el valor de nls_characterset. Hem de saber que segons el canvi de codificació que fem podem perdre dades (si és que n'hi ha) depenent del canvi.
 
* També és útil saber que aixecar la base de dades en mode restrictiu és molt útil per realitzar tasques de manteniment de la base de dades que es poden fer més ràpid quan no hi ha activitat d'usuari (com pot ser reconstrucció d'índexs, reducció de segments , etc).