viernes, 8 de noviembre de 2019
Extender el campo VARCHAR2 de 4000 a 32767 carácteres
A continuación describiré la manera básica para extender el tipo de datos varchar2 del límite de 4000 caracteres a 32767. Este método es válido al momento de escribir esto para las versiones 12.1.0.2, 12.2 y 18c
¡IMPORTANTE! tener en cuenta que este proceso es irreversible en la base de datos donde se ejecuta.
Los procedimientos a explicar serán de los dos siguientes casos:
- Para Non-CDB (O como se solían llamar en 11g, bases de datos normales)
- Para CDB o Multitenant (Bases de datos contenedoras con PDB o de conexión en su interior)
PARA BASES DE DATOS NON-CDB O TRADICIONALES
0) Ingresar como SYSDBA (Todo el proceso debe realizarse así y conectado desde el servidor de BD)
$ sqlplus / as sysdba
1) Apagar la base de datos
SQL> Shutdown immediate
2) Encenderla en modo UPGRADE
SQL> Startup upgrade
3) Cambiar el parámetro MAX_STRING_SIZE a EXTENDED
SQL> Alter system set MAX_STRING_SIZE=EXTENDED;
4) Ejecutar el script utl32k.sql
SQL> @$ORACLE_HOME/rdbms/admin/utl32k.sql
5) Después de la ejecución exitosa del anterior script, reiniciar la base de datos de manera normal
SQL> shutdown immediate
SQL> startup
6) Ejecutar el script utlrp.sql para recompilar la base de datos entera
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
PARA BASES DE DATOS MULTITENANT (CDB y PDB)
Este proceso afecta a la base de datos CDB y todas sus PDB activas, si se quiere realizar el proceso sobre solo una PDB se deben realizar los pasos anteriores conectado directamente a la PDB deseada.
0) Ingresar como SYSDBA (Todo el proceso debe realizarse así y conectado desde el servidor de BD)
$ sqlplus / as sysdba
1) En la CDB cambiar el parámetro MAX_STRING_SIZE a EXTENDED
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT; -- si se está conectado a una de las PDB, sino no es necesario
SQL> ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=SPFILE;
2) Reiniciar la base de datos en modo UPGRADE
SQL> shutdown immediate
SQL> startup upgrade
3) Abrir todas las PDB en modo UPGRADE
SQL> alter pluggable database all open upgrade;
SQL> exit
4) En la terminal de comandos ejecutar el script utl32k a través del catcon.pl para que se ejecute en toda la instancia, se debe ingresar la clave del SYS cuando se requiera. Tener en cuenta que este proceso genera unos archivos de logs en una ruta que se debe especificar en el llamado al catcon.pl, por lo tanto esta ruta debe existir en el sistema operativo.
La sintaxis del comando es:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '[rutaDeSalidaDeLosLogs]' -b utl32k_cdb_pdbs_output utl32k.sql
Ejemplo de ejecución:
$ mkdir /home/oracle/utl32k_cdb_pdbs_output
$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '/home/oracle/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql
catcon: ALL catcon-related output will be written to [/home/oracle/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_catcon_23172.lst]
catcon: See [/home/oracle/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output*.log] files for output generated by scripts
catcon: See [/home/oracle/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any
Enter Password:
catcon.pl: completed successfully
5) Conectarse a la CDB nuevamente y reiniciar la base de datos en modo normal.
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup
6) Iniciar todas las PDBS en modo normal
SQL> alter pluggable database all open;
SQL> exit
7) En la terminal de comandos, ejecutar el utlrp.sql a través del catcon.pl, nuevamente tener en cuenta el directorio de salida y la clave de SYS.
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '[rutaDeSalidaDeLosLogs]' -b utlrp_cdb_pdbs_output utlrp.sql
Ejemplo de ejecución:
$ mkdir /home/oracle/utlrp_cdb_pdbs_output
$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '/home/oracle/utlrp_cdb_pdbs_output' -b utlrp_cdb_pdbs_output utlrp.sql
catcon: ALL catcon-related output will be written to [/home/oracle/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_catcon_24271.lst]
catcon: See [/home/oracle/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output*.log] files for output generated by scripts
catcon: See [/home/oracle/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_*.lst] files for spool files, if any
Enter Password:
catcon.pl: completed successfully
De esta manera queda funcional el cambio al parámetro MAX_STRING_SIZE
Si se quiere cambiar una PDB directamente, si se quiere cambiar en un ambiente RAC o simplemente tener mas información del tema, se pueden remitir a la documentación de oracle del parámetro en la cual está guía se basa.
https://docs.oracle.com/database/121/REFRN/GUID-D424D23B-0933-425F-BC69-9C0E6724693C.htm#REFRN10321
Suscribirse a:
Comentarios de la entrada (Atom)
ORA-24098: valor invalido <NULL> para EMAIL_SERVER
Este error aparece cuando se quiere adicionar una notificación a un JOB que hemos creado previamente, y sucede porque el scheduler de la b...
-
Este error ocurre aunque el usuario desde el que aparece el error, sea el dueño del job (No DBA) que se está ejecutando. exec DBMS_SCHEDU...
-
Para crear una PDB e importar en ella, primero se debe crear la PDB, lo cual se puede hacer directamente en el asistente de configuración d...
-
Cuando tratamos de descomprimir un archivo comprimido con contraseña en 7zip (*.7z) en nuestro Linux Mint (o quizás en cualquier otra distr...
No hay comentarios.:
Publicar un comentario