viernes, 26 de abril de 2024

El parámetro MAX_STRING_SIZE, como aumentar el tamaño a 32K de almacenamiento en 19c y 23c de las variables VARCHAR2, NVARCHAR2 y RAW

En una base de datos Oracle el parámetro MAX_STRING_SIZE controla el tamaño máximo de los tipo VARCHAR2, NVARCHAR2 y RAW en SQL.

En la versión 19c que actualmente esta en el RU 19.23 y en la versión 23c que se encuentra disponible en el OCI como DBaaS y que pronto estar disponible en las demás plataformas para ON-PREMISE, el valor de facto es STANDARD, lo que implica, que el tamaño máximo que puede almacenar son 4000 bytes.

Utilizando el comando ALTER SYSTEM, eso sí, solo cuando la base de datos esté en modo UPGRADE y posteriormente ejecutando el script utl32k.sql, como se explica en este artículo, podrán cambiar la capacidad máximo de almacenamiento para este tipo de variables.

STANDARD significa que se aplican los límites de longitud para las versiones de Oracle Database anteriores a Oracle Database 12c (por ejemplo, 4000 bytes para VARCHAR2 y NVARCHAR2 y 2000 bytes para RAW).

EXTENDED significa que se aplica el límite de 32767 bytes introducido en Oracle Database 12c.

Puede cambiar el valor de MAX_STRING_SIZE desde STANDARD a EXTENDED. Sin embargo, no puede cambiar el valor de MAX_STRING_SIZE de EXTENDED a STANDARD.

Al establecer MAX_STRING_SIZE= EXTENDED, los usuarios están realizando una acción explícita que podría introducir incompatibilidad de aplicaciones en su base de datos. Las aplicaciones que no quieran utilizar los tipos de datos expandidos se pueden reescribir para que sean compatibles con cualquiera de las configuraciones; por ejemplo, estas aplicaciones podrían usar CAST explícitos para fijar la longitud de VARCHAR2 en las expresiones durante CREATE TABLE AS SELECT.

La modificación MAX_STRING_SIZE actualizará los objetos de la base de datos y posiblemente los invalidará, según la documentación oficial de Oracle, de la siguiente manera:
  • Las tablas con columnas virtuales se actualizarán con nuevos metadatos de tipos de datos para columnas virtuales de VARCHAR2(4000), 4000 bytes.
  • Los índices funcionales quedarán inutilizables si un cambio en sus columnas virtuales asociadas hace que la clave de índice exceda los límites de longitud de la clave de índice. Los intentos de reconstruir dichos índices fracasarán con ORA-01450: maximum key length exceeded.
  • Las vistas se invalidarán si contienen columnas VARCHAR2(4000) de , 4000 bytes NVARCHAR2 o RAW(2000).
  • Las vistas materializadas se actualizarán con nuevos metadatos VARCHAR2(4000), 4000 bytes NVARCHAR2y RAW(2000)columnas de expresión escrita.
En una base de datos utilizando Container Database, el cambio debe realizarse tanto en el CDB como en los PDB requeridos.

Realizarlo en el CDB permitirá que los PDBS que se creen posterior al cambio, ya tengan como valor de facto en la variable, los 32K de tamaño.

Veamos como se hace el procedimiento de cambio.

Para realizar este proceso será necesario utilizar el script "catcon.pl" para ejecutar el archivo de comando utl32k.sql ubicado en $ORACLE_HOME/rdbms/admin.

Va a requerir contar con la contraseña del usuario SYS, la cuál será solicitada durante la ejecución del script.

login as: opc
Authenticating with public key "rsa-key-20200507"
Passphrase for key "rsa-key-20200507":
Last login: Wed Apr 24 21:00:55 2024 from 201.198.177.186
[opc@oracle-database-server-19c ~]$ sudo su - oracle
Last login: Wed Apr 24 21:01:20 GMT 2024 on pts/0
-bash-4.2$ lsnrctl start
-bash: lsnrctl: command not found
-bash-4.2$ . oraenv
ORACLE_SID = [oracle] ? cdb
The Oracle base has been set to /opt/app/oracle
-bash-4.2$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 26-APR-2024 15:46:43

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle-database-server-19c.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 2: No such file or directory
-bash-4.2$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 26-APR-2024 15:46:45

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Starting /opt/app/oracle/product/19c/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/app/oracle/product/19c/network/admin/listener.ora
Log messages written to /opt/app/oracle/diag/tnslsnr/oracle-database-server-19c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-database-server-19c.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle-database-server-19c.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                26-APR-2024 15:46:45
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/app/oracle/product/19c/network/admin/listener.ora
Listener Log File         /opt/app/oracle/diag/tnslsnr/oracle-database-server-19c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-database-server-19c.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
-bash-4.2$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 26 15:46:49 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  9189176 bytes
Variable Size            4966055936 bytes
Database Buffers         3.7849E+10 bytes
Redo Buffers              125026304 bytes
Database mounted.
Database opened.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PRODUCCION                     READ WRITE NO

SQL> show parameter max_string_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PRODUCCION                     READ WRITE NO
SQL> alter pluggable database PRODUCCION close immediate;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PRODUCCION                     MOUNTED
SQL> alter system set max_string_size=extended scope=both;
alter system set max_string_size=extended scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-02095: specified initialization parameter cannot be modified


SQL> alter pluggable database PRODUCCION open;

Pluggable database altered.

SQL> alter session set container=PRODUCCION;

Session altered.

SQL> alter system set max_string_size=extended scope=both;
alter system set max_string_size=extended scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-14694: database must in UPGRADE mode to begin MAX_STRING_SIZE migration


SQL> connect / as sysdba
Connected.
SQL> alter system set max_string_size=extended scope=spfile;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup migrate
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  9189176 bytes
Variable Size            4966055936 bytes
Database Buffers         3.7849E+10 bytes
Redo Buffers              125026304 bytes
Database mounted.
Database opened.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MIGRATE    YES
         3 PRODUCCION                     MOUNTED

SQL> alter pluggable database produccion open upgrade;

Pluggable database altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition - Core Release 19.0.0.0.0 - Production
Version 19.22.0.0.0
-bash-4.2$ cd $ORACLE_HOME
-bash-4.2$ cd rdbms
-bash-4.2$ cd admin
-bash-4.2$ mkdir utl32k
-bash-4.2$ cd utl32k/
-bash-4.2$ pwd
/opt/app/oracle/product/19c/rdbms/admin/utl32k
-bash-4.2$ sqlplus sys/oracle as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 26 16:14:14 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition - Core Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition - Core Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

-bash-4.2$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS \
> -d $ORACLE_HOME/rdbms/admin -l '/opt/app/oracle/product/19c/rdbms/admin/utl32k' -b \
>  utl32k_cdb_pdbs_output utl32k.sql
catcon::set_log_file_base_path: ALL catcon-related output will be written to [/opt/app/oracle/product/19c/rdbms/admin/utl32k/utl32k_cdb_pdbs_output_catcon_6945.lst]

catcon::set_log_file_base_path: catcon: See [/opt/app/oracle/product/19c/rdbms/admin/utl32k/utl32k_cdb_pdbs_output*.log] files for output generated by scripts

catcon::set_log_file_base_path: catcon: See [/opt/app/oracle/product/19c/rdbms/admin/utl32k/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any

Enter Password:
catcon.pl: completed successfully
-bash-4.2$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 26 16:16:48 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  9189176 bytes
Variable Size            4966055936 bytes
Database Buffers         3.7849E+10 bytes
Redo Buffers              125026304 bytes
Database mounted.
Database opened.
SQL> show parameter max_string_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      EXTENDED
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PRODUCCION                     READ WRITE NO
SQL> alter session set container=produccion;

Session altered.

SQL> show parameter max_string_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      EXTENDED
SQL>
SQL> connect / as sysdba
Connected.
SQL> create pluggable database pdb2 from PRODUCCION;

Pluggable database created.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PRODUCCION                     READ WRITE NO
         4 PDB2                           MOUNTED
SQL> alter pluggable database pdb2 open;

Pluggable database altered.

SQL> alter session set container=pdb2;

Session altered.

SQL>  show parameter max_string_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      EXTENDED
SQL>


jueves, 25 de abril de 2024

Guinea Ecuatorial, llamado a creación de Grupo de Usuarios Oracle de Guinea Ecuatorial

 

Hola gente de Guinea Ecuatorial, si estás viendo esta publicación, es porque te interesa el tema.

Pueden ver mi historia, haciendo una pequeña busquedad en google sobre mi trabajo en la creación de comunidades de usuarios que utilizan tecnología Oracle.

He realizado algunas averiguaciones y encuentro que no existe aún, un grupo de usuarios en Guinea Ecuatorial.

Me gustaría colaborar con ustedes, en la creación de dicha organización.

Si alguién esta interesado o quiere conocer un poco más de que tratan estas comunidades de usuarios, me pueden contactar a través de mi correo electrónico: ronald.vargas.quesada@gmail.com o dejando un comentario al pie de esta publicación.

Saludos a todos y todas.





Diseñan robot que no genera dependencia tecnológica sino liberación.!!!

Este es el Sumobot, un robot que diseñó Tomas de Camino Beck, Ph.D, Director de la Escuela de Sistemas Inteligentes de la Universidad Cenfotec en Costa Rica y que este año convoca a más de 800 estudiantes en un torneo con casi 100 equipos, y que se podría afirmar, se transforma en uno de los eventos de robótica más grandes del país! 

Todo el robot es fabricación nacional, y es un robot altamente reparable y modificable, no genera dependencia tecnológica sino liberación, detalla Tomas en una publicación en su muro en la red Linkedin.



Este 30 de junio se llevará acabo el Maker Faire San José en Cenfotec y la Universidad extiende la invitación a todo el público.

Además del torneo de robótica, hay talleres para niños y adultos, charlas, exposiciones y mucho más.

Este evento según lo que comparten, es gratis y durará todo el día.

Hoja de ruta para Oracle Database+AI

Juan Loaiza EVP de Oracle en conjunto con Larry Ellison, anunciará este 02 de mayo, cuál será la Estrategía Global de Oracle para su producto de base de datos plus Inteligencia Artificial.
Pueden inscribirse en el link que les compartó abajo.

De mi parte, tenía pensado hacer algunas "profecías" sobre el rumbo que iba a tomar las próximas versiones de base de datos, durante el LAOUC 2024, en caso de que fuera aceptado en algún país, pero se me adelantaron. Así que aquí les paso un video con esta pequeña visión.


Inscripciones: https://www.linkedin.com/events/7186756684717969408/comments/






lunes, 8 de abril de 2024

Inicio Taller Virtual: Oracle Container Database

Oracle Database 19c, quedará fuera de soporte Premier al final de este mes de abril, tal y como lo mencióne en la publicación del blog https://oracledbacr.blogspot.com/.../oracle-database-19c...
Es hora de aprender o de mejorar sus conocimientos en la arquitectura de Container Database, ya que la versión 23c, no soportará más el modo Non-Container Database. - antigua arquitectura de base de datos, basada en una única instancia, asociada a procesos de base de datos.-
En este taller virtual de 12 horas, aprenderas todo lo necesario para gestionar tus bases de datos en modo Container Database.

El costo es de $150,00 + IVA 2%, por participante y se requiere un mínimo de 4 para iniciar el taller.
Las empresas que quieran brindar esta capacitación a sus colaboradores, pueden hacerlo en la misma modalidad virtual, con un costo de $600,00 + IVA 2%, para un máximo de 6 participantes. Si requieren más gente, lo hablamos.

Información: ronald.vargas.quesada@gmail.com
Whatsapp: (506) 70777455
Horario: GMT-6



domingo, 7 de abril de 2024

Por Café Database: Te cuento en qué consiste el grupo de estudio de OCP 2019

 


Tras un año de impartir todos los jueves clases teóricas y prácticas de preguntas de examen para obtener el Oracle Database Administrator Certified Professional 2019, el 27 de junio de 2024 haremos la última clase en vivo. Después de ahí, el grupo de estudio se convierte en un CURSO grabado, con las clases teóricas grabadas y muchas lecciones individuales específicas. 

El canal de Discord seguirá abierto, y me podrás preguntar lo que quieras, pero lo de estudiar en grupo y hacer exámenes online, como que ya no. Enlaces: 

La hoja de Google Sheets con el temario https://ocp2019.cafedatabase.com 

Para unirte al grupo de estudio: https://www.techlevel-academia.com/p/... 

Y si quieres hacer la formación oficial de Oracle University y pagar los 4600€ + impuestos, aquí https://mylearn.oracle.com/ou/learnin... 

El calendario de las sesiones en directo: 
  • 28 marzo - Examen en vivo con Socrative. 20 preguntas. 
  • 4 abril - Examen en vivo con Socrative. 20 preguntas. 
  • 11 abril - Examen en vivo con Socrative. 20 preguntas. 
  • 18 abril - Examen en vivo con Socrative. 20 preguntas. 
  • 25 abril - Clase de teoría. 
  • 9 de mayo - Clase de teoría. 
  • 16 de mayo - Clase de teoría. 
  • 23 de mayo - Clase de teoría. 
  • 30 de mayo - Clase de teoría. 
  • 6 de junio - Examen en vivo con Socrative. 20 preguntas. 
  • 13 de junio - Examen en vivo con Socrative. 20 preguntas.
  • 20 de junio - Examen en vivo con Socrative. 20 preguntas. 
  • 27 de junio - Examen en vivo con Socrative. 20 preguntas.

jueves, 4 de abril de 2024

Experiencia OCI: Una acción de infarto: cuidado, no apto para personas con inconvenientes cardíacas.


Durante los últimos 3 años y medio, todos los días aprendo algo nuevo del OCI, que en ocasiones me alegra el día y en otras me ocasiona un dolor de cabeza y un conato de infarto.

Voy a darles el contexto.

Durante una ejecución de un proceso, las estadísticas a nivel de sistema operativo, me indican que el monto de recursos disponibles a nivel de OCPU, son insuficientes para atender de manera la demanda de los mismos.


Por tanto, empecé a revisar la información actualizada sobre el "Escalado bajo demanda".

El escalado bajo demanda es una característica de la computación en la nube que le permite ajustar automáticamente los recursos asignados a su aplicación o servicio según la demanda actual. Puede aumentar o disminuir la cantidad de servidores, almacenamiento y otros recursos que utiliza en tiempo real, según la carga de trabajo. Por ejemplo, OCI Compute ajusta la cantidad de instancias informáticas en un grupo de instancias en función de las métricas y la programación para cumplir con la capacidad deseada según la configuración.

Por tanto, inicié con crear un pool de instancias en el compartment específico en donde se encontraba el recurso desplegado, así como también, crear una configuración de autoescalación.

Luego, asocié el servicio involucrado con el problema de recursos, a la configuración del pool.

En la carrera que estaba pasando, baje el servicio en cuestión para manualmente modificar los recusos de OCPU y memoria.

En el momento de aprovisionar los recursos, me dió un error de capacidad desplegada. Esto debido a que había hecho una reserva importante de recursos en la configuración del pool.

Al darse el error, procedí de una a borrar el pool de configuración, para liberar los recursos.

Todo iba bien, hasta que me doy cuenta que la instancia de producción, pasa a estado en "TERMINACIÓN". Aquí el corazón empieza a latir rápidamente y tengo una sensación en mi cuerpo, peor que cualquier escena de una película de terror.


Generalmente, cuando uno borra un servicio desplegado, tiende a borrar consigo el almacenamiento adjunto a dicho servicio.

Cuando reviso el estado del disco de arranque del servicio, el mismo esta descoplado del servicio, pero no fue removido. Esto me permitió crear rápidamente de nuevo el servicio y configurarlo con los recursos deseados.

Pero que sucedió?

Al borrar el pool de recursos para escalación y tener asociada la instancia al pool, automáticamente se removieron los servicios configurados, salvo el área de almacenamiento.

Han pasado horas y el ambiente aún continua en estado "TERMINANDO".



La experiencia no fue muy grata. Aún asi, tenía los respaldos pertinentes y el impacto podría haber sido mínimo, sin embargo, los minutos de pánico y terror, fueron interminables.

Consejo: es necesario anter de remover un recurso, validar todas las dependencias y consecuencias que puede tener antes de hacerlo. Parta del hecho, que nada es 100% seguro, hasta que se compruebe lo contrario.

Con la situación pendiente de los recursos no liberados en estado de "TERMINACION", toca esperar un poco más y sino, colocar un SR para atender el tema.







Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar