terça-feira, 26 de novembro de 2013

20_CheckList_Instancia.sql


20_CheckList_Instancia.sql


set serveroutput on trimspool on feedback off echo off pagesize 0 linesize 200

column name new_value db_name
select name from v$database;

--
-- 1. Caracteristicas do servidor
--
PROMPT
PROMPT 1. CARACTERISTICAS DO SERVIDOR
PROMPT 

SELECT '  Host (endereço IP):' FROM dual UNION ALL
SELECT '  Sistema Operacional/Versão:' FROM dual UNION ALL
SELECT '  Memória disponível/utilizada (Mb):' FROM dual UNION ALL
SELECT '  Espaço em disco disponível/utilizado (Mb):' FROM dual UNION ALL
SELECT '  Configuração dos discos (RAID,Storage,etc):' FROM dual UNION ALL
SELECT '  Unidade de fita (DAT,DLT,etc)/Capacidade:' FROM dual UNION ALL
SELECT '  Dedicado? Outras aplicações executadas?' FROM dual
;

--
-- 2. Caracteristicas da instancia
--
PROMPT
PROMPT 2. CARACTERISTICAS DA INSTANCIA
PROMPT 

SELECT '  SID:                                        ' || instance_name
  FROM v$instance
 UNION ALL
SELECT '  Versao:                                     ' || banner
  FROM v$version
 WHERE ROWNUM < 2
 UNION ALL
SELECT '  Tamanho SGA (Mb):                           ' || ROUND(SUM(value)/1024/1024)
  FROM v$sga
 UNION ALL
SELECT '  Tamanho banco de dados (Mb):                ' || ROUND(SUM(bytes)/1024/1024)
  FROM v$datafile
 UNION ALL
SELECT '  Quantidade estimada de usuarios:            ' || sessions_highwater
  FROM v$license
 UNION ALL
SELECT '  Nivel de criticidade / SLA disponibilidade: '
  FROM dual
 UNION ALL
SELECT '  Modo de operação (ARCHIVELOG/NOARCHIVELOG): ' || log_mode
  FROM v$database
;

--
-- 3. Avaliacao da instancia
--
PROMPT
PROMPT 3.1. POLITICA DE SEGURANCA

PROMPT 
PROMPT 3.1.1. Usuarios e desenvolvedores tem acesso as contas proprietarias dos objetos?
PROMPT

PROMPT 
PROMPT 3.1.2. Usuarios e desenvolvedores podem criar ou alterar objetos?
SELECT '       ' || 'USER: ' || grantee || ' tem o privilegio ' || privilege FROM dba_sys_privs
 WHERE (privilege LIKE 'CREATE%' OR privilege LIKE 'ALTER%')
   AND privilege <> 'CREATE SESSION'
   AND grantee NOT IN ('SYS','SYSTEM','DBSNMP','CTXSYS','OUTLN','ORDSYS','MDSYS','ORACACHE')
   AND grantee NOT IN (SELECT role FROM DBA_ROLES)
 UNION
SELECT '       ' || 'USER: ' || grantee || ' tem a role ' || granted_role || ' que possibilita criar/alterar objetos'
  FROM dba_role_privs
 WHERE granted_role IN (SELECT role FROM role_sys_privs
                         WHERE (privilege LIKE 'CREATE%' OR privilege LIKE 'ALTER%')
                           AND privilege <> 'CREATE SESSION' )
   AND grantee NOT IN ('SYS','SYSTEM','DBSNMP','CTXSYS','OUTLN','ORDSYS','MDSYS','ORACACHE')
   AND grantee NOT IN (SELECT role FROM DBA_ROLES)
;

PROMPT 
PROMPT 3.1.3. Há usuarios com privilégios de DBA? Se sim, quais e porque?
SELECT '       ' || grantee FROM dba_role_privs
 WHERE granted_role = 'DBA'
   AND grantee NOT IN ('SYS','SYSTEM')
 ORDER BY grantee
;

PROMPT 
PROMPT 3.1.4. Quais as regras para expiração e validação de senhas?
SELECT '       ' || 'PROFILE: ' || profile || ' LIMIT: ' || resource_name || ' = ' || limit 
  FROM dba_profiles
 WHERE resource_type = 'PASSWORD'
   AND profile IN (SELECT DISTINCT profile FROM dba_users)
 ORDER BY profile, resource_name
;

PROMPT
PROMPT 3.2. ARMAZENAMENTO DE DADOS

PROMPT 
PROMPT 3.2.1. Há segmentos com mais de 500 extents? Quais?
SELECT '       ' || segment_type || ': ' || owner || '.' || segment_name || ' esta com ' || extents || ' extents ' 
  FROM dba_segments
 WHERE extents > 500
 ORDER BY owner, segment_name
;

PROMPT 
PROMPT 3.2.2. Há segmentos com possibilidade de crescer somente mais 20 extents? Quais?
SELECT '       ' || segment_type || ': ' || owner || '.' || segment_name  ||' na tablespace ' || tablespace_name
  FROM dba_segments a
 WHERE NVL(next_extent,0) > 0 
   AND NOT EXISTS (SELECT SUM(TRUNC(b.bytes/a.next_extent,0))
                     FROM dba_free_space b
                    WHERE b.tablespace_name = a.tablespace_name
                      AND b.bytes >= a.next_extent
                   HAVING SUM(TRUNC(b.bytes/a.next_extent,0)) > 20)
;

PROMPT 
PROMPT 3.2.3. Há segmentos que não pertençam ao dicionário de dados na tablespace SYSTEM?
SELECT '       ' || segment_type || ': ' || owner || '.' || segment_name 
  FROM dba_segments
 WHERE tablespace_name = 'SYSTEM'
   AND owner NOT IN ('SYS','SYSTEM','ORDSYS','MDSYS','OUTLN','ORACACHE')
   AND owner NOT LIKE 'AURORA%'
 ORDER BY owner, segment_name
;

PROMPT 
PROMPT 3.2.4. Há usuários com tablespace temporária SYSTEM? Quais?
SELECT '       ' || username FROM dba_users
 WHERE temporary_tablespace = 'SYSTEM'
 ORDER BY username
;


PROMPT
PROMPT 3.3. Integridade e Estrutura do Banco de Dados

PROMPT 
PROMPT 3.3.1. Há erros internos (ORA-00600, ORA-07445 ou similares) ocorrendo no banco de dados?
PROMPT        Se sim, descrever quais e se há comprovação da Oracle de que o erro não pode ser
PROMPT        corrigido e não causa danos a disponibilidade.
PROMPT        R:

PROMPT 
PROMPT 3.3.2. Há BUGS conhecidos no RELEASE do Oracle utilizado que comprometam a disponibilidade
PROMPT        do banco de dados? Se sim, há patch disponível para aplicação ou existe a possibilidade
PROMPT        de migrar para um RELASE estável?
PROMPT        R:

PROMPT 
PROMPT 3.3.3. Há blocos corrompidos em índices ou tabelas?
PROMPT        R:

PROMPT
PROMPT 3.3.4. Há erros nos TRACES dos processos de BACKGROUND do Oracle (SMON, PMON, SNP#,RECO,DBW#,ARCH,etc)?
PROMPT        R:

PROMPT 
PROMPT 3.3.5. Há erros crônicos no ALERT.LOG (erros com repetição constante, como estouro de tablespace temporária, por exemplo)?
PROMPT        R:

PROMPT 
PROMPT 3.3.6. Há erros de aplicação no ALERT.LOG (DEADLOCK, TIMEOUT ON RESOURCE MANAGEMENT, etc)?
PROMPT        R:


PROMPT
PROMPT 3.4. Performance

PROMPT 
PROMPT 3.4.1. Indicadores de Performance
SELECT '       Cache hit ratio     (>0.9000):' || TO_CHAR(1-phy.value/(con.value+cur.value),'0.0000')
  FROM v$sysstat phy,
       v$sysstat con,
       v$sysstat cur
 WHERE phy.name = 'physical reads' 
   AND con.name = 'db block gets' 
   AND cur.name = 'consistent gets'
;

SELECT '       Get Hit Ratio       (>0.9000):' || TO_CHAR(gethits/gets,'0.0000')
  FROM v$librarycache
 WHERE namespace = 'SQL AREA'
;

SELECT '       Pin Hit Ratio       (>0.9900):' || TO_CHAR(1-SUM(reloads)/SUM(pins),'0.0000')
  FROM v$librarycache
;

SELECT '       Rollback Hit Ratio  (>0.9900):' || TO_CHAR(1-SUM(waits)/SUM(gets),'0.0000')
  FROM v$rollstat
;

SELECT '       Index Use Hit Ratio (>0.8000):' || TO_CHAR(ind.value/(ful.value+ind.value),'0.0000')
  FROM v$sysstat ful,
       v$sysstat ind
 WHERE ind.name = 'table fetch by rowid' 
   AND ful.name = 'table scan blocks gotten'
;

SELECT '       Sort Hit Ratio      (>0.9500):' || TO_CHAR(1-dsk.value/mem.value,'0.0000')
  FROM v$sysstat mem,
       v$sysstat dsk
 WHERE dsk.name = 'sorts (disk)' 
   AND mem.name = 'sorts (memory)'
;

SELECT '       Mig. Row Hit Ratio  (>0.9500):' || TO_CHAR(1-mig.value/ind.value,'0.0000')
  FROM v$sysstat ind,
       v$sysstat mig
 WHERE mig.name = 'table fetch continued row' 
   AND ind.name = 'table fetch by rowid'
;

PROMPT
PROMPT         Latch Hit Ratio (> 0.9900) "Willing-To-Wait"
PROMPT
SELECT '        ' || RPAD(name,40,' ') || ': ' || TO_CHAR((gets-misses)/gets,'0.0000')
  FROM v$latch
 WHERE gets>0
   AND (gets-misses)/gets < 0.9900
 ORDER BY (gets-misses)/gets
;

PROMPT
PROMPT         Latch Hit Ratio (> 0.9900) "No-Wait"
PROMPT
SELECT '        ' || RPAD(name,40,' ') || ': ' || TO_CHAR((immediate_gets-immediate_misses)/immediate_gets,'0.0000')
  FROM v$latch
 WHERE immediate_gets>0
   AND (immediate_gets-immediate_misses)/immediate_gets < 0.9900
 ORDER BY (immediate_gets-immediate_misses)/immediate_gets
;


PROMPT
PROMPT 3.5. Política de Backup

PROMPT 
PROMPT 3.5.1. É utilizada alguma ferramenta de backup?
PROMPT        R:

PROMPT 
PROMPT 3.5.2. Quais tipos de backup são feitos e com que frequência?
PROMPT        R:

PROMPT 
PROMPT 3.5.3. São feitos testes periódicos de recover para validar o backup?
PROMPT        R:


spool off
set serveroutput on trimspool on feedback on echo off pagesize 24 linesize 200

Nenhum comentário:

Postar um comentário