Como cambiar el set de caracteres a una base de datos 12c
Por Ronald Vargas QuesadaPublicado en Abril 2016
Pasos para ejecutar el cambio del valor del parámetro. Leer el contenido completo de la guía. Al final se detalle algunos aspectos importantes para ambiente de RAC.
Recomendable realizar un full respaldo antes de continuar con este proceso.
Objetivo: Actualizar la tabla sys.prop$ del diccionario de la base de datos en donde se almacena el set de caracteres de la base de datos.- Validar el valor de los parámetros en la base de datos
SQL> column VALUE format a10 SQL> column PARAMETER format a30 SQL> select * from v$nls_parameters;
SQL> /
PARAMETER VALUE CON_ID ----------------------------- ------------------------------ --------- NLS_LANGUAGE AMERICAN 0 NLS_TERRITORY AMERICA 0 NLS_CURRENCY $ 0 NLS_ISO_CURRENCY AMERICA 0 NLS_NUMERIC_CHARACTERS ., 0 NLS_CALENDAR GREGORIAN 0 NLS_DATE_FORMAT DD-MON-RR 0 NLS_DATE_LANGUAGE AMERICAN 0 NLS_CHARACTERSET WE8ISO8859P15 0 NLS_SORT BINARY 0 NLS_TIME_FORMAT HH.MI.SSXFF AM 0 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 0 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 0 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 0 NLS_DUAL_CURRENCY $ 0 NLS_NCHAR_CHARACTERSET AL16UTF16 0 NLS_COMP BINARY 0 NLS_LENGTH_SEMANTICS BYTE 0 NLS_NCHAR_CONV_EXCP FALSE 0
- Bajar la base de datos y seguir los pasos indicados a continuación
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.
SQL> startup mount ORACLE instance started.
Total System Global Area 1895825408 bytes Fixed Size 2925744 bytes Variable Size 570428240 bytes Database Buffers 1308622848 bytes Redo Buffers 13848576 bytes Database mounted.
SQL> show parameter job_queue_processes
NAME TYPE VALUE --------------------- ----------- ---------------------- job_queue_processes integer 1000
SQL> alter system set job_queue_processes=0;
System altered.
SQL> alter database open;
Database altered.
SQL> alter database character set WE8MSWIN1252; alter database character set WE8MSWIN1252 * ERROR at line 1: ORA-12719: operation requires database is in RESTRICTED mode
SQL> update sys.props$ set value$='WE8MSWIN1252' where name='NLS_CHARACTERSET';
1 row updated.
SQL> commit;
Commit complete.
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.
- Volver a levantar la base de datos y aplicar los siguientes pasos.
SQL> startup mount ORACLE instance started.
Total System Global Area 1895825408 bytes Fixed Size 2925744 bytes Variable Size 570428240 bytes Database Buffers 1308622848 bytes Redo Buffers 13848576 bytes Database mounted. SQL> alter system enable restricted session;
System altered.
SQL> alter database open;
Database altered.
SQL> alter database character set WE8MSWIN1252;
Database altered.
SQL> alter system set job_queue_processes=1000;
System altered.
- Bajar la base de datos y proceder a validar los cambios.
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started.
Total System Global Area 1895825408 bytes Fixed Size 2925744 bytes Variable Size 570428240 bytes Database Buffers 1308622848 bytes Redo Buffers 13848576 bytes Database mounted. Database opened.
SQL> select * from v$nls_parameters;
PARAMETER VALUE CON_ID ----------------------------- ---------- --------- NLS_LANGUAGE AMERICAN 0 NLS_TERRITORY AMERICA 0 NLS_CURRENCY $ 0 NLS_ISO_CURRENCY AMERICA 0 NLS_NUMERIC_CHARACTERS ., 0 NLS_CALENDAR GREGORIAN 0 NLS_DATE_FORMAT DD-MON-RR 0 NLS_DATE_LANGUAGE AMERICAN 0 NLS_CHARACTERSET WE8MSWIN12 0 52 NLS_SORT BINARY 0 NLS_TIME_FORMAT HH.MI.SSXF 0 F AM . . . 19 rows selected.
- Validar cambios con datos
[oracle@dbvisit01 ~]$ env|grep NLS NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
[oracle@dbvisit01 ~]$ sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Thu May 14 14:10:31 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
SQL> connect / as sysdba Connected. SQL> truncate table t1;
Table truncated.
SQL> desc t1 Name Null? Type -------------------------- -------- --------------------- NOMBRE VARCHAR2(20) APELLIDO VARCHAR2(20)
SQL> insert into t1 values ('Fabián','Nuñez'); 1 row created. SQL> commit;
Commit complete.
SQL> select * from t1;
NOMBRE APELLIDO -------------------- -------------------- Fabián Nuñez
SQL>
Aplicación en ambientes RAC
Para ambientes en RAC es necesario modificar algunos pasos al inicio del proceso y final.
SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;
- Bajar todas las instancias del RAC con el usuario GRID ( srvctl stop database –d
- Levantar la base de datos en el nodo 1
En la base de datos del nodo1 configurar el parámetro de CLUSTER_DATABASE=TRUE
SQL> STARTUP MOUNT; SQL> ALTER SYSTEM SET CLUSTER_DATABASE=true scope=spfile; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1000; SQL> SHUTDOWN IMMEDIATE;
Arrancar las instancias del RAC con el commando srvctl
No hay comentarios:
Publicar un comentario