-
1. Verifique o nome e o tamanho do espaço de tabela
selecione t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
de dba_tablespaces t, dba_data_files d
onde t.tablespace_name = d.tablespace_name
agrupar por t.tablespace_name;
2. Visualize o nome e o tamanho dos arquivos físicos no espaço de tabela
selecione nome_do_tablespace, id_do_arquivo, nome_do_arquivo,
round(bytes/(1024*1024),0) total_space
de dba_data_files
ordenar por tablespace_name;
3. Verifique o nome e tamanho do segmento de reversão
selecione segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
De dba_rollback_segs r, v$rollstat v
Onde r.segment_id = v.usn(+)
ordenar por segment_name;
4. Visualize o arquivo de controle
selecione o nome de v$controlfile;
5. Visualize arquivos de log
selecione membro de v$logfile;
6. Verifique o uso do espaço de tabela
selecione soma (bytes)/(1024*1024) como free_space,tablespace_name
de dba_free_space
agrupar por tablespace_name;
SELECIONE A.TABLESPACE_NAME, A.BYTES TOTAL, B.BYTES USADOS, C.BYTES LIVRES,
(B.BYTES*100)/A.BYTES "% USADO",(C.BYTES*100)/A.BYTES "% LIVRE"
DE SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
ONDE A.TABLESPACE_NAME=B.TABLESPACE_NAME E A.TABLESPACE_NAME=C.TABLESPACE_NAME;
7. Visualize objetos de banco de dados
selecione proprietário, object_type, status, count(*) count# do grupo all_objects por proprietário, object_type, status;
8. Verifique a versão do banco de dados
Selecione a versão DE Product_component_version
Onde SUBSTR(PRODUCT,1,6)='Oracle';
9. Veja a data de criação e método de arquivamento do banco de dados
Selecione Criado, Log_Mode, Log_Mode do V$Database;
10. Capture SQL que está em execução há muito tempo
formato de nome de usuário da coluna a12
coluna opname formato a16
formato de progresso da coluna a8
selecione nome de usuário,sid,opname,
round(sofar*100 / totalwork,0) || '%' conforme progresso,
tempo_restante,sql_text
de v$session_longops , v$sql
onde time_remaining <> 0
e endereço_sql = endereço
e sql_hash_value = hash_value
/
11. Visualize as informações dos parâmetros da folha de dados
SELECT nome_da_partição, valor_alto, comprimento_de_valor_alto, nome_do_espaço_de_tabela,
pct_free, pct_used, ini_trans, max_trans, extensão_inicial,
next_extent, min_extent, max_extent, pct_increase, FREELISTS,
freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocos,
blocos_vazios, avg_space, chain_cnt, avg_row_len, sample_size,
último_analisado
DE dba_tab_partitions
--WHERE nome_tabela = :tname AND proprietário_tabela = :towner
ORDER BY partição_posição
12. Visualize transações não confirmadas
selecione * de v$locked_object;
selecione * de v$transação;
13. Descubra por quais processos o objeto é usado
selecione
p.spid,
s.sid,
s.serial#núm_série,
s.nomedeusuário nome_usuário,
a.type tipo_objeto,
s.osuser os_user_name,
a.proprietário,
a.objeto nome_do_objeto,
decodificar(sinal(48 - comando),
1,
to_char(comando), 'Código de ação #' || to_char(comando) ) ação,
p.programa oracle_process,
terminal s.terminal,
programa s.programa,
s.status session_status
de v$sessão s, v$acesso a, v$processo p
onde s.paddr = p.addr e
s.type = 'USUÁRIO' e
a.sid = s.sid e
a.object='SUBSCRIBER_ATTR'
ordenar por s.username, s.osuser
14. Visualização de segmento de reversão
selecione rownum, sys.dba_rollback_segs.segment_name Nome, v$rollstat.extents
Extensões, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,
v$rollstat.gets Obtém, v$rollstat.waits Espera, v$rollstat.writes Grava,
Status de sys.dba_rollback_segs.status de v$rollstat, sys.dba_rollback_segs,
v$rollname onde v$rollname.name(+) = sys.dba_rollback_segs.segment_name e
v$rollstat.usn (+) = v$rollname.usn ordenar por rownum
15. Processo que consome recursos (sessão superior)
selecione s.schemaname nome_do_esquema, decodificar(sinal(48 - comando), 1,
to_char(comando), 'Código de ação #' || to_char(comando) ) ação, status
session_status, s.osuser os_user_name, s.sid, p.spid, s.serial# serial_num,
nvl(s.username, '[processo Oracle]') user_name, s.terminal terminal,
s.program programa, st.value valor_critério de v$sesstat st, v$sessão s, v$processo p
onde st.sid = s.sid e st.statistic# = to_number('38') e ('ALL' = 'ALL'
ou s.status = 'ALL') e p.addr = s.paddr ordenar por st.value desc, p.spid asc, s.username asc, s.osuser asc
16. Verifique o status do bloqueio
selecione /*+ RULE */ ls.osuser os_user_name, ls.username nome_do_usuário,
decode(ls.type, 'RW', 'Bloqueio de enfileiramento de espera de linha', 'TM', 'Bloqueio de enfileiramento DML', 'TX',
'Bloqueio de enfileiramento de transação', 'UL', 'Bloqueio fornecido pelo usuário') lock_type,
o.object_name objeto, decode(ls.lmode, 1, null, 2, 'Row Share', 3,
'Linha Exclusiva', 4, 'Compartilhar', 5, 'Compartilhar Linha Exclusiva', 6, 'Exclusivo', nulo)
lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2
de sys.dba_objects o, (selecione s.osuser, s.username, l.type,
l.lmode, s.sid, s.serial#, l.id1, l.id2 de v$session s,
v$lock l onde s.sid = l.sid ) ls onde o.object_id = ls.id1 e o.owner
<> Ordem 'SYS' por o.owner, o.object_name
17. Verifique o status de espera
SELECIONE v$waitstat.class, v$waitstat.count contagem, SUM(v$sysstat.value) sum_value
FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('bloco db obtém',
'obtenções consistentes') agrupar por v$waitstat.class, v$waitstat.count
18. Verifique a situação do SGA
SELECIONE NOME, BYTES DE SYS.V_$SGASTAT ORDEM POR NOME ASC
19. Ver objeto capturado
SELECIONE proprietário, nome, db_link, namespace,
tipo, sharable_mem, cargas, execuções,
bloqueios, pinos, mantidos em v$db_object_cache
20. Ver V$SQLAREA
SELECIONE SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,
VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUÇÕES,
USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,
BUFFER_GETS, ROWS_PROCESSED DE V$SQLAREA
vinte e um. Ver o número de categorias de objetos
selecione decodificar (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,
'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , contagem(*) quantidade de
sys.obj$ o onde o.type# > 1 grupo por decodificação (o.type#,1,'INDEX' , 2,'TABLE' , 3
, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) seleção de união
'COLUMN' , contagem(*) de sys.col$ union selecione 'DB LINK' , contagem(*) de
vinte e dois. Ver tipos de objetos por usuário
selecione esquema u.name, índices sum(decode(o.type#, 1, 1, NULL)),
sum(decode(o.type#, 2, 1, NULL)) tabelas, sum(decode(o.type#, 3, 1, NULL))
clusters, visualizações sum(decode(o.type#, 4, 1, NULL)), sum(decode(o.type#, 5, 1,
NULL)) sinônimos, sequências sum(decode(o.type#, 6, 1, NULL)),
soma(decodificar(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))
outros de sys.obj$ o, sys.user$ u onde o.type# >= 1 e u.user# =
o.owner# e u.name <> grupo 'PUBLIC' por u.name ordenar por
sys.link$ união selecione 'CONSTRAINT' , contagem(*) de sys.con$
vinte e três. Informações relacionadas sobre conexão
1) Verifique quais usuários estão conectados
selecione s.osuser os_user_name, decodificar (sinal (48 - comando), 1, to_char (comando),
'Código de ação #' || to_char(command) ) ação, p.program oracle_process,
status session_status, terminal s.terminal, programa s.program,
s.username nome_do_usuário, s.fixed_table_sequence Activity_meter, 'consulta,
0 memória, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num
de v$session s, v$process p onde s.paddr=p.addr e s.type = 'USER'
ordenar por s.username, s.osuser
2) Verifique o uso de recursos da conexão correspondente com base em v.sid
selecione n.nome,
v.valor,
n.classe,
n.estatística#
de v$statname n,
v$sesstat v
onde v.sid = 71 e
v.estatística# = n.estatística#
ordenar por n.class, n.statistic#
3) Verifique o sql em execução da conexão correspondente com base no sid
selecione /*+ PUSH_SUBQ */
tipo_comando,
texto_sql,
compartilhável_mem,
persistente_mem,
runtime_mem,
tipos,
contagem_de_versão,
versões_carregadas,
versões_abertas,
usuários_abertura,
execuções,
usuários_executando,
cargas,
first_load_time,
invalidações,
parse_calls,
leituras de disco,
buffer_gets,
linhas_processadas,
data_início do sistema,
data_do_sistema hora_de_término,
'>' || endereço endereço_sql,
Estado 'N'
de v$sqlarea
onde endereço = (selecione sql_address de v$session onde sid = 71)
vinte e quatro. Consultar o uso do espaço de tabela selecione a.tablespace_name "nome do espaço de tabela",
100 rodadas((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "Ocupação (%)",
round(a.bytes_alloc/1024/1024,2) "Capacidade (M)",
round(nvl(b.bytes_free,0)/1024/1024,2) "Livre(M)",
round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "Usar (M)",
Maior "segmento de extensão máxima (M)",
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "tempo de amostragem"
de (selecione f.tablespace_name,
soma(f.bytes) bytes_alloc,
soma(decodificar(f.autoextensível,'SIM',f.maxbytes,'NÃO',f.bytes)) maxbytes
de dba_data_filesf
agrupar por tablespace_name) a,
(selecione f.tablespace_name,
soma(f.bytes) bytes_free
de dba_free_spacef
agrupar por tablespace_name) b,
(selecione redondo (max (ff.length) * 16/1024,2) Maior,
ts.name nome_espaço_de_tabela
de sys.fet$ ff, sys.file$ tf,sys.ts$ ts
onde ts.ts#=ff.ts# e ff.file#=tf.relfile# e ts.ts#=tf.ts#
agrupar por ts.name, tf.blocks) c
onde a.tablespace_name = b.tablespace_name e a.tablespace_name = c.tablespace_name
25. Consulte o grau de fragmentação do espaço de tabela
selecione tablespace_name,count(tablespace_name) do grupo dba_free_space por tablespace_name
tendo contagem(tablespace_name)>10;
alterar nome do espaço de tabela coalescer;
alterar nome da tabela desalocar não utilizado;
crie ou substitua a visualização ts_blocks_v como
selecione tablespace_name,block_id,bytes,blocks,'espaço livre' segment_name de dba_free_space
união tudo
selecione tablespace_name,block_id,bytes,blocks,segment_name de dba_extents;
selecione * em ts_blocks_v;
selecione tablespace_name,soma(bytes),max(bytes),count(block_id) de dba_free_space
agrupar por tablespace_name;
26. Verifique quais instâncias estão em execução:
selecione * em v$active_instances;
-