Oracle Database 10g Certificação OCP Guia Completo para o Exame Rio de Janeiro. 2006 Oracle Database 10g Certificação OCP Guia Completo para o Exame Do original Oracle Database 10g OCP Certification All-in-One Exam Guide Copyright © 2006 da Editora Alta Books Ltda. Authorized translation from English language edition, entitled Oracle Database 10g OCP Certification All-in-One Exam Guide, by John Watson, Damir Bersinic, published by The McGraw-Hill Companies, Inc. Copyright © 2005 by The McGraw-Hill Companies, Inc. PORTUGUESE language edition published by Editora Alta Books, Copyright © 2006 by Editora Alta Books. Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários (como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia. Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro encontrado em nossos livros. Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou implícita. Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou desmerecimento do produto/fabricante. Produção Editorial: Editora Alta Books Coordenação Editorial: Fernanda Silveira Tradução: Marcelo Soares Revisão: Patrícia Veloso Diagramação: Parêntese Design Editorial (www.parentese.com.br) Impresso no Brasil O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de criarem novas obras. Rua Viúva Cláudio, 291 – Jacaré Rio de Janeiro – RJ. CEP: 20970-031 Tel: 21 3278-8069/ Fax: 3277-1253 www.altabooks.com.br e-mail: [email protected] Gostaria de agradecer à minha razão para viver, Silvia, por cuidar de mim (e da nossa casa, nosso jardim, nossos cães e gatos) durante meses, enquanto eu trabalhava neste livro. —John Watson Sobre o autor John Watson é um OCP DBA nas versões 8.0, 8i, 9i e 10g, com a qualificação OCP especial para Gerenciamento do Oracle Linux, e é consultor-sênior na BPLC Management Consultants, na África do Sul. John trabalhou para a Oracle University na África do Sul por quatro anos (após passar algum tempo no Oracle Internal Support), onde ensinou os currículos Database e Application Server e contribuiu para o desenvolvimento de material de ensino e de questões para o exame OCP. Damir Bersinic, MCSE, MCDBA, MCT, CTT+, OCP DBA, regularmente presta consultoria, ensina e escreve sobre tópicos relacionados ao Oracle, ao SQL Server e a tecnologias de bancos de dados em geral. É co-autor de Portable DBA: SQL Server, MCSA Windows Server 2003 Certification All-inOne Exam Guide e de vários outros livros sobre Oracle, SQL Server, Windows e Active Directory. Ele mora e trabalha na área da Grande Toronto, no Canadá. Pode ser contatado por e-mail (em inglês) em [email protected]. Sobre o Colaborador Martin Bensch, MCSE e OCP DBA nas versões 9i e 10g, é atualmente instrutor e consultor sênior na Global Bits THUTA, um Oracle Training Partner certificado na África do Sul. Anteriormente, Martin foi instrutor na Oracle University após três anos como consultor técnico sênior nos Global Education Services da Oracle. Sobre a Editora Técnica Debra Wong, OCP DBA nas versões 7.3, 8, 8i, 9i e 10g, e Desenvolvedora de Aplicativos certificada OCP, é gerente técnica para o grupo de Enterprise Database Architecture da Marriott International. Ela passou a maior parte da sua carreira desenvolvendo e fazendo a manutenção de sistema de bancos de dados baseados em host, PC-LAN e na Web, e é a autora de Oracle8 Backup and Recovery Exam Cram e de Oracle8i Backup and Recovery Exam Cram. Sumário PARTE I Exame Administrativo I do Oracle Database 10g 1 1 CAPÍTULO I - Conceitos Básicos do Oracle Introdução aos Bancos de Dados e ao Modelo Relacional Objetos de Bancos de Dados Responsabilidades do Administrador de Bancos de Dados A Família de Produtos Oracle Revisão do Capítulo 3 CAPÍTULO II - Instalando o Oracle Database 10g Requerimentos de Sistema do Oracle Arquitetura Ótima Flexível Instalando o Oracle com o Instalador Universal Oracle Exercício 2-1: Instalando o Oracle Database 10g Revisão do Capítulo 50 CAPÍTULO III - Criando um Banco de Dados Oracle Arquitetura do Servidor Oracle Exercício 3-1: Criando um Banco de Dados com o Assistente de Configuração de Bancos Os Scripts de Criação do Banco de Dados Revisão do Capítulo 31 CAPÍTULO IV - Fazendo Interface com Banco de Dados Oracle Usando a SQL Entendendo a PL/SQL Ferramentas de Consulta no Oracle 10g Exercício 4-1: Trabalhando com o SQL*Plus Exercício 4-2: Trabalhando com o iSQL*Plus Outros Métodos para se Fazer Interface com o Banco de Dados Oracle Revisão do Capítulo 47 CAPÍTULO V - Gerenciando Processos do Oracle Iniciando o SQL*Plus Exercício 5-1: Inicializando e Finalizando o seu Banco de Dados com SQL*Plus Revisão do Capítulo 67 CAPÍTULO VI - Gerenciando Estruturas de Armazenamento do Oracle Fundamentos de Armazenamento do Oracle: Tablespaces e Arquivos de Dados Exercício 6-1: Usando o Enterprise Manager para Criar um Tablespace Revisão do Capítulo 81 CAPÍTULO VII - Administrando Usuário do Banco de Dados Criando e Gerenciando Usuários do Banco de Dados Exercício 7-1: Usando o Enterprise Manager para Criar um Usuário do Banco de Dados Concedendo e Revogando Privilégios Exercício 7-2: Usando o Enterprise Manager para Conceder Privilégios de Sistema Exercício 7-3: Usando o Enterprise Manager para Conceder Privilégios de Objeto Criando e Gerenciando Papéis Exercício 7-4: Usando o Enterprise Manager para Criar e Gerenciar Papéis Usando Perfis para Controlar o Uso dos Recursos Exercício 7-5: Usando o Enterprise Manager para Criar e Gerenciar Perfis 99 4 7 9 10 11 51 52 54 64 66 32 38 40 44 48 55 57 57 59 61 63 68 73 78 82 88 96 100 102 103 105 109 110 115 116 118 Revisão do Capítulo CAPÍTULO VIII - Gerenciando Objetos do Banco de Dados Usuários, Esquemas e Objetos do Esquema Tipos de Dados Criando Tabelas Criando Restrições Exercício 8-1: Criando Tabelas e Restrições Criando Índices Criando Visões Criando e Usando Seqüências Exercício 8-2: Usando Restrições, Visões e Seqüências Revisão do Capítulo 119 123 124 126 128 130 130 132 133 135 135 136 CAPÍTULO IX - Manipulando Dados do Banco de Dados 139 Transações dos Bancos de Dados 140 Executando Instruções SQL 141 Exercício 9-1: Isolamento da Transação, Consistência de Leitura e COMMIT 144 DML e Restrições de Integridade 145 Data Pump 145 Exercício 9-2: Usando a Exportação do Data Pump através do Database Control do Enterprise Manager 149 Exercício 9-3: Usando a Importação do Data Pump através do impdp 150 SQL*Loader 150 Exercício 9-4: Usando o SQL*Loader 152 Revisão do Capítulo 153 CAPÍTULO X - Programando o Oracle com PL/SQL Linguagens de Programação e o Banco de Dados Oracle Procedimentos, Funções e Pacotes Exercício 10-1: Criando e Usando Funções, Procedimentos e Pacotes Triggers do Banco de Dados Exercício 10-2: Usando Triggers DML Parâmetros de Instâncias para PL/SQL Revisão do Capítulo 157 CAPÍTULO XI - Garantindo a Segurança do Banco de Dados Ajustando as Configurações de Segurança Padrões Parâmetros de Instâncias Críticos para a Segurança Perfis de Senhas Exercício 11-1: Criando e Usando Perfis de Senhas Auditoria Exercício 11-2: Habilitando a Auditoria Atualizações de Segurança Revisão do Capítulo 167 CAPÍTULO XII - Configurando a Rede Oracle A Implementação do Paradigma Cliente/Servidor do Oracle Estabelecendo uma Sessão Criando e Gerenciando um Listener Exercício 12-1: Criando um Listener com o Database Control Registro do Banco de Dados O Utilitário de Controle do Listener Técnicas para Resolução de Nomes Configurando Aliases de Serviços Exercício 12-2: Criando um Alias de Serviço do Oracle Net Exercício 12-3: Configurando o Registro Dinâmico de Serviços 185 158 159 161 162 163 164 165 168 170 172 175 177 181 182 183 186 187 189 189 190 192 193 195 196 196 Opções Avançadas de Conexão Testando as suas Conexões do Oracle Net Revisão do Capítulo 196 198 199 CAPÍTULO XIII - Gerenciando Servidores Compartilhado As Limitações da Arquitetura de Servidor Dedicado A Arquitetura de Servidor Compartilhado Configurando o Servidor Compartilhado Exercício 13-1: Configurando e Verificando o Servidor Compartilhado Monitorando o Servidor Compartilhado Quando Usar o Servidor Compartilhado Exercício 13-2: Configurando um Cliente para Escolher o Tipo de Conexão Revisão do Capítulo 203 CAPÍTULO XIV - Gerenciando Desempenho do Banco de Dados Objetos Inválidos Exercício 14-1: Reparando Objetos Inválidos Índices Inutilizáveis Exercício 14-2: Reparando Índices Inutilizáveis Estatísticas do Otimizador Exercício 14-3: Automatizando a Coleta de Estatísticas Métricas de Desempenho Reagindo a Problemas de Desempenho Revisão do Capítulo 215 CAPÍTULO XV - Monitorando Oracle O Repositório Automático de Carga de Trabalho Os Assistentes de Diagnóstico e de Ajustes Exercício 15-1: Gerando um Relatório ADDM Alertas Gerados pelo Servidor Exercício 15-2: Configurando Alertas Revisão do Capítulo 231 CAPÍTULO XVI - Gerenciando o Undo Dados de Undo: Por Quê, e o Que São Eles? Tablespaces de Undo Exercício 16-1: Criando um Tablespace de Undo com o Database Control Transações e Segmentos de Undo Gerenciando Undo Exercício 16-2: Monitorando o Undo com o SQL*Plus Revisão do Capítulo 243 CAPÍTULO XVII - Lidando com o Travamento Travas Compartilhadas e Exclusivas Travas DML e DDL Exercício 17-1: Travamento Automático e Manual O Mecanismo de Enfileiramento Exercício 17-2: O Comando SELECT... FOR UPDATE Disputa por Travas Exercício 17-3: Detectando e Resolvendo a Disputa por Travas Deadlocks Exercício 17-4: Resolução Automática de Deadlocks Revisão do Capítulo 255 204 205 206 208 209 209 210 211 216 218 219 220 221 225 226 228 229 232 234 237 239 240 241 244 245 245 246 247 250 250 256 256 256 257 258 258 260 261 261 262 CAPÍTULO XVIII - Configurando o Banco de Dados para Backup e Recuperação Questões Referentes a Backup e Recuperação Categorias de Falhas Recuperação de Instâncias Exercício 18-1: Recuperação de Instâncias e o MTTR O Assistente MTTR Configurando um Banco de Dados para Melhor Recuperabilidade Exercício 18-2: Criando Cópias Multiplexadas do Log de Redo Exercício 18-3: Passando o Banco de Dados para o Modo Archivelog Revisão do Capítulo 265 CAPÍTULO XIX - Fazendo Backup de um Banco de Dados do Oracle Ferramentas de Backup Conceitos e Terminologia Configurações do RMAN Agendando Backups Automáticos Exercício l 9-1: Executando um Backup Inteiro de um Banco de Dados Backup do Controlfile Exercício 19-2: Fazendo Backup do Controlfile para um Trace com o SQL*Plus Gerenciando Backups do RMAN O Destino Padrão dos Backups Revisão do Capítulo 285 CAPÍTULO XX - Recuperando Banco de Dados Oracle Estruturas e Processos de Recuperação Recuperação de Falhas de Mídia Exercício 20-1: Recuperando-se da Perda de um Controlfile Exercício 20-2: Recuperando um Arquivo de Log On-line Multiplexado Perdido Recuperando-se da Perda de Arquivos de Dados Exercício 20-3: Recuperando-se da Perda de um Arquivo de Dados Não-crítico Revisão do Capítulo 299 CAPÍTULO XXI - Gerenciando a Globalização em Bancos de Dados Oracle A Necessidade da Globalização Recursos de Globalização Usando os Recursos de Suporte à Globalização Exercício 21-1: Fazendo Configurações de Globalização e de Ambiente do Cliente Exercício 21-2: Controlando a Globalização dentro da Sessão Classificação e Seleção Lingüísticas O Locale Builder Usando Fusos Horários Exercício 21-3: Fazendo Ajustes de Fuso Horário Revisão do Capítulo 311 PARTE II 329 Exame Administrativo II do Oracle Database 10g 329 CAPÍTULO XXII - Configurando a Segurança para o Listener Mantendo o Listener Seguro Exercício 22-1: Definindo uma Senha para o Listener com lsnrctl Controlando o Acesso ao Banco de Dados Procedimentos Externos Exercício 22-2: Criando um Listener para Chamadas a Procedimentos Externos Revisão do Capítulo 331 266 267 272 274 274 274 278 279 280 286 286 290 291 292 292 294 294 295 296 300 301 302 303 304 305 308 312 312 316 319 320 322 323 323 324 325 332 333 334 335 339 340 CAPÍTULO XXIII - Primeiro Passo Com o Gerenciador de Recuperação do Oracle Recursos do Gerenciador de Recuperação Componentes do Gerenciador de Recuperação Configurando o RMAN Exercício 23-1: Configurando o RMAN Revisão do Capítulo 343 CAPÍTULO XXIV - Usando o RMAN para Fazer Backup de Bancos de Dados O RMAN em Modo de Lote A Interface Pipe do RMAN Fazendo Backup com o Executável do RMAN Exercício 24-1: Criando Conjuntos de Backup Verificação de Modificações em Blocos Gerenciando e Monitorando Backups do RMAN Exercício 24-2: Gerenciando os Backups Revisão do Capítulo 357 CAPÍTULO XXV - Diagnosticando Problemas de Banco de Dados Oracle O Log de Alerta Arquivos de Verificação de Background Alertas Gerados pelo Servidor Exercício 25-1: Definindo, Visualizando e Limpando Alertas Arquivos de Verificação do Usuário Revisão do Capítulo 373 CAPÍTULO XXVI - Recuperando-se de Perdas Não Criticas Recuperando-se da Perda de um Tablespace Temporário Recuperando-se da Perda de um Arquivo de Log de Redo On-line Configuração dos Arquivos de Log de Redo On-line Recuperando-se da Perda de um Tablespace de Índice Exercício 26-1: Usando Tablespaces de Índices Recuperando-se da Perda do Arquivo de Senhas Revisão do Capítulo 387 CAPÍTULO XXVII - Recuperação Incompleta de Banco de Dados Recuperação Completa Quando é Necessária uma Recuperação Incompleta? O Método para a Recuperação Incompleta Recuperação Incompleta com Backups Gerenciados pelo Usuário Recuperação Incompleta Usando-se o RMAN Exercício 27-1: Realizando uma Recuperação Incompleta com o RMAN Recuperação Incompleta Usando-se o Enterprise Manager Recuperação do Controlfile Exercício 27-2: Executando o Autobackup e a Restauração do Controlfile Recuperação através de RESETLOGS Revisão do Capítulo 403 CAPÍTULO XXVIII - Usando Banco de Dados em Flashback As Diferentes Tecnologias de Flashback Arquitetura do Flashback Database Configurando o Flashback Database Exercício 28-1: Configurando o Flashback Database com o Database Control Monitorando o Flashback Database Usando o Flashback Database Exercício 28-2: Usando o Flashback Database com o Database Control Gerenciando a Área de Recuperação Rápida 421 344 344 347 354 354 358 358 359 361 366 366 368 369 374 376 376 381 382 384 388 391 391 393 397 398 400 404 405 406 407 408 410 411 412 415 416 416 422 424 425 426 426 427 429 430 Limitando a Quantidade de Dados de Flashback Gerados Revisão do Capítulo 433 433 CAPÍTULO XXIX - Recuperando-se de Erros do Usuário Flashback e o Teste ACID Flashback Drop Exercício 29-1: Usando o Flashback Drop com o SQL*Plus Gerenciando a Lixeira Flashback Query Exercício 29-2: Usando Flashback Query com o Database Control Flashback e Dados de Undo Revisão do Capítulo 437 CAPÍTULO XXX - Detectando e Recuperando-se da Corrupção do Banco de Dados Corrupção dos Blocos e suas Causas Parâmetros Relacionados à Corrupção de Blocos Detectando Corrupções de Blocos Exercício 30-1: Verificando Corrupções de Blocos Recuperando Blocos Corrompidos com o RMAN Exercício 30-2: Executando uma Recuperação de Mídia em Blocos Lidando com as Corrupções Revisão do Capítulo 457 CAPÍTULO XXXI - Ferramenta para ajuste do Oracle Database 10g A Metodologia dos Assistentes O Monitor de Diagnóstico Automático do Banco de Dados (ADDM) Os Assistentes Exercício 31-1: Usando o Assistente de Ajuste de SQL Ajuste Automático de Retenção de Undo Revisão do Capítulo 471 CAPÍTULO XXXII - Monitorando e Gerenciando o Armazenamento Armazenamento de Log de Redo On-line e Arquivado Erros de Espaço e Instruções Retomáveis Exercício 32-1: Usando Instruções Retomáveis Uso de Alertas para Monitorar o Uso dos Tablespaces Exercício 32-2: Usando Alertas de Uso dos Tablespaces Monitorando e Gerenciando Tamanhos de Segmentos Exercício 32-3: Usando o Assistente de Segmentos do Database Control para Encolher uma Tabela Estruturas Alternativas de Armazenamento de Tabelas Revisão do Capítulo 483 CAPÍTULO XXXIII - Gerenciando o Armazenamento com o ASM O Propósito de um Gerenciador de Volumes Lógicos A Arquitetura ASM Criando Dispositivos Puros Exercício 33-1: Criando Dispositivos Puros (Windows) Criando, Iniciando e Interrompendo uma Instância ASM Exercício 33-2: Criando uma Instância ASM (Windows) Criando Grupos de Discos ASM Exercício 33-3: Criando um Grupo de Discos (Windows) Criando e Usando Arquivos ASM Exercício 33-4: Usando ASM para Arquivos de Dados ASM e RMAN ASM e Linux 505 438 438 441 442 444 450 451 452 458 458 459 462 464 466 466 467 472 473 474 479 480 481 484 485 489 489 490 491 496 497 501 506 508 510 510 512 513 514 515 515 516 516 517 Revisão do Capítulo Questões Respostas 518 518 520 CAPÍTULO XXXIV - Monitorando e Gerenciando a Memória A Área Global de Sistema O Pool Compartilhado O Cache de Buffer do Banco de Dados O Buffer de Log Outras Áreas da SGA Gerenciamento Automático de Memória Compartilhada Exercício 34-1: Usando o Gerenciamento Automático de Memória Compartilhada A Área Global de Programa Revisão do Capítulo 521 CAPÍTULO XXXV - Gerenciando os Recursos do Banco de Dados Oracle A Necessidade do Gerenciamento de Recursos A Arquitetura do Gerenciador de Recursos Gerenciando Usuários e Grupos de Consumidores Exercício 35-1: Gerenciando Usuários de Grupos de Consumidores de Recursos Planos do Gerenciador de Recursos Exercício 35-2: Configurando e Testando o Switching Automático dos Grupos de Consumidores Recursos Adicionais Revisão do Capítulo 539 CAPÍTULO XXXVI - Automatizando Tarefas Administrativas A Arquitetura do Scheduler Objetos do Scheduler Criando e Agendando Tarefas Exercício 36-1: Criando uma Tarefa com a API do Scheduler Usando Programas e Agendamentos Usando Classes, Janelas e o Gerenciador de Recursos Tarefas Pré-configuradas Revisão do Capítulo 563 Glossário 579 522 523 525 529 529 530 532 533 535 540 541 543 544 546 553 554 558 564 564 568 568 569 571 573 574 Introdução Há uma demanda cada vez maior por pessoal com certificação da indústria de TI. Os benefícios para os empregadores são significativos; eles podem ter certeza de que o seu pessoal tem um determinado nível de competência. Os benefícios para os indivíduos, em termos de demanda pelos seus serviços, são igualmente grandes. Muitos empregadores estão requerendo agora que o pessoal técnico tenha certificações, e muitos clientes não compram mais de empresas que não tenham um pessoal certificado. As certificações Oracle estão entre as mais procuradas. Porém, fora os benefícios em termos de carreira, saber que você está entre um grupo relativamente pequeno de profissionais Oracle que tiveram a sua competência comprovada é uma recompensa pessoal que vale muito a pena buscar. Existem diversas “trilhas” de certificação Oracle. Este livro trata da trilha de certificação para Administração de Bancos de Dados Oracle (Oracle Database Administration), especificamente para a versão 10g do banco de dados. Existem três níveis de certificação DBA: Associado Certificado (Certified Associate, ou OCA), Profissional Certificado (Certified Professional, ou OCP) e Mestre Certificado (Certified Master, ou OCM). A qualificação OCA se baseia em apenas um exame e será abordada na Parte I deste livro. O OCP exige a aprovação em um segundo exame, baseado no conteúdo da Parte II deste livro. Esses exames podem ser feitos em qualquer Centro de Exames Prometric e consistem de 60 ou 70 questões a serem respondidas em 90 minutos. O OCM requer a aprovação em mais uma avaliação de dois dias, feita em um centro de exames Oracle, envolvendo simulações de ambientes complexos e o uso de técnicas avançadas. Este livro irá preparar você para passar nos exames Oracle 10 g DBA Certified Associate (OCA) e Professional (OCP). Para se preparar para os exames OCA e OCP, você pode fazer cursos presenciais da Oracle University, estudar por material de aprendizado on-line da Oracle University ou ler este livro. Em qualquer um dos casos, você deve consultar a Oracle Documentation Library para detalhes de sintaxe. Este livro será uma adição valiosa a outros métodos de estudo, mas é suficiente por si só. Ele foi elaborado com os objetivos do exame em mente, embora inclua também informações que lhe serão úteis na sua carreira profissional. Entretanto, não é suficiente comprar o livro, colocá-lo debaixo do seu travesseiro e assumir que o conhecimento vai entrar no seu cérebro por osmose: você precisa ler o livro com atenção, responder os exercícios e as questões de exemplo e fazer experimentos mais aprofundados com os vários comandos. À medida que for se familiarizando com o ambiente do Oracle, você perceberá que só existe uma regra fundamental: quando em dúvida, faça a experiência. Em uma série de casos, você perceberá que um simples teste que leva uns poucos minutos pode economizar horas de especulação e consultas em manuais. Se qualquer coisa parecer pouco clara, construa um exemplo e veja o que acontece. Este livro foi desenvolvido usando o Windows e o Linux, mas para executar os exercícios e as suas investigações mais aprofundadas, você poderá usar qualquer plataforma suportada pelo Oracle. A sua iniciação no estranho e mágico mundo da Administração de Bancos de Dados Oracle está prestes a começar — divirtase! —John Watson