Baixe o app para aproveitar ainda mais
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
Compartilhar