jueves, 16 de septiembre de 2010

Rendimiento - Conexiones IPC

Ejemplo de configuración IPC en conexiones Oracle Net, en este caso la comunicación no se establece a nivel de protocolo TCP-IP como habitualmente, sino a través de zonas de memoria del propio servidor, protegidas en este caso por la clave PNPKEY:

(tnsnames.ora)

SIDBBDD_TNS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = PNPKEY))
    )
    (CONNECT_DATA =
      (SID = sidbbdd)
    )
  )

(listener.ora)

listener_sidbbdd =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = PNPKEY))
      )
    )
  )
SID_LIST_listener_sidbbdd =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = sidbbdd)
      (ORACLE_HOME = /u01/...)
      (PROGRAM = extproc)
    )
  )

OEM Grid Control

Ante un mensaje de un agente de Grid como éste:

MESSAGE:         El agente ha parado el control. Se informa de los siguientes errores: COLL_DISABLED|DISK_FULL.


Vemos que en el status del agente aparece:
./emctl status agent
...
Collection Status : Disabled by Upload Manager
...

El problema está en los límites de uso de espacio del agente, modificamos de la forma:

Modificamos el fichero: AGENT_OH/sysman/config/emd.properties :
uploadMaxDiscUsedPct=98
uploadMaxDiskUsedPctFloor=98

Reiniciamos el agente :
./emctl stop agent
./emctl start agent

Cargamos:
./emctl upload



miércoles, 15 de septiembre de 2010

Script - Temporal.sql

PROMPT Espacio utilizado en los segmentos temporales

SELECT tablespace_name,
       total_blocks,
       used_blocks,
       free_blocks,
    total_blocks*16/1024 as total_MB,
    used_blocks*16/1024 as used_MB,
    free_blocks*16/1024 as free_MB
FROM   v$sort_segment;
 
PROMPT Uso de los segmentos temporales por parte de las sesiones

SELECT   b.TABLESPACE,
         b.segfile#,
         b.segblk#,
         b.blocks,
   b.blocks*p.value/1024/1024 as MB,
         a.SID,
         a.serial#,
         a.status
FROM     v$session a,
         v$sort_usage b,
         (select value from v$parameter where name='db_block_size') p
WHERE    a.saddr = b.session_addr
ORDER BY b.TABLESPACE,
         b.segfile#,
         b.segblk#,
         b.blocks;

martes, 14 de septiembre de 2010

Rendimiento - Cacheo de Subconsultas Deterministas

"Scalar Subquery Caching"

Por ejemplo:

SELECT columna1,...columnan
FROM tabla1, ... tablan
WHERE
            columnaN=funcion_plsql(columnaM)

Podemos transformarlo en :

SELECT columna1,...columnan
FROM tabla1, ... tablan
WHERE
            columnaN=(
                              SELECT funcion_plsql(columnaM)
                              FROM DUAL
                             )

De esta forma podemos obtener mejoras en la ejecución debido a la característica "Scalar Subquery Caching".