Buscar

DBAs World

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
“DBA’s World”
Alexandre Pereira Meire
Maio/2006
apmeire@gmail.com 
Tarefas comuns de um DBA
� Instalação do software de banco de dados
� Criação de bancos de dados
� Upgrade do BD e software para versões mais 
recentes
� Inicialização e shutdown do BD
� Gerência das estruturas de armazenamento 
(storage)
� Gerência de usuários e segurança
2
Tarefas comuns de um DBA 
(cont)
� Manipulação de objetos: tabelas, índices e 
views
� Realização de backups do BD e restauração, 
quando necessário
� Monitoramento da saúde do BD de forma 
proativa e tomada de ações preventivas ou 
corretivas quando requerido
� Monitoramento e ajuste de performance
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD 
� Performance
� Design
3
Arquitetura do BD Oracle
� Estruturas lógicas:
– Tablespace, segmento, extensão, bloco
� Estruturas físicas:
– Data files, redo log files, control files
� Instância Oracle
– Estruturas de memória: SGA, PGA
– Processos:
• Processos servidores, processos em background
Estruturas Lógicas
� Parâmetro 
DB_BLOCK_SIZE 
especificado durante a 
criação do Database
� Valor: potência de 2
� Faixa de valores 
depende do SO; 
tipicamente: 2KB-16KB
� Valor 4KB ou 8KB para 
OLTP, 16KB ou mais 
para sistemas OLAP
4
Estruturas Físicas
� Data Files
� Redo Log Files (multiplexado)
� Control Files (multiplexado) 
– Database name, nomes e localizações dos 
data files e redo log files
– Utilizado na inicialização da instância ou 
recuperação a partir de falhas 
(identificação dos data file e redo log)
Tablespaces e Datafiles
5
Estrutura de Memória da 
Instância Oracle
� SGA (System Global Area)
– Buffer Cache -The buffer cache is the component of the SGA that acts as the
buffer to store any data being queried or modified.
– Shared Pool -The shared pool caches information that can be shared among 
users (SQL statements, information from the data dictionary, stored procedures)
– Redo Log Buffer -This buffer improves performance by caching redo 
information (used for instance recovery) until it can be written to the physical redo 
log files (disk).
– Large Pool -An optional area that is used for buffering large I/O requests for
various server processes.
– Java Pool -The Java pool memory is used for all session-specific Java code and
data within the Java Virtual Machine (JVM)
– Streams Pool -The Streams pool is used by the Oracle Streams product.
Instância Oracle
6
Estrutura de Memória da 
Instância Oracle (cont)
� PGA (Program Global Area)
– A program global area (PGA) é a área de memória utilizada por 
cada Oracle server process. 
– Cada server process é o processo às requisições de um cliente 
conectado. Cada server process tem sua própria área PGA, uma 
área de memória não compartilhada.
– A PGA é utilizada para processamento de comandos SQL e 
manutenção de informações de logon e sessão.
– A quantidade de memória PGA utilizada e seu conteúdo depende 
da configuração da instância, i.e., se a instância é executada em 
modo dedicado ou compartilhado (dedicated server or shared 
server mode).
Oracle Background Processes
� Database Writer (DBWn) -The database writer writes modified 
blocks from the database buffer cache to the files on disk (maximum of 20)
� Log Writer (LGWR) -The log writer process writes redo log entries to 
disk. Redo log entries are generated in the redo log buffer of the SGA and the log writer 
process writes the redo log entries sequentially into an online redo log file.
� Checkpoint -At specific times, all modified database buffers in the SGA are 
written to the datafiles by a database writer process (DBWn). This event is called a
checkpoint. The checkpoint process is responsible for signalling DBWn at checkpoints 
and updating all of the datafiles and control files of the database to indicate the most 
recent checkpoint.
7
Oracle Background Processes 
(cont)
� System Monitor (SMON) -The system monitor performs crash recovery 
when a failed instance starts up again.
� Process Monitor (PMON) -The process monitor performs process recovery 
when a user process fails. It is responsible for cleaning up the cache and freeing 
resources that the failed process was using.
� Archiver (ARCn) -When the database is running in archive log mode, one or
more archiver processes copy the redo log files to archival storage when the log files are
full or a log switch occurs.
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup 
� Gerência de Objetos do BD
� Performance
� Design
8
Segurança
� Usuários
� Senha e autenticação
� Roles e privilégios
� “Checklist”
Criação de usuário
CREATE USER <username>
IDENTIFIED BY <senha>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK
� Ao criar um usuário, é criado um 
‘schema’ para ele
� O usuário é o ‘owner’ dos objetos 
criados nesse schema
9
Privilégios
�Privilégios de sistema
grant create table to <user1>;
grant create procedure to <user2>;
grant create any table|view|index
|procedure|role|user ...
grant drop any table|view|index
|procedure|role|user ...
grant DBA to <user_dba>;
Privilégios (cont)
�Privilégios sobre objetos
grant insert, update, delete on
rh.funcionarios to user1;
grant select on rh.cargos to user2;
(melhor se concedidos através de 
roles)
grant <privilegio> on <objeto> to 
<role> [with admin option];
10
Privilégios (cont)
� Caso real (dicas):
– Privilégios sobre objetos: via roles, com senha
– Privilégios em Produção solicitados formalmente
– Não existe ‘log’ de criação e bloqueio de usuários 
e autorizações (deve ser implementado à parte)
– Modificações de objetos: somente DBAs (exceção 
objetos procedurais em desenv)
Checklist de Segurança
� Dica 1: instale somente os produtos 
necessários
– Schemas de exemplo: eliminar ou bloquear os 
usuários desses schemas
� Dica 2: bloquear e expirar todas as contas de 
usuário criadas na instalação (default via 
DBCA)
– Contas de usuário abertas são uma brecha a ser 
explorada para obter acesso não autorizado ao 
sistema 
– Contas de sistema: SYS, SYSTEM, SYSMAN, 
DBSNMP (Enterprise Manager)
11
Checklist de Segurança (cont)
� Dica 3: Modificar as passwords default
– Passwords distintas para usuários do sistema
– ‘SCOTT’ e outros usuários default: expired & 
locked
– Implementar regras de validação da password: 
comprimento, histórico, complexidade
– Parâmetros para passwords: 
• password_life_time, failed_login_attempts, etc 
– Caso ANS: geração de passwords (e antiga 
password ‘default’), bloqueio de usuários, conta 
de usuário “emprestada”
Checklist de Segurança (cont)
� Dica 4: desabilitar acesso ao Dic. Dados
– Parâmetro no init<sid>.ora: 
O7_DICTIONARY_ACCESSIBILITY = FALSE
– Desabilita acesso irrestrito ao Dic. Dados 
� Dica 5: princípio do privilégio mínimo 
– Conceder somente os privilégios estritamente 
necessários
– Revogar privilégios desnecessários do grupo 
PUBLIC
– Associar usuários a roles quando ele requer todos 
os privilégios dessa role
12
Checklist de Segurança (cont)
� Dica 6: exigir autenticação no DB
– Não permitir conexões com o usuário do 
sistema operacional. Parâmetro: 
REMOTE_OS_AUTHENT = FALSE
� Dica 7: restringir acesso ao sistema 
operacional
– Limitar a quantidade de usuários com 
privilégios no diretório do Oracle Database 
home (instalação) e seu conteúdo
Checklist de Segurança (cont)
� Dica 8: restringir o acesso via rede
– Utilizar um firewall
– Proteger o Listener (password, privilégios)
– Monitorar acesso, verificar endereços IP, 
criptografia (?)
� Dica 9: Aplicar Security Patches da 
Oracle e SO
� Dica 10: Contactar o suporte da Oracle
13
Usuários em um BD de produção 
(um caso real)
� Schemas contendo 
objetos (A)
– Um schema por sistema, 
ou por área de negócio
– Objetos de BD 
manipulados pelos 
sistemas (S/I/U/D)
– Nenhum desses usuários 
se conecta ao banco 
(são somente 
containeres de objetos)
� Usuários pp ditos (B)
– Usuários se conectam ao 
banco através dos 
sistemas– Usuários não criam ou 
modificar quaisquer 
objetos de BD (meta-
dados)
– Usuários têm privilégios 
para atualizar objetos 
nos schemas (A)
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup 
� Gerência de Objetos do BD
� Performance
� Design
14
Backup
� Backup físico: data files, control files, spfile, 
archived redo logs
� Backup lógico: tabelas, schemas, 
tablespaces
� Backup on-line x off-line (inconsistente x 
consistente): BD aberto, redo logs não 
aplicados aos data files x BD fechado, data 
files sem transações pendentes (redo)
� Backup “quente” (online), somente se BD 
operando em ARCHIVELOG mode
Backup (cont)
� Backup ‘full’ x backup incremental
� Restauração de BD a partir de um 
backup consistente: imediato
� Restauração de BD a partir de um 
backup inconsistente: transações 
pendentes, restaura os data files e 
aplica as transações constantes do 
Redo Log –> BD consistente!
15
Backup (dicas)
� BD operando em ARCHIVELOG MODE
� Utilizar o RMAN (automatizar o backup)
� Fazer backup também do control file e 
spfile (server parameter file) –
pequenos-
� Manter Backup Externo
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD 
� Performance
� Design
16
Objetos de Schema
� Clusters
� Database links
� Database triggers
� Dimensions
� External procedure libraries
� Indexes and index types
� Java classes, Java resources, and Java
sources
� Materialized views and materialized view logs
Objetos de Schema (cont)
� Object tables, object types, and object views
� Operators
� Sequences
� Stored functions, procedures, and packages
� Synonyms
� Tables and index-organized tables
� Views
17
Objetos, tablespaces e datafiles
Outros objetos
Objetos do BD não pertencentes a um schema, 
mas igualmente acessíveis através de 
comandos SQL
� Contexts
� Directories
� Profiles
� Roles
� Tablespaces
� Users
� Rollback segments
18
Dicionário de Dados
� Conjunto de tabelas e views com 
informações do banco de dados
� Usuários, tabelas, constraints, espaço 
disponível em cada schema (...)
� Atualizados pelo Oracle conforme 
modificações realizadas no BD (read-only
para usuários)
� Utilizado pelo Oracle em todas as suas 
operações
Partições
� Tabelas grandes (milhões de registros)
� Partições têm mesma estrutura lógica, mas 
conteúdo (linhas) distintas
� Exemplo: particionamento por ano
� Vantagens: 
– operações de manutenção (carga, criação de 
índices, rebuild, backup/recovery) podem ser 
realizadas no nível da partição, com melhor 
performance
– Operações de consultas referenciam a tabela, 
sem conhecer o particionamento subjacente 
(transparente para a aplicação)
19
Métodos de Particionamento
Particionamento Composto
20
Clusters
� Grupo de tabelas armazenadas 
fisicamente no mesmo bloco
� Aplicável a tabelas com colunas 
comuns, onde os registros relacionados 
são freqüentemente manipulados juntos
� Exemplo: Nota Fiscal e itens da nota
Clusters
21
Ferramentas
� Ferramenta: Enterprise Manager
– Monitoramento e administração dos servidores de 
bancos de dados e instâncias Oracle
– Interface Web
� Ferramenta: TOAD
– Gerência dos objetos de banco de dados
– Execução de SQL
– Interface Gráfica
Enterprise Manager
22
Enterprise Manager
TOAD
23
TOAD
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD
� Performance
� Design
24
Performance
� Otimização de aplicações (SQL Tuning)
� Otimização da instância (BD)
Linguagem SQL
� Linguagem não procedural: o que se 
deseja
SELECT employee_id, last_name
FROM employees
WHERE last_name = ‘SILVA’;
� Não indica como o comando é 
executado
25
Plano de Execução
� Comando EXPLAIN PLAN...
� Opção AUTOTRACE no SQL*Plus
� Plano de Execução é gravado na tabela 
PLAN_TABLE
� O Otimizador Oracle é baseado em 
custo (CBO), a partir da versão 10g
Plano de Execução (exemplo)
26
Processamento de comandos
Analisador
(parser)
Otimizador
Gerador de
registros
Dicionário
de Dados
Usuário
Consulta
SQL
Consulta
analisada
pelo Parser
Estatísticas
Plano de
execução
Executor
SQL
Resultado
Funcionamento do Otimizador 
Oracle
� Execução de expressões e condições
� Transformação de comandos
� Avaliação do objetivo da otimização 
(por exemplo, obter primeiros registros 
mais rápido)
� Seleção do caminho de acesso
� Seleção da ordem de ‘joins’
27
Expressões (exemplo)
� Como o CBO avalia o operador IN
select fist_name, last_name
from funcionarios
where last_name IN (’SMITH’, ’KING’, ’JONES’)
transformada em
select fist_name, last_name
from funcionarios
where last_name = ’SMITH’ OR last_name = ’KING’ OR
last_name = ’JONES’
Transformação de queries 
(exemplo)
� Como o CBO modifica subqueries aninhadas
SELECT *
FROM orders
WHERE customer_id IN
(SELECT customer_id FROM customers);
Se coluna customer_id é a Primary Key ou Unique Key da 
tabela customers:
SELECT orders.*
FROM orders, customers
WHERE orders.customer_id = customers.customer_id;
� Importante: a query transformada retorna o mesmo resultado da 
inicial
28
Ações para melhoria de SQL
� Atualizar periodicamente as estatísticas de 
otimização (de tabelas e índices)
� Analisar e alterar o plano de execução
� Reestruturar o comando
� Reestruturar os índices envolvidos no comando
� Modificar ou desabilitar constraints e triggers (obs: 
“aprecie com moderação”)
� Reestruturar os dados
� Armazenar o plano de execução
� Reduzir a quantidade de acesso aos dados
Objetivos da Otimização
� Como são estabelecidos os objetivos da 
otimização?
– Parâmetro OPTIMIZER_MODE =
• ALL_ROWS: melhor throughput
• FIRST_ROWS_n: melhor tempo de resposta para 
primeiros ‘n’ registros
• FIRST_ROWS (n=1) �não aconselhável na versão 
Oracle 10g (sem estatísticas, não usa otimização por 
custo)
– Pode ser definido no nível da instância ou de uma 
única sessão
29
Objetivos da Otimização (cont)
– Uso de ‘HINT’ no comando
• Hints são comentários inseridos no comando e 
interpretados pelo otimizador como uma indicação do 
usuário para a geração do plano de execução
SELECT /*+ ALL_ROWS */ COD_FUNC
FROM FUNCIONARIOS FUNC
WHERE COD_FUNCIONARIO > 20
SELECT /*+ FIRST_ROWS(10) */ COD_FUNC
FROM FUNCIONARIOS FUNC
WHERE COD_FUNCIONARIO > 20
Parâmetros do Otimizador
OPTIMIZER_MODE
OPTIMIZER_FEATURES_ENABLE = 10.1.0 
CURSOR_SHARING = EXACT
DB_FILE_MULTIBLOCK_READ_COUNT
– Quantidade de blocos lidos em cada operação de I/O para “full 
table scan” ou “index fast full scan”
– Default: 8
– Quanto maior este valor, menor o custo dos métodos de acesso
– Valor acima de 16 costumam não representar ganhos de 
desempenho
PGA_AGREGATE_TARGET = 20% SGA ou 10MB (o maior)
30
Plano de Execução (exemplo)
SELECT f.cod_func, f.nome, f.salario, c.cargo_desc, d.dep_desc
FROM funcionarios f, cargos c, departamentos d
WHERE f.cod_cargo = c.cod_cargo
AND f.dep_cod = d.dep_cod
AND f.cod_func < 1002;
ID | OPERATION | NAME | ROWS | BYTES | COST
---------------------------------------------------------------------------------
0 | SELECT STATEMENT | | 3 | 189 | 10
1 | NESTED LOOPS | | 3 | 189 | 10
2 | NESTED LOOPS | | 3 | 141 | 7
3 | TABLE ACESS FULL | FUNCIONARIO | 3 | 60 | 4
4 | TABLE ACESS BY INDEX ROWID | CARGO | 19 | 513 | 2
5 | INDEX UNIQUE SCAN | CARGO_ID_PK | 3 | 189 | 10
6 | TABLE ACCESS BY INDEX ROWID | DEPARTAMENTO | 27 | 432 | 2
7 | INDEX UNIQUE SCAN | DEPT_ID_PK | 1 | |
Predicate information (identified by operation id):
3 – filter (“F”.”COD_FUNC”<1002)
5 – access (“F”.”COD_CARGO”=“C”.”COD_CARGO”)
7 – access (“F”.”DEP_COD”=“D”.”DEP_COD”)
1
2
3
4
5
6
7
Métodos de Acesso
� FULL TABLE SCAN
– Leitura de todos os blocos em seqüência
– Nas situações em que se recupera um percentual 
grande da tabela (> 10%), ou a tabela tenha 
poucos blocos, esse método é menos custos
� ROWID SCAN
– Rowid contém o endereço do registro (arquivo 
físico + bloco + localização no bloco)
– É o métodode acesso mais rápido
– Pouco usado pois o Rowid pode mudar ao 
exportar/importar os dados da tabela
31
Métodos de acesso (cont)
� CLUSTER SCAN
– Registros de tabelas relacionadas mantidos no mesmo 
bloco (NF e ítem NF, por exemplo)
– Índice com a chave do cluster + rowid
� HASH SCAN
– Aplicação de uma função ‘hash’ à chave do cluster
– Índice não necessário
– Obs: Métodos usados somente quando o comando fornece 
a chave do cluster
� SAMPLE TABLE SCAN
– Usado quando comando utiliza a cláusula ‘SAMPLE’:
SELECT * FROM FUNCIONARIOS SAMPLE(10)
(Recupera somente 10% dos registros da tabela)
Métodos de acesso (cont)
� INDEX SCAN
– Pesquisa no índice da tabela
– Se todas as colunas da cláusula SELECT pertencem ao 
índice, a tabela não é acessada.
– ‘Fator de Cluster’ indica o quanto os valores de uma coluna 
indexada está distribuída nos blocos da tabela. Fator baixo 
indica acesso a poucos blocos para determinado valor.
– Quando o valor da coluna for nulo, não há entrada de 
informação no índice (b-tree)
� Métodos envolvendo índices:
– Index Unique Scans, Index Range Scans, Index Range 
Scans Descending, Index Skip Scans, Full Scans, Fast Full 
Index Scans, Index Joins
32
Joins
� Junção de dados de duas ou mais tabelas em uma 
única consulta
� Tipos
– Junção simples (simple-join)
– Junções externas (outer-join)
– Produtos cartesianos
� Decisões para o plano de execução de join
– Métodos de acesso
– Método de Join: Nested loop, Hash join, Sort merge join,
Cartesian join, Outer join
– Ordem de Join: ordem de junção das tabelas, principal e 
secundária(s)
Índices
� Índices concatenados
– Índices compostos por mais de uma coluna da tabela, 
aumentam a seletividade do índice e podem eliminar o 
acesso à tabela
– Orientações:
• Colunas usadas com freqüência na cláusula WHERE
• Colunas referenciadas em muitas consultas
• Ordem das colunas: a ordem mais utilizada, colunas mais 
seletivas posicionadas na frente
� Índice baseado em função
– Para que o índice baseado em função seja usado, a 
cláusula WHERE ou ORDER BY deve ser idêntica à 
expressão do índice:
SELECT ... FROM funcionario WHERE UPPER(nome_func)
33
Índices (cont)
� Índices e chaves estrangeiras (FK)
– Oracle recomenda a criação de índices em todas as FKs:
• Agilização dos joins de tabelas
• Para não haver ‘lock’ em toda a tabela filha, quando se realiza, 
na tabela pai, ‘delete’ em um registro ou ‘update’ na coluna 
referenciada pela FK
– Nota: deve-se verificar sempre se o custo de manutenção 
do índice não é superior ao seu benefício
� Monitoramento de uso de índices:
ALTER INDEX <indice> MONITORING USAGE;
(...)
SELECT * FROM V$OBJETC_USAGE; (coluna USED)
Índices (cont)
� Índice Bitmap
– Tabelas com grande quantidade de registros
– Coluna com baixa quantidade de valores distintos (pouco 
seletiva)
– Para um determinado valor são recuperados muitos 
registros
– Uso freqüente das colunas em funções de agrupamento 
(sum, count)
– O índice bitmap economiza espaço, se comparado com b-
tree
– Exemplo:
– Obs: Índices bitmap só podem ser usados em condição com 
“=“
Sexo = “M”
Sexo = “F”
1
0
1
01
0
1
0
1
0
1
0
34
Índices: critérios para criação
� Uso freqüente na cláusula WHERE
� Uso freqüente em Joins
� Possuam alta seletividade (índices b-tree)
� Não use índice b-tree em colunas com pouco 
valores distintos (índices bitmap são mais 
adeqüados)
� Evitar índice em colunas alteradas 
freqüentemente (degrada operações DML)
Coleta de Estatísticas
� Estatísticas são dados sobre os objetos de BD:
– Número de registros em uma tabela
– Número de blocos de uma tabela ou índice
– Tamanho médio do registro de uma tabela
– Número de valores distintos de uma coluna
– Número de valores nulos de uma coluna
– Tamanho médio de uma coluna
– Distribuição dos valores de uma coluna (histograma)
– Número de blocos folhas em índices
– Quantidade de níveis em um índice
– Fator de bloco de um índice
35
Coleta de Estatísticas (cont)
� Package DBMS_STATS
GATHER_TABLE_STATS()
GATHER_INDEX_STATS ()
GATHER_SCHEMA_STATS ()
GATHER_DATABASE_STATS()
� Comando ‘ANALYZE’ não é mais 
recomendado pela Oracle
� Coleta dinâmica de estatísticas pode ser 
controlada configurando o parâmetro 
OPTIMIZER_DYNAMIC_SAMPLING (valores 0 a 10)
Hints de Otimização
SELECT /*+ <hint> */ ...
FROM ...
� Também podem ser utilizados em comandos 
INSERT, UPDATE, DELETE
� Se aplica ao bloco SQL onde ele existe e 
sobrescreve parâmetros de instância e de sessão
� Nota: use ‘hints’ como último remédio, pois eles 
aumentam o esforço de manutenção
� Nota 2: verifique se a situação que justificou o hint 
ainda existe, ou se na nova situação o hint não está 
prejudicando a performance
36
Hints (cont)
� Hints para modo de otimização: ALL_ROWS, 
FIRST_ROWS(N)
� Hints de método de acesso: full table scan, 
index scan, fast full index scan, etc
� Hints de métodos de join: nested loop, hash 
join, sort merge join
� Hints de ordem de joins e operações: ordered 
e leading
Hints (cont)
select /*+ FULL(func) */ cod_func --full table scan
from funcionarios func
where cod_funcionario > 20;
select /*+ USE_MERGE(d f) */ f.cod_func, f.cod_dep
from funcionarios f, departamento d
where f.cod_dep = d.cod_dep;
-- método sort merge nas tabelas d e f
select /*+ LEADING(d) USE_NL(f) */ f.cod_func, f.cod_dep
from funcionarios f, departamento d
where f.cod_dep = d.cod_dep;
-- nested loop com a tabela f sendo a “inner”, driving table é 
a tabela d
37
Estratégias de Otimização
� Redução do tempo de resposta ou redução do uso 
de recursos de determinado comando:
– Redução da carga: com um plano de execução mais 
eficiente (criação de índices ou forçando um determinado 
caminho de acesso)
– Balanceamento de carga: execução de processos ‘batch’ e 
relatórios pesados em horários de menor uso do sistema
– Paralelização da execução: comandos que acessam 
grande quantidade de dados podem ser paralelizados (não 
recomendável para sistemas com alto nível de concorrência, 
OLTP)
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD
� Performance
�Otimização de aplicações (SQL Tuning)
– Otimização da instância (BD)
� Design
38
Configuração da Instância 
(manual)
Configuração mínima
� Initialization Parameters
DB_NAME = finance
DB_DOMAIN = hq.company.com
CONTROL_FILES = ('/u01/database/control1.dbf', 
'/u02/database/control2.dbf')
DB_BLOCK_SIZE = 8192
DB_BLOCK_BUFFERS = 12000 # this is approximately 100 Mb
DB_FILES = 200 # Maximum 200 files in the database
SHARED_POOL_SIZE = 100000000 # 100 Mb
PROCESSES = 80 # Would be good for approximately 70
# directly connected users
# log_archive_XXX
# Set various archiving parameters
39
Configuração da PGA (exemplo)
� Otimização da PGA:
WORKAREA_SIZE_POLICY = AUTO
PGA_AGGREGATE_TARGET = 100000K
sendo:
PGA_AGGREGATE_TARGET = (TOTAL_MEM * 80%) * 20% for an
OLTP system
PGA_AGGREGATE_TARGET = (TOTAL_MEM * 80%) * 50% for a DSS
system
� Configuração manual da PGA: 
WORKAREA_SIZE_POLICY = MANUAL
SORT_AREA_SIZE = ???
HASH_AREA_SIZE = ???
BITMAP_MERGE_AREA_SIZE = ???
CREATE_BITMAP_AREA_SIZE = ???
Configuração na Instalação
40
Alertas
� Notificam quando determinadas 
métricas (limites) são alcançadas ou 
ocorrem certos eventos.
� Exemplo 1: Tablespace 85% full:
'warning', 97% full: crítico (limites)
� Exemplo 2: ‘Snapshot too old’, 
‘Recovery area low on free space’ 
(eventos)
Diagnósticos
� Automatic Database Diagnostics
Monitor (ADDM)
– Coleta periódica (uma vez por hora) de 
informações de status do DB e carga de 
trabalho na AWR (Automatic Workload 
Repository) 
– Análises estatísticas: tempo de cpu e 
memória, sobrecarga de conexões, 
ocorrências de 'lock' em transações
41
Métricas
Alertas (exemplo)
42
Alertas por e-mail
Host Name=prod.empresa.com
Metric=Response Time per Call
Timestamp=08-NOV-2003 10:10:01 (GMT -
7:00)
Severity=Critical
Message=Tempo de resposta por chamada 
excedeu limite estabelecido. Verifique 
análise ADDM.
Rule Name=
Rule Owner=SYSMAN‘Advisors’
� Alertas são mais indicados para 
situações de baixo impacto, de pouco 
custo. 
� Para uma análise mais abrangente de 
performance, com informações mais 
detalhadas, recomenda-se o uso dos
Advisors. Executados a partir de 
solicitação do DBA.
43
‘Advisors’
‘Advisors’ (exemplo)
Exemplo: execução do
Shared Pool Advisor
� 'Change in parse time
saving is plotted against 
shared pool size. A higher 
number for parse time
saving is better for 
performance. In this 
example, the graph tells us
that a shared pool size 
larger than 80M will not 
improve performance by 
much. Thus 80M is the 
recommended optimal 
shared pool size.'
44
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD
� Performance
� Design
Projeto Lógico e Projeto Físico
� Um BD eficiente é aquele que atende 
satisfatoriamente aos requisitos da 
organização
� Um Projeto Físico bem sucedido deve ser 
precedido por um Projeto Lógico bem 
realizado
� A otimização na implementação do BD não 
deve ferir os requisitos lógicos. Mau exemplo: 
retirar regras (FKs) visando performance
� Mau exemplo 2: implementar essas regras na 
aplicação
45
Do Lógico ao Físico
TB_CLASSE_PROCESSO
ID_CLASSE - NUMBER - <Maximum Length>
DE_CLASSE - VARCHAR2 - 70
DE_ACIONADO - VARCHAR2 - 20
DE_ACIONADOR - VARCHAR2 - 20
LG_INTERROMPE_ORIGINAL - NUMBER - 1
LG_REACAO - NUMBER - 1
CD_TIPO_TRIBUNAL - NUMBER - <Maximum Length>
TB_PROCESSO_JUDICIAL
ID_PROCESSO - NUMBER - <Maximum Length>
DT_REFERENCIA_VALOR - DATE - <Maximum Length>
ID_CLASSE - NUMBER - <Maximum Length>
VL_CAUSA - NUMBER - <Maximum Length>
NR_PASTA - VARCHAR2 - 20
DE_OBSV - VARCHAR2 - 4000
VL_TOTAL_A_DEPOSITAR - NUMBER - <Maximum Length>
ID_PROCESSO_PAI - NUMBER - <Maximum Length>
CD_ORGAO - NUMBER - <Maximum Length>
CREATE TABLE TB_CLASSE_PROCESSO
( ID_CLASSE NUMBER NOT NULL,
DE_CLASSE VARCHAR2(70) NOT NULL,
DE_ACIONADO VARCHAR2(20) NOT NULL,
DE_ACIONADOR VARCHAR2(20) NOT NULL,
LG_INTERROMPE_ORIGINAL NUMBER(1) NOT 
NULL,
LG_REACAO NUMBER(1) NOT NULL,
CD_TIPO_TRIBUNAL NUMBER
);
ALTER TABLE TB_CLASSE_PROCESSO 
ADD 
( CONSTRAINT PK_CLASSE_PROCESSO
PRIMARY KEY (ID_CLASSE)
USING INDEX 
TABLESPACE INDICES
);
ALTER TABLE TB_CLASSE_PROCESSO 
ADD 
( CONSTRAINT CK_CLAS_PROCESSO_CD_TIPO_TRIB
CHECK (CD_TIPO_TRIBUNAL IN ( 1, 2, 3, 4 ))
);
CREATE TABLE TB_PROCESSO_JUDICIAL
(
ID_PROCESSO NUMBER NOT NULL,
ID_CLASSE NUMBER NOT NULL,
DT_REFERENCIA_VALOR DATE,
VL_CAUSA NUMBER,
NR_PASTA VARCHAR2(20),
DE_OBSV VARCHAR2(4000),
VL_TOTAL_A_DEPOSITAR NUMBER,
ID_PROCESSO_PAI NUMBER,
CD_ORGAO NUMBER NOT NULL
);
ALTER TABLE TB_PROCESSO_JUDICIAL 
ADD 
( CONSTRAINT PK_PROCESSO_JUDICIAL
PRIMARY KEY (ID_PROCESSO)
USING INDEX 
TABLESPACE INDICES
);
ALTER TABLE TB_PROCESSO_JUDICIAL 
ADD 
( CONSTRAINT FK_PROCESSO_JUDICIAL_CLASSE 
FOREIGN KEY (ID_CLASSE) 
REFERENCES TB_CLASSE_PROCESSO 
(ID_CLASSE)
);
ALTER TABLE TB_PROCESSO_JUDICIAL 
ADD 
( CONSTRAINT FK_PROCESSO_JUDICIAL_PROC_PAI 
FOREIGN KEY (ID_PROCESSO_PAI) 
REFERENCES TB_PROCESSO_JUDICIAL 
(ID_PROCESSO)
);
Projeto Lógico
� Planejado
� Aderente aos requisitos de dados
� Integrado
� Bem modelado: Modelo Relacional 
– relacionamentos representam relações entre 
entidades
– aplicação das formas normais 
� Todas as regras de validação dos dados 
representadas
46
Papel do Administrador de Dados
� Auxiliar analistas na coleta de requisitos de negócio
� Apoiar analistas na modelagem de negócios 
baseado em requisitos (conceitual e lógico)
� Definir e divulgar padrões e convenções (definição, 
nomes, abreviações)
� Conduzir sessões de definição de dados com 
equipes de projeto
� Gerenciar e administrar o repositório de meta-dados 
corporativo e a ferramenta CASE para Administração 
de Dados
� Assistir a Administração de Banco de Dados na 
criação de tabelas físicas a partir dos modelos 
lógicos
Agenda
� Arquitetura BD Oracle
� Segurança
� Backup
� Gerência de Objetos do BD
� Performance
� Design
47
Referências
� “Oracle 9i Database Concepts, release 2”, Março 
2002
� “Oracle Database Administrator’s Reference 10g 
Release 1 (10.1) for UNIX Systems: AIX-Based 
Systems, hp HP-UX, hp Tru64 UNIX, Linux, and 
Solaris Operating System (SPARC)”, Março 2004
� ‘Oracle Database 2 Day DBA, 10g Release 1 (10.1)’, 
2004
� "Oracle9i Database Performance Tuning Guide and 
Reference, Release 2 (9.2)", Outubro 2002
Referências (cont)
� ‘Expert Oracle9i Database Administration’,
Sam Alapati, The Authors Press, 2003
� ‘Oracle Database Security Checklist, an 
Oracle whitepaper’, Nov 2005
� Oracle Metalink: http://metalink.oracle.com
� Oracle Technology Network: 
http://otn.oracle.com

Outros materiais