GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Prova para entrevistar DBA’s Oracle! Tente você!

Meus amigos,

Abaixo replico o conteúdo de uma prova Oracle a que fui submetido há alguns anos atrás em uma entrevista (passei, mas lembro que “cansei” o cérebro…;-) ), estava arrumando meu hd externo e a encontrei….
Vale a pena, pois a prova engloba conceitos e prática, de uma forma perfeita!!
Algumas perguntas são fáceis, outras aparentam facilidade e outras bem complexas…
Vou postando as respostas aos poucos, afinal são 43 perguntas…..mas já aceito respostas de quem aceitar o desafio….

Sugestão, façam sem consultar material nenhum, isso medirá da melhor forma seus conhecimentos.
Toda as questões da prova serão respondidas e comentadas aqui!!

Dica: Cuidado, nem tudo que você lê…é real!! rss

Questão 1

Suponha que para acelerar uma reorganização um DBA tem a ideia de disparar imports em paralelo.
Para isso ele sugere a sequência de operações abaixo. Quais são os problemas que você enxerga na proposta de reorganização sugerida por ele? (Suponha que apenas os schemas “APPOWN”, ”CLSOWN” e “CLOWN” possuem objetos)

a. exp full=yes file=full.dmp log=full.log
b. destruição do banco de dados
c. imp full=yes rows=no file=full.dmp
d. disparar em paralelo:
i. imp rows=yes ignore=yes fromuser=APPOWN touser=APPOWN buffer=104857600
ii. imp rows=yes ignore=yes fromuser=CLSOWN touser=CLSOWN buffer=104857600
iii. imp rows=yes ignore=yes fromuser=CLOWN touser=CLOWN buffer=104857600

Questão 2

Num cenário em que o desempenho de DMLs no oracle estão demasiadamente lentas e após SQLTraces você descobre que 90% do tempo gasto com DMLs são gastos num único INSERT com BINDs que é executado milhões de vezes por dia. O Ambiente em que isso está ocorrendo é uma máquina multiprocessada com mais de 10 processadores, 24 Gb de RAM ligada a um STORAGE externo através de fibre-channel 2Gb. Mesmo assim você nota através de monitoramento do S/O que o processo DBW0 consome 100% de uma CPU e fica horas neste estado. Você resolve reiniciar o banco de dados com 5 database writers e não nota melhoria de desempenho. Investigando um pouco mais você percebe que a tabela em que os dados estão sendo inseridos possui apenas um índice e é particionada por RANGE de uma coluna do tipo data. O índice é particionado localmente e a tabela não possui TRIGGER. Que passos você seguiria a partir daqui para continuar o diagnóstico? Qual é a causa mais provável da lentidão.

Questão 3

Num cenário idêntico ao caso 2 você tira um STATSPACK e descobre que a ENQUEUE SQ é a que possui maior tempo de espera. Muito maior que todas as outras. Quais os passos você seguiria para continuar a investigação e o que você imagina que seja a causa raiz do problema.

Questão 4

Qual a diferença entre um índice particionado LOCALMENTE e GLOBALMENTE. O que acontece com o estado do índice quando você remove uma partição de um índice LOCAL com ALTER INDEX DROP PARTITION , e quando o índice é GLOBAL.

Questão 5

Após executar um catalog/catproc/catexp num banco de dados você tentou várias vezes recriar um
índice ORACLE TEXT/INTERMEDIA e teve um ORA-00600 em um package interno do usuário CTXSYS. O que você tentaria fazer antes de abrir um chamado no suporte da Oracle?

Questão 6

Você notou que uma tabela particionada importante do sistema estava com PARALLEL DEGREE maior que 1. A máquina em que a instância está rodando tem 10 cpus, o PARALLEL DEGREE está em 5, como o banco estava em modo CHOOSE mas sem estatísticas você resolveu voltar o PARALLEL DEGREE para 1. Após isso os usuários começaram a reclamar de lentidão no sistema e ao verificar a V$SESSION_WAIT notou que varias sessões estavam esperando pelo evento BUFFER BUSY WAITS.

a. Explique porque tabelas com PARALLEL DEGREE > 1 devem ter estatísticas.
b. Qual é o motivo mais provável para após a mudança haver alta contenção de BUFFER BUSY WAITS?

Questão 7

Comente as diferenças entre os 3 comandos abaixo:

a. DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>’XPTO’, estimate_percent=>99, method_opt=>’FOR ALL INDEXED COLUMNS SIZE 200’, degree=>5,cascade=>TRUE,options=>’GATHER STALE’);

b. DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>’XPTO’, estimate_percent=>99, method_opt=>’FOR ALL COLUMNS SIZE 200’, degree=>5,cascade=>FALSE,options=>’GATHER’);

c. DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>’XPTO’, estimate_percent=>99, method_opt=>’FOR ALL INDEXED COLUMNS SIZE 1’, degree=>5,cascade=>TRUE,options=>’GATHER EMPTY’);

Questão 8

Uma transação grande foi abortada e o processo de rollback foi iniciado automaticamente pelo Oracle. Como você pode, a partir das views do dicionário de dados, estimar o tempo necessário para que este Rollback termine?

Questão 9

Para que serve o parâmetro PGA_AGGREGATE_TARGET. Qual é a vantagem em utilizá-lo?

Questão 10

Qual é a vantagem de uma GLOBAL TEMPORARY TABLE (GTT) em relação a uma tabela convencional para realização de transações temporárias?

Questão 11

Para que servem as hints: USE_NL, USE_HASH, USE_MERGE e APPEND?

Questão 12

Em que situação vale a pena criar um índice bitmap sobre uma coluna para melhorar o desempenho de consultas.

Questão 13

Usuários da web estão reclamando que o servidor de HTTP está dando timeout quando eles tentam entrar em uma determinada página. A sua equipe de suporte ao site diagnosticou que o erro é causado porque na tentativa de executar uma procedure PL/SQL ao invés de retorno imediato, a sessão oracle fica aparentemente travada. Após uma investigação você descobre que todas as vezes que alguém tenta executar o procedimento a sua sessão fica travada esperando por um LIBRARY CACHE PIN. O que deve ser feito para corrigir o problema sem que haja necessidade de derrubar o banco de dados?

Questão 14

Existe alguma forma mais rápida de carregar (INSERT) linhas em uma tabela do que um import (suponha ORACLE EXECUTE DBMS_JOB.ISUBMIT(10,’MEU_JOB;’,SYSDATE + 5/24/60, ‘SYSDATE + 5/24/60’);
PL/SQL procedure successfully completed.

SQL> select job,what,next_date from dba_jobs;

JOB WHAT NEXT_DATE


10 MEU_JOB; 2003-05-16 02:01:18
SQL>

c. 10 minutos depois o JOB 10 não havia sido executado. O que está faltando?

Questão 17

Para que serve uma transação AUTONÔMA?

Questão 18

Explique por que um TRUNCATE TABLE ou DROP TABLE executado sobre uma tabela com 50.000 extents em uma tablespace DICTIONARY MANAGED não deve ser executado em produção. Por que o comando pode levar dias sendo executado?

Questão 19

O banco de dados está gerando redo-log a uma taxa acima do normal. Como você descobriria os comandos responsáveis por isso?

Questão 20

O que é o recurso Oracle Transparent Application Failover(TAF)? Como é configurado? (Não é necessário dar os parâmetros exatos de configuração, apenas ilustrar como a configuração é feita)

Questão 21

Como é possível habilitar o SQL-trace para uma sessão que já está aberta e executando comandos?

Questão 22

O evento 10046 permite habilitar o registro dos valores de BIND VARIABLES e de WAIT EVENTS nos sql-traces. Como é possível habilitar este evento para uma sessão que está aberta e executando comandos a partir de uma outra sessão (sua) conectada ao banco de dados como usuário SYS.

Questão 23

A partir do 9i release 2 está disponível o package DBMS_XPLAN. Cite uma característica importante que foi introduzida a partir deste release no output do comando EXPLAIN PLAN e que pode ser observada facilmente utilizando-se este package?

Questão 24

Para que serve o comando “ORADEBUG HANGANALYZE 2” do SQL-Plus em que situações ele pode ser útil?

Questão 25

Usuários começaram a reclamar que estão recebendo erros de blocos corrompidos em tabelas. Após verificar os erros você resolve voltar um backup. Como este banco dados é de missão crítica e somente um datafile foi afetado pelo problema você resolve voltar um backup online e fazer um recover. Suponha que você tenha todos os archives necessários para o recover. Descreva a sequência de comandos que você teria de executar em um SQL-Plus para fazer o recover.

Questão 26

Uma máquina foi reiniciada acidentalmente durante um backup ONLINE do banco de dados. Após
algumas horas você foi acionado porque o banco de dados não está subindo. Você verifica no alert.log e o banco não sobe porque o oracle está reportando os seguinte erro: ORA-01113: FILE 1 NEEDS MEDIA RECOVERY. O que você deve fazer para que banco de dados abra novamente?

Questão 27

Sua tablespace de UNDO foi corrompida com o banco no ar. Você sé notou o problema quando teve de reiniciar o banco de dados. O banco de dados não está em archivelog e o último backup em fita, feito na noite anterior, está corrompido. O que você pode fazer para conseguir abrir o banco de dados? Quais as implicações do método que você utilizou?

Questão 28

Será feita uma migração da versão 8.1.7.0 para a versão 8.1.7.4. Você chegou a conclusão de que a migração deve ser feita através de export/import porquê quer reorganizar a base de dados. Como a base de dados é grande você fez o export com o parâmetro DIRECT=YES. Quais os riscos que você corre por conta de ter feito esta opção no momento em que for fazer o IMPORT?

Questão 29

Em que situação você recomendaria o uso de SHARED SERVER (MTS). Além dos parâmetros básicos para configuração de dispatchers, servers, local_listener, que outros parâmetros devem ser redimensionados por conta desta mudança?

Questão 30

Explique o conceito de PARTITION-WISE JOIN.

Questão 31

O que é particionamento por LIST, por HASH e por RANGE?

Questão 32

Qual é a diferença entre RAID5, RAID 1 e RAID 0+1. Qual destes RAIDs é mais adequado
para um banco de dados que lê muito e escreve pouco?

Questão 33

Você possui arquivos texto no sistema operacional. Esses arquivos contém dados que você carrega em tabelas temporárias através do SQL-LOADER. Após carregados os dados são tratados e inseridos em tabelas definitivas. O tratamento consiste em verificar se a linha já existe. Se ela existir todos os dados exceto a chave primária são atualizados com um update. Se ela não existir ela é inserida. De que forma você poderia tornar este processo mais rápido em um oracle 9i.

Questão 34

Explique porquê FULL TABLE SCAN em uma tabela de 10 milhões de blocos afeta o buffer cache hitratio mas não sobrescreve todos os blocos do database buffer cache.

Questão 35

Em que consiste a compressão de folhas em um índice (cláusula COMPRESS do CREATE INDEX)?

Questão 36

Para que serve o script $ORACLE_HOME/rdbms/admin/utlrp. Que vantagem ele oferece sobre o
método convencional ? (Script gerado manualmente a partir da DBA_OBJECTS por exemplo).

Questão 37

Como você poderia habilitar o SQL-Trace para todas as sessões conectadas e as que se conectarem no banco de dados sem ter de reiniciá-lo. Suponha para isso que você vai usar uma solução para as já conectadas e outra para as que ainda vão se conectar.

Questão 38

Explique o problema encontrado no cenário abaixo:

SQL> select sid,type,id1,id2,lmode,request from v$lock;

SID TY ID1 ID2 LMODE REQUEST


2 MR 201 0 4 0
2 MR 4 0 4 0
2 MR 3 0 4 0
2 MR 2 0 4 0
2 MR 1 0 4 0
3 RT 1 0 6 0
4 XR 4 0 1 0
5 TS 2 1 3 0
9 TX 65555 2097 6 0
9 TM 7067 0 2 0
10 TM 7067 0 2 0
11 TX 65555 2097 0 6

O que significa um lock type TX LMODE 6? Que tipo de objeto é representado pelo ID1 = 65555? E pelo ID 7067?

Questão 39

Por quê após um DELETE de todas as linhas de uma tabela com 10 milhões de linhas um SELECT COUNT(*) para contar as linhas da tabela demora muito tempo para retornar ZERO.

Questão 40

Você executou um ipcs –a num Unix e descobriu que o Oracle alocou 50 segmentos de memória
compartilhada. Isso não é exatamente um problema mas dependendo do sistema operacional pode causar uma ligeira degradação de desempenho. O que você deve fazer para corrigir este problema?

Questão 41

Em uma grande máquina a arquitetura de memória é NUMA. Você quer habilitar o Oracle para utilizar esta arquitetura adequadamente. Sem entrar nos detalhes de parametrização, que passo é imprescindível, do ponto de vista do ORACLE para que você possa utilizar este recurso?

Questão 42

Qual a diferença entre um COMMIT e um Checkpoint?

Questão 43

É possível aumentar os REDO-LOG files com o banco ONLINE? Que sequência de operações você deveria fazer de forma a causar o mínimo impacto no desempenho e não provocar furos na sequência de archives?

Share

You may also like...

4 Responses

  1. Emerson disse:

    Isso só prova que tenho que estudar e muito, mesmo…hehehe muito boa..!!

  2. Muito boa prova, Ramasine. Deixaria MUITOS candidatos para fora do processo aqui, nem chego a este nível de perguntas.
    Entretanto, a prova me parece muito familiar, acho que eu já fiz essa. Era para a Inmetrics?

    Grande abraço !

  3. Marcelo Feijó Vargas disse:

    Excelente prova!!!! Abraços

  4. Viviane disse:

    onde eu vejo as respostas?

Deixe um comentário

O seu endereço de e-mail não será publicado.