Cambiar juego de carácter a base de datos oracle 9
Necesito cambiar el juego de caracteres de la bvase de datos oracle 9i, la cual tiene ISO-8859-1 a UTF8, mi pregunta es la siguiente: Ese cambio se puede hacer tenuendo la base de datos llena de registros, al hacer el cambio los datos allí guardados no sufren ningún efecto.
Para llevar a cabo este tipo de modificaciones se recomienda para la BBDD y corta el acceso de usuarios a tanto a la BBDD como a las aplicaciones que soportan. Este cambio debe ser en "frio" nunca en "caliente" y con usuarios accediendo a ella. Si lo haces en caliente puedes tener errores de acceso que seria la mínimo y lo peor tener que "tirar" de una backup. Asegurate que las aplicaciones que tengas en esa BBDD tengas soportado los caracteres ISO-8859-1.
¿Gracias por tu respuesta tines alguna manera de hacerlo o comandos a utilizar para hacer este cambio?
Para decirte esto debería de saber en que sistema opertavio estas trabajando. En todo caso te intentare explicar tanto en WINDOWS como en LINUX. Aunque básicamente es lo mismo teniendo en cuenta las características de cada S.O. WINDOWS. Compruena que juego de caracteres estas usando (esto para los 2 S.Operativos) TE conectas como sysdba y escribes: (puedes usar cualquier de las dos select) select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'; select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; Comprueba si el juego de caracteres que quieres cambiar es el que tu quieres. Paras la BBDD de datos, cortas el acceso de cualquier usuario en la BBDD para que de esta forma no puedan acceder . La forma más fácil en windows es que vayas al regedit y busques el parámetro "NLS_LANG" Aquí modificas el parámetro que te sale, debe ser el mismo que en la SELECT que hiciste antes. Lo modificas y ya esta iniciar las BBDD haces un startup te validas sobre SQL y vuelves hacer la misma sentencia y observa si se ha llevado cualquier cambio. Linux No conectamos como SYS $ sqlplus sys/pwd@ as sysdba Paramos la BBDD SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP MOUNT; SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE CHARACTER SET <nuevo mapa de carácteres>; --Reiniciamos la base de datos SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP; Para comprobar que los cambios han surtido efecto podemos consultar la vista v$nls_parameters y comprobar el valor de nls_characterset. Debemos saber que según el cambio de codificación que hagamos podemos perder datos (si es que los hay) dependiendo del cambio. Como puedes ver básicamente es lo mismo para cualquiera de los dos sistemas opertaviso lo único que cambia es la forma en que tu quieras hacerlo.