Actualicemos los “Oracle Client”

¿Vale la pena actualizar los clientes de BBDD Oracle? La mayoría de empresas que disponen de BBDD Oracle tarde o temprano han abordado un upgrade o migración de sus gestores, es parte del ciclo de vida del producto. No obstante, estas migraciones o upgrades no siempre coinciden con la actualización de los clientes Oracle que tenemos dispersos por la organización… y esto puede ocasionar problemas.

Un ejemplo es una empresa con una BBDD 10.2.0.4, pero que mantenía algunos clientes en versión 10.2.0.1 (los instalaban y no aplicaban el parche). Todo funcionaba, ciertamente, pero en la BBDD aparecían selects como éstas:

Segun una nota de Oracle estas selects son del propio driver ODBC:

Additional Infomation

——————————-

Query generated from the Oracle ODBC Driver (the rule hints may or may not

exist depending on driver version):

select /*+ RULE */ *

from (select /*+ RULE */ null table_qualifier,

o1.owner table_owner,

o1.object_name table_name,

decode(o1.owner,’SYS’,

decode(o1.object_type,’TABLE’,’SYSTEM TABLE’,’VIEW’,

‘SYSTEM VIEW’, o1.object_type),

‘SYSTEM’,

decode(o1.object_type,’TABLE’,’SYSTEM TABLE’,’VIEW’,

‘SYSTEM VIEW’, o1.object_type),

o1.object_type) table_type,

null remarks

from all_objects o1

where o1.object_type in (‘TABLE’, ‘VIEW’)

union select /*+ RULE */ null table_qualifier,

s.owner table_owner,

s.synonym_name table_name,

‘SYNONYM’ table_type,

null remarks

from all_objects o3,

all_synonyms s

where o3.object_type in (‘TABLE’,’VIEW’)

and s.table_owner = o3.owner

and s.table_name = o3.object_name

union select /*+ RULE */ null table_qualifier,

s1.owner table_owner,

s1.synonym_name table_name,

‘SYNONYM’ table_type,

null remarks

Eran selects que procedían de drivers ODBC, y que realmente no ejecutaba ninguna aplicación sino el propio driver al consultar los objetos visibles para un determinado usuario y sus permisos. En algunos casos la cantidad de recursos usados en cada ejecución de estas selects era de largo superior a la select que realmente lanzaba el usuario!!!

Todo esto quedó solucionado una vez se actualizaron los clientes de BBDD a 10.2.0.4. Al hacerlo, en la configuración de los ODBC’s apareció un nuevo “checkbox”, activado por defecto, que si bien no evitaba que se lanzasen estas selects, sí que eliminaba los “hint” de “RULE”.

Ejemplo de selects ejecutadas con y sin esos hints:

La mitad de tiempo y un orden de magnitud menos al acceder a bloques de memoria…

Pues igual sí que valía la pena actualizar 😉

PD:  En este caso concreto apliqué otro cambio “extra”, según las notas oracle:

Poor Performance On Certain Dictionary Queries After Upgrade To 10g [ID 364822.1]

Selects Against ALL_SYNONYMS Perform Badly on 10g Release 10.2 [ID 377037.1]

El problema también podía venir por ahí, por tanto aplique los cambios indicados en la segunda nota, consistentes en:

1-      Crear una vista “ALL_SYNONYMS_92” en el esquema de SYS con el código de la “ALL_SYNONYMS” de una 9.2

2-      Crear sinónimos privados “ALL_SYNONYMS” a ciertos usuarios apuntando a la “ALL_SYNONYMS_92”

3-      Dar GRANT de SELECT sobre la “ALL_SYNONYMS_92” a estos usuarios (ojo que este paso se lo han saltado en la nota).

Saludos!

Evolución, innovación y transformación
37 especializaciones avaladas por Oracle
Oportunidades ilimitadas
El equipo marca la diferencia
Posts 100% Oracle
Sigue nuestro día a día