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.

6 Responses to “Triggers en RAC 10g”

  1. fmunoz says:

    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

  2. mstaub says:

    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?

  3. fmunoz says:

    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

  4. fmunoz says:

    Te voy a mandar unos scripts pronto.

    Saludos.

    Francisco Munoz Alvarez

  5. fmunoz says:

    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

Leave a Reply