lunes, 2 de septiembre de 2019

Ejecutar un query en varias bases de datos.

Muchas veces pasa que nos pides verificar por ejemplo 5 bases de datos standby o varias que sucedio algo "X" y nuestros incorregibles jefes nos piden..

"Decime como estan TODAS las bases de datos ... "

Claro, ahi es donde nos convertimos en Dios O Tusan O Coperfield y les respondemos

"SI YA TE DIGO..... "

un ejemplo practico es el siguiente;

Esto ocurre a veces cuando se compila un pkg en la primaria, en alguna de las stdby queda mal en la memoria y da ese error, como en general no saben en qué stdby falla, la solución es quitarlo de la shared pool en todas,

ORA-04045: errors during recompilation/revalidation of APP_ESDC81.PACK_DATA_COMMONS
ORA-16000: database open for read-only access
ORA-06508: PL/SQL: could not find program unit being called: 

es aleatorio,  por lo que el problema debe de darse en uno de los servers readonly

por esto hice el siguiente shell.

for b in
(nombre de las instancias de base de datos, en este caso todas las standby de esta fucking empresa)
cvprdsb6 cvprdsb7 cvprdsb8 cvprdsb5 cvprdsb4 cvprdsb13 cvprdsb14 cvprdsb15 cvprdsb16 cvprdsb17 cvprdsb18 cvprdsb19 cvprdsb20 cvprdsb3 cvprdsb9 cvprdsb2 cvprdsb10 cvprdsb12 cvprdsb11 cvprdsb1 cvprdsb21 cvprdsb22 cvprdsb23 cvprdsb24 bicvprdsb cvprdsb25 cvprdsb29 cvprdsb26 cvprdsb27 bicvprdsb
do
  echo "======================="
  echo "Base: "$b
  echo "======================="
   sqlplus "sys/pass@$b as sysdba" <<+
exec dbms_shared_pool.purge('APP_ESDC81.PACK_DATA_COMMONS','P');
+
done

En alguna bd puede llegar a tardar unos minutos, es normal.
Asi como el exec se puede hacer cualquier consulta masiva a todas las bases de datos.

Espero que les sea de utilidad.


No hay comentarios:

Publicar un comentario

RMAN - Cuando no se encuentra un archive log --- RMAN-06726: could not locate archived log

  Lo importante en todo esto, es estar dentro del catalogo correspondiente, sino el crosscheck NO FNCIONA !!   oracle backup of logfiles is ...