Triggers en RAC 10g
Hola Francisco, mi consulta es la siguiente. Hace unos días cree dos triggers para pinear objetos en el RAC (uno por cada nodo). Lo que no estoy seguro es cómo se ejecutan los trigges, si ambos se ejecutan sobre un nodo, o se ejecutan sobre los distintos nodos.
No sé si existe algún parámetro para indicar sobre qué nodo debe ejecutarse el trigger, porque a pesar que los cree en cada nodo, ambos aparecen en ambas máquinas.
Agradezco desde ya tu respuesta.
23. May 2008 at 00:33
Estimado Marco,
Acuerdate que los triggers, traducidos al espanol son gatillos, o sea se gatillan despuen o antes que ocurra algo en la base de datos, por ejemplo antes de un update, despues de un update, despues de un startup, antes de un borrado, despues de un borrado, antes de que se conecte una session, despues que se conecte una session a la instancia,etc.
Para este tipo de trigger, creo que utilizaste la opcion after startup?
Si es asi, acuerdate que las instancias son logicas, o sea cada vez que una instancia sea levantada utilizando esa Base de Datos, se van a pinear los objetos en memoria en cada instancia. Para ver un ejemplo de este tipo de trigger anda a Consalud ai yo tenia un trigger que pineaba los objetos en memoria after startup.
Saludos,
Francisco Munoz Alvarez
23. May 2008 at 17:08
Cual sería la mejor forma o un procedimiento para determinar qué objetos son los más accesados y pinearlos en memoria para disminuir el IO en un RAC?
26. May 2008 at 02:30
Estimado Marco:
library cache pin
This event manages library cache concurrency. Pinning an object causes the heaps to be loaded into memory. If a client wants to modify or examine the object, the client must acquire a pin after the lock.
Pin Packages in the Shared Memory Pool
You can pin frequently accessed packages in the shared memory pool, using the supplied package DBMS_SHARED_POOL. When a package is pinned, it is not aged out by the least recently used (LRU) algorithm that Oracle normally uses. The package remains in memory no matter how full the pool gets or how frequently you access the package.
Para que entiendas el concepto, aqui va el link que explica bien todas las areas de memoria del oracle y metodos para analizarlos.
http://www.filibeto.org/sun/lib/nonsun/oracle/10.2.0.1.0/B19306_01/server.102/b14211/memory.htm
Avisame si te sirvio o no,
Saludos,
Francisco Munoz Alvarez
26. May 2008 at 02:31
Te voy a mandar unos scripts pronto.
Saludos.
Francisco Munoz Alvarez
26. May 2008 at 11:39
Marco,
Aqui va el script para monitorear los SQL en memoria:
set pagesize 60;
column executions format 999,999,999;
column Mem_used format 999,999,999;
SELECT SUBSTR(owner,1,10) Owner,
SUBSTR(type,1,12) Type,
SUBSTR(name,1,20) Name,
executions,
sharable_mem Mem_used,
SUBSTR(kept||’ ‘,1,4) “Kept?”
FROM v$db_object_cache
WHERE type in (’TRIGGER’,'PROCEDURE’,'PACKAGE BODY’,'PACKAGE’)
ORDER BY executions desc;
Saludos,
Francisco Munoz Alvarez