ORACLE DB PERFORMANCE TUNING
AVALIAÇÃO TÉCNICA leandro@dbcenter.com.br
1. Cite no mínimo 3 (três) fatores técnicos que podem
afetar a boa performance do Banco de Dados.
·
Configuração do hardware
·
Concorrência em registros
·
Seletividade x Densidade
·
Otimização: SO, SGBD e Aplicação
·
Atividades realizadas pelo servidor
·
Código mal escrito
2. Descreva com suas palavras 3 (três) itens que devem
ser levando em consideração no Início do Projeto para que o Banco de Dados
tenha uma boa performance no futuro.
·
Divulgação do projeto entre as demais áreas.
·
Qual será a infraestrutura necessária?
·
Modelagem de Dados e Normalização.
·
Definição ideal dos tipos de dados.
·
Instalação de aplicativos de terceiros.
3. Defina com suas palavras o que é índice e qual seu
objetivo.
Os
índices são estruturas opcionais associadas a tabelas e ‘clusters’ (um
grupo de tabelas que compartilham os mesmos blocos de dados, desde que
compartilhem colunas em comum e são usadas frequentemente em conjunto)
que permitem que as consultas SQL sejam executadas mais rapidamente.
Um índice fornece acesso direto e rápido às
linhas em uma tabela. Seu objetivo é reduzir a necessidade de I/O do
disco usando um caminho indexado para localizar dados de forma mais
rápida.
4. Descreva como é o funcionamento do Cover Index.
Na maioria dos casos,
um índice é usado para localizar rapidamente o registro(s) de dados a partir do
qual os dados necessários são lidos. Ou seja, o índice é utilizado para
localizar os registros de dados na tabela e não para retornar dados.
Um Cover Index é um
caso especial em que o índice foi criado contendo em si mesmo as colunas
adicionais com os campos de dados necessário(s) e pode retornar os dados
diretamente.
Um índice de
cobertura pode acelerar drasticamente a recuperação de dados, mas pode-se ser demasiado
grande devido às keys adicionais, que retardam a inserção de dados e
atualização.
5. Qual o objetivo da utilização do conceito HINT
dentro de uma instrução SELECT.
HINT (sugestão,
dica) é um trecho de código incorporado em uma instrução SQL para sugerir ao
Oracle como a instrução deve ser executada. Alguns exemplos: ALL_ROWS, FIRST_ROWS,
CHOOSE, RULE, INDEX, FULL, ORDERED, STAR.
HINT só deve ser usado como um último recurso se as estatísticas
foram coletadas e a consulta ainda está seguindo um plano de execução abaixo do
esperado.
6. Analise a query abaixo e descreva o que ela está
fazendo:
select /*+ NO_INDEX (emp deptno_idx,
empno_idx) */
ename, empno
from emp
where deptno = 1
and empno = 7750;
Executa uma query onde especificamos ou sugerimos (HINT) que os index
emp deptno_idx e empno_idx não sejam utilizados.
7. [sqlplus] Abra uma conexão no Oracle com o usuario SYS.
C:\Users\admlab>@sqlplus sys/oracle as sysdba
8. [sqlplus] Abra uma outra conexão no Oracle, agora com o usuário SCOTT.
C:\Users\admlab>sqlplus
usuário: SCOTT
senha: tiger
9. [sqlplus] Abra uma outra conexão no Oracle, agora com o usuário PERFSTAT.
SQL> @%ORACLE_HOME%\rdbms\admin\spcreate.sql
@[diretório_de_instalação_Oracle]\rdbms\admin\spcreate.sql
perfstat_password: oracle
default_tablespace: USERS
temporary_tablespace: TEMP
10. [sys] Liste o SID, SERIAL# e USERNAME de todas conexões existentes.
11. [scott] Utilize Explain Plan na query abaixo, mostre o resultado e explique o que está ocorrendo.
select ename from scott.emp where ename = 'king';
Comando que permite o profissional identificar qual é o plano de execução que o Oracle está utilizando para atender a solicitação da query analisada.
12. [sys] Quantas linhas possui cada tabela do owner scott
13. [perfstat] Colete Estatísticas através do Statspack (1ª Coleta)
14. [sys] Habilite o AutoTrace
15. [sys] Ao executar os scripts abaixo, responda qual o nome do Índice que está sendo utilizado em cada execução e explique o porque:
select job, empno from scott.emp where empno = 7839;
select job, empno from scott.emp where empno = ‘7839’;
select job, empno from scott.emp where empno != 7839;
16. [sys] Desabilite o AutoTrace
17. [perfstat] Colete Estatísticas através do Statspack (2ª Coleta)
18. [sys] Habilite o Trace na sessão do Scott
19. [scott] Crie através de código DML, DDL e PL/SQL o seguinte cenário:
Uma tabela e massa de dados para essa tabela com 3 milhões de registros
Selecione todas colunas e 500 mil registros
Selecione só a primeira coluna e 100 mil registros
Selecione só a primeira coluna e apenas 10 registros
Através das views de dicionário de dados mostre todos os índices existentes na tabela que você criou no inicio dessa questão
20. [sys] Quantos objetos tem cada owner ?
set line 120
set pagesize 0
set feedback off
ttitle 'RELATORIO DE OBJETOS'
break on report
select '' from dual;
select '************************************************' from dual;
select 'Quantidade tipos de objetos por owner' from dual;
select '************************************************' from dual;
select owner,object_type,count(*) from dba_objects where object_name not like 'QX__%'
group by owner,object_type order by owner,object_type;
select '' from dual;
select '************************************************' from dual;
select 'Quantidade por tipo de objeto' from dual;
select '************************************************' from dual;
select object_type,count(*) from dba_objects where object_name not like 'QX__%'
and owner not like 'OPS$%'
and owner not in ('SYSTEM','SYS','OMWB','MDSYS')
and owner not in ('OUTLN', 'WMSYS', 'ORDSYS', 'ORDPLUGINS', 'MDSYS', 'XDB', 'ANONYMOUS', 'WKPROXY')
group by object_type order by object_type;
set feedback on
set pagesize 24
set linesize 80
clear break;
ttitle off;
22. [system operacional] Utilize o arquivo de resultado do Trace acima e crie através do TKProf um arquivo de saída com o nome ResultTraceScott e responda se o Oracle está utilizando Index ou Full Table Scan para recuperar os dados.
23. [sys] Qual o tamanho utilizado e livre de todos os tablespaces ?
24. [sys] Quantos MBs o owner scott possui em relação a suas tabelas ?
25. [sys] Quais os índices que ainda não foram analisados ?
26. [sys] Execute o script que realiza analyze de todos os index que ainda não foram analisados.
27. [sys] Quanto mais próximo de 100% o “Buffer Cache Hit Ratio” estiver será melhor para seu banco de dados. Qual o percentual que está nesse momento ? O que pode ser feito para melhorar ?
28. [sys] Quais são as 10 (dez) queries que estão neste momento sendo mais utilizadas na memória do Oracle Database
29. [sys] Gere um arquivo através do Statspack, analise seu conteúdo e identifique qual é a query que mais consumiu recursos do servidor.
30. [sys] Gere um arquivo através do AWR, analise e sugira uma melhoria na parte de memória do Oracle.
31. [sys] Gere um arquivo através do ADDM e identifique uma sugestão de melhoria que o relatório está mostrando
Nenhum comentário:
Postar um comentário