domingo, 31 de mayo de 2020

Oracle Always Free, se actualiza en los próximos 8 días.


Recién acaba de recibir un correo de parte del equipo de Oracle Autonomous Database, en donde se me indica que el próximo 8 de junio, mi instancia del servicio Always Free Autonomous Database, va a ser actualizada a Oracle Database 19c.

Una gran noticia, ya que uno de los pocos "peros", que había indicado en mi charla de hace unas semanas atrás, es que la base de datos aprovisionada era versión 18c.

Con la actualización, no sólo viene el tema de la versión, sino de todas las características alrededor de 19c, entre las que sobresale, la gestión y manejo de los índices autonomos.

En los laboratorios realizados hasta el momento, es una de las características mejor cementadas en las últimas versiones de base de datos.

Hay que tener paciencia eso sí, ya que no es rápida la adopción de mejoras a los planes de ejecución.
La característica de autonomía para el manejo de índices, se toma su tiempo para analizar los beneficios que tendra el plan de ejecución de la sentencia, antes de que el indice pase de ser un índice invisible a un índice visible.

En mis pruebas, tomo más de 6 horas el ver dicho comportamiento y la verdad que el resultado, fue excelente.

Durante estas 6 horas, el advisor de creación de índices autonomos, ejecutó más de 59 análisis, buscando la mejor alternativa de rendimiento.

SQL> col execution_name format a40

  1  select execution_name, execution_start,execution_end, status from dba_auto_index_executions
  2* order by execution_end
SQL> /

EXECUTION_NAME                           EXECUTION EXECUTION STATUS
---------------------------------------- --------- --------- -----------
SYS_AI_2019-10-20/11:38:36               20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/11:53:50               20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/12:09:06               20-OCT-19 20-OCT-19 COMPLETED
SYS_AI_2019-10-20/12:24:21               20-OCT-19 20-OCT-19 COMPLETED

59 rows selected.

Conforme iba pasando el tiempo, era posible observar las estadísticas desde la vista dba_auto_index_statistics. Logré darme cuenta que en realidad estaba funcionando, cuando por primera vez, logré ver, que existían dos índices candidatos a ser utilizados y que ya había creado un índices invisible.

SQL> select * from dba_auto_index_statistics where execution_name='SYS_AI_2019-10-20/12:39:42';

EXECUTION_NAME                           STAT_NAME                          VALUE
---------------------------------------- ----------------------------- ----------
SYS_AI_2019-10-20/12:39:42               Index candidates                       2
SYS_AI_2019-10-20/12:39:42               Indexes created (visible)              0
SYS_AI_2019-10-20/12:39:42               Indexes created (invisible)            1
SYS_AI_2019-10-20/12:39:42               Indexes dropped                        0
SYS_AI_2019-10-20/12:39:42               Space used in bytes            134217728
SYS_AI_2019-10-20/12:39:42               Space reclaimed in bytes               0
SYS_AI_2019-10-20/12:39:42               SQL statements verified                0
SYS_AI_2019-10-20/12:39:42               SQL statements improved                0
SYS_AI_2019-10-20/12:39:42               SQL statements managed by SPM          0
SYS_AI_2019-10-20/12:39:42               SQL plan baselines created             0
SYS_AI_2019-10-20/12:39:42               Improvement percentage                 0

11 rows selected

Despues de unas horas de activado el monitoreo, logré validar, que ya se había concretado, la creación de 3 índices, para las consultas que había dejado en un ciclo de repetición.
OWNER           INDEX_NAME               INDEX_TYPE     TABLE_OWNER     TABLE_TYPE
--------------- ------------------------ -------------- --------------- -----------
USER_TEST       SYS_AI_38a4rpz9aydwy     NORMAL         USER_TEST       VENENO
USER_TEST       SYS_AI_8j1m1y4m3rg1v     NORMAL         USER_TEST       VENENO
USER_TEST       SYS_AI_grrbd3k2d8ufq     NORMAL         USER_TEST       VENENO

SQL> COL INDEX_OWNER FORMAT A12
SQL> COL COLUMN_NAME FORMAT A20

SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION 
from ALL_IND_COLUMNS where index_name='SYS_AI_grrbd3k2d8ufq';

Como lo afirma la documentación, los indices tenían como prefijo SYS_AI, o en pocas palabras, "Sistema, Inteligencia Artificial".

SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION 
from ALL_IND_COLUMNS where index_name='SYS_AI_grrbd3k2d8ufq';

INDEX_OWNER  INDEX_NAME                     COLUMN_NAME          COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST    SYS_AI_grrbd3k2d8ufq           EMPLOYEE_ID                        1

SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION 
from ALL_IND_COLUMNS where index_name='SYS_AI_8j1m1y4m3rg1v';

INDEX_OWNER  INDEX_NAME                     COLUMN_NAME          COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST    SYS_AI_8j1m1y4m3rg1v           MANAGER_ID                         1

SQL> select INDEX_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION 
from ALL_IND_COLUMNS where index_name='SYS_AI_38a4rpz9aydwy';

INDEX_OWNER  INDEX_NAME                     COLUMN_NAME          COLUMN_POSITION
------------ ------------------------------ -------------------- ---------------
USER_TEST    SYS_AI_38a4rpz9aydwy           JOB_ID                             1


En la vista de acciones, era posible observar los comandos ejecutados por el programa de ML que gestiona dicha característica autonoma.


SQL> select index_owner, index_name, table_owner, command from dba_auto_index_ind_actions order by start_time;

INDEX_OWNER  INDEX_NAME                     TABLE_OWNER       COMMAND
------------ ------------------------------ ----------------- --------------------
USER_TEST    SYS_AI_grrbd3k2d8ufq           USER_TEST         CREATE INDEX
USER_TEST    SYS_AI_grrbd3k2d8ufq           USER_TEST         REBUILD INDEX
USER_TEST    SYS_AI_grrbd3k2d8ufq           USER_TEST         ALTER INDEX VISIBLE
USER_TEST    SYS_AI_8j1m1y4m3rg1v           USER_TEST         CREATE INDEX
USER_TEST    SYS_AI_38a4rpz9aydwy           USER_TEST         CREATE INDEX
USER_TEST    SYS_AI_38a4rpz9aydwy           USER_TEST         REBUILD INDEX
USER_TEST    SYS_AI_8j1m1y4m3rg1v           USER_TEST         REBUILD INDEX
USER_TEST    SYS_AI_8j1m1y4m3rg1v           USER_TEST         ALTER INDEX VISIBLE


8 rows selected.

Las verificaciones realizadas por la base de datos sobre los índices creados automáticamente se podían visualizar en la vista: DBA_AUTO_INDEX_VERIFICATIONS

SQL> select sql_id, original_buffer_gets, auto_index_buffer_gets,status from dba_auto_index_verifications;

SQL_ID        ORIGINAL_BUFFER_GETS AUTO_INDEX_BUFFER_GETS STATUS
------------- -------------------- ---------------------- ---------
64mhzgsdq5cnt              58292.5                     97 IMPROVED
4mf2rxa1jr5ah                58255                      1 IMPROVED
a68nukn6w407b           58133.1154                      3 IMPROVED
azsswcb98ffvc                58255                     97 IMPROVED
cxdp6hffuf5nh                58255                     89 IMPROVED
a68nukn6w407b           3.08201439                      3 UNCHANGED
d7dj44yburdbz                  107                     96 UNCHANGED
d06rmnjvm5smf                12009                  12009 UNCHANGED
2tryzm0v5xsc7              .000235                        FAILED
a90k7j52rrmr6                    3                        FAILED
c595m0us6g543            58234.995                      1 IMPROVED
drzb4vzkmxg6a                    3                        FAILED
c595m0us6g543           3.00069603                      1 UNCHANGED

De igual manera, pude comprobar las distintas tareas ejecutadas por los distintos consejeros de la base de datos.

SQL> select TASK_NAME,ADVISOR_NAME,EXECUTION_END,STATUS,ACTIVITY_COUNTER from dba_advisor_tasks;


Y finalmente, puede también, generar un reporte de actividad en formato HTML, para pode documentar y entender mejor, todo lo que había pasado.

SET LONG 1000000 PAGESIZE 0SELECT DBMS_AUTO_INDEX.report_activity(type => 'HTML') FROM dual;

Ahora será tiempo a partir del 08 de junio, de volver a repetir nuevamente el laboratorio realizado en mi VM, pero esta vez, en la plataforma Always Free y compartirles mis hallazgos.


No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar