Oracle: Trucos para DBA II

Oracle: Trucos para DBA II

OPTIMIZACIÓN

IDENTIFICA TABLESPACES Y PROPIETARIOS DE LOS MISMOS. SI TIENE DEMASIADOS EXTENT, EL TAMAÑO DE LOS EXTENT PUEDE NO SER OPTIMO

SELECT owner,
       DECODE (partition_name,
               NULL, segment_name,
               segment_name || ':' || partition_name) name,
       segment_type,
       tablespace_name,
       bytes,
       initial_extent,
       next_extent,
       PCT_INCREASE,
       extents,
       max_extents
  FROM dba_segments
 WHERE extents > 1
 ORDER BY 9 DESC, 3;

MEMORIA SHARE_POOL LIBRE Y USADA

SELECT name,to_number(value) bytes 
  FROM v$parameter
 WHERE name ='shared_pool_size'
UNION ALL
SELECT name,bytes 
  FROM v$sgastat
 WHERE pool = 'shared pool'
   AND name = 'free memory';

AUDITORÍA

MOSTRAR DATOS DE AUDITORÍA DE LA BASE DE DATOS ORACLE (INICIO Y DESCONEXIÓN DE SESIONES)

SELECT username,
       action_name,
       priv_used,
       returncode
  FROM dba_audit_trail;

SESIONES / USUARIOS

OBTENER LOS USUARIOS DE UNA BASE DE DATOS

SELECT USERNAME 
  FROM DBA_USERS;

CONTRASEÑAS POR DEFECTO DE ORACLE
SYS: CHANGE_ON_INSTALL
SYSTEM: MANAGER
SCOTT: TIGER
ADAMS: WOOD
JONES: STEEL
BLAKE: PAPER
FORD: CAR
KING: GOLD

OBTENER LOS ROLES EXISTENTES EN ORACLE DATABASE

SELECT * 
  FROM DBA_ROLES;

ROLES Y PRIVILEGIOS POR ROLES

SELECT * 
  FROM role_sys_privs;

INFORMACIÓN DE CONEXIÓN A LA BASE DE DATOS

SELECT SID,            -- Identificador de sesión
       osuser,         -- Usuario de sistema operativo
       username,       -- Usuario de base de datos
       machine,        -- Máquina desde la que se realiza la conexión
       program,        -- Programa, que realiza la conexión
       logon_time,     -- Hora de conexión
       Lockwait        -- Identifica si hay bloqueo
  FROM v$session 
 ORDER BY osuser;

VISTA QUE MUESTRA EL NÚMERO DE CONEXIONES ACTUALES A ORACLE AGRUPADO POR APLICACIÓN QUE REALIZA LA CONEXIÓN

SELECT program Aplicacion, COUNT(program) Numero_Sesiones
  FROM v$session
 GROUP BY program 
 ORDER BY Numero_Sesiones DESC;

VISTA QUE MUESTRA LOS USUARIOS DE ORACLE CONECTADOS Y EL NÚMERO DE SESIONES POR USUARIO

SELECT username Usuario_Oracle, COUNT(username) Numero_Sesiones
  FROM v$session
 GROUP BY username
 ORDER BY Numero_Sesiones DESC;

CURSORES ABIERTOS POR USUARIO

SELECT b.sid, a.username, b.value Cursores_Abiertos
  FROM v$session a,
       v$sesstat b,
       v$statname c
 WHERE c.name IN ('opened cursors current')
   AND b.statistic# = c.statistic#
   AND a.sid = b.sid 
   AND a.username IS NOT NULL
   AND b.value >0
 ORDER BY 3;

OBTENER LOS PRIVILEGIOS OTORGADOS A UN ROL DE ORACLE

SELECT privilege 
  FROM dba_sys_privs 
 WHERE grantee = 'NOMBRE_ROL';

INFORMACIÓN SENTENCIAS SQL

ACIERTOS DE LA CACHÉ (NO DEBE SUPERAR EL 1 POR CIENTO)

SELECT SUM(pins) Ejecuciones, 
       SUM(reloads) Fallos_cache,
       TRUNC(SUM(reloads)/SUM(pins)*100,2) Porcentaje_aciertos 
  FROM v$librarycache
 WHERE namespace IN ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');

SENTENCIAS SQL COMPLETAS EJECUTADAS CON UN TEXTO DETERMINADO EN EL SQL

SELECT c.sid,
       d.piece,
       c.serial#,
       c.username,
       d.sql_text 
  FROM v$session c, v$sqltext d 
 WHERE  c.sql_hash_value = d.hash_value 
   AND UPPER(d.sql_text) LIKE '%WHERE CAMPO LIKE%'
 ORDER BY c.sid, d.piece999;

UNA SENTENCIA SQL CONCRETA (FILTRADO POR SID)

SELECT c.sid,
       d.piece,
       c.serial#,
       c.username,
       d.sql_text 
  FROM v$session c, v$sqltext d 
 WHERE c.sql_hash_value = d.hash_value 
   AND sid = 105
 ORDER BY c.sid, d.piece;

ÚLTIMAS CONSULTAS SQL EJECUTADAS EN ORACLE Y USUARIO QUE LAS EJECUTÓ

SELECT DISTINCT vs.sql_text, vs.sharable_mem, 
       vs.persistent_mem, vs.runtime_mem,  vs.sorts,
       vs.executions, vs.parse_calls, vs.module,  
       vs.buffer_gets, vs.disk_reads, vs.version_count, 
       vs.users_opening, vs.loads,  
       to_char(to_date(vs.first_load_time,
       'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time,  
       rawtohex(vs.address) address, vs.hash_value hash_value , 
       rows_processed  , vs.command_type, vs.parsing_user_id  , 
       OPTIMIZER_MODE  , au.USERNAME parseuser  
  FROM v$sqlarea vs , all_users au   
 WHERE (parsing_user_id != 0)  
   AND (au.user_id(+)=vs.parsing_user_id)  
   AND (executions >= 1)
 ORDER BY buffer_gets/executions DESC;

COMPROBAR SI LA AUDITORÍA DE LA BASE DE DATOS ORACLE ESTÁ ACTIVADA

SELECT name,
       value
  FROM v$parameter
 WHERE name LIKE 'audit_trail';

LENGUAJE

UTILIZAR «,» PARA MILLARES Y «.» PARA DECIMALES PARA REPRESENTACIÓN NÚMERICA DENTRO DE UN BLOQUE PL/SQL

BEGIN
    Dbms_session.set_nls ('NLS_NUMERIC_CHARACTERS','",."');
END;

OTROS ENLACES DE INTERES

Oracle: Trucos para DBA I
Trucos PL SQL

Comments are closed.

Si continúas usando este sitio, aceptas el uso de cookies. Más información

Los ajustes de cookies en esta web están configurados para «permitir las cookies» y ofrecerte la mejor experiencia de navegación posible. Si sigues usando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar», estarás dando tu consentimiento a esto.

Cerrar