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