Enterprise DBA Parte 1A:
                    Administração e Arquitetura

                    Volume 2 • Guia do Aluno
                .......................................................................................




30049BP10
Produção 1.0
Junho de 2000
M09006-BP
Autores                 Copyright © Oracle Corporation, 1999. Todos os direitos reservados. Todos os
                        direitos reservados e de titularidade da Oracle Corporation, inclusive aqueles
Bruce Ernst             referentes à tradução para o idioma português – Brasil.
Hanne Rue Rasmussen
                        Esta documentação contém informações de propriedade da Oracle Corporation.
Ulrike Schwinn          É fornecida sob um contrato de licença que contém restrições sobre seu uso e
Vijay Venkatachalam     sua divulgação, sendo também protegida pela legislação de direitos autorais.
                        Não é permitida a engenharia reversa dos programas de computador. Se esta
                        documentação for entregue/distribuída a uma Agência do Departamento de
Colaboradores           Defesa do Governo dos Estados Unidos da América do Norte, será então
Técnicos e Revisores    entregue/distribuída com Direitos Restritos e a seguinte legenda será aplicável:
David Austin
Ben van Balen           Legenda de Direitos Restritos
                        O uso, duplicação ou divulgação por aquele Governo estão sujeitos às restrições
Gerry Batista           aplicáveis aos programas comerciais de computadores e serão considerados
Doug Bridges            como programas de computador com Direitos Restritos de acordo com a
Sandra Cheevers         legislação federal daquele Governo, conforme descrito no subparágrafo da
                        legislação norte-americana (c) (1) (ii) de DFARS 252.227-7013, Direitos sobre
Ralf Durben             Dados Técnicos e Programas de Computador (outubro de 1988).
Ari Fyhr
                        Proibida a reprodução total ou parcial desta documentação sem a expressa
Joel Goodman            autorização prévia por escrito da Oracle Corporation ou da Oracle do Brasil
Scott Gossett           Sistemas Ltda. A cópia deste material, de qualquer forma ou por qualquer meio,
                        eletrônico, mecânico ou de outra natureza, inclusive através de processos
Lex de Haan             xerográficos, de fotocópia e de gravação, constitui violação da legislação de
Tony Holbrook           direitos autorais e será punida civil e-ou criminalmente na forma da lei.
Heike Hundt             Se esta documentação for entregue/distribuída a uma Agência do Governos dos
Christine Jeal          Estados Unidos da América do Norte que não esteja subordinada ao
                        Departamento de Defesa, será então entregue/distribuída com "Direitos
Dominique Jeunot        Restritos" conforme definido no FAR 52.227-14, Direitos sobre Dados - Geral,
Thomas Kerepes          inclusive a Alternativa III (junho de 1987).
Steven King             As informações contidas neste documento estão sujeitas a alterações sem aviso
Pierre Labrousse        prévio. Se você encontrar algum problema na documentação, envie a Products
                        Education - Oracle Corporation ou a Education - Oracle do Brasil Sistemas Ltda.
Dean Margolese
                        uma descrição de tal problema por escrito. Education Products, Oracle
Jean-Marie Misztela     Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065.
Tigger Newman           Distribuidor no Brasil: Oracle do Brasil Sistemas Ltda. Rua José Guerra, 127, São
                        Paulo, SP - 04719-030 Brasil CGC: 59.456.277/0001-76. A Oracle Corporation e
Howard Ostrow           a Oracle do Brasil Sistemas Ltda. não garantem que este documento esteja
Hans Proetzl            isento de erros.
Gary Purcell            SQL*Loader, SQL*Net, SQL*Plus, Net8, Oracle Call Interface, Oracle7, Oracle8,
Shankar Raman           Oracle8i, Developer/2000, Developer/2000 Forms, Designer/2000, Oracle
                        Enterprise Manager, Oracle Parallel Server, PL/SQL, Pro*C, Pro*C/C++ e
Donalyn Selinsky        Trusted Oracle são marcas comerciais ou marcas comerciais registradas da
Roger Simon             Oracle Corporation.
James Spiller           Todos os outros nomes de produtos ou de empresas aqui mencionados o são
Ramonito Te             apenas para fins de identificação e podem ser marcas comerciais registradas de
                        seus respectivos proprietários.
Sabine Teuber
Jean-Francois Verrier
Norbert Wittje

Editor
Sherry Polm
Sumário
.....................................................................................................................................................


Sumário
Prefácio
      Perfil xvii
      Informações Relacionadas xix
      Convenções Tipográficas xx

Introdução
      Objetivos I-2
      Oracle8i Enterprise Edition I-3
      Tarefas do Administrador de Banco de Dados I-5
      Programa do Curso I-6

Lição 1: Componentes Arquitetônicos do Oracle
      Objetivos 1-2
      Visão Geral 1-3
      Arquivos de Bancos de Dados Oracle 1-5
      Outros Arquivos Importantes 1-7
      Instância Oracle 1-8
      Processando uma Instrução SQL 1-10
      Estabelecendo Conexão com um Banco de Dados 1-11
      Processando uma Consulta 1-13
      O Pool Compartilhado 1-15
      Cache de Buffer do Banco de Dados 1-17
      Área Global do Programa 1-18
      Processando uma Instrução DML 1-20
      Buffer de Redo Log 1-22
      Segmento de Rollback 1-23
      Processamento de COMMIT 1-24
      Log Writer 1-26
      Outros Processos de Instância 1-27
      Database Writer 1-28
      SMON: Monitor de Sistema 1-29
      PMON: Monitor de Processo 1-31
      Arquivamento 1-32
      Sumário 1-34




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                             iii
Sumário
.....................................................................................................................................................

Lição 2: Conceitos Básicos do Oracle Server
      Objetivos 2-2
      Visão Geral 2-3
      Oracle Universal Installer 2-4
      Validando Usuários Privilegiados 2-8
      Oracle Enterprise Manager 2-15
      Sumário 2-30

Lição 3: Gerenciando uma Instância Oracle
      Objetivos 3-2
      Visão Geral 3-3
      Estágios da Inicialização e da Desativação 3-10
      Inicializando a Instância 3-13
      Alterando a Disponibilidade do Banco de Dados 3-16
      Abrindo um Banco de Dados no Modo Somente Para Leitura 3-17
      Desativando 3-18
      Obtendo e Definindo Valores de Parâmetro 3-22
      Gerenciando Sessões 3-29
      Sumário 3-36

Lição 4: Criando um Banco de Dados
      Objetivos 4-2
      Visão Geral 4-3
      Preparando o Sistema Operacional 4-4
      Criando um Banco de Dados 4-10
      Usando o Assistente de Configuração de Banco de Dados 4-11
      Criando um Banco de Dados Manualmente 4-15
      Sumário 4-29

Lição 5: Criando Views de Dicionário de Dados e Pacotes Padrão
      Objetivos 5-2
      Visão Geral 5-3
      Visão Geral do Dicionário de Dados 5-4
      Conteúdo do Dicionário de Dados 5-5




.....................................................................................................................................................
iv                                                           Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

            Tabelas-Base e Views de Dicionário de Dados 5-6
            Como Usar o Dicionário de Dados 5-7
            Categorias de View de Dicionário de Dados 5-8
            Exemplos de Dicionário de Dados 5-10
            Views de Desempenho Dinâmicas 5-11
            Unidades de Programa Armazenado 5-12
            Unidades de Programa PL/SQL Armazenado 5-14
            Pacotes 5-16
            Executando uma Unidade de Programa PL/SQL 5-17
            Especificação e Corpo do Pacote 5-18
            Pacotes Fornecidos pela Oracle 5-19
            Obtendo Informações 5-20
            Solucionando Problemas 5-22
            Construindo o Dicionário de Dados 5-23
            Scripts Administrativos 5-25
            Exemplo de Pacote Interno 5-27
            Gatilhos 5-29
            Partes de um Gatilho 5-31
            Exemplo de Gatilho 5-33
            Sumário 5-34

Lição 6: Mantendo o Arquivo de Controle
      Objetivos 6-2
      O Uso do Arquivo de Controle 6-3
      Conteúdo do Arquivo de Controle 6-4
      Multiplexando o Arquivo de Controle 6-6
      Diretrizes Para Arquivos de Controle 6-8
      Obtendo Informações Sobre o Arquivo de Controle 6-10
      Sumário 6-12

Lição 7: Mantendo Arquivos de Redo Log
      Objetivos 7-2
      Visão Geral 7-3
      Usando Arquivos de Redo On-line 7-4




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                              v
Sumário
.....................................................................................................................................................

             LGWR, Alternâncias de Log e Checkpoints 7-6
             Arquivando Arquivos de Redo Log 7-8
             Obtendo Informações Sobre Archive e Log 7-11
             Controlando Alternâncias de Log e Checkpoints 7-18
             Multiplexando e Mantendo Membros e Grupos 7-21
             Realocando ou Renomeando Arquivos de Redo Log On-line 7-24
             Eliminando Membros e Grupos de Redo Logs On-line 7-26
             Planejando Redo Logs On-line 7-30
             Solucionando Problemas 7-32
             Usando LogMiner 7-33
             Sumário 7-40

Lição 8: Gerenciando Tablespaces e Arquivos de Dados
      Objetivos 8-2
      Visão Geral 8-3
      Hierarquia de Armazenamento de Banco de Dados 8-4
      Tablespaces SYSTEM e Não-SYSTEM 8-7
      Criando Tablespaces 8-8
      Gerenciamento de Espaço em Tablespaces 8-12
      Tablespaces Gerenciados Localmente 8-13
      Tablespace Temporário 8-15
      Alterando Definições de Armazenamento 8-18
      Obtendo Tablespaces Off-line ou On-line 8-20
      Tablespaces Somente Para Leitura 8-23
      Eliminando Tablespaces 8-26
      Redimensionando um Tablespace 8-29
      Ativando Redimensionamento Automático dos Arquivos de Dados 8-30
      Redimensionando Arquivos de Dados Manualmente 8-33
      Adicionando Arquivos de Dados a um Tablespace 8-34
      Movendo Arquivos de Dados 8-36
      Informações de Dicionário de Dados 8-39
      Diretrizes 8-40
      Sumário 8-42




.....................................................................................................................................................
vi                                                            Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

Lição 9: Estrutura de Armazenamento e Relacionamentos
      Objetivos 9-2
      Visão Geral 9-3
      Tipos de Segmentos 9-4
      Precedência da Cláusula de Armazenamento 9-8
      Alocação e Desalocação de Extensões 9-9
      Extensões Livres e Usadas 9-10
      Usando Parâmetros de Utilização de Espaço em Bloco 9-11
      Obtendo Informações sobre Estruturas de Armazenamento 9-16
      Consultando DBA_SEGMENTS 9-17
      Consultando DBA_EXTENTS 9-18
      Consultando DBA_FREE_SPACE 9-19
      Planejando a Localização dos Segmentos 9-20
      Sumário 9-22

Lição 10: Gerenciando Segmentos de Rollback
      Objetivos 10-2
      Visão Geral 10-3
      Segmentos de Rollback 10-4
      Usando Segmentos de Rollback com Transações 10-8
      Criando Segmentos de Rollback 10-12
      Mantendo Segmentos de Rollback 10-18
      Obtendo Informações Sobre Segmentos de Rollback 10-26
      Planejando Segmentos de Rollback 10-32
      Solucionando Problemas de Segmento de Rollback 10-34
      Sumário 10-40

Lição 11: Gerenciando Tabelas
      Objetivos 11-2
      Visão Geral 11-3
      Tipos de Dados Oracle 11-7
      Criando uma Tabela 11-17
      Controlando o Espaço Usado pelas Tabelas 11-25
      Recuperando Informações da Tabela 11-41
      Sumário 11-46




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                            vii
Sumário
.....................................................................................................................................................

Lição 12: Gerenciando Índices
      Objetivos 12-2
      Visão Geral 12-3
      Criando Índices 12-12
      Reorganizando Índices 12-22
      Eliminando Índices 12-29
      Obtendo Informações de Índice 12-31
      Sumário 12-33

Lição 13: Mantendo a Integridade dos Dados
      Objetivos 13-2
      Visão Geral 13-3
      Restrições de Integridade 13-5
      Implementando Restrições 13-14
      Mantendo Restrições 13-18
      Obtendo Informações de Restrição 13-24
      Sumário 13-27

Lição 14: Carregando Dados
      Objetivos 14-2
      Visão Geral 14-3
      Carregando Dados Usando Inserção de Carga Direta 14-4
      Carregando Dados Usando o SQL*Loader 14-7
      Carga de Caminho Direto 14-27
      Sumário 14-28

Lição 15: Reorganizando Dados
      Objetivos 15-2
      Visão Geral 15-3
      Tablespaces Transportáveis 15-24
      Transportando um Tablespace 15-26
      Exportando e Importando Metadados 15-27
      Transportando um Tablespace 15-29
      Usos do Tablespace Transportável 15-30




.....................................................................................................................................................
viii                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

            Tablespaces Transportáveis e Objetos de Esquema 15-31
            Verificando o Conjunto de Transporte 15-32
            Sumário 15-33

Lição 16: Gerenciando Recursos e Segurança de Senha
      Objetivos 16-2
      Visão Geral 16-3
      Administrando Senhas 16-5
      Alterando e Eliminando um Perfil 16-19
      Controlando o Uso dos Recursos 16-23
      Exibindo Informações de Senha e Limites de Recurso 16-30
      Sumário 16-32

Lição 17: Gerenciando Usuários
      Objetivos 17-2
      Visão Geral 17-3
      Criando Novos Usuários de Banco de Dados 17-6
      Alterando e Eliminando Usuários de Banco de Dados 17-14
      Eliminando Usuários 17-16
      Monitorando Informações Sobre Usuários 17-17
      Sumário 17-19

Lição 18: Gerenciando Privilégios
      Objetivos 18-2
      Visão Geral 18-3
      Privilégios de Sistema 18-4
      Concedendo Privilégios de Sistema 18-6
      Autenticação do Arquivo de Senhas 18-9
      Exibindo Privilégios de Sistema 18-11
      Revogando Privilégios de Sistema 18-14
      Privilégios de Objeto 18-17
      Concedendo Privilégios de Objeto 18-18
      Exibindo Privilégios de Objeto 18-20
      Revogando Privilégios de Objeto 18-21




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                             ix
Sumário
.....................................................................................................................................................

             Diretrizes de Auditoria 18-25
             Usando a Auditoria de Banco de Dados 18-29
             Exibindo Resultados de Auditoria 18-36
             Sumário 18-37

Lição 19: Gerenciando Atribuições
      Objetivos 19-2
      Visão Geral 19-3
      Criando e Modificando Atribuições 19-5
      Designando Atribuições 19-11
      Controlando a Disponibilidade das Atribuições 19-14
      Exibindo Informações sobre Atribuições 19-23
      Usando Controle de Acesso Detalhado 19-24
      Sumário 19-26

Lição 20: Usando Suporte a Idioma Nacional
          (National Language Support - NLS)
      Objetivos 20-2
      Visão Geral 20-3
      Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais 20-5
      Especificando o Comportamento Dependente do Idioma 20-11
      Parâmetros NLS e Funções SQL 20-19
      Parâmetros NLS em Funções SQL 20-22
      Suporte Para Índice Lingüístico 20-26
      Importando e Carregando Dados Usando NLS 20-27
      Obtendo Informações Sobre Definições NLS 20-28
      Sumário 20-33

Apêndice A: Exercícios
     Ambiente A-2
     Exercício 1: Componentes Arquitetônicos do Oracle A-3
     Exercício 2: Conceitos Básicos do Oracle A-5
     Exercício 3: Gerenciando uma Instância Oracle A-6
     Exercício 4: Criando um Banco de Dados A-8
     Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão A-9




.....................................................................................................................................................
x                                                            Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

            Exercício 6: Mantendo o Arquivo de Controle A-10
            Exercício 7: Mantendo Arquivos de Redo Log A-11
            Exercício 8: Gerenciando Tablespaces e Arquivos de Dados A-12
            Exercício 9: Estrutura de Armazenamento e Relacionamentos A-13
            Exercício 10: Gerenciando Segmentos de Rollback A-14
            Exercício 11: Gerenciando Tabelas A-15
            Exercício 12: Gerenciando Índices A-17
            Exercício 13: Mantendo a Integridade dos Dados A-19
            Exercício 14: Carregando Dados A-20
            Exercício 15: Reorganizando Dados A-21
            Exercício 16: Gerenciando a Segurança de Senha A-22
            Exercício 17: Gerenciando Usuários A-23
            Exercício 18: Gerenciando Privilégios A-24
            Exercício 19: Gerenciando Atribuições A-25
            Exercício 20: Usando o Suporte a Idioma Nacional
            (National Language Support – NLS) A-26

Apêndice B: Dicas
     Exercício 1: Componentes Arquitetônicos do Oracle B-2
     Exercício 2: Conceitos Básicos do Oracle B-3
     Exercício 3: Gerenciando uma Instância Oracle B-4
     Exercício 4: Criando um Banco de Dados B-7
     Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão B-8
     Exercício 6: Mantendo o Arquivo de Controle B-9
     Exercício 7: Mantendo Arquivos de Redo Log B-10
     Exercício 8: Gerenciando Tablespaces e Arquivos de Dados B-12
     Exercício 9: Estrutura de Armazenamento e Relacionamentos B-14
     Exercício 10: Gerenciando Segmentos de Rollback B-16
     Exercício 11: Gerenciando Tabelas B-18
     Exercício 12: Gerenciando Índices B-20
     Exercício 13: Mantendo a Integridade dos Dados B-22
     Exercício 14: Carregando Dados B-23
     Exercício 15: Reorganizando Dados B-24
     Exercício 16: Gerenciando a Segurança de Senha B-25




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                             xi
Sumário
.....................................................................................................................................................

             Exercício 17: Gerenciando Usuários B-26
             Exercício 18: Gerenciando Privilégios B-27
             Exercício 19: Gerenciando Atribuições B-28
             Exercício 20: Usando o Suporte a Idioma Nacional
             (National Language Support – NLS) B-29

Apêndice C: Soluções dos Exercícios Para SQL*Plus
     Soluções do Exercício 1 C-2
     Soluções do Exercício 2 C-4
     Soluções do Exercício 3 C-7
     Soluções do Exercício 4 C-17
     Soluções do Exercício 5 C-21
     Soluções do Exercício 6 C-25
     Soluções do Exercício 7 C-28
     Soluções do Exercício 8 C-34
     Soluções do Exercício 9 C-41
     Soluções do Exercício 10 C-47
     Soluções do Exercício 11 C-55
     Soluções do Exercício 12 C-60
     Soluções do Exercício 13 C-64
     Soluções do Exercício 14 C-70
     Soluções do Exercício 15 C-76
     Soluções do Exercício 16 C-81
     Soluções do Exercício 17 C-85
     Soluções do Exercício 18 C-88
     Soluções do Exercício 19 C-93
     Soluções do Exercício 20 C-96

Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
     Soluções do Exercício 1 D-2
     Soluções do Exercício 2 D-3
     Soluções do Exercício 3 D-4
     Soluções do Exercício 4 D-8
     Soluções do Exercício 5 D-9
     Soluções do Exercício 6 D-10




.....................................................................................................................................................
xii                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

            Soluções do Exercício 7 D-12
            Soluções do Exercício 8 D-19
            Soluções do Exercício 9 D-25
            Soluções do Exercício 10 D-26
            Soluções do Exercício 11 D-37
            Soluções do Exercício 12 D-42
            Soluções do Exercício 13 D-47
            Soluções do Exercício 14 D-49
            Soluções do Exercício 15 D-52
            Soluções do Exercício 16 D-59
            Soluções do Exercício 17 D-64
            Soluções do Exercício 18 D-71
            Soluções do Exercício 19 D-76
            Soluções do Exercício 20 D-80

Apêndice E: Teste de Certificação: Exemplos de Perguntas
     Programa Oracle Certified Professional (OCP):
     Oracle Certified Database Administrator Track E-2
     Administração de Banco de Dados Oracle: Exemplo e Teste E-3
     Exemplo de Teste de Backup e Recuperação do Oracle E-5
     Respostas E-8
     Inscrevendo-se em um Teste OCP E-9




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                           xiii
Sumário
.....................................................................................................................................................




.....................................................................................................................................................
xiv                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
15
          .................................




Reorganizando Dados
Lição 15: Reorganizando Dados
.....................................................................................................................................................


Objetivos


                                                  Objetivos


            Após completar esta lição, você poderá executar
            o seguinte:
            •     Reorganizar dados usando os utilitários
                  Exportar e Importar
            •     Mover dados usando tablespaces transportáveis




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
15-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral


          Movendo Dados Usando Exportar e Importar

                                                      Exportar



                                                                                    Arq. S/O
                                Arquivos
                                de dados




                                                      Importar

                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Utilitários Exportar e Importar
Os utilitários Exportar e Importar permitem que o administrador mova dados entre
bancos de dados Oracle, e dentro de um banco de dados Oracle, para usuários ou
diferentes tablespaces, ou reorganize os dados para armazenamento e desempenho
eficientes.

Utilitário Exportar
O utilitário Exportar pode ser usado para criar uma cópia lógica de definições de
objeto e dados em um arquivo binário de sistema operacional. A exportação pode
gravar dados em um arquivo no disco ou fita. O utilitário Exportar extrai uma view
consistente de dados de cada tabela.

Utilitário Importar
O utilitário Importar pode ler os arquivos do sistema operacional criados pelo utilitário
Exportar e copiar definições de objeto e dados para um banco de dados Oracle. O
utilitário Importar não consegue ler arquivos de texto ou arquivos criados em qualquer
outro formato.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         15-3
Lição 15: Reorganizando Dados
.....................................................................................................................................................




                            Usos de Exportar e Importar

                   •    Reorganizar tabelas
                   •    Mover dados pertencentes a um usuário para
                        outro usuário
                   •    Mover dados entre bancos de dados:
                         – Desenvolvimento para produção
                         – Sistema OLTP para um data warehouse
                   •    Migrar o banco de dados para outro(a):
                          – Plataforma de S/O
                          – Versão do banco de dados Oracle
                   •    Repetir execuções de teste durante
                        desenvolvimento ou upgrade
                   •    Executar um backup lógico
                                                                                                         ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Usando os Utilitários Exportar e Importar
Exportar e Importar podem ser usados nos seguintes casos:
• Reorganizar tabelas: Existem várias instâncias em que é necessário reorganizar
   tabelas:
   – Os dados em um tablespace podem precisar ser movidos de um tablespace para
       outro para minimizar a disputa, reduzir a fragmentação do espaço livre ou para
       facilitar o backup.
   – Uma tabela pode conter várias linhas migradas.
   – Uma tabela pode ter vários blocos com grandes volumes de espaço livre.
   – Uma tabela pode ter muitos blocos vazios abaixo da marca d'água.
• Mover dados pertencentes a um usuário para outro usuário: Isso pode ser
   necessário quando um esquema precisa ser removido do banco de dados ou para
   redistribuir propriedade de objetos. Dados que foram exportados de um usuário
   podem ser importados para o esquema de outro usuário.
• Mover dados entre bancos de dados: As definições de objeto podem ser movidas
   do desenvolvimento para a produção através da extração apenas das definições,
   sem considerar os dados. Exportar e Importar também podem ser usados para
   extrair dados de uma aplicação OLTP (Online Transaction Processing System)
   para um data warehouse.
• Migrar outra plataforma de sistema operacional ou versão do Oracle: Dados
   exportados de uma máquina podem ser importados para um banco de dados em
   uma outra máquina, possivelmente usando outro conjunto de caracteres.




.....................................................................................................................................................
15-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................

Usando os Utilitários Exportar e Importar (continuação)
• Migrar para outra versão do banco de dados Oracle: Quando você atualiza para
    uma nova versão do servidor Oracle, os dados podem ser exportados da versão
    antiga e importados para a nova versão. Observe que talvez não seja possível usar
    esse método para mover dados de uma versão posterior para uma versão anterior.
• Repetir execuções de teste durante desenvolvimento ou upgrade: Em um banco de
    dados de desenvolvimento ou teste, uma aplicação pode exigir diversas execuções
    de teste antes de ser totalmente depurada e aceita. Os dados de teste podem ser
    exportados para um arquivo externo e importados antes de cada execução para
    garantir que os testes sejam executados no mesmo conjunto de dados. Esse método
    também é útil para testar uma nova versão do servidor Oracle antes de uma
    atualização de um banco de dados de produção.
• Executar um backup lógico: Alguns ou todos os objetos de um banco de dados
    podem ser exportados e o arquivo de exportação pode ser usado como um backup
    lógico.
Nesta lição, é apresentado o uso de Exportar e Importar para reorganização de dados e
movimentação de dados entre usuários.
Observação: O uso de Exportar e Importar para backup e recuperação será abordado
detalhadamente no curso Enterprise DBA Part 1B: Backup and Recovery.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         15-5
Lição 15: Reorganizando Dados
.....................................................................................................................................................




                                   Modos de Exportação
                                                                                     Banco
                       Tabela                       Usuário
                                                                                    de Dados




              •   Tabela                     • Todos os        • Todos os
              •   Índices                      objetos           objetos no
                                               pertencentes      banco de
              •   Gatilhos                     ao usuário,       dados, exceto
              •   Restrições                   exceto índices    objetos
                                               e gatilhos nas    pertencentes
              •   Concessões                   tabelas de        ao SYS
              •   Método de                    outros usuários
                  análise
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Três Modos de Exportação
O utilitário Exportar fornece três modos de exportação:
• Tabela
• Usuário
• Banco de dados

Modo de Tabela
Todos os usuários podem usar o modo de tabela para exportar suas próprias tabelas.
Os usuários privilegiados podem exportar tabelas pertencentes a qualquer usuário.
O uso do modo de tabela exporta:
• A definição da tabela.
• Dados em uma tabela, se necessário.
• Todos os índices da tabela se a exportação for executada por um usuário
   privilegiado. Caso contrário, serão exportados somente os índices da tabela que
   pertençam ao usuário.
• Todos os gatilhos da tabela somente se o utilitário for executado por um usuário
   privilegiado. Caso contrário, serão exportados somente os gatilhos da tabela
   pertencentes ao usuário.
• Restrições na tabela.
• Todas as concessões feitas na tabela.
• Definição do método de análise a ser utilizado na importação.




.....................................................................................................................................................
15-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................

Modo de Usuário
A exportação do modo de usuário funcionará de forma diferente dependendo do fato
de o usuário que está executando a exportação possuir ou não privilégios especiais.
• Um usuário privilegiado pode exportar objetos pertencentes a qualquer usuário.
    Nesse caso, os objetos exportados são:
    – Todos os objetos pertencentes ao usuário, exceto índices e gatilhos
        pertencentes ao usuário, mas que estejam em tabelas pertencentes a outro
        usuário.
    – Gatilhos e índices criados por outros usuários nas tabelas do usuário.
• Os usuários não privilegiados podem exportar somente objetos de sua propriedade
    e esse modo não incluirá índices ou gatilhos criados por outros usuários nas tabelas
    pertencentes a esse usuário.

Modo de Banco de Dados Integral
Quando esse modo é utilizado, são exportados todos os objetos do banco de dados,
exceto os pertencentes ao usuário SYS. Esse modo exige privilégios especiais e não
pode ser usado por todos os usuários.
Observação: Em todos os três modos de exportação, usuários privilegiados são
usuários com a atribuição EXP_FULL_DATABASE. Essa atribuição será abordada
detalhadamente na lição "Gerenciando Atribuições".




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         15-7
Lição 15: Reorganizando Dados
.....................................................................................................................................................




        Exportação de Caminho Convencional e Direto
                                                          Direto
                  Arquivo                                 Convencional
                                                                                            Exportar
                                                                                            Exportar
                  de dump


                               Buffer de                     Processamento
                               avaliação                     de comando SQL
                               Buffer privado                Gerenciamento
                               ou cache                      de cache de buffer
                               de buffer
                                                             Leitura de bloco
                                                             do banco de dados



                                                   Banco de
                                                    Dados
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Caminhos de Exportação
O slide mostra a diferença entre exportações de caminho convencional e de caminho
direto.

Caminho Convencional
Este termo refere-se ao método default usado para formatar de dados de um banco
de dados e gravá-los em um arquivo de exportação. A exportação de caminho
convencional usa a instrução SQL SELECT para extrair dados de tabelas. Os dados
são lidos do disco para um cache de buffer e as linhas são transferidas para o buffer de
avaliação. Os dados, após passarem pela avaliação da expressão, são transferidos para
o cliente da exportação que, em seguida, grava os dados no arquivo de exportação.

Caminho Direto
A exportação de caminho direto é muito mais rápida do que uma exportação de
caminho convencional por ler os dados diretamente e ignorar a camada de
processamento de comandos SQL. Em uma exportação de caminho direto, os dados
são lidos do disco para o cache de buffer e as linhas são transferidas diretamente para o
processo de exportação. O buffer de avaliação é ignorado — isto é, os dados nos
blocos não são reorganizados para reunir fragmentos de linha. Os dados já estão no
formato esperado pelo Exportar evitando, assim, a desnecessária conversão de dados.
Os dados são transferidos para o processo de exportação que, em seguida, grava os
dados no arquivo de exportação.
O utilitário Importar pode usar um arquivo de exportação criado por qualquer um dos
caminhos. O tempo despendido para executar a importação não é afetado de forma
significativa pelo caminho de exportação utilizado.


.....................................................................................................................................................
15-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................




                                         Usando Exportar

               $exp scott/tiger tables=(dept,emp) 
               $exp scott/tiger tables=(dept,emp) 
               > file=emp.dmp log=exp.log 
               > file=emp.dmp log=exp.log 
               > compress=n direct=y
               > compress=n direct=y



                                                                                            emp.dmp


                                                     Exportar
                                                     Exportar


                    Tabelas
                  DEPT e EMP                                                                exp.log
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Usando Exportar
Exportar pode ser chamado por:
• Linha de comandos
• Modo interativo
• Interface gráfica, quando disponível
O modo interativo é fornecido principalmente para retrocompatibilidade e não oferece
a faixa completa de opções proporcionadas pela linha de comandos. Como resultado, o
uso do modo de linha de comandos é recomendado.

Linha de Comandos
Use o comando a seguir no UNIX ou Windows NT para executar uma exportação:
      $exp [keyword=]{value|(value, value ...)}
         [ [ [,] keyword=]{value|(value, value ...)} ] ...
onde:              keyword                                    é uma das palavras-chave abordadas na
                                                              próxima seção
                   value                                      é o valor atribuído à palavra-chave




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         15-9
Lição 15: Reorganizando Dados
.....................................................................................................................................................

Linha de Comandos (continuação)
Observação
• Se não forem especificadas palavras-chave, os valores precisarão ser especificados
   na ordem correta. Embora essa opção esteja disponível, é em geral aconselhável
   usar as palavras-chave.
• Conforme mostrado no slide, é possível especificar os primeiros valores sem
   palavras-chave e, em seguida, especificar outros valores com palavras-chave.
• Alguns sistemas operacionais, como o UNIX, utilizam caracteres de escape antes
   de caracteres especiais, como um parêntese, para que o caractere não seja tratado
   como um caractere especial.

Windows NT: Linha de Comandos
Use o mesmo comando no Windows NT para executar uma exportação:
      C:>EXP [keyword=]{value|(value, value ...)}
         [ [ [,] keyword=]{value|(value, value ...)} ] ...
Observação: As views necessárias para os utilitários Exportar e Importar são criadas
através da execução do script catexp.sql, chamado quando o script catalog.sql
é executado.




.....................................................................................................................................................
15-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager para Exportar Dados
 1 Inicie a console do Oracle Enterprise Manager:
   (N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
   Oracle Enterprise Management —> Enterprise Manager Console
 2 Informe o administrador, senha e servidor de gerenciamento. Clique em OK para
   estabelecer login na console.
 3 Expanda a pasta Databases (Bancos de Dados).
 4 Selecione o banco de dados de trabalho e escolha Data Management
   (Gerenciamento de Dados) —> Exportar no menu do botão direito do mouse.
 5 Informe o nome do arquivo de exportação em Export Filepage (Página de Arquivo
   de Exportação) e clique em Next (Próximo).
 6 Especifique o tipo de exportação na página Export Type (Tipo de Exportação) e
   clique em Next.
 7 Especifique os objetos associados e clique em Next.
 8 Selecione os objetos a serem exportados na página Object Selection (Seleção de
   Objetos) do Assistente do Data Manager.
 9 Especifique os objetos associados a serem exportados, como índices e linhas, e o
   caminho na página Associated Objects (Objetos Associados).
10 Especifique os parâmetros de programação e clique em Finish (Finalizar).




11 Verifique os parâmetros informados na página Summary (Resumo) e
      clique em OK.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-11
Lição 15: Reorganizando Dados
.....................................................................................................................................................

Parâmetros de Linha de Comandos
Alguns dos parâmetros normalmente usados são mostrados abaixo.
   Palavra-chave                         Default                   Significado
   USERID                                                          Nome de usuário e senha do Oracle. Se a senha não
                                                                   for especificada, um prompt solicitará que o
                                                                   usuário a forneça.
   BUFFER                                Específico                O tamanho do buffer que será usado para
                                         do OS                     armazenar as linhas extraídas antes de serem
                                         (Operational              gravadas no arquivo de exportação.
                                         System,
                                         sistema
                                         operacional)
   COMPRESS                              Y                         Um valor Y especifica que na importação o
                                                                   tamanho da extensão inicial será definido como
                                                                   um valor igual ao tamanho atual do segmento. Um
                                                                   valor N fará os tamanhos de extensão atuais serem
                                                                   mantidos. A escolha precisa ser feita na exportação
                                                                   porque as informações são gravadas no arquivo de
                                                                   exportação.
                                                                   Os segmentos de LOB não são compactados.
   CONSISTENT                            N                         Um valor Y especifica que a operação de
                                                                   exportação inteira seja executada em uma
                                                                   transação somente para leitura. A exportação
                                                                   tentará obter uma imagem com leitura consistente
                                                                   de todos os objetos exportados. Um valor N
                                                                   especifica que é necessário manter somente
                                                                   consistência em nível de tabela.
   CONSTRAINTS                           Y                         Um valor Y especifica que as restrições devem ser
                                                                   exportadas com a tabela. Um valor N faz as
                                                                   restrições não serem exportadas.
   DIRECT                                N                         Um valor Y especifica que o caminho direto seja
                                                                   usado para a exportação. Um valor N utiliza o
                                                                   caminho convencional.
   FEEDBACK                              0                         Esse parâmetro é especificado como um número
                                                                   inteiro n para solicitar que um ponto (.) seja
                                                                   exibido quando n linhas forem exportadas. Zero,
                                                                   o default, indica que nenhum ponto será exibido.
   FILE                                  expdat.dmp                Nome do arquivo de saída.
   FULL                                  N                         Um valor Y especifica exportação de banco de
                                                                   dados integral.




.....................................................................................................................................................
15-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


  Palavra-chave                          Default                  Significado
  GRANTS                                 Y                        Um valor Y especifica que todas as concessões
                                                                  em objetos exportados também precisam ser
                                                                  preservadas na importação.
  HELP                                   N                        Um valor Y exibe uma lista dos parâmetros e seus
                                                                  significados. Esse parâmetro não é combinado com
                                                                  outros parâmetros.
  INDEXES                                Y                        Um valor Y faz os índices serem exportados.
  LOG                                    NULL                     O nome do arquivo para armazenar todas as
                                                                  mensagens de exportação. Por default, as
                                                                  mensagens são exibidas somente na tela.
  OWNER                                                           Os nomes dos usuários para exportação no nível
                                                                  de usuário.
  PARFILE                                                         Especifica o nome do arquivo que contém uma
                                                                  lista de parâmetros de exportação.
  RECORDLENGTH                           Específico do            O tamanho do registro de saída.
                                         S/O
  ROWS                                   Y                        Um valor Y especifica que os dados devem ser
                                                                  exportados.
  STATISTICS                             ESTIMATE                 Especifica o método de análise a ser usado na
                                                                  importação.
  TABLES                                                          esquema.tabela para exportação no modo de
                                                                  tabela.

Observação
• Somente um dos parâmetros, FULL=Y, OWNER=usuário ou
  TABLES=esquema.tabela, pode ser definido.
• Se for especificado o caminho direto (DIRECT=Y), o parâmetro CONSISTENT
  não poderá ser definido como Y.
• Nem todos os parâmetros estão definidos aqui. Para obter uma referência
  completa, consulte o capítulo "Export" no manual Oracle8i Utilities.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-13
Lição 15: Reorganizando Dados
.....................................................................................................................................................




                                         Usando Importar


               $imp scott/tiger tables=(dept,emp) 
               $imp scott/tiger tables=(dept,emp) 
               > file=emp.dmp log=imp.log ignore=y
               > file=emp.dmp log=imp.log ignore=y




                                                                                       imp.log

                 emp.dmp                        Importar
                                                 Importar


                                                                                         Banco
                                                                                        de Dados
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Usando Importar
Importar pode ser chamado através de:
• Linha de comandos
• Modo interativo
• Interface gráfica, quando disponível
O modo interativo é fornecido principalmente para retrocompatibilidade e não oferece
a faixa completa de opções oferecida pela linha de comandos. Como resultado, o uso
do modo de linha de comandos é recomendado.

Linha de Comandos
Use o comando a seguir no UNIX ou Windows NT para executar uma exportação:
      $imp [keyword=]{value|(value, value ...)}
         [ [ [,] keyword=]{value|(value, value ...)} ] ...
onde:              keyword                                    é uma das palavras-chave abordadas na
                                                              próxima seção
                   value                                      é o valor atribuído à palavra-chave

Windows NT: Linha de Comandos
O comando do Windows é igual ao do UNIX:
      C:>IMP [keyword=]{value|(value, value ...)}
         [ [ [,] keyword=]{value|(value, value ...)} ] ...




.....................................................................................................................................................
15-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................




Como Usar o Oracle Enterprise Manager para Importar Dados
 1 Inicie a console do Oracle Enterprise Manager:
   (N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
   Oracle Enterprise Management —> Enterprise Manager Console
 2 Informe o administrador, senha e servidor de gerenciamento. Clique em OK para
   estabelecer login na console.
 3 Expanda a pasta Databases (Bancos de Dados).
 4 Selecione o banco de dados de trabalho e escolha Data Management
   (Gerenciamento de Dados) —> Importar no menu do botão direito do mouse.
 5 Especifique o nome do arquivo de exportação a ser importado e clique em Next
   (Próximo).
 6 Aguarde a finalização do serviço.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-15
Lição 15: Reorganizando Dados
.....................................................................................................................................................

Parâmetros de Linha de Comandos
Alguns dos parâmetros usados normalmente são mostrados abaixo.
   Palavra-chave                       Default                   Significado
   USERID                                                        Nome de usuário e senha do Oracle. (Se a senha não
                                                                 for especificada, um prompt solicitará que o usuário
                                                                 a informe.)
   BUFFER                              Específico do             Tamanho, em bytes, do buffer através do qual as
                                       S/O                       linhas de dados são transferidas.
   COMMIT                              N                         Um valor Y especifica que Importar deve efetuar
                                                                 uma submissão a commit após cada inserção de
                                                                 array. Por default, Importar efetua uma submissão a
                                                                 commit somente após carregar cada tabela e efetua
                                                                 um rollback quando ocorrem erros, antes de
                                                                 prosseguir para o próximo objeto. A especificação
                                                                 de COMMIT=Y impede o crescimento excessivo
                                                                 dos segmentos de rollback.
   FEEDBACK                            0                         Esse parâmetro é especificado como um número
                                                                 inteiro n para solicitar que um ponto (.) seja exibido
                                                                 quando n linhas forem importadas. O valor default
                                                                 suprime a exibição.
   FILE                                expdat.dmp                Nome do arquivo de entrada.
   FROMUSER                            NULL                      Uma lista dos usuários cujos objetos devem ser
                                                                 importados.
   FULL                                N                         Um valor Y especifica importação de banco de
                                                                 dados integral.
   GRANTS                              Y                         Um valor Y especifica que todas as concessões nos
                                                                 objetos importados também devem ser importadas.
   HELP                                N                         Um valor Y exibe uma lista dos parâmetros e seus
                                                                 significados. Esse parâmetro não é combinado com
                                                                 outros parâmetros.




.....................................................................................................................................................
15-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


  Palavra-chave                        Default                   Significado
  IGNORE                               N                         Se o valor for definido como Y, Importar ignorará
                                                                 erros de criação de objeto ao tentar criar objetos de
                                                                 banco de dados. Nesse caso, Importar prosseguirá
                                                                 sem relatar o erro. Para tabelas, IGNORE=Y faz
                                                                 linhas serem importadas para tabelas existentes.
                                                                 Nenhuma mensagem é fornecida. IGNORE=N faz
                                                                 um erro ser relatado e, se a tabela já existir, ela será
                                                                 ignorada.
                                                                 Observe que somente erros de criação de objeto são
                                                                 ignorados; outros erros, como erros de sistema
                                                                 operacional, banco de dados e SQL, não são
                                                                 ignorados e podem provocar interrupção do
                                                                 processamento.
  INDEXES                              Y                         Um valor Y faz índices serem importados.
  INDEXFILE                            NULL                      Especifica um arquivo para receber comandos de
                                                                 criação de índice. Quando esse parâmetro é
                                                                 especificado, os comandos de criação de índice do
                                                                 modo solicitado são extraídos e gravados no arquivo
                                                                 especificado em vez de serem usados para criar
                                                                 índices no banco de dados. Tabelas e outros objetos
                                                                 de banco de dados não são importados.
                                                                 O arquivo pode, em seguida, ser editado (por
                                                                 exemplo, para alterar parâmetros de
                                                                 armazenamento) e usado como um script SQL
                                                                 para criar os índices.
  LOG                                  NULL                      O nome do arquivo para armazenar todas as
                                                                 mensagens de importação. Por default, as
                                                                 mensagens são exibidas somente na tela.
  PARFILE                                                        Especifica o nome do arquivo que contém uma lista
                                                                 de parâmetros de importação.
  RECORDLENGTH                         Específico do             O tamanho do registro de saída. Será necessário
                                       S/O                       somente se os dados tiverem sido exportados em um
                                                                 sistema operacional com tamanho de registro
                                                                 diferente.
  ROWS                                 Y                         Um valor Y especifica que os dados devem ser
                                                                 importados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-17
Lição 15: Reorganizando Dados
.....................................................................................................................................................


   Palavra-chave                       Default                   Significado
   SHOW                                N                         Se o valor for Y, o conteúdo do arquivo de
                                                                 exportação será listado para exibição e não
                                                                 importado. As instruções SQL contidas na
                                                                 exportação são exibidas na ordem em que serão
                                                                 executadas pela importação. Se SHOW=Y, os
                                                                 únicos outros parâmetros que poderão ser definidos
                                                                 são FROMUSER, TOUSER, FULL e TABLES.
   TABLES                              NULL                      Nomes das tabelas a serem importadas.
   TOUSER                              NULL                      Uma lista dos nomes de usuário para importar
                                                                 tabelas. Somente usuários com atribuição
                                                                 IMP_FULL_DATABASE podem usar esse
                                                                 parâmetro para importar objetos para a conta de
                                                                 outro usuário.

Observação
• Somente um dos parâmetros, FULL=Y, OWNER=usuário ou
  TABLES=esquema.tabela, pode ser definido.
• A atribuição IMP_FULL_DATABASE será abordada na lição "Gerenciando
  Atribuições".
• Nem todos os parâmetros estão definidos aqui. Para obter uma referência
  completa, consulte o capítulo "Import" no manual Oracle8i Utilities.




.....................................................................................................................................................
15-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................




                           Comportamento de Importar


              • Ordem de importação:
                 Tabela —> Dados —> Índices em árvore
                 B —> restrições, gatilhos, índices de bitmap
              • Tablespace usado para o objeto:
                  – Tablespace igual ao do banco de dados de
                      origem, se possível
                  – Tablespace default do usuário




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Ordem de Importação
Os objetos de tabela são importados na forma como são lidos no arquivo de
exportação. O arquivo de exportação contém objetos na seguinte ordem:
 1 Definições de tipo
 2 Definições de tabela
 3 Dados de tabela
 4 Índices de tabela
 5 Restrições de integridade, views, procedimentos e gatilhos
 6 Índices de bitmap, funcionais e de domínio
Essa seqüência impede a rejeição de dados em decorrência da ordem em que as tabelas
são importadas. Essa seqüência também impede que gatilhos redundantes sejam
disparados duas vezes no mesmo dia (uma vez ao ser inserido originalmente e
novamente durante a importação).
Entretanto, alguns objetos, como procedimentos, podem ser invalidados na importação
por serem importados antes dos objetos a que fazem referência. Verifique os objetos
com STATUS=INVALID e recompile-os.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-19
Lição 15: Reorganizando Dados
.....................................................................................................................................................

Considerações sobre a Importação em Tabelas Existentes
Quando são importados dados para tabelas existentes, a ordem da importação pode
continuar a produzir falhas de referência de integridade. Uma situação semelhante
ocorre quando uma restrição de referência de integridade em uma tabela faz referência
a si mesma no fim da importação.
Pelas razões mencionadas anteriormente, é aconselhável desativar restrições de
referência para importar para uma tabela existente. As restrições poderão ser ativadas
novamente após a conclusão da importação.

Tablespace Usado para um Objeto
Se um usuário tiver a cota necessária, as tabelas serão importadas para o mesmo
tablespace de onde elas foram exportadas. Contudo, se o tablespace não existir mais
ou se o usuário não tiver a cota necessária, Importar criará a tabela no tablespace
default desse usuário. Se um usuário não puder acessar o tablespace default, a tabela
não poderá ser importada.
Um segmento de LOB pode ser importado somente para o mesmo tablespace de onde
ele foi exportado. Portanto, uma tabela que contenha LOBs não será criada se seu
proprietário não puder criar objetos no tablespace de onde o segmento de LOB foi
exportado.
Observação: As cotas e o controle do uso de tablespaces por usuários serão abordados
na lição "Gerenciando Usuários".




.....................................................................................................................................................
15-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................




                       Diretrizes de Exportar e Importar

              • Use um arquivo de parâmetros para especificar
                opções de linha de comandos normalmente usadas.
              • Use CONSISTENT=Y somente se estiver exportando
                um volume pequeno de dados.
              • Não use COMPRESS=Y se houver muitas
                linhas deletadas.
              • Melhore o desempenho:
                 – Alocando um buffer grande
                 – Utilizando caminho direto se estiver usando
                   7.3.3 ou superior



                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Diretrizes de Exportação e Importação
Use um arquivo de parâmetros para armazenar parâmetros de linha de comandos
usados normalmente. Isso minimiza erros e mantém a linha de comandos menor.
Se as tabelas que estão sendo exportadas forem atualizadas com freqüência, usar
CONSISTENT=Y provavelmente produzirá erros SNAPSHOT TOO OLD. Em geral,
é preferível executar grandes exportações durante períodos de baixa atividade. Como
alternativa, crie um grande segmento de rollback, coloque todos os outros como off-
line e execute a importação.
A opção de exportação COMPRESS=Y gerará código para criar uma extensão inicial,
que é igual à soma dos tamanhos de todas as extensões alocadas no momento para um
objeto. Se o objeto tiver muitas linhas deletadas ou se a última extensão tiver muitos
blocos não utilizados, esse procedimento alocará sem necessidade muito espaço do
objeto.
Aloque o maior buffer permitido pelo sistema operacional e recursos da máquina. Use
exportação de caminho direto se os dados forem importados para um banco de dados
que esteja executando a versão 7.3.3 ou superior.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-21
Lição 15: Reorganizando Dados
.....................................................................................................................................................




                               Considerações Sobre NLS
                                em Exportar e Importar

                                                                                     Exportar conjunto de
                                                      Exportar
                                                      Exportar                       carecteres do cliente




                 Conjunto de
                caracteres do                         Importar
               banco de dados
                                                       Importar

                                               Importar conjunto de
                                               caracteres do cliente
                              Conversão possível de conjunto de caracteres
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Exportação e Conversão de Conjunto de Caracteres
A exportação de caminho convencional grava arquivos de exportação usando o
conjunto de caracteres especificado para a sessão do usuário, como, por exemplo,
ASCII de 7 bits ou IBM CODE Page 500 (EBCDIC).
As exportações de caminho direto exportam dados somente no conjunto de caracteres
do banco de dados. Se o conjunto de caracteres da sessão de exportação não for igual
ao conjunto de caracteres do banco de dados, ao ser iniciada a exportação, Exportar
exibirá uma advertência e abortará. Especifique o conjunto de caracteres da sessão
igual ao do banco de dados antes de tentar a exportação novamente.
O arquivo de exportação contém um indicador que mostra o esquema de codificação
de caracteres usado para esses dados de caracteres.

Importação e Conversão de Conjunto de Caracteres
A sessão de importação e o conjunto de caracteres do banco de dados de destino
podem diferir do conjunto de caracteres do banco de dados de origem. Essa situação
requer uma ou mais operações de conversão de conjunto de caracteres.
Se necessário, os dados do arquivo de exportação serão primeiro convertidos durante a
importação para o esquema de codificação de caracteres especificado para a sessão do
usuário e, em seguida, para o conjunto de caracteres do banco de dados.
Durante a conversão, quaisquer caracteres do arquivo de exportação que não tenham
equivalente no conjunto de caracteres de destino serão substituídos pelo caractere
default, definido pelo conjunto de caracteres de destino. Para garantir 100% de
conversão, o conjunto de caracteres de destino deverá ser um superconjunto ou
equivalente do conjunto de caracteres de origem.



.....................................................................................................................................................
15-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................

Diretrizes
Como a conversão de conjunto de caracteres torna mais longo o tempo necessário para
processamento de importação, limite o número de conversões de conjuntos de
caracteres para o menor número possível. No cenário ideal, os conjuntos de caracteres
da sessão de importação e do banco de dados de destino são iguais aos conjuntos de
caracteres do banco de dados de origem, não exigindo conversão.
Observação: A definição do conjunto de caracteres no nível da sessão e seu impacto
sobre as diversas operações de banco de dados serão abordados detalhadamente na
lição "Usando o Suporte a Idioma Nacional (National Language Support – NLS)".




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-23
Lição 15: Reorganizando Dados
.....................................................................................................................................................


Tablespaces Transportáveis

                               Transporte de Dados:
                            Tablespaces Transportáveis
         OLTP
                            Área
                       intermediária                Data                                    Datamarts
                                                 warehouse




         Distribuição de
          informações
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Tablespaces Transportáveis
Mover dados de um data warehouse para um datamart ou de um sistema OLTP para
uma área intermediária de um data warehouse pode ser incômodo e demorado. A carga
de caminho direto através do SQL*Loader ou DML paralelo torna a tarefa mais
rápida, mas o processo pode ser mais simples para movimentação de dados entre
bancos de dados idênticos. O Oracle8i oferece um mecanismo para copiar arquivos de
dados entre sistemas idênticos e permitir que os mesmos dados sejam acessados pelos
dois sistemas. Agora a movimentação de dados pode ser tão rápida quanto uma
simples transferência de arquivos entre máquinas. Isso melhora bastante o
desempenho e proporciona simplicidade operacional para transferência de dados.

Sistemas de Informações Corporativos
Um grande volume de dados pode fluir por um sistema de informações corporativo, de
um banco de dados OLTP para um banco de dados intermediário e, em seguida, por
um data warehouse da empresa para datamarts. Nesse ambiente, tablespaces
transportáveis podem ser usados para diversas finalidades. Normalmente, tabelas em
um data warehouse não são iguais as do banco de dados OLTP. É possível usar um
tablespace transportável para mover dados de um banco de dados OLTP para um DSS
(Decision Support System, Serviço de Suporte de Decisões) ou banco de dados de
warehouse.




.....................................................................................................................................................
15-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Tablespaces Transportáveis
.....................................................................................................................................................

Distribuição de Informações
Esse recurso também pode ser usado por:
• Empresas para publicar dados em CD-ROMs que podem ser facilmente integrados
   a bancos de dados Oracle em escritórios regionais e de área.
   Por exemplo, é possível preencher e atualizar das tabelas PRODUCT com
   descrições de produto e preço no escritório central e movê-las para escritórios
   regionais ou filiais para serem usadas em um sistema de processamento de
   pedidos.
• Provedores de conteúdo para distribuir para organizações dados estruturados,
   como catálogos de empresas e dados demográficos, para fácil integração em seus
   sistemas de suporte à decisão.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-25
Lição 15: Reorganizando Dados
.....................................................................................................................................................


Transportando um Tablespace

                            Transportando Tablespaces


            1.      Torne o tablespace somente para leitura
            2.      Exporte metadados da origem
            3.      Copie arquivos de dados para o sistema
                    de destino
            4.      Transfira arquivo de exportação
            5.      Importe metadados para o destino
            6.      Se necessário, altere o tablespace para
                    leitura/gravação




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Etapas para Transportar um Tablespace
Use as etapas mostradas abaixo para mover um tablespace de um banco de dados para
outro.
 1 Para garantir que nenhuma alteração seja efetuada no arquivo enquanto ele estiver
    sendo movido, defina o tablespace como somente para leitura.
 2 Use Exportar para capturar as informações de dicionário de dados para um arquivo
    do sistema operacional.
 3 Faça uma cópia do tablespace executando uma cópia binária dos arquivos de dados
    da origem na máquina de destino.
 4 Transfira o arquivo de exportação para a máquina de destino.
 5 Use Importar para carregar as informações de dicionário de dados no destino.
 6 Se necessário, altere o tablespace no banco de dados de origem ou destino para
    permitir gravação.




.....................................................................................................................................................
15-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exportando e Importando Metadados
.....................................................................................................................................................


Exportando e Importando Metadados

                  Exportando e Importando Metadados

                  exp sys/… FILE=s980501.dmp
                  exp sys/… FILE=s980501.dmp
                  TRANSPORT_TABLESPACE=y
                  TRANSPORT_TABLESPACE=y
                  TABLESPACES=sales_ts
                  TABLESPACES=sales_ts
                  TRIGGERS=N CONSTRAINTS=N
                  TRIGGERS=N CONSTRAINTS=N


                  imp sys/… FILE=s980501.dmp
                  imp sys/… FILE=s980501.dmp
                  TRANSPORT_TABLESPACE=y
                  TRANSPORT_TABLESPACE=y
                  DATAFILES=(/disk1/sales01.dbf,
                  DATAFILES=(/disk1/sales01.dbf,
                             /disk2/sales02.dbf)
                             /disk2/sales02.dbf)
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Exportando Metadados
O uso da opção TRANSPORT_TABLESPACE especifica que as informações do
dicionário de dados sobre todos os objetos nos tablespaces precisam ser exportadas.
A nova cláusula TRIGGERS, junto com CONSTRAINTS e GRANTS, pode ser usada
para controlar se as informações associadas serão exportadas quando a tabela for
exportada.
É útil transferir todos os dados relacionados durante a publicação de dados
estruturados, embora talvez não seja necessário copiar gatilhos e restrições se estiver
copiando dados para um data warehouse.

Importando Metadados
Use o utilitário Importar com a opção TRANSPORT_TABLESPACE para atualizar o
dicionário de dados de destino com o tablespace e outras definições de objeto. As
seguintes regras controlam a operação de importação:
• A opção DATAFILES deve ser especificada. Ela nomeia os arquivos pertencentes
    ao tablespace que está sendo transferido. Use os nomes da forma como eles estão
    armazenados no computador de destino, mesmo que eles sejam diferentes dos
    nomes de arquivo originais.
• Se a cláusula TABLESPACES for especificada, os nomes de tablespace fornecidos
    serão comparados com os do arquivo de exportação. Caso contrário, os nomes de
    tablespace serão extraídos do arquivo de exportação.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-27
Lição 15: Reorganizando Dados
.....................................................................................................................................................

Importando Metadados (continuação)
• A opção USERS pode ser especificada para comparar os nomes de usuário com os
   do arquivo de metadados. Caso contrário, os nomes de usuário serão extraídos do
   arquivo de exportação.
• As opções FROMUSER e TOUSER podem ser usadas para importar objetos de
   um esquema de origem para um esquema de destino.




.....................................................................................................................................................
15-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Transportando um Tablespace
.....................................................................................................................................................


Transportando um Tablespace

                         Transportando um Tablespace

         Sistema 1                                                                          Sistema 2

                                                  s980501.dmp
                                                  s980501.dmp
              /u/d1                                                                          /disk1
               /u/d2                                                                          /disk2


                     SALES_TS                                                    SALES_TS
                /u/d1/sales1.dbf
                /u/d1/sales1.dbf                                          /disk1/sales01.dbf
                                                                          /disk1/sales01.dbf

                 /u/d2/sales2.dbf
                 /u/d2/sales2.dbf                                         /disk2/sales02.dbf
                                                                          /disk2/sales02.dbf

            Somente
           Para Leitura
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Transportando um Tablespace
O slide mostra o transporte do tablespace SALES_TS do Sistema 1 para o
Sistema 2. O transporte requer que estas etapas sejam executadas:
 1 Coloque o tablespace no modo somente para leitura no banco de dados de origem
    do Sistema 1.
      SQL> ALTER TABLESPACE sales_ts READ ONLY;
 2 Exporte os metadados do tablespace do banco de dados de origem no Sistema 1.
      exp FILE=x980501.dmp TRANSPORT TABLESPACE=y 
      TABLESPACE=sales_ts TRIGGERS=n CONSTRAINTS=n
 3 Copie fisicamente os arquivos de dados do tablespace System 1 para System 2.
   Observe que os nomes de arquivo dos dados são alterados durante a cópia.
 4 Copie fisicamente o arquivo de exportação, s980501.dmp, do Sistema 1 para o
   Sistema 2.
 5 Importe os metadados do tablespace para o banco de dados de destino, usando os
   nomes de arquivo de dados fornecidos no Sistema 2.
      imp FILE=x980501.dmp TRANSPORT TABLESPACE=y 
      DATAFILES=(/disk1/sales01.dbf,/disk2/sales02.dbf)
 6 Os dados do tablespace SALES_TS estão disponíveis para consulta nos dois
      sistemas. O tablespace pode ser retornado ao modo leitura/gravação em um nó ou
      nos dois nós.
      SQL> ALTER TABLESPACE sales_ts READ WRITE;




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-29
Lição 15: Reorganizando Dados
.....................................................................................................................................................


Usos do Tablespace Transportável

                     Tablespaces Transportáveis: Usos


            •    Move dados de tablespace integrais
            •    Suporta recuperação de mídia
            •    Bancos de dados de origem e destino devem:
                   – Estar no mesmo sistema operacional
                   – Executar o Oracle8i, versão 8.1 ou superior
                   – Ter o mesmo tamanho de bloco
                   – Usar o mesmo conjunto de caracteres




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Uso
A recuperação de mídia é suportada através da operação de transporte. No caso de
danos de mídia, você pode usar um backup realizado antes de uma operação de
transporte de tablespace e fazer a recuperação para um momento posterior ao do
transporte do tablespace.
A coluna PLUGGED_IN em DBA_TABLESPACES será definida como YES após a
importação. Um tablespace associado deverá ser eliminado antes que seja efetuado
downgrade para versões anteriores. Você pode transportar o tablespace para outro
banco de dados Oracle8i para preservar dados ou usar Importar e Exportar.




.....................................................................................................................................................
15-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Tablespaces Transportáveis e Objetos de Esquema
.....................................................................................................................................................


Tablespaces Transportáveis e Objetos de Esquema

                           Tablespaces Transportáveis
                             e Objetos de Esquema
            •    Tablespaces transportados em uma execução
                 devem ser independentes:
                  – Todas as partições de uma tabela
                  – LOBs devem ser exportados com tabelas
            •    Os objetos a seguir não podem ser transportados:
                  – Tabelas que contêm tabelas aninhadas
                    e VARRAYs
                  – Índices de bitmap




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Conjuntos de Dados Independentes
O conjunto de tablespaces transportado em cada execução deve ser independente.
O tablespace a ser movido pode conter tabelas com LOBs e tipos de dados definidos
pelo usuário. Se uma tabela com uma coluna BFILE fizer parte de um tablespace
movido, o usuário precisará copiar os arquivos referenciados para o destino. Os
índices de bitmap e tabelas com VARRAYs ou tabelas aninhadas não podem ser
transportados.
O usuário é responsável por resolver as dependências entre objetos nos tablespaces
que são transportados e os tablespaces no banco de dados de destino.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-31
Lição 15: Reorganizando Dados
.....................................................................................................................................................


Verificando o Conjunto de Transporte

                 Verificando o Conjunto de Transporte

              Dicionário
                                                                                               Lista de
              de dados
                                                                                             tablespaces



                DBMS_TTS.TRANSPORT_SET_CHECK(
                   ts_list          => ’SALES_TS’,
                   incl_constraints => TRUE);


       Objetos com referências a objetos fora                                                  Verificar
       do conjunto de transporte para a tabela                                               integridade
       TRANSPORT_SET_VIOLATIONS                                                             de referência
                                                                                                            ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




DBMS_TTS.TRANSPORT_SET_CHECK
O procedimento PL/SQL DBMS_TTS.TRANSPORT_SET_CHECK pode ser usado
para verificar se um conjunto de tablespaces é independente. Esse procedimento aceita
dois argumentos IN:
• Uma lista de tablespaces separados por vírgulas.
• Um argumento booleano especificando se as restrições de integridade de
    referência devem ser verificadas ao determinar se o conjunto de tablespaces é
    independente.
O procedimento preenche a view TRANSPORT_SET_VIOLATIONS, indicando
quais objetos nos tablespaces especificados têm relacionamentos com objetos fora do
conjunto de tablespaces especificado.
O script dbmsplts.sql, que é executado por catproc.sql, cria o pacote
DBMS_TTS.

DBMS_TTS.ISSELFCONTAINED
A função DBMS_TTS.ISSELFCONTAINED retornará TRUE se o conjunto
transportável for independente; caso contrário, retornará FALSE. A função tem os
mesmos argumentos de TRANSPORT_SET_CHECK.




.....................................................................................................................................................
15-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................


Sumário

                                                    Sumário


            Nesta lição, você aprendeu como:
            •    Usar os utilitários Exportar e Importar para
                 reorganizar dados
            •    Mover dados usando tablespaces transportáveis




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Referência Rápida
Contexto                                                                        Referência
Parâmetros de inicialização                                                     Nenhum
Views de desempenho dinâmicas                                                   Nenhuma
Views de dicionário de dados                                                    Nenhuma
Comandos                                                                        sqlldr ou sqlload
UNIX                                                                            exp
                                                                                imp
Windows NT                                                                      EXP.EXE
                                                                                IMP.EXE
                                                                                SQLLDR.EXE
Procedimentos e funções empacotados                                             DBMS_TTS




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       15-33
Lição 15: Reorganizando Dados
.....................................................................................................................................................




.....................................................................................................................................................
15-34                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
16
             .................................




Gerenciando Recursos e
   Segurança de Senha
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................


Objetivos


                                                  Objetivos


            Após completar esta lição, você poderá fazer
            o seguinte:
            •    Gerenciar senhas usando perfis
            •    Administrar perfis
            •    Controlar o uso de recursos usando perfis
            •    Obter informações sobre perfis, gerenciamento de
                 senhas e recursos




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
16-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral


                                                       Perfis


         •    São conjuntos com nome de
              senha e limites de recurso
                                                                                Cotas de     Tablespace
         •    São atribuídos a usuários                                        tablespace      default

              pelo comando                                         Mecanismo
                                                                       de                             Tablespace
              CREATE USER                                         autenticação                        temporário
              ou ALTER USER                                                           Domínio de
                                                                                      segurança
         •    Podem ser ativados                                   Privilégios                            Bloqueio
                                                                  de atribuição
              ou desativados                                                                              de conta


         •    Podem se relacionar ao                                           Privilégios   Limites de
                                                                                diretos       recurso
              perfil DEFAULT


                                                                                                                ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que É um Perfil?
Um perfil é um conjunto definido dos seguintes limites de recurso e senha:
• Validade e expiração de senha
• Histórico da senha
• Verificação de complexidade da senha
• Bloqueio de conta
• Tempo de CPU
• Operações de E/S
• Tempo de inatividade
• Tempo de conexão
• Espaço na memória (área SQL privada para MTS somente)
• Sessões simultâneas
Após a criação de um perfil, o administrador do banco de dados pode atribuí-lo a cada
usuário. Se os limites de recurso estiverem ativados, o servidor Oracle limitará o uso e
os recursos do banco de dados ao perfil definido do usuário.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         16-3
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Perfil DEFAULT
Quando o banco de dados é criado, o servidor Oracle cria automaticamente um perfil
DEFAULT.
Os usuários aos quais não tenha sido atribuído um perfil específico obedecem todos os
limites do perfil DEFAULT. Todos os limites do perfil DEFAULT são inicialmente
ilimitados. Entretanto, o administrador do banco de dados pode alterar os valores para
que os limites sejam aplicados a todos os usuários por default.

Uso de Perfil
• Impedir usuários de executarem algumas operações que exigem uso intensivo de
  recursos.
• Assegurar que os usuários estabeleçam logoff no banco de dados quando tiverem
  deixado suas sessões inativas por algum tempo.
• Ativar limites de recurso de grupo para usuários semelhantes.
• Atribuir facilmente limites de recurso a usuários.
• Gerenciar a utilização de recursos em sistemas de bancos de dados grandes e
  complexos de vários usuários.
• Controlar o uso de senhas.

Características de Perfil
• As atribuições de perfil não afetam sessões atuais.
• É possível atribuir perfis somente a usuários e não a atribuições ou outros perfis.
• Se você não atribuir um perfil ao criar um usuário, o perfil DEFAULT será
   atribuído automaticamente ao usuário.




.....................................................................................................................................................
16-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................


Administrando Senhas


                             Gerenciamento de Senhas




                                           Histórico                     Bloqueio
                                           da senha                      de conta



                       Usuário                                                              Configurando
                                                                                               perfis


                                      Validade e                     Verificação
                                     expiração de                     de senha
                                        senha


                                                                                                           ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Recursos do Gerenciamento de Senhas
Para maior controle sobre a segurança de banco de dados, o gerenciamento de senhas
Oracle é controlado pelos administradores de banco de dados com perfis.
Esta lição descreve os recursos disponíveis de gerenciamento de senhas:
• Bloqueio de conta: Permite o bloqueio automático de uma conta quando um
   usuário não conseguir estabelecer login no sistema após um determinado número
   de tentativas.
• Validade e expiração de senha: Permite que a senha tenha um período de vida útil,
   após o qual ela expira e deve ser alterada.
• Histórico da senha: Verifica a nova senha para garantir que ela não seja reutilizada
   durante um período especificado ou número especificado de alterações de senha.
• Verificação da complexidade da senha: Efetua uma verificação de complexidade
   na senha para confirmar se ela é suficientemente complexa para oferecer proteção
   contra a invasão do sistema por meio de pessoas que tentem adivinhar a senha.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         16-5
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                 Ativando Gerenciamento de Senhas


            •    Configure o gerenciamento de senhas usando
                 perfis e atribuindo-os a usuários.
            •    Bloqueie, desbloqueie e expire contas com o
                 comando CREATE USER ou ALTER USER.
            •    Limites de senha são sempre impostos.




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Ativar o Gerenciamento de Senhas
Crie o perfil para limitar as definições de senha e atribua-o ao usuário com o comando
CREATE USER ou ALTER USER.
As definições de limite de senha em perfis são sempre impostas.
Quando o gerenciamento de senha está ativado, a conta do usuário pode ser bloqueada
ou desbloqueada com o comando CREATE USER ou ALTER USER.
Observação: O comando CREATE USER será abordado na lição "Gerenciando
Usuários".




.....................................................................................................................................................
16-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................




                           Bloqueio de Conta de Senha

            Parâmetro                                   Descrição

            FAILED_LOGIN_ATTEMPTS Número de tentativas falhas de login
                                  antes da paralisação da conta

            PASSWORD_LOCK_TIME                          Número de dias em que a
                                                        conta permanece bloqueada ao
                                                        expirar a senha




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Bloqueio de Conta
O servidor Oracle bloqueia automaticamente uma conta após o valor de
FAILED_LOGIN_ATTEMPTS ser alcançado. A conta será automaticamente
desbloqueada após um período especificado (PASSWORD_LOCK_TIME) ou
precisará ser desbloqueada pelo administrador do banco de dados com o comando
ALTER USER.
A conta do banco de dados pode ser bloqueada explicitamente com o comando
ALTER USER. Quando isso acontece, a conta não é desbloqueada automaticamente.
Observação: O comando ALTER USER será demonstrado posteriormente nesta lição.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         16-7
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                         Validade e Expiração de Senha

             Parâmetro                                   Descrição

             PASSWORD_LIFE_TIME                          Período de vida útil em dias da
                                                         senha após o qual ela expira

             PASSWORD_GRACE_TIME Período de tolerância em dias para
                                 alterar a senha após o primeiro login
                                 bem-sucedido depois da expiração
                                 da senha




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Validade e Expiração de Senha
O parâmetro PASSWORD_LIFE_TIME define o período máximo de vida útil após o
qual a senha precisa ser alterada.
O administrador do banco de dados pode especificar um período de tolerância
(PASSWORD_GRACE_TIME), que inicia após a primeira tentativa de estabelecer
login no banco de dados depois da expiração da senha. Será gerada uma mensagem de
aviso a cada vez que o usuário tentar estabelecer login até terminar o período de
tolerância. O usuário deve alterar a senha durante o período de tolerância.
Se a senha não for alterada, a conta será bloqueada.
O status da conta do usuário será alterado para EXPIRED se você definir
explicitamente a senha como expirada. Isto é, quando o usuário estabelecer login, a
conta entrará no período de tolerância. Isso é útil, por exemplo, quando é criada uma
nova conta.




.....................................................................................................................................................
16-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................




              Controlando Bloqueio de Conta e Senha




                   ALTER USER hanne
                   IDENTIFIED BY rue
                   ACCOUNT UNLOCK;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Controlando Bloqueio de Conta e Senha
Você pode usar o comando ALTER USER para alterar a senha e controlar bloqueio
de conta. Estas são algumas das situações em que isso pode ser útil:
• Para redefinir a senha quando ela for esquecida pelo usuário.
• Para desbloquear uma conta de usuário que tenha sido bloqueada pelo sistema.
• Para bloquear uma conta explicitamente.
• Para expirar uma senha manualmente. Esse cláusula é útil ao redefinir senhas de
    usuário.

Sintaxe
Use o comando a seguir nessas situações:
      ALTER USER user
      [ IDENTIFIED {BY password | EXTERNALLY }]
      [ PASSWORD EXPIRE]
      [ ACCOUNT {LOCK | UNLOCK }] ;
Alterações de senha, expiração e bloqueios não afetarão a sessão atual se o usuário
já estiver com login estabelecido. Eles estarão vigorando somente para sessões
subseqüentes.
Quando uma conta de usuário é bloqueada e o usuário tenta se conectar, é exibida a
seguinte mensagem:
    ERROR: ORA-28000: the account is locked
      Warning: You are no longer connected to ORACLE.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         16-9
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Controlar Bloqueio de
Conta e Senha
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
    Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
    DBA Management Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Users (Usuários) na árvore do navegador.
 4 Selecione o nome de usuário.
Se estiver alterando bloqueio de conta ou expirando senha:
 5 Selecione Object (Objeto) —> Change Account Status (Alterar Status de Conta).
 6 Escolha Unlock, Lock, or Expire Password (Desbloquear, Bloquear ou
    Expirar Senha).




Se estiver alterando senha ou modo de autenticação:
 7 Informe os detalhes na página General (Geral) da folha de propriedades.
 8 Clique em Apply (Aplicar)




.....................................................................................................................................................
16-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................




                                       Histórico de Senha

            Parâmetro                                    Descrição

            PASSWORD_REUSE_TIME                          Número de dias antes que uma
                                                         senha possa ser reutilizada

            PASSWORD_REUSE_MAX                           Número máximo de vezes que
                                                         uma senha pode ser reutilizada




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Histórico de Senha
O histórico de senha garante que um usuário não possa reutilizar uma senha durante
um intervalo de tempo especificado. Essas verificações podem ser implementadas com
um dos seguintes parâmetros:
• PASSWORD_REUSE_TIME para especificar que o usuário não possa reutilizar
   uma senha durante um determinado número de dias.
• PASSWORD_REUSE_MAX para forçar um usuário a definir uma senha que não
   seja idêntica a senhas anteriores.
Quando um parâmetro é definido com um valor diferente de DEFAULT ou
UNLIMITED, o outro parâmetro precisa ser definido como UNLIMITED.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-11
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                                    Verificação de Senha


          Parâmetro                                          Descrição

          PASSWORD_VERIFY_FUNCTION Função PL/SQL que verifica a
                                   complexidade de uma senha
                                   antes de ela ser atribuída




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Verificação de Senha
Antes de atribuir uma nova senha a um usuário, é possível chamar uma função
PL/SQL para verificar a validade da senha.
O servidor Oracle fornece uma rotina de verificação default ou o administrador do
banco de dados poderá gravar uma função PL/SQL.




.....................................................................................................................................................
16-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................




             Função de Senha Fornecida Pelo Usuário


            A função deve ser criada no esquema SYS e
            precisa ter a seguinte especificação:

             nome_fução(
                 parâmetro_idusuário IN VARCHAR2(30),
                 parâmetro_senha IN VARCHAR2(30),
                 antiga_parâmetro_senha IN VARCHAR2(30))
             RETURN BOOLEAN




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Definir uma Função Para Verificar uma Senha
Quando uma nova função de verificação de senha for adicionada, o administrador do
banco de dados deve considerar as seguintes restrições:
• O procedimento precisa usar a especificação indicada no slide.
• O procedimento retornará o valor TRUE para êxito e FALSE para falha.
• Se a função de senha criar uma exceção, será retornado um erro e o comando
   ALTER USER ou CREATE USER será encerrado.
• A função de senha pertence a SYS.
• Se a função de senha ficar inválida, será retornada uma mensagem de erro e o
   comando ALTER USER ou CREATE USER será encerrado.
Observação: O comando CREATE USER será abordado na lição
"Gerenciando Usuários".




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-13
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                       Função de Verificação de Senha
                            VERIFY_FUNCTION

            •    Comprimento mínimo de quatro caracteres.
            •    Senha não deve ser igual ao nome de usuário.
            •    Senha deve ter pelo menos um caractere
                 alfabético, um numérico e um especial.
            •    Senha deve diferir da senha anterior em pelo
                 menos três letras.




                                                                                   Verificação
                                                                                    de senha
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




A Função de Verificação Default
O servidor Oracle fornece uma função de verificação de complexidade, na forma
de uma função PL/SQL default chamada VERIFY_FUNCTION do script
utlpwdmg.sql, que deve ser executado no esquema SYS.
Durante a execução do script utlpwdmg.sql, o servidor Oracle cria
VERIFY_FUNCTION e altera o perfil DEFAULT com o seguinte comando
ALTER PROFILE:
      ALTER PROFILE DEFAULT LIMIT
      PASSWORD_LIFE_TIME 60
      PASSWORD_GRACE_TIME 10
      PASSWORD_REUSE_TIME 1800
      PASSWORD_REUSE_MAX UNLIMITED
      FAILED_LOGIN_ATTEMPTS 3
      PASSWORD_LOCK_TIME 1/1440
      PASSWORD_VERIFY_FUNCTION verify_function;




.....................................................................................................................................................
16-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................




                                       Criando um Perfil:
                                      Definições de Senha


               CREATE PROFILE grace_5 LIMIT
                 FAILED_LOGIN_ATTEMPTS 3
                 PASSWORD_LOCK_TIME UNLIMITED
                 PASSWORD_LIFE_TIME 30
                 PASSWORD_REUSE_TIME 30
                 PASSWORD_VERIFY_FUNCTION verify_function
                 PASSWORD_GRACE_TIME 5;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Criar um Perfil
Use o seguinte comando CREATE PROFILE para administrar senhas:
      CREATE PROFILE profile LIMIT
            [FAILED_LOGIN_ATTEMPTS                                       max_value]
            [PASSWORD_LIFE_TIME                                         max_value]
            [ {PASSWORD_REUSE_TIME
                |PASSWORD_REUSE_MAX}                                    max_value]
            [ACCOUNT_LOCK_TIME                                          max_value]
            [PASSWORD_GRACE_TIME                                        max_value]
            [PASSWORD_VERIFY_FUNCTION
              {function|NULL|DEFAULT} ]


onde:              profile        é o nome do perfil a ser criado
                   FAILED_LOGIN_ATTEMPTS
                                  especifica o número de tentativas
                                  malsucedidas de estabelecer login na conta
                                  do usuário antes de a conta ser bloqueada




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-15
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Criar um Perfil (continuação)
        PASSWORD_LIFE_TIME
                            limita o número de dias em que a mesma
                            senha pode ser usada para autenticação.
                            A senha expirará se não for alterada nesse
                            período e conexões posteriores serão
                            rejeitadas.
        PASSWORD_REUSE_TIME
                            especifica o número de dias antes dos quais
                            uma senha não pode ser reutilizada. Se você
                            definir PASSWORD_REUSE_TIME
                            como um valor inteiro, deverá definir
                            PASSWORD_REUSE_MAX como
                            UNLIMITED.
        PASSWORD_REUSE_MAX
                            especifica o número de alterações de senha
                            necessárias antes que a senha atual possa
                            ser reutilizada. Se você definir
                            PASSWORD_REUSE_MAX como um
                            valor inteiro, deverá definir
                            PASSWORD_REUSE_TIME como
                            UNLIMITED.
        PASSWORD_LOCK_TIME
                            especifica o número de dias durante os
                            quais uma conta ficará bloqueada após o
                            número especificado de tentativas
                            consecutivas de login malsucedidas.
        PASSWORD_GRACE_TIME
                            especifica o número de dias após o início
                            do período de tolerância durante o qual será
                            emitido um aviso e o login será permitido.
                            Se a senha não for alterada durante o
                            período de tolerância, ela expirará.
        PASSWORD_VERIFY_FUNCTION
                            permite que um script de verificação de
                            complexidade de senha PL/SQL seja
                            passado como um argumento para a
                            instrução CREATE PROFILE.




.....................................................................................................................................................
16-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Administrando Senhas
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Criar um Perfil
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Selecione a pasta Profiles (Perfis) e selecione Object (Objeto) —> Create (Criar).
 4 Selecione Profile (Perfil) na lista e clique em Create.
 5 Selecione a guia Password (Senha) e informe os parâmetros de senha de conta.




 6 Clique em Create (Criar).

Atribuindo um Perfil
Você pode atribuir um perfil com o comando CREATE USER ou o comando ALTER
USER. A cada usuário, é possível atribuir somente um perfil de cada vez.
Observação: O comando CREATE USER será abordado na lição "Gerenciando
Usuários".




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-17
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Atribuir um Perfil
a um Usuário
Para gerar o comando ALTER USER com o Oracle Enterprise Manager, utilize as
seguintes etapas:
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Profiles (Perfis).
 4 Selecione um perfil.
 5 Selecione Object (Objeto) —> Assign a Profile to User(s) (Atribuir um
   Perfil a Usuários).
 6 Na lista Assign Profile (Atribuir Perfil), selecione o usuário.




 7 Clique em Ok.




.....................................................................................................................................................
16-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Alterando e Eliminando um Perfil
.....................................................................................................................................................


Alterando e Eliminando um Perfil


                                      Alterando um Perfil


              ALTER PROFILE default
              ALTER PROFILE default
              FAILED_LOGIN_ATTEMPTS 3
              FAILED_LOGIN_ATTEMPTS 3
              PASSWORD_LIFE_TIME 60
              PASSWORD_LIFE_TIME 60
              PASSWORD_GRACE_TIME 10;
              PASSWORD_GRACE_TIME 10;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Alterando um Perfil
Use o comando ALTER PROFILE para alterar os limites de senha atribuídos a um
perfil:
      ALTER PROFILE profile LIMIT
            [FAILED_LOGIN_ATTEMPTS                                       max_value]
            [PASSWORD_LIFE_TIME                                         max_value]
            [ {PASSWORD_REUSE_TIME
                |PASSWORD_REUSE_MAX}                                    max_value]
            [ACCOUNT_LOCK_TIME                                          max_value]
            [PASSWORD_GRACE_TIME                                        max_value]
            [PASSWORD_VERIFY_FUNCTION
              {function|NULL|DEFAULT} ]
Se desejar definir os parâmetros de senha para menos de um dia:
1 hora         PASSWORD_LOCK_TIME = 1/24
10 minutos     PASSWORD_LOCK_TIME = 10/1400
5 minutos      PASSWORD_LOCK_TIME = 5/1440




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-19
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Alterar um Perfil
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Profiles (Perfis).
 4 Selecione o perfil.
 5 Na guia Password (Senha), altere os detalhes nos parâmetros de senha.




 6 Clique em Apply (Aplicar).

Diretrizes
As alterações em um perfil não afetam a sessão atual. As alterações serão usadas
somente em sessões subseqüentes.




.....................................................................................................................................................
16-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Alterando e Eliminando um Perfil
.....................................................................................................................................................




                                    Eliminando um Perfil


              DROP PROFILE developer_prof;
              DROP PROFILE developer_prof;




              DROP PROFILE developer_prof CASCADE;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Eliminando um Perfil
Elimine um perfil usando o comando DROP PROFILE:
      DROP PROFILE profile [CASCADE]
onde:              profile                                    é o nome do perfil a ser eliminado
                   CASCADE                                    revoga o perfil de usuários aos quais ele
                                                              esteja atribuído. (O servidor Oracle
                                                              atribuirá automaticamente o perfil
                                                              DEFAULT a esses usuários. Especifique
                                                              essa opção para eliminar um perfil que
                                                              esteja atualmente atribuído a usuários.)

Diretrizes
• O perfil DEFAULT não pode ser eliminado.
• Ao ser eliminado um perfil, essa alteração se aplica somente a sessões criadas
   posteriormente e não a sessões atuais.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-21
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Eliminar um Perfil
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Profiles (Perfis).
 4 Selecione o perfil.
 5 Selecione Object (Objeto) —> Remove (Remover).




 6 Clique em OK.




.....................................................................................................................................................
16-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando o Uso dos Recursos
.....................................................................................................................................................


Controlando o Uso dos Recursos


                       Gerenciando Recursos com Perfis



                  1. Crie perfis com o comando CREATE PROFILE
                  2. Atribua perfis ao usuário com os comandos
                     CREATE ou ALTER USER
                  3. Ative limites de recurso com o:
                        – Parâmetro de inicialização
                            RESOURCE_LIMIT
                        – Comando ALTER SYSTEM




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Etapas Para Utilização de Limites de Recurso
Use as seguintes etapas para controlar o uso de recursos com perfis:
 1 Crie um perfil com o comando CREATE PROFILE para determinar os limites de
   recurso de senha.
 2 Atribua perfis com o comando CREATE USER ou ALTER USER.
 3 Imponha limites de recurso com o comando ALTER SYSTEM ou editando o
   arquivo de parâmetros de inicialização (e interrompendo e reiniciando a instância).
Essas etapas serão abordadas detalhadamente na próxima seção.
Observação: A imposição de limites de recurso não é necessária para ativar o
gerenciamento de senha Oracle.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-23
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                          Definindo Limites de Recurso
                               em Nível de Sessão
              Recurso                                     Descrição
              CPU_PER_SESSION                             Tempo total de CPU medido em
                                                          centésimos de segundos
              SESSIONS_PER_USER                           No. de sessões simultâneas
                                                          permitidas por nome de usuário
              CONNECT_TIME                                Tempo de conexão decorrido
                                                          medido em minutos
              IDLE_TIME                                   Períodos de inatividade
                                                          medidos em minutos
              LOGICAL_READS_PER                           Número de blocos de dados
              _SESSION                                    (leituras físicas e lógicas)
              PRIVATE_SGA                                 Espaço privado na SGA
                                                          medido em bytes
                                                          (para MTS somente)
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Limites em Nível de Chamada e em Nível de Sessão
Os limites de perfil podem ser impostos em nível de sessão, nível de chamada
ou ambos. Os limites em nível de sessão são impostos para cada conexão.
Quando um limite em nível de sessão é excedido:
• É retornada uma mensagem de erro, por exemplo:
    ORA-02391: exceeded simultaneous SESSION_PER_USER limit (excedido
    o limite de SESSION_PER_USER simultâneo).
• O servidor Oracle desconecta o usuário.
Os limites em nível de chamada são impostos para cada chamada feita durante
a execução de uma instrução SQL.
Quando um limite em nível de chamada é excedido:
• O processamento da instrução é paralisado.
• É efetuado rollback da instrução.
• Todas as instruções anteriores permanecem intactas.
• A sessão do usuário permanece conectada.




.....................................................................................................................................................
16-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando o Uso dos Recursos
.....................................................................................................................................................




                          Definindo Limites de Recurso
                              em Nível de Chamada


           Recurso                                          Descrição

           CPU_PER_CALL                                     Tempo de CPU por chamada em
                                                            centésimos de segundo

           LOGICAL_READS_PER _CALL Número de blocos de dados que
                                   podem ser lidos por chamada




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Diretrizes
• IDLE_TIME é calculado somente para o processo de servidor. Ele não leva em
   consideração atividade de aplicação. O limite IDLE_TIME não é afetado por
   execuções longas de consultas e outras operações.
• LOGICAL_READS_PER_SESSION é uma limitação sobre o número total de
   leituras tanto da memória como do disco. Isso pode ser feito para garantir que
   nenhuma instrução completa de E/S poderá se acumular na memória e obstruir
   o disco.
• PRIVATE_SGA se aplica somente ao executar a arquitetura MTS (multithreaded
   server - servidor multithread) e pode ser especificado em M ou K.
Observação: A arquitetura MTS será abordada no curso Enterprise DBA Part 3:
Network Administration.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-25
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................




                                        Criando um Perfil:
                                        Limite de Recurso


                  CREATE PROFILE developer_prof LIMIT
                    SESSIONS_PER_USER 2
                    CPU_PER_SESSION 10000
                      IDLE_TIME 60
                      CONNECT_TIME 480;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




A Sintaxe do Comando CREATE PROFILE
Crie um perfil usando o seguinte comando CREATE PROFILE:
      CREATE PROFILE profile LIMIT
             [SESSIONS_PER_USER                                           max_value]
             [CPU_PER_SESSION                                             max_value]
             [CPU_PER_CALL                                               max_value]
             [CONNECT_TIME                                               max_value]
             [IDLE_TIME                                                 max_value]
             [LOGICAL_READS_PER_SESSION max_value]
             [LOGICAL_READS_PER_CALL                                       max_value]
             [COMPOSITE_LIMIT                                             max_value]
             [PRIVATE_SGA                                                max_bytes]
onde:
                profile                               é o nome do perfil
                max_value                             é um número inteiro, UNLIMITED ou
                                                      DEFAULT
                max_bytes                             é um número inteiro opcionalmente seguido por K ou M,
                                                      UNLIMITED ou DEFAULT




.....................................................................................................................................................
16-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando o Uso dos Recursos
.....................................................................................................................................................

A Sintaxe do Comando CREATE PROFILE (continuação)
         UNLIMITED                indica que um usuário a quem foi atribuído
                                  esse perfil pode usar uma quantidade
                                  ilimitada desse recurso
         DEFAULT                  indica que esse perfil está sujeito ao limite
                                  desse recurso, conforme especificado no
                                  perfil DEFAULT
         COMPOSITE_LIMIT limita o custo total de recursos de uma
                                  sessão expresso em unidades de serviço. A
                                  Oracle calcula o custo do recurso como a
                                  soma ponderada de:
                                  CPU_PER_SESSION
                                  CONNECT_TIME
                                  LOGICAL_READS_PER_SESSION
                                  PRIVATE_SGA
Observação: A view de dicionário de dados RESOURCE_COST fornece os pesos
atribuídos a diferentes recursos.
Para obter informações sobre como especificar o peso de cada recurso da sessão,
consulte o comando ALTER RESOURCE COST no SQL Reference Guide.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-27
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Criar um Perfil
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Selecione a pasta Profiles (Perfis) e selecione Object (Objeto) —> Create (Criar).
 4 Selecione Profile (Perfil) na lista e clique em Create.
 5 Informe os parâmetros do recurso.




 6 Clique em Create (Criar).




.....................................................................................................................................................
16-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando o Uso dos Recursos
.....................................................................................................................................................




                           Ativando Limites de Recurso



            •    Defina o parâmetro de inicialização
                 RESOURCE_LIMIT como TRUE
            •    Imponha os limites de recurso ativando o
                 parâmetro com o comando ALTER SYSTEM
                  ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
                  ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Controlando a Imposição de Limites de Recurso
Ative ou desative a imposição de limites de recurso alterando o parâmetro de
inicialização RESOURCE_LIMIT ou usando o comando ALTER SYSTEM.

Parâmetro de Inicialização RESOURCE_LIMIT
• Para ativar ou desativar a imposição de limites de recurso, altere esse parâmetro no
   arquivo de reinicialização e reinicie a instância.
• Um valor TRUE ativa a imposição.
• Um valor FALSE desativa a imposição (default).
• Use esse parâmetro para ativar a imposição quando o banco de dados puder ser
   desativado.

Comando ALTER SYSTEM
• Para ativar ou desativar a imposição de limites de recurso para uma instância, use o
  comando ALTER SYSTEM.
• A definição especificada com o comando ALTER SYSTEM permanecerá em
  vigor até ser alterada novamente ou até o banco de dados ser desativado.
• Use esse comando para ativar ou desativar a imposição quando o banco de dados
  não puder ser desativado.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-29
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................


Exibindo Informações de Senha e Limites de Recurso

                             Exibindo Informações de
                            Senha e Limites de Recurso
            •    DBA_USERS
                   – profile (perfil)
                   – username (nome_usuário)
                   – account_status (status_conta)
                   – lock_date (data_bloqueio)
                   – expiry_date (data_expiração)
            •    DBA_PROFILES
                   – profile (perfil)
                   – resource_name (nome_recurso)
                   – resource_type (tipo_recurso)
                     (PASSWORD, KERNEL)
                   – limit (limite)
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Exibindo Informações de Usuário
Use DBA_USERS para obter informações sobre datas de expiração e bloqueio, e
status de conta.
      SQL> SELECT username, password, account_status,
           2     lock_date, expiry_date
           3     FROM dba_users;
      USERNAME PASSWORD                                                   ACCOUNT_STATUS                LOCK_DATE              EXPIRY_DA
      -------- ------------------- --------------- ---------- -------
      SYS                 8A8F025737A9097A                                OPEN
      SYSTEM              D4DF7931AB130E37                                OPEN
      BOB                 3B2BC8EE81975F69                                OPEN
      OUTLN               4A3BA55E08595C81                                OPEN
      DBSNMP              E066D214D5421CCC                                OPEN
      TODD                BB69FBB77CFA6B9A                                OPEN
      KAY                 957C7EF29CC223FC                                LOCKED                        24-JUN-99
      SCOTT               F894844C34402B67                                OPEN                                                 10-JUL-99




.....................................................................................................................................................
16-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exibindo Informações de Senha e Limites de Recurso
.....................................................................................................................................................

Exibindo Informações de Perfil
Consulte a view DBA_PROFILES para exibir as informações de perfil de senha:
      SQL> SELECT * FROM dba_profiles
          2      WHERE resource_type='PASSWORD'
          3      AND profile=’GRACE_5’;


      PROFILE RESOURCE_NAM                                                        RESOURCE                         LIMIT
      ------- ------------------------                                            --------               ---------
      GRACE_5 FAILED_LOGIN_ATTEMPTS                                               PASSWORD                                   3
      GRACE_5 PASSWORD_LIFE_TIME                                                  PASSWORD                               30
      GRACE_5 PASSWORD_REUSE_TIME                                                 PASSWORD                                30
      GRACE_5 PASSWORD_REUSE_MAX                                                  PASSWORD               UNLIMITED
      GRACE_5 PASSWORD_VERIFY_FUNCTION                                            PASSWORD                     DEFAULT
      GRACE_5 PASSWORD_LOCK_TIME                                                  PASSWORD               UNLIMITED
      GRACE_5 PASSWORD_GRACE_TIME                                                 PASSWORD                                   5
Junte as views de dicionário de dados DBA_USERS e DBA_PROFILES para exibir
os limites de recurso do usuário SCOTT.
      SQL> SELECT p.profile, p.resource_name, p.limit
              2 FROM dba_users u, dba_profiles p
              3 WHERE p.profile=u.profile AND
              4 username=’SCOTT’ AND
              5 p.resource_type=’KERNEL’;
      PROFILE                              RESOURCE_NAME                                                        LIMIT
      ---------------                      --------------------------                                     --------
      DEVELOPER_PROF                       COMPOSITE_LIMIT                                                  DEFAULT
      DEVELOPER_PROF                       SESSIONS_PER_USER                                                             2
      DEVELOPER_PROF                       CPU_PER_SESSION                                                      10000
      DEVELOPER_PROF                       CPU_PER_CALL                                                     DEFAULT
      DEVELOPER_PROF                       LOGICAL_READS_PER_SESSION                                        DEFAULT
      DEVELOPER_PROF                       LOGICAL_READS_PER_CALL                                           DEFAULT
      DEVELOPER_PROF                       IDLE_TIME                                                                   60
      DEVELOPER_PROF                       CONNECT_TIME                                                              480
      DEVELOPER_PROF                       PRIVATE_SGA                                                      DEFAULT




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       16-31
Lição 16: Gerenciando Recursos e Segurança de Senha
.....................................................................................................................................................


Sumário


                                                    Sumário


            Nesta lição, você aprendeu como:
            •    Administrar senhas
            •    Administrar perfis
            •    Administrar limites de recurso




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Referência Rápida
 Contexto                                                                       Referência
 Parâmetros de inicialização                                                    RESOURCE_LIMIT
 Views de desempenho dinâmicas                                                  Nenhuma
 Views de dicionário de dados                                                   DBA_PROFILES
                                                                                DBA_USERS
 Comandos                                                                       CREATE PROFILE
                                                                                ALTER PROFILE
                                                                                DROP PROFILE
                                                                                ALTER USER
 Procedimentos e funções armazenados                                            VERIFY_FUNCTION




.....................................................................................................................................................
16-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
17
           .................................




Gerenciando Usuários
Lição 17: Gerenciando Usuários
.....................................................................................................................................................


Objetivos


                                                  Objetivos


            Após completar esta lição, você poderá fazer
            o seguinte:
            •     Criar novos usuários de banco de dados
            •     Alterar e eliminar usuários de banco de dados
                  existentes
            •     Monitorar informações sobre usuários existentes




                                                                                                         ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
17-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral

                                   Usuários e Segurança

                                            Bloqueio              Tablespace
                                            de conta                default


                            Mecanismo
                                de                                               Tablespace
                           autenticação                                          temporário
                                                      Domínio de
                                                      segurança
                            Privilégios
                                                                                   Cotas de
                                de
                                                                                  tablespace
                            atribuição


                                            Privilégios            Limites de
                                             diretos                recursos


                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Domínio de Segurança
O administrador de banco de dados define os nomes dos usuários que têm permissão
para acessar um banco de dados. Um domínio de segurança estabelece as definições
que se aplicam ao usuário.

Mecanismo de Autenticação
Um usuário que precisa ter acesso ao banco de dados pode ser autenticado por um dos
elementos a seguir:
• Banco de dados
• Sistema operacional
• Rede
O meio de autenticação é especificado no momento em que o usuário é definido no
banco de dados e pode ser alterado posteriormente. Esta lição aborda apenas a
autenticação através do banco de dados e do sistema operacional.
Observação
• Consulte a autenticação do S/O usando atribuições na lição "Conceitos Básicos do
    Oracle".
• A autenticação por rede será abordada no curso Enterprise DBA
    Part 3: Network Administration.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         17-3
Lição 17: Gerenciando Usuários
.....................................................................................................................................................

Cotas de Tablespace
As cotas de tablespace controlam a quantidade de espaço de armazenamento físico
alocado para um usuário nos tablespaces do banco de dados.

Tablespace Default
O tablespace default define a localização onde os segmentos criados por um usuário
serão armazenados se o usuário não especificar explicitamente um tablespace no
momento que o segmento for criado.

Tablespace Temporário
O tablespace temporário define onde as extensões serão alocadas pelo servidor Oracle
se o usuário executar uma operação que exija gravar dados de classificação no disco.

Bloqueio de Contas
As contas podem ser bloqueadas para impedir que um usuário estabeleça logon no
banco de dados. Isso pode ser definido para ocorrer automaticamente, ou o
administrador de banco de dados pode bloquear ou desbloquear contas manualmente.

Limites de Recursos
Podem ser estabelecidos limites para o uso de recursos, como hora da CPU, E/S lógica
e número de sessões abertas pelo usuário. Os limites de recursos serão abordados no
curso Oracle Enterprise DBA Part 2: Performance and Tuning.

Privilégios Diretos
Os privilégios são usados para controlar as ações que um usuário pode executar em um
banco de dados.

Privilégios de Atribuições
Um usuário pode ter privilégios concedidos indiretamente através do uso de
atribuições.
Os privilégios concedidos diretamente e através de atribuições serão abordados nas
lições "Gerenciando Privilégios" e "Gerenciando Atribuições".
Esta lição aborda a definição de um usuário com o mecanismo de autenticação
apropriado, limitando o uso de espaço pelos usuários no sistema e controlando
manualmente o bloqueio de contas.




.....................................................................................................................................................
17-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................




                          Esquema de Banco de Dados

                             Tabelas
                             Gatilhos
                             Restrições
                             Índices
                             Views
                             Seqüências
                             Unidades de programa armazenado
                             Sinônimos
                             Tipos de dados definidos pelo
                             usuário
                             Vínculos de banco de dados




                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que É um Esquema?
Um esquema é um conjunto determinado de objetos, como tabelas, views, clusters,
procedimentos e pacotes, associados a um usuário em particular. Quando o usuário de
um banco de dados for criado, um esquema correspondente com o mesmo nome será
criado para esse usuário. Um usuário pode ser associado apenas a um esquema do
mesmo nome e, portanto, nome_de_usuário e esquema são em geral usados de
maneira alternada.
O slide mostra alguns objetos que os usuários podem possuir em um banco
de dados Oracle.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         17-5
Lição 17: Gerenciando Usuários
.....................................................................................................................................................


Criando Novos Usuários de Banco de Dados


               Lista de Verificação Para Criar Usuários


                1. Escolha um nome de usuário e um mecanismo
                   de autenticação.
                2. Identifique os tablespaces nos quais o usuário
                   precisa armazenar objetos.
                3. Decida sobre as cotas para cada tablespace.
                4. Atribua um tablespace default e um temporário.
                5. Crie um usuário.
                6. Conceda privilégios e atribuições ao usuário.



                                                                                                         ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
17-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Criando Novos Usuários de Banco de Dados
.....................................................................................................................................................




                         Criando um Novo Usuário:
                      Autenticação de Banco de Dados


                       Defina a senha inicial:

                        CREATE USER peter
                        IDENTIFIED BY my1stson
                        DEFAULT TABLESPACE data
                        TEMPORARY TABLESPACE temp
                        QUOTA 15m ON data
                        PASSWORD EXPIRE;




                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use o comando a seguir para criar um novo usuário:
      CREATE USER user
      IDENTIFIED {BY password | EXTERNALLY}
      [ DEFAULT TABLESPACE tablespace ]
      [ TEMPORARY TABLESPACE tablespace ]
      [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace
            [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace ] ...]
      [ PASSWORD EXPIRE ]
      [ ACCOUNT { LOCK | UNLOCK }]
      [ PROFILE { profile | DEFAULT }]
onde:              user                                          é o nome do usuário
                   BY password                                   especifica que o usuário será autenticado
                                                                 pelo banco de dados e precisará fornecer
                                                                 uma senha quando estabelecer logon
                   EXTERNALLY                                    especifica que o usuário será autenticado
                                                                 pelo sistema operacional
                   GLOBALLY AS                                   especifica que o usuário será autenticado
                   external_name                                 globalmente pelo nome externo
                                                                 especificado




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         17-7
Lição 17: Gerenciando Usuários
.....................................................................................................................................................

Sintaxe (continuação)

           DEFAULT TEMPORARY TABLESPACE
                                    identifica o tablespace default ou
                                    temporário para o usuário
           QUOTA                    define o espaço máximo permitido para
                                    os objetos que pertencem ao usuário no
                                    tablespace tablespace (Quota pode ser
                                    definido como um integer (número
                                    inteiro) de bytes ou kilobytes e
                                    megabytes. A palavra-chave
                                    UNLIMITED é usada para especificar
                                    que os objetos de propriedade do usuário
                                    podem utilizar todo o espaço que estiver
                                    disponível no tablespace. Por default,
                                    nenhum usuário possui cotas em qualquer
                                    tablespace.)
           PASSWORD EXPIRE força o usuário a redefinir a senha quando
                                    o usuário estabelece logon no banco de
                                    dados usando SQL Plus. (Essa opção é
                                    válida apenas se o usuário for autenticado
                                    pelo banco de dados.)
           ACCOUNT LOCK/ UNLOCK
                                    pode ser usado para bloquear ou
                                    desbloquear a conta do usuário
                                    explicitamente (UNLOCK é o default.)
           PROFILE                  é usado para controlar a utilização de
                                    recursos e especificar o mecanismo de
                                    controle de senha a ser usado para o
                                    usuário
Observação: Os perfis serão abordados na lição "Gerenciando Perfis".
É obrigatório haver um método de autenticação de senha. Se uma senha for
especificada, ela será mantida pelo servidor Oracle no dicionário de dados. Os
mecanismos de controle de senha fornecidos pelo servidor Oracle ficam disponíveis
quando os usuários são autenticados pelo servidor.




.....................................................................................................................................................
17-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Criando Novos Usuários de Banco de Dados
.....................................................................................................................................................

Sintaxe (continuação)
Depois que a validade da senha for definida, quando o usuário estabelecer logon
usando SQL Plus, a mensagem a seguir será exibida no momento de logon e o usuário
será solicitado a informar uma nova senha:
      ERROR:
      ORA-28001: the account has expired
      Changing password for PETER
      Old password:
      New password:
      Retype new password:
      Password changed




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         17-9
Lição 17: Gerenciando Usuários
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Criar um Novo Usuário
 1 Inicialize o Security Manager e conecte-se diretamente ao banco de dados
   Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
   DBA Management Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Selecione a pasta Users (Usuários) e selecione Create from the right mouse menu
   (Criar com menu do botão direito do mouse).
 4 Especifique as informações de usuário na página General (Geral) da folha de
   propriedades.




 5 Especifique as cotas usando a página Quotas (Cotas).
 6 Clique em Create (Criar).
Selecione um usuário e, em seguida, Object (Objeto) —> Create Like (Criar Como) na
barra de menus para criar um usuário com as mesmas cotas e os privilégios de um
usuário de banco de dados existente.
Observação: O Oracle Security Manager concede automaticamente a atribuição
CONNECT a qualquer usuário criado com a ferramenta. Essa atribuição será abordada
na lição "Gerenciando Atribuições".



.....................................................................................................................................................
17-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Criando Novos Usuários de Banco de Dados
.....................................................................................................................................................




                      Criando um Novo Usuário:
                 Autenticação do Sistema Operacional

                  Use OS_AUTHENT_PREFIX
                  Exemplo: os User = user15

                  OS_AUTHENT_                  Usuário de                             Possível Login
                  PREFIX                       Banco de Dados                         Remoto


                  OS_                          OS_USER15                                     Não

                  string vazia                 USER15
                                                                                             Não
                  ""
                  OPS$                         OPS$USER15
                  (default)                    (default)                                     Sim

                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Autenticação do Sistema Operacional
Use a cláusula IDENTIFIED EXTERNALLY do comando CREATE USER para
especificar que um usuário deve ser autenticado pelo sistema operacional. Em geral,
essa opção é útil quando o usuário estabelece logon diretamente na máquina na qual o
servidor Oracle está em execução.

Nome de Usuário para Autenticação do Sistema Operacional
O parâmetro de inicialização OS_AUTHENT_PREFIX é usado para especificar o
formato dos nomes de usuário para autenticação do sistema operacional. O valor
default é OPS$ para manter retrocompatibilidade com versões anteriores do servidor
Oracle. Para definir o prefixo como um valor NULL, especifique esse parâmetro de
inicialização como:
      OS_AUTHENT_PREFIX = ““
O exemplo no slide mostra como um usuário, USER15, é definido no banco de dados.
Ele especifica que o usuário do sistema operacional user15 terá permissão de acesso
ao banco de dados sem precisar de qualquer validação do servidor Oracle. Portanto,
para usar o SQL Plus para estabelecer logon no usuário UNIX do sistema, user15
precisa informar o comando a seguir no sistema operacional:
      $ sqlplus /




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       17-11
Lição 17: Gerenciando Usuários
.....................................................................................................................................................

Nome de Usuário para Autenticação do
Sistema Operacional (continuação)
Observação
• O OS_AUTHENT_PREFIX=OPS$ oferece a flexibilidade de ter um usuário
   autenticado pelo sistema operacional ou pelo servidor Oracle. Nesse caso, o DBA
   pode criar o usuário informando um comando desta forma:
      CREATE USER ops$user
      IDENTIFIED BY senha ...
      Um usuário que estabeleça logon na máquina em que está executando o servidor
      Oracle não precisa fornecer uma senha. Se o usuário se conectar a partir de um
      cliente remoto, ele poderá conectar-se fornecendo a senha.
•     A definição de um outro parâmetro de inicialização,
      REMOTE_OS_AUTHENT=TRUE, especifica que um usuário pode ser
      autenticado por um sistema operacional remoto. O valor default como FALSE
      indica que um usuário pode ser autenticado somente pela máquina que está
      executando o servidor Oracle. Use esse parâmetro com cuidado, porque há um
      problema de segurança em potencial.
•     Se há usuários no banco de dados que são autenticados pelo sistema operacional,
      a alteração de OS_AUTHENT_PREFIX pode impedir que esses usuários
      estabeleçam logon no banco de dados.




.....................................................................................................................................................
17-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Criando Novos Usuários de Banco de Dados
.....................................................................................................................................................




                                       Criando um Novo
                                       Usuário: Diretrizes
            •    Escolha uma senha padrão inicialmente;
                 use a autenticação de s/o esporadicamente.
            •    Use a palavra-chave EXPIRE para forçar os
                 usuários a redefinirem suas senhas.
            •    Sempre atribua um tablespace temporário.
            •    Restrinja as cotas a poucos usuários;
                 use QUOTA UNLIMITED com cuidado.
            •    Ensine os usuários:
                   – A se conectarem
                   – A alterar a senha

                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Diretrizes Para Criar um Novo Usuário
• Após a criação da conta do usuário, passe as informações para o usuário.
• Mostre ao usuário como conectar-se ao servidor Oracle e como alterar a senha.
• O tablespace temporário default é SYSTEM e pode causar a fragmentação do
   tablespace SYSTEM, de forma que é importante especificar o tablespace
   temporário para cada usuário.
• DEFAULT TABLESPACE é um recurso conveniente. Apesar de o default ser
   SYSTEM, um usuário não pode criar qualquer objeto nesse tablespace, a não ser
   espaço atribuído explicitamente.
• Um usuário precisa de cotas em algum tablespace para armazenar objetos de
   usuário. Como os segmentos temporários são criados e removidos pelo servidor
   Oracle, os usuários não precisam de cotas em tablespaces temporários. De forma
   semelhante, um usuário não precisa de cotas em tablespaces destinados a
   segmentos de rollback.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       17-13
Lição 17: Gerenciando Usuários
.....................................................................................................................................................


Alterando e Eliminando Usuários de Banco de Dados


           Alterando a Cota de Usuário no Tablespace




                   ALTER
                   ALTER     USER
                             USER      peter
                                       peter
                   QUOTA
                   QUOTA     0 ON
                             0 ON      data;
                                       data;




                                                                                                         ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Modificando Cotas de Tablespace
Você pode precisar modificar cotas de tablespace nas situações a seguir:
• Quando as tabelas de um usuário demonstrarem um crescimento não previsto
• Quando uma aplicação for aprimorada e precisar de tabelas ou índices adicionais
• Quando os objetos forem reorganizados e colocados em diferentes tablespaces

Sintaxe
Use o comando a seguir para modificar cotas de tablespace ou reatribuir tablespaces:
      ALTER USER user
      [ DEFAULT TABLESPACE tablespace]
      [ TEMPORARY TABLESPACE tablespace]
      [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace
      [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] ... ]
Depois que uma cota em 0 for atribuída, os objetos do usuário permanecerão no
tablespace revogado, mas não poderão ser alocados em qualquer espaço novo. Por
exemplo, se uma tabela que tem 10 MB existir no tablespace data01, e a cota do
tablespace data01 for alterada para 0, nenhuma extensão nova poderá ser alocada
para essa tabela.
As opções que não foram alteradas permanecerão inalteradas.




.....................................................................................................................................................
17-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Alterando e Eliminando Usuários de Banco de Dados
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager Para Modificar Cotas de
Tablespace
 1 Inicialize o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Users (Usuários).
 4 Selecione o nome de usuário.
 5 Informe os detalhes na página Quotas (Cotas) da folha de propriedades.




 6 Clique em Apply (Aplicar).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       17-15
Lição 17: Gerenciando Usuários
.....................................................................................................................................................


Eliminando Usuários


                                 Eliminando um Usuário


                    DROP USER peter;
                    DROP USER peter;



                   Use a cláusula CASCADE se o esquema
                   contiver objetos.

                     DROP USER peter CASCADE;
                     DROP USER peter CASCADE;




                                                                                                         ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
      DROP USER user [CASCADE]

Diretrizes
• A opção CASCADE elimina todos os objetos do esquema antes de eliminar o
   usuário. Isso deve ser especificado se o esquema contiver objetos.
• Um usuário que, no momento, esteja conectado ao servidor Oracle não poderá
   ser eliminado.




.....................................................................................................................................................
17-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Monitorando Informações Sobre Usuários
.....................................................................................................................................................


Monitorando Informações Sobre Usuários


                                   Monitorando Usuários



              DBA_USERS                                                  DBA_TS_QUOTAS
                                                                         DBA_TS_QUOTAS

              USERNAME                                                   USERNAME
                                                                         USERNAME
              USER_ID                                                    TABLESPACE_NAME
                                                                         TABLESPACE_NAME
              CREATED                                                    BYTES
                                                                         BYTES
              ACCOUNT_STATUS                                             MAX_BYTES
                                                                         MAX_BYTES
              LOCK_DATE                                                  BLOCKS
                                                                         BLOCKS
              EXPIRY_DATE                                                MAX_BLOCKS
                                                                         MAX_BLOCKS
              DEFAULT_TABLESPACE
              TEMPORARY_TABLESPACE

                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Cotas de Tablespace
Use a consulta a seguir para verificar as cotas de tablespace para o usuário SCOTT:
      SQL> SELECT tablespace_name, blocks, max_blocks,bytes, max_bytes
          2      FROM dba_ts_quotas
          3      WHERE username = 'SCOTT';

      TABLESPACE_NAME                                    BLOCKS                 MAX_BLOCKS              BYTES                MAX_BYTES
      ---------------                                   -------                 ----------            -------              -----------
      DATA01                                                        10                       -1             20480                              -1
      1 row selected.

Um valor -1 na coluna MAX_BLOCKS ou MAX_BYTES indica que o usuário possui
cotas ilimitadas em um tablespace.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       17-17
Lição 17: Gerenciando Usuários
.....................................................................................................................................................

Status da Conta de Usuário
A consulta a seguir lista todos os usuários, o status de suas contas e os tablespaces
temporários:
      SQL> SELECT username, account_status, temporary_tablespace
           2     FROM dba_users;

      USERNAME                                 ACCOUNT_STATUS                                TEMPORARY_TABLESPACE
      ---------------                          ----------------                              --------------------
      SYS                                      OPEN                                          TEMP
      SYSTEM                                   OPEN                                          TEMP
      DBSNMP                                   OPEN                                          TEMP
      SCOTT                                    OPEN                                          TEMP
      4 rows selected.




.....................................................................................................................................................
17-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................


Sumário


                                                   Sumário


            Nesta lição, você aprendeu como:
            •    Criar usuários especificando o mecanismo de
                 senha apropriado
            •    Controlar a utilização de espaço pelos usuários




                                                                                                        ®

                       Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Referência Rápida
Contexto                                                       Referência
Parâmetros de inicialização                                    OS_AUTHENT_PREFIX
                                                               REMOTE_OS_AUTHENT
Views de dicionário de dados                                   DBA_USERS
                                                               DBA_TS_QUOTAS
Comandos                                                       CREATE USER
                                                               ALTER USER
                                                               DROP USER




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       17-19
Lição 17: Gerenciando Usuários
.....................................................................................................................................................




.....................................................................................................................................................
17-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
18
             .................................




Gerenciando Privilégios
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Objetivos


                                                  Objetivos

            Após completar esta lição, você poderá fazer
            o seguinte:
            •     Identificar privilégios de sistema e objeto
            •     Conceder e revogar privilégios
            •     Controlar a autenticação do sistema operacional
                  ou do arquivo de senhas
            •     Identificar recursos de auditoria




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
18-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral


                                Gerenciando Privilégios


            Dois tipos de privilégios:
            •    Sistema: Permite que usuários executem
                 determinadas ações no banco de dados
            •    Objeto: Permite que usuários acessem e
                 manipulem um objeto específico




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Privilégios de Sistema
Cada privilégio de sistema permite que um usuário execute determinada operação de
banco de dados ou classe de operação do banco de dados. Essas operações incluem
criar, eliminar e alterar tabelas, views, segmentos de rollback e procedimentos.

Privilégios de Objeto
Cada privilégio de objeto permite que um usuário execute determinada ação em um
objeto específico, como uma tabela, view, seqüência, procedimento, função ou pacote.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         18-3
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Privilégios de Sistema


                                   Privilégios de Sistema


            •    Existem cerca de 126 privilégios de sistema.
            •    A palavra-chave ANY nos privilégios significa que os
                 usuários têm o privilégio em todos os esquemas.
            •    O comando GRANT adiciona um privilégio a um
                 usuário ou grupo de usuários.
            •    O comando REVOKE deleta os privilégios.




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que São Privilégios de Sistema?
• Existem aproximadamente 126 privilégios de sistema e o número continua a
    crescer.
• Os privilégios podem ser classificados da seguinte maneira:
    – Privilégios que permitem operações amplas do sistema; por exemplo,
        CREATE SESSION, CREATE TABLESPACE
    – Privilégios que permitem o gerenciamento de objetos no próprio esquema de
        um usuário; por exemplo, CREATE TABLE
    – Privilégios que permitem o gerenciamento de objetos em qualquer esquema;
        por exemplo, CREATE ANY TABLE
• Os privilégios podem ser controlados pelos comandos DDL (Data Definition
    Language, linguagem de definição de dados) GRANT e REVOKE, que adicionam
    e revogam privilégios de sistema para o usuário ou para uma atribuição (consulte a
    lição "Mantendo Atribuições").
Observação: Os usuários com privilégios ANY podem acessar tabelas de dicionário,
exceto as com prefixo USER_, ALL, e quaisquer views para as quais os privilégios
tenham sido concedidos a PUBLIC.




.....................................................................................................................................................
18-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Privilégios de Sistema
.....................................................................................................................................................




                      Privilégios de Sistema: Exemplos
                 Categoria             Exemplos
                 INDEX                 CREATE ANY INDEX
                                       ALTER ANY INDEX
                                       DROP ANY INDEX
                 TABLE                 CREATE TABLE
                                       CREATE ANY TABLE
                                       ALTER ANY TABLE
                                       DROP ANY TABLE
                                       SELECT ANY TABLE
                                       UPDATE ANY TABLE
                                       DELETE ANY TABLE
                 SESSION               CREATE SESSION
                                       ALTER SESSION
                                       RESTRICTED SESSION
                 TABLESPACE            CREATE TABLESPACE
                                       ALTER TABLESPACE
                                       DROP TABLESPACE
                                       UNLIMITED TABLESPACE
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Privilégios de Sistema: Exemplos
• Não existe privilégio CREATE INDEX.
• Privilégios, como CREATE TABLE, CREATE PROCEDURE ou CREATE
    CLUSTER, incluem a eliminação desses objetos.
• CREATE TABLE inclui os comandos CREATE INDEX e ANALYZE. O usuário
    precisa ter uma cota do tablespace ou ter recebido a concessão UNLIMITED
    TABLESPACE.
• UNLIMITED TABLESPACE não pode ser concedido a uma atribuição.
• Para truncar uma tabela, é necessário o privilégio DROP ANY TABLE.
Observação: Para obter uma lista completa, consulte o capítulo "Managing User
Privileges" do Oracle Server Administrator’s Guide Release 8.1, ou consulte a view
SYSTEM_PRIVILEGE_MAP.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         18-5
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Concedendo Privilégios de Sistema


                    Concedendo Privilégios de Sistema



                GRANT CREATE SESSION, CREATE TABLE TO managers;
                GRANT CREATE SESSION, CREATE TABLE TO managers;



                 GRANT CREATE SESSION TO scott
                 GRANT CREATE SESSION TO scott
                 WITH ADMIN OPTION;
                 WITH ADMIN OPTION;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use o comando a seguir para conceder um privilégio de sistema:
      GRANT {system_priv|role}
                   [, {system_priv|role} ]...
             TO          {user|role|PUBLIC}
                   [, {user|role|PUBLIC} ]...
             [WITH ADMIN OPTION]
onde:
             system_priv       especifica o privilégio de sistema a ser
                               concedido
             role              especifica o nome da atribuição a ser
                               concedida
             PUBLIC            concede o privilégio de sistema a todos os
                               usuários
             WITH ADMIN OPTION permite que o concessionário conceda o
                               privilégio ou a atribuição a outros
                               usuários ou atribuições




.....................................................................................................................................................
18-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Concedendo Privilégios de Sistema
.....................................................................................................................................................

Diretrizes
• Para conceder um privilégio de sistema, é necessário que o privilégio WITH
   ADMIN OPTION tenha sido concedido.
• O concessionário com ADMIN OPTION pode conceder a atribuição ou privilégio
   de sistema com ADMIN OPTION.
• Qualquer usuário com o privilégio de sistema GRANT ANY ROLE pode conceder
   qualquer atribuição em um banco de dados.
• O concessionário com ADMIN OPTION pode conceder privilégio de sistema a
   qualquer usuário ou atribuição ou revogar privilégio de qualquer usuário ou
   atribuição no banco de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         18-7
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager para Conceder Privilégios
de Sistema
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados
   Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
   DBA Management Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Selecione o nome de usuário ou atribuição ao qual você deseja conceder o
   privilégio.
 4 Selecione Tab (Guia): System Privileges (Privilégios de Sistema).
 5 Selecione o privilégio de sistema a ser concedido.
 6 Como opção, marque a caixa WITH ADMIN OPTION.




 7 Clique em Apply (Aplicar).




.....................................................................................................................................................
18-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Autenticação do Arquivo de Senhas
.....................................................................................................................................................


Autenticação do Arquivo de Senhas


                       Privilégios SYSDBA e SYSOPER


                Categoria              Exemplos
                SYSOPER                STARTUP
                                       SHUTDOWN
                                       ALTER DATABASE OPEN | MOUNT
                                       ALTER DATABASE BACKUP CONTROLFILE
                                       ALTER TABLESPACE BEGIN/END BACKUP
                                       RECOVER DATABASE
                                       ALTER DATABASE ARCHIVELOG
                                       RESTRICTED SESSION


                SYSDBA                 Privilégios SYSOPER WITH ADMIN OPTION
                                       CREATE DATABASE
                                       RECOVER DATABASE UNTIL



                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Privilégios SYSDBA e SYSOPER
Na lição "Conceitos Básicos do Oracle", os privilégios de sistema SYSDBA e
SYSOPER foram introduzidos para especificar a autenticação com um arquivo
de senhas.
Somente administradores de banco de dados devem poder se conectar ao banco de
dados com privilégios de administrador. A conexão como SYSDBA concede a um
usuário privilégios irrestritos para executar qualquer operação em um banco de dados
ou em objetos de um banco de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         18-9
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................




                   Autenticação do Arquivo de Senhas


            1. Verifique se o arquivo de senhas foi criado; se não
               tiver sido, crie-o usando ORAPWD.
            2. Verifique se o parâmetro de inicialização
               REMOTE_LOGIN_PASSWORD_FILE foi definido
               como EXCLUSIVE.
            3. Conceda privilégios SYSOPER e SYSDBA a
               usuários.
            4. Consulte V$PWFILE_USERS para verificar os
               membros do arquivo de senhas.



                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Ativar a Autenticação do Arquivo de Senhas
Verifique se o arquivo de senhas foi criado; se não tiver sido, use o utilitário
de senha ORAPWD para criá-lo. Verifique se o parâmetro de inicialização
REMOTE_LOGIN_PASSWORD_FILE foi definido como EXCLUSIVE.
O administrador do banco de dados pode adicionar usuários ao arquivo de senhas
concedendo os privilégios de sistema SYSOPER ou SYSDBA. WITH ADMIN
OPTION não pode ser usado para conceder esses privilégios. Somente usuários que
estejam conectados no momento como SYSDBA podem conceder os privilégios de
sistema SYSDBA ou SYSOPER a outro usuário ou revogá-los desse usuários. Esses
privilégios não podem ser concedidos a atribuições, porque uma atribuição não está
disponível antes de uma inicialização de banco de dados.
Exiba V$PWFILE_USERS para mostrar os usuários aos quais foram concedidos os
privilégios SYSDBA ou SYSOPER.
      SQL> SELECT * FROM v$pwfile_users;

      USERNAME                                                                     SYSDB                     SYSOP
      -------------------------                                                    -----                     -----
      INTERNAL                                                                     TRUE                      TRUE
      SYS                                                                          TRUE                      TRUE
      2 rows selected.




.....................................................................................................................................................
18-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exibindo Privilégios de Sistema
.....................................................................................................................................................


Exibindo Privilégios de Sistema


                        Exibindo Privilégios de Sistema



                    Nível de Banco de Dados                            Nível de Sessão
                          DBA_SYS_PRIVS                               SESSION_PRIVS
                          • GRANTEE                                   • PRIVILEGE
                          • PRIVILEGE
                          • ADMIN OPTION




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultando Privilégios de Sistema
Consulte DBA_SYS_PRIVS para listar os privilégios de sistema concedidos a
usuários e atribuições.

      SQL> SELECT * FROM DBA_SYS_PRIVS;


      GRANTEE                           PRIVILEGE                                                ADM
      ----------                        ---------------                                          -----
      ...
      SUMMIT                            SELECT ANY TABLE                                         NO
      SYS                               DELETE ANY TABLE                                         NO
      SYS                               EXECUTE ANY TYPE                                         NO
      SYS                               INSERT ANY TABLE                                         NO
      SYS                               SELECT ANY SEQUENCE                                      NO
      SYS                               SELECT ANY TABLE                                         YES
      SYS                               UPDATE ANY TABLE                                         NO
      SYSTEM                            UNLIMITED TABLESPAC                                      YES
      ...




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-11
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Consultando Privilégios de Sistema (continuação)
A view SESSION_PRIVS lista os privilégios que estão disponíveis na sessão atual
para um usuário — no exemplo, para o usuário SUMMIT.
      SQL> SELECT * FROM session_privs;
      PRIVILEGE
      ----------------------------------------
      CREATE SESSION
      ALTER SESSION
      CREATE TABLE
      SELECT ANY TABLE
      CREATE CLUSTER
      CREATE SYNONYM
      CREATE VIEW
      CREATE SEQUENCE
      CREATE DATABASE LINK
      CREATE PROCEDURE
      CREATE TRIGGER
      CREATE TYPE
      12 rows selected.
Observação: A view DBA_SYS_PRIVS mostra todos os privilégios de sistema
concedidos a atribuições e usuários no nível do banco de dados, enquanto
SESSION_PRIVS mostra os privilégios atuais da sessão, no que se refere tanto a
privilégios concedidos diretamente quanto a atribuições que tenham sido ativadas
(consulte a lição "Gerenciando Atribuições").




.....................................................................................................................................................
18-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exibindo Privilégios de Sistema
.....................................................................................................................................................




                   Restrições do Privilégio de Sistema


            O7_DICTIONARY_ACCESSIBILITY = TRUE
            •    Reverte para o comportamento do Oracle7
            •    Remove as restrições sobre privilégios de sistema
                 com a palavra-chave ANY
            •    TRUE é a opção default




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Impedir Acesso Não-autorizado ao Dicionário
O mecanismo de proteção do dicionário do Oracle8 impede que usuários
não-autorizados acessem objetos de dicionário.
O acesso a objetos de dicionário é restrito aos usuários com os privilégios de sistema
SYSDBA e SYSOPER.
Os privilégios de sistema que permitem acesso a objetos em outros esquemas não
permitem acesso a objetos de dicionário. Por exemplo, o privilégio SELECT ANY
TABLE permite acesso a views e tabelas em outros esquemas, mas não permite que
você efetue seleções de objetos de dicionário.
Se o parâmetro for definido como TRUE, que é o default, o acesso a objetos no
esquema SYS será permitido (comportamento do Oracle7).
Se esse parâmetro for definido como FALSE, os privilégios de sistema que permitem
acesso a objetos em outros esquemas não permitirão acesso a objetos no esquema do
dicionário.
Por exemplo, se O7_DICTIONARY_ACCESSIBILITY=FALSE, a instrução
SELECT ANY TABLE permitirá o acesso a views ou tabelas em qualquer esquema,
exceto no esquema SYS. O privilégio de sistema EXECUTE ANY PROCEDURE
permite acesso aos procedimentos em qualquer outro esquema, exceto no
esquema SYS.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-13
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Revogando Privilégios de Sistema


                     Revogando Privilégios de Sistema



               REVOKE CREATE TABLE FROM karen;
               REVOKE CREATE TABLE FROM karen;



               REVOKE CREATE SESSION FROM scott;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use a sintaxe a seguir para revogar um privilégio de sistema:
      REVOKE {system_priv|role}
                    [, {system_priv|role} ]...
             FROM          {user|role|PUBLIC}
                    [, {user|role|PUBLIC} ]
Observação
• O comando REVOKE consegue revogar apenas privilégios que tenham sido
  concedidos diretamente com um comando GRANT.
• A revogação de privilégios de sistema pode ter efeito sobre alguns objetos
  dependentes. Por exemplo, se SELECT ANY TABLE for concedido a um usuário
  e esse usuário tiver concedido procedimentos ou views que utilizem uma tabela em
  algum outro esquema, a revogação do privilégio invalidará os procedimentos
  ou views.




.....................................................................................................................................................
18-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Revogando Privilégios de Sistema
.....................................................................................................................................................



                     Revogando Privilégios de Sistema
                       Usando WITH ADMIN OPTION
                                                 DBA            KAREN                       SCOTT


                 CONCEDER




                 REVOGAR                         DBA            KAREN                       SCOTT




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-15
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................




                     Revogando Privilégios de Sistema
                       Usando WITH ADMIN OPTION

                RESULTADO

                                             DBA           KAREN             SCOTT




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Revogando Privilégios de Sistema Usando WITH ADMIN OPTION
Não existe efeito em cascata quando um privilégio de sistema é revogado,
independentemente de ele ter sido concedido com WITH ADMIN OPTION.
O cenário a seguir ilustra esse fato:

Cenário
 1 O DBA concede o privilégio de sistema CREATE TABLE a KAREN com
   ADMIN OPTION.
 2 KAREN cria uma tabela.
 3 KAREN concede o privilégio de sistema CREATE TABLE a SCOTT.
 4 SCOTT cria uma tabela.
 5 O administrador do banco de dados revoga o privilégio de sistema CREATE
   TABLE de KAREN.

Resultado
• A tabela de KAREN continua a existir, mas o usuário não pode criar novas tabelas.
• SCOTT ainda tem a tabela e o privilégio de sistema CREATE TABLE.
Observação: Na etapa 3 acima, se KAREN conceder privilégios com WITH ADMIN
OPTION a SCOTT, SCOTT possivelmente poderá revogar o privilégio de KAREN.




.....................................................................................................................................................
18-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Privilégios de Objeto
.....................................................................................................................................................


Privilégios de Objeto


                                    Privilégios de Objeto
               Priv. de objeto Tabela View                    Seqüência              Procedimento
               ALTER                   √                        √
               DELETE                  √             √
               EXECUTE                                                                      √
               INDEX                   √
               INSERT                  √             √
               REFERENCES √
               SELECT                  √             √          √
               UPDATE                  √             √




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que São Privilégios de Objeto?
Cada privilégio de objeto concedido autoriza o concessionário a executar alguma
operação no objeto.
A tabela acima resume os privilégios de objeto que podem ser concedidos em cada
tipo de objeto.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-17
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Concedendo Privilégios de Objeto


                     Concedendo Privilégios de Objeto



                    GRANT EXECUTE ON dbms_pipe TO public;
                    GRANT EXECUTE ON dbms_pipe TO public;



                    GRANT UPDATE(first_name, salary) ON
                    employee TO karen WITH GRANT OPTION;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use este comando para conceder um privilégio de objeto:
      GRANT {              object_priv [(column_list)]
                          [, object_priv [(column_list)] ]...
                        |ALL [PRIVILEGES]}
             ON          [schema.]object
             TO          {user|role|PUBLIC}
                   [, {user|role|PUBLIC} ]
             [WITH GRANT OPTION]
onde:
                   object_priv                                especifica o privilégio de objeto a ser
                                                              concedido
                   column_list                                especifica uma coluna de view ou tabela.
                                                              Pode ser especificado somente ao conceder
                                                              os privilégios INSERT, REFERENCES ou
                                                              UPDATE.




.....................................................................................................................................................
18-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Concedendo Privilégios de Objeto
.....................................................................................................................................................

Sintaxe (continuação)
     ALL                    concede todos os privilégios do objeto que
                            foram concedidos com WITH GRANT
                            OPTION
          ON object         identifica o objeto para o qual os privilégios
                            devem ser concedidos
          WITH GRANT OPTION permite que o concessionário conceda os
                            privilégios de objeto a outros usuários ou
                            atribuições

Diretrizes
• Para conceder privilégios, o objeto precisa estar no seu esquema ou você precisa
   ter recebido o privilégio WITH GRANT OPTION.
• Por default, se você for proprietário de um objeto, todos os privilégios sobre esse
   objeto serão obtidos automaticamente.
• Tenha cuidado ao conceder privilégios sobre os seus objetos a outros usuários
   quando houver preocupação com segurança.
• A opção WITH GRANT OPTION não pode ser usada para conceder privilégios a
   atribuições.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-19
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Exibindo Privilégios de Objeto


                         Exibindo Privilégios de Objeto


                    DBA_TAB_PRIVS                                       DBA_COL_PRIVS


                    GRANTEE                                            GRANTEE
                    OWNER                                              OWNER
                    TABLE_NAME                                         TABLE_NAME
                    GRANTOR                                            COLUMN_NAME
                    PRIVILEGE                                          GRANTOR
                    GRANTABLE                                          PRIVILEGE
                                                                       GRANTABLE




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultar Privilégios de Objeto
Consulte DBA_TAB_PRIVS para retornar todos os privilégios de objeto concedidos
ao usuário especificado.
      SQL> SELECT * FROM dba_tab_privs
           2     WHERE GRANTEE=’SUMMIT’

      GRANTEE                  OWNER                 TABLE_NAME                      GRA       PRIVILEGE                  GRA
      ---------                -----                 -----------                     -----     ----------                 -----
      SUMMIT                   SYS                   RESUMES                         SYS       READ                       NO
      1 rows selected.


Para listar todos os privilégios concedidos específicos da coluna, use esta consulta:
      SQL> SELECT * FROM dba_col_privs;

      GRANTEE             OWNER               TABLE_NAME                   COLUMN_NAME            GRANTOR            PRIVILEGE               GRA
      -------             -----               ----------                   ----------             -------            ---------               ---
      SYSTEM              SUMMIT              EMPLOYEE                     ID                     SUMMIT             INSERT                  NO
      SYSTEM              SUMMIT              EMPLOYEE                     SALARY                 SUMMIT             UPDATE                  NO
      2 rows selected.




.....................................................................................................................................................
18-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Revogando Privilégios de Objeto
.....................................................................................................................................................


Revogando Privilégios de Objeto


                      Revogando Privilégios de Objeto




                   REVOKE execute ON dbms_pipe FROM scott;
                   REVOKE execute ON dbms_pipe FROM scott;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use esta sintaxe para revogar um privilégio de objeto:
      REVOKE {               object_priv
                            [, object_priv ]...
                          |ALL [PRIVILEGES] }
            ON            [schema.]object
            FROM           {user|role|PUBLIC}
                    [, {user|role|PUBLIC} ]
            [CASCADE CONSTRAINTS]
onde:
                   object_priv                                especifica o privilégio de objeto a ser
                                                              concedido
                   ALL                                        revoga todos os privilégios de objeto
                                                              concedidos ao usuário
                   ON                                         identifica o objeto sobre o qual os
                                                              privilégios de objeto são revogados




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-21
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Sintaxe (continuação)
   FROM                                                         identifica os usuários ou atribuições
                                                                cujos privilégios de objeto são
                                                                revogados
      CASCADE CONSTRAINTS                                       elimina as restrições de integridade de
                                                                referência definidas pela revogação
                                                                usando os privilégios REFERENCES
                                                                ou ALL

Restrição
Os concessores podem revogar privilégios somente dos usuários aos quais eles
concederam privilégios.




.....................................................................................................................................................
18-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Revogando Privilégios de Objeto
.....................................................................................................................................................



                      Revogando Privilégios de Objeto
                       Usando WITH GRANT OPTION
                                      SCOTT                USUÁRIO 1
                                                                                       USUÁRIO 2
             CONCEDER




             REVOGAR                   SCOTT                USUÁRIO 1
                                                                                       USUÁRIO 2




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-23
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................




                       Revogando Privilégios de Objeto
                        Usando WITH GRANT OPTION


                 RESULTADO

                                      SCOTT           USUÁRIO 1 USUÁRIO 2




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Revogando Privilégios de Objeto Usando WITH GRANT OPTION
A revogação de privilégios de objeto terá efeito em cascata quando os privilégios
forem concedidos usando WITH GRANT OPTION.
O cenário a seguir ilustra esse fato:

Cenário
 1 USUÁRIO 1 recebe o privilégio de objeto SELECT com GRANT OPTION.
 2 USUÁRIO 1 concede o privilégio SELECT sobre EMP ao USUÁRIO 2.

Resultado
Posteriormente, o privilégio SELECT é revogado do USUÁRIO 1. Essa revogação
também será aplicada em cascata para o USUÁRIO 2.




.....................................................................................................................................................
18-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Diretrizes de Auditoria
.....................................................................................................................................................


Diretrizes de Auditoria


                                   Diretrizes de Auditoria

            •    Defina as finalidades da auditoria
                  – Atividade de banco de dados suspeita
                  – Reúna informações históricas
            •    Defina o que você deseja auditar
                  – Auditar usuários, instruções ou objetos
                  – Por sessão
                  – Com ou sem sucesso
            •    Gerencie a trilha de auditoria
                  – Monitorar o crescimento da trilha de auditoria
                  – Proteger a trilha de auditoria de acesso
                    não-autorizado
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Enfocando a Auditoria
Restrinja a auditoria identificando primeiro os requisitos de auditoria e definindo as
opções mínimas de auditoria que atenderão aos seus requisitos. A auditoria de objeto
deve ser usada onde possível para reduzir o número de entradas geradas. Se for
necessário usar auditoria de instrução ou privilégio, as seguintes definições poderão
minimizar a geração de auditoria:
• Especificação de usuários para auditoria
• Auditoria por sessão e não por acesso
• Auditoria de êxitos ou falhas, porém não ambos
Os registros de auditoria podem ser gravados em SYS.AUD$ ou na trilha de auditoria
do sistema operacional. A capacidade de usar a trilha de auditoria depende do sistema
operacional.

Monitorando o Crescimento da Trilha de Auditoria
Se a trilha de auditoria ficar cheia, não será possível inserir mais registros de auditoria
e as instruções auditadas não serão executadas com sucesso. Serão retornados erros a
todos os usuários que emitirem uma instrução auditada. Você precisará liberar algum
espaço na trilha de auditoria para que essas instruções possam ser executadas.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-25
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Monitorando o Crescimento da Trilha de Auditoria (continuação)
Para garantir que a trilha de auditoria não cresça com muita rapidez:
• Ative a auditoria somente quando necessário.
• Seja seletivo sobre as opções de auditoria especificadas.
• Controle rigidamente a auditoria de objeto de esquema. Os usuários podem ativar a
   auditoria para os objetos de sua propriedade.
• O privilégio AUDIT ANY também permite que um usuário ative a auditoria;
   portanto, conceda-o com parcimônia.
Remova periodicamente os registros da trilha de auditoria com o comando DELETE
ou TRUNCATE.

Protegendo a Trilha de Auditoria
Você deve proteger a trilha de auditoria para que não seja possível adicionar, modificar
ou deletar informações de auditoria. Emita o comando:
      AUDIT delete ON sys.aud$ BY ACCESS;
Para proteger a trilha de auditoria de deleções não-autorizadas, somente o DBA deverá
ter a atribuição DELETE_CATALOG_ROLE.

Removendo a Trilha de Auditoria do Tablespace SYSTEM
À medida que são inseridos novos registros na trilha de auditoria do banco de dados,
a tabela AUD$ pode crescer sem limites. Embora você não deva eliminar a tabela
AUD$, é possível truncar ou deletar itens dessa tabela, porque as linhas são somente
informativas e não são necessárias à execução da instância Oracle. Como a tabela
AUD$ pode crescer e, em seguida, ser compactada, ela deve ser armazenada fora do
tablespace SYSTEM.
Para mover AUD$ para o tablespace AUDIT_TAB:
 1 Certifique-se de que a auditoria esteja desativada no momento.
 2 Digite este comando:
      ALTER TABLE aud$
      MOVE TABLESPACE AUDIT_TAB;
 3 Digite este comando:
      CREATE INDEX i_aud1 ON aud$(sessionid, ses$tid)
      TABLESPACE AUDIT_IDX;
 4 Ative a auditoria para a instância.




.....................................................................................................................................................
18-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Diretrizes de Auditoria
.....................................................................................................................................................




                                 Categorias de Auditoria


            •    Auditoria de operações privilegiadas
                  – Sempre auditadas
                  – Inicialização, desativação e conexões SYSDBA
            •    Auditoria de banco de dados
                  – Ativada pelo DBA
                  – Não pode registrar valores de coluna
            •    Auditoria baseada em valor ou aplicação
                  – Implementada através de código
                  – Pode registrar valores de coluna
                  – Usada para controlar alterações em tabelas
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Auditoria de Operações Privilegiadas
O servidor Oracle sempre fará auditoria das seguintes ações relacionadas com banco
de dados para a trilha de auditoria do sistema:
• Inicialização da instância: É sempre gerado um registro de auditoria que especifica
    o usuário do S/O que inicializa a instância, o identificador do terminal, a data e
    timestamp, e se a auditoria de banco de dados está ou não ativada.
• Desativação da instância: É sempre gerado um registro de auditoria que especifica
    o usuário de S/O que desativa a instância, o identificador do terminal, a data e o
    timestamp.
• Conexões com o banco de dados com privilégios de administrador: É sempre
    gerado um registro de auditoria que especifica o usuário de S/O que está
    estabelecendo conexão com o servidor Oracle como SYSOPER ou SYSDBA para
    proporcionar responsabilidade dos usuários com privilégios de administrador.

Auditoria de Banco de Dados
A auditoria de banco de dados é a monitoração e o registro das ações de banco de
dados do usuário selecionado. As informações sobre o evento são armazenadas na
trilha de auditoria.
A trilha de auditoria pode ser usada para investigar atividades suspeitas. Por exemplo,
se um usuário não-autorizado estiver deletando dados de tabelas, o administrador do
banco de dados poderá decidir auditar todas as conexões com o banco de dados em
conjunto com as deleções com ou sem sucesso das linhas de tabelas no banco
de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-27
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Auditoria de Banco de Dados (continuação)
A auditoria também pode ser usada para monitorar e reunir dados sobre atividades
específicas de banco de dados. Por exemplo, o administrador do banco de dados pode
reunir estatísticas sobre quais tabelas estão sendo atualizadas, quantas E/S lógicas
estão sendo realizadas e quantos usuários simultâneos estão conectados em horários
de pico.

Auditoria Baseada em Valor
A auditoria de banco de dados não pode registrar valores de coluna. Se for necessário
controlar alterações feitas em colunas de banco de dados e os valores de coluna
precisarem ser armazenados para cada alteração, use auditoria de aplicação. A
auditoria de aplicação pode ser feita através de código de cliente, procedimentos
armazenados ou gatilhos de banco de dados.




.....................................................................................................................................................
18-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Usando a Auditoria de Banco de Dados
.....................................................................................................................................................


Usando a Auditoria de Banco de Dados


                          Auditoria de Banco de Dados
                     Ativa auditoria de
                      banco de dados                                Executa comando


               DBA                               Arq. de                                          Usuário
                                               parâmetros
                                                                     Processo
                                              Especifica             de servidor
            Analisa
                                               opções                                       Gera trilha
            informações                      de auditoria
            de auditoria                                                                    de auditoria


                                                Opções de
                                                 auditoria
                                                                                             Trilha de
                                                                                             auditoria
                                                                                              de S/O
                            Banco                Trilha de
                           de dados              auditoria

                                                                                                            ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Ativando e Desativando a Auditoria de Banco de Dados
Após decidir o que deseja auditar, defina o parâmetro de inicialização AUDIT_TRAIL
para ativar a auditoria da instância. Esse parâmetro indica se a trilha de auditoria será
gravada em uma tabela de banco de dados ou na trilha de auditoria do sistema
operacional.

Sintaxe AUDIT_TRAIL = value
onde value pode ser um dos itens a seguir:
           DB                    ativa a auditoria e direciona todos os
                                 registros de auditoria para a trilha de
                                 auditoria de banco de dados (SYS.AUD$)
           OS                    ativa a auditoria e direciona todos os
                                 registros de auditoria para a trilha de
                                 auditoria do sistema operacional (se
                                 permitido no sistema operacional)
           NONE                  desativa a auditoria. Esse é o valor default.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-29
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Ativando a Auditoria de Banco de Dados (continuação)
Os registros de auditoria não serão gravados na trilha de auditoria, exceto se o DBA
tiver definido o parâmetro AUDIT_TRAIL como DB ou OS. Embora seja possível
usar as instruções SQL AUDIT e NOAUDIT a qualquer momento, os registros serão
gravados na trilha de auditoria somente se o DBA tiver definido o parâmetro
AUDIT_TRAIL no arquivo de inicialização.
Observação: O Guia de Instalação e Configuração do sistema operacional fornece
informações sobre gravação de registros de auditoria na trilha de auditoria do S/O.

Especificando Opções de Auditoria
Em seguida, você define opções específicas de auditoria usando o comando AUDIT.
Com o comando AUDIT, você pode indicar que comandos, usuários, objetos ou
privilégios serão auditados. Pode também indicar se será gerado um registro de
auditoria para cada ocorrência ou um registro por sessão. Se uma opção de auditoria
não for mais necessária, você poderá desativá-la com o comando NOAUDIT.

Execução de Instruções
Quando os usuários executam instruções PL/SQL e SQL, o processo de servidor
examina as opções de auditoria para determinar se a instrução que está sendo
executada deve gerar um registro de auditoria. As instruções SQL contidas em
unidades de programa PL/SQL são auditadas individualmente, conforme necessário,
quando a unidade de programa é executada. Como views e procedimentos podem
fazer referência a outros objetos de banco de dados, diversos registros de auditoria
podem ser gerados em decorrência da execução de uma única instrução.

Gerando Dados de Auditoria
A geração e inserção de um registro de trilha de auditoria independe da transação de
um usuário; portanto, se for efetuado o rollback da transação de um usuário, o registro
da trilha de auditoria permanecerá intacto. Como o registro de auditoria é gerado
durante a fase de execução, um erro de sintaxe, que ocorre durante a fase de análise,
não provocará a geração de um registro de trilha de auditoria.

Verificando Informações de Auditoria
Examine as informações geradas durante a auditoria selecionando opções nas views de
dicionário de dados de trilha de auditoria ou usando um utilitário de sistema
operacional para exibir a trilha de auditoria do sistema operacional. Essa informação é
usada para investigar atividades suspeitas e monitorar atividades de banco de dados.




.....................................................................................................................................................
18-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Usando a Auditoria de Banco de Dados
.....................................................................................................................................................




                         Ativando Opções de Auditoria

            •    Auditoria de instrução
                 AUDIT user;
                 AUDIT user;

            •    Auditoria de privilégio
                 AUDIT select any table
                      BY summit BY ACCESS;


            •    Auditoria de objeto de esquema
                 AUDIT LOCK ON summit.employee
                 AUDIT LOCK ON summit.employee
                 BY ACCESS WHENEVER SUCCESSFUL;
                 BY ACCESS WHENEVER SUCCESSFUL;


                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Eventos Auditados por Solicitação
Você pode especificar as opções de auditoria com o comando AUDIT. Esses registros
de auditoria jamais são gerados por sessões estabelecidas pelo usuário SYS ou
conexões como INTERNAL. As conexões estabelecidas por esses usuários ignoram
determinados recursos internos do servidor Oracle para permitir a ocorrência de
operações administrativas, como inicialização, desativação e recuperação de banco
de dados.

Auditoria de Instrução
É possível auditar usando um tipo de instrução SQL ou de objeto. O exemplo de
auditoria de instrução audita as instruções CREATE, ALTER e DROP USER de todos
os usuários.
As opções de auditoria de instrução são em geral amplas, auditando o uso de diversos
tipos de ações relacionadas por opção. Por exemplo, AUDIT TABLE controla diversas
instruções DDL, não importando em que tabela elas sejam emitidas. Você pode definir
a auditoria de instrução para auditar os usuários selecionados ou todos os usuários no
banco de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-31
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Auditoria de Privilégio
A auditoria de privilégio audita o uso de privilégios de sistema. No exemplo do slide,
sempre que SUMMIT usar o privilégio SELECT ANY TABLE, será gerada uma
entrada de auditoria. Uma entrada será gerada somente se SUMMIT consultar tabelas
pertencentes a outros usuários para as quais ele não tenha recebido privilégios
SELECT. Na auditoria, os privilégios de proprietário são verificados primeiro, seguido
dos privilégios de objeto e, finalmente, dos privilégios de sistema. Assim, se o
privilégio SELECT ANY TABLE de um usuário estiver sendo auditado e ele efetuar
uma seleção em uma tabela de sua propriedade, o privilégio SELECT ANY TABLE
não provocará a geração de um registro de auditoria, porque o usuário pode efetuar
seleções na tabela usando seu privilégio de proprietário.

Auditoria de Objeto de Esquema
A auditoria de objeto de esquema audita instruções executadas em um objeto de
esquema específico. No exemplo, é gerada uma entrada de trilha de auditoria quando
um usuário executa com sucesso o comando LOCK no objeto SUMMIT.EMPLOYEE.

Sintaxe
Use este comando para ativar opções de auditoria:

Auditoria de Privilégio ou Instrução
      AUDIT {statement|system_priv}
                   [, {statement|system_priv} ]...
             [BY user [, user ]... ]
             [BY {SESSION|ACCESS}                           ]
             [WHENEVER [NOT] SUCCESSFUL]




.....................................................................................................................................................
18-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Usando a Auditoria de Banco de Dados
.....................................................................................................................................................

Sintaxe (continuação)

Auditoria de Objeto
      AUDIT statement [, statement ]...
            ON       {[schema.]object|DEFAULT}
            [BY {SESSION|ACCESS}]
            [WHENEVER [NOT] SUCCESSFUL]
onde:           statement                                       especifica o tipo de instrução SQL ou
                                                                objeto de esquema a ser auditado
                system_priv                                     especifica o privilégio de sistema a ser
                                                                auditado
                schema.schema-object                            identifica o objeto escolhido para
                                                                auditoria
                DEFAULT                                         define as opções do objeto especificado
                                                                como opções de objeto default para
                                                                objetos criados posteriormente
                user                                            indica que somente os usuários da lista
                                                                devem ser auditados. Se essa cláusula
                                                                for omitida, as atividades de todos os
                                                                usuários serão auditadas.
                BY SESSION                                      faz o servidor Oracle inserir um registro
                                                                por objeto de banco de dados na trilha
                                                                de auditoria para cada sessão, não
                                                                importando quantas instruções SQL do
                                                                mesmo tipo sejam submetidas. Essa é a
                                                                opção default, exceto para DDL.
                BY ACCESS                                       faz o servidor Oracle inserir um registro
                                                                na trilha de auditoria toda vez que uma
                                                                instrução auditada for submetida. Para
                                                                instruções DDL (Data Definition
                                                                Language, linguagem de definição de
                                                                dados), o servidor Oracle sempre audita
                                                                por acesso.
                WHENEVER                                        especifica que a auditoria deverá ser
                                                                realizada somente na conclusão com ou
                                                                sem sucesso de instruções SQL.
                                                                O default é ambos.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-33
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Sintaxe (continuação)
Observação
• Como registros de auditoria são gerados durante a fase de execução, erros
   de análise, como TABLE OR VIEW DOES NOT EXIST (Tabela ou view
   inexistente), não podem ser interceptados com a cláusula WHENEVER
   UNSUCCESSFUL.
• As opções de auditoria de instrução e privilégio especificadas pelo comando
   AUDIT se aplicam somente a sessões posteriores, não à sessão atual. Por outro
   lado, alterações feitas em opções de auditoria de objeto de esquema entram em
   vigor imediatamente para a sessão atual.

Desativando a Auditoria
Use a instrução NOAUDIT para interromper a auditoria escolhida pelo
comando AUDIT.
Observação: Uma instrução NOAUDIT reverte o efeito de uma instrução AUDIT
anterior. Observe que a instrução NOAUDIT deve ter a mesma sintaxe que a instrução
AUDIT anterior e que ela reverte somente os efeitos dessa instrução específica.
Assim, se uma instrução AUDIT (instrução A) ativar auditoria para um usuário
específico e uma segunda (instrução B) ativar auditoria para todos os usuários, uma
instrução NOAUDIT, que desativa a auditoria de todos os usuários, reverterá a
instrução B, mas deixará a instrução A em vigor e continuará a auditar o usuário
especificado pela instrução A.




.....................................................................................................................................................
18-34                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Usando a Auditoria de Banco de Dados
.....................................................................................................................................................




                          Exibindo Opções de Auditoria


                View de Dicionário de Dados Descrição

                ALL_DEF_AUDIT_OPTS                            Opções de auditoria default

                DBA_STMT_AUDIT_OPTS                           Opções de auditoria de instrução

                DBA_PRIV_AUDIT_OPTS                           Opções de auditoria de privilégio

                DBA_OBJ_AUDIT_OPTS                            Opções de auditoria de objeto de
                                                              esquema




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Exibindo Resultados de Auditoria
As views listadas acima contêm informações da trilha de auditoria. Veja a seguir em
exemplo que mostra os registros de auditoria gerados quando uma série de instruções é
executada:
      SQL> SELECT username, obj_name, action_name, priv_used
          2     FROM sys.dba_audit_object
          3     WHERE owner = 'SUMMIT'
          4     AND obj_name = 'EMPLOYEE';
      USERNAME       OBJ_NAME                                        ACTION_NAME                 PRIV_USED
      --------       --------                                        -----------                 ----------------
      SUMMIT         EMPLOYEE                                        SESSION REC
      ADAMS          EMPLOYEE                                        SESSION REC
      SYSTEM         EMPLOYEE                                        SESSION REC                 DELETE ANY TABLE
      3 rows selected.
Esses resultados são obtidos somente quando determinados eventos ocorrem no banco
de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-35
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................


Exibindo Resultados de Auditoria


                      Exibindo Resultados de Auditoria

             View de Trilha de Auditoria                 Descrição
             DBA_AUDIT_TRAIL                             Todas as entradas de trilha
                                                         de auditoria
             DBA_AUDIT_EXISTS                            Registros de AUDIT EXISTS/
                                                         NOT EXISTS
             DBA_AUDIT_OBJECT                            Registros relacionados a objetos
                                                         de esquema
             DBA_AUDIT_SESSION                           Todas as entradas de conexão e
                                                         desconexão
             DBA_AUDIT_STATEMENT                         Registros de auditoria de instrução



                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Views de Trilha de Auditoria
As views de dicionário de dados listadas contêm informações sobre opções de
auditoria. Essas views são consultadas pelo administrador do banco de dados para
determinar o que está sendo auditado.
Por exemplo, a consulta a seguir mostra as opções de auditoria de privilégio que estão
definidas:
      SQL> SELECT * FROM dba_priv_audit_opts;
      USER_NAME   PRIVILEGE                                                         SUCCESS                   FAILURE
      ---------- -------------------                                                ------------              -----------
      SUMMIT      CREATE TABLE                                                      BY ACCESS                 BY ACCESS
      SYSTEM      ALTER ANY TABLE                                                   BY ACCESS                 NOT SET
      SUMMIT      ALTER ANY TABLE                                                   BY ACCESS                 NOT SET
      SYSTEM      ALTER ANY PROCEDURE                                               BY ACCESS                 NOT SET
      SUMMIT      ALTER ANY PROCEDURE                                               BY ACCESS                 NOT SET
      GRANT       ANY PRIVILEGE                                                     BY ACCESS                 BY ACCESS
      6 rows selected.




.....................................................................................................................................................
18-36                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................


Sumário


                                                    Sumário



             Nesta lição, você aprendeu como:
            •    Controlar privilégios de sistema e objeto
            •    Usar a auditoria de banco de dados




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       18-37
Lição 18: Gerenciando Privilégios
.....................................................................................................................................................

Referência Rápida

 Contexto                                                  Referência
 Parâmetros de inicialização                               O7_DICTIONARY_ACCESSIBILITY
                                                           AUDIT_TRAIL
 Views de desempenho dinâmicas                             Nenhuma
 Views de dicionário de dados                              DBA_SYS_PRIVS
                                                           SESSION_PRIVS
                                                           DBA_TAB_PRIVS
                                                           DBA_COL_PRIVS
                                                           ALL_DEF_AUDIT_OPTS
                                                           AUDIT_ACTIONS
                                                           DBA_AUDIT_EXISTS
                                                           DBA_AUDIT_OBJECT
                                                           DBA_AUDIT_SESSION
                                                           DBA_AUDIT_STATEMENT
                                                           DBA_AUDIT_TRAIL
                                                           DBA_OBJ_AUDIT_OPTS
                                                           DBA_PRIV_AUDIT_OPTS
                                                           DBA_STMT_AUDIT_OPTS
 Comandos                                                  GRANT
                                                           REVOKE
                                                           AUDIT
                                                           NOAUDIT
 Procedimentos e funções                                   Nenhum
 empacotados




.....................................................................................................................................................
18-38                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
19
              .................................




Gerenciando Atribuições
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................


Objetivos


                                                  Objetivos

            Após completar esta lição, você poderá executar
            o seguinte:
            •    Criar e modificar atribuições
            •    Controlar a disponibilidade de atribuições
            •    Remover atribuições
            •    Usar atribuições predefinidas
            •    Exibir informações de atribuição a partir do
                 dicionário de dados




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
19-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral


                                                Atribuições

               Usuários
                                               A                         B                  C




              Atribuições                      HR_MGR                            HR_CLERK




               Privilégios
                                           SELECT ON                            INSERT ON
                                              EMP                                  EMP

                            CREATE                             CREATE                           UPDATE
                             TABLE                             SESSION                          ON EMP

                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que É uma Atribuição?
O Oracle oferece gerenciamento fácil e controlado de privilégios através de
atribuições. Atribuições são grupos determinados de privilégios relacionados
concedidos a usuários ou a outras atribuições. Elas são projetadas para facilitar
a administração de privilégios no banco de dados.

Características das Atribuições
• São concedidas a usuários e são revogadas com os mesmos comandoutilizados
   para conceder ou revogar privilégios de sistema.
• Pode ser concedida a qualquer usuário ou atribuição, exceto a si próprio (mesmo
   indiretamente).
• Pode consistir tanto em privilégios de sistema como de objeto.
• Pode ser ativada ou desativada para cada usuário ao qual essa atribuição tenha sido
   concedida.
• Pode exigir uma senha para ser ativada.
• Cada nome de atribuição deve ser exclusivo entre nomes de usuário e nomes de
   atribuição existentes.
• Não pertencem a qualquer usuário; não estão em qualquer esquema.
• Têm suas descrições armazenadas no dicionário de dados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         19-3
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




                             Benefícios das Atribuições


            •     Concessão de privilégios reduzida
            •     Gerenciamento dinâmico de privilégios
            •     Disponibilidade seletiva de privilégios
            •     Concedidas através do S/O
            •     Sem revogações em cascata
            •     Desempenho melhorado




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Concessão de Privilégios Reduzida
Use atribuições para simplificar o gerenciamento de privilégios. Em vez de conceder o
mesmo conjunto de privilégios a vários usuários, é possível conceder os privilégios a
uma atribuição e, em seguida, conceder essa atribuição a cada usuário.

Gerenciamento Dinâmico de Privilégios
Se os privilégios associados a uma atribuição forem modificados, todos os usuários
aos quais a atribuição tenha sido concedida obterão os privilégios modificados de
forma automática e imediata.

Disponibilidade Seletiva de Privilégios
As atribuições podem ser ativadas e desativadas para colocar os privilégios em serviço
ou para tirá-los de serviço temporariamente. A ativação de uma atribuição também é
usada para verificar se ela foi concedida a um usuário.

Concedida Através do Sistema Operacional
É possível usar utilitários ou comandos do sistema operacional para designar
atribuições a usuários no banco de dados.

Sem Revogações em Cascata
Os privilégios de objeto podem ser revogados sem causar revogações em cascata.

Desempenho Melhorado
Com a desativação das atribuições, há menos privilégios a serem verificados durante a
execução da instrução. O uso de atribuições reduz o número de concessões
armazenadas no dicionário de dados.

.....................................................................................................................................................
19-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Criando e Modificando Atribuições
.....................................................................................................................................................


Criando e Modificando Atribuições


                                     Criando Atribuições


                     CREATE ROLE sales_clerk;
                     CREATE ROLE sales_clerk;



                     CREATE ROLE hr_clerk
                     IDENTIFIED BY bonus;




                     CREATE ROLE hr_manager
                     CREATE ROLE hr_manager
                     IDENTIFIED EXTERNALLY;
                     IDENTIFIED EXTERNALLY;



                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use este comando para criar uma atribuição:
          CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED
          {BY password | EXTERNALLY }]
onde:              role                                       é o nome da atribuição
                   NOT IDENTIFIED                             indica que nenhuma verificação é
                                                              necessária ao ativar a atribuição
                   IDENTIFIED                                 indica que a verificação é necessária ao
                                                              ativar a linha
                   BY password                                fornece a senha que o usuário deve
                                                              especificar ao ativar a atribuição
                   EXTERNALLY                                 indica que um usuário precisa ser
                                                              autorizado por um serviço externo (como
                                                              o sistema operacional ou um serviço de
                                                              terceiros) antes de ativar a atribuição




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         19-5
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager para Criar uma Atribuição
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
   DBA Management Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Selecione a pasta Roles (Atribuições). Selecione Create (Criar) no menu do botão
   direito do mouse.




 4 Informe o nome da atribuição e selecione o método de identificação.
 5 Como opção, CONCEDA atribuições e privilégios à nova atribuição clicando na
    guia Roles, System Privileges (Privilégios de Sistema) ou Object Privileges
    (Privilégios de Objeto) (abordado em uma lição anterior).
 6 Clique em Create.
Observação: O comando CREATE ROLE IDENTIFIED GLOBALLY especifica que
a verificação dessa atribuição deverá ser feita através do Oracle Security Server.
O Oracle Security Server é um produto de segurança que permite a configuração
centralizada de atribuições e usuários em um ambiente distribuído Oracle. Os usuários
e atribuições definidos no Oracle Security Server podem ser usados entre vários
bancos de dados. Esses usuários e atribuições são chamados de usuários globais e
atribuições globais, respectivamente. Consulte o manual Oracle8i Server Distributed
Database Systems para obter mais informações.




.....................................................................................................................................................
19-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Criando e Modificando Atribuições
.....................................................................................................................................................




                      Usando Atribuições Predefinidas
            Nome da Atribuição                                 Descrição
            CONNECT,                                           São fornecidas para
            RESOURCE                                           manter a retrocompatibilidade
            DBA                                                Todos os privilégios de sistema
                                                               WITH ADMIN OPTION
            EXP_FULL_DATABASE                                  Privilégios para exportar o
                                                               banco de dados
            IMP_FULL_DATABASE                                  Privilégios para importar o
                                                               banco de dados
            DELETE_CATALOG_ROLE                                Privilégios DELETE sobre
                                                               tabelas de dicionário de dados
            EXECUTE_CATALOG_ROLE                               Privilégio EXECUTE sobre
                                                               pacotes de dicionário de dados
            SELECT_CATALOG_ROLE                                Privilégio SELECT sobre
                                                               tabelas de dicionário de dados
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Atribuições Predefinidas
As atribuições listadas são definidas automaticamente para bancos de dados Oracle.
As atribuições CONNECT e RESOURCE são fornecidas para retrocompatibilidade
com versões anteriores do servidor Oracle e podem ser modificadas do mesmo modo
que qualquer outra atribuição em um banco de dados Oracle.
As atribuições EXP_FULL_DATABASE e IMP_FULL_DATABASE são fornecidas
para conveniência ao usar os utilitários Importar e Exportar.
As atribuições DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE e
SELECT_CATALOG_ROLE são fornecidas para acessar pacotes e views de
dicionário de dados. Essas atribuições podem ser concedidas a usuários que não
tenham a atribuição DBA, mas que necessitem acessar as views e tabelas no dicionário
de dados.

Outras Atribuições Especiais
O servidor Oracle também cria outras atribuições que autorizam você a administrar o
banco de dados. Em diversos sistemas operacionais, essas atribuições são chamadas de
OSOPER e OSDBA. Esses nomes podem ser diferentes no seu sistema operacional.
Outras atribuições são definidas por scripts SQL fornecidos com o banco de dados.
Por exemplo, as atribuições AQ_ADMINISTRATOR_ROLE e AQ_USER_ROLE são
criadas pelo script dbmsaqad.sql. Essas atribuições são usadas com o recurso
Advanced Queuing (Filas Avançadas).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         19-7
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................

Outras Atribuições Especiais (continuação)
Observação
• Em algumas plataformas, como Solaris, os concessionários da atribuição
  RESOURCE também recebem explicitamente o privilégio UNLIMITED
  TABLESPACE, embora esse privilégio não seja designado à atribuição.
• Você não deve confiar nessas atribuições. Em vez disso, é recomendável que você
  projete suas próprias atribuições para segurança de banco de dados. Talvez essas
  atribuições não sejam criadas automaticamente por futuras versões do
  servidor Oracle.




.....................................................................................................................................................
19-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Criando e Modificando Atribuições
.....................................................................................................................................................




                                Modificando Atribuições

                     ALTER ROLE sales_clerk
                     ALTER ROLE sales_clerk
                      IDENTIFIED BY commission;
                      IDENTIFIED BY commission;



                     ALTER ROLE hr_clerk
                     IDENTIFIED EXTERNALLY;




                     ALTER ROLE hr_manager
                     ALTER ROLE hr_manager
                     NOT IDENTIFIED;
                     NOT IDENTIFIED;



                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Modificando Atribuições
Uma atribuição só pode ser modificada para alterar seu método de autenticação.

Sintaxe
Use este comando para modificar uma atribuição:
          ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED
          {BY password | EXTERNALLY }};
onde:              role                                       é o nome da atribuição
                   NOT IDENTIFIED                             indica que nenhuma verificação é
                                                              necessária ao ativar a atribuição
                   IDENTIFIED                                 indica que a verificação é necessária ao
                                                              ativar a linha
                   BY password                                fornece a senha usada ao ativar a atribuição
                   EXTERNALLY                                 indica que um usuário deverá ser autorizado
                                                              por um serviço externo (como o sistema
                                                              operacional ou serviço de terceiros) antes
                                                              de ativar a atribuição




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         19-9
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager para Modificar uma Atribuição
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Roles (Atribuições).
 4 Selecione a atribuição.
 5 Indique o método de identificação.




 6 Clique em Apply (Aplicar).




.....................................................................................................................................................
19-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Designando Atribuições
.....................................................................................................................................................


Designando Atribuições


                                Designando Atribuições


                      GRANT sales_clerk TO scott;
                      GRANT sales_clerk TO scott;



                      GRANT hr_clerk,
                      TO hr_manager;




                      GRANT hr_manager TO scott
                      GRANT hr_manager TO scott
                      WITH ADMIN OPTION;
                      WITH ADMIN OPTION;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Para conceder uma atribuição a um usuário, use a mesma sintaxe de comando usada
para conceder um privilégio de sistema a um usuário:
      GRANT role [, role ]...
            TO           {user|role|PUBLIC}
                  [,{user|role|PUBLIC} ]...
            [WITH GRANT OPTION]


onde:
                 role                                                   é uma atribuição a ser concedida ou
                                                                        uma atribuição que recebe a
                                                                        atribuição concedida
                 user                                                   é um usuário que recebe uma
                                                                        atribuição
                 role                                                   é uma atribuição que recebe uma
                                                                        atribuição
                 PUBLIC                                                 concede a atribuição a todos os
                                                                        usuários




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-11
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................

Sintaxe (continuação)
WITH ADMIN OPTION permite que o concessionário conceda a atribuição a outros
usuários ou atribuições. (Se você conceder uma atribuição com essa opção, o
concessionário poderá conceder a atribuição a outros usuários, revogar a atribuição
de outros usuários, alterar ou eliminar a atribuição.)
Ao usuário que cria uma atribuição é designada implicitamente a atribuição ADMIN
OPTION. Um usuário que não tenha recebido uma atribuição com ADMIN OPTION
precisará do privilégio de sistema GRANT ANY ROLE para conceder e revogar
atribuições para e de outros usuários.




.....................................................................................................................................................
19-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Designando Atribuições
.....................................................................................................................................................

Como Usar o Oracle Enterprise Manager para Designar uma Atribuição
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Users (Usuários) ou Roles (Atribuições).
 4 Selecione o usuário ou atribuição.
 5 Selecione a guia Role (Atribuição) ou System Privileges (Privilégios de Sistema).
 6 Selecione a atribuição a ser concedida.
 7 Clique na seta para baixo para adicionar a atribuição à lista de concessões.




 8 Acrescente atribuições adicionais, conforme necessário.
 9 Clique em Apply (Aplicar).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-13
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................


Controlando a Disponibilidade das Atribuições


                     Estabelecendo Atribuições Default

               ALTER USER scott
               ALTER USER scott
               DEFAULT ROLE hr_clerk, sales_clerk;
               DEFAULT ROLE hr_clerk, sales_clerk;



               ALTER USER scott DEFAULT ROLE ALL;
               ALTER USER scott DEFAULT ROLE ALL;


               ALTER USER scott DEFAULT ROLE ALL EXCEPT
               ALTER USER scott DEFAULT ROLE ALL EXCEPT
               hr_clerk;
               hr_clerk;



               ALTER USER scott DEFAULT ROLE NONE;
               ALTER USER scott DEFAULT ROLE NONE;


                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Atribuições Default
Um usuário pode ter diversas atribuições. Uma atribuição default é um subconjunto
dessas atribuições que é ativado automaticamente quando o usuário estabelece login.
Por default, todas as atribuições designadas a um usuário são ativadas no login. Limite
as atribuições default de um usuário com o comando ALTER USER.

Sintaxe
Use esta sintaxe para designar atribuições default a um usuário:
          ALTER USER user DEFAULT ROLE
            {role [,role]... | ALL [EXCEPT role [,role]... ] | NONE}
onde:              user                                       é o nome do usuário que recebeu as
                                                              atribuições
                   role                                       é a atribuição que se tornará a atribuição
                                                              default do usuário
                   ALL                                        transforma em atribuições default todas as
                                                              atribuições concedidas ao usuário, exceto
                                                              aquelas listadas na cláusula EXCEPT. Essa
                                                              é a opção default.
                   EXCEPT                                     indica que as atribuições a seguir não
                                                              devem ser incluídas nas atribuições default




.....................................................................................................................................................
19-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando a Disponibilidade das Atribuições
.....................................................................................................................................................

Sintaxe (continuação)
          NONE                     não transforma as atribuições concedidas
                                   ao usuário em atribuições default. Os
                                   únicos privilégios que o usuário terá no
                                   login serão aqueles designados diretamente
                                   ao usuário.
Como é necessário conceder as atribuições para que elas possam se tornar default, não
é possível definir atribuições default com o comando CREATE USER.
Para atribuições autenticadas com uma senha, a senha não será necessária quando a
atribuição for uma atribuição default.

Como Usar o Oracle Enterprise Manager para Designar
Atribuições Default
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack — > Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Users.
 4 Selecione o usuário.
 5 Selecione a guia Role.
 6 Marque a caixa Default das atribuições default.
.




    7 Clique em Apply.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-15
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




                   Ativando e Desativando Atribuições

            •    Desative uma atribuição para revogar
                 temporariamente a atribuição de um usuário.
            •    Ative uma atribuição para concedê-la
                 temporariamente.
            •    O comando SET ROLE ativa e desativa tribuições.
            •    Atribuições default são ativadas para um usuário
                 quando o login é estabelecido.
            •    É possível que uma senha seja necessária para
                 ativar uma atribuição.




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Ativando e Desativando Atribuições
Ative ou desative atribuições temporariamente para ativar ou desativar os privilégios
s




associados a atribuições. Para ativar uma atribuição, é necessário primeiro que a
atribuição seja concedida ao usuário.
Quando uma atribuição é ativada, o usuário pode usar os privilégios concedidos a essa
atribuição. Se uma atribuição for desativada, o usuário não poderá usar os privilégios
associados a essa atribuição, exceto se esse privilégio for concedido diretamente ao
usuário ou a outra atribuição ativada para esse usuário. As atribuições são ativadas
para uma sessão. Na próxima sessão, as atribuições ativas do usuário reverterão para
as atribuições default.

Especificando Atribuições a Serem Ativadas
O comando SET ROLE e o procedimento DBMS_SESSION.SET_ROLE ativam
todas as atribuições incluídas no comando e desativam todas as outras atribuições.
As atribuições podem ser ativadas em qualquer ferramenta ou programa que permita
comandos PL/SQL; entretanto, não é possível ativar uma atribuição em um
procedimento armazenado.
Você pode usar o comando ALTER USER...DEFAULT ROLE para indicar quais
atribuições serão ativadas para um usuário no login. Todas as outras atribuições serão
desativadas.
Pode ser exigida uma senha para ativar uma atribuição. A senha deve ser incluída no
comando SET ROLE para ativar a atribuição. As atribuições default designadas a um
usuário não exigem senha; elas são ativadas no login, da mesma forma que uma
atribuição sem senha.



.....................................................................................................................................................
19-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando a Disponibilidade das Atribuições
.....................................................................................................................................................

Restrições
É impossível ativar uma atribuição a partir de um procedimento armazenado, porque
essa ação pode alterar o domínio de segurança (conjunto de privilégios) que permitia
que o procedimento fosse chamado em primeiro lugar. Portanto, em PL/SQL, as
atribuições podem ser ativadas e desativadas em procedimentos de aplicação e blocos
anônimos (por exemplo, procedimentos do Oracle Forms), mas não em procedimentos
armazenados.
Se um procedimento armazenado contiver o comando SET ROLE, será gerado este
erro durante a execução:
      ORA-06565: cannot execute SET ROLE from within stored
      procedure (não é possível executar SET ROLE a partir
      do procedimento armazenado)




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-17
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




                                 Ativando e Desativando
                                 Atribuições: Exemplos

                        SET ROLE hr_clerk;
                        SET ROLE hr_clerk;


                       SET ROLE sales_clerk IDENTIFIED BY
                       commission;


                       SET ROLE ALL EXCEPT sales_clerk;
                       SET ROLE ALL EXCEPT sales_clerk;


                       SET ROLE NONE;
                       SET ROLE NONE;



                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Use estes comandos para ativar e desativar atribuições:
          SET ROLE {role [ IDENTIFIED BY PASSWORD ]
                          [, role [ IDENTIFIED BY PASSWORD ]]...
             | ALL [ EXCEPT role [, role ] ...]
              | NONE }
O comando SET ROLE desativa quaisquer outras atribuições concedidas ao usuário.
onde:      role              é o nome da atribuição
           IDENTIFIED
           BY password       fornece a senha necessária para ativar a
                             atribuição
           ALL               ativa todas as atribuições concedidas ao
                             usuário atual, exceto aquelas listadas na
                             cláusula EXCEPT. Você não pode usar esse
                             opção para ativar atribuições com senhas.
           EXCEPT role       não ativa essas atribuições
           NONE              desativa todas as atribuições da sessão
                             atual. Somente os privilégios concedidos
                             diretamente ao usuário estarão ativos.
A opção ALL sem a cláusula EXCEPT funciona somente quando todas as atribuições
ativadas não têm uma senha.




.....................................................................................................................................................
19-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando a Disponibilidade das Atribuições
.....................................................................................................................................................




                   Removendo Atribuições de Usuários



                      REVOKE sales_clerk FROM scott;
                      REVOKE sales_clerk FROM scott;




                      REVOKE hr_manager FROM PUBLIC;




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Para revogar uma atribuição de um usuário, use a mesma sintaxe de comando usada
para revogar um privilégio de sistema de um usuário:
      REVOKE role [, role ]...
            FROM           {user|role|PUBLIC}
                    [, {user|role|PUBLIC} ]
onde:              role                                       é a atribuição a ser revogada ou a
                                                              atribuição cujas atribuições são revogadas
                   user                                       é o usuário cujos privilégios de sistema ou
                                                              atribuições são revogados
                   PUBLIC                                     revoga os privilégios ou atribuições de
                                                              todos os usuários

Como Usar o Oracle Enterprise Manager para Revogar uma Atribuição
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Users (Usuários) ou Roles (Atribuições).
 4 Selecione o usuário ou atribuição.
 5 Selecione a guia Roles ou System Privileges (Privilégios de Sistema).
 6 Em Granted (Concedido), selecione a Role (Atribuição) a ser revogada.
 7 Clique na seta para cima para remover a atribuição da lista de concessões.
 8 Clique em Apply (Aplicar).

.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-19
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




                                Removendo Atribuições




                      DROP ROLE hr_manager;
                      DROP ROLE hr_manager;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Sintaxe
Para remover uma atribuição de um banco de dados, use esta sintaxe:
          DROP ROLE role
onde:      role                   é a atribuição a ser removida
Quando você elimina uma atribuição, o servidor Oracle revoga essa atribuição de
todos os usuários e atribuições aos quais ela foi concedida e a remove do banco
de dados.
Para eliminar a atribuição, é necessário que você tenha o privilégio de sistema
DROP ANY ROLE ou que tenha recebido a atribuição com ADMIN OPTION.

Como Usar o Oracle Enterprise Manager para Remover uma Atribuição
 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados:
   Start —> Programs —> Oracle - EMV2 Home —> DBA Management
   Pack —> Security Manager
 2 Especifique as informações de login e clique no botão OK.
 3 Expanda a pasta Roles.
 4 Selecione a atribuição.
 5 Selecione Object (Objeto) —> Remove (Remover).
 6 Na caixa de diálogo, clique em Yes (Sim).




.....................................................................................................................................................
19-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Controlando a Disponibilidade das Atribuições
.....................................................................................................................................................




                 Diretrizes para Criação de Atribuições

          Usuários




          Atribuições
                                     HR_CLERK                HR_MANAGER                     PAY_CLERK
          de usuário


          Atribuições
                                            BENEFITS                                        PAYROLL
          de aplicação


          Privilégios
          de aplicação
                                           Privilégios                            Privilégios da folha
                                         dos benefícios                             de pagamentos
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Diretrizes para Criação de Atribuições
Como uma atribuição inclui os privilégios necessários para executar uma tarefa, o
nome da atribuição é normalmente uma tarefa de aplicação ou título de serviço. O
exemplo acima utiliza tanto tarefas de aplicação como títulos de serviço para nomes
de atribuições.
 1 Crie uma atribuição para cada tarefa de aplicação. O nome da atribuição de
    aplicação corresponde a uma tarefa na aplicação, como a folha de pagamentos.
 2 Designe os privilégios necessários para executar a tarefa à atribuição da aplicação.
 3 Crie uma atribuição para cada tipo de usuário. O nome da atribuição do usuário
    corresponde a um título de serviço, como PAY_CLERK.
 4 Conceda somente atribuições de aplicação, e não privilégios individuais, a
    atribuições de usuário.
 5 Conceda atribuições de usuário e de aplicação a usuários.
Se uma modificação em uma aplicação determinar que serão necessários novos
privilégios para executar a tarefa de folha de pagamentos, o DBA precisará somente
designar os novos privilégios à atribuição de aplicação, PAYROLL. Todos os usuários
que estiverem executando essa tarefa no momento receberão os novos privilégios.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-21
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




                          Diretrizes para Usar Senhas e
                               Atribuições Default


                    Protegida por senha
                    (não-default)                                         Atribuição default


                         PAY_CLERK                                         PAY_CLERK_RO




                    Privilégios INSERT,                                    Privilégios Select
                    UPDATE, DELETE
                         e SELECT
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Usando Senhas
• As senhas oferecem um nível adicional de segurança ao ativar uma atribuição.
  Por exemplo, a aplicação pode exigir que um usuário digite uma senha ao ativar
  a atribuição PAY_CLERK, porque essa atribuição pode ser usada para emitir
  cheques.
• As senhas permitem que uma atribuição seja ativada somente através de uma
  aplicação. Essa técnica é mostrada no exemplo acima.
  – O DBA concedeu ao usuário duas atribuições, PAY_CLERK e
      PAY_CLERK_RO.
  – A atribuição PAY_CLERK recebeu todos os privilégios necessários à execução
      da função de escriturário de folha de pagamentos.
  – A atribuição PAY_CLERK_RO (RO significa Read-Only , somente para
      leitura) recebeu somente privilégios SELECT nas tabelas necessárias à
      execução da função de escriturário de folha de pagamentos.
  – O usuário pode estabelecer login no SQL Plus para executar consultas, mas
      não pode modificar os dados, porque PAY_CLERK não é uma atribuição
      default e o usuário não conhece a senha de PAY_CLERK.
  – Quando o usuário estabelece login na aplicação de folha de pagamentos, ele
      ativa a atribuição PAY_CLERK fornecendo a senha. Ela está codificada no
      programa, o usuário não é solicitado a fornecê-la.




.....................................................................................................................................................
19-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exibindo Informações sobre Atribuições
.....................................................................................................................................................


Exibindo Informações sobre Atribuições


                    Exibindo Informações de Atribuição
           View de Atribuição                   Descrição
           DBA_ROLES                            Todas as atribuições existentes no
                                                banco de dados
           DBA_ROLE_PRIVS                       Atribuições concedidas a usuários e
                                                atribuições
           ROLE_ROLE_PRIVS                      Atribuições concedidas a atribuições
           DBA_SYS_PRIVS                        Privilégios de sistema concedidos a
                                                usuários e atribuições
           ROLE_SYS_PRIVS                       Privilégios de sistema concedidos a
                                                atribuições
           ROLE_TAB_PRIVS                       Privilégios de tabela concedidos a
                                                atribuições
           SESSION_ROLES                        Atribuições ativadas atualmente
                                                pelo usuário
                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultar Informações de Atribuição
Diversas views de dicionário de dados que contêm informações sobre privilégios
concedidos a usuários também contêm informações sobre privilégios para atribuições.
      SQL> SELECT role, password_required FROM dba_roles;
      ROLE                                                                                  PASSWORD
      ------------------------------                                                        -----------
      CONNECT                                                                               NO
      RESOURCE                                                                              NO
      DBA                                                                                   NO
      ...                                                                                   ..
      SELECT_CATALOG_ROLE                                                                   NO
      EXECUTE_CATALOG_ROLE                                                                  NO
      DELETE_CATALOG_ROLE                                                                   NO
      IMP_FULL_DATABASE                                                                     NO
      EXP_FULL_DATABASE                                                                     NO
      SALES_CLERK                                                                           YES
      HR_CLERK                                                                              EXTERNAL




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-23
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................


Usando Controle de Acesso Detalhado


                         Controle de Acesso Detalhado

              Usuários
                                      A                         B                       C



              Política                            HR_ACCESS

                                                         SELECT




                                    INSERT                                  UPDATE
                                                          ORDERS


                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




O Que é Controle de Acesso Detalhado?
O controle de acesso detalhado permite implementar políticas de segurança com
funções e, em seguida, associar essas políticas de segurança a tabelas ou views. O
banco de dados impõe automaticamente essas políticas de segurança, não importando
a forma como os dados foram acessados.
Você pode:
• Usar políticas diferentes para SELECT, INSERT, UPDATE e DELETE.
• Usar políticas de segurança somente onde elas forem necessárias, como, por
    exemplo, em informações de salário.
• Usar mais de uma política para cada tabela, inclusive políticas baseadas em
    aplicações pré-criadas.
O pacote DBMS_RLS do PL/SQL permite administrar as políticas de segurança.
Usando esse pacote, é possível adicionar, eliminar, ativar, desativar e atualizar as
políticas criadas por você.
Observação: O modo de implementar o controle de acesso detalhado não será
abordado neste curso.




.....................................................................................................................................................
19-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Usando Controle de Acesso Detalhado
.....................................................................................................................................................




                        Controle de Acesso Detalhado:
                               Como Funciona

            •    Acesso direto ou indireto de usuário a objeto com
                 uma política anexada chama automaticamente a
                 política.
            •    Pacote de política retorna um predicado (uma
                 condição WHERE).
            •    O banco de dados grava novamente a instrução
                 SQL de maneira dinâmica acrescentando o
                 predicado.




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como Funciona o Controle de Acesso Detalhado?
A implementação do controle de acesso detalhado é feita através de modificação
dinâmica. Quando um usuário acessa um objeto (diretamente ou através de uma
subconsulta) que tenha uma política de segurança anexada, o RDBMS (object
relational database management system) consulta automaticamente o pacote que
implementa a política dessa view ou tabela. A política retorna um predicado (condição
de acesso) que é acrescentado à consulta. A instrução é analisada, otimizada e
executada.
Se houver várias políticas anexadas a uma tabela, o servidor de dados acrescentará
"ANDs" aos predicados retornados por cada política. Por exemplo, é possível ter uma
política para consultas e outra para algumas ou todas as instruções DML (INSERT,
UPDATE, DELETE).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-25
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................


Sumário


                                                    Sumário


            Nesta lição, você aprendeu como:
            •    Criar atribuições
            •    Designar privilégios a atribuições
            •    Designar atribuições a usuários ou atribuições
            •    Estabelecer atribuições default




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
19-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................

Referência Rápida

 Contexto                                                                 Referência
 Parâmetros de inicialização                                              Nenhum
 Views de desempenho dinâmicas                                            Nenhuma
 Views de dicionário de dados                                             DBA_ROLES
                                                                          DBA_ROLE_PRIVS
                                                                          DBA_SYS_PRIVS
                                                                          ROLE_ROLE_PRIVS
                                                                          ROLE_SYS_PRIVS
                                                                          ROLE_TAB_PRIVS
                                                                          SESSION_ROLES
 Comandos                                                                 CREATE_ROLE
                                                                          ALTER ROLE
                                                                          DROP ROLE
                                                                          SET ROLE
                                                                          ALTER USER ... DEFAULT ROLES
                                                                          GRANT
                                                                          REVOKE
 Procedimentos e funções empacotados                                      DBMS_SESSION.SET_ROLE




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       19-27
Lição 19: Gerenciando Atribuições
.....................................................................................................................................................




.....................................................................................................................................................
19-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
20
               .................................




       Usando Suporte a
Idioma Nacional (National
 Language Support - NLS)
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................


Objetivos


                                                  Objetivos
            Após completar esta lição, você poderá executar
            o seguinte:
            •    Escolher o conjunto de caracteres e o conjunto de
                 caracteres nacionais para um banco de dados
            •    Especificar o comportamento dependente de
                 idioma usando parâmetros de inicialização,
                 variáveis de ambiente e o comando ALTER
                 SESSION
            •    Usar os diferentes tipos de parâmetros NLS
                 (National Language Support, Suporte a Idioma
                 Nacional)
            •    Explicar a influência no comportamento de
                 aplicação dependente de idioma
            •    Obter informações sobre o uso de NLS
                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
20-2                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Visão Geral
.....................................................................................................................................................


Visão Geral


                                         Recursos de NLS

            •    Suporte a idioma
            •    Suporte a território
            •    Suporte a conjunto de caracteres
            •    Classificação lingüística
            •    Suporte a mensagens
            •    Formatos de data e hora
            •    Formatos numéricos
            •    Formatos monetários




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Suporte a Idioma Nacional
O NLS (National Language Support, suporte a idioma nacional) garante que as
mensagens de erro e os utilitários de banco de dados, a ordem de classificação e as
convenções de data, hora, monetárias, numéricas e de calendário sejam adaptadas
automaticamente ao idioma nacional.
A Oracle suporta cerca de 45 idiomas, 60 territórios, 60 classificações lingüísticas e
vários conjuntos de caracteres codificados.
As operações que dependem de idioma são controladas por diversos parâmetros e
variáveis de ambiente, tanto no cliente como no servidor.
O servidor e o cliente podem ser executados no mesmo local ou em locais diferentes.
Quando o cliente e o servidor utilizam diferentes conjuntos de caracteres, o servidor
Oracle trata da conversão de conjunto de caracteres automaticamente.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         20-3
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Suporte a Idioma Nacional
• Os usuários podem interagir, armazenar, processar e recuperar dados em seu
  idioma nativo, incluindo idiomas do leste e oeste europeu, Oriente Médio, leste e
  sudeste asiático.
• Os diferentes países e localidades ditam diferentes convenções culturais que
  afetam diretamente os formatos de dados.
• São suportados muitos esquemas de codificação de caracteres diferentes,
  incluindo conjuntos de caracteres codificados de byte simples, de vários bytes e
  de largura fixa.
• O servidor Oracle oferece várias classificações lingüísticas diferentes para a
  obtenção de classificações lingüísticas precisas.
• Os utilitários de banco de dados e mensagens de erro aparecem no idioma nativo
  suportado. Os produtos da Oracle são traduzidos para 26 idiomas diferentes.
• Os formatos de data e hora podem ser expressos de acordo com convenções ISO
  para hora, dia, mês e ano.
• Há suporte para calendários nacionais, como gregoriano, japonês, imperial e
  Thai Buddha.
• Os dados numéricos são representados nos formatos locais apropriados.
• Os símbolos monetários refletem a economia local e as convenções ISO.
  Os símbolos de crédito e débito também diferem de local para local.




.....................................................................................................................................................
20-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais
.....................................................................................................................................................


Escolhendo um Banco de Dados e um Conjunto
de Caracteres Nacionais

                                 Diferentes Tipos de
                               Esquema de Codificação

            A Oracle suporta diferentes classes de esquema de
            codificação de caracteres:
            •    Conjuntos de caracteres de byte simples
                  – 7-bits
                  – 8-bits
            •    Conjunto de caracteres de vários bytes de
                 largura variável
            •    Conjunto de caracteres de vários bytes de
                 largura fixa
            •    Unicode (UTF8, AL24UTFFSS)

                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Esquemas de Codificação de Caracteres
Um esquema de codificação de caracteres especifica códigos numéricos que
correspondem a caracteres que um computador ou terminal pode exibir e receber.
Os esquemas de codificação de caracteres são usados para interpretar dados em
símbolos significativos de um terminal para uma máquina host.
A Oracle oferece diferentes classes de esquema de codificação:
• Byte simples
• Largura variável
• Largura fixa
• Unicode

Conjuntos de Caracteres de Byte Simples
Em um conjunto de caracteres de byte simples, cada caractere ocupa um byte.
Esquemas de codificação de byte simples de 7 bits pode definir até 128 (27) caracteres;
esquemas de codificação de byte simples de 8 bits podem definir até 256 (28)
caracteres.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         20-5
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Exemplos de Esquemas de Byte Simples
Conjunto de caracteres de 7-bits: ASCII de 7-bits americanos (US7ASCII)
Conjunto de caracteres de 8-bits:
• ISO 8859-1 para a Europa Ocidental (WE8ISO8859P1)
• EBCDIC Code Page 500 de 8 bits para a Europa Ocidental
   (WE8EBCDIC500)
• DEC de 8 bits para a Europa Ocidental (WE8DEC)

Conjuntos de Caracteres de Vários Bytes de Largura Variável
Um conjunto de caracteres de vários bytes é representado por um ou mais bytes por
caractere. Os conjuntos de caracteres de vários bytes são normalmente usados para
suporte a idiomas asiáticos. Alguns esquemas de codificação de vários bytes usam o
valor do bit mais significativo para indicar se um byte representa um byte simples ou
se faz parte de uma série de bytes que representam um caractere. Contudo, outros
esquemas de codificação de caracteres diferenciam caracteres de byte simples dos de
vários bytes. Um código de controle de saída, enviado por um dispositivo, indica que
os próximos bytes são caracteres de byte duplo, até um código de entrada ser
encontrado.

Exemplos de Esquemas de Vários Bytes de Largura Variável
• JEUC (Japanese Extended UNIX Code, código UNIX estendido
   japonês)
• Chinese GB2312-80 (CGB2312-80) (Chinês)

Conjuntos de Caracteres de Vários Bytes de Largura Fixa
Os conjuntos de caracteres de largura fixa fornecem suporte semelhante ao dos
conjuntos de caracteres de vários bytes, exceto pelo formato ter um número fixo de
bytes para cada caractere.
Isso proporciona a vantagem de ter uma representação de tamanho de byte uniforme
para cada caractere.

Exemplos de Conjuntos de Caracteres de Vários Bytes de Largura Fixa
• JA16EUCFIXED, japonês de 16 bits (um subconjunto de JA16EUC de
   largura fixa)
• JA16SJISFIXED, japonês de 16 bits (um subconjunto de JA16SIJS de
   largura fixa)




.....................................................................................................................................................
20-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais
.....................................................................................................................................................

Conjunto de Caracteres Unicode
Unicode é um padrão mundial de codificação de caracteres que pode representar todos
os caracteres para uso de computador, incluindo caracteres e símbolos técnicos usados
em publicação. No total, o Unicode versão 2.0 pode representar 38.885 caracteres.
O repertório de caracteres Unicode pode ser representado em diversos formatos de
codificação diferentes.
UTF8 (Universal Character Set Transformation Format, Formato de transformação
do conjunto de caracteres universal) é um formato de largura fixa de dois bytes; UTF8
(Universal Character Set Transformation Format, formato de transformação do
conjunto de caracteres universal) é um formato de vários bytes de largura variável.
O UCS2 e UTF8 codificam o mesmo repertório de caracteres: Unicode 1.1 ou
Unicode 2.0.
O Oracle7 usa Unicode 1.1 codificado como UTF8 (conjunto de caracteres:
AL24UTFFSS); O Oracle8 oferece adicionalmente o Unicode 2.0 codificado como
UTF8 (conjunto de caracteres: UTF8). A vantagem do UTF8 é que inclui ASCII
usando a mesma codificação de byte simples.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         20-7
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................




            Conjuntos de Caracteres e Conjuntos de
          Caracteres Nacionais de um Banco de Dados
           Conjuntos de Caracteres de                                Conjuntos de Caracteres
                Banco de Dados                                             Nacionais
         Definido no momento da                               Definido no momento da
         criação                                              criação
         Impossível alterar sem                               Impossível alterar sem
         recriação                                            recriação
         Armazena colunas de dados                            Armazena colunas de dados do
         do tipo CHAR, VARCHAR2,                              tipo NCHAR, NVARCHAR2 e
         CLOB, LONG                                           NCLOB
         Pode armazenar conjuntos de                          Pode armazenar conjuntos de
         caracteres de largura variável                       caracteres de vários bytes de
                                                              largura fixa e variável


                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Tipos de Conjuntos de Caracteres
A instrução CREATE DATABASE tem a cláusula CHARACTER SET e a cláusula
opcional adicional NATIONAL CHARACTER SET para declarar o conjunto de
caracteres a ser usado como o conjunto de caracteres do banco de dados e o conjunto
de caracteres nacionais. Nenhum desses conjuntos de caracteres pode ser alterado
após a criação do banco de dados. Se a cláusula NATIONAL CHARACTER SET não
estiver presente, o conjunto de caracteres nacionais usa por default o conjunto de
caracteres do banco de dados.
Como o conjunto de caracteres do banco de dados é usado para identificar e manter o
código-fonte SQL e PL/SQL, ele deve ter EBCDIC ou ASCII de 7-bits como
subconjunto, o que for nativo para a plataforma. Portanto, não é possível usar um
conjunto de caracteres de vários bytes de largura fixa como conjunto de caracteres do
banco de dados, somente como o conjunto de caracteres nacionais.
Os tipos de dados NCHAR, NVARCHAR2 e NCLOB são fornecidos para declarar
colunas como variantes dos tipos básicos CHAR, VARCHAR2 e CLOB. Observe que
eles são armazenados usando o conjunto de caracteres nacionais e não o conjunto de
caracteres do banco de dados.




.....................................................................................................................................................
20-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais
.....................................................................................................................................................

Tipos de Conjuntos de Caracteres (continuação)
• Para declarar um item de caractere de tamanho fixo que utilize o conjunto de
   caracteres nacionais, use a especificação de tipo de dados NCHAR [(tamanho)].
• Para declarar um item de caractere de tamanho variável que utilize o conjunto de
   caracteres nacionais, use a especificação de tipo de dados NVARCHAR2
   (tamanho).
• Para declarar um item CLOB (Character Large Object, objeto grande de
   caracteres) que contenha caracteres de vários bytes de largura fixa e utilize o
   conjunto de caracteres nacionais, use a especificação de tipo de dados
   NCLOB (tamanho).
Observação
• A Oracle não suporta o conjunto de caracteres nacionais no tipo de dados LONG.
• O aspecto de largura fixa ou variável da codificação de um conjunto de caracteres
   é independente do aspecto de tamanho fixo ou variável dos tipos CHAR e
   VARCHAR2. Um aspecto refere-se ao número de bytes que cada caractere
   necessita em uma string e o outro ao espaço total alocado à string. Um conjunto de
   caracteres de largura fixa ou variável pode ser usado para uma coluna de tipo de
   tamanho fixo (CHAR ou NCHAR) e da mesma maneira para um tipo de tamanho
   variável (VARCHAR2 ou NVARCHAR2).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                         20-9
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................




                                                  Diretrizes


            •    Escolha um conjunto de caracteres do banco de
                 dados e conjunto de caracteres nacionais
                 estreitamente relacionados.
            •    Operações de string podem ser mais velozes com
                 conjuntos de caracteres de largura fixa.
            •    Conjuntos de caracteres de largura variável
                 utilizam espaço com mais eficiência.




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Diretrizes
O conjunto de caracteres do banco de dados e o conjunto de caracteres nacionais
devem estar estreitamente relacionados; por exemplo, clientes japoneses escolherão
JA16EUC como o conjunto de caracteres do banco de dados e JA16EUCFIXED como
o conjunto de caracteres nacionais.




.....................................................................................................................................................
20-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Especificando o Comportamento Dependente do Idioma
.....................................................................................................................................................


Especificando o Comportamento Dependente do Idioma

                      Especificando o Comportamento
                          Dependente do Idioma


                            Parâmetro de inicialização
                                          Variável de ambiente
                                                         Comando
                                                       ALTER SESSION




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Três Maneiras de Especificar Parâmetros NLS
Existem três maneiras de especificar parâmetros NLS:
• Como parâmetros de inicialização no lado servidor para especificar o ambiente
   NLS default do servidor. Essas definições default não têm efeito sobre o cliente.
• Como variáveis de ambiente do cliente para especificar o comportamento
   dependente de local que anula os defaults definidos para o servidor.
• Como o parâmetro ALTER SESSION para anular o default definido para a sessão
   ou servidor.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-11
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................




                  Especificando o Comportamento
                Dependente do Idioma Para o Servidor

            •     NLS_LANGUAGE especifica:
                   - O idioma para mensagens
                   - Nomes de dia e mês
                   - Símbolos para d.C., a.C., A.M. e P.M.
                   - O mecanismo de classificação default
            •    NLS_TERRITORY especifica:
                  - Numeração de dia e semana
                  - Formato de data default, caractere decimal,
                    separador de grupo, símbolos de moeda local
                    e ISO default



                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Parâmetros de Inicialização NLS
O parâmetro de inicialização NLS_LANGUAGE define o valor de convenções
dependentes do idioma, como:
• Idioma usado para mensagens Oracle
• Idioma usado para nomes de dia e mês e suas abreviações
• Símbolos usados para equivalentes de idioma de a.m., p.m., d.C. e a.C.
• Seqüência de classificação default de dados de caracteres
O parâmetro de inicialização NLS_TERRITORY define valores para convenções
dependentes do território, que incluem:
• Formato de data default
• Caractere decimal e separador de grupos
• Símbolo de moeda local
• Símbolo de moeda ISO
• Cálculo do número de semana ISO
• Dia inicial da semana
Observação: Quando o nome do território contém um espaço, como em Países
Baixos, o nome do território deve estar entre aspas, como, por exemplo
"Países Baixos".




.....................................................................................................................................................
20-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Especificando o Comportamento Dependente do Idioma
.....................................................................................................................................................




                           Valores Default Dependentes
                              de Idioma e Território


             PARÂMETRO                                        VALORES

             NLS_LANGUAGE                                     AMERICAN
                 NLS_DATE_LANGUAGE                                   AMERICAN
                 NLS_SORT                                           BINARY

             NLS_TERRITORY                                    AMERICA
                 NLS_CURRENCY                                      $
                 NLS_ISO_CURRENCY                                  AMERICA
                 NLS_DATE_FORMAT                                   DD-MON-YY
                 NLS_NUMERIC_CHARACTERS                            ,.



                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Parâmetros de Inicialização NLS
O parâmetro de inicialização NLS_LANGUAGE determina os valores default dos
seguintes parâmetros:
Coluna                                                                 Descrição
NLS_DATE_LANGUAGE                                                      Altera explicitamente o idioma dos nomes de dia e
                                                                       mês, valores abreviados e por extenso além de
                                                                       outros elementos de formato de data.
NLS_SORT                                                               Altera a seqüência de classificação lingüística que o
                                                                       servidor Oracle utiliza para classificar valores de
                                                                       caracteres.(O valor de classificação deve ser
                                                                       BINARY ou o nome de uma seqüência de
                                                                       classificação lingüística).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-13
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Parâmetros de Inicialização NLS (continuação)
NLS_TERRITORY determina os valores default dos seguintes parâmetros:
 Coluna                                                          Descrição
 NLS_CURRENCY                                                    Especifica explicitamente um novo símbolo de
                                                                 moeda local.
 NLS_ISO_CURRENCY                                                Especifica explicitamente o território cujo símbolo
                                                                 de moeda ISO deve ser usado.
 NLS_DATE_FORMAT                                                 Especifica explicitamente um novo formato de data
                                                                 default. (O valor deve ser um modelo do formato
                                                                 de data).
 NLS_NUMERIC_CHARACTERS                                          Especifica explicitamente um novo caractere
                                                                 decimal e separador de grupos.

Suporte a Moeda Dupla para o Euro
Em 1 de janeiro de 1999, a nova moeda da União Européia, o euro, fez sua estréia.
Para suportar a nova moeda da União Européia, foi adicionado um suporte a moeda
dupla para determinados territórios. Um parâmetro de inicialização
NLS_DUAL_CURRENCY define um símbolo de moeda alternativa para a sessão
de usuário.
Os territórios a seguir têm o símbolo do euro adicionado para suporte a moeda dupla:
                Alemanha        Holanda
                Áustria         Irlanda
                Bélgica         Itália
                Espanha         Luxemburgo
                Finlândia       Portugal
                França
Os conjuntos de caracteres ISO, como WE8ISO8859P1, Páginas de Códigos da MS e
IBM, têm pontos de código especificados para o símbolo do euro.




.....................................................................................................................................................
20-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Especificando o Comportamento Dependente do Idioma
.....................................................................................................................................................




                 Especificando o Comportamento
                 Dependente de Idioma da Sessão
            •    Variável de ambiente:
                 NLS_LANG=<language>_<territory>.<charset>
            •    Variáveis adicionais de ambiente:
                         – NLS_DATE_FORMAT
                         – NLS_DATE_LANGUAGE
                         – NLS_SORT
                         – NLS_NUMERIC_CHARACTERS
                         – NLS_CURRENCY
                         – NLS_ISO_CURRENCY
                         – NLS_CALENDAR

                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




A Variável de Ambiente NLS_LANG
Anule o comportamento NLS default de um usuário individual com a variável de
ambiente NLS_LANG. O valor de NLS_LANG anula quaisquer valores dos
parâmetros de inicialização NLS.
Cada componente controla um subconjunto de recursos NLS:
NLS_LANG=<language>_<territory>.<charset>
Por exemplo:
      NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1
onde:              language                                   anula o valor de NLS_LANGUAGE e
                                                              controla os mesmos recursos que
                                                              NLS_LANGUAGE
                   territory                                  anula o valor de NLS_TERRITORY e
                                                              controla os mesmos recursos que
                                                              NLS_TERRITORY
                   charset                                    especifica o esquema de codificação de
                                                              caracteres usado pela aplicação do cliente
                                                              (normalmente a do terminal do usuário)




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-15
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................




                           Conjuntos de Caracteres em
                           Arquitetura Cliente/Servidor


           NLS_LANG=<idioma>_<território>.<charset>
            NLS_LANG=<idioma>_<território>.<charset>
           NLS_NCHAR=<ncharset>
            NLS_NCHAR=<ncharset>



                                                                          CREATE DATABASE ...
                                                                          CREATE DATABASE ...
                                                                          CHARACTER SET <charset>
                                                                          CHARACTER SET <charset>
                                                                          NATIONAL CHARACTER SET
                                                                          NATIONAL CHARACTER SET
                                                                          <ncharset>
                                                                          <ncharset>
                                                                          ...
                                                                          ...




                                                                                                         ®


                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




A Variável de Ambiente NLS_LANG (continuação)
NLS_LANG define o esquema de codificação de caracteres do terminal de um cliente.
Diferentes clientes podem usar diferentes esquemas de codificação. Os dados passados
entre cliente e servidor são convertidos automaticamente entre os dois esquemas de
codificação. O esquema de codificação do banco de dados deve ser um superconjunto,
ou equivalente, de todos os esquemas de codificação do cliente. A conversão é
transparente para uma aplicação cliente.

Variáveis Adicionais de Ambiente
Todos os parâmetros de inicialização NLS estão disponíveis como variáveis de
ambiente, possibilitando a especificação de características NLS individuais para
cada cliente.
Além disso, NLS_CALENDAR pode ser usado para especificar o sistema de
calendário que o servidor Oracle utiliza; por exemplo, gregoriano, persa ou
Thai Buddha.
As variáveis a seguir podem ser definidas somente no ambiente do cliente:
• NLS_CREDIT
• NLS_DEBIT
• NLS_DISPLAY
• NLS_LANG
• NLS_LIST_SEPARATOR
• NLS_MONETARY
• NLS_NCHAR



.....................................................................................................................................................
20-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Especificando o Comportamento Dependente do Idioma
.....................................................................................................................................................

Variáveis Adicionais de Ambiente (continuação)
Observação
• A descrição desses parâmetros pode ser encontrada no Oracle8i: Server
   Reference Manual.
• Se a variável de ambiente ORA_NLS33 (consulte a lição "Criando um Banco de
   Dados") não estiver definida, somente será possível criar o banco de dados com o
   conjunto de caracteres default US7ASCII. ORA_NLS deve ser definido no UNIX
   da seguinte maneira:
   $ORACLE_HOME/ocommon/nls/admin/data
• No Windows NT, parâmetros, como NLS_LANG e ORA_NLS33, são definidos
   automaticamente durante a instalação e armazenados no registro na pasta
   HKEY_LOCAL_MACHINESOFTWAREORACLE.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-17
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................




                     Especificando o Comportamento
                   Dependente de Idioma Para a Sessão



              ALTER SESSION SET
              ALTER SESSION SET
              NLS_DATE_FORMAT=‘DD.MM.YYYY’;
              NLS_DATE_FORMAT=‘DD.MM.YYYY’;

              DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’,
              DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’,
              ’’’DD.MM.YYYY’’’) ;
              ’’’DD.MM.YYYY’’’) ;




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Alterando Parâmetros NLS
Altere características NLS individuais de uma sessão com o comando ALTER
SESSION. Todas as variáveis de ambiente podem ser definidas tanto no lado cliente
como no servidor, e também podem ser modificadas com a emissão do comando
ALTER SESSION.
No exemplo acima, o formato de data é alterado para a sessão.
Além disso, ferramentas como SQL*Plus lêem variáveis de ambiente e emitem o
comando ALTER SESSION correspondente.
Além de emitir explicitamente comandos ALTER SESSION, existe um pacote de
banco de dados DBMS_SESSION.SET_NLS que assume o nome e valor do
parâmetro.




.....................................................................................................................................................
20-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Parâmetros NLS e Funções SQL
.....................................................................................................................................................


Parâmetros NLS e Funções SQL


                                             Classificando

            •       O Oracle fornece uma classificação lingüística.
            •       NLS_SORT especifica tipos de classificação.
            •       A função NLSSORT reflete a comparação lingüística.


                ALTER SESSION SET NLS_SORT=GERMAN;
                SELECT letter FROM letters ORDER BY letter;
                LETTER
                ------
                ä
                z




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Como NLS Afeta Classificações
Uma classificação binária é um mecanismo de classificação convencional através do
qual letras são classificadas de acordo com os valores binários usados para codificar os
caracteres. A posição alfabética de um caractere pode variar em diferentes idiomas.
Por exemplo, ä é classificado antes de b em alemão, mas ä ocorrerá depois de z se
você usar uma classificação binária.
Para superar as limitações da classificação binária, o servidor Oracle oferece
definições lingüísticas através da definição do parâmetro NLS_SORT.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-19
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Como NLS Afeta Classificações (continuação)
Os exemplos a seguir ilustram o comportamento de classificação:
      SQL> ALTER SESSION SET NLS_SORT=BINARY;
      Session altered.
      SQL> SELECT letter FROM letters ORDER BY letter;
      L
      -
      a
      b
      c
      z
      ü
      ä
      6 rows selected.
      SQL> ALTER SESSION SET NLS_SORT= GERMAN;
      Session altered.
      SQL> SELECT letter FROM LETTERS ORDER BY 1;
      L
      -
      ä
      ü
      a
      b
      c
      z
      6 rows selected.




.....................................................................................................................................................
20-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Parâmetros NLS e Funções SQL
.....................................................................................................................................................

Como NLS Afeta Classificações (continuação)
A função NLSSORT pode ser usada para ativar a comparação de acordo
com convenções lingüísticas e não valores binários.
      SQL> SELECT letter FROM letters WHERE letter < 'z';
      L
      -
      a
      b
      c


      SQL> SELECT letter FROM letters
          2      WHERE NLSSORT(letter) < NLSSORT('z');
      L
      -
      a
      b
      ä
      c
      ü




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-21
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................


Parâmetros NLS em Funções SQL

                                Usando Parâmetros NLS
                                   em Funções SQL


              SELECT TO_CHAR(hiredate,’DD.MON.YYYY’,
              SELECT TO_CHAR(hiredate,’DD.MON.YYYY’,
              ‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp;
              ‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp;

              SELECT ename, TO_CHAR(sal,’9G999D99’,
              SELECT ename, TO_CHAR(sal,’9G999D99’,
              ‘NLS_NUMERIC_CHARACTERS=‘‘,.’’’)
              ‘NLS_NUMERIC_CHARACTERS=‘‘,.’’’)
              FROM emp;
              FROM emp;



                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Funções SQL com Parâmetros NLS
As funções de caractere SQL suportam caracteres de byte simples e de vários bytes.
Alguns parâmetros Oracle NLS de funções SQL devem ser especificados
explicitamente como parte de sua lista de parâmetros. Assim, funções SQL podem
anular o comportamento especificado pelo ambiente NLS.




.....................................................................................................................................................
20-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Parâmetros NLS em Funções SQL
.....................................................................................................................................................

Exemplos de Uso de Parâmetros NLS em Funções SQL
        SQL> SELECT TO_CHAR(hiredate,'dd.mon.yyyy',
            2      'NLS_DATE_LANGUAGE=GERMAN')
            3      FROM emp)
      TO_CHAR(HIR
      -----------
      17.dez.1980
      20.feb.1981
      22.feb.1981
      02.apr.1981
      28.sep.1981
      01.mai.1981
      09.jun.1981
      19.apr.1987
      17.nov.1981
      08.sep.1981
      23.mai.1987
      03.dez.1981
      03.dez.1981
      23.jan.1982
      14 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-23
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Exemplos de Uso de Parâmetros NLS em Funções SQL (continuação)
      SQL> SELECT ename,
           2     TO_CHAR(sal,'99G999D99','NLS_NUMERIC_CHARACTERS='',.''')
           3     FROM emp;
      ENAME         TO_CHAR(SA
      -------       ----------
      SMITH             800,00
      ALLEN           1.600,00
      WARD            1.250,00
      JONES           2.975,00
      MARTIN          1.250,00
      BLAKE           2.850,00
      CLARK           2.450,00
      SCOTT           3.000,00
      KING            5.000,00
      TURNER          1.500,00
      ADAMS           1.100,00
      JAMES             950,00
      FORD            3.000,00
      MILLER          1.300,00
      14 rows selected.




.....................................................................................................................................................
20-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Parâmetros NLS em Funções SQL
.....................................................................................................................................................

Exemplos de Uso de Parâmetros NLS em Funções SQL (continuação)
As funções SQL a seguir usam parâmetros NLS:
Função                                                           Parâmetro NLS
TO_DATE                                                          NLS_DATE_LANGUAGE
                                                                 NLS_CALENDAR
TO_NUMBER                                                        NLS_NUMERIC_CHARACTERS
                                                                 NLS_CURRENCY
                                                                 NLS_ISO_CURRENCY
TO_CHAR                                                          NLS_DATE_LANGUAGE
                                                                 NLS_NUMERIC_CHARACTERS
                                                                 NLS_CURRENCY
                                                                 NLS_ISO_CURRENCY
                                                                 NLS_CALENDAR
NLS_UPPER, NLS_LOWER,                                            NLS_SORT
NLS_INITCAP, NLSSORT

Diversos elementos de máscara de formato foram definidos para funções, como
TO_CHAR, TO_DATE e TO_NUMBER.

Elementos de Máscara de Formato de Número
• "D" para separador decimal
• "G" para separador de grupos (milhares)
• "L" para símbolo de moeda local
• "C" para símbolo de moeda ISO local
• "U" para símbolo de moeda dupla, usada para o euro

Elementos de Máscara de Formato de Data
• "RM, rm" para número de mês romano
• "IW" para número de semana ISO
• "IYYY, IYY, IY," e "I" para ano ISO




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-25
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................


Suporte Para Índice Lingüístico

                         Suporte de Idioma Nacional:
                        Suporte Para Índice Lingüístico

            •    Indexação lingüística
            •    Alto desempenho com classificação local
                   CREATE INDEX nls_ename ON
                           emp (NLSSORT(ename, ‘NLS_SORT = German’));

            •    Parâmetro NLS_COMP para comparações
                 lingüísticas




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Indexação Lingüística
Os índices funcionais, descritos na lição Índices e Tabelas Organizadas por Índices,
podem ser especializados para criar índices classificados lingüisticamente. A função
SQL NLSSORT retorna a string de bytes usada para classificar o primeiro parâmetro
na seqüência dada de classificação lingüística. Nesse exemplo, um índice é criado em
ENAME, classificado de acordo com a ordem de classificação alemã. Isso permite
executar consultas baseadas em índices sobre dados classificados de acordo com as
regras de cada idioma.

Comportamento Lingüístico de Operadores de Comparação
NLS_COMP é um parâmetro de inicialização dinâmico que controla como os
operadores de comparação, como <, > e = tratam a ordenação lingüística. Quando
definido como BINARY (o default), a comparação baseia-se no valor binário da
string. Quando definido como ANSI, os operadores de comparação usam seqüências
de classificação lingüística para determinar o resultado da operação de acordo com o
parâmetro NLS_SORT da sessão.




.....................................................................................................................................................
20-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Importando e Carregando Dados Usando NLS
.....................................................................................................................................................


Importando e Carregando Dados Usando NLS

                               Importando e Carregando
                                 Dados Usando NLS

            •    Os dados serão convertidos de NLS_LANG
                 para o conjunto de caracteres do banco de dados
                 durante a importação
            •     LOADER:
                   – Convencional: Os dados são convertidos para
                     o conjunto de caracteres da sessão
                     especificado por NLS_LANG.
                   – DIRECT: Os dados são convertidos
                     diretamente para o conjunto de caracteres do
                     banco de dados.


                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




NLS com Importar e SQL*Loader
Durante a importação, os dados são automaticamente convertidos para o conjunto de
caracteres da sessão especificada conforme determinado pelo parâmetro NLS_LANG.
Após os dados terem sido convertidos para o conjunto de caracteres da sessão, eles
serão convertidos, em seguida, para o conjunto de caracteres do banco de dados.
Isso significa que NLS_LANG precisa ser definido para o conjunto de caracteres do
arquivo de exportação.
SQL*Loader também tem a capacidade de converter dados do conjunto de caracteres
do arquivo de dados para o conjunto de caracteres do banco de dados.
Ao usar o caminho convencional, os dados são convertidos para o conjunto de
caracteres da sessão especificado pelo parâmetro NLS_LANG para essa sessão.
No caminho direto, os dados são convertidos diretamente para o conjunto de
caracteres do banco de dados.
O arquivo de controle do SQL*Loader mostra como interpretar o arquivo de dados.
O conjunto de caracteres do parâmetro informa qual é o conjunto de caracteres usado
em cada arquivo de dados.
Exemplo: $sqlldr control=utl1case.ctl
characterset=WE8ISO9959P1




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-27
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................


Obtendo Informações Sobre Definições NLS

                            Obtendo Informações Sobre
                             Conjuntos de Caracteres


            NLS_DATABASE_PARAMETERS:
             •   PARAMETER
                 ( NLS_CHARACTERSET,
                   NLS_NCHAR_CHARACTERSET )
             •   VALUE




                                                                                                         ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultando o Dicionário de Dados para Informações NLS
Exiba o banco de dados e o conjunto de caracteres nacionais com a seguinte
consulta:
             SQL>SELECT parameter, value FROM nls_database_parameters
             2     WHERE parameter LIKE '%CHARACTERSET%';
      PARAMETER                                                          VALUE
      -----------------------                                            ------------------------------
      NLS_CHARACTERSET                                                   WE8ISO8859P1
      NLS_NCHAR_CHARACTERSET                                             US7ASCII
      2 rows selected.




.....................................................................................................................................................
20-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Obtendo Informações Sobre Definições NLS
.....................................................................................................................................................




                           Obtendo Informações Sobre
                                Definições NLS

            •   NLS_INSTANCE_PARAMETERS:
                   – PARAMETER (parâmetros de inicialização NLS
                       definidos explicitamente)
                   – VALUE

            •   NLS_SESSION_PARAMETERS:
                   – PARAMETER (parâmetros NLS da sessão)
                   – VALUE




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultando o Dicionário de Dados para Informações NLS
Essa view exibe somente os valores dos parâmetros que foram definidos
explicitamente no arquivo init<SID>.ora.
      SQL> SELECT * FROM nls_instance_parameters;
      PARAMETER                                                            VALUE
      --------------------------                                           ------------------------------
      NLS_LANGUAGE                                                        AMERICAN
      NLS_TERRITORY                                                       AMERICA
      NLS_SORT
      NLS_DATE_LANGUAGE
      NLS_DATE_FORMAT
      NLS_CURRENCY
      NLS_NUMERIC_CHARACTERS
      NLS_ISO_CURRENCY
      8 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-29
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Consultando o Dicionário de Dados para Informações NLS (continuação)
A view a seguir mostra parâmetros de sessão.
      SQL> SELECT * FROM nls_session_parameters;
      PARAMETER                                                        VALUE
      ------------------------                                         ------------------------------
      NLS_LANGUAGE                                                     AMERICAN
      NLS_TERRITORY                                                    AMERICA
      NLS_CURRENCY                                                     $
      NLS_ISO_CURRENCY                                                 AMERICA
      NLS_NUMERIC_CHARACTERS                                           .,
      NLS_CALENDAR                                                     GREGORIAN
      NLS_DATE_FORMAT                                                  DD-MON-YY
      NLS_DATE_LANGUAGE                                                AMERICAN
      NLS_SORT                                                         BINARY
      9 rows selected.




.....................................................................................................................................................
20-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Obtendo Informações Sobre Definições NLS
.....................................................................................................................................................




                           Obtendo Informações Sobre
                                Definições NLS

             •    NLS_INSTANCE_PARAMETERS:
                   – PARAMETER (parâmetros de inicialização NLS
                       definidos explicitamente)
                   – VALUE
             •    NLS_SESSION_PARAMETERS:
                   – PARAMETER (parâmetros NLS da sessão)
                   – VALUE




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




Consultando o Dicionário de Dados para Informações NLS
Lista de todos os valores válidos de parâmetros NLS.
            SQL>SELECT * FROM v$nls_valid_values
            2      WHERE parameter='LANGUAGE';
      PARAMETER                                VALUE
      ---------                                --------------
      LANGUAGE                                 AMERICAN
      LANGUAGE                                 GERMAN
      LANGUAGE                                 FRENCH
      LANGUAGE                                 CANADIAN FRENCH
      LANGUAGE                                 SPANISH
      LANGUAGE                                 ITALIAN
      LANGUAGE                                 DUTCH
      LANGUAGE                                 SWEDISH
      LANGUAGE                                 NORWEGIAN
      LANGUAGE                                 DANISH
      ...




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-31
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Consultando o Dicionário de Dados para Informações
NLS (continuação)
Exibe os valores atuais de parâmetros NLS.
      SQL> SELECT * FROM v$nls_parameters;
      PARAMETER                                     VALUE
      ------------------                            ------------------
      NLS_LANGUAGE                                  AMERICAN
      NLS_TERRITORY                                 AMERICA
      NLS_CURRENCY                                  $
      NLS_ISO_CURRENCY                              AMERICA
      NLS_NUMERIC_CHARAC                            .,
      NLS_CALENDAR                                  GREGORIAN
      NLS_DATE_FORMAT                               DD-MON-YY
      NLS_DATE_LANGUAGE                             AMERICAN
      NLS_CHARACTERSET                              WE8ISO8859P1
      NLS_SORT                                      BINARY
      10 rows selected.
Observação: Diversas views conterão uma nova coluna,
CHARACTER_SET_NAME, que mostra o nome do conjunto de caracteres:
CHAR_CS para o conjunto de caracteres do banco de dados e NCHAR_CS para o
conjunto de caracteres nacionais.
Por exemplo, DBA_TAB_COLUMNS elabora esse coluna a partir de COL$.




.....................................................................................................................................................
20-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Sumário
.....................................................................................................................................................


Sumário


                                                    Sumário


            Nesta lição, você aprendeu como:
            •    Escolher um conjunto de caracteres de banco de
                 dados e um conjunto de caracteres nacionais para
                 o banco de dados
            •    Usar os diversos tipos de parâmetros NLS para o
                 servidor ou para a sessão




                                                                                                        ®

                      Copyright  Oracle Corporation, 1999. Todos os direitos reservados.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                       20-33
Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS)
.....................................................................................................................................................

Referência Rápida

 Contexto                                                                 Referência
 Parâmetros de inicialização                                              NLS_LANGUAGE
                                                                          NLS_TERRITORY
                                                                          NLS_DATE_FORMAT
                                                                          NLS_DATE_LANGUAGE
                                                                          NLS_CURRENCY
                                                                          NLS_ISO_CURRENCY
                                                                          NLS_SORT
                                                                          NLS_NUMERIC_CHARACTERS
                                                                          NLS_CALENDAR
 Views de desempenho dinâmicas                                            V$NLS_VALID_VALUES
                                                                          V$NLS_PARAMETERS
 Views de dicionário de dados                                             NLS_DATABASE_PARAMETERS
                                                                          NLS_INSTANCE_PARAMETERS
                                                                          NLS_SESSION_PARAMETERS
 Comandos                                                                 ALTER SESSION SET
 Procedimentos e funções                                                  DBMS_SESSION.SET_NLS
 empacotados




.....................................................................................................................................................
20-34                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
A
 ................................




Exercícios
Apêndice A: Exercícios
.....................................................................................................................................................


Ambiente
O instrutor fornecerá as informações sobre a configuração dos exercícios.
Lembre-se de que o seu ambiente talvez não precise de todas as informações
fornecidas abaixo. Use esta seção para registrar os detalhes a serem usados
durante os exercícios.

Configuração do Cliente
                Nome de usuário
                Senha
                Contexto
                Diretório que contém
                arquivos de laboratório
                Diretório que contém
                exemplos de soluções
                Arquivo de parâmetros


Configuração do Servidor
                Login
                Senha
                Nome do host/Endereço IP
                Diretório que contém
                arquivos de laboratório
                Diretório que contém
                exemplos de soluções
                Arquivo de parâmetros


Ambiente Oracle
                Senha para SYSDBA
                Senha para SYS
                Senha para SYSTEM
                String de Conexão de
                Banco de Dados




.....................................................................................................................................................
A-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 1: Componentes Arquitetônicos do Oracle
.....................................................................................................................................................


Exercício 1: Componentes Arquitetônicos do Oracle
 1 Um usuário tenta estabelecer logon e recebe a mensagem de erro "ORA-01034
      ORACLE not available" (ORA-01034 ORACLE não disponível). Qual destes
      itens é a causa provável do problema?
      a O usuário forneceu uma senha sem validade.
      b O usuário forneceu um nome de usuário sem validade.
      c A instância com a qual o usuário está estabelecendo conexão não está
          em execução.
      d A versão do Oracle solicitada pelo usuário não está instalada.
 2    Um usuário executa um comando SQL para atualizar uma linha na tabela EMP.
      Qual processo executa essa instrução?
      a Processo de usuário
      b Processo de servidor
      c DBWR
      d LGWR
 3    Um usuário executa um comando SQL para atualizar uma linha na tabela EMP.
      Onde o processo identificado na pergunta anterior faz a alteração?
      a Arquivos de dados
      b Cache de buffer do banco de dados
      c Pool compartilhado
      d Arquivo de parâmetros
 4    Qual destes arquivos é usado para autenticar usuários de banco de dados
      privilegiados?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de logs arquivados
 5    Qual destes arquivos não faz parte do banco de dados?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          A-3
Apêndice A: Exercícios
.....................................................................................................................................................

 6 Qual destes arquivos armazena segmentos de rollback?
      a   Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados
 7    Qual destas áreas de memória não faz parte da SGA?
      a Cache de buffer do banco de dados
      b PGA
      c Buffer de redo log
      d Pool compartilhado
 8    Qual destas áreas de memória é usada para armazenar em cache as informações de
      dicionário de dados?
      a Cache de buffer do banco de dados
      b PGA
      c Buffer de redo log
      d Pool compartilhado
 9    Quais destes estágios são usados para processar uma instrução DML?
      a Análise
      b Execução
      c Extração
10    Quando um usuário executa uma submissão a commit, em qual destes arquivos são
      registradas as alterações antes de o servidor Oracle retornar uma mensagem
      "Commit complete" (Commit concluído) ao usuário?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados




.....................................................................................................................................................
A-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 2: Conceitos Básicos do Oracle
.....................................................................................................................................................


Exercício 2: Conceitos Básicos do Oracle
Usando o SQL*Plus
 1 Qual é o tamanho do cache de buffer do banco de dados?
 2 Qual é o tamanho da área global do sistema?
 3 Liste as 9 primeiras linhas das colunas OWNER, TABLE_NAME, TABLESPACE
   _NAME na view de dicionário de dados DBA_TABLES e formate a saída.
   (A exibição das dez primeiras linhas é suficiente.) Saia do SQL*Plus.
 4 Inicie o SQL*Plus e execute um script chamado para.sql, que efetua spool de
   todos os parâmetros de inicialização para o arquivo de saída para.lst.
 5 Execute o script scott.sql.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          A-5
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 3: Gerenciando uma Instância Oracle
 1 Identifique o nome do banco de dados, nome da instância e tamanho dos blocos de
      banco de dados.
 2    Liste o nome e tamanho dos arquivos de dados, arquivos de redo log on-line e o
      nome dos arquivos de controle.
 3    Liste as opções instaladas.
 4    Exiba os números de versão.
 5    Exiba o número máximo de processos de usuário do sistema operacional que
      podem se conectar simultaneamente à instância.
 6    Tente alterar o tamanho do bloco de banco de dados. O que acontece?
 7    Liste os parâmetros de inicialização default.
 8    Abra o banco de dados no modo somente para leitura. Conecte-se como o usuário
      SCOTT e adicione 10% a todos os salários na tabela EMP. O que acontece?
      Coloque o banco de dados novamente no modo de leitura/gravação.
 9    Ative e verifique o andamento em arquivos de rastreamento dinamicamente.
10    Conecte-se como o usuário SCOTT e insira linhas na tabela EMP. Abra uma
      segunda sessão e tente desativar o banco de dados com a opção transacional.
      O que acontece?
11    Certifique-se de que existam pelo menos duas sessões abertas, uma sessão como
      o usuário SCOTT e uma como o usuário SYS. Ative a sessão restrita, verifique isso
      e certifique-se de que somente o administrador de banco de dados SYS
      esteja conectado.




.....................................................................................................................................................
A-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 3: Gerenciando uma Instância Oracle
.....................................................................................................................................................

12 Examine este exemplo de um arquivo de alerta para identificar se ocorreram
      exceções ou erros internos.

    Wed Jun 30 13:24:30 1999
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    LICENSE_MAX_USERS = 0
    Starting up ORACLE RDBMS Version: 8.1.5.0.0.
    System parameters with non-default values:
       processes                = 60
       shared_pool_size         = 3500000
       java_pool_size           = 1000000
       control_files            = $HOME/DATA/DISK1/control01.con
       db_block_buffers         = 100
       db_block_size            = 4096
       compatible               = 8.1.5
       log_checkpoint_interval = 10000
       log_checkpoint_timeout   = 1800
       db_files                 = 1024
       db_file_multiblock_read_count= 8
       dml_locks                = 200
       rollback_segments        = sysrol
       db_domain                = world
       global_names             = TRUE
       distributed_transactions = 10
       sort_area_size           = 64000
       db_name                  = DB01
       job_queue_processes      = 2
       job_queue_interval       = 10
       parallel_max_servers     = 12
       background_dump_dest     = $HOME/BDUMP
       user_dump_dest           = $HOME/UDUMP
       max_dump_file_size       = 10240
       core_dump_dest           = $HOME/CDUMP
    PMON started with pid=2
    DBW0 started with pid=3
    LGWR started with pid=4
    CKPT started with pid=5
    SMON started with pid=6
    RECO started with pid=7
    SNP0 started with pid=8
    SNP1 started with pid=9
    ..
    Corrupt block relative dba: 0x01c0003a file=7. blocknum=58.
    Fractured block found during buffer read
    Data in bad block - type:6. format:2. rdba:0x01c0003a
    last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00
    consistancy value in tail 0x44c506a0
    check value in block header: 0x0, check value not calculated
    spare1:0x0, spare2:0x0, spare2:0x0




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          A-7
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 4: Criando um Banco de Dados
Os diretórios especificados para os arquivos devem ser inseridos em $HOME/DATA.
 1 Crie um arquivo de senhas usando estas informações:
   – Senha de sys:oracle
   – Ative cinco usuários privilegiados
   Certifique-se de que o Oracle possa gravar dados nesse arquivo.
 2 Grave um script para a criação de um banco de dados com esta configuração:
   – Nome de banco de dados e nome de instância DB<xx>
   – Um arquivo de controle chamado control01.con localizado no
       diretório DISK5
   – Dois grupos de arquivos de redo log, cada um deles com um membro de 150K
       chamado redo0101.log e redo0201.log localizados no diretório DISK6
   – O número máximo de cinco grupos de arquivos de log e cinco membros de
       arquivo de log para cada grupo
   – Um arquivo de dados de 20M chamado system01.dbf localizado no
       diretório DISK4
   – Máximo de 30 arquivos de dados que podem ser criados para o banco de dados
   – Um máximo de 100 arquivos redo log arquivados para recuperação automática
       de mídia
   – O conjunto de caracteres WE8ISO8859P1
   A localização do arquivo de rastreamento deve ser nos diretórios BDUMP e CDUMP.
 3 Ative o spool para capturar os erros e executar o script.
 4 (Opcional) Inclua o comando "spool <nome_arquivo>" antes de executar
   o comando.
 5 (Opcional) Após a criação, verifique o estado do banco de dados e certifique-se de
   que os arquivos de banco de dados foram criados.
 6 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê?




.....................................................................................................................................................
A-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão
.....................................................................................................................................................


Exercício 5: Criando Views de Dicionário de Dados e
Pacotes Padrão
 1 Crie as views de dicionário de dados.
 2 Use as views de dicionário de dados para reunir estas informações:
      aQual é o nome e número dos segmentos de rollback?
   b Identifique o arquivo de dados que compõe o tablespace SYSTEM.
   c Qual é o espaço livre disponível no banco de dados e quanto já está usado?
   d Liste o nome e data de criação dos usuários do banco de dados.
 3 Verifique quais tabelas de dicionário de dados são usadas para definir a view
   DBA_USERS.
 4 Estabeleça o uso da funcionalidade PL/SQL. (Faça um intervalo assim que o script
   for iniciado.)
 5 Verifique se algum dos pacotes é inválido.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          A-9
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 6: Mantendo o Arquivo de Controle
 1 Onde está localizado o arquivo de controle existente e qual é o seu nome?
 2 Tente iniciar o banco de dados sem qualquer arquivo de controle. Você pode
   simular isso alterando o nome do arquivo de controle no arquivo de parâmetros
   ou apenas alterando o nome do arquivo de controle. O que acontece?
 3 Aplique o recurso de multiplexação no arquivo de controle existente usando o
   diretório DISK2 e nomeie o novo arquivo de controle como control02.con.
   Certifique-se de que o Oracle Server possa gravar dados no novo arquivo de
   controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os
   dois arquivos de controle estão sendo usados.
 4 Qual é o dimensionamento inicial da seção de arquivo de dados no arquivo
   de controle?




.....................................................................................................................................................
A-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 7: Mantendo Arquivos de Redo Log
.....................................................................................................................................................


Exercício 7: Mantendo Arquivos de Redo Log
 1 Liste o número e local dos arquivos de log existentes e exiba o número de grupos
      e membros de arquivos de redo log existentes no banco de dados.
 2    Em que modo de banco de dados o seu banco de dados está configurado?
      O arquivamento está ativado?
 3    Adicione um membro de redo log a cada grupo no banco de dados localizado
      em DISK3, usando estas convenções de nomeação:
      Se o grupo 1 tiver dois arquivos existentes chamados redo0101.log e
      redo0102.log, adicione um novo membro chamado redo0103.log.
      Verifique o resultado.
 4    Crie um novo grupo de redo log localizado nos diretórios DISK3, DISK4 e DISK5 e
      verifique a existência do novo grupo.
 5    Desloque os membros redo0103.log e redo0303.log (consulte a etapa 3) do
      diretório DISK3 para DISK5.
 6    Remova o grupo de redo log criado na etapa 4.
 7    Redimensione todos os arquivos de redo log on-line para 1024K. (Como não é
      possível redimensionar arquivos de log, será necessário adicionar novos logs e
      eliminar os antigos.)




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-11
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 8: Gerenciando Tablespaces e Arquivos
de Dados
 1 Crie tablespaces permanentes com estes nomes e armazenamento:
      a  DATA01 para tabelas com armazenamento default.
      b DATA02 para objetos grandes com armazenamento default. Certifique-se de
         que todos os tamanhos da extensão usados no tablespace sejam múltiplos
         de 100K.
      c INDX01 para índices com o armazenamento default. Ative a extensão
         automática de 500K quando mais extensões forem necessárias.
      d RONLY para tabelas somente para leitura com o armazenamento default
      Exiba as informações do dicionário de dados

 Nome do Tablespace                     Subdiretório                        Local do Arquivo de Dados (Tamanho)
 DATA01                                 DISK4                               data01.dbf (2M)
 DATA02                                 DISK5                               data02.dbf (1M)
 INDX01                                 DISK3                               indx01.dbf (1M)
 RONLY                                  DISK1                               ronly.dbf (1M)

 2 Aloque mais 500K ao tablespace DATA02 e verifique o resultado.
 3 Desloque o tablespace INDX01 para DISK6.
 4 Transforme o tablespace RONLY em somente para leitura após criar uma tabela
      nesse tablespace. Tente criar uma tabela adicional e eliminá-la. O que acontece e
      por quê?
 5    Elimine o tablespace RONLY e verifique-o.
 6    Sem desativar a instância, altere o SORT_AREA_SIZE para 2 kilobytes.
 7    Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute
      srt_dd.sql a partir de uma sessão e monitore a atividade de classificação a partir
      da outra sessão. Consulte estatísticas de classificação e informações de segmento
      temporário durante e após a conclusão do script. Observe os resultados.
 8    Em uma das sessões, execute asn_tts.sql para se preparar para a próxima
      parte do laboratório. Esse script garante que o tablespace TEMP será usado para
      as classificações feitas pelo usuário SYSTEM e será abordado na lição "Gerenciando
      Usuários". Conecte-se como SYSTEM a partir de uma das sessões e execute
      srt_dd.sql. Na outra sessão, monitore as estatísticas e a atividade de
      classificação, da mesma forma que fez na pergunta 3. Você notou
      alguma diferença?
 9    Redefina SORT_AREA_SIZE.




.....................................................................................................................................................
A-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 9: Estrutura de Armazenamento e Relacionamentos
.....................................................................................................................................................


Exercício 9: Estrutura de Armazenamento
e Relacionamentos
 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices.
 2 Identifique os diversos tipos de segmento no banco de dados.
 3 Grave uma consulta para verificar quais segmentos estão a menos de cinco
      extensões do máximo de extensões. Ignore o segmento de bootstrap. Essa consulta
      é útil para identificar os segmentos com probabilidade de gerar erros durante a
      futura carga de dados.
 4    Quais arquivos têm espaço alocado para a tabela EMP?
 5    (a) Grave uma consulta para obter o Número de Arquivo) e o Número de Bloco do
      cabeçalho da tabela EMP.
      (b) Grave uma consulta que aceitará um número de arquivo e um
      número de bloco como entrada e retornará o nome e o tipo do segmento
      que utiliza o bloco. Teste a consulta fornecendo o arquivo e o número de
      bloco do cabeçalho da tabela EMP (obtidos na consulta anterior. Use o
      SQL*Plus para executar a consulta).
 6    Liste o espaço livre disponível por tablespace. A consulta deverá exibir os
      números de fragmentos, o total do espaço livre e a maior extensão livre em cada
      tablespace.
 7    Execute o script cr_frags.sql no diretório LABS. Verifique se existem extensões
      livres adjacentes no banco de dados. Una as extensões e verifique novamente.
 8    Liste os segmentos que gerarão erros em decorrência de falta de espaço quando
      eles tentarem alocar uma extensão adicional.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-13
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 10: Gerenciando Segmentos de Rollback
Antes de iniciar este exercício, certifique-se de que executou o script $HOME/LABS/
alt_sysrol.sql como o usuário SYSTEM.
 1 Conecte-se como o usuário SYSTEM (senha = manager) e insira um registro na
   tabela EMP. A operação foi bem-sucedida? Por que ou por que não?
 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados.
   Os pedidos serão informados usando 15 estações clientes, que possuem um
   volume bastante alto de atividade pela manhã. Crie um número apropriado de
   segmentos de rollback no banco de dados. (Adote um tamanho default para
   este exercício.)
 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para
   verificar se você consegue inserir um registro na tabela EMP. Não submeta
   INSERT a commit.
 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem
   usados pelas transações.
 5 Localize o segmento de rollback que é usado pela transação.
 6 Chame o SQL*Plus do diretório labs. Execute o script ins_emp.sql. Usando uma
   sessão separada, coloque o tablespace do segmento de rollback como off-line;
 7 (a) Desative a instância, inicialize novamente e consulte as informações do
   segmento de rollback no dicionário de dados para verificar quantos segmentos de
   rollback estão on-line.
   (b) Certifique-se de que todos os segmentos de rollback serão colocados
   on-line sempre que o banco de dados for aberto e reinicie a instância.
   Certifique-se de que todos os segmentos de rollback estejam ONLINE.
 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados
   com os seguintes parâmetros de armazenamento e verifique se é possível usá-lo.
   Isso é essencial para a próxima pergunta:
   INITIAL = 10K
   NEXT = 10K
   OPTIMAL = 30K
 9 Verifique o número de extensões no segmento de rollback DEMO_RBS rollback.
   Estabeleça login como system/manager usando o SQL*Plus e execute o script
   ext_rbs.sql. Há alguma alteração no número de extensões no segmento
   de rollback?
10 Verifique se o segmento de rollback DEMO_RBS foi reduzido para seu
   tamanho ideal.
11 Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada,
   conecte-se como SYSTEM e execute ins_emp3.sql. Verifique se existe uma
   sessão bloqueadora.
12 Elimine o segmento de rollback DEMO_RBS.



.....................................................................................................................................................
A-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 11: Gerenciando Tabelas
.....................................................................................................................................................


Exercício 11: Gerenciando Tabelas
 1 É necessário criar estas tabelas para um sistema de entrada de pedidos que você
      esteja criando neste momento. As tabelas e colunas são mostradas abaixo:

         Tabela                                       Coluna                                        Tipo de Dados e Tamanho
         CUSTOMERS                                    CUST_CODE                                     VARCHAR2(3)
                                                      NAME                                          VARCHAR2(50)
                                                      REGION                                        VARCHAR2(5)
         ORDERS                                       ORD_ID                                        NUMBER(3)
                                                      ORD_DATE                                      DATE
                                                      CUST_CODE                                     VARCHAR2(3)
                                                      DATE_OF_DELY                                  DATE

      Você foi informado de que na tabela ORDERS as linhas serão inseridas sem um
      valor para DATE_OF_DELY e que ela será atualizada quando um pedido for
      atendido. Estabeleça login como system/manager e crie as tabelas usando as
      definições apropriadas de tablespace e utilização de espaço do bloco. Use o
      tablespace DATA01. Você pode utilizar as definições de armazenamento default.
      Use o Assistente de Tabela ao criar a tabela CUSTOMERS. Não utilize o
      Assistente de Tabela ao criar tabelas ORDERS.
 2    Execute o script ins_cord.sql para inserir linhas em tabelas.
 3    Descubra quais arquivos e blocos contêm os pedidos do cliente com
      CUST_CODE=A04.
 4    Verifique quantas extensões foram usadas pela tabela ORDERS.
 5    Aloque uma extensão manualmente, com o tamanho default, à tabela ORDERS e
      confirme se a extensão foi adicionada da forma especificada.
 6    (a) Elimine a tabela BIG_EMP.
      (b) Crie outra tabela, ORDERS2 como cópia da tabela ORDERS, mas com
      MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi criada com o
      número especificado de extensões.
 7    Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões
      para confirmar se as extensões não foram desalocadas.
 8    Altere a tabela ORDERS2 para reduzir MINEXTENTS para 4. Houve uma
      redução no número de extensões?




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-15
Apêndice A: Exercícios
.....................................................................................................................................................

 9 Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela
   tem agora?
10 (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela
   ORDERS2.
   (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões.
   Houve espaço liberado da tabela? Por que ou por que não?
11 (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela
   PRODUCTS com estas colunas:

         Coluna                                       Tipo de Dados e Tamanho
         PROD_CODE                                    NUMBER(6)
         DESCRIPTION                                  VARCHAR2(30)
         PRICE                                        NUMBER(8,2)

      Crie essa tabela no tablespace DATA02 usando tamanhos de extensão
      uniformes de 10K.
      (b) Verifique os tamanhos das extensões dessa tabela. O que você percebe?




.....................................................................................................................................................
A-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 12: Gerenciando Índices
.....................................................................................................................................................


Exercício 12: Gerenciando Índices
 1 Você está pensando em criar índices sobre as colunas NAME e REGION da tabela
   CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os
   índices com os nomes CUST_NAME_IDX e CUST_REGION_IDX,
   respectivamente, e coloque-os nos tablespaces apropriados.
 2 Mova o índice CUST_REGION_IDX para outro tablespace.
 3 Observe os arquivos e blocos usados por extensões pelo índice
   CUST_REGION_IDX.

         File_id                                Block_id                               Blocos




 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, nem criá-lo
   novamente e mantenha-o no mesmo tablespace anterior. O novo índice utiliza os
   mesmos blocos usados anteriormente?
 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a
   tabela NUMBERS.
   (b) Consulte a tabela NUMBERS para descobrir o número de valores
   distintos nas duas colunas da tabela.
   (c) Usando tamanhos de extensão uniformes de 4K, crie índices em árvore B
   NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela
   NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.

         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-17
Apêndice A: Exercícios
.....................................................................................................................................................

      (d) Novamente, usando tamanhos da extensão uniformes de 4K, crie os índices de
      bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da
      tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.

         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX

      O que você pode concluir sobre a relação entre cardinalidade e tamanhos dos dois
      tipos de índice?




.....................................................................................................................................................
A-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 13: Mantendo a Integridade dos Dados
.....................................................................................................................................................


Exercício 13: Mantendo a Integridade dos Dados
 1 Examine o script, cr_cons.sql. Execute o script para criar as restrições.
 2 Consulte o dicionário de dados para:
   (a) Verificar as restrições, se elas são adiáveis e seus status.
   (b) Verificar os nomes e tipos de índices criados para validar as restrições.
   (c) Verificar quais colunas são usadas nas restrições criadas.
 3 Insira dois registros com estes valores na tabela PRODUCTS:

     PROD_CODE                        DESCRIPTION                                                                             PRICE

     100860                           Ace Tennis Racket                                                                       36.20

     100860                           Ace Tennis Ball 3-Pack                                                                  2.40

 4 Ative a restrição exclusiva na tabela PRODUCTS. Foi bem-sucedido? Por que ou
      por que não?
 5    (a) Certifique-se de que as novas linhas adicionadas à tabela não violem a restrição
      na tabela PRODUCTS.
      (b) Consulte o dicionário de dados para verificar o efeito da alteração.
      (c) Verifique se a restrição rejeita inserções que violam a restrição adicionando
      uma linha com estes valores:
      PROD_CODE: 100860
      DESCRIPTION: Yellow Jersey Bicycle Helmet
      PRICE: 30
 6    Execute as etapas necessárias para identificar violações de restrição existentes na
      tabela PRODUCTS, modificar códigos de produto conforme necessário e garantir
      que todos os novos dados e também os existentes não violam a restrição. (Presuma
      que a tabela tenha milhares de linhas e que seja muito demorado verificar cada
      linha manualmente.)
 7    Execute o script ins_ocus1.sql para inserir linhas na tabela. As inserções foram
      bem-sucedidas? Efetue rollback das alterações.
 8    Agora examine o script, ins_ocus2.sql. Observe que esse script também executa
      inserções na mesma seqüência. Execute o script e verifique se sua execução foi
      bem-sucedida.
 9    Trunque a tabela CUSTOMERS. Foi bem-sucedido? Por que ou por que não?




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-19
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 14: Carregando Dados
Use a conta system para todas as perguntas deste laboratório.
 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS.
   (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS.
   (c) Anote o último arquivo/número de bloco usado por uma linha existente no
   momento na tabela _____________________.
 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com estes valores
   na tabela:
   ORD_ID: 200
   PROD_CODE: 200000
   QTY: 20
   (b) Verifique e anote o arquivo/número do bloco da nova linha
   _____________________.
 3 (a) Use inserção de carga direta para copiar dados para a tabela ITEMS2 a partir da
   tabela ITEMS.
   (b) Verifique o arquivo/números de bloco das linhas com ORD_ID<>200. O que
   você pode observar sobre a localização dessas linhas?
 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat.
   Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a
   demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as
   etapas a seguir para tentar duas execuções de carga e se familiarizar com o uso do
   SQL*Loader:
   (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP.
   (b) Execute o SQL*Loader para carregar dados para a tabela DEPT usando o
   arquivo de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a
   tabela DEPT para verificar os dados carregados.
   (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando
   o arquivo de controle ulcase2.ctl. Observe que essa execução utiliza um arquivo
   de dados de entrada para carregar dados. Examine o arquivo de log gerado e
   consulte a tabela EMP para verificar os dados carregados.
 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2.
   (b) Aloque uma extensão à tabela manualmente e anote o número de extensões e
   blocos agora ______________________. Como você acabou de criar a extensão,
   a nova extensão está vazia.




.....................................................................................................................................................
A-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 15: Reorganizando Dados
.....................................................................................................................................................


Exercício 15: Reorganizando Dados
 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar.
   Verifique o número e o tamanho das extensões na tabela ITEMS2 antes de eliminá-
   la e depois repita esse procedimento após importar a tabela. O que você pode
   deduzir o comportamento dos utilitários Importar e Exportar na alocação
   de espaço?
 2 Você precisa mover diversos índices de um tablespace para outro. Este exercício
   utiliza um índice para mostrar como isso pode ser feito.
   (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna
   ORD_ID da tabela ITEMS2.
   (b) Usando os utilitários Importar e Exportar, mova o índice para o
   tablespace INDX01.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-21
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 16: Gerenciando a Segurança de Senha
 1 Ative o gerenciamento de senha usando o script utlpwdmg.sql .
 2 Tente alterar a senha do usuário SCOTT para SCOTT. O que acontece?
 3 Certifique-se de que os seguintes itens se apliquem a usuários aos quais o perfil
   DEFAULT foi designado:
   – Após duas tentativas de login, a conta deve ser bloqueada.
   – A senha deve expirar após 30 dias.
   – A mesma senha não deve ser reutilizada novamente por pelo menos um minuto
   – A conta deve ter um período de tolerância de cinco dias para alterar uma
       senha expirada.
   Certifique-se de que os requisitos concedidos foram implementados.
 4 Estabeleça login para o usuário SYSTEM fornecendo uma senha sem validade. Tente
   esse procedimento duas vezes e, em seguida, estabeleça login novamente, dessa
   vez fornecendo a senha correta.
 5 Certifique-se de que SYSTEM possa se reconectar.
 6 Desative as verificações de senha do perfil DEFAULT.




.....................................................................................................................................................
A-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 17: Gerenciando Usuários
.....................................................................................................................................................


Exercício 17: Gerenciando Usuários
 1 Crie o usuário Bob com uma senha ALONG. Certifique-se de que quaisquer objetos
      e segmentos temporários criados por Bob não sejam criados no tablespace
      SYSTEM. Além disso, certifique-se de que Bob possa estabelecer login e criar
      objetos de até um megabyte de tamanho nos tablespaces DATA01 e INDX01. Se
      você não estiver usando o Oracle Enterprise Manager, execute o script bob.sql.
 2    (a) Crie um usuário Kay com uma senha MARY. Certifique-se de que quaisquer
      objetos e segmentos de classificação criados por Kay não sejam criados no
      tablespace SYSTEM.
      (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Dê à
      nova tabela o nome ORDERS.
 3    Exiba as informações sobre Bob e Kay a partir do dicionário de dados.
 4    No dicionário de dados, exiba as informações sobre o espaço que Bob pode utilizar
      em tablespaces.
 5    (a) Como o usuário Bob, altere seu tablespace temporário. O que acontece?
      Por quê?
      (b) Como Bob, altere sua senha para SAM.
 6    Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo.
 7    Remova a conta de Kay do banco de dados.
 8    Bob esqueceu sua senha. Designe a ele uma senha OLINK e exija que Bob altere a
      senha na próxima ocasião em que estabelecer logon.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-23
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 18: Gerenciando Privilégios
 1 Como o usuário SYSTEM, crie um usuário Kay e conceda a ele a capacidade de
      estabelecer logon no banco de dados e criar objetos em seu esquema.
 2    (a) Conecte-se como Kay e crie tabelas usando o script ulcase1.sql para criar as
      tabelas EMP e DEPT.
      (b) Conecte-se como system e copie os dados de SYSTEM.EMP para a tabela
      EMP de Kay. Verifique se os registros foram inseridos.
      (c) Como system, conceda a Bob a capacidade de efetuar seleções na tabela EMP
      de Kay. O que acontece e por quê?
 3    Reconecte-se como Kay e permita que Bob efetue seleções na tabela EMP de Kay.
      Além disso, permita que Bob conceda a outros usuários a capacidade de seleção.
      Examine as views de dicionário de dados que registram essas ações.
 4    Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados.
 5    (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Forneça a Bob a
      nova senha sam.
      (b) Como Kay, retire de Bob o privilégio de ler a tabela EMP de Kay.
      (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê?
 6    (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela
      DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que acontece e
      por quê?
      (b) Como system, examine a view de dicionário de dados DBA_TABLES para
      verificar o resultado.
 7    Permita que Kay inicialize e desative o banco de dados sem ter a capacidade de
      criar um novo banco de dados.




.....................................................................................................................................................
A-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 19: Gerenciando Atribuições
.....................................................................................................................................................


Exercício 19: Gerenciando Atribuições
 1 Examine a view de dicionário de dados e liste os privilégios de sistema da
      atribuição RESOURCE.
 2    Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela,
      criar uma view e efetuar seleções na tabela EMP de Kay.
 3    (a) Designe as atribuições RESOURCE e DEV a Bob, mas faça somente a
      atribuição RESOURCE ser ativada automaticamente quando ele estabelecer logon.
      (b) Forneça a Bob a capacidade de ler todas as informações de dicionário de dados.
 4    Bob precisa verificar os segmentos de rollback que estão sendo utilizados no
      momento pela instância. Conecte-se como Bob e liste os segmentos de rollback
      utilizados.
 5    Como system, tente criar uma view EMP_VIEW na tabela EMP de Kay. O que
      acontece e por quê?




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        A-25
Apêndice A: Exercícios
.....................................................................................................................................................


Exercício 20: Usando o Suporte a Idioma Nacional
(National Language Support – NLS)
 1 Verifique o conjunto de caracteres nacionais e de banco de dados.
 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados?
 3 Certifique-se de que todas as datas desta sessão sejam exibidas usando um ano de
   4 dígitos.
 4 Defina o NLS_LANG no lado cliente e no lado servidor para ativar o esquema de
   codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o
   usuário SYS e exiba as linhas. Em seguida, exporte a tabela. Importe a tabela para o
   usuário Bob usando o conjunto de caracteres US7ASCII.
   Consulte a tabela. O que aconteceu e por quê? (opcional)




.....................................................................................................................................................
A-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
B
................................




            Dicas
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 1: Componentes Arquitetônicos do Oracle
Não há dicas para esse exercício.




.....................................................................................................................................................
B-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 2: Conceitos Básicos do Oracle
.....................................................................................................................................................


Exercício 2: Conceitos Básicos do Oracle
Usando o SQL*Plus
 1 Qual é o tamanho do cache de buffer do banco de dados?
 2 Qual é o tamanho da área global do sistema?
 3 Liste as colunas OWNER, TABLE_NAME, TABLESPACE _NAME da view de
   dicionário de dados DBA_TABLES e formate a saída. (A exibição das primeiras
   dez linhas é suficiente.) Saia do SQL*Plus.
 4 Inicie o SQL*Plus e execute um script de lote chamado para.sql, que efetua
   spool em todos os parâmetros de inicialização para o arquivo de saída para.lst.
   Dica: Chame para.sql na linha de comandos do sistema operacional.
 5 Execute o script scott.sql.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          B-3
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 3: Gerenciando uma Instância Oracle
 1 Identifique o nome do banco de dados, o nome da instância e o tamanho dos blocos
      de banco de dados.
      Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD
      e V$PARAMETER para exibir o nome do banco de dados, o nome da instância e o
      tamanho dos blocos de banco de dados.
 2    Liste o nome e o tamanho dos arquivos de dados, dos arquivos de redo log on-line
      e o nome dos arquivos de controle.
      Dica: Consulte as views de desempenho dinâmicas V$DATAFILE, V$LOGFILE
      e V$CONTROLFILE para exibir os arquivos de dados, os arquivos de redo log on-
      line e o nome dos arquivos de controle.
 3    Quais são as opções instaladas?
      Dica: Consulte as views de desempenho dinâmicas V$OPTION para exibir as
      opções instaladas.
 4    Exiba o número da versão.
      Dica: Consulte as views de desempenho dinâmicas V$VERSION para exibir o
      número da versão.
 5    Exiba o número máximo de processos de usuário do sistema operacional que pode
      estabelecer simultaneamente uma conexão com a instância.
      Dica: Consulte as views de desempenho dinâmicas V$PARAMETER ou use o
      comando SHOW PARAMETER para exibir o número máximo de processos de
      usuário do sistema operacional que pode estabelecer simultaneamente uma
      conexão com a instância.
 6    Tente alterar o tamanho do bloco de banco de dados. O que aconteceu?
      Dica: Não há dica para essa pergunta.
 7    Liste o parâmetro de inicialização default.
      Dica: Consulte as views de desempenho dinâmicas V$PARAMETER para exibir o
      parâmetro de inicialização default.
 8    Abra o banco de dados no modo somente para leitura. Estabeleça conexão como o
      usuário SCOTT e adicione 10% a todos os salários na tabela EMP. O que acontece?
      Retorne o banco de dados para o modo de leitura/gravação.
      Dica: Não há dica para essa pergunta.




.....................................................................................................................................................
B-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 3: Gerenciando uma Instância Oracle
.....................................................................................................................................................

 9 Ative o tempo nos arquivos de rastreamento de forma dinâmica e verifique-o.
   Dica: Use o comando ALTER SYSTEM para ativar o tempo nos arquivos de
   rastreamento de forma dinâmica e use a view de desempenho dinâmica
   V$PARAMETER para verificar o resultado.
10 Estabeleça conexão como o usuário SCOTT e insira linhas na tabela EMP. Abra uma
   segunda sessão e tente desativar o banco de dados com a opção transacional.
   O que acontece?
   Dica: Não há dica para essa pergunta.
11 Verifique se pelo menos duas sessões estão abertas, uma sessão como o usuário
   SCOTT e outra como SYS. Ative a sessão restrita, verifique isso e certifique-se de
   que somente o administrador de banco de dados SYS esteja conectado.
   Dica
   – Use o comando ALTER SYSTEM para ativar a sessão restrita e consulte as
       views de desempenho dinâmicas V$INSTANCE para verificar o resultado.
   – Use a view de desempenho dinâmica V$SESSION para ver os valores das
       colunas SID e SERIAL#.
   – Execute o comando ALTER SYSTEM KILL SESSION para encerrar sessões.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          B-5
Apêndice B: Dicas
.....................................................................................................................................................

12 Examine o seguinte exemplo de um arquivo de alerta para identificar se houve
      erros internos ou exceções.
      Dica: Não há dica para esse item.

    Wed Jun 30 13:24:30 1999
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    LICENSE_MAX_USERS = 0
    Starting up ORACLE RDBMS Version: 8.1.5.0.0.
    System parameters with non-default values:
       processes                = 60
       shared_pool_size         = 3500000
       java_pool_size           = 1000000
       control_files            = $HOME/DATA/DISK1/control01.con
       db_block_buffers         = 100
       db_block_size            = 4096
       compatible               = 8.1.5
       log_checkpoint_interval = 10000
       log_checkpoint_timeout   = 1800
       db_files                 = 1024
       db_file_multiblock_read_count= 8
       dml_locks                = 200
       rollback_segments        = sysrol
       db_domain                = world
       global_names             = TRUE
       distributed_transactions = 10
       sort_area_size           = 64000
       db_name                  = DB01
       job_queue_processes      = 2
       job_queue_interval       = 10
       parallel_max_servers     = 12
       background_dump_dest     = $HOME/BDUMP
       user_dump_dest           = $HOME/UDUMP
       max_dump_file_size       = 10240
       core_dump_dest           = $HOME/CDUMP
    PMON started with pid=2
    DBW0 started with pid=3
    LGWR started with pid=4
    CKPT started with pid=5
    SMON started with pid=6
    RECO started with pid=7
    SNP0 started with pid=8
    SNP1 started with pid=9
    ..
    Corrupt block relative dba: 0x01c0003a file=7. blocknum=58.
    Fractured block found during buffer read
    Data in bad block - type:6. format:2. rdba:0x01c0003a
    last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00
    consistancy value in tail 0x44c506a0
    check value in block header: 0x0, check value not calculated
    spare1:0x0, spare2:0x0, spare2:0x0




.....................................................................................................................................................
B-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 4: Criando um Banco de Dados
.....................................................................................................................................................


Exercício 4: Criando um Banco de Dados
Insira os diretórios especificados para os arquivos em $HOME/DATA.
 1 Crie um arquivo de senhas usando as seguintes informações:
    – Senha de sys:oracle
    – Ative cinco usuários privilegiados
    Certifique-se de que o Oracle possa gravar dados nesse arquivo.
    Dica: Use o utilitário orapwd para criar o arquivo de senhas e localizá-lo no
    diretório $ORACLE_HOME/dbs.
 2 Crie um script para obter um banco de dados com a seguinte configuração:
    – Nome do banco de dados e nome da instância U<xx>
    – Um arquivo de controle chamado control01.con localizado no
        diretório DISK5
    – Dois grupos de arquivos de redo log, cada um com um membro de 150K
        chamado log1a.rdo e log2a.rdo localizado no diretório DISK6
    – O máximo de cinco grupos de arquivos de log e cinco membros de arquivos de
        log para cada grupo
    – Um arquivo de dados de 20M chamado system01.dbf e localizado no
        diretório DISK4
    – Máximo de 30 arquivos de dados que podem ser criados para o banco de dados
    – O máximo de 100 redo logs arquivados para a recuperação automática
        de mídia
    – O conjunto de caracteres WE8ISO8859P1
    Insira o arquivo de rastreamento no diretório BDUMP e CDUMP.
    Dica
    – Edite o arquivo de parâmetros.
    – Inicie a instância.
    – Gere o script do comando CREATE DATABASE.
 3 Ative o spool para encontrar os erros e execute o script (opcional): Inclua o
    comando "spool <nome_arquivo>" antes de executá-lo.
 4 Depois que o banco de dados tiver sido criado, verifique o estado do mesmo e
    certifique-se de que os arquivos de banco de dados tenham sido criados (opcional).
    Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD,
    V$DATAFILE, V$LOGFILE e V$CONTROLFILE para verificar o estado do
    banco de dados e exibir as informações sobre os arquivos de dados, os arquivos de
    redo log on-line e os arquivos de controle.
 5 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê?
    (opcional)
    Dica: Não há dica para essa pergunta.



.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          B-7
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 5: Criando Views de Dicionário de Dados e
Pacotes Padrão
 1 Crie as views de dicionário de dados.
 2 Use essas views para reunir as seguintes informações:
      aQual é o nome e o número dos segmentos de rollback?
   Dica: Consulte a view de dicionário de dados DBA_ROLLBACK_SEGS para
   mostrar o nome dos segmentos de rollback.
   b Identifique o arquivo de dados que compõe o tablespace SYSTEM.
   Dica: Consulte a view de dicionário de dados DBA_DATA_FILES para
   identificar os arquivos de dados que compõem o tablespace SYSTEM.
   c Qual é o espaço disponível no banco de dados e qual é o espaço já utilizada?
   Dica
   – Consulte a view de dicionário de dados DBA_FREE_SPACE para mostrar o
       espaço disponível no banco de dados.
   – Consulte a view de dicionário de dados DBA_SEGMENTS para exibir o
       espaço já utilizado.
   d Liste o nome e a data de criação dos usuários do banco de dados.
   Dica: Consulte a view de dicionário de dados dba_users para listar o nome e a
   criação dos usuários do banco de dados.
 3 Verifique as tabelas de dicionário de dados que são usadas para definir a view
   DBA_USERS.
   Dica: Consulte a view de dicionário de dados DBA_VIEWS para exibir a
   definição da view de dicionário de dados DBA_USERS.
 4 Estabeleça o uso da funcionalidade PL/SQL. (Espere um pouco assim que o script
   for iniciado.)
   Dica: Não há dica para esse item.
 5 Verifique se há algum pacote inválido.
   Dica: Consulte a view DBA_OBJECTS para obter essas informações.




.....................................................................................................................................................
B-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 6: Mantendo o Arquivo de Controle
.....................................................................................................................................................


Exercício 6: Mantendo o Arquivo de Controle
 1 Onde o arquivo de controle existente está localizado e qual é o nome do mesmo?
   Dica: Consulte a view de desempenho dinâmica V$CONTROLFILE ou
   V$PARAMETER, ou então execute o comando SHOW PARAMETER para exibir
   o nome e a localização do arquivo de controle.
 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. Você pode
   simular essa situação alterando o nome do arquivo de controle no arquivo de
   parâmetros ou apenas alterando o nome do arquivo de controle. O que acontece?
   Dica: Não há dica para essa pergunta.
 3 Aplique o recurso de multiplexação ao arquivo de controle existente usando o
   diretório DISK2 e nomeie o novo arquivo de controle como control02.con.
   Certifique-se de que o servidor Oracle consiga gravar dados no novo arquivo de
   controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os dois
   arquivos de controle estão sendo usados.
   Dica
   – Desative o banco de dados.
   – Copie o arquivo de controle existente para um novo arquivo chamado
       control02.con no diretório DISK2.
   – Use o comando chmod 660 no UNIX.
   – Modifique o arquivo de parâmetros para incluir o novo nome de arquivo.
   – Inicialize o banco de dados.
   – Consulte a view de desempenho dinâmica V$CONTROLFILE ou
       V$PARAMETER, ou então use o comando SHO PARAMETER para
       confirmar que os dois arquivos de controle estão sendo usados.
 4 Qual é o tamanho inicial da seção de arquivo de dados no arquivo de controle?
   Dica: Não há dica para essa pergunta.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          B-9
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 7: Mantendo Arquivos de Redo Log
 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de
   grupos e de membros de arquivos de redo log que o seu banco de dados possui.
   Dica
   – Consulte as views de desempenho dinâmicas V$LOGFILE para exibir a
       localização dos arquivos de log existentes.
   – Use a view de desempenho dinâmica V$LOG para exibir o número de grupos e
       de membros de arquivos de redo log.
 2 Em que modo de banco de dados o seu banco de dados está configurado?
   O arquivamento está ativado?
   Dica
   – Consulte as views de desempenho dinâmicas V$DATABASE para mostrar o
       modo de banco de dados.
   – Consulte a view de desempenho dinâmica V$INSTANCE para verificar se o
       arquivamento automático está ativado.
 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no
   DISK3 usando as seguintes convenções de nomeação:
   Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e
   redo0102.log, adicione um novo membro chamado redo0103.log.
   Verifique o resultado.
   Dica
   – Execute o comando ALTER DATABASE ADD LOGFILE MEMBER para
       adicionar um membro de redo log a cada grupo.
   – Consulte as views de desempenho dinâmicas V$LOGFILE para verificar
       o resultado.
 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e DISK5,
   e verifique a existência do novo grupo.
   Dica
   – Execute o comando ALTER DATABASE ADD LOGFILE para criar um
       novo grupo.
   – Consulte as views de desempenho dinâmicas V$LOGFILE para exibir o nome
       dos novos membros do novo grupo.
   – Consulte a view de desempenho dinâmica V$LOG para exibir o número de
       grupos e de membros de arquivos de redo log.




.....................................................................................................................................................
B-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 7: Mantendo Arquivos de Redo Log
.....................................................................................................................................................

 5 Desloque os membros redo0103.log e redo0303.log (consulte a etapa 3) do
   diretório DISK3 para DISK5.
   Dica
   – Mova os membros para o diretório DISK5.
   – Execute o comando ALTER DATABASE RENAME FILE para renomear
       os membros.
   – Consulte as views de desempenho dinâmicas V$LOGFILE para verificar
       o resultado.
 6 Remova o grupo de logs criado na etapa 4.
   Dica
   – Execute o comando ALTER DATABASE DROP LOGFILE GROUP
       para remover o grupo de logs.
   – Consulte as views de desempenho dinâmicas V$LOG para verificar
       o resultado.
 7 Redimensione todos os arquivos de redo log on-line para 1024K. (Como não é
   possível redimensionar arquivos de log, é necessário adicionar novos logs e
   eliminar os antigos.)
   Dica
   – Execute o comando ALTER DATABASE ADD LOGFILE GROUP para
       adicionar dois novos grupos com o tamanho de 1024K.
   – Consulte as views de desempenho dinâmicas V$LOG para verificar o
       grupo ativo.
   – Execute o comando ALTER SYSTEM SWITCH LOGFILE para forçar
       alternâncias de log e alterar o estágio do grupo para inativo.
   – Execute ALTER DATABASE DROP LOGFILE para remover os
       grupos inativos.
   – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-11
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 8: Gerenciando Tablespaces e Arquivos
de Dados
 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento:
      a  DATA01 para tabelas com armazenamento default
      b DATA02 para objetos grandes com armazenamento default (Certifique-se de
         que cada tamanho de extensão usado no tablespace seja múltiplo de 100K.)
      c INDX01 para índices com o armazenamento default (Ative a extensão
         automática de 500K quando forem necessárias mais extensões.)
      d RONLY para tabelas somente para leitura com o armazenamento default
      Exiba as informações do dicionário de dados.
      Dica
      – Execute o comando CREATE TABLESPACE para criar os
         tablespaces permanentes.
      – Exiba as informações do dicionário de dados.
      – Consulte a view de desempenho dinâmica DBA_DATA_FILES para
         verificar o resultado.

                                                                                           Localização do Arquivo de
 Nome do Tablespace                     Subdiretório                                       Dados (Tamanho)
 DATA01                                 DISK4                                              data01.dbf (2M)
 DATA02                                 DISK5                                              data02.dbf (1M)
 INDX01                                 DISK3                                              indx01.dbf (1M)
 RONLY                                  DISK1                                              ronly.dbf (1M)

 2 Aloque mais 500K para o tablespace DATA02 e verifique o resultado.
   Dica
   – Use o comando ALTER DATABASE DATAFILE... RESIZE para alocar
      mais 500K.
   – Consulte a view de desempenho dinâmica V$DATAFILE para verificar
      o resultado.
 3 Desloque o tablespace INDX01 e mova-o para DISK6.
   Dica
   – Coloque o tablespace INDX01 como OFFLINE.
   – Consulte a view de desempenho dinâmica V$DATAFILE para verificar
      o resultado.
   – Execute o comando ALTER TABLESPACE RENAME para renomear os
      arquivos.
   – Coloque o tablespace INDX01 como ONLINE.
   – Consulte as views de desempenho dinâmicas V$DATAFILE para verificar o
      resultado.

.....................................................................................................................................................
B-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 8: Gerenciando Tablespaces e Arquivos de Dados
.....................................................................................................................................................

 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar uma
      tabela nesse tablespace. Tente criar uma tabela adicional e eliminar a tabela. O que
      acontece e por quê?
      Dica: Não há dica para essa pergunta.
 5    Elimine o tablespace RONLY e verifique-o.
      Dica
      – Execute DROP TABLESPACE ... para remover o tablespace.
      – Delete os arquivos do sistema operacional.
      – Consulte a view de desempenho dinâmica V$TABLESPACE para verificar
          o resultado.
 6    Sem desativar a instância, altere SORT_AREA_SIZE para 2 kilobytes.
      Dica: SORT_AREA_SIZE é um parâmetro dinâmico que necessita da
      opção DEFERRED.
 7    Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute
      srt_dd.sql em uma sessão e monitore a atividade de classificação em outra
      sessão. Consulte as estatísticas de classificação e as informações de segmento
      temporário durante e após da conclusão do script. Observe os resultados.
      Dica: As informações de segmento de classificação estão disponíveis em
      V$SORT_SEGMENT e a atividade de classificação atual em V$SORT_USAGE.
 8    Em uma das sessões, execute asn_tts.sql para preparar para a próxima parte do
      laboratório. Esse script garante que o tablespace TEMP será usado para as
      classificações feitas pelo usuário SYSTEM e será abordado na lição "Gerenciando
      Usuários". Estabeleça conexão como SYSTEM em uma das sessões e execute
      srt_dd.sql. Na outra sessão, monitore as estatísticas e a atividade de
      classificação, da mesma forma que na pergunta 3. Você percebe alguma diferença?
 9    Redefina SORT_AREA_SIZE.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-13
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 9: Estrutura de Armazenamento
e Relacionamentos
 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices.
 2 Identifique os diversos tipos de segmento no banco de dados.
 3 Crie uma consulta para verificar os segmentos cuja extensão é cinco vezes menor
   do que as extensões máximas. Ignore o segmento de bootstrap. Essa consulta é útil
   na identificação de quaisquer segmentos que possam gerar erros durante a futura
   carga de dados.
   Dica: As colunas EXTENTS e MAX_EXTENTS na view de dicionário de dados
   DBA_SEGMENTS contêm o número atual e o número máximo de extensões.
 4 Quais arquivos possuem espaço alocado para a tabela EMP?
   Dica: As views DBA_EXTENTS e DBA_DATA_FILES precisam ser reunidas
   para obter essas informações.
 5 (a) Crie uma consulta para obter o Número de Arquivo e o Número de Bloco do
   cabeçalho da tabela EMP.
   Dica: Para localizar o bloco de cabeçalho da tabela EMP, consulte a view
   DBA_SEGMENTS.
   (b) Crie uma consulta que aceitará um número de arquivo e um número de bloco
   como a entrada e retornará o nome e o tipo do segmento que usa o bloco. Teste a
   consulta fornecendo o número de arquivo e de bloco do cabeçalho da tabela EMP
   (obtido na consulta anterior. Use o SQL*Plus para executar a consulta.)
   Dica: Crie um script do SQL*Plus para aceitar o número relativo de arquivo e de
   bloco, e consulte a view DBA_EXTENTS para localizar o segmento que usa o
   número relativo de arquivo e de bloco informado.
 6 Liste o espaço disponível por tablespace. A consulta deverá exibir o número de
   fragmentos, o espaço livre total e a maior extensão livre em cada tablespace.
   Dica: Consulte a view DBA_FREE_SPACE para obter essas informações.




.....................................................................................................................................................
B-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 9: Estrutura de Armazenamento e Relacionamentos
.....................................................................................................................................................

 7 Execute o script cr_frags.sql no diretório LABS. Verifique se há extensões
   livres adjacentes no banco de dados. Reúna-as e verifique novamente.
   Dica
   Execute o script cr_frags.sql.
   – Consulte a view DBA_FREE_SPACE_COALESCED para localizar todos os
       tablespaces em que PERCENT_BLOCKS_COALESCED <> 100.
   – Use o comando ALTER TABLESPACE para reunir o espaço livre no
       tablespace.
   – Consulte a view DBA_FREE_SPACE_COALESCED novamente para
       localizar todos os tablespaces em que PERCENT_BLOCKS_COALESCED
       <> 100.
 8 Liste segmentos que gerarão erros devido a falta de espaço quando tentarem alocar
   uma extensão adicional.
   Dica: É necessário verificar se a maior extensão livre de um tablespace em
   DBA_FREE_SPACE não é igual a NEXT_EXTENT de qualquer segmento no
   tablespace.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-15
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 10: Gerenciando Segmentos de Rollback
Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/
alt_sysrol.sql como o usuário SYSTEM.
 1 Estabeleça conexão como o usuário SYSTEM (senha = manager) e insira um
   registro na tabela EMP. A operação foi bem-sucedida? Por que ou por que não?
 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados.
   Os pedidos serão informados usando 15 estações clientes, que possuem um
   volume bastante alto de atividade pela manhã. Crie um número apropriado de
   segmentos de rollback no banco de dados. (Adote um tamanho default para
   este exercício.)
   Dica: Usando uma proporção de um segmento de rollback para cada quatro
   transações, você precisará criar quatro segmentos de rollback.
 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para
   verificar se você consegue inserir um registro na tabela EMP. Não submeta
   INSERT a commit.
   Dica: Pelo menos um dos segmentos de rollback precisa estar ONLINE para que
   você possa inserir com sucesso uma linha na tabela EMP.
 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem
   usados pelas transações.
   Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS.
 5 Localize o segmento de rollback que é usado pela transação.
   Dica: É possível obter essa informação reunindo as views V$ROLLSTAT e
   V$ROLLNAME.
 6 Chame o SQL*Plus do diretório labs. Execute o script ins_emp.sql. Usando uma
   sessão separada, coloque o tablespace do segmento de rollback como off-line.
   Dica
• O script inicia outra transação que insere uma linha na tabela EMP. Como ambas
   transações estão usando os segmentos de rollback nesse tablespace, você precisará
   usar as etapas a seguir.
   – Primeiro coloque todos os segmentos de rollback no tablespace como
       OFFLINE para impedir que novas transações usem os segmentos de rollback
       no tablespace.
   – Agora identifique as sessões que estão usando os segmentos de rollback no
       tablespace RBS.
   – Cancele as sessões que estão usando segmentos de rollback no tablespace.
   – Coloque o tablespace RBS como off-line.




.....................................................................................................................................................
B-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 10: Gerenciando Segmentos de Rollback
.....................................................................................................................................................

 7 (a) Desative a instância, inicialize novamente e consulte as informações do
      segmento de rollback no dicionário de dados para verificar quantos segmentos de
      rollback estão on-line.
      (b) Verifique se todos os segmentos de rollback serão colocados como on-line
      sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que
      todos os segmentos de rollback estejam ONLINE.
      Dica: Para isso, use o parâmetro de inicialização ROLLBACK_SEGEMENTS.
      Além disso, é necessário colocar como ONLINE o tablespace RBS.
 8    Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados
      com os seguintes parâmetros de armazenamento e verifique se é possível usá-lo.
      Isso é essencial para a próxima pergunta:
      INITIAL = 10K
      NEXT = 10K
      OPTIMAL = 30K
      Dica: Para verificar se é possível usar o segmento de rollback, coloque-o como
      ONLINE depois de criá-lo.
 9    Verifique o número de extensões no segmento de rollback DEMO_RBS.
      Estabeleça login como system/manager usando o SQL*Plus e execute o script
      ext_rbs.sql. Há alguma alteração no número de extensões no segmento
      de rollback?
10    Certifique-se de que o segmento de rollback DEMO_RBS foi reduzido para seu
      tamanho ideal.
      Dica: É possível verificar o tamanho OPTIMAL em V$ROLLSTAT.
      Dica: Use o comando ALTER ROLLBACK SEGMENT para reduzir o tamanho e
      verifique novamente.
11    Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada,
      estabeleça conexão como SYSTEM e execute ins_emp3.sql. Verifique se há uma
      sessão bloqueadora.
      Dica: Determine uma sessão bloqueadora em V$ROLLSTAT.
12    Elimine o segmento de rollback DEMO_RBS.
      Dica: É necessário colocar como off-line o rollback antes de eliminá-lo. Talvez
      você precise verificar se nenhuma transação está usando o segmento de rollback.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-17
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 11: Gerenciando Tabelas
 1 Você precisa criar as seguintes tabelas para um sistema de entrada de pedidos que
      está implementando agora. As tabelas e as colunas são mostradas abaixo:

         Tabela                                       Coluna                                        Tipo de Dados e Tamanho
         CUSTOMERS                                    CUST_CODE                                     VARCHAR2(3)
                                                      NAME                                          VARCHAR2(50)
                                                      REGION                                        VARCHAR2(5)
         ORDERS                                       ORD_ID                                        NUMBER(3)
                                                      ORD_DATE                                      DATE
                                                      CUST_CODE                                     VARCHAR2(3)
                                                      DATE_OF_DELY                                  DATE

      Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um
      valor para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito.
      Estabeleça login como system/manager e crie as tabelas com a utilização de
      espaço em bloco apropriada e as definições de tablespace. Use o tablespace
      DATA01. Você pode usar as definições de armazenamento default. Use o
      Assistente de Tabela ao criar a tabela CUSTOMERS. Não use esse Assistente
      ao criar tabelas ORDERS.
      Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que as
      linhas nessa tabela provavelmente crescerão depois das atualizações.
 2    Execute o script ins_cord.sql para inserir linhas nas tabelas.
 3    Localize os arquivos e os blocos que contêm os pedidos do cliente com
      CUST_CODE=A04.
      Dica: Você precisa usar o pacote DBMS_ROWID para converter ROWID.
      Como o banco de dados possui somente alguns arquivos, os números de arquivos
      relativos e os números de arquivos absolutos são os mesmos.
 4    Verifique o número de extensões usado pela tabela ORDERS.
 5    Aloque uma extensão manualmente, com tamanho default, para a tabela ORDERS
      e confirme se a extensão foi adicionada conforme especificado.




.....................................................................................................................................................
B-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 11: Gerenciando Tabelas
.....................................................................................................................................................

 6 (a) Elimine a tabela BIG_EMP.
      (b) Crie outra tabela, ORDERS2, como cópia da tabela ORDERS, mas
      com MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi
      criada com o número especificado de extensões.
 7    Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões
      para localizar extensões que não foram desalocadas.
 8    Altere a tabela ORDERS2 para reduzir MINEXTENTS a 4. Houve uma redução
      no número de extensões?
 9    Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela
      possui agora?
10    (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela
      ORDERS2.
      (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões.
      Algum espaço foi liberado na tabela? Por que ou por que não?
11    (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela
      PRODUCTS, que possui as seguintes colunas:

         Coluna                                       Tipo de Dados e Tamanho
         PROD_CODE                                    NUMBER(6)
         DESCRIPTION                                  VARCHAR2(30)
         PRICE                                        NUMBER(8,2)

      Crie essa tabela no tablespace DATA02 usando tamanhos de extensão uniformes
      de 10K.
      (b) Verifique os tamanhos das extensões dessa tabela. O que você observa?
      Dica: Verifique a view DBA_EXTENTS para obter o tamanho.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-19
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 12: Gerenciando Índices
 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela
   CUSTOMERS. Que tipos de índice são apropriados para as duas colunas?
   Crie os índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX,
   respectivamente, e coloque-os nos tablespaces apropriados.
   Dica: Um índice em árvore B é adequado para uma coluna com vários valores
   distintos e um índice de bitmap é adequado para colunas com apenas alguns
   valores distintos.
 2 Mova o índice CUST_REGION_IDX para outro tablespace.
   Dica: É possível criar o índice novamente especificando outro tablespace.
 3 Anote os arquivos e os blocos usados pelas extensões pelo índice
   CUST_REGION_IDX.

         File_id                                Block_id                               Blocos




   Dica: Use a view DBA_EXTENTS para obter essas informações.
 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, nem criá-lo
   novamente e mantenha-o no mesmo tablespace anterior. O novo índice usa os
   mesmos blocos usados anteriormente?
   Dica: Crie o índice novamente.




.....................................................................................................................................................
B-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 12: Gerenciando Índices
.....................................................................................................................................................

 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a
      tabela NUMBERS.
      (b) Consulte a tabela NUMBERS para obter o número de valores distintos nas
      duas colunas da tabela.
      (c) Usando tamanhos de extensão uniformes de 4K, crie os índices em árvore B
      NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela
      NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.

         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX

      Dica
      – Use PCTINCREASE=0 para criar extensões de mesmo tamanho.
      – Verifique os blocos totais alocados para as extensões de DBA_SEGMENTS.
      (d) Mais uma vez, usando tamanhos de extensão uniformes de 4K, crie os índices
      de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO
      da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.

         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX

      O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos
      dois tipos de índices?
      Dica: É necessário eliminar os índices existentes antes de criar os novos índices.
      Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-21
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 13: Mantendo a Integridade dos Dados
 1 Examine o script cr_cons.sql. Execute-o para criar as restrições.
 2 Consulte o dicionário de dados para:
   (a) Verificar restrições, se são ou não adiáveis e o status das mesmas.
   Dica: Use a view DBA_CONSTRAINTS para obter essas informações.
   (b) Verificar os nomes e os tipos de índices criados para validar as restrições.
   Dica: Os índices são criados somente para restrições exclusivas e de chave
   primária, e possuem o mesmo nome das restrições.
   (c) Verificar as colunas que são usadas nas restrições criadas.
   Dica: É possível obter essas informações em DBA_CONS_COLUMNS.
 3 Insira dois registros com os seguintes valores na tabela PRODUCTS:

    PROD_CODE                         DESCRIPTION                                                                                PRICE

    100860                            Ace Tennis Racket                                                                          36.20

    100860                            Ace Tennis Ball 3-Pack                                                                     2.40

 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida?
   Por que ou por que não?
 5 (a) Verifique se as novas linhas adicionadas à tabela não violam a restrição na
   tabela PRODUCTS.
   Dica: Para fazer isso, ative a restrição NOVALIDATE.
   (b) Consulte o dicionário de dados para verificar o efeito da alteração.
   (c) Verifique se a restrição rejeita inserções que a violam adicionando uma linha
   com os seguintes valores:
   PROD_CODE: 100860
   DESCRIPTION: Yellow Jersey Bicycle Helmet
   PRICE: 30




.....................................................................................................................................................
B-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 14: Carregando Dados
.....................................................................................................................................................


Exercício 14: Carregando Dados
Use a conta system para todas as perguntas deste laboratório.
 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS.
   (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS.
   (b) Anote o último número de arquivo/bloco usado no momento por uma linha
   na tabela _____________________.
   Dica: Consulte as ROWIDs usando as funções no pacote DBMS_ROWID.
 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com os seguintes
   valores na tabela:
   ORD_ID: 200
   PROD_CODE: 200000
   QTY: 20
   (b) Verifique e anote o número de arquivo/bloco da nova linha
   _____________________.
 3 (a) Use a inserção de carga direta para copiar dados para a tabela ITEMS2 da
   tabela ITEMS.
   (b) Verifique os números de arquivo/bloco das linhas com ORD_ID<>200. O que
   você pode observar sobre a localização dessas linhas?
 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat .
   Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a
   demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as
   etapas a seguir para tentar duas execuções de carga e se familiarizar com o uso do
   SQL*Loader:
   (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP.
   (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo
   de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela
   DEPT para verificar os dados carregados.
   (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando
   o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo de
   dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte
   a tabela EMP para verificar os dados carregados.
 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2.
   Dica: Consulte a view DBA_SEGMENTS.
   (b) Aloque uma extensão para a tabela manualmente e anote o número de
   extensões e de blocos agora ______________________. Como você acabou de
   criar a extensão, a nova extensão está vazia.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-23
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 15: Reorganizando Dados
 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar.
   Verifique o número e o tamanho das extensões na tabela ITEMS2 antes de eliminá-
   la e depois repita esse procedimento após importar a tabela. O que você pode
   deduzir o comportamento dos utilitários Importar/Exportar no que se refere à
   alocação de espaço?
   Dica: Execute as seguintes etapas:
   – Para isso, use a exportação no nível de tabela.
   – Elimine a tabela ITEMS2.
   – Importe a tabela ITEMS2.
   – Verifique o número e o tamanho das extensões na tabela ITEMS2 usando
       DBA_SEGMENTS.
 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa
   um índice para mostrar como executar esse procedimento.
   (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna
   ORD_ID da tabela ITEMS2.
   (b) Usando os utilitários Importar e Exportar, mova o índice para o
   tablespace INDX01.
   Dica: Execute as seguintes etapas.
   – Exporte a tabela com índices, mas sem linhas.
   – Elimine o índice.
   – Importe a partir da saída da exportação anterior e formule um script para criar
       o índice.
   – Edite o arquivo de índice criado na etapa anterior de modo a alterar o
       tablespace para INDX01 e execute o script para criar o índice novamente.




.....................................................................................................................................................
B-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 16: Gerenciando a Segurança de Senha
.....................................................................................................................................................


Exercício 16: Gerenciando a Segurança de Senha
 1 Ative o gerenciamento de senhas usando o script utlpwdmg.sql.
      Dica: Não há dica para esse item.
 2    Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece?
      Dica: Não há dica para essa pergunta.
 3    Certifique-se de que os seguintes itens se apliquem aos usuários aos quais o perfil
      DEFAULT foi atribuído:
      – Depois de duas tentativas de login, a conta deverá ser bloqueada.
      – A senha deverá expirar depois de 30 dias.
      – A mesma senha não deverá ser reutilizada por, pelo menos, um minuto.
      – A conta deverá ter um período de tolerância de cinco dias para alterar uma
          senha que expirou.
      Certifique-se de que os requisitos concedidos tenham sido implementados.
      Dica
      – Use o comando ALTER PROFILE para alterar os limites de perfil default.
      – Consulte as views de dicionário de dados DBA_PROFILES para verificar o
          resultado.
 4    Estabeleça login como o usuário SYSTEM fornecendo uma senha inválida. Repita
      esse procedimento duas vezes e depois estabeleça login novamente fornecendo
      desta vez a senha correta.
      Dica: Não há dica para esse item.
 5    Verifique se é possível estabelecer conexão como o usuário SYSTEM novamente.
      Dica: Execute o comando ALTER USER para "desbloquear" a conta SYSTEM.
 6    Desative verificações de senha para o perfil DEFAULT.
      Dica: Execute o comando ALTER PROFILE para desativar as verificações
      de senha.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-25
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 17: Gerenciando Usuários
 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que objetos e
      segmentos temporários criados por Bob não sejam criados no tablespace
      SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de
      até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando
      o Oracle Enterprise Manager, execute o script bob.sql.
      Dica: Verifique se o tablespace temporário está atribuído.
 2    (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que objetos e
      segmentos de classificação criados por Kay não sejam criados no tablespace
      SYSTEM.
      (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Nomeie
      a nova tabela como ORDERS.
      Dica: Kay precisa de uma cota em seu tablespace default para que objetos possam
      ser criados no seu esquema.
 3    Exiba as informações sobre Bob e Kay no dicionário de dados.
      Dica: Para obter essas informações, consulte DBA_USERS.
 4    No dicionário de dados, exiba as informações sobre o espaço que Bob pode usar
      nos tablespaces.
      Dica: Para obter essas informações, consulte DBA_TS_QUOTAS.
 5    (a) Como o usuário Bob, altere o seu tablespace temporário. O que acontece?
      Por quê?
      (b) Como Bob, altere a sua senha para SAM.
 6    Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo.
 7    Remova a conta de Kay do banco de dados.
      Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE.
 8    Bob esqueceu a sua senha. Atribua ao mesmo uma senha OLINK e exija que ele
      altere a senha na próxima vez em que estabelecer logon.




.....................................................................................................................................................
B-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 18: Gerenciando Privilégios
.....................................................................................................................................................


Exercício 18: Gerenciando Privilégios
 1 Como o usuário SYSTEM, crie o usuário Kay e conceda a ele a capacidade de
      estabelecer logon no banco de dados e criar objetos em seu esquema.
      Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE.
 2    (a) Estabeleça conexão como Kay e crie tabelas usando o script ulcase1.sql para
      criar as tabelas EMP e DEPT.
      (b) Estabeleça conexão como o usuário system e copie os dados de
      SYSTEM.EMP para a tabela EMP de Kay. Verifique se os registros
      foram inseridos.
      (c) Como o usuário system, conceda a Bob a capacidade de efetuar seleções na
      tabela EMP de Kay. O que acontece e por quê?
 3    Estabeleça conexão novamente como Kay e conceda a Bob a capacidade de efetuar
      seleções na tabela EMP de Kay. Além disso, permita que Bob conceda a outros
      usuários a capacidade de seleção. Examine as views de dicionário de dados que
      registram essas ações.
      Dica: Consulte a view DBA_TAB_PRIVS para ver os privilégios.
 4    Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados.
 5    (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Conceda a Bob a
      nova senha sam.
      (b) Como Kay, remova o privilégio de Bob de ler a tabela EMP de Kay.
      (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê?
 6    (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela
      DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e
      por quê?
      (b) Como o usuário system, examine a view de dicionário de dados
      DBA_TABLES para verificar o resultado.
 7    Permita que Kay inicialize e desative o banco de dados sem a capacidade de criar
      um novo banco de dados.
      Dica: Conceda a Kay o privilégio SYSOPER.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-27
Apêndice B: Dicas
.....................................................................................................................................................


Exercício 19: Gerenciando Atribuições
 1 Examine a view de dicionário de dados e liste os privilégios do sistema da
      atribuição RESOURCE.
      Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS.
 2    Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela,
      criar uma view e fazer seleções na tabela EMP de Kay.
 3    (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente
      que a atribuição RESOURCE seja ativada automaticamente quando ele
      estabelecer logon.
      Dica: Use o comando ALTER USER para especificar a atribuição default.
      (b) Conceda a Bob a capacidade de ler todas as informações de dicionário
      de dados.
      Dica: Atribua SELECT_CATALOG_ROLE a Bob.
 4    Bob precisa verificar os segmentos de rollback que são usados no momento pela
      instância. Estabeleça conexão como Bob e liste os segmentos de rollback usados.
      Dica: Bob precisa de SELECT_CATALOG_ROLE para verificar os segmentos de
      rollback, mas, como essa não é uma das atribuições default do mesmo, é
      necessário ativá-la primeiro.
 5    Como o usuário system, tente criar uma view EMP_VIEW na tabela EMP de Kay.
      O que acontece e por quê?




.....................................................................................................................................................
B-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 20: Usando o Suporte a Idioma Nacional (National Language Support – NLS)
.....................................................................................................................................................


Exercício 20: Usando o Suporte a Idioma Nacional
(National Language Support – NLS)
 1 Verifique o conjunto de caracteres nacionais e do banco de dados.
   Dica: Consulte a view de dicionário de dados NLS_DATABASE_PARAMETERS
   para verificar os conjuntos de caracteres.
 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados?
   Dica: Consulte a view de dicionário de dados V$NLS_VALID_VALUES para
   listar os valores válidos.
 3 Certifique-se de que todas as datas nessa sessão sejam exibidas usando um ano de
   quatro dígitos.
   Dica: Defina o parâmetro NLS_DATE_FORMAT.
 4 Defina NLS_LANG no lado servidor e no lado cliente para ativar o esquema de
   codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o
   usuário SYS e exiba as linhas. Exporte a tabela. Importe a tabela para o usuário Bob
   usando o conjunto de caracteres US7ASCII.
   Consulte a tabela; o que aconteceu e por quê? (opcional)




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        B-29
Apêndice B: Dicas
.....................................................................................................................................................




.....................................................................................................................................................
B-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
C
              ................................




Soluções dos Exercícios
         Para SQL*Plus
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 1
 1 Um usuário tenta estabelecer logon e recebe a mensagem de erro "ORA-01034
      ORACLE not available" (ORA-01034 ORACLE não disponível). Qual destas
      opções é a provável causa do problema?
      a O usuário forneceu uma senha inválida.
      b O usuário forneceu um nome de usuário inválido.
      c A instância com a qual o usuário está estabelecendo conexão não está
         sendo executada.
      d A versão do Oracle que o usuário está solicitando não está instalada.
      Resposta: C
 2    Um usuário executa um comando SQL para atualizar uma linha na tabela EMP.
      Qual processo executa essa instrução?
      a Processo de usuário
      b Processo de servidor
      c DBWR
      d LGWR
      Resposta: B
 3    Um usuário executa um comando SQL para atualizar uma linha na tabela EMP.
      Onde está a alteração feita pelo processo identificado na pergunta anterior?
      a Arquivos de dados
      b Cache de buffer do banco de dados
      c Pool compartilhado
      d Arquivo de parâmetros
      Resposta: B
 4    Qual destes arquivos é usado para autenticar usuários de banco de
      dados privilegiados?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de log arquivado
      Resposta: C
 5    Qual destes arquivos não faz parte do banco de dados?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados
      Resposta: C



.....................................................................................................................................................
C-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 1
.....................................................................................................................................................

 6 Qual destes arquivos armazena segmentos de rollback?
      a   Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados
      Resposta: D
 7    Qual destas áreas da memória não faz parte da SGA?
      a Cache de buffer do banco de dados
      b PGA
      c Buffer de redo log
      d Pool compartilhado
      Resposta: B
 8    Qual destas áreas da memória é usada para armazenar em cache as informações de
      dicionário de dados?
      a Cache de buffer do banco de dados
      b PGA
      c Buffer de redo log
      d Pool compartilhado
      Resposta: D
 9    Quais destes estágios são usados para processar uma instrução DML?
      a Análise
      b Execução
      c Extração
      Resposta: A, B
10    Quando um usuário executa uma submissão a commit, em qual destes arquivos as
      alterações são registradas antes de o servidor Oracle retornar uma mensagem
      "Commit complete" (Commit concluído) para o usuário?
      a Arquivo de redo log
      b Arquivo de controle
      c Arquivo de senhas
      d Arquivo de dados
      Resposta: A




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          C-3
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 2
Usando o SQL*Plus
 1 Qual é o tamanho do cache de buffer do banco de dados?

    SQL> connect system/manager@db01
    Connected.

    SQL> sho sga

    Total System Global Area                                    6315408           bytes
    Fixed Size                                                    64912           bytes
    Variable Size                                               5308416           bytes
    Database Buffers                                             409600           bytes
    Redo Buffers                                                 532480           bytes


 2 Qual é o tamanho da área global do sistema?

    SQL> sho sga

    Total System Global Area                                    6315408           bytes
    Fixed Size                                                    64912           bytes
    Variable Size                                               5308416           bytes
    Database Buffers                                             409600           bytes
    Redo Buffers                                                 532480           bytes




.....................................................................................................................................................
C-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 2
.....................................................................................................................................................

 3 Liste as primeiras nove linhas das colunas OWNER, TABLE_NAME e
      TABLESPACE _NAME da view de dicionário de dados DBA_TABLES e formate
      a saída. (A exibição das dez primeiras linhas é suficiente.) Saia do SQL*Plus.

    SQL>       COL owner FORMAT a5
    SQL>       COL table_name FORMAT a15
    SQL>       COL tablespace_name FORMAT a15
    SQL>       SELECT owner, table_name, tablespace_name
      2        FROM dba_tables
      3        WHERE rownum < 10;

    OWNER        TABLE_NAME                        TABLESPACE_NAME
    -----        ---------------                   ---------------
    SYS          FILE$                             SYSTEM
    SYS          BOOTSTRAP$                        SYSTEM
    SYS          SEG$                              SYSTEM
    SYS          ICOL$                             SYSTEM
    SYS          IND$                              SYSTEM
    SYS          CDEF$                             SYSTEM
    SYS          OBJ$                              SYSTEM
    SYS          PROXY$                            SYSTEM
    SYS          CCOL$                             SYSTEM

    SQL> exit
    Disconnected from Oracle8i Enterprise Edition Release 8.1.5.0.0 ...
    With the Partitioning and Java options
    PL/SQL Release 8.1.5.0.0 - Production


 4 Inicie o SQL*Plus e execute um script chamado para.sql, que efetua spool em
      todos os parâmetros de inicialização para o arquivo de saída para.lst.
      Dica: Chame para.sql da linha de comandos do sistema operacional.

    $ sqlplus system/manager@db01 @$HOME/LABS/para.sql

    SQL*Plus: Release 8.1.5.0.0 - Production on Thu May 6 15:37:15 1999

    (c) Copyright 1999, Oracle Corporation. All Rights Reserved.

    Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production
    With the Partitioning and Java options
    PL/SQL Release 8.1.5.0.0 - Production

    Connected.

    NAME                                                                                  TYPE                      VALUE
    --------                                                                              ------                    ------
    ...
    db_name                                                                               string                    db01
    ...




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          C-5
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 5 Execute o script scott.sql.

           SQL> @$HOME/LABS/scott
           Connected.


           Grant succeeded


           Connected.


           Table created.


           Table created.


           1 row created.
           ....
           1 row created.


           Commit completed.




.....................................................................................................................................................
C-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................


Soluções do Exercício 3
 1 Identifique o nome do banco de dados, o nome da instância e o tamanho dos blocos
      de banco de dados.
      Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD
      e V$PARAMETER.

          SQL> CONNECT system/manager@db01
          Connected.
          SQL> SELECT name FROM v$database;
            NAME
          ---------
          DB01


          SQL> SELECT instance FROM v$thread;
          INSTANCE
          ----------------
          DB01


          SQL> SELECT value
               2 FROM v$parameter
               3 WHERE name = 'db_block_size';
          VALUE
          -------------------------
          4096




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          C-7
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 2 Liste o nome e o tamanho dos arquivos de dados, dos arquivos de redo log on-line
      e o nome dos arquivos de controle.
      Dica: Consulte as views de desempenho dinâmicas V$DATAFILE, V$LOGFILE
      e V$CONTROLFILE.

           SQL> SELECT name FROM v$datafile;
           NAME
           -----------------------------------------
           /oracle/hrasmuss/DATA/DISK1/system01.dbf
           /oracle/hrasmuss/DATA/DISK2/rbs01.dbf
           /oracle/hrasmuss/DATA/DISK3/data01.dbf
           /oracle/hrasmuss/DATA/DISK2/temp01.dbf
           /oracle/hrasmuss/DATA/DISK2/indx01.dbf
           /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf
           /oracle/hrasmuss/DATA/DISK1/query01.dbf


           SQL> SELECT member FROM v$logfile;
           MEMBER
           -----------------------------------------
           /oracle/hrasmuss/DATA/DISK3/redo0101.log
           /oracle/hrasmuss/DATA/DISK4/redo0102.log
           /oracle/hrasmuss/DATA/DISK3/redo0201.log
           /oracle/hrasmuss/DATA/DISK4/redo0202.log


           SQL> SELECT name FROM v$controlfile;
           NAME
           -----------------------------------------
           /oracle/hrasmuss/DATA/DISK1/control01.ctl




.....................................................................................................................................................
C-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

 3 Liste as opções instaladas.
      Dica: Consulte a view de desempenho dinâmica V$OPTION.

    SQL> COL paramter FORMAT a40
    SQL> COL status FORMAT a10
    SQL> SELECT * from v$option;

    PARAMETER                                                                               VALUE
    ----------------------------------------                                                ----------
    Partitioning                                                                            TRUE
    Objects                                                                                 TRUE
    Parallel Server                                                                         FALSE
    Advanced replication                                                                    TRUE
    Bit-mapped indexes                                                                      TRUE
    Connection multiplexing                                                                 TRUE
    Connection pooling                                                                      TRUE
    Database queuing                                                                        TRUE
    Incremental backup and recovery                                                         TRUE
    Instead-of triggers                                                                     TRUE
    Parallel backup and recovery                                                            TRUE
    Parallel execution                                                                      TRUE
    Parallel load                                                                           TRUE
    Point-in-time tablespace recovery                                                       TRUE
    Fine-grained access control                                                             TRUE
    N-Tier authentication/authorization                                                     TRUE
    Function-based indexes                                                                  TRUE
    Plan Stability                                                                          TRUE
    Online Index Build                                                                      TRUE
    Coalesce Index                                                                          TRUE
    Managed Standby                                                                         TRUE
    Materialized view rewrite                                                               TRUE
    Materialized view warehouse refresh                                                     TRUE
    Database resource manager                                                               TRUE
    Spatial                                                                                 TRUE
    Visual Information Retrieval                                                            TRUE
    Export transportable tablespaces                                                        TRUE
    Transparent Application Failover                                                        TRUE
    Fast-Start Fault Recovery                                                               TRUE
    Sample Scan                                                                             TRUE
    Duplexed backups                                                                        TRUE
    Java                                                                                    TRUE




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          C-9
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 4 Exiba os números de versão.
      Dica: Consulte a view de desempenho dinâmica V$VERSION.

           SQL> SELECT * FROM v$version;
           BANNER
           ----------------------------------------------------------
           Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production
           PL/SQL Release 8.1.5.0.0 - Production
           CORE Version 8.1.3.0.0 - Production
           TNS for Solaris: Version 8.1.5.0.0 - Production
           NLSRTL Version 3.4.0.0.0 - Production


 5 Exiba o número máximo de processos de usuário do sistema operacional que pode
      estabelecer simultaneamente uma conexão com a instância.
      Dica: Consulte a view de desempenho dinâmica V$PARAMETER ou use
      SHOW PARAMETER.

           SQL> SELECT value
                2 FROM v$parameter
                3 WHERE name = 'processes';
           VALUE
           -------------------------------------------------------
           60




.....................................................................................................................................................
C-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

 6 Tente alterar o tamanho do bloco de banco de dados. O que acontece?

    SQL> connect sys/oracle@db01 as sysdba

    Connected.

    SQL> shutdown immediate;

    Database closed.
    Database dismounted.
    ORACLE instance shut down.

    SQL> exit

    a     Edite initdb01.ora e adicione a linha a seguir.
    DB_BLOCK_SIZE=8192

    b     Inicialize o banco de dados da seguinte forma:
    SQL> connect sys/oracle@db01 as sysdba

    Connected.

    SQL> startup pfile=$HOME/initdb01.ora

    ORACLE instance started.
    Total System Global Area    6315408 bytes
    Fixed Size                    64912 bytes
    Variable Size               5308416 bytes
    Database Buffers             409600 bytes
    Redo Buffers                 532480 bytes
    ORA-00209: control file blocksize mismatch, check alert log for
    more info

    SQL> shutdown immediate;
    SQL> exit

    c     Edite o arquivo init<SID>.ora para desfazer a alteração de db_block_size
          feita acima.
    SQL> connect sys/oracle as sysdba
    SQL> startup pfile=$HOME/initDB01.ora




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-11
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 7 Liste o parâmetro de inicialização default.
      Dica: Consulte a view de desempenho dinâmica V$PARAMETER.

    SQL> SELECT name

        2 FROM v$parameter

      3 WHERE isdefault='TRUE';
    NAME
    -------------------------------------------------------
    spin_count
    sessions
    ...
    session_max_open_files
    aq_tm_processes
    hs_autoregister

    174 rows selected.




.....................................................................................................................................................
C-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

 8 Abra o banco de dados no modo somente para leitura. Conecte-se como o usuário
      SCOTTe adicione 10% a todos os salários na tabela EMP. O que acontece?
      a Retorne o banco de dados para o modo de leitura/gravação.

    SQL> connect sys/oracle@db01 as sysdba
    Connected.
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit

    b     Inicialize o banco de dados da seguinte forma:
    SQL> connect sys/oracle@db01 as sysdba
    Connected
    SQL> startup pfile=$HOME/initDB01.ora mount;
    ORACLE instance started.
    Total System Global Area    6315408 bytes
    Fixed Size                    64912 bytes
    Variable Size               5308416 bytes
    Database Buffers             409600 bytes
    Redo Buffers                 532480 bytes
    Database mounted.

    SQL> alter database open read only;
    SQL> Database altered.
    SQL> connect scott/tiger@db01
    SQL> update emp set sal=sal*1.1;
    0 rows updated.
    SQL> connect sys/oracle@db01 as sysdba
    Connected
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit

    c     Inicialize o banco de dados da seguinte forma:
    SQL> connect sys/oracle@db01 as sysdba
    Connected
    SQL> startup pfile=$HOME/initDB01.ora;
    ORACLE instance started.
    Total System Global Area    6315408 bytes
    Fixed Size                    64912 bytes
    Variable Size               5308416 bytes
    Database Buffers             409600 bytes
    Redo Buffers                 532480 bytes
    Database mounted.
    Database opened.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-13
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 9 Ative e verifique o andamento nos arquivos de rastreamento de forma dinâmica.
      Dica: Use o comando ALTER SYSTEM. Use a view de desempenho dinâmica
      V$PARAMETER para verificar o resultado.

    SQL> SELECT value, isdefault, ismodified
      2 FROM v$parameter
      3 WHERE name = 'timed_statistics';
    VALUE                          ISDEFAULT ISMODIFIED
    ------------------------------ --------- ----------
    FALSE                          TRUE      FALSE

    1 row selected.

    SQL> ALTER SYSTEM SET timed_statistics=true;
    System altered.

    SQL> SELECT value, isdefault, ismodified
      2 FROM v$parameter
      3 WHERE name ='timed_statistics';
    VALUE                          ISDEFAULT ISMODIFIED
    ------------------------------ --------- ----------
    TRUE                           TRUE      SYSTEM_MOD


10 Conecte-se como o usuário SCOTT e insira linhas na tabela EMP. Abra uma
      segunda sessão e tente desativar o banco de dados com a opção transacional.
      O que acontece?
      Dica: Não há nenhuma dica para essa pergunta.

           SQL> connect scott/tiger@db01
           Connected.
           SQL> INSERT INTO emp (empno, ename, deptno)
                    2 VALUES (1,'Vijay',10);
           1 row created.
           a     Na segunda sessão,
           SQL> connect sys/oracle@db01 as sysdba
           SQL> shutdown transactional


      O servidor Oracle espera a transação de SCOTT terminar antes de
      desativar. Espere a instância ser desativada na segunda sessão. Em seguida,
      ative-a novamente.

    SQL> startup pfile=$HOME/initDB01.ora




.....................................................................................................................................................
C-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

11 Verifique se pelo menos duas sessões estão abertas; uma sessão como o
      usuário SCOTT e outra como usuário SYS. Ative a sessão restrita, verifique isso e
      certifique-se de que somente o administrador de banco de dados SYS
      esteja conectado.
      Dicas:
      – Use o comando ALTER SYSTEM para ativar a sessão restrita e consulte as
          views de desempenho dinâmicas V$INSTANCE para verificar o resultado.
      – Use a view de desempenho dinâmica V$SESSION para ver os valores das
          colunas SID e SERIAL#.
      – Execute o comando ALTER SYSTEM KILL SESSION para encerrar sessões.

    SQL> connect scott/tiger@db01
    Connected.

    a     Na primeira sessão,
    SQL> INSERT INTO emp (empno, ename, deptno)
         2 VALUES (1,'Vijay',10);
    1 row inserted.

    b     Na segunda sessão,
    SQL> connect sys/oracle@db01 as sysdba
    Connected.
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
    System altered.
    SQL> SELECT logins FROM v$instance;
    LOGINS
    ----------
    RESTRICTED
    SQL> SELECT sid, serial#,username
      2 FROM v$session
      3 WHERE username!= 'SYS';
    SID        SERIAL#    USERNAME
    ---------- ---------- ------------------------------
             7      3 SCOTT

    SQL> ALTER SYSTEM
      2 KILL SESSION '7,3';
    System altered.
    SQL> SELECT username, status
      2 FROM v$session
      3 WHERE type='USER';
    USERNAME                                                           STATUS
    ------------------------------                                     --------
    SCOTT                                                              KILLED
    SYS                                                                ACTIVE

    c     Na primeira sessão,
    SQL> SELECT user
      2 FROM dual;
    Your session has been killed.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-15
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

12 Examine o exemplo a seguir de um arquivo de alerta para identificar se houve
      erros internos ou exceções.

    Wed Jun 30 13:24:30 1999
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    LICENSE_MAX_USERS = 0
    Starting up ORACLE RDBMS Version: 8.1.5.0.0.
    System parameters with non-default values:
       processes                = 60
       shared_pool_size         = 3500000
       java_pool_size           = 1000000
       control_files            = $HOME/DATA/DISK1/control01.con
       db_block_buffers         = 100
       db_block_size            = 4096
       compatible               = 8.1.5
       log_checkpoint_interval = 10000
       log_checkpoint_timeout   = 1800
       db_files                 = 1024
       db_file_multiblock_read_count= 8
       dml_locks                = 200
       rollback_segments        = sysrol
       db_domain                = world
       global_names             = TRUE
       distributed_transactions = 10
       sort_area_size           = 64000
       db_name                  = DB01
       job_queue_processes      = 2
       job_queue_interval       = 10
       parallel_max_servers     = 12
       background_dump_dest     = $HOME/BDUMP
       user_dump_dest           = $HOME/UDUMP
       max_dump_file_size       = 10240
       core_dump_dest           = $HOME/CDUMP
    PMON started with pid=2
    DBW0 started with pid=3
    LGWR started with pid=4
    CKPT started with pid=5
    SMON started with pid=6
    RECO started with pid=7
    SNP0 started with pid=8
    SNP1 started with pid=9
    ..
    Corrupt block relative dba: 0x01c0003a file=7. blocknum=58.
    Fractured block found during buffer read
    Data in bad block - type:6. format:2. rdba:0x01c0003a
    last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00
    consistancy value in tail 0x44c506a0
    check value in block header: 0x0, check value not calculated
    spare1:0x0, spare2:0x0, spare2:0x0


Há uma mensagem de corrupção de blocos como mostrado acima. Observe
também outras mensagens úteis como:
• Tempo de inicialização
• Parâmetros de inicialização não default e processos de segundo plano
• Criação de tablespace e alternâncias de log (serão abordadas em uma lição
   posterior)
.....................................................................................................................................................
C-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 4
.....................................................................................................................................................


Soluções do Exercício 4
Insira os diretórios especificados para os arquivos em $HOME/DATA.
 1 Crie um arquivo de senhas usando as seguintes informações:
    – Senha de sys:oracle
    – Ative cinco usuários privilegiados
    Certifique-se de que o Oracle possa gravar nesse arquivo.
    Dica: Use o utilitário orapwd para criar o arquivo de senhas e localizá-lo no
    diretório $ORACLE_HOME/dbs.

    $rm $ORACLE_HOME/dbs/orapwDB01

    $orapwd file=$ORACLE_HOME/dbs/orapwDB01 entries=5 

    > password=oracle

    $chmod 777 $ORACLE_HOME/dbs/orapwDB01


 2 Crie um script para obter um banco de dados com a seguinte configuração:
      – Nome do banco de dados e nome da instância DB<xx>
      – Um arquivo de controle chamado control01.con, localizado no
          diretório DISK5
      – Dois grupos de arquivos de redo log, cada um com um membro de 150 KB
          chamado redo0101.log e redo0201.log, localizado no diretório DISK6
      – O máximo de cinco grupos de arquivos de log e cinco membros de arquivos de
          log para cada grupo
      – Um arquivo de dados de 20 MB chamado system01.dbf, localizado no
          diretório DISK4
      – O máximo de 30 arquivos de dados que podem ser criados para o banco
          de dados
      – O máximo de 100 redo logs arquivados para a recuperação automática
          de mídia
      – O conjunto de caracteres WE8ISO8859P1
      Insira o arquivo de rastreamento no diretório BDUMP e CDUMP.
      Dicas:
      – Edite o arquivo de parâmetros.
      – Inicie a instância.
      – Gere o script do comando CREATE DATABASE.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-17
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

.




     SQL> STARTUP NOMOUNT PFILE=initdb01.ora;
     ORACLE instance started.
     Total System Global Area    6315408 bytes
     Fixed Size                    64912 bytes
     Variable Size               5308416 bytes
     Database Buffers             409600 bytes
     Redo Buffers                 532480 bytes
     SQL> CREATE DATABASE "DB01"
       2     MAXLOGFILES 5
       3     MAXLOGMEMBERS 5
       4     MAXDATAFILES 30
       5     MAXLOGHISTORY 100
       6 LOGFILE
       7   GROUP 1
       8     '$HOME/DATA/DISK6/redo0101.log' SIZE 150K,
       9   GROUP 2
       10     '$HOME/DATA/DISK6/redo0201.log' SIZE 150K
       11 DATAFILE
       12   '$HOME/DATA/DISK4/system01.dbf' SIZE 20M
       13 CHARACTER SET WE8ISO8859P1;
     Database created.


    3 Ative o spool para encontrar os erros e execute o script.
    4 (Opcional) Inclua o comando "spool <nome_arquivo>" antes de executá-lo.




.....................................................................................................................................................
C-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 4
.....................................................................................................................................................

 5 (Opcional) Depois que o banco de dados tiver sido criado, verifique o estado do
      mesmo e certifique-se de que os arquivos de banco de dados tenham sido criados.
      Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD,
      V$DATAFILE, V$LOGFILE e V$CONTROLFILE.

    SQL> connect sys/oracle@db01 as sysdba;

    Connected.

    SQL> SELECT name, created, log_mode FROM v$database;

    NAME      CREATED   LOG_MODE
    --------- --------- ------------
    DB01      10-JUN-99 NOARCHIVELOG

    SQL> SELECT status, instance FROM v$thread;
    STATUS INSTANCE
    ------ ----------------
    OPEN   DB01

    SQL> SELECT name FROM v$datafile;

    NAME
    ------------------------------------------
    /oracle/hrasmuss/DATA/DISK4/system01.dbf

    SQL> SELECT member FROM v$logfile;
    MEMBER
    ----------------------------------------
    /oracle/hrasmuss/DATA/DISK6/redo0101.log
    /oracle/hrasmuss/DATA/DISK6/redo0201.log

    SQL> SELECT name FROM v$controlfile;

    NAME
    -----------------------------------------
    /oracle/hrasmuss/DATA/DISK5/control01.con

    SQL> show sga

    Total System Global Area                                    6315408           bytes
    Fixed Size                                                    64912           bytes
    Variable Size                                               5308416           bytes
    Database Buffers                                             409600           bytes
    Redo Buffers                                                 532480           bytes




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-19
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 6 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê?

    SQL> SELECT username
      2 FROM dba_users;
    FROM dba_users
         *
    ORA-00942: table or view does not exist


Há falha nessa operação porque as views de dicionário de dados ainda
não foram criadas.




.....................................................................................................................................................
C-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 5
.....................................................................................................................................................


Soluções do Exercício 5
 1 Crie as views de dicionário de dados.

    SQL> @@?/rdbms/admin/catalog
    ....
    Role created.

    Grant succeeded.

    Commit completed.


 2 Use as views de dicionário de dados para reunir as seguintes informações:
      a  Qual é o nome e o número dos segmentos de rollback?
      Dica: Consulte a view de dicionário de dados DBA_ROLLBACK_SEGS para
      mostrar o nome dos segmentos de rollback.

    SQL> SELECT segment_name
      2 FROM dba_rollback_segs;
    SEGMENT_NAME
    ------------------------------
    SYSTEM
    SYSROL


      b   Identifique o arquivo de dados que compõe o tablespace SYSTEM.
      Dica: Consulte a view de dicionário de dados DBA_DATA_FILES para identificar
      os arquivos de dados que compõem o tablespace SYSTEM.

    SQL> SELECT file_name
         2 FROM dba_data_files
         3 WHERE tablespace_name='SYSTEM';
    FILE_NAME
    -----------------------------------------
    /oracle/hrasmuss/DATA/DISK1/system01.dbf




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-21
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      c  Qual é o espaço disponível no banco de dados e qual é a quantidade de espaço
         já utilizada?
      Dicas:
      – Consulte a view de dicionário de dados DBA_FREE_SPACE para mostrar o
         espaço disponível no banco de dados.
      – Consulte a view de dicionário de dados DBA_SEGMENTS para exibir o
         espaço já utilizado.
.




    SQL> SELECT sum(bytes)/1024 "free space in KB"
      2 FROM dba_free_space;
    free space in KB
    ----------------
              146976

    SQL> SELECT sum(bytes)/1024 "used space in KB"
      2 FROM dba_segments;
    used space in KB
    ----------------
               43460


      d   Liste o nome e a data de criação dos usuários do banco de dados.
      Dica: Consulte a view de dicionário de dados DBA_USERS para listar o nome e a
      criação dos usuários do banco de dados.

    SQL> SELECT username, created FROM dba_users;
    USERNAME                       CREATED
    ------------------------------ ---------
    SYS                            10-JUN-99
    SYSTEM                         10-JUN-99
    SCOTT                          10-JUN-99
    OUTLN                          10-JUN-99
    DBSNMP                         10-JUN-99




.....................................................................................................................................................
C-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 5
.....................................................................................................................................................

 3 Verifique as tabelas de dicionário de dados que são usadas para definir a view
      DBA_USERS.
      Dica: Consulte a view de dicionário de dados DBA_VIEWS para exibir a
      definição de view da view de dicionário de dados DBA_USERS.

    SQL> SET PAGESIZE 100
    SQL> SET LONG 1400
    SQL> SELECT text
         2 FROM dba_views
         3 WHERE view_name = 'DBA_USERS';
    TEXT
    ------------------------------------------------------------------
    -------
    select u.name, u.user#, u.password,
            m.status,
            decode(u.astatus, 4, u.ltime,
                               5, u.ltime,
                               6, u.ltime,
                               8, u.ltime,
                               9, u.ltime,
                               10, u.ltime, to_date(NULL)),
            decode(u.astatus,
                   1, u.exptime,
                   2, u.exptime,
                   5, u.exptime,
                   6, u.exptime,
                   9, u.exptime,
                   10, u.exptime,
                   decode(u.ptime, '', to_date(NULL),
                      decode(pr.limit#, 2147483647, to_date(NULL),
                       decode(pr.limit#, 0,
                         decode(dp.limit#, 2147483647, to_date(NULL),
    u.ptime +
                           dp.limit#/86400),
                         u.ptime + pr.limit#/86400)))),
            dts.name, tts.name, u.ctime, p.name, u.defschclass,
    u.ext_username
           from sys.user$ u, sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
                sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp
            where u.datats# = dts.ts#
            and u.resource$ = p.profile#
            and u.tempts# = tts.ts#
            and u.astatus = m.status#
            and u.type# = 1
            and u.resource$ = pr.profile#
            and dp.profile# = 0
            and dp.type#=1
            and dp.resource#=1
            and pr.type# = 1
            and pr.resource# = 1




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-23
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 4 Estabeleça o uso da funcionalidade PL/SQL. (Espere um pouco assim que o script
      for iniciado.)

    SQL> @@?/rdbms/admin/catproc
    ....
    Package created.

    Package body created.
    ..
    Library created.
    ..


 5 Verifique se há algum pacote inválido.
      Dica: Consulte a view DBA_OBJECTS para obter essa informação.

    SQL> COL object_name FORMAT a30
    SQL> SELECT object_name, object_type
      2 FROM dba_objects
      3 WHERE object_type LIKE 'PACKAGE%'
      4 AND status = 'INVALID';
    OBJECT_NAME       OBJECT_TYPE
    ------------------------------ ------------------
    DBMSZEXP_SYSPKGGRNT             PACKAGE
    DBMSZEXP_SYSPKGGRNT             PACKAGE BODY
    DBMS_ALERT                      PACKAGE
    DBMS_ALERT                      PACKAGE BODY
    ...
    UTL_HTTP                        PACKAGE BODY
    UTL_REF                         PACKAGE
    UTL_REF                         PACKAGE BODY

    213 rows selected.




.....................................................................................................................................................
C-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 6
.....................................................................................................................................................


Soluções do Exercício 6
 1 Onde o arquivo de controle existente está localizado e qual é o nome do mesmo?
      Dica: Consulte a view de desempenho dinâmica V$CONTROLFILE ou
      V$PARAMETER, ou então execute o comando SHOW PARAMETER para exibir
      o nome e a localização do arquivo de controle.

    SQL> connect sys/oracle@db01 as sysdba
    Connected.
    SQL> COL name FORMAT a50
    SQL> SELECT * FROM v$controlfile;
    STATUS NAME
    ------- -----------------------------------------
            /oracle/hrasmuss/DATA/DISK1/control01.ctl


 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. (Você pode
      simular isso alterando o nome do arquivo de controle no arquivo de parâmetros ou
      alterando somente o nome do arquivo de controle.) O que acontece?

    SQL> connect sys/oracle@db01 as sysdba;
    Connected.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit

    a     Altere o nome do arquivo de controle movendo-o para um novo nome de
          arquivo:
    mv $HOME/DATA/DISK1/control01.ctl $HOME/DATA/DISK1/control01.bak
    SQL> connect sys/oracle@db01 as sysdba;
    Connected.
    SQL> startup pfile=initDB01.ora
    ORACLE instance started.
    Total System Global Area    6315408 bytes
    Fixed Size                    64912 bytes
    Variable Size               5308416 bytes
    Database Buffers             409600 bytes
    Redo Buffers                 532480 bytes
    ORA-00205: error in identifying controlfile, check alert log for
    more info
    SQL> shutdown immediate
    SQL> exit;

    b     Renomeie o arquivo de controle para o nome original e para a localização:
    mv $HOME/DATA/DISK1/control01.bak $HOME/DATA/DISK1/control01.ctl

    c     Não inicialize o banco de dados até o momento.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-25
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 3 Aplique o recurso de multiplexação no arquivo de controle existente usando o
      diretório DISK2 e nomeie o novo arquivo de controle como control02.con.
      Certifique-se de que o Oracle Server consiga gravar dados no novo arquivo de
      controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os dois
      arquivos de controle estão sendo usados.
      Dicas:
      – Desative o banco de dados.
      – Copie o arquivo de controle existente para um novo arquivo chamado
          control02.con no diretório DISK2.
      – Use o comando chmod 660 no UNIX.
      – Modifique o arquivo de parâmetros para incluir o novo nome de arquivo.
      – Inicialize o banco de dados.
      – Consulte a view de desempenho dinâmica V$CONTROLFILE ou
          V$PARAMETER, ou então use o comando SHOW PARAMETER para
          confirmar se os dois arquivos de controle estão sendo usados.

    Certifique-se de que o banco de dados seja desativado antes de fazer isso.
    $ cp $HOME/DATA/DISK1/control01.con $HOME/DATA/DISK2/control02.con
    $ chmod 660 $HOME/DATA/DISK2/control02.con

    a      Edite o arquivo de parâmetros (init.ora) para incluir:
    control_files = ($HOME/DATA/DISK1/control01.con,
                      $HOME/DATA/DISK2/control02.con)
    SQL> startup pfile=initdb01.ora
    ORACLE instance started.
    Total System Global Area     6315408 bytes
    Fixed Size                     64912 bytes
    Variable Size                5308416 bytes
    Database Buffers              409600 bytes
    Redo Buffers                  532480 bytes
    Database mounted.
    Database opened.
    SQL> SELECT name
      2 FROM v$controlfile;
    NAME
    -------------------------------------------
    /oracle/hrasmuss/DATA/DISK1/control01.con
    /oracle/hrasmuss/DATA/DISK2/control02.con




.....................................................................................................................................................
C-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 6
.....................................................................................................................................................

 4 Qual é o tamanho inicial da seção de arquivo de dados no arquivo de controle?

    SQL> SELECT records_total
      2 FROM v$controlfile_record_section
      3 WHERE type = 'DATAFILE';
    RECORDS_TOTAL
    -------------
              254




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-27
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 7
 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de
      grupos e de membros de arquivos de redo log que o seu banco de dados possui.
      Dicas:
      – Consulte a view de desempenho dinâmica V$LOGFILE.
      – Use a view de desempenho dinâmica V$LOG.

    SQL> SELECT member FROM v$logfile;
    MEMBER
    -----------------------------------------
    /oracle/hrasmuss/DATA/DISK3/redo0101.log
    /oracle/hrasmuss/DATA/DISK4/redo0102.log
    /oracle/hrasmuss/DATA/DISK3/redo0201.log
    /oracle/hrasmuss/DATA/DISK4/redo0202.log

    SQL> SELECT group#,members
      2 FROM v$log;
    GROUP#    MEMBERS
    --------- ---------
            1         2
            2         2


 2 Em que modo de banco de dados o seu banco de dados está configurado?
      O arquivamento está ativado?
      Dicas:
      – Consulte a view de desempenho dinâmica V$DATABASE.
      – Consulte a view de desempenho dinâmica V$INSTANCE.

    SQL> SELECT log_mode FROM v$database;
    LOG_MODE
    ------------
    NOARCHIVELOG

    SQL> SELECT archiver FROM v$instance;
    ARCHIVE
    -------
    STOPPED




.....................................................................................................................................................
C-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no
      DISK3 usando as seguintes convenções de nomeação:
      Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e
      redo0102.log, adicione um novo membro chamado redo0103.log.
      Verifique o resultado.
      Dicas:
      – Execute o comando ALTER DATABASE ADD LOGFILE MEMBER
          para adicionar um membro de redo log a cada grupo.
      – Consulte a view de desempenho dinâmica V$LOGFILE para verificar
          o resultado.

    SQL> ALTER DATABASE
      2 ADD LOGFILE MEMBER
      3 '$HOME/DATA/DISK3/redo0103.log' TO GROUP 1,
      4 '$HOME/DATA/DISK3/redo0203.log' TO GROUP 2;
    Database altered.
    SQL> COL member FORMAT a40
    SQL> SELECT * FROM v$logfile;

    GROUP# STATUS MEMBER
    ------- ------- ----------------------------------------
          1         /oracle/hrasmuss/DATA/DISK3/redo0101.log
          1         /oracle/hrasmuss/DATA/DISK4/redo0102.log
          2         /oracle/hrasmuss/DATA/DISK3/redo0201.log
          2         /oracle/hrasmuss/DATA/DISK4/redo0202.log
          1 INVALID /oracle/hrasmuss/DATA/DISK3/redo0103.log
          2 INVALID /oracle/hrasmuss/DATA/DISK3/redo0203.log

    6 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-29
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e DISK5,
      e verifique a existência do novo grupo.
      Dicas:
      – Execute o comando ALTER DATABASE ADD LOGFILE para criar um novo
          grupo.
      – Consulte a view de desempenho dinâmica V$LOGFILE para exibir o nome
          dos novos membros do novo grupo.
      – Consulte a view de desempenho dinâmica V$LOG para exibir o número de
          grupos e de membros de arquivos de redo log.

    SQL> ALTER DATABASE
      2 ADD LOGFILE GROUP 3(
      3 '$HOME/DATA/DISK3/redo0301.log',
      4 '$HOME/DATA/DISK4/redo0302.log',
      5 '$HOME/DATA/DISK5/redo0303.log')
      6 SIZE 1024K;
    Database altered.
    SQL> SELECT * FROM v$logfile;
    GROUP# STATUS MEMBER
    ------- ------- -----------------------------------------
          1         /oracle/hrasmuss/DATA/DISK3/redo0101.log
          1         /oracle/hrasmuss/DATA/DISK4/redo0102.log
          2         /oracle/hrasmuss/DATA/DISK3/redo0201.log
          2         /oracle/hrasmuss/DATA/DISK4/redo0202.log
          1 INVALID /oracle/hrasmuss/DATA/DISK3/redo0103.log
          2 INVALID /oracle/hrasmuss/DATA/DISK3/redo0203.log
          3         /oracle/hrasmuss/DATA/DISK4/redo0301.log
          3         /oracle/hrasmuss/DATA/DISK4/redo0302.log
          3         /oracle/hrasmuss/DATA/DISK5/redo0303.log

    9 rows selected.
    SQL> SELECT group#, members FROM V$log;
    GROUP#   MEMBERS
    ------- ---------
           1         3
           2         3
           3         3

    3 rows selected.




.....................................................................................................................................................
C-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

    5 Desloque os membros redo0103.log e redo0203.log (consulte a etapa 3) e
      insira-os no diretório DISK5 a partir do DISK3.
      Dicas:
      – Mova os membros para o diretório DISK5.
      – Execute o comando ALTER DATABASE RENAME FILE para renomear
          os membros.
      – Consulte a view de desempenho dinâmica V$LOGFILE para verificar
          o resultado.
.




     $ cd $HOME/DATA/DISK5
     $ mv $HOME/DATA/DISK3/redo0103.log.
     $ mv $HOME/DATA/DISK3/redo0203.log.

     a    Use a seguinte instrução para decidir qual é o grupo atual:
     SQL> SELECT group#, status
       2 FROM v$log;
     GROUP# STATUS
     --------- ----------------
             1 INACTIVE
             2 CURRENT
             3 UNUSED
     SQL> ALTER SYSTEM SWITCH LOGFILE;
     System altered.
     SQL> ALTER DATABASE
          2 RENAME FILE '$HOME/DATA/DISK3/redo0103.log',
          3    '$HOME/DATA/DISK3/redo0203.log'
          4 TO '$HOME/DATA/DISK5/redo0103.log',
          5    '$HOME/DATA/DISK5/redo0203.log';
     Database altered.
     SQL> COL member FORMAT a50
     SQL> SELECT * FROM v$logfile;
     GROUP#     STATUS MEMBER
     --------- ------- -----------------------------------------
             1          /oracle/hrasmuss/DATA/DISK3/redo0101.log
             1          /oracle/hrasmuss/DATA/DISK4/redo0102.log
             2          /oracle/hrasmuss/DATA/DISK3/redo0201.log
             2          /oracle/hrasmuss/DATA/DISK4/redo0202.log
             1 INVALID /oracle/hrasmuss/DATA/DISK5/redo0103.log
             2 INVALID /oracle/hrasmuss/DATA/DISK5/redo0203.log
             3          /oracle/hrasmuss/DATA/DISK4/redo0301.log
             3          /oracle/hrasmuss/DATA/DISK4/redo0302.log
             3          /oracle/hrasmuss/DATA/DISK5/redo0303.log

     9 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-31
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 6 Remova o grupo de redo logs criado na etapa 4.
      Dicas:
      – Execute o comando ALTER DATABASE DROP LOGFILE GROUP para
         remover o grupo de logs.
      – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado.

    SQL> ALTER SYSTEM SWITCH LOGFILE;
    System altered.
    SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
    Database altered.
    SQL> SELECT group#, members FROM v$log;
    GROUP#     MEMBERS
    ---------- ----------
             1          2
             2          2
    2 rows selected.
    $rm $HOME/DATA/DISK5/redo0301.log
    $rm $HOME/DATA/DISK5/redo0302.log
    $rm $HOME/DATA/DISK5/redo0303.log




.....................................................................................................................................................
C-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

    7 Redimensione todos os arquivos de redo log on-line para 1024 KB. (Como não é
      possível redimensionar arquivos de log, é necessário adicionar novos logs e
      eliminar os antigos.)
      Dicas:
      – Execute o comando ALTER DATABASE ADD LOGFILE GROUP para
          adicionar dois novos grupos com o tamanho de 1024 KB.
      – Consulte a view de desempenho dinâmica V$LOG para verificar o grupo ativo.
      – Execute o comando ALTER SYSTEM SWITCH LOGFILE para forçar
          alternâncias de log e alterar o estágio do grupo para inativo.
      – Execute o comando ALTER DATABASE DROP LOGFILE para remover os
          grupos inativos.
      – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado.
.




     SQL> ALTER DATABASE ADD LOGFILE
       2 GROUP 3 ('$HOME/DATA/DISK3/redo0301.log',
       3 '$HOME/DATA/DISK4/redo0302.log') SIZE 1024K,
       4 GROUP 4 ('$HOME/DATA/DISK3/redo0401.log',
       5 '$HOME/DATA/DISK4/redo0402.log') size 1024K;
     Database altered.
     SQL> SELECT group#, status FROM v$log;
     GROUP# STATUS
     ------- ---------
            1 INACTIVE
            2 CURRENT
            3 UNUSED
            4 UNUSED
     4 rows selected.
     SQL> ALTER SYSTEM SWITCH LOGFILE;
     System altered.
     SQL> ALTER SYSTEM SWITCH LOGFILE;
     System altered.
     SQL> ALTER DATABASE DROP LOGFILE GROUP 1, GROUP 2;
     Database altered.
     SQL> SELECT group#, bytes FROM v$log;
       GROUP#     BYTES
     ------- ---------
            3   1048576
            4   1048576
     2 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-33
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 8
 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento:
      a  DATA01 para tabelas com armazenamento default.
      b DATA02 para objetos grandes com armazenamento default. Certifique-se de
         que cada tamanho de extensão usado no tablespace seja múltiplo de 100 KB.
      c INDX01 para índices com o armazenamento default. Ative a extensão
         automática de 500 KB quando forem necessárias mais extensões.
      d RONLY para tabelas somente para leitura com o armazenamento default.
      Exiba as informações a partir do dicionário de dados.
      Dicas:
      – Execute o comando CREATE TABLESPACE para criar os
         tablespaces permanentes.
      – Exiba as informações a partir do dicionário de dados.
      – Consulte a view de desempenho dinâmica DBA_DATA_FILES para verificar
         o resultado.
 Nome do Tablespace                     Subdiretório                                       Localização do Arquivo de
                                                                                           Dados (Tamanho)
 DATA01                                 DISK4                                              data01.dbf (2 MB)
 DATA02                                 DISK5                                              data02.dbf (1 MB)
 INDX01                                 DISK3                                              indx01.dbf (1 MB)
 RONLY                                  DISK1                                              ronly.dbf (1 MB)




.....................................................................................................................................................
C-34                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................



    SQL> CREATE TABLESPACE DATA01 DATAFILE
      2 '$HOME/DATA/DISK4/data01.dbf' SIZE 2M;
    Tablespace created.
    SQL> CREATE TABLESPACE DATA02 DATAFILE
      2 '$HOME/DATA/DISK5/data02.dbf' SIZE 1M
      3 MINIMUM EXTENT 100k;
    Tablespace created.
    SQL> CREATE TABLESPACE INDX01 DATAFILE
      2 '$HOME/DATA/DISK3/indx01.dbf' SIZE 1M
      3 AUTOEXTEND ON NEXT 500K;
    Tablespace created.
    SQL> CREATE TABLESPACE RONLY DATAFILE
      2 '$HOME/DATA/DISK1/ronly.dbf' SIZE 1M;
    Tablespace created.
    SQL> COL file_name FORMAT A40
    SQL> COL tablespace_name FORMAT A15
    SQL> SELECT file_name, tablespace_name, bytes,
      2   autoextensible, increment_by
      3 FROM DBA_DATA_FILES;
    FILE_NAME                                 TABLESPACE_NAME    BYTES
    ---------------------------------------- --------------- ---------
    /oracle/hrasmuss/DATA/DISK4/data01.dbf    DATA01           2097152
    /oracle/hrasmuss/DATA/DISK5/data02.dbf    DATA02           1048576
    /oracle/hrasmuss/DATA/DISK3/indx01.dbf    INDX01           1048576
    /oracle/hrasmuss/DATA/DISK1/ronly.dbf     RONLY            1048576
    /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM           52428800
    /oracle/hrasmuss/DATA/DISK2/rbs01.dbf     RBS             15728640
    /oracle/hrasmuss/DATA/DISK3/data01.dbf    DATA            52428800
    /oracle/hrasmuss/DATA/DISK2/temp01.dbf    TEMP            10485760
    /oracle/hrasmuss/DATA/DISK2/indx01.dbf    INDX             5242880
    /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf OEM               5242880
    /oracle/hrasmuss/DATA/DISK1/query01.dbf QUERY_DATA         1048576

    11 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-35
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 2 Aloque mais 500 KB ao tablespace DATA02 e verifique o resultado.
      Dicas:
      – Use o comando ALTER DATABASE DATAFILE... RESIZE para alocar
         mais 500 KB.
      – Consulte a view de desempenho dinâmica V$DATAFILE para verificar
         o resultado.

    SQL> ALTER DATABASE DATAFILE
      2 '$HOME/DATA/DISK5/data02.dbf' RESIZE 1500K;
    Database altered.
    SQL> COL name FORMAT a40
    SQL> SELECT name, bytes, create_bytes FROM v$datafile;
    NAME                                         BYTES CREATE_BYTES
    ---------------------------------------- --------- ------------
    /oracle/hrasmuss/DATA/DISK1/system01.dbf 52428800      52428800
    /oracle/hrasmuss/DATA/DISK2/rbs01.dbf     15728640     15728640
    /oracle/hrasmuss/DATA/DISK3/data01.dbf    52428800     52428800
    /oracle/hrasmuss/DATA/DISK2/temp01.dbf    10485760     10485760
    /oracle/hrasmuss/DATA/DISK2/indx01.dbf     5242880      5242880
    /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf   5242880      5242880
    /oracle/hrasmuss/DATA/DISK1/query01.dbf    1048576      1048576
    /oracle/hrasmuss/DATA/DISK4/data01.dbf     2097152      2097152
    /oracle/hrasmuss/DATA/DISK5/data02.dbf     1536000      1048576
    /oracle/hrasmuss/DATA/DISK3/indx01.dbf     1048576      1048576
    /oracle/hrasmuss/DATA/DISK1/ronly.dbf      1048576      1048576

    11 rows selected.




.....................................................................................................................................................
C-36                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................

    3 Desloque o tablespace INDX01 e mova-o para DISK6.
      Dicas:
      – Coloque como OFFLINE o tablespace INDX01.
      – Consulte a view de desempenho dinâmica V$DATAFILE para verificar
         o resultado.
      – Execute o comando ALTER TABLESPACE RENAME para renomear
         os arquivos.
      – Coloque como ONLINE o tablespace INDX01.
      – Consulte as views de desempenho dinâmicas V$DATAFILE para verificar
         o resultado.
.




     SQL> ALTER TABLESPACE indx01 OFFLINE;
     Tablespace altered.
     SQL> SELECT name, status FROM v$datafile;
     NAME                                      STATUS
     ---------------------------------------- -------
     /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM
     /oracle/hrasmuss/DATA/DISK2/rbs01.dbf     ONLINE
     /oracle/hrasmuss/DATA/DISK3/data01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK2/temp01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK2/indx01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf ONLINE
     /oracle/hrasmuss/DATA/DISK1/query01.dbf ONLINE
     /oracle/hrasmuss/DATA/DISK4/data01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK5/data02.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK3/indx01.dbf    OFFLINE
     /oracle/hrasmuss/DATA/DISK1/ronly.dbf     ONLINE
     11 rows selected.
     SQL> !mv $HOME/DATA/DISK3/indx01.dbf $HOME/DATA/DISK6/indx01.dbf
     SQL> ALTER TABLESPACE indx01
       2 RENAME DATAFILE
       3 '$HOME/DATA/DISK3/indx01.dbf' TO
       4 '$HOME/DATA/DISK6/indx01.dbf';
     Tablespace altered.
     SQL> ALTER TABLESPACE indx01 ONLINE;
     Tablespace altered.
     SQL> SELECT name, status FROM v$datafile;
     NAME                                      STATUS
     ---------------------------------------- ------
     /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM
     /oracle/hrasmuss/DATA/DISK2/rbs01.dbf     ONLINE
     /oracle/hrasmuss/DATA/DISK3/data01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK2/temp01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK2/indx01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf ONLINE
     /oracle/hrasmuss/DATA/DISK1/query01.dbf ONLINE
     /oracle/hrasmuss/DATA/DISK4/data01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK5/data02.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK6/indx01.dbf    ONLINE
     /oracle/hrasmuss/DATA/DISK1/ronly.dbf     ONLINE
     11 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-37
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar uma
      tabela nesse tablespace. Tente criar uma tabela adicional e eliminar a tabela. O que
      acontece e por quê?

    SQL> CREATE TABLE t1 (t1 number) TABLESPACE ronly;
    Table altered.
    SQL> ALTER TABLESPACE ronly READ ONLY;
    Tablespace altered.
    SQL> SELECT name, enabled, status FROM v$datafile;
    NAME                                     ENABLED                                                                STATUS
    ---------------------------------------- ----------                                                             ------
    /oracle/hrasmuss/DATA/DISK1/system01.dbf READ WRITE                                                             SYSTEM
    /oracle/hrasmuss/DATA/DISK2/rbs01.dbf    READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK3/data01.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK2/temp01.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK2/indx01.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK1/query01.dbf READ ONLY                                                               ONLINE
    /oracle/hrasmuss/DATA/DISK4/data01.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK5/data02.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK6/indx01.dbf   READ WRITE                                                             ONLINE
    /oracle/hrasmuss/DATA/DISK1/ronly.dbf    READ ONLY                                                              ONLINE

    11 rows selected.
    SQL> CREATE TABLE t2 (t2 number) TABLESPACE ronly;
    CREATE TABLE t2 (t2 number) TABLESPACE ronly
    *
    ORA-01647: tablespace 'RONLY' is read only, cannot allocate space
    in it
    SQL> DROP TABLE t1;
    Table dropped.




.....................................................................................................................................................
C-38                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................

 5 Elimine o tablespace RONLY e verifique-o.
      Dicas:
      – Execute o comando DROP TABLESPACE ... para remover o tablespace.
      – Delete os arquivos do sistema operacional.
      – Consulte a view de desempenho dinâmica V$TABLESPACE para verificar
         o resultado.

    SQL> DROP TABLESPACE ronly;
    Tablespace dropped.
    SQL> SELECT * FROM v$tablespace;
    TS#        NAME
    ---------- ------------------------------
             0 SYSTEM
             1 RBS
             2 DATA01
             3 DATA02
             4 TEMP
             5 INDX01
    6 rows selected.
    $rm $HOME/DATA/DISK1/ronly.dbf


 6 Sem desativar a instância, altere SORT_AREA_SIZE para 2 kilobytes.
      Dica: SORT_AREA_SIZE é um parâmetro dinâmico que necessita da
      opção DEFERRED.

    SQL> ALTER SYSTEM SET sort_area_size=2048 DEFERRED;
    System altered.


 7 Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute
      srt_dd.sql  de uma sessão e monitore a atividade de classificação de outra
   sessão. Consulte as estatísticas de classificação e as informações de segmento
   temporário durante e depois da conclusão do script. Observe os resultados.
   Dica: As informações de segmento de classificação estão disponíveis em
   V$SORT_SEGMENT e a atividade de classificação atual em V$SORT_USAGE.
 8 De uma das sessões, execute asn_tts.sql para preparar para a próxima parte do
   exercício. Esse script garante que o tablespace TEMP será usado para as
   classificações feitas pelo usuário SYSTEM; isso será abordado na lição
   "Gerenciando Usuários". Conecte-se como SYSTEM de uma das sessões e execute
   srt_dd.sql. Da outra sessão, monitore as estatísticas e a atividade de
   classificação, da mesma forma que na pergunta 3. Você percebe alguma diferença?
   A classificação nesse caso usa o tablespace temporário, TEMP, e as extensões
   alocadas não são liberadas no final da classificação.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-39
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 9 Redefina SORT_AREA_SIZE.

    SQL> ALTER SYSTEM SET sort_area_size=65536 DEFERRED;
    System altered.




.....................................................................................................................................................
C-40                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 9
.....................................................................................................................................................


Soluções do Exercício 9
 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices.

    SQL> connect system/manager
    Connected.
    SQL> @$HOME/LABS/cr_segs
    SQL> -- Script cr_segs.sql to create segments
    SQL> -- for Practice 09, Q1 O8iDBA class
    SQL> -- Dependencies :
    SQL> -- needs SYSTEM account to run
    SQL> -- needs DATA01 tablespace with exactly 2M free space
    SQL> -- needs INDX01 tablespace with at least 100K free space
    SQL>
    SQL> CREATE TABLE emp(
      2 empno NUMBER(4),
      3 ename VARCHAR2(30))
      4 TABLESPACE data01
      5 STORAGE (INITIAL 100K
      6         NEXT 100K
      7         PCTINCREASE 0
      8         MINEXTENTS 8
      9         MAXEXTENTS 10)
      10 /
    Table created.
    SQL> SQL> CREATE TABLE fragment1(
      2 a NUMBER)
      3 TABLESPACE data01
      4 STORAGE(INITIAL 10K)
      5 /
    Table created.
    SQL> CREATE TABLE dept(
      2 deptno NUMBER,
      3 dname VARCHAR2(15))
      4 TABLESPACE data01
      5 STORAGE(INITIAL 50K
      6 NEXT 50K)
      7 /
    Table created.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-41
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................



    SQL> CREATE TABLE fragment2(
      2 a NUMBER)
      3 TABLESPACE data01
      4 STORAGE(INITIAL 8K)
      5 /
    Table created.
    SQL>
    SQL> CREATE TABLE big_emp(
      2 empno NUMBER(4),
      3 ename VARCHAR2(30))
      4 TABLESPACE data01
      5 STORAGE (INITIAL 1M
      6          NEXT 1M
      7          MAXEXTENTS 10)
      8 /
    Table created.
    SQL>
    SQL> CREATE INDEX i_e_empno
      2          ON emp(ename)
      3          TABLESPACE indx01
      4          STORAGE(INITIAL 50K
      5                  NEXT 50K)
      6 /
    Index created.
    SQL>
    SQL> DROP TABLE fragment1
      2 /
    Table dropped.
    SQL>
    SQL> DROP TABLE fragment2
      2 /
    Table dropped.


 2 Identifique os diversos tipos de segmento no banco de dados.

    SQL> connect system/manager
    Connected.
    SQL> SELECT DISTINCT segment_type
      2 FROM dba_segments;
    SEGMENT_TYPE
    ------------------
    CACHE
    CLUSTER
    INDEX
    LOBINDEX
    LOBSEGMENT
    ROLLBACK
    TABLE

    7 rows selected.




.....................................................................................................................................................
C-42                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 9
.....................................................................................................................................................

 3 Crie uma consulta para verificar os segmentos cuja extensão é cinco vezes menor
      do que as extensões máximas. Ignore o segmento de bootstrap. Essa consulta é útil
      na identificação de quaisquer segmentos que possam gerar erros durante a futura
      carga de dados.
      Dica: As colunas EXTENTS e MAX_EXTENTS na view de dicionário de dados
      DBA_SEGMENTS contêm o número atual e o número máximo de extensões.

    SQL> SELECT segment_name, segment_type, max_extents, extents
      3 FROM dba_segments
      4 WHERE extents+5 > max_extents
      5 AND segment_type<>'CACHE';
    SEGMENT_NAME SEGMENT_TYPE       MAX_EXTENTS   EXTENTS
    ------------ ------------------ ----------- ---------
    EMP          TABLE                       10         8


 4 Quais arquivos possuem espaço alocado para a tabela EMP?
      Dica: As views DBA_EXTENTS e DBA_DATA_FILES precisam ser reunidas
      para obter essas informações.

    SQL> SELECT DISTINCT f.file_name
      2 FROM dba_extents e,dba_data_files f
      3 WHERE e.segment_name='EMP'
      4 AND e.file_id=f.file_id;
    FILE_NAME
    ----------------------------------------
    /oracle/hrasmuss/DATA/DISK3/data01.dbf
    /oracle/hrasmuss/DATA/DISK4/data01.dbf


 5 (a) Crie uma consulta para obter o número de arquivo e o número de bloco do
      cabeçalho da tabela EMP.
      Dica: Para localizar o bloco de cabeçalho da tabela EMP, consulte a view
      DBA_SEGMENTS.

    SQL> SELECT relative_fno, header_block
      2 FROM dba_segments
      3 WHERE owner='SYSTEM'
      4 AND segment_name = 'EMP';
    RELATIVE_FNO HEADER_BLOCK
    ------------ ------------
               8             2




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-43
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      (b) Crie uma consulta que aceitará um número de arquivo e um número de bloco
      como a entrada e retornará o nome e o tipo do segmento que usa o bloco. Teste a
      consulta fornecendo o número de arquivo e de bloco do cabeçalho da tabela EMP
      (obtido na consulta anterior). Use o SQL*Plus para executar a consulta.
      Dica: Crie um script do SQL*Plus para aceitar o número relativo de arquivo e de
      bloco, e consulte a view DBA_EXTENTS para localizar o segmento que usa o
      número relativo de arquivo e de bloco informado.

    SQL> COL segment_name FORMAT A30
    SQL> COL segment_type FORMAT A15
    SQL> SELECT segment_name,segment_type
      2 FROM dba_extents
      3 WHERE file_id=&1
      4 AND &2 BETWEEN block_id AND (block_id+blocks-1);
    Enter value for 1: 8
    old   3: WHERE file_id=&1
    new   3: WHERE file_id=8
    Enter value for 2: 2
    old   4: AND &2 between block_id and (block_id+blocks+1)
    new   4: AND 2 between block_id and (block_id+blocks+1)

    SEGMENT_NAME                   SEGMENT_TYPE
    ------------------------------ ---------------
    EMP                            TABLE


 6 Liste o espaço disponível por tablespace. A consulta deverá exibir o número de
      fragmentos, o espaço livre total e a maior extensão livre em cada tablespace.
      Dica: Consulte a view DBA_FREE_SPACE para obter essas informações.

    SQL> SELECT tablespace_name,COUNT(*) AS fragments,
      2    SUM(bytes) AS total,
      3    MAX(bytes) AS largest
      4 FROM dba_free_space
      5 GROUP BY tablespace_name;
    TABLESPACE_NAME FRAGMENTS      TOTAL  LARGEST
    --------------- --------- --------- ---------
    DATA                    1 50376704 50376704
    DATA01                  3     147456   126976
    DATA02                  1    1531904  1531904
    INDX                    1    5238784  5238784
    INDX01                  1     983040   983040
    OEM                     1    5238784  5238784
    QUERY_DATA              1    1044480  1044480
    RBS                     1    1593344  1593344
    SYSTEM                  1 64565248 64565248
    TEMP                    5 10481664    9662464

    10 rows selected.




.....................................................................................................................................................
C-44                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 9
.....................................................................................................................................................

 7 Execute o script cr_frags.sql no diretório LABS. Verifique se há extensões
      livres adjacentes no banco de dados. Reúna-as e verifique novamente.
      Dica: Execute o script cr_frags.sql.

    SQL> @$HOME/LABS/cr_frags


      Dica: Consulte a view DBA_FREE_SPACE_COALESCED para verificar
      quaisquer tablespaces nos quais PERCENT_BLOCKS_COALESCED <> 100.

    SQL> SELECT tablespace_name, total_blocks,
      2 blocks_coalesced, percent_blocks_coalesced
      3 FROM dba_free_space_coalesced
      4 WHERE percent_blocks_coalesced<>100;
    TABLESPACE TOTAL_BLOCKS BLOCKS_COALESCED PERCENT_BLOCKS_COALESCED
    ---------- ------------ ---------------- ------------------------
    TEMP               2559               50                1.9538882
    DATA02              374                5                1.3368984


      Dica: Use o comando ALTER TABLESPACE para reunir o espaço livre no
      tablespace.

    SQL> ALTER TABLESPACE data02 COALESCE;


      Dica: Consulte a view DBA_FREE_SPACE_COALESCED novamente para
      verificar quaisquer tablespaces nos quais PERCENT_BLOCKS_COALESCED
      <> 100.

    SQL> SELECT tablespace_name, total_blocks,
      2 blocks_coalesced, percent_blocks_coalesced
      3 FROM dba_free_space_coalesced
      4 WHERE percent_blocks_coalesced<>100;
    TABLESPACE TOTAL_BLOCKS BLOCKS_COALESCED PERCENT_BLOCKS_COALESCED
    ---------- ------------ ---------------- ------------------------
    TEMP               2559               50                1.9538882




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-45
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 8 Liste segmentos que gerarão erros devido a falta de espaço quando tentarem alocar
      uma extensão adicional.
      Dica: É necessário verificar se a maior extensão livre de um tablespace em
      DBA_FREE_SPACE não é igual a NEXT_EXTENT de qualquer segmento no
      tablespace.

    SQL> SELECT s.segment_name,s.segment_type,
      2          s.tablespace_name,s.next_extent
      3 FROM dba_segments s
      4 WHERE NOT EXISTS
      5        (SELECT 1 FROM dba_free_space f
      6         WHERE s.tablespace_name=f.tablespace_name
      7         HAVING max(f.bytes) > s.next_extent);
    SEGMENT_NAME SEGMENT_TYPE       TABLESPACE NEXT_EXTENT
    ------------ ------------------ ---------- -----------
    BIG_EMP      TABLE              DATA01         1048576




.....................................................................................................................................................
C-46                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................


Soluções do Exercício 10
Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/
alt_sysrol.sql como o usuário SYSTEM.
 1 Conecte-se como o usuário SYSTEM (senha = manager) e insira um registro na
   tabela EMP. A operação foi bem-sucedida? Por que ou por que não?

    SQL> INSERT INTO emp VALUES
      2 (7369,'SMITH','CLERK',7902,
      3 to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
    ORA-01552: cannot use system rollback segment for non-system
    tablespace 'DATA01'


   Há falha nessa operação porque DML em um tablespace não-SYSTEM necessita
   de um segmento de rollback não-SYSTEM e, no momento, não há nenhum
   disponível.
 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados.
   Os pedidos serão informados usando 15 estações clientes, que possuem um
   volume bastante alto de atividade pela manhã. Crie um número apropriado de
   segmentos de rollback no banco de dados. (Pressuponha um tamanho default para
   este exercício.)
   Dica: Usando uma proporção de um segmento de rollback para cada quatro
   transações, você precisará criar quatro segmentos de rollback.

    SQL> CREATE ROLLBACK SEGMENT                                  r01
      2 TABLESPACE rbs;
    Rollback segment created.
    SQL> CREATE ROLLBACK SEGMENT                                  r02
      2 TABLESPACE rbs;
    Rollback segment created.
    SQL> CREATE ROLLBACK SEGMENT                                  r03
      2 TABLESPACE rbs;
    Rollback segment created.
    SQL> CREATE ROLLBACK SEGMENT                                  r04
      2 TABLESPACE rbs;
    Rollback segment created.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-47
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para
      verificar se você consegue inserir um registro na tabela EMP. Não submeta
      INSERT a commit.
      Dica: Pelo menos um dos segmentos de rollback precisa estar ONLINE antes que
      você possa inserir com sucesso uma linha na tabela EMP.

    SQL> ALTER ROLLBACK SEGMENT r01 ONLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT r02 ONLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT r03 ONLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT r04 ONLINE;
    Rollback segment altered.
    SQL> INSERT INTO emp VALUES
      2 (7369,'SMITH','CLERK',7902,
      3 to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);


 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem
      usados pelas transações.
      Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS.

    SQL> SELECT segment_name, status
      2 FROM dba_rollback_segs;
    SEGMENT_NAME STATUS
    ------------ -------
    SYSTEM       ONLINE
    SYSROL       OFFLINE
    R01          ONLINE
    R02          ONLINE
    R03          ONLINE
    R04          ONLINE

    6 rows selected.


 5 Localize o segmento de rollback que é usado pela transação.
      Dica: É possível obter essa informação reunindo as views V$ROLLSTAT e
      V$ROLLNAME.

    SQL> SELECT n.name
      2 FROM V$rollname n, V$rollstat s
      3 WHERE n.usn=s.usn
      4 AND s.xacts>0;
    NAME
    ---------------
    R01




.....................................................................................................................................................
C-48                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 10: Gerenciando Segmentos de Rollback
.....................................................................................................................................................

 6 Chame o SQL*Plus do diretório Labs. Execute o script ins_emp.sql. Usando
      uma sessão separada, coloque como off-line o tablespace do segmento de rollback.
      Dica: O script inicia outra transação que insere uma linha na tabela EMP. Como
      ambas as transações estão usando os segmentos de rollback nesse tablespace, você
      precisará seguir estas etapas:
      Primeiro coloque como OFFLINE todos os segmentos de rollback no tablespace
      para impedir que novas transações usem os segmentos de rollback no tablespace.

    SQL> ALTER ROLLBACK SEGMENT                                 r01 OFFLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT                                 r02 OFFLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT                                 r03 OFFLINE;
    Rollback segment altered.
    SQL> ALTER ROLLBACK SEGMENT                                 r04 OFFLINE;
    Rollback segment altered.


      Dica: Agora identifique as sessões que estão usando os segmentos de rollback no
      tablespace RBS.

    SQL> SELECT s.sid, s.serial#
      2 FROM v$session s
      3 WHERE s.saddr in
      4   (SELECT t.ses_addr
      5     FROM V$transaction t, dba_rollback_segs r
      6     WHERE t.xidusn=r.segment_id
      7     AND r.tablespace_name='RBS');
    SID   SERIAL#
    --------- ---------
            9       362
           11       306


      Dica: Cancele as sessões que estão usando segmentos de rollback no tablespace.

    SQL> ALTER SYSTEM KILL SESSION '9,362';
    System altered.
    SQL> ALTER SYSTEM KILL SESSION '11,306';
    System altered.


      Dica: Coloque como off-line o tablespace RBS.

    SQL> ALTER TABLESPACE rbs OFFLINE;




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-49
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 7 (a) Desative a instância, inicialize novamente e consulte as informações de
      segmento de rollback no dicionário de dados para verificar quantos segmentos de
      rollback estão on-line.

    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup pfile=$HOME/initDB01.ora
    ORACLE instance started.
    Total System Global Area   26676624 bytes
    Fixed Size                     64912 bytes
    Variable Size              18149376 bytes
    Database Buffers            8388608 bytes
    Redo Buffers                   73728 bytes
    Database mounted.
    Database opened.
    SQL> SELECT segment_name, status
         2 FROM dba_rollback_segs;
    SEGMENT_NAME STATUS
    ------------ -------
    SYSTEM        ONLINE
    SYSROL        OFFLINE
    R01           OFFLINE
    R02           OFFLINE
    R03           OFFLINE
    R04           OFFLINE

    6 rows selected.


      (b) Verifique se todos os segmentos de rollback serão colocados como on-line
      sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que
      todos os segmentos de rollback estejam ONLINE.




.....................................................................................................................................................
C-50                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 10: Gerenciando Segmentos de Rollback
.....................................................................................................................................................

      Dica: Para tal, use o parâmetro de inicialização ROLLBACK_SEGMENTS.
      Além disso, é necessário colocar como ONLINE o tablespace RBS.

    SQL> ALTER TABLESPACE rbs ONLINE;
    Tablespace altered.
    SQL> shutdown
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit

    a     Edite initdb01.ora e adicione a seguinte linha:
    rollback_segments = (r01,r02,r03,r04)


    SQL> startup pfile=$HOME/initDB01.ora
    ORACLE instance started.
    Total System Global Area    6315408 bytes
    Fixed Size                    64912 bytes
    Variable Size               5308416 bytes
    Database Buffers             409600 bytes
    Redo Buffers                 532480 bytes
    Database mounted.
    Database opened.
    SQL> SELECT segment_name, status
      2 FROM dba_rollback_segs;
    SEGMENT_NAME STATUS
    ------------ --------
    SYSTEM        ONLINE
    SYSROL        OFFLINE
    R01           ONLINE
    R02           ONLINE
    R03           ONLINE
    R04           ONLINE

    6 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-51
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados
      com os parâmetros de armazenamento a seguir e verifique se é possível usá-lo.
      Isso é essencial para a próxima pergunta:
      INITIAL = 10K
      NEXT = 10K
      OPTIMAL = 30K
      Dica: Para certificar-se de que possa usar o segmento de rollback, coloque-o como
      ONLINE depois de criá-lo.

    SQL> CREATE ROLLBACK SEGMENT demo_rbs
      2 TABLESPACE rbs
      3 STORAGE(INITIAL 16k NEXT 16K OPTIMAL 32K);
    Rollback segment created.
    SQL> ALTER ROLLBACK SEGMENT demo_rbs ONLINE;
    Rollback segment altered.


 9 Verifique o número de extensões no segmento de rollback DEMO_RBS.
      Estabeleça login como system/manager usando o SQL*Plus e execute o script
      ext_rbs.sql. Há alguma alteração no número de extensões no segmento de
      rollback?

    SQL> SELECT extents
      2 FROM dba_segments
      3 WHERE segment_name='DEMO_RBS';
    EXTENTS
    ---------
            2

    SQL> @$HOME/LABS/ext_rbs
    Table truncated.
    Transaction set.
    PL/SQL procedure successfully completed.

    SQL> SELECT extents
      2 FROM dba_segments
      3 WHERE segment_name='DEMO_RBS';
    EXTENTS
    ---------
            5




.....................................................................................................................................................
C-52                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Exercício 10: Gerenciando Segmentos de Rollback
.....................................................................................................................................................

10 Verifique se o segmento de rollback DEMO_RBS foi reduzido para seu
      tamanho ideal.
      Dica: É possível verificar o tamanho OPTIMAL em V$ROLLSTAT.

    SQL> SELECT extents, rssize, optsize
      2 FROM v$rollstat
      3 WHERE usn = (SELECT usn
      4   FROM v$rollname
      5   WHERE name='DEMO_RBS');
    EXTENTS    RSSIZE   OPTSIZE
    --------- --------- ---------
            5     86016     32768


      Dica: Use o comando ALTER ROLLBACK SEGMENT para reduzir o tamanho e
      verifique novamente.

    SQL> ALTER ROLLBACK SEGMENT demo_rbs SHRINK;
    Rollback segemnt altered
    SQL> SELECT extents, rssize, optsize
      2 FROM v$rollstat
      3 WHERE usn = (SELECT usn
      4   FROM v$rollname
      5   WHERE name='DEMO_RBS');
    EXTENTS    RSSIZE   OPTSIZE
    --------- --------- ---------
            2     36864      32768




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-53
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

11 Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada,
      estabeleça conexão como SYSTEM e execute ins_emp3.sql. Verifique se há uma
      sessão bloqueadora.
      Dica: Determine a sessão bloqueadora em V$ROLLSTAT.

    a      Na primeira Sessão:
    SQL> @$HOME/LABS/ins_dept1

    b      Na Segunda Sessão:
    SQL> @$HOME/LABS/ins_emp3
    Table truncated.
    Transaction set.
    PL/SQL procedure successfully completed.
    SQL> SELECT s.sid, s.serial#, t.start_time, t.xidusn
      2    FROM v$session s, v$transaction t, v$rollstat r
      3    WHERE s.saddr = t.ses_addr
      4    AND t.xidusn = r.usn
      5    AND ((r.curext = t.start_uext-1) OR
      6 ((r.curext = r.extents-1) AND t.start_uext=0));

           SID    SERIAL# START_TIME               XIDUSN
    ---------- ---------- -------------------- ----------
             7          3 01/03/98 20:07:14             5
            10          9 01/03/98 20:07:24             5


12 Elimine o segmento de rollback DEMO_RBS.
      Dica: É necessário colocar o rollback como off-line antes de eliminá-lo. Talvez
      você precise verificar se nenhuma transação está usando o segmento de rollback.

    SQL> ALTER ROLLBACK SEGMENT demo_rbs OFFLINE;
    Rollback segment altered.
    SQL> DROP ROLLBACK SEGMENT demo_rbs;
    Rollback segment dropped.




.....................................................................................................................................................
C-54                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................


Soluções do Exercício 11
 1 Você precisa criar as seguintes tabelas para um sistema de entrada de pedidos que
      esteja implementando agora. As tabelas e as colunas são mostradas abaixo:
         Tabela                                       Coluna                                        Tipo de Dados e Tamanho
         CUSTOMERS                                    CUST_CODE                                     VARCHAR2(3)
                                                      NAME                                          VARCHAR2(50)
                                                      REGION                                        VARCHAR2(5)
         ORDERS                                       ORD_ID                                        NUMBER(3)
                                                      ORD_DATE                                      DATE
                                                      CUST_CODE                                     VARCHAR2(3)
                                                      DATE_OF_DELY                                  DATE

      Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um
      valor para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito.
      Estabeleça login como system/manager e crie as tabelas com a utilização
      apropriada de espaço em bloco e as definições de tablespace. Use o tablespace
      DATA01. Você pode usar as definições de armazenamento default. Use o
      Assistente de Tabela ao criar a tabela CUSTOMERS. Não use esse Assistente ao
      criar a tabela ORDERS.
      Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que as
      linhas nessa tabela provavelmente crescerão depois das atualizações.

    SQL> CREATE TABLE SYSTEM.customers(
      2 cust_code varchar2(3),
      3 name varchar2(50),
      4 region varchar2(5))
      5 TABLESPACE data01;
    Table created.
    SQL> CREATE TABLE SYSTEM.orders(
      2 ord_id NUMBER(3),
      3 ord_date DATE,
      4 cust_code varchar2(3),
      5 date_of_dely DATE)
      6 TABLESPACE data01
      7 PCTFREE 35;
    Table created.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-55
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 2 Execute o script ins_cord.sql para inserir linhas nas tabelas.

    SQL> @$HOME/LABS/ins_cord
    1 row created.

    1 row created.
    ....


 3 Localize os arquivos e os blocos que contêm os pedidos do cliente com
      CUST_CODE=A04.
      Dica: Você precisa usar o pacote DBMS_ROWID para traduzir ROWID. Como o
      banco de dados possui somente alguns arquivos, os números de arquivos relativos
      e os números de arquivos absolutos são os mesmos.

    SQL> SELECT DISTINCT dbms_rowid.rowid_relative_fno(rowid) AS
    "File",
         2        dbms_rowid.rowid_block_number(rowid) AS "Block"
         3 FROM orders
         4 WHERE cust_code='A04';
    File      Block
    --------- ---------
            8        488


 4 Verifique o número de extensões usado pela tabela ORDERS.

    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS'
      4 AND owner='SYSTEM'
    COUNT(*)
    ---------
             1


 5 Aloque uma extensão manualmente, com tamanho default, para a tabela ORDERS
      e confirme se a extensão foi adicionada conforme especificado.

    SQL> ALTER TABLE system.orders
      2 ALLOCATE EXTENT;
    Table altered.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS'
      4 AND owner='SYSTEM';
    COUNT(*)
    ---------
             2




.....................................................................................................................................................
C-56                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................

 6 (a) Elimine a tabela BIG_EMP.

    SQL> DROP TABLE system.big_emp;
    Table dropped.


      (b) Crie outra tabela, ORDERS2, como cópia da tabela ORDERS, mas com
      MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi criada com o
      número especificado de extensões.

    SQL> CREATE TABLE system.orders2
      2 TABLESPACE data01
      3 STORAGE(MINEXTENTS 10 PCTINCREASE 0)
      4 AS
      5 SELECT * FROM system.orders;
    Table created.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS2'
      4 AND owner='SYSTEM';
    COUNT(*)
    ----------
             10


 7 Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões
      para localizar extensões que não foram desalocadas.

    SQL> TRUNCATE TABLE system.orders
      2 REUSE STORAGE;
    Table truncated.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS'
      4 AND owner='SYSTEM';
    COUNT(*)
    ----------
             2


 8 Altere a tabela ORDERS2 para reduzir MINEXTENTS a 4. Houve uma redução
      no número de extensões?

    SQL> ALTER TABLE system.orders2
      2 STORAGE(MINEXTENTS 4);
    Table altered.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS2'
      4 AND owner='SYSTEM';
    COUNT(*)
    ----------
             10


      Não há nenhuma alteração no número de extensões da tabela.



.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-57
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 9 Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela
      possui agora?

    SQL> TRUNCATE TABLE system.orders2;
    Table truncated.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS2'
      4 AND owner='SYSTEM';
    COUNT(*)
    ----------
             4


10 (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela
      ORDERS2.

    SQL> @$HOME/LABS/ins_ord2
    1 row created.
    ...
    Commit complete.


      (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões.
      Algum espaço foi liberado na tabela? Por que ou por que não?

    SQL> ALTER TABLE system.orders2
         2 DEALLOCATE UNUSED;
    Table altered.
    SQL> SELECT COUNT(*)
      2 FROM dba_extents
      3 WHERE segment_name='ORDERS2'
      4 AND owner='SYSTEM';
    COUNT(*)
    ----------
             4


      Nenhum espaço foi liberado porque esse comando libera espaço somente
      acima da marca d’água, isto é, acima de MINEXTENTS.




.....................................................................................................................................................
C-58                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................

11 (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela
      PRODUCTS, que possui as seguintes colunas:
         Coluna                                       Tipo de Dados e Tamanho
         PROD_CODE                                    NUMBER(6)
         DESCRIPTION                                  VARCHAR2(30)
         PRICE                                        NUMBER(8,2)

Crie essa tabela no tablespace DATA02 usando tamanhos de extensão
uniformes de 10K.

          SQL> CREATE TABLE system.products
            2 (prod_code NUMBER(6),
            3 description VARCHAR2(30),
            4 price NUMBER(8,2))
            5 STORAGE ( INITIAL 10K NEXT 10K
            6         PCTINCREASE 0)
            7 TABLESPACE data02 ;
          Table created.


      (b) Verifique os tamanhos das extensões dessa tabela. O que você observa?
      Dica: Verifique a view DBA_EXTENTS para obter o tamanho.

    SQL> COL segment_name FORMAT A12
    SQL> SELECT segment_name, extent_id, blocks, bytes
      2 FROM dba_extents
      3 WHERE segment_name = 'PRODUCTS'
      4 AND owner='SYSTEM'
      5 /
    SEGMENT_NAME EXTENT_ID    BLOCKS     BYTES
    ------------ --------- --------- ---------
    PRODUCTS             0        25    102400


      O tamanho da extensão é de 100 KB e não de 10 KB como especificado
      durante a criação da tabela, pois o tablespace DATA02 possui um tamanho
      MINIMUM EXTENT de 100 KB.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-59
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 12
 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela
      CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os
      índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX,
      respectivamente, e coloque-os nos tablespaces apropriados.
      Dica: Um índice em árvore B é adequado para uma coluna com vários valores
      distintos e um índice de bitmap é adequado para colunas com apenas alguns
      valores distintos.

    SQL> CREATE INDEX system.cust_name_idx
      2   ON system.customers(name)
      3   PCTFREE 30
      4   TABLESPACE indx01;
    Index created.
    SQL> CREATE BITMAP INDEX system.cust_region_idx
      2   ON system.customers(region)
      3   TABLESPACE indx01;
    Index created.


 2 Mova o índice CUST_REGION_IDX para outro tablespace.
      Dica: É possível criar o índice novamente especificando um tablespace diferente.

    SQL> ALTER INDEX system.cust_region_idx REBUILD
      2   TABLESPACE indx;
    Index altered.


 3 Anote os arquivos e os blocos usados pelas extensões pelo índice
      CUST_REGION_IDX.
         Id_arquivo                             Id_bloco                               Blocos



      Dica: Use a view DBA_EXTENTS para obter essas informações.

    SQL> SELECT file_id, block_id, blocks
      2 FROM dba_extents
      3 WHERE segment_name='CUST_REGION_IDX'
      4 AND owner='SYSTEM';
    FILE_ID BLOCK_ID     BLOCKS
    --------- --------- ---------
            5         2         5




.....................................................................................................................................................
C-60                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 12
.....................................................................................................................................................

 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, criá-lo
      novamente e mantenha-o no mesmo tablespace anterior. O novo índice usa os
      mesmos blocos usados anteriormente?
      Dica: Crie o índice novamente.

    SQL> ALTER INDEX system.cust_region_idx REBUILD;
    Index altered.
    SQL>
    SQL> SELECT file_id, block_id, blocks
      2 FROM dba_extents
      3 WHERE segment_name='CUST_REGION_IDX'
      4 AND owner='SYSTEM';
    FILE_ID BLOCK_ID     BLOCKS
    --------- --------- ---------
            5         7         5


   O novo índice não reutiliza o mesmo espaço conforme visto do local da extensão
   depois de ser criado novamente. Isso porque o servidor Oracle cria um índice
   temporário, elimina o antigo e renomeia o índice temporário.
 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a
   tabela NUMBERS.

    SQL> @$HOME/LABS/cr_numb
    Table created.
    PL/SQL procedure completed successfully.


      (b) Consulte a tabela NUMBERS para obter o número de valores distintos nas
      duas colunas na tabela.

    SQL> SELECT COUNT(DISTINCT no),
      2        COUNT(DISTINCT odd_even)
      3 FROM system.numbers;
    COUNT(DIST COUNT(DIST
    ---------- ----------
         10000          2




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-61
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      (c) Usando tamanhos de extensão uniformes de 4K, crie os índices em árvore B
      NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela
      NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.
         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX

      Dica: Use PCTINCREASE=0 para criar extensões de mesmo tamanho.

    SQL> CREATE INDEX system.numb_oe_idx
      2   ON system.numbers(odd_even)
      3   TABLESPACE indx01
      4   STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0);
    Index created.
    SQL> CREATE INDEX system.numb_no_idx
      2   ON system.numbers(no)
      3   TABLESPACE indx01
      4   STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0);
    Index created.


      Dica: Verifique o total de blocos alocados para as extensões em
      DBA_SEGMENTS.

    SQL> SELECT segment_name, blocks
      2 FROM dba_segments
      3 WHERE segment_name LIKE 'NUMB%'
      4 AND segment_type='INDEX';
    SEGMENT_NAME    BLOCKS
    --------------- ----------
    NUMB_OE_IDX             40
    NUMB_NO_IDX             45


      (d) Mais uma vez, usando tamanhos de extensão uniformes de 4K, crie os índices
      de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO
      da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices.
         Índice                                 Blocos
         NUMB_OE_IDX
         NUMB_NO_IDX




.....................................................................................................................................................
C-62                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 12
.....................................................................................................................................................

      O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos
      dois tipos de índices?
      Dica: É necessário eliminar os índices existentes antes de criar os índices novos.

    SQL> DROP INDEX system.numb_oe_idx;
    Index dropped.
    SQL> DROP INDEX system.numb_no_idx;
    Index dropped.
    SQL> CREATE BITMAP INDEX system.numb_oe_idx
      2    ON system.numbers(odd_even)
      3    TABLESPACE indx01
      4    STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0);
    Index created.
    SQL> CREATE BITMAP INDEX system.numb_no_idx
      2    ON system.numbers(no)
      3    TABLESPACE indx01
      4    STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0);
    Index created.


      Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices.

    SQL> SELECT segment_name, blocks
      2 FROM dba_segments
      3 WHERE segment_name LIKE 'NUMB%'
      4 AND segment_type='INDEX';
    SEGMENT_NAME    BLOCKS
    ------------ ---------
    NUMB_OE_IDX           2
    NUMB_NO_IDX         71


      De acordo com os resultados, é possível observar que um índice de bitmap é
      compacto para uma coluna de baixa cardinalidade, enquanto um índice em árvore
      B é compacto para uma coluna de alta cardinalidade.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-63
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 13
 1 Examine o script cr_cons.sql. Execute-o para criar as restrições.

    SQL> @$HOME/LABS/cr_cons
    SQL>ALTER TABLE system.customers
      2 ADD (CONSTRAINT cust_pk PRIMARY KEY(cust_code)
      3         DEFERRABLE INITIALLY IMMEDIATE
      4         USING INDEX TABLESPACE indx01,
      5      CONSTRAINT cust_region_ck
      6         CHECK (region in ('East','West','North','South')));
    Table altered.
    SQL> ALTER TABLE system.orders
      2 ADD(CONSTRAINT ord_pk PRIMARY KEY(ord_id)
      3        USING INDEX TABLESPACE indx01,
      4     CONSTRAINT ord_cc_fk FOREIGN KEY(cust_code)
      5        REFERENCES customers(cust_code)
      6        DEFERRABLE INITIALLY IMMEDIATE,
      7     CONSTRAINT ord_dod_ck CHECK (date_of_dely >= ord_date));
    Table altered.
    SQL> ALTER TABLE system.products
      2 ADD CONSTRAINT prod_uk UNIQUE(prod_code)
      3     DEFERRABLE DISABLE;
    Table altered.


 2 Consulte o dicionário de dados para:
      (a) Verificar restrições, se são adiáveis e o status das mesmas.
      Dica: Use a view DBA_CONSTRAINTS para obter essas informações.

    SQL> SELECT constraint_name, table_name,
      2     constraint_type, deferrable, status
      3 FROM dba_constraints
      4 WHERE table_name IN
      5        ('PRODUCTS','ORDERS','CUSTOMERS')
      6 AND owner='SYSTEM';
    CONSTRAINT_NAME TABLE_NAME C DEFERRABLE                                                        STATUS
    --------------- ---------- - --------------                                                    --------
    CUST_PK          CUSTOMERS P DEFERRABLE                                                        ENABLED
    CUST_REGION_CK CUSTOMERS C NOT DEFERRABLE                                                      ENABLED
    ORD_CC_FK        ORDERS     R DEFERRABLE                                                       ENABLED
    ORD_DOD_CK       ORDERS     C NOT DEFERRABLE                                                   ENABLED
    ORD_PK           ORDERS     P NOT DEFERRABLE                                                   ENABLED
    PROD_UK          PRODUCTS   U DEFERRABLE                                                       DISABLED

    6 rows selected.


      (b) Verificar os nomes e os tipos de índices criados para validar as restrições.




.....................................................................................................................................................
C-64                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 13
.....................................................................................................................................................

      Dica: Os índices são criados somente para restrições exclusivas e de chave
      primária, e possuem o mesmo nome das restrições.

    SQL> SELECT index_name,table_name,uniqueness
      2 FROM dba_indexes
      3 WHERE index_name in
      4    (SELECT constraint_name
      5     FROM dba_constraints
      6     WHERE table_name IN ('PRODUCTS', 'ORDERS', 'CUSTOMERS')
      7     AND owner='SYSTEM'
      8     AND constraint_type in ('P','U'));
    INDEX_NAME       TABLE_NAME      UNIQUENES
    --------------- --------------- ---------
    CUST_PK          CUSTOMERS       NONUNIQUE
    ORD_PK           ORDERS          UNIQUE
    2 rows selected.


      c  Verificar as colunas que são usadas nas restrições criadas.
      Dica: É possível obter essas informações em DBA_CONS_COLUMNS.

    SQL> SELECT constraint_name,table_name, column_name
      2 FROM dba_cons_columns
      3 WHERE table_name IN ('PRODUCTS', 'ORDERS',
    'CUSTOMERS')
      4 AND owner='SYSTEM'
      5 ORDER BY table_name, constraint_name, position;
    CONSTRAINT_NAME TABLE_NAME COLUMN_NAME
    --------------- ---------- ------------
    CUST_PK         CUSTOMERS CUST_CODE
    CUST_REGION_CK CUSTOMERS REGION
    ORD_CC_FK       ORDERS     CUST_CODE
    ORD_DOD_CK      ORDERS     ORD_DATE
    ORD_DOD_CK      ORDERS     DATE_OF_DELY
    ORD_PK          ORDERS     ORD_ID
    PROD_UK         PRODUCTS   PROD_CODE

    7 rows selected.


 3 Insira dois registros com os seguintes valores na tabela PRODUCTS:
  PROD_CODE                        DESCRIPTION                                                                                PRICE
  100860                           Ace Tennis Racket                                                                          36.20
  100860                           Ace Tennis Ball 3-Pack                                                                     2.40




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-65
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................



    SQL> INSERT INTO system.products
      2 VALUES(100860,'Ace Tennis Racket',36.20);
      3 /
    1 row created.
    SQL> INSERT INTO system.products
      2 VALUES(100860,'Ace Tennis Ball 3-Pack', 2.4);
    1 row created.


 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida?
      Por que ou por que não?

    SQL> ALTER TABLE system.products
      2 ENABLE CONSTRAINT prod_uk;
    ALTER TABLE system.products
    *
    ORA-02299: cannot enable (SYSTEM.PROD_UK) - duplicate keys found


   Não é possível ativar a restrição porque há linhas que a violam.
 5 (a) Verifique se novas linhas adicionadas à tabela não violam a restrição na tabela
   PRODUCTS.
   Dica: Para fazer isso, ative a restrição NOVALIDATE.

    SQL> ALTER TABLE products
      2 ENABLE NOVALIDATE CONSTRAINT prod_uk;
    Table altered.


      (b) Consulte o dicionário de dados para verificar o efeito da alteração.

    SQL> SELECT constraint_name, table_name,
      2      constraint_type, validated, status
      3 FROM dba_constraints
      4 WHERE table_name = 'PRODUCTS'
      5 AND owner='SYSTEM';
    CONSTRAINT_NAME TABLE_NAME      C VALIDATED     STATUS
    --------------- --------------- - ------------- -------
    PROD_UK         PRODUCTS        U NOT VALIDATED ENABLED




.....................................................................................................................................................
C-66                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 13
.....................................................................................................................................................

      (c) Verifique se a restrição desativa inserções que violam a alteração adicionando
      uma linha com os seguintes valores:
          PROD_CODE: 100860
          DESCRIPTION: Yellow Jersey Bicycle Helmet
          PRICE: 30

    SQL> INSERT INTO products
      2 VALUES(100860,'Yellow Jersey Bicycle Helmet',
      3 30);
    ORA-00001: unique constraint (SYSTEM.PROD_UK) violated


 6 Tome as providências necessárias para identificar violações de restrição existentes
      na tabela PRODUCTS, modifique códigos de produtos conforme necessário e
      garanta que todos os dados existentes e os novos dados não violem a restrição.
      (Pressuponha que a tabela possua milhares de linhas e que seja gasto um tempo
      enorme para verificar cada linha manualmente.)
      Dica: Siga estas etapas:
      Crie a tabela EXCEPTIONS.

    SQL> connect system/manager;
    Connected.
    SQL> @?/rdbms/admin/utlexcpt
    Table created.


      Dica: Execute o comando para ativar a restrição e interceptar as exceções.

    SQL> ALTER TABLE system.products
      2 ENABLE CONSTRAINT prod_uk
      3 EXCEPTIONS INTO system.exceptions;
    ALTER TABLE system.products
    *
    ORA-02299: cannot enable (SYSTEM.PROD_UK) - duplicate keys found


      Dica: Use as ROWIDs na tabela EXCEPTIONS para listar as linhas na tabela
      PRODUCTS que violam a restrição. (Não liste colunas LOB.)

    SQL> SELECT rowid, prod_code, description
      2 FROM products
      3 WHERE rowid IN (SELECT row_id
      4                  FROM exceptions
      5                  WHERE table_name='PRODUCTS');
    ROWID              PROD_CODE DESCRIPTION
    ------------------ --------- -----------------------
    AAAAtRAAJAAAAADAAA    100860 Ace Tennis Racket
    AAAAtRAAJAAAAADAAB    100860 Ace Tennis Ball 3-Pack




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-67
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      Dica: Conserte os erros.

    SQL> UPDATE products
      2 SET prod_code='100861'
      3 WHERE rowid= (SELECT max(row_id)
      4                FROM exceptions
      5                WHERE table_name='PRODUCTS');
    1 row Updated.


      Dica: Ative a restrição.

    SQL> TRUNCATE TABLE exceptions;
    Table truncated.
    SQL> ALTER TABLE products
      2 ENABLE CONSTRAINT prod_uk
      3 EXCEPTIONS INTO exceptions;
    Table updated.


 7 Execute o script ins_ocus1.sql para inserir linhas na tabela. As inserções foram
      bem-sucedidas? Efetue rollback nas alterações.

    SQL> @$HOME/LABS/ins_ocus1
    SQL> SET ECHO on
    Echo ON
    SQL> INSERT INTO system.orders
      2 VALUES(800,'01-JAN-98','J01',NULL)
      3 /
    ORA-02291: integrity constraint (SYSTEM.ORD_CC_FK) violated -
    parent key not found
    SQL>
    SQL> INSERT INTO system.customers
      2 VALUES('J01','Sports Unlimited','West')
      3 /
    1 row created.


      Há falha durante a inserção na tabela ORDERS porque o código do cliente
      não foi inserido na tabela CUSTOMERS.

    SQL> ROLLBACK;
    Rollback complete.




.....................................................................................................................................................
C-68                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 13
.....................................................................................................................................................

 8 Agora examine o script ins_ocus2.sql. Observe que esse script também
      executa as inserções na mesma seqüência. Execute o script e verifique se é
      executado com sucesso.

    SQL> @$HOME/LABS/ins_ocus2
    SQL> ALTER SESSION SET CONSTRAINTS=deferred
      2 /
    Session altered.
    SQL> INSERT INTO system.orders
      2 VALUES(800,'01-JAN-98','J01',NULL)
      3 /
    1 row created.
    SQL> INSERT INTO system.customers
      2 VALUES('J01','Sports Unlimited','West')
      3 /
    1 row created.
    SQL> COMMIT;
    Commit complete.


   Esse script é executado com sucesso porque ele adia a verificação de restrição até
   o commit.
 9 Trunque a tabela CUSTOMERS. A operação foi bem-sucedida? Por que ou por
   que não?

    SQL> TRUNCATE TABLE system.customers;
    TRUNCATE TABLE system.customers
                   *
    ORA-02266: unique/primary keys in table referenced by enabled
    foreign keys


      Não é possível truncar a tabela porque há uma chave estrangeira em
      ORDERS que faz referência a essa tabela.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-69
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 14
Use a conta system para todas as perguntas neste exercício.
 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS.

    SQL> @$HOME/LABS/ins_item
    1 row created.
    ...


      (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS.

           SQL> CREATE TABLE items2
               2 TABLESPACE data01
               3 AS
               4 SELECT * FROM items;
           Table created.


      (c) Anote o último número de arquivo/bloco usado no momento por uma linha
      na tabela _____________________.
      Dica: Consulte as ROWIDs usando as funções no pacote DBMS_ROWID.

           SQL> SELECT max(dbms_rowid.rowid_relative_fno(rowid)
               2 ||'.'||dbms_rowid.rowid_block_number(rowid))
               3 AS "File.Block"
               4 FROM system.items2;
           File.Block
           ---------------
           8.494




.....................................................................................................................................................
C-70                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 14
.....................................................................................................................................................

 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com os seguintes
      valores na tabela:
      ORD_ID: 200
      PROD_CODE: 200000
      QTY: 20

          SQL> DELETE FROM system.items2;
          271 rows deleted.
          SQL> INSERT INTO system.items2
               2 VALUES(200,200000,20);
          1 row created.


      (b) Verifique e anote o número de arquivo/bloco da nova linha.
      _____________________

          SQL> SELECT dbms_rowid.rowid_relative_fno(rowid)||'.'
               2            ||dbms_rowid.rowid_block_number(rowid)
               3 AS "File.Block"
               4 FROM system.items2;
          File.Block
          ---------------
          8.494


 3 (a) Use a inserção de carga direta para copiar dados para a tabela ITEMS2 da
      tabela ITEMS.

          SQL> INSERT /*+APPEND */ INTO system.items2
               2 SELECT * FROM system.items;
          271 rows created.
          SQL> COMMIT;
          Commit complete.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-71
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      (b) Verifique os números de arquivo/bloco das linhas com ORD_ID<>200. O que
      você pode observar sobre a localização dessas linhas?

           SQL> SELECT DISTINCT
               2             dbms_rowid.rowid_relative_fno(rowid)||'.'
               3             ||dbms_rowid.rowid_block_number(rowid)
               4             AS "File.Block"
               5 FROM items2
               6 WHERE ord_id <> 200;
           File.Block
           ---------------
           8.495
           8.496


   As linhas inseridas usando a inserção de carga direta não reutilizaram
   blocos que foram usados anteriormente, enquanto uma inserção normal
   usa esses blocos.
 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat .
   Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a
   demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as
   seguintes etapas para tentar duas execuções de carga e se familiarizar com o uso do
   SQL*Loader:
   (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP.

           SQL> @$HOME/LABS/ulcase1$




.....................................................................................................................................................
C-72                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 14
.....................................................................................................................................................

      (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo
      de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela
      DEPT para verificar os dados carregados.

          $ sqlldr system control=ulcase1.ctl
          Password:


          SQL*Loader: Release 8.1.5.0.0 - Production on Thu Jun 17
          09:47:08 1999


          (c) Copyright 1998 Oracle Corporation.                                               All rights reserved.


          Commit point reached - logical record count 7


          $ sqlplus system/manager
          SQL> SELECT *
               2 FROM system.dept;
          DEPTNO                DNAME                           LOC
          --------- -------------- -------------
                        12      RESEARCH                        SARATOGA
                        10      ACCOUNTING                      CLEVELAND
                        11      ART                             SALEM
                        13      FINANCE                         BOSTON
                        21      SALES                           PHILA.
                        22      SALES                           ROCHESTER
                        42      INT'L                           SAN FRAN


          7 rows selected.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-73
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando
      o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo de
      dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte
      a tabela EMP para verificar se os dados foram carregados.

           $ sqlldr system control=ulcase2.ctl
           Password:


           SQL*Loader: Release 8.1.5.0.0 - Production on Thu Jun 17
           09:47:08 1999


           (c) Copyright 1998 Oracle Corporation.                                               All rights reserved.


           Commit point reached - logical record count 7


           $ sqlplus system/manager
    SQL> SELECT *
      2 FROM system.emp;
    EMPNO ENAME    JOB                                    MGR HIREDATE        SAL   COMM DEPTNO
    ----- ------- ---------                             ----- --------- --------- ------ -------
    7782 CLARK    MANAGER                               7839              2572.5             10
    7839 KING     PRESIDENT                                                 5500             10
    7934 MILLER CLERK                                   7782                 920             10
    7566 JONES    MANAGER                               7839             3123.75             20
    7499 ALLEN    SALESMAN                              7698                1600    300      30
    7654 MARTIN SALESMAN                                7698              1312.5   1400      30
    7658 CHAN     ANALYST                               7566                3450             20
    7 rows selected.


 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2.
      Dica: Consulte a view DBA_SEGMENTS.

           SQL> SELECT extents, blocks
               2     FROM dba_segments
               3     WHERE segment_name='ITEMS2'
               4     AND owner='SYSTEM';
           EXTENTS               BLOCKS
           --------- ---------
                   1                   5




.....................................................................................................................................................
C-74                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 14
.....................................................................................................................................................

      (b) Aloque uma extensão para a tabela manualmente e anote o número de
      extensões e de blocos agora.______________________. Como você acabou de
      criar a extensão, a nova extensão está vazia.

          SQL> ALTER TABLE system.items2
               2 ALLOCATE EXTENT;
          Table altered.
          SQL> SELECT EXTENTS, BLOCKS
               2     FROM dba_segments
               3     WHERE segment_name='ITEMS2'
               4     AND owner='SYSTEM';
          EXTENTS                BLOCKS
          --------- ---------
                   2                 10




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-75
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 15
 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar.
      Verifique o número e o tamanho das extensões na tabela ITEMS2 depois da
      importação. O que você pode inferir sobre o comportamento de exportar e
      importar no que se refere à alocação de espaço?
      Dica: Execute as seguintes etapas:
      Use a exportação no nível de tabela para executar esse procedimento:

    $ exp system/manager tables=items2

    Export: Release 8.1.5.0.0 - Production on Thu Jun 17 10:57:50 1999
    (c) Copyright 1998 Oracle Corporation. All rights reserved.
    Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Pro-
    duction
    With the Partitioning and Java options
    PL/SQL Release 8.1.5.0.0 - Production
    Export done in US7ASCII character set and WE8ISO8859P1 NCHAR cha-
    racter set server uses WE8ISO8859P1 character set (possible charset
    conversion)
    About to export specified tables via Conventional Path ...
    . . exporting table                         ITEMS2         272 rows
    exported
    Export terminated successfully without warnings.


      Dica: Elimine a tabela ITEMS2.

           SQL> SELECT EXTENTS, BLOCKS
               2     FROM dba_segments
               3     WHERE segment_name='ITEMS2'
               4     AND owner='SYSTEM';
           EXTENTS               BLOCKS
           --------- ---------
                   2                 10
           SQL> DROP TABLE system.items2;
           Table dropped.




.....................................................................................................................................................
C-76                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 15
.....................................................................................................................................................

      Dica: Importe a tabela ITEMS2.

          $ imp system/manager tables=items2


          Import: Release 8.1.5.0.0 - Production on Thu Jun 23 11:02:20
          1999


          (c) Copyright 1997 Oracle Corporation.                                               All rights reserved.


          Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 -
          Production
          With the Partitioning and Java options
          PL/SQL Release 8.1.5.0.0 - Production


          Export file created by EXPORT:V08.01.05 via conventional path
          ..
          . importing SYSTEM's objects into SYSTEM
          . . importing table                                                                  "ITEMS2"                         272 rows
          imported
          Import terminated successfully without warnings.


      Dica: Verifique o número e o tamanho das extensões na tabela ITEMS2 usando
      DBA_SEGMENTS.

          SQL> SELECT extents, blocks
               2     FROM dba_segments
               3     WHERE segment_name='ITEMS2'
               4     AND owner='SYSTEM';
          EXTENTS                BLOCKS
          --------- ---------
                          1                 10
          1 row selected.


      Por default, a exportação de uma tabela e a sua importação fará com que a tabela
      possua uma extensão cujo tamanho é o mesmo do tamanho original do segmento.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-77
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa
      um índice para mostrar como é possível fazer isso.
      (a) Crie um índice chamado ITEM_OID_IDX no tablespace DATA01 na coluna
      ORD_ID da tabela ITEMS2.

           SQL> CREATE INDEX system.item_oid_idx
               2     ON system.items2(ord_id)
               3     TABLESPACE data01;
           Index created.


      (b) Usando os utilitários Importar e Exportar, mova o índice para o tablespace
      INDX01.
      Dica: Execute as seguintes etapas:
      Exporte a tabela com índices, mas sem linhas.

           $ exp system/manager tables=items2 rows=n


           Export: Release 8.1.5.0.0 - Production on Thu Jun 17 12:51:02
           1999


           (c) Copyright 1998 Oracle Corporation.                                               All rights reserved.


           Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 -
           Production
           With the Partitioning and Java options
           PL/SQL Release 8.1.5.0.0 - Production
           Export done in US7ASCII character set and WE8ISO8859P1 NCHAR
           character set
           Note: table data (rows) will not be exported


           About to export specified tables via Conventional Path ...
           . . exporting table                                                                     ITEMS2
           Export terminated successfully without warnings.


      Dica: Elimine o índice.

           SQL> DROP INDEX system.item_oid_idx;
           Index dropped.




.....................................................................................................................................................
C-78                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 15
.....................................................................................................................................................

      Dica: Importe a partir da saída da exportação anterior e formule um script para
      criar o índice.

          $ imp system/manager tables=items2 indexfile=cr_itix.sql
          Import: Release 8.1.5.0.0 - Production on Thu Jun 17 12:24:42
          1999


          (c) Copyright 1998 Oracle Corporation.                                               All rights reserved.


          Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 -
          Production
          With the Partitioning and Java options
          PL/SQL Release 8.1.5.0.0 - Production


          Export file created by EXPORT:V08.01.05 via conventional path
          Import terminated successfully without warnings.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-79
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      Dica: Edite o arquivo de índice criado na etapa anterior de modo a alterar o
      tablespace para INDX01 e execute o script para criar o índice novamente.

           SQL> @cr_itix
           SQL>
           SQL> REM CREATE TABLE "SYSTEM"."ITEMS2" ("ORD_ID" NUMBER(3, 0),
           "PROD_CODE"
           SQL> REM NUMBER(6, 0), "QTY" NUMBER(4, 0)) PCTFREE 10 PCTUSED
           40 INITRANS 1
           SQL> REM MAXTRANS 255 LOGGING STORAGE(INITIAL 40960 NEXT 24576
           MINEXTENTS 1
           SQL> REM            MAXEXTENTS 121 PCTINCREASE 50 FREELISTS 1 FREELIST
           GROUPS 1
           SQL> REM            BUFFER_POOL DEFAULT) TABLESPACE "DATA01" ;
           SQL> CONNECT SYSTEM;
           Password:
           Connected.
           SQL> CREATE INDEX "SYSTEM"."ITEM_OID_IDX" ON "ITEMS2" ("ORD_ID"
           ) PCTFREE 10
               2 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 10240 NEXT 10240
               MINEXTENTS 1
               3 MAXEXTENTS 121 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1
               BUFFER_POOL
               4 DEFAULT) TABLESPACE "INDX01" LOGGING ;
               Index created.




.....................................................................................................................................................
C-80                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 16
.....................................................................................................................................................


Soluções do Exercício 16
 1 Ative o gerenciamento de senhas usando o script utlpwdmg.sql.

          SQL> connect sys/oracle as sysdba;
          Connected.
          SQL> @?/rdbms/admin/utlpwdmg
          Function created.
          Profile altered.


 2 Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece?

          SQL> ALTER USER scott
                    2 IDENTIFIED BY scott;
          ALTER USER scott
          *
          ORA-28003: password verification for the specified password
          failed
          ORA-20001: Password same as user




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-81
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 3 Certifique-se de que os seguintes items se aplicam aos usuários aos quais o perfil
      DEFAULT foi atribuído:
      – Depois de duas tentativas de login, a conta deverá ser bloqueada.
      – A senha deverá expirar depois de 30 dias.
      – A mesma senha não deverá ser reutilizada por, pelo menos, um minuto.
      – A conta deverá ter um período de tolerância de cinco dias para alterar uma
         senha que expirou.
      Certifique-se de que os requisitos concedidos tenham sido implementados.
      Dicas:
      – Use o comando ALTER PROFILE para alterar os limites de perfil default.
      – Consulte a view de dicionário de dados DBA_PROFILES para verificar o
         resultado.

           SQL> ALTER PROFILE default LIMIT
              2     FAILED_LOGIN_ATTEMPTS 2
              3     PASSWORD_LIFE_TIME 30
              4     PASSWORD_REUSE_TIME 1/1440
              5     PASSWORD_GRACE_TIME 5;
           Profile altered.
           SQL> SELECT resource_name, limit FROM dba_profiles
               2 WHERE profile='DEFAULT' AND
               3 resource_type='PASSWORD';
           RESOURCE_NAME                                                          LIMIT
           -------------------------------- ---------------
           FAILED_LOGIN_ATTEMPTS                                                 2
           PASSWORD_LIFE_TIME                                                    30
           PASSWORD_REUSE_TIME                                                   .0006
           PASSWORD_REUSE_MAX                                                    UNLIMITED
           PASSWORD_VERIFY_FUNCTION                                               VERIFY_FUNCTION
           PASSWORD_LOCK_TIME                                                    .0006
           PASSWORD_GRACE_TIME                                                   5


           7 rows selected.




.....................................................................................................................................................
C-82                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 16
.....................................................................................................................................................

 4 Estabeleça login como usuário SYSTEM fornecendo uma senha inválida. Repita esse
      procedimento duas vezes e depois estabeleça login novamente fornecendo desta
      vez a senha correta.

          SQL> connect system/manger@db01
          ERROR:
          ORA-01017: invalid username/password; logon denied
          Warning: You are no longer connected to ORACLE.
          SQL> connect system/man1@db01
          ERROR:
          ORA-01017: invalid username/password; logon denied
          SQL> connect system/man2@db01
          ERROR:
          ORA-28000: the account is lockedSQL> connect system/manger@db01
          ERROR:
          ORA-01017: invalid username/password; logon denied
          Warning: You are no longer connected to ORACLE.
          SQL> connect system/man1@db01
          ERROR:
          ORA-01017: invalid username/password; logon denied
          SQL> connect system/man2@db01
          ERROR:
          ORA-28000: the account is locked


 5 Verifique se é possível estabelecer conexão como SYSTEM novamente.
      Dica: Execute o comando ALTER USER para desbloquear a conta SYSTEM.

          SQL> CONNECT sys/oracle;
          SQL> ALTER USER system
               2 ACCOUNT UNLOCK;
          User altered.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-83
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 6 Desative verificações de senha para o perfil DEFAULT.
      Dica: Execute o comando ALTER PROFILE para desativar as verificações de
      senha.

           SQL> ALTER PROFILE default LIMIT
               2 FAILED_LOGIN_ATTEMPTS UNLIMITED
               3 PASSWORD_LIFE_TIME UNLIMITED
               4 PASSWORD_REUSE_TIME UNLIMITED
               5 PASSWORD_REUSE_MAX UNLIMITED
               6 PASSWORD_VERIFY_FUNCTION NULL
               7 PASSWORD_LOCK_TIME UNLIMITED
               8 PASSWORD_GRACE_TIME UNLIMITED;
           Profile altered.




.....................................................................................................................................................
C-84                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 17
.....................................................................................................................................................


Soluções do Exercício 17
 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que objetos e
      segmentos temporários criados por Bob não sejam criados no tablespace
      SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de
      até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando
      o Oracle Enterprise Manager, execute o script bob.sql.
      Dica: Verifique se o tablespace temporário foi designado.

          SQL> CREATE USER bob
               2       IDENTIFIED BY along
               3       DEFAULT TABLESPACE data01
               4       TEMPORARY TABLESPACE temp
               5       QUOTA 1M ON data01
               6       QUOTA 1M ON indx01;
          User created.
          SQL> @$HOME/LABS/bob
          GRANT create session TO bob;
          Grant succeeded.


 2 (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que objetos
      e segmentos de classificação criados por Kay não sejam criados no
      tablespace SYSTEM.

          SQL> CREATE USER kay
               2       IDENTIFIED BY mary
               3       DEFAULT TABLESPACE data01
               4       TEMPORARY TABLESPACE temp;
          User created.


      (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Nomeie
      a nova tabela como ORDERS.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-85
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      Dica: Kay precisa de uma conta em seu tablespace default antes que objetos
      possam ser criados em seu esquema.

    SQL> ALTER USER kay
      2    QUOTA UNLIMITED ON data01;
    User altered.
    SQL> CREATE TABLE kay.orders
      2 AS
      3 SELECT * FROM system.orders2;
    Table created.


 3 Exiba as informações sobre Bob e Kay no dicionário de dados.
      Dica: Para obter essas informações, consulte DBA_USERS.

    SQL> SELECT username, default_tablespace,
      2        temporary_tablespace
      3   FROM dba_users
      4   WHERE username IN ('BOB', 'KAY');
    USERNAME DEFAULT_TABLESPACE   TEMPORARY_TABLESPACE
    -------- -------------------- --------------------
    KAY      DATA01               TEMP
    BOB      DATA01               TEMP


 4 No dicionário de dados, exiba as informações sobre o espaço que Bob pode usar
      nos tablespaces.
      Dica: Para obter essas informações, consulte DBA_TS_QUOTAS.

           SQL> SELECT * FROM dba_ts_quotas WHERE username = 'BOB';
           TABLESPACE_NAM USERNAME                                    BYTES MAX_BYTES                         BLOCKS MAX_BLOCKS
           -------------- -------- --------- --------- --------- ----------
           INDX01                          BOB                               0       1048576                         0                 256
           DATA01                          BOB                               0       1048576                         0                 256




.....................................................................................................................................................
C-86                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 17
.....................................................................................................................................................

 5 (a) Como o usuário BOB , altere o seu tablespace temporário. O que acontece?
      Por quê?

          SQL> CONNECT bob/along;
          Connected.
          SQL> ALTER USER bob
               2 TEMPORARY TABLESPACE data01;
          ALTER USER bob
          *
          ORA-01031: insufficient privileges


      (b) Como Bob, altere sua senha para SAM.

          SQL> CONNECT bob/along;
          Connected.
          SQL> ALTER USER bob
               2 IDENTIFIED BY sam;
          User altered.


 6 Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo.

          SQL> CONNECT system/manager
          Connected.
          SQL> ALTER USER bob QUOTA 0 ON data01;
          User altered.


 7 Remova a conta de Kay do banco de dados.
      Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE.

          SQL> DROP USER kay CASCADE;
          User dropped.


 8 Bob esqueceu a sua senha. Atribua ao mesmo a senha OLINK e exija que ele altere
      a senha na próxima vez que efetuar logon.

          SQL> ALTER USER bob
               2 IDENTIFIED BY olink
               3 PASSWORD EXPIRE;
          User altered.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-87
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 18
 1 Como o usuário SYSTEM, crie o usuário Kay e conceda a ele a capacidade de
      estabelecer logon no banco de dados e criar objetos no seu esquema.
      Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE.

           SQL> CONNECT system/manager
           Connected.
           SQL> CREATE USER kay
               2       IDENTIFIED BY "abcd12"
               3       DEFAULT TABLESPACE data01
               4       TEMPORARY TABLESPACE temp
               5       QUOTA 1M ON data01;
           User created.
           SQL> GRANT create session, create table TO kay;
           Grante succeeded.


 2 (a) Conecte-se como Kay e use o script ulcase1.sql para criar tabelas EMP
      e DEPT.

           SQL> CONNECT kay/abcd12
           Connected.
           SQL> @$HOME/LABS/ulcase1


      (b) Conecte-se como system e copie os dados de SYSTEM.EMP para a tabela
      EMP de Kay. Verifique se os registros foram inseridos.

    SQL> CONNECT system/manager
    Connected.
    SQL> INSERT INTO kay.emp
      2 SELECT * FROM emp;
    7 rows created.
    SQL> SELECT * FROM kay.emp;
    EMPNO   ENAME     JOB       MGR      HIREDATE SAL      COMM    DEPTNO
    ------ --------- --------- ------- -------- ------- ------ -------
       7782 CLARK     MANAGER       7839           2572.5               10
       7839 KING      PRESIDENT                      5500               10
       7934 MILLER     CLERK        7782               920              10
       7566 JONES     MANAGER       7839          3123.75               20
       7499 ALLEN     SALESMAN      7698             1600      300      30
       7654 MARTIN    SALESMAN      7698           1312.5     1400      30
       7658 CHAN      ANALYST       7566              3450              20
       7 rows selected.




.....................................................................................................................................................
C-88                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 18
.....................................................................................................................................................

      (c) Como system, conceda a Bob a capacidade de efetuar seleções na tabela EMP
      de Kay. O que acontece e por quê?

          SQL> CONNECT system/manager
          Connected.
          SQL> GRANT select ON kay.emp
               2 TO bob;
          GRANT select ON kay.emp
                                                 *
          ORA-01031: insufficient privileges


      SYSTEM pode consultar a tabela de Kay usando o privilégio SELECT ANY
      TABLE, mas somente Kay ou qualquer outro usuário que tenha recebido o
      privilégio de Kay com GRANT OPTION pode conceder esse privilégio a
      outros usuários.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-89
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 3 Estabeleça conexão novamente como Kay e conceda a Bob a capacidade de efetuar
      seleções na tabela EMP de Kay. Além disso, permita que Bob conceda a
      capacidade de efetuar seleções a outros usuários. Examine as views de dicionário
      de dados que registram essas ações.
      Dica: Consulte a view DBA_TAB_PRIVS para ver os privilégios.

    SQL> CONNECT kay/abcd12
    Connected.
    SQL> GRANT select ON emp
      2 TO bob WITH GRANT OPTION;
    Grant succeeded.
    SQL>
    SQL> CONNECT system/manager
    Connected.
    SQL> SELECT * FROM dba_tab_privs
      2 WHERE grantee='BOB';
    GRANTEE    OWNER      TABLE_NAME GRANTOR    PRIVILEGE GRA
    ---------- ---------- ---------- ---------- ---------- ---
    BOB        KAY        EMP        KAY        SELECT     YES


 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados.

           SQL> CREATE USER todd IDENTIFIED BY "abcd1?";
           User created.
           SQL> GRANT create session TO todd;
           Grant succeeded.


 5 (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Conceda a Bob a
      nova senha sam.

           SQL> CONNECT bob/olink
           ERROR:
           ORA-28001: the password has expired
           Changing password for bob
           Old password: *****
           New password: ***
           Retype new password: ***
           Password changed
           Connected.SQL> GRANT select ON kay.emp TO todd;
           Grant succeeded.




.....................................................................................................................................................
C-90                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 18
.....................................................................................................................................................

      (b) Como Kay, remova o privilégio de Bob de ler a tabela EMP de Kay.

          SQL> CONNECT kay/abcd12
          Connected.
          SQL> REVOKE select ON emp FROM bob;
          Revoke succeeded.


      (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê?

          SQL> CONNECT todd/abcd1?
          Connected.
          SQL> SELECT * FROM kay.emp;
          SELECT * FROM kay.emp
                                             *
          ORA-00942: table or view does not exist


   Como a revogação de privilégios de objeto possui um efeito cascata, Todd, que
   recebeu o privilégio de Bob, perdeu o privilégio SELECT na tabela de Kay quando
   o privilégio de Bob foi revogado na pergunta anterior.
 6 (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela
   DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e
   por quê?
          SQL> CONNECT system/manager
          Connected.
          SQL> GRANT create any table TO kay;
          Grant succeeded.
          SQL> CONNECT kay/abcd12
          Connected.
          SQL> CREATE TABLE bob.dept
               2 AS
               3 SELECT * FROM dept;
          SELECT * FROM dept
                                      *
          ORA-01536: space quota exceeded for tablespace 'DATA01'


      A cota de Bob no seu tablespace default foi removida no Exercício 17, pergunta 6.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-91
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

      (b) Como system, examine a view de dicionário de dados DBA_TABLES para
      verificar o resultado.
           SQL> CONNECT system/manager
           Connected.
           SQL> SELECT owner, table_name
               2 FROM dba_tables
               3 WHERE table_name IN ('EMP', 'DEPT');
           OWNER         TABLE_NAME
           ------ -----------
           SCOTT         DEPT
           SCOTT         EMP
           SYSTEM EMP
           SYSTEM DEPT
           KAY           DEPT
           KAY           EMP
           6 rows selected.


 7 Conceda a Kay a capacidade de inicializar e desativar o banco de dados sem a
      capacidade de criar um novo banco de dados.
      Dica: Conceda a Kay o privilégio SYSOPER.

           SQL> CONNECT sys/coracle AS SYSDBA
           Connected.
           SQL> GRANT sysoper TO kay;
           Grant succeeded.




.....................................................................................................................................................
C-92                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 19
.....................................................................................................................................................


Soluções do Exercício 19
 1 Examine a view de dicionário de dados e liste os privilégios do sistema da
      atribuição RESOURCE.
      Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS.

          SQL> CONNECT system/manager
          Connected.
          SQL> SELECT                 *
               2       FROM        dba_sys_privs
               3       WHERE grantee = 'RESOURCE';
          GRANTEE            PRIVILEGE                                    ADM
          -------- -------------------- ---
          RESOURCE CREATE CLUSTER                                          NO
          RESOURCE CREATE INDEXTYPE                                        NO
          RESOURCE CREATE OPERATOR                                         NO
          RESOURCE CREATE PROCEDURE                                        NO
          RESOURCE CREATE SEQUENCE                                         NO
          RESOURCE CREATE TABLE                                            NO
          RESOURCE CREATE TRIGGER                                          NO
          RESOURCE CREATE TYPE                                             NO
          8 rows selected.


 2 Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela,
      criar uma view e fazer seleções na tabela EMP de Kay.

          SQL> CREATE ROLE dev;
          Role created.
          SQL> GRANT create table, create view TO dev;
          Grant succeeded.
          SQL> CONNECT kay/abcd12
          Connected.
          SQL> GRANT select ON emp TO dev;
          Grant succeeded.
          SQL> CONNECT system/manager
          Connected.
          SQL> GRANT dev TO bob;
          Grant succeeded.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-93
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................

 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente
      que a atribuição RESOURCE seja ativada automaticamente quando ele
      estabelecer logon.
      Dica: Use o comando ALTER USER para especificar a atribuição default.

           SQL> GRANT dev, resource TO bob;
           Grant succeeded.
           SQL> ALTER USER bob
               2 DEFAULT ROLE resource;
           User altered.


      (b) Conceda a Bob a capacidade de ler todas as informações de dicionário
      de dados.
      Dica: Atribua SELECT_CATALOG_ROLE. a Bob.

           SQL> GRANT select_catalog_role TO bob;
           Grant succeeded.


 4 Bob precisa verificar os segmentos de rollback que são usados no momento pela
      instância. Conecte-se como Bob e liste os segmentos de rollback usados.
      Dica: Bob precisa de SELECT_CATALOG_ROLE para verificar os segmentos
      de rollback, mas, como essa não é uma das atribuições default do mesmo, é
      necessário ativá-la primeiro.

           SQL> CONNECT bob/sam
           Connected.
           SQL> SET ROLE select_catalog_role;
           Role set.
           SQL> SELECT segment_name
               2 FROM dba_rollback_segs
               3 WHERE status='ONLINE';
           SEGMENT_NAME
           --------------
           SYSTEM
           R01
           R02
           R03
           R04




.....................................................................................................................................................
C-94                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 19
.....................................................................................................................................................

 5 Como system, tente criar uma view EMP_VIEW na tabela EMP de Kay. O que
      acontece e por quê?

          SQL> connect system/manager
          Connected.
          SQL> CREATE VIEW kay_emp AS SELECT * FROM kay.emp;
          CREATE VIEW kay_emp AS SELECT * FROM kay.emp
                                                                                          *
          ORA-00942: table or view does not exist


      SYSTEM pode ler a tabela de Kay usando os privilégios adquiridos pela
      atribuição DBA, mas não é possível usar um privilégio obtido através de uma
      atribuição para criar views.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-95
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................


Soluções do Exercício 20
 1 Verifique o conjunto de caracteres nacionais e do banco de dados.
      Dica: Consulte a view de dicionário de dados NLS_DATABASE_PARAMETERS
      para verificar os conjuntos de caracteres.

           SQL> SELECT parameter,value
               2 FROM nls_database_parameters
               3 WHERE parameter LIKE '%CHARACTERSET';
           PARAMETER                                             VALUE
           ------------------------ ------------------------
           NLS_CHARACTERSET                                      WE8ISO8859P1
           NLS_NCHAR_CHARACTERSET                               WE8ISO8859P1


 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados?
      Dica: Consulte a view de dicionário de dados V$NLS_VALID_VALUES para
      listar os valores válidos.

           SQL> SELECT value FROM v$nls_valid_values
               2 WHERE parameter='CHARACTERSET';
           VALUE
           ------------------------
           US7ASCII
           WE8DEC
           WE8HP
           ...


           ZHT32TRISFIXED
           233 rows selected.




.....................................................................................................................................................
C-96                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 20
.....................................................................................................................................................

 3 Certifique-se de que todas as datas nesta sessão sejam exibidas usando um ano de
      quatro dígitos.
      Dica: Defina o parâmetro NLS_DATE_FORMAT.

          SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';
          Session altered.
          SQL> SELECT SYSDATE FROM dual;
          SYSDATE
          ---------------
          18-06-1999


 4 Defina NLS_LANG no lado servidor e no cliente para ativar o esquema de
      codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o
      usuário SYS e exiba as linhas. Exporte a tabela. Importe a tabela para o usuário Bob
      usando o conjunto de caracteres US7ASCII.
      Consulte a tabela; o que aconteceu e por quê? (opcional)

          $NLS_LANG=German_Germany.WE8ISO8859P1
          $export NLS_LANG
          SQL> CONNECT sytem/manager@db01
          Connected.
          SQL> @$HOME/LABS/nls
          Table created.
          1 row created.
          1 row created.
          SQL> SELECT * FROM nls;
          C
          -----
          
          _
          SQL> EXIT
          exp system/manager tables=nls
          Export: Release 8.1.5.0.0 - Production on Thu Jun 17 12:51:02
          1999
          ..
          Export done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR
          character set
          Note: table data (rows) will not be exported


          About to export specified tables via Conventional Path ...
          . . exporting table                                                                      NLS 2 rows exported.
          Export terminated successfully without warnings.



.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        C-97
Apêndice C: Soluções dos Exercícios Para SQL*Plus
.....................................................................................................................................................




           $NLS_LANG=American_America.US7ASCII
           $export NLS_LANG
           imp system/manager fromuser=system touser=bob tables=nls
           Import: Release 8.1.5.0.0 - Production on Thu Jun 17 12:24:42
           1999
           (c) Copyright 1998 Oracle Corporation.                                               All rights reserved.


           Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 -
           Production
           With the Partitioning and Java options
           PL/SQL Release 8.1.5.0.0 - Production


           Export file created by EXPORT:V08.01.05 via conventional path
           import done in US7ASCII character set and WE8ISO8859P1 character
           set
           import server uses WE8ISO8859P1 character set (possible charset
           conversion)
           export client uses WE8ISO8859P1 character set (possible charset
           conversion)
           . . importing table “NLS” 2 rows imported
           Import terminated successfully without warnings.
           SQL> CONNECT bob/sam
           Connected.
           SQL> SELECT * FROM nls;
           C
           ----------
           U
           ?




.....................................................................................................................................................
C-98                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
D
               ................................




Soluções dos Exercícios
para o Oracle Enterprise
               Manager
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 1
Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C,
"Soluções dos Exercícios Para SQL*Plus". Consulte-o para obter as respostas.




.....................................................................................................................................................
D-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 2
.....................................................................................................................................................


Soluções do Exercício 2
Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —>
DBA Management Pack —> SQL Plus Worksheet (Planilha SQL Plus)
.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          D-3
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 3
Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte
o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica
do Oracle Enterprise Manager.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —>
SQL Plus Worksheet




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.
 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.
 5 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

 6 Tente alterar o tamanho do bloco do banco de dados. O que aconteceu?

          a      (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Instance Manager
          b      Conecte-se com o nome de usuário sys, a senha oracle, o nome de serviço
                 db01 e conecte-se como sysdba. Conecte-se diretamente com o banco de
                 dados. Não se conecte com um OMS.
          c      Selecione Database (Banco de Dados) —> Shutdown (Desativar).
          d      Clique em Yes (Sim) na caixa de diálogo.
          e      Selecione Immediate (Imediata) em Shutdown Options
                 (Opções de Desativação).
          f      Clique em OK.
          g      Edite init<SID>.ora e adicione DB_BLOCK_SIZE=8192.
          h      Use o Instance Manager.
          i      Selecione Database (Bando de Dados) —> Startup (Inicializar).
          j      Na caixa de diálogo Startup, selecione Open (Abrir) e especifique o nome
                 do arquivo de parâmetros local.




          k Desative a instância.
          l Edite init<SID>.ora para criar comentários sobre DB_BLOCK_SIZE.
          m Inicialize e abra o banco de dados. Selecione o botão de opção Open e
            clique em Apply (Aplicar).

 7 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          D-5
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 8 A solução é a mesma mencionada no Apêndice C.
 9 Inicie uma sessão do SQL*Plus. Conecte-se como o usuário SCOTT e insira linhas
      na tabela EMP. Abra uma segunda sessão e tente desativar o banco de dados com a
      opção transacional. O que acontece?

    SQL> connect scott/tiger
    Connected.
    SQL> INSERT INTO emp (empno, ename, deptno)
         2 VALUES (1,'Vijay',10);
    1 row processed.

           a     Use o Instance Manager
           b     Selecione Database —> Shutdown
           c     Clique em Yes na caixa de diálogo
           d     Selecione Transactional (Transacional) em Shutdown Options
           e     Clique em OK
    Efetue rollback na transação de Scott.


   O servidor Oracle espera a transação de SCOTT terminar antes de
   desativar. Espere a instância ser desativada na segunda sessão. Em
   seguida, ative-a novamente.
10 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 3
.....................................................................................................................................................

11 Verifique se pelo menos duas sessões estão abertas, uma sessão como o usuário
      SCOTT e outra como o usuário SYS. Ative a sessão restrita, confirme-a e
      certifique-se de que somente o administrador de banco de dados SYS
      esteja conectado.

          a Use o Instance Manager.
          b Selecione Session (Sessão) —> Restrict (Restrita) no menu e clique em OK
            na caixa de diálogo.
          c Expanda a pasta Sessions (Sessões).
          d Selecione o usuário SCOTT e escolha Disconnect
            (Desconectar) —> Immediate no menu do botão direito do mouse.




          e      Selecione a pasta Sessions e examine o status da sessão de SCOTT.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          D-7
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 4
Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C.
Consulte-o para obter as respostas.

Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —>SQL Plus Worksheet




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
D-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 5
.....................................................................................................................................................


Soluções do Exercício 5
Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C.
Consulte-o para obter as respostas.

Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          D-9
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 6
Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte
o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica
do Oracle Enterprise Manager.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet
.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
D-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 6
.....................................................................................................................................................

 1 A solução é a mesma mencionada no Apêndice C.
 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. (É possível
      simular isso alterando o nome do arquivo de controle no arquivo de parâmetros.)
      O que acontece?

    Depois de renomear o arquivo no servidor, use o Instance Manager para reiniciar
    o banco de dados.




 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-11
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 7
 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de
      grupos e de membros de arquivos de redo log que o seu banco de dados possui.

           a Selecione Programs —> Oracle - EMV2 Home —> DBA Management
             Pack —> Storage Manager.
           b Conecte-se diretamente com um banco de dados na caixa de diálogo
             de login.
           c Expanda a pasta Redo Log Groups (Grupos de Redo Logs) para ver o
             número de grupos.
           d Selecione um grupo para ver o número de membros no grupo e a
             localização dos mesmos.




.....................................................................................................................................................
D-12                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

 2 Em que modo de banco de dados o seu banco de dados está configurado?
      O arquivamento automático está ativado?

          a Use o Oracle Enterprise Manager.
          b Selecione Programs —> Oracle - EMV2 Home —> DBA Management
            Pack —> Instance Manager.
          c Conecte-se diretamente com um banco de dados na caixa de diálogo
            de login.
          d Selecione o banco de dados na árvore do navegador e clique na guia
            Information (Informações) no painel de janela direito.




          e      Selecione Initialization Parameters (Parâmetros de Inicialização) na árvore
                 do navegador e exiba os parâmetros no painel de janela direito. O parâmetro
                 LOG_ARCHIVE_START deverá aparecer na guia Basic Tuning
                 (Ajuste Básico).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-13
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no
      DISK3 usando as seguintes convenções de nomeação:
      Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e
      redo0102.log, adicione um novo membro chamado redo0103.log no
      DISK3. Verifique o resultado.

           a Use o Storage Manager.
           b Expanda Redo Log Groups na árvore do navegador.
           c Selecione o grupo de redo logs e informe um novo arquivo de log na
             planilha, no painel de janela direito. Clique em Apply.




.....................................................................................................................................................
D-14                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e
      DISK5, e verifique a existência do novo grupo.

          a Use o Storage Manager.
          b Selecione os grupos de redo logs na árvore do navegador e escolha
            Create (Criar) no menu do botão direito do mouse.
          c Informe o nome e a localização dos membros de redo log.
            Clique em Create.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-15
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 5 Desloque os membros redo0103.log e redo0203.log (consulte a etapa 3) do
      diretório DISK3 para DISK5.

           a Use o Storage Manager.
           b Selecione os grupos de redo logs na árvore do navegador.
           c Altere a localização dos membros de redo log. Clique em Apply.
             (Lembre-se de copiar os arquivos para o novo destino antes de renomeá-los.
             Consulte o Apêndice C para obter as respostas.)




.....................................................................................................................................................
D-16                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 7
.....................................................................................................................................................

 6 Remova o grupo de logs criado na etapa 4.


          d Use o Storage Manager.
          e Selecione Redo Log Groups.
          f Se o grupo 3 estiver ativo, selecione o seu banco de dados de trabalho
            e escolha Switch Logfile (Alternar Arquivo de Log) no menu do botão
            direito do mouse.




          g Clique em OK na caixa de mensagem.
          h Selecione o grupo 3 na árvore do navegador.
          i Selecione Object (Objeto) —> Remove (Remover).
          j Clique em Yes na caixa de diálogo do Storage Manager.
          k Estabeleça login no servidor e execute:
            $rm $HOME/DATA/DISK3/redo0301.log
            $rm $HOME/DATA/DISK4/redo0302.log
            $rm $HOME/DATA/DISK5/redo0303.log




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-17
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 7 Redimensione todos os arquivos de redo log on-line para 1024 KB.


           a     Use o Storage Manager para adicionar dois grupos de log com dois
                 membros cada.
           b     Alterne os arquivos de log até que os grupos 1 e 2 fiquem inativos.
           c     Elimine os grupos de log 1 e 2.
           d     Estabeleça login no servidor e execute:
                 $rm $HOME/DATA/DISK3/redo0101.log
                 $rm $HOME/DATA/DISK3/redo0201.log
                 $rm $HOME/DATA/DISK4/redo0102.log
                 $rm $HOME/DATA/DISK4/redo0202.log
                 $rm $HOME/DATA/DISK5/redo0103.log
                 $rm $HOME/DATA/DISK5/redo0203.log
           e     Selecione cada grupo de logs para verificar se os arquivos foram criados
                 adequadamente.




.....................................................................................................................................................
D-18                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................


Soluções do Exercício 8
 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento:
      a) DATA01 para tabelas com armazenamento default
      b) DATA02 para objetos grandes com armazenamento default. Certifique-se de
      que cada tamanho de extensão usado no tablespace seja múltiplo de 100 KB.
      c) INDX01 para índices com o armazenamento default. Ative a extensão
      automática de 500 KB quando forem necessárias mais extensões.
      d) RONLY para tabelas somente para leitura com o armazenamento default
      Exiba as informações do dicionário de dados.

                                                                                           Localização do Arquivo
Nome do Tablespace                     Subdiretório                                        de Dados (Tamanho)
DATA01                                 DISK4                                               data01.dbf (2M)
DATA02                                 DISK5                                               data02.dbf (1M)
INDX01                                 DISK3                                               indx01.dbf (1M)
RONLY                                  DISK1                                               ronly.dbf (1M)




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-19
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................




           a     Use o Storage Manager
           b     Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Storage Manager.
           c     Conecte-se diretamente com um banco de dados na caixa de diálogo
                 de login.
           d     Selecione a pasta Tablespaces na árvore do navegador e selecione Create no
                 menu do botão direito do mouse.
           e     Informe Name (Nome) na guia General (Geral) da Folha de Propriedades e
                 clique em Add (Adicionar).
           f     Informe o nome e o tamanho do arquivo de dados na caixa de diálogo
                 Create Datafile (Criar Arquivo de Dados) e clique em OK.
           g     Clique em Create.




           h     Repita as etapas acima para todos os tablespaces.




.....................................................................................................................................................
D-20                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................

 2 Aloque mais 500 KB ao tablespace DATA02 e verifique o resultado.

          a      Use o Storage Manager.
          b      Expanda a pasta Tablespaces.
          c      Expanda o arquivo de dados DATA02.
          d      Expanda a pasta Datafiles (Arquivos de Dados).
          e      Selecione o arquivo de dados.
          f      Especifique 1500 KB como o tamanho do arquivo na página General.




          g Clique em Apply.
          h Verifique o tamanho na página General ou selecionando Datafiles.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-21
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 3 Desloque o tablespace INDX01 e mova-o para o DISK6.

           a Use o Storage Manager.
           b Expanda a pasta Tablespaces.
           c Selecione o tablespace INDX01. Selecione Tablespace —> Take Offline
             (Colocar Off-line) —> Normal no menu do botão direito do mouse e clique
             em Yes na caixa de diálogo.




           d     Confirme na página General se o tablespace está off-line.
           e     Estabeleça login no servidor e execute:
                 $mv $HOME/DATA/DISK3/indx01.dbf $HOME/DATA/DISK6/
                 indx01.dbf
           f     Expanda Datafiles.
           g     Selecione o arquivo que pertence ao tablespace INDX01.
           h     Altere o nome na página General.
           i     Clique em Apply.
           j     Expanda Tablespaces.
           k     Selecione o tablespace INDX01.
           l     Selecione Object —> Place Online (Colocar On-line).
           m     Clique em Yes na caixa de diálogo Oracle Storage Manager.




.....................................................................................................................................................
D-22                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 8
.....................................................................................................................................................
 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar
      uma tabela nesse tablespace. Tente criar uma tabela adicional e eliminá-la.
      O que acontece e por quê?

          a      Use o SQL*Plus Worksheet para executar o seguinte comando:




          b Use o Storage Manager.
          c Expanda a pasta Tablespaces e selecione o tablespace RONLY.
          d Selecione Tablespace —> Make Read-Only (Colocar como Somente
            para Leitura) no menu do botão direito do mouse. Clique em Yes na
            caixa de diálogo Oracle Storage Manager.
          e Verifique na página General se o tablespace está no modo somente
            para leitura.
          f Use o SQL*Plus Worksheet para executar os seguintes comandos:




          g      Use o SQL*Plus Worksheet para eliminar a tabela t1;

.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-23
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 5 Elimine o tablespace RONLY e verifique-o.
      Dica
      – Execute DROP TABLESPACE... para remover o tablespace.
      – Delete os arquivos do sistema operacional.
      – Consulte a view de desempenho dinâmica V$TABLESPACE para
         verificar o resultado.

           a Use o Storage Manager.
           b Expanda a pasta Tablespaces.
           c Selecione o tablespace RONLY.
           d Selecione Object —> Remove.




           e     Estabeleça login no servidor e execute o comando:
                 $rm $HOME/DATA/DISK1/ronly.dbf


 6 A solução é a mesma mencionada no Apêndice C.
 7 A solução é a mesma mencionada no Apêndice C.
 8 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-24                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 9
.....................................................................................................................................................


Soluções do Exercício 9
Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma
solução específica do Oracle Enterprise Manager.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço
do seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.
 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.
 5 A solução é a mesma mencionada no Apêndice C.
 6 A solução é a mesma mencionada no Apêndice C.
 7 A solução é a mesma mencionada no Apêndice C.
 8 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-25
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 10
Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/
alt_sysrol.sql como o usuário SYSTEM.

Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma
solução específica do Oracle Enterprise Manager.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-26                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................

 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados.
      Os pedidos serão informados usando 15 estações clientes, que possuem um
      volume bastante alto de atividade pela manhã. Crie um número apropriado de
      segmentos de rollback no banco de dados. (Pressuponha um tamanho default para
      este exercício.)
      Dica: Usando uma proporção de um segmento de rollback para cada quatro
      transações, você precisará criar quatro segmentos de rollback.

          a Use o Storage Manager
          b Selecione Programs —> Oracle - EMV2 Home —> DBA Management
            Pack —> Storage Manager.
          c Selecione a pasta Rollback Segments (Segmentos de Rollback) e selecione
            Create no menu do botão direito do mouse.
          d Especifique o nome do segmento de rollback e selecione RBS como o
            tablespace na página General.




          e      Clique em Create.
          f      É possível criar o segundo, o terceiro e o quarto segmentos de rollback
                 selecionando o segmento de rollback R01 e escolhendo Create Like
                 (Criar Como) no menu do botão direito do mouse.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-27
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 3 A solução é a mesma mencionada no Apêndice C.
 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem
      usados pelas transações.
      Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS.

           a Use o Storage Manager.
           b Selecione a pasta Rollback Segments.
           c Verifique todos os segmentos de rollback com o status ONLINE.




.....................................................................................................................................................
D-28                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................

 5 A solução é a mesma mencionada no Apêndice C.
 6 Chame o SQL*Plus Worksheet. Execute o script ins_emp.sql. Usando uma
      sessão separada, coloque como off-line o tablespace do segmento de rollback.
      Dica: O script inicia outra transação que insere uma linha na tabela EMP.
      Como ambas transações estão usando os segmentos de rollback nesse tablespace,
      você precisará seguir estas etapas:
      Primeiro coloque como off-line todos os segmentos de rollback no
      tablespace para impedir que novas transações usem os segmentos de
      rollback no tablespace.

          a Use o Storage Manager.
          b Expanda Rollback Segments.
          c Selecione pelo menos um segmento de rollback que não seja SYSTEM.
            Selecione Take Offline no menu do botão direito do mouse.




          d      Responda à caixa de diálogo do Storage Manager clicando em Yes.

      Dica: Agora identifique as sessões que estão usando os segmentos de rollback no
      tablespace RBS.
      A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-29
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Elimine as sessões que usam segmentos de rollback no tablespace.

           a Use o Instance Manager.
           b Expanda a pasta Sessions. Selecione a sessão que será eliminada.
           c Selecione Session —> Disconnect —> Immediate.




.....................................................................................................................................................
D-30                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................

      Dica: Coloque como off-line o tablespace RBS.

          a Use o Storage Manager.
          b Expanda a pasta Tablespaces. Selecione RBS.
          c Selecione Tablespace —> Take Offline —> Normal no menu do
            botão direito do mouse.




          d      Clique em Yes na caixa de diálogo Oracle Storage Manager.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-31
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 7 (a) Desative a instância, inicialize novamente e consulte as informações de
        segmento de rollback no dicionário de dados para verificar quantos segmentos de
        rollback estão on-line.

           a Use o Instance Manager para desativar e reiniciar a instância.
           b Use o Storage Manager para verificar o status de todos os segmentos
             de rollback.
    .




        (b) Verifique se todos os segmentos de rollback serão colocados como on-line
        sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de
        que todos os segmentos de rollback possuam o status ONLINE.




.....................................................................................................................................................
D-32                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................

      Dica: É possível fazer isso usando o parâmetro de inicialização
      ROLLBACK_SEGMENTS. Além disso, é necessário colocar como
      on-line o tablespace RBS.

          a      Use o Storage Manager para colocar como on-line o tablespace RBS.




          b      Edite initdb01.ora e especifique:
                 rollback_segments = (r01,r02,r03,r04)
          c Use o Instance Manager para desativar e abrir o banco de dados novamente.
          d Verifique se os segmentos de rollback estão on-line usando o
            Storage Manager.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-33
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados
      com os parâmetros de armazenamento a seguir e verifique se é possível usá-lo.
      Isso é essencial para a próxima pergunta:
      INITIAL = 10K
      NEXT = 10K
      OPTIMAL =30K
      Dica: Para certificar-se de que possa usar o segmento de rollback, coloque-o
      como on-line depois de criá-lo.

           a Use o Storage Manager.
           b Selecione a pasta Rollback Segments. Selecione Create no menu do
             botão direito do mouse.
           c Especifique DEMO_RBS como o nome do segmento de rollback, escolha
             RBS como o tablespace e selecione Online na página General.
           d Especifique as definições de armazenamento na página
             Extents (Extensões).




           e     Clique em Create.

 9 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-34                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 10
.....................................................................................................................................................

10 Certifique-se de que o segmento de rollback DEMO_RBS foi reduzido para seu
      tamanho ideal.

          a      Use o SQL*Plus Worksheet para executar a seguinte consulta:
                 SQL> SELECT extents, rssize, optsize
                 2 FROM v$rollstat
                 3 WHERE usn = (SELECT usn
                 4 FROM v$rollname
                 5 WHERE name='DEMO_RBS');
          a Use o Storage Manager.
          b Expanda as pastas Rollback Segments.
          c Selecione DEMO_RBS. Selecione Shrink (Compactar) no menu do
            botão direito do mouse.




          d Especifique Optimal Size (Tamanho Ideal) na caixa de diálogo Shrink
            Rollback (Compactar Rollback) e clique em OK.
          e Use o SQL*Plus Worksheet para executar a seguinte consulta:
                 SQL> SELECT extents, rssize, optsize
                 2 FROM v$rollstat
                 3 WHERE usn = (SELECT usn
                 4 FROM v$rollname
                 5 WHERE name='DEMO_RBS');


11 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-35
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

12 Elimine o segmento de rollback DEMO_RBS.
      Dica: É necessário colocar como off-line o rollback antes de eliminá-lo. Talvez
      você precise verificar se nenhuma transação está usando o segmento de rollback.

           a Efetue rollback em todas as transações ativas.
           b Use o Storage Manager.
           c Expanda a pasta Rollback Segments.
           d Selecione DEMO_RBS. Selecione Take Offline.




           e Clique em Yes na caixa de diálogo do Storage Manager.
           f Selecione Object —> Remove.
           g Clique em Yes na caixa de diálogo do Storage Manager.




.....................................................................................................................................................
D-36                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................


Soluções do Exercício 11
Usando o SQL*Plus Worksheet
Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos.
Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma
solução específica do Oracle Enterprise Manager.
É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo
estas etapas:

Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-37
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 1 É necessário criar as seguintes tabelas para um sistema de entrada de pedidos que
      você esteja implementando agora. As tabelas e as colunas são mostradas abaixo:
  Tabela                                       Coluna                                        Tipo de Dados e Tamanho
  CUSTOMERS                                    CUST_CODE                                     VARCHAR2(3)
                                               NAME                                          VARCHAR2(50)
                                               REGION                                        VARCHAR2(5)
  ORDERS                                       ORD_ID                                        NUMBER(3)
                                               ORD_DATE                                      DATE
                                               CUST_CODE                                     VARCHAR2(3)
                                               DATE_OF_DELY                                  DATE

Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um valor
para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito. Estabeleça
login como system/manager e crie as tabelas com a utilização de espaço em bloco
apropriada e as definições de tablespace. Use o tablespace DATA01. Você pode usar
as definições de armazenamento default. Use o Assistente de Tabela ao criar a tabela
CUSTOMERS. Não use esse Assistente ao criar a tabela ORDERS.




.....................................................................................................................................................
D-38                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................

      Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que
      as linhas nessa tabela provavelmente crescerão depois das atualizações.

          a      Use o Schema Manager.
          b      Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Schema Manager.
          c      Estabeleça conexão diretamente com um banco de dados na caixa de
                 diálogo de login.
          d      Selecione Object —> Create no menu.
          e      Selecione Table (Tabela) na lista. Clique em Create.
          f      Especifique o nome da tabela, o esquema e o tablespace. Clique em
                 Next (Próximo).
          g      Especifique nomes de coluna, tipos de dados e tamanhos. Clique em Insert
                 (Inserir) para adicionar uma nova coluna. Clique em Finish (Finalizar)
                 quando tiver terminado.




          h Clique em OK.
          i Crie a tabela ORDERS.
          j Selecione Object —> Create no menu.
          k Selecione Table na lista. Desmarque a caixa Use Wizard (Usar Assistente).
            Clique em Create.
          l Especifique o nome da tabela, o esquema, o tablespace, os nomes de coluna,
            os tipos de dados e os tamanhos.
          m Selecione a guia Storage (Armazenamento). Especifique 35 no campo%
            Free (% Livre). Clique em Create. Clique em OK.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-39
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.
 5 A solução é a mesma mencionada no Apêndice C.
 6 (a) Elimine a tabela BIG_EMP.

           a     Use o Schema Manager.
           b     Expanda a pasta Tables.
           c     Expanda SYSTEM.
           d     Selecione a tabela BIG_EMP.
           e     Selecione Remove no menu do botão direito do mouse. Clique em Yes para
                 remover a tabela.

      (b) A solução é a mesma mencionada no Apêndice C. Não use o Schema Manager,
      pois ele não copiará os dados para a nova tabela.
 7    A solução é a mesma mencionada no Apêndice C.
 8    A solução é a mesma mencionada no Apêndice C.
 9    A solução é a mesma mencionada no Apêndice C.
10    A solução é a mesma mencionada no Apêndice C.
11    (a) Para a aplicação de entrada de pedidos, é necessário adicionar agora uma tabela
      PRODUCTS, que possui as seguintes colunas:
  Coluna                                       Tipo de Dados e Tamanho
  PROD_CODE                                    NUMBER(6)
  DESCRIPTION                                  VARCHAR2(30)
  PRICE                                        NUMBER(8,2)




.....................................................................................................................................................
D-40                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 11
.....................................................................................................................................................

Crie essa tabela no tablespace DATA02 usando tamanhos de extensão
uniformes de 10 KB.

          a      Use o Schema Manager.
          b      Expanda a pasta Tables.
          c      Selecione SYSTEM.
          d      Selecione Create no menu do botão direito do mouse.
          e      Especifique o nome da tabela, o nome do tablespace, os nomes de coluna,
                 os tipos de dados e os tamanhos na página General.
          f      Especifique tamanhos de extensão de 4 KB e PCTINCREASE=0 na
                 página Storage.
    .




          g Clique em Create.
          h Clique em OK.

        (b) A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-41
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 12
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela
    CUSTOMERS. Que tipos de índice são apropriados para as duas colunas?
    Crie os índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX,
    respectivamente, e coloque-os nos tablespaces apropriados.




.....................................................................................................................................................
D-42                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 12
.....................................................................................................................................................

      Dica: Um índice em árvore B é adequado para uma coluna com vários valores
      distintos e um índice de bitmap é adequado para colunas com apenas alguns
      valores distintos.

          a      Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Schema Manager.
          b      Conecte-se diretamente com um banco de dados na caixa de diálogo
                 de login.
          c      Expanda a pasta Tables.
          d      Expanda SYSTEM. Selecione a tabela CUSTOMERS.
          e      Selecione Create Index On (Criar Índice em) no menu do botão
                 direito do mouse.
          f      Especifique o nome do índice, o nome do tablespace e o nome da coluna
                 na página General.




          g Especifique PCTFREE de 35 na página Storage.
          h Clique em Create. Clique em OK.
          i Repita as etapas de f a j, especificando Bitmap na página General para
            o índice de bitmap.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-43
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.
 5 (a) A solução é a mesma mencionada no Apêndice C.
 6 (b) A solução é a mesma mencionada no Apêndice C.
 7 (c) A solução é a mesma mencionada no Apêndice C.
  Índice                                 Blocos
  NUMB_OE_IDX
  NUMB_NO_IDX

      Dica: Use PCTINCREASE=0 para criar extensões de mesmo tamanho.
      Consulte o Apêndice C para consultar os segmentos.

           a     Use o Schema Manager.
           b     Expanda a pasta Tables.
           c     Expanda SYSTEM.
           d     Selecione NUMBERS.
           e     Selecione Create Index On no menu do botão direito do mouse.
           f     Especifique o nome do índice, o nome do tablespace e o nome da coluna
                 na página General.
           g     Especifique tamanhos de extensão e PCTINCREASE de 0 na
                 página Storage.
           h     Clique em Create.
           i     Repita as etapas de 5 a 8 para o segundo índice.

      (d) Mais uma vez, usando tamanhos de extensão uniformes de 4 KB, crie os
      índices de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN
      e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais
      dos índices.
  Índice                                 Blocos
  NUMB_OE_IDX
  NUMB_NO_IDX




.....................................................................................................................................................
D-44                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 12
.....................................................................................................................................................

      O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos
      dois tipos de índices?
      Dica: É necessário eliminar os índices existentes antes de criar os novos índices.

          a      Use o Schema Manager.
          b      Expanda a pasta Indexes (Índices).
          c      Expanda SYSTEM.
          d      Selecione o índice a ser eliminado.
          e      Selecione Remove no menu do botão direito do mouse. Clique em Yes na
                 caixa de diálogo do Schema Manager.
          f      Expanda a pasta Tables.
          g      Expanda SYSTEM.
          h      Selecione NUMBERS.
          i      Selecione Create Index On no menu do botão direito do mouse.
          j      Especifique o nome do índice, o nome do tablespace, o tipo de índice de
                 bitmap e o nome da coluna na página General.
          k      Especifique tamanhos de extensão e PCTINCREASE de 0 na
                 página Storage.
          l      Clique em Create.
          m      Repita as etapas de 2 a 13 para o segundo índice.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-45
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices.




      De acordo com os resultados, é possível observar que um índice de bitmap é
      compacto para uma coluna de baixa cardinalidade, enquanto um índice em
      árvore B é compacto para uma coluna de alta cardinalidade.




.....................................................................................................................................................
D-46                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 13
.....................................................................................................................................................


Soluções do Exercício 13
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.
 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-47
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida?
      Por que ou por que não?

           a     Use o Schema Manager.
           b     Expanda a pasta Tables.
           c     Expanda SYSTEM.
           d     Selecione PRODUCTS.
           e     Marque Disable (Desativar) em PROD_UK na página
                 Constraints (Restrições).
           f     Clique em Apply.




      Não é possível ativar a restrição porque há linhas que a violam.
 5    A solução é a mesma mencionada no Apêndice C.
 6    A solução é a mesma mencionada no Apêndice C.
 7    A solução é a mesma mencionada no Apêndice C.
 8    A solução é a mesma mencionada no Apêndice C.
 9    A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-48                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 14
.....................................................................................................................................................


Soluções do Exercício 14
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
Use a conta system para todas as perguntas deste laboratório.
 1 A solução é a mesma mencionada no Apêndice C.
 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat. Esses
    são alguns dos arquivos de exemplo do loader padrão fornecidos com o Oracle8i
    Enterprise Edition. Como o usuário system, execute as seguintes etapas para tentar
    duas execuções de carga e se familiarizar com o uso do SQL*Loader:
    (a) A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-49
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo
      de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela DEPT
      para verificar os dados carregados.

           a     Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise
                 Management —> Enterprise Manager Console.
           b     Expanda o seu banco de dados de trabalho.
           c     Expanda a pasta Schema Objects (Objetos de Esquema).
           d     Expanda a pasta Tables.
           e     Expanda SYSTEM.
           f     Selecione DEPT e escolha Data Management (Gerenciamento
                 de Dados) —> Load (Carregar) no menu do botão direito do mouse.
           g     Especifique o nome do arquivo de controle como ulcase1.ctl na página
                 Introductions (Introduções).




           h     Clique em Finish nessa página e clique em OK na página
                 Summary (Resumo).
           i     Use o SQL*Plus Worksheet para consultar a tabela DEPT. Consulte
                 o Apêndice C para obter informações sobre a consulta.




.....................................................................................................................................................
D-50                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 14
.....................................................................................................................................................

      CExecute o SQL*Loader novamente para carregar dados na tabela EMP usando
      o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo
      de dados de entrada para carregar dados. Examine o arquivo de log gerado e
      consulte a tabela EMP para verificar os dados carregados.
      Siga as etapas mostradas em (b), mas use EMP em vez de DEPT e use
      ulcase2.ctl em vez de ulcase1.ctl.
 5 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-51
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 15
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack—> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar.
    Verifique o número e o tamanho das extensões na tabela ITEMS2 depois da
    importação. O que você pode inferir sobre o comportamento de exportar e
    importar no que se refere à alocação de espaço?
    Dica: Para isso, use a exportação no nível da tabela.




.....................................................................................................................................................
D-52                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 15
.....................................................................................................................................................

.




          a      Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise
                 Management —> Enterprise Manager Console.
          b      Expanda o seu banco de dados de trabalho.
          c      Expanda a pasta Schema Objects.
          d      Expanda a pasta Tables.
          e      Expanda SYSTEM.
          f      Selecione ITEMS2 e escolha Data Management —> export (exportar) no
                 menu do botão direito do mouse.
          g      Aceite o nome do arquivo de exportação default EXPDAT.DMP na página
                 Export File (Exportar Arquivo) e clique em Next.
          h      Selecione Table na página Export Type (Tipo de Exportação) e clique
                 em Next.
          i      Verifique se somente a tabela ITEMS2 é mostrada no painel Selected Tables
                 (Tabelas Selecionadas) da página Table Selection (Seleção de Tabelas).




          j      Clique em Finish na página Table Selection e clique em OK na
                 página Summary.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-53
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Elimine a tabela ITEMS2.




.....................................................................................................................................................
D-54                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 15
.....................................................................................................................................................

      Dica: Importe a tabela ITEMS2.

          a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise
            Management —> Enterprise Manager Console.
          b Selecione o seu banco de dados de trabalho e escolha Data
            Management —> Import (Importar) no menu do botão direito do mouse.
          c Aceite o nome do arquivo de exportação default EXPDAT.DMP na
            página Import File (Importar Arquivo), clique em Next e aguarde o job
            ser concluído.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-55
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Verifique o número e o tamanho das extensões na tabela ITEMS2
      usando DBA_SEGMENTS.




   Por default, após a exportação e a importação, a tabela passa a ter uma
   extensão com tamanho igual ao tamanho original do segmento.
 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa
   um índice para mostrar como executar esse procedimento.
   (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna
   ORD_ID da tabela ITEMS2.

           a     Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Schema Manager.
           b     Expanda Tables.
           c     Expanda SYSTEM.
           d     Selecione ITEMS2.
           e     Selecione Object —> Create Index On.
           f     Especifique o nome do índice, o nome do tablespace e o nome da coluna na
                 página General.
           g     Clique em Create.

      (b) Usando os utilitários Importar e Exportar, mova o índice para o
      tablespace INDX01.
      Dica: Execute as etapas a seguir.




.....................................................................................................................................................
D-56                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 15
.....................................................................................................................................................

      Exporte a tabela com índices, mas sem linhas.

          a      Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise
                 Management —> Enterprise Manager Console.
          b      Expanda o seu banco de dados de trabalho.
          c      Expanda a pasta Schema Objects.
          d      Expanda a pasta Tables.
          e      Expanda SYSTEM.
          f      Selecione ITEMS2 e escolha Data Management —> Export no menu do
                 botão direito do mouse.
          g      Aceite o nome do arquivo de exportação default EXPDAT.DMP na página
                 Export File e clique em Next.
          h      Selecione Table na página Export Type e clique em Next.
          i      Verifique se somente a tabela ITEMS2 é mostrada no painel Selected Tables
                 da página Table Selection. Clique em Next.
          j      Selecione somente Indexes on Tables (Índices em Tabelas) na página
                 Associated Objects (Objetos Associados).




          k      Clique em Finish na página Associated Objects e clique em OK na
                 página Summary.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-57
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Elimine o índice.

           a     Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Schema Manager.
           b     Expanda Tables.
           c     Expanda SYSTEM.
           d     Selecione ITEMS2.
           e     Expanda Indexes.
           f     Selecione ITEM_OID_IDX.
           g     Selecione Object —> Remove.
           h     Clique em Yes na caixa de diálogo do Schema Manager.

      Dica: Importe a partir da saída da exportação anterior e formule um
      script para criar o índice.

           a     Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise
                 Management —> Enterprise Manager Console.
           b     Selecione o seu banco de dados de trabalho e escolha Data
                 Management —> Import no menu do botão direito do mouse.
           c     Aceite o nome do arquivo de exportação default EXPDAT.DMP na página
                 Import File e clique em Next.
           d     Clique em <– na página Selections (Seleções) para especificar que é
                 necessário importar todos os itens do arquivo de exportação.
           e     Clique em Next nessa página e nas próximas duas páginas.
           f     Na página Advanced Options (Opções Avançadas), especifique Increment
                 Type (Tipo de Incremento) como none (nenhum), clique em Write Index-
                 Creation command to file (Gravar comandos de criação de índice em um
                 arquivo) e especifique um nome para Index File (Arquivo de Índice).
           g     Clique em Finish nessa página e clique em OK na página Summary.

      Dica: Edite o arquivo de índice criado na etapa anterior de modo a alterar o
      tablespace para INDX0 e execute o script para criar o índice novamente.
      A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-58                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 16
.....................................................................................................................................................


Soluções do Exercício 16
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-59
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 2 Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece?


           a     Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Security Manager.
           b     Expanda a pasta Users (Usuários).
           c     Selecione SCOTT.
           d     Especifique a nova senha na página General.
           e     Clique em Apply.




 3 Certifique-se de que os seguintes itens se apliquem aos usuários aos quais o perfil
      DEFAULT foi atribuído:
      – Depois de duas tentativas de login, a conta deverá ser bloqueada.
      – A senha deverá expirar depois de 30 dias.
      – A mesma senha não deverá ser reutilizada por pelo menos um minuto.
      – A conta deverá ter um período de tolerância de cinco dias para alterar uma
         senha que expirou.
      Certifique-se de que os requisitos concedidos tenham sido implementados.
      Dica
      – Use o comando ALTER PROFILE para alterar os limites de perfil default.
      – Consulte a view de dicionário de dados DBA_PROFILES para verificar
         o resultado.




.....................................................................................................................................................
D-60                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 16
.....................................................................................................................................................



          a      Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Security Manager.
          b      Expanda a pasta Profiles (Perfis).
          c      Selecione o perfil DEFAULT.
          d      Selecione a guia Password (Senha).
          e      Informe os novos limites e clique em Apply




 4 A solução é a mesma mencionada no Apêndice C.
 5 Verifique se é possível estabelecer conexão como SYSTEM novamente.
      Dica: Execute o comando ALTER USER para desbloquear a conta SYSTEM.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-61
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................



           a Use o Security Manager.
           b Expanda Users.
           c Selecione SYSTEM.
           d Selecione Unlock (Desbloquear) no menu do botão direito do mouse.




 6 Desative verificações de senha para o perfil DEFAULT.




.....................................................................................................................................................
D-62                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 16
.....................................................................................................................................................

      Dica: Execute o comando ALTER PROFILE para desativar as verificações
      de senha.

          a Use o Security Manager.
          b Expanda Profiles.
          c Selecione DEFAULT.
          d Especifique NULL para Complexity function (função Complexidade)
            e UNLIMITED para todos os outros valores na página Password.




          e      Clique em Apply.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-63
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 17
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que os objetos
    e os segmentos temporários criados por Bob não sejam criados no tablespace
    SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de
    até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando
    o Oracle Enterprise Manager, execute o script bob.sql.




.....................................................................................................................................................
D-64                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 17
.....................................................................................................................................................

      Dica: Verifique se o tablespace temporário está atribuído.

          a Selecione Programs —> Oracle - EMV2 Home —> DBA Management
            Pack —> Security Manager.
          b Selecione a pasta Users e escolha Create no menu do botão
            direito do mouse.
          c Especifique o nome de usuário, a senha, o tablespace default e
            o tablespace temporário na página General.




          d Especifique cotas nos tablespaces na página Quotas (Cotas)
            selecionando o tablespace na lista de rolagem, clicando no
            botão Value (Valor) e definindo o valor.
          e Clique em Create.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-65
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 2 (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que os objetos
      e os segmentos de classificação criados por Kay não sejam criados no
      tablespace SYSTEM.

           a Use o Security Manager.
           b Selecione User —> Create.
           c Especifique o nome de usuário, a senha, o tablespace default e o tablespace
             temporário na página General.
           d Clique em Create.

      (b) Como o usuário SYSTEM, copie a tabela ORDERS2 no esquema SYSTEM
      para a conta de Kay. Nomeie a nova tabela como ORDERS.
      Dica: Kay precisa de uma cota no seu tablespace default para que
      objetos possam ser criados no seu esquema.

           a     Use o Security Manager.
           b     Expanda Users.
           c     Selecione KAY.
           d     Especifique uma cota UNLIMITED em DATA01 na página Quotas.
           e     Clique em Apply.




 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-66                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 17
.....................................................................................................................................................

 5 (a) Como o usuário Bob, altere seu tablespace temporário. O que acontece?
      Por quê?

          a Use o Security Manager.
          b Selecione o seu banco de dados de trabalho e escolha Change Database
            Connection (Alterar Conexão de Banco de Dados) no menu do botão
            direito do mouse.




          c      Informe o nome de usuário bob, a senha along e o nome de serviço db01.




      (b) A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-67
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 6 Como system, remova a cota de Bob no seu tablespace default.

           a Use o Security Manager.
           b Expanda a pasta Users.
           c Selecione BOB.
           d Especifique uma cota de 0 em DATA01 na página Quotas.




           e     Clique em Apply.

 7 Remova a conta de Kay do banco de dados.




.....................................................................................................................................................
D-68                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 17
.....................................................................................................................................................

      Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE.

          a Use o Security Manager.
          b Expanda a pasta Users.
          c Selecione KAY.
          d Selecione Remove no menu do botão direito do mouse.




          e      Clique em Yes na caixa de diálogo do Security Manager.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-69
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 8 Bob esqueceu a sua senha. Atribua ao mesmo uma senha de OLINK e exija que ele
      altere a senha na próxima vez que estabelecer logon.

           a Use o Security Manager.
           b Expanda a pasta Users.
           c Selecione BOB.
           d Selecione Expire Password Now (Expirar Senha Agora) e informe a nova
             senha na página General.




           e     Clique em Apply.




.....................................................................................................................................................
D-70                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 18
.....................................................................................................................................................


Soluções do Exercício 18
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 Como system, crie o usuário Kay, conceda a ele a capacidade de estabelecer logon
    no banco de dados e criar objetos no seu esquema.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-71
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

      Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE.

           a     Selecione Programs —> Oracle - EMV2 Home —> DBA Management
                 Pack —> Security Manager.
           b     Selecione a pasta Users e escolha Create no menu do botão
                 direito do mouse.
           c     Especifique o nome de usuário, a senha, o tablespace default e o tablespace
                 temporário na página General.
           d     Especifique uma cota de 1MB em DATA01 na página Quotas.
           e     Selecione System Privileges (Privilégios do Sistema) para escolher o Tipo
                 de Privilégio e conceda o privilégio CREATE TABLE na página Roles/
                 Privileges (Atribuições/Privilégios).




           f     Clique em Create. Clique em OK.

 2 (a) A solução é a mesma mencionada no Apêndice C.
      (b) A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-72                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 18
.....................................................................................................................................................

      (c) Como system, conceda a Bob a capacidade de fazer seleções na tabela EMP
      de Kay. O que acontece e por quê?

          a      Use o Security Manager.
          b      Expanda a pasta Users.
          c      Selecione o usuário BOB.
          d      Na página Object Privileges (Privilégios de Objeto), expanda KAY,
                 expanda TABLES e selecione EMP.
          e      Escolha SELECT em Available Privileges (Privilégios Disponíveis)
                 e pressione a tecla de seta para baixo.




          f      Clique em Apply.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-73
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

   SYSTEM pode consultar a tabela de Kay usando o privilégio SELECT
   ANY TABLE, mas somente Kay ou qualquer outro usuário que recebeu o
   privilégio de Kay com GRANT OPTION pode conceder esse privilégio a
   outras pessoas.
 3 A solução é a mesma mencionada no Apêndice C.
 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados.

           a Use o Security Manager.
           b Selecione a pasta Users e escolha Create no menu do botão
             direito do mouse.
           c Especifique o nome de usuário, a senha, o tablespace default e o tablespace
             temporário na página General.
           d Clique em Create.

 5 A solução é a mesma mencionada no Apêndice C.
 6 (a) Permita a Kay criar tabelas em qualquer esquema. Como Kay, crie a tabela
      DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e
      por quê?

           a     Use o Security Manager.
           b     Expanda a pasta Users.
           c     Selecione KAY.
           d     Na página Roles/Privileges, atribua o privilégio CREATE ANY TABLE.
           e     Clique em Apply.




.....................................................................................................................................................
D-74                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 18
.....................................................................................................................................................

   A cota de Bob em seu tablespace default foi removida no
   Exercício 17, pergunta 6.
   (b) A solução é a mesma mencionada no Apêndice C.
 7 Conceda a Kay a capacidade de inicializar e desativar o banco de dados sem
   a capacidade de criar um novo banco de dados e verifique os resultados.
   Dica: Conceda a Kay o privilégio SYSOPER.

          a      Use o Security Manager (conectado como SYSDBA).
          b      Expanda a pasta Users.
          c      Selecione KAY.
          d      Na página Roles/Privileges, atribua o privilégio SYSOPER.
          e      Clique em Apply.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-75
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 19
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.




.....................................................................................................................................................
D-76                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 19
.....................................................................................................................................................

 1 Examine a view de dicionário de dados e liste os privilégios do sistema da
      atribuição RESOURCE.
      Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS.

          a Selecione Programs —> Oracle - EMV2 Home —> DBA Management
            Pack —> Security Manager.
          b Expanda a pasta Roles (Atribuições).
          c Expanda RESOURCE.
          d Expand System Privileges Granted (Privilégios do Sistema Concedidos).




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-77
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................

 2 Crie uma atribuição chamada DEV que permite a um usuário criar uma tabela,
      criar uma view e fazer seleções na tabela EMP de Kay.

           a Use o Security Manager.
           b Selecione a pasta Roles e escolha Create no menu do botão
             direito do mouse.
           c Especifique o nome na página General.




           d Atribua CREATE TABLE, CREATE VIEW na página Roles/Privileges.
           e Clique em Create.
           f Consulte o Apêndice C de modo a obter informações sobre o uso do
             SQL*Plus Worksheet para concluir este exercício.




.....................................................................................................................................................
D-78                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
Soluções do Exercício 19
.....................................................................................................................................................

 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente
      que a atribuição RESOURCE seja ativada automaticamente quando ele
      estabelecer logon.
      Dica: Use o comando ALTER USER para especificar a atribuição default.

          a      Use o Security Manager.
          b      Expanda a pasta Users.
          c      Selecione BOB.
          d      Na página Roles/Privileges, designe as atribuições DEV e RESOURCE.
          e      Em Granted (Concedidos) na mesma página, desmarque Default em DEV.
          f      Clique em Apply.

      (b) Conceda a Bob a capacidade de ler todas as informações de dicionário
      de dados.
      Dica: Atribua SELECT_CATALOG_ROLE a Bob.

          a      Use o Security Manager.
          b      Expanda Users.
          c      Selecione BOB.
          d      Na página Roles/Privileges, designe a atribuição
                 SELECT_CATALOG_ROLE, mas não a torne uma atribuição default.
          e      Clique em Apply.

 4 A solução é a mesma mencionada no Apêndice C.
 5 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                        D-79
Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager
.....................................................................................................................................................


Soluções do Exercício 20
Etapa Um
(N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management
Pack —> SQL Plus Worksheet.




Etapa Dois
Certifique-se de estabelecer conexão diretamente com um banco de dados.
Informe o nome de usuário system, a senha manager, o nome de serviço do
seu banco de dados de trabalho e clique em OK.
 1 A solução é a mesma mencionada no Apêndice C.
 2 A solução é a mesma mencionada no Apêndice C.
 3 A solução é a mesma mencionada no Apêndice C.
 4 A solução é a mesma mencionada no Apêndice C.




.....................................................................................................................................................
D-80                                                         Enterprise DBA Parte 1A: Administração e Arquitetura
E
              ................................




  Teste de Certificação:
Exemplos de Perguntas
Apêndice E: Teste de Certificação: Exemplos de Perguntas
.....................................................................................................................................................


Programa Oracle Certified Professional (OCP):
Oracle Certified Database Administrator Track
O Programa OCP foi desenvolvido pela Oracle para reconhecer profissionais técnicos
que demonstrem profundo conhecimento e prática necessários para oferecer total
suporte aos principais produtos da Oracle, de acordo com um padrão de excelência
estabelecido pela Oracle.

Desempenho com Base em Credenciais
Para tornar-se um Administrador de Banco de Dados Certificado Oracle, é preciso
passar em quatro testes separados. Cada teste exigirá a aplicação de conhecimentos
específicos obtidos durante o treinamento Oracle, e também experiência adquirida
no trabalho.
Trabalhando em um computador sem outros recursos, você terá até 1,5 hora para
responder de 60 a 70 perguntas de múltipla escolha em cada prova. Como não há
meios de você memorizar o que é preciso saber, somente os que possuem prática
comprovada conseguirão passar no teste.
Não é obrigatório fazer os cursos do departamento Oracle Education antes de concluir
os testes de certificação para a sua função. No entanto, esse curso é uma importante
preparação para o teste 2: Administração de Banco de Dados Oracle.

Você Está Pronto?
As perguntas do teste abaixo são semelhantes as do:
• Teste 2: Administração de Banco de Dados Oracle
• Teste 3: Backup e Recuperação do Oracle
As respostas encontram-se no fim deste apêndice.




.....................................................................................................................................................
E-2                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Administração de Banco de Dados Oracle: Exemplo e Teste
.....................................................................................................................................................


Administração de Banco de Dados Oracle:
Exemplo e Teste
 1 O banco de dados possui dois grupos de redo logs e cada grupo possui dois
   membros. Cada membro do grupo de redo logs on-line não-atual está corrompido.
   Como você pode reinicializar esses arquivos para começar a usá-los novamente?
   a Emita o comando ALTER DATABASE para limpar os arquivos corrompidos.
   b Emita o comando ALTER DATABASE para eliminar cada membro do sistema
       operacional e, em seguida, criá-los novamente.
   c Crie um terceiro grupo para poder eliminar o grupo corrompido.
   d O arquivo deve ser deletado no nível do sistema operacional e criado
       novamente com o mesmo nome.
 2 É preciso alocar mais espaço para o tablespace USERS, mas o disco que contém os
   arquivos de dados está cheio. Você deseja colocar o tablespace off-line para que os
   arquivos associados possam ser movidos para outro disco. Os arquivos de dados
   não possuem erros e você precisa certificar-se de que ocorrerá um checkpoint
   quando o tablespace ficar off-line. No momento, diversos usuários possuem
   transações pendentes para o tablespace USERS. Que modo você deve usar para
   colocar o tablespace off-line?
   a IMMEDIATE (Imediato)
   b NORMAL
   c TEMPORARY (Temporário)
 3 Você criou uma tabela e inseriu dados sem restrições ativadas. Você precisa ativar
   as restrições de tabela para garantir que nenhum dado inserido viole as restrições.
   Você sabe que a tabela já contém dados que violam as restrições, mas não pode
   atualizar esses dados agora. Que estado seria mais apropriado para as restrições
   de integridade?
   a Disabled (Desativado)
   b NOVALIDATE Ativado
   c VALIDATE Ativado
   d Você não pode adicionar uma restrição a uma tabela que contenha dados que
       violam a restrição.
   e Uma restrição não pode ser ativada se for aplicada apenas a novas transações.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          E-3
Apêndice E: Teste de Certificação: Exemplos de Perguntas
.....................................................................................................................................................

 4 No momento, todos os usuários de bancos de dados são autenticados pelo servidor
   Oracle. Você deseja garantir que todos os usuários usem uma senha que contenha
   três caracteres seguidos de três números. Como configurar o servidor para
   restringir o formato de todas as senhas de usuários?
   a Você pode criar um perfil que restrinja o formato de senha e atribuí-lo a cada
       usuário.
   b Você deve alterar o parâmetro PASSWORD em init.ora para ativar o
       mecanismo de controle de senha.
   c Você deve ativar o mecanismo de controle de senha quando o usuário é criado.
   d Não é possível controlar o formato da senha de um usuário.
 5 Na sua sessão atual, o parâmetro NLS_LANG está definido como
   GERMAN_GERMANY.WE8ISO8859P1. Você usará o SQL*Loader para
   exportar e importar diversas tabelas. Você deseja converter os dados e importá-los
   para um banco de dados com outro conjunto de caracteres. Como executar essa
   tarefa?
   a Defina o parâmetro NLS_LANG para a exportação.
   b Desative a instância e reinicie-a usando o conjunto de caracteres desejado
       antes de exportar os dados.
   c Os dados não podem ser convertidos.
   d Defina o parâmetro NLS_LANG para a importação.
 6 Você está determinando o número de segmentos de rollback necessários para o
   ambiente OLTP. Todas as transações serão rápidas e você estimou que haverá pelo
   menos 16 transações simultâneas durante a utilização normal. Qual é o número
   recomendado de segmentos de rollback para esse ambiente?
   a 1
   b 2
   c 4
   d 8




.....................................................................................................................................................
E-4                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exemplo de Teste de Backup e Recuperação do Oracle
.....................................................................................................................................................


Exemplo de Teste de Backup e Recuperação do Oracle
 1 Você está criando um novo banco de dados Oracle8 e usará o Recovery Manager.
   Que estrutura de memória você deve criar explicitamente para usar com o
   Recovery Manager?
   a Buffer de log
   b Pool compartilhado
   c Cache de buffer de dados
   d Pool grande
 2 O administrador do sistema avisou que ele alocou duas novas unidades de disco
   para o banco de dados PROD. O banco de dados está sendo arquivado, mas você
   está preocupado com a freqüência recente de falhas de mídia. Agora que você
   possui recursos de disco adicionais, qual parâmetro init.ora você pode definir para
   oferecer proteção extra contra a perda de arquivos de log arquivados devido a
   falhas de mídia?
   a LOG_ARCHIVE_MIN_SUCCEED_DEST
   b LOG_ARCHIVE_FORMAT
   c LOG_ARCHIVE_DUPLEX_DEST
   d LOG_ARCHIVE_DEST
 3 Você é responsável por um banco de dados híbrido que contém grandes
   tablespaces, que são atualizados com pouca freqüência e usados apenas para
   geração de relatórios. Esse banco de dados também inclui tablespaces que contêm
   tabelas que fazem uso intenso da DML. Por que você deve considerar usar o
   Recovery Manager para manter as operações de backup e restauração para esse
   banco de dados?
   a Backups incrementais em nível de bloco podem ser executados, reduzindo o
       tempo de backup e recuperação.
   b Por default, os backups não serão executados para grandes tablespaces, o que
       reduz o tempo de backup.
   c As operações de restauração serão mais rápidas, porque os grandes tablespaces
       não precisarão ser recuperados.
   d Os backups on-line em nível de tabela podem ser executados, reduzindo o
       tempo de recuperação.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          E-5
Apêndice E: Teste de Certificação: Exemplos de Perguntas
.....................................................................................................................................................

 4 Você está mantendo um catálogo de recuperação para o banco de dados PROD e
   em geral atualiza o conteúdo do catálogo toda sexta-feira à tarde. No entanto, a
   equipe de desenvolvimento criou um novo tablespace no início da semana. Para
   executar uma recuperação completa usando o Recovery Manager, o que você
   precisa fazer agora para atualizar o catálogo de recuperação para que ele reflita as
   alterações efetuadas no banco de dados?
   a Atualizar o catálogo de recuperação emitindo o comando
       REGISTER DATABASE.
   b Atualizar o catálogo de recuperação emitindo o comando
       RESYNC CATALOG.
   c Não há necessidade de qualquer ação; o catálogo de recuperação será
       atualizado automaticamente pelo Oracle8 quando a estrutura do banco de
       dados for alterada.
   d Atualizar o catálogo de recuperação emitindo o comando CATALOG
       DATAFILECOPY <name> TAG = <string> para o novo arquivo de dados
       associado ao novo tablespace.
   e Atualizar o catálogo de recuperação emitindo o comando
       RESET DATABASE.
 5 Você decidiu usar o Recovery Manager para manter as operações de backup e
   restauração para o banco de dados PROD, que contém muitos arquivos de dados
   cujo tamanho é grande. Cite um dos benefícios de usar o Recovery Manager com
   esse banco de dados.
   a Imagens espelhadas de todos os arquivos de dados serão incluídas
       automaticamente no conjunto de backup.
   b Conjuntos de backup serão gravados diretamente na fita.
   c Conjuntos de backup serão compactados não incluindo os blocos vazios nos
       arquivos de dados.
   d Conjuntos de backup não incluirão arquivos de banco de dados não-essenciais.




.....................................................................................................................................................
E-6                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Exemplo de Teste de Backup e Recuperação do Oracle
.....................................................................................................................................................

 6 Você está executando um backup on-line do banco de dados PROD e ocorre
   uma falha de energia. Depois que o banco de dados é montado, você consulta
   V$BACKUP e determina que, dos cinco arquivos de dados para os quais está
   sendo efetuado o backup, o segundo ficou no modo de backup automático. Que
   ação deve ser executada para sincronizar os arquivos de dados para que você possa
   abrir o banco de dados para os usuários?
   a Coloque o tablespace que contém o arquivo de dados como off-line emitindo o
       comando ALTER TABLESPACE <name> OFFLINE.
   b Descongele o cabeçalho do Arquivo 2 emitindo o comando ALTER
       DATABASE DATAFILE 3 END BACKUP.
   c Desative o banco de dados e restaure-o a partir do backup off-line completo
       anterior.
   d Desative o banco de dados, reinicie-o e emita o comando RECOVER
       DATAFILE para recuperar o segundo arquivo de dados.
   e Determine o tablespace que contém o segundo arquivo e descongele o
       cabeçalho emitindo o comando ALTER TABLESPACE <name> END
       BACKUP.
 7 O banco de dados PROD está "inativo" e você tenta solucionar o problema.
   Após investigação, você percebe que o grupo de redo logs atual está corrompido.
   O que você pode fazer para tornar o banco de dados operacional?
   a Desativar o banco de dados, recriar o grupo de redo logs e inicializar o banco
       de dados.
   b Limpar o arquivo de log atual emitindo o comando ALTER DATABASE
       CLEAR UNARCHIVED LOGFILE GROUP #.
   c Desativar o banco de dados com o comando SHUTDOWN ABORT e, em
       seguida, reiniciá-lo.
   d Deletar o arquivo de log atual e emitir o comando RECOVER DATABASE
       UNTIL CANCEL, recuperando o banco de dados para o último arquivo de
       log arquivado.




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          E-7
Apêndice E: Teste de Certificação: Exemplos de Perguntas
.....................................................................................................................................................


Respostas
Administração de Banco de Dados Oracle: Exemplo de Teste
 1 A
 2 B
 3 B
 4 A
 5 D
 6 C

Exemplo de Teste de Backup e Recuperação do Oracle
 1 D
 2 C
 3 A
 4 B
 5 C
 6 B
 7 B




.....................................................................................................................................................
E-8                                                          Enterprise DBA Parte 1A: Administração e Arquitetura
Inscrevendo-se em um Teste OCP
.....................................................................................................................................................


Inscrevendo-se em um Teste OCP
Os testes do Programa OCP são oferecidos nos Authorized Prometric Testing Centers
em todo o mundo. Entre em contato com o Sylvan Prometric Regional Service Center
de seu país para informar-se sobre qual Authorized Prometric Testing Center é mais
conveniente para você e inscreva-se em um teste no controle de certificação
apropriado.
• Sylvan Sydney, Australia Regional Service Center +61.2.9414.3666
• Sylvan Paris, France Regional Service Center +33.1.4289.3122
• Sylvan Düsseldorf, Germany Regional Service Center +49.2159.9233.50
• Sylvan London, England Regional Service Center +44.181.607.9090
• Sylvan Latin America Regional Service Center +1.612.820.5200
• Sylvan North America Regional Service Center +1.800.891.3926
Para obter informações mais detalhadas sobre vagas relacionadas a funções OCP, entre
em contato com o representante Oracle Education local.
• Telefone das Centrais das Américas +1.650.506.7000
• Telefone das Centrais da Ásia/Pacífico/Índia +65.337.3797
• Telefone das Centrais da Europa/Oriente Médio/África +31.30.669.9000
• Telefone das Centrais do Japão +81.3.5213.6666




.....................................................................................................................................................
Enterprise DBA Parte 1A: Administração e Arquitetura                                                                                          E-9
Apêndice E: Teste de Certificação: Exemplos de Perguntas
.....................................................................................................................................................




.....................................................................................................................................................
E-10                                                         Enterprise DBA Parte 1A: Administração e Arquitetura

9i fundamentos adm_banco_de_dados_ii

  • 1.
    Enterprise DBA Parte1A: Administração e Arquitetura Volume 2 • Guia do Aluno ....................................................................................... 30049BP10 Produção 1.0 Junho de 2000 M09006-BP
  • 2.
    Autores Copyright © Oracle Corporation, 1999. Todos os direitos reservados. Todos os direitos reservados e de titularidade da Oracle Corporation, inclusive aqueles Bruce Ernst referentes à tradução para o idioma português – Brasil. Hanne Rue Rasmussen Esta documentação contém informações de propriedade da Oracle Corporation. Ulrike Schwinn É fornecida sob um contrato de licença que contém restrições sobre seu uso e Vijay Venkatachalam sua divulgação, sendo também protegida pela legislação de direitos autorais. Não é permitida a engenharia reversa dos programas de computador. Se esta documentação for entregue/distribuída a uma Agência do Departamento de Colaboradores Defesa do Governo dos Estados Unidos da América do Norte, será então Técnicos e Revisores entregue/distribuída com Direitos Restritos e a seguinte legenda será aplicável: David Austin Ben van Balen Legenda de Direitos Restritos O uso, duplicação ou divulgação por aquele Governo estão sujeitos às restrições Gerry Batista aplicáveis aos programas comerciais de computadores e serão considerados Doug Bridges como programas de computador com Direitos Restritos de acordo com a Sandra Cheevers legislação federal daquele Governo, conforme descrito no subparágrafo da legislação norte-americana (c) (1) (ii) de DFARS 252.227-7013, Direitos sobre Ralf Durben Dados Técnicos e Programas de Computador (outubro de 1988). Ari Fyhr Proibida a reprodução total ou parcial desta documentação sem a expressa Joel Goodman autorização prévia por escrito da Oracle Corporation ou da Oracle do Brasil Scott Gossett Sistemas Ltda. A cópia deste material, de qualquer forma ou por qualquer meio, eletrônico, mecânico ou de outra natureza, inclusive através de processos Lex de Haan xerográficos, de fotocópia e de gravação, constitui violação da legislação de Tony Holbrook direitos autorais e será punida civil e-ou criminalmente na forma da lei. Heike Hundt Se esta documentação for entregue/distribuída a uma Agência do Governos dos Christine Jeal Estados Unidos da América do Norte que não esteja subordinada ao Departamento de Defesa, será então entregue/distribuída com "Direitos Dominique Jeunot Restritos" conforme definido no FAR 52.227-14, Direitos sobre Dados - Geral, Thomas Kerepes inclusive a Alternativa III (junho de 1987). Steven King As informações contidas neste documento estão sujeitas a alterações sem aviso Pierre Labrousse prévio. Se você encontrar algum problema na documentação, envie a Products Education - Oracle Corporation ou a Education - Oracle do Brasil Sistemas Ltda. Dean Margolese uma descrição de tal problema por escrito. Education Products, Oracle Jean-Marie Misztela Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065. Tigger Newman Distribuidor no Brasil: Oracle do Brasil Sistemas Ltda. Rua José Guerra, 127, São Paulo, SP - 04719-030 Brasil CGC: 59.456.277/0001-76. A Oracle Corporation e Howard Ostrow a Oracle do Brasil Sistemas Ltda. não garantem que este documento esteja Hans Proetzl isento de erros. Gary Purcell SQL*Loader, SQL*Net, SQL*Plus, Net8, Oracle Call Interface, Oracle7, Oracle8, Shankar Raman Oracle8i, Developer/2000, Developer/2000 Forms, Designer/2000, Oracle Enterprise Manager, Oracle Parallel Server, PL/SQL, Pro*C, Pro*C/C++ e Donalyn Selinsky Trusted Oracle são marcas comerciais ou marcas comerciais registradas da Roger Simon Oracle Corporation. James Spiller Todos os outros nomes de produtos ou de empresas aqui mencionados o são Ramonito Te apenas para fins de identificação e podem ser marcas comerciais registradas de seus respectivos proprietários. Sabine Teuber Jean-Francois Verrier Norbert Wittje Editor Sherry Polm
  • 3.
    Sumário ..................................................................................................................................................... Sumário Prefácio Perfil xvii Informações Relacionadas xix Convenções Tipográficas xx Introdução Objetivos I-2 Oracle8i Enterprise Edition I-3 Tarefas do Administrador de Banco de Dados I-5 Programa do Curso I-6 Lição 1: Componentes Arquitetônicos do Oracle Objetivos 1-2 Visão Geral 1-3 Arquivos de Bancos de Dados Oracle 1-5 Outros Arquivos Importantes 1-7 Instância Oracle 1-8 Processando uma Instrução SQL 1-10 Estabelecendo Conexão com um Banco de Dados 1-11 Processando uma Consulta 1-13 O Pool Compartilhado 1-15 Cache de Buffer do Banco de Dados 1-17 Área Global do Programa 1-18 Processando uma Instrução DML 1-20 Buffer de Redo Log 1-22 Segmento de Rollback 1-23 Processamento de COMMIT 1-24 Log Writer 1-26 Outros Processos de Instância 1-27 Database Writer 1-28 SMON: Monitor de Sistema 1-29 PMON: Monitor de Processo 1-31 Arquivamento 1-32 Sumário 1-34 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura iii
  • 4.
    Sumário ..................................................................................................................................................... Lição 2: ConceitosBásicos do Oracle Server Objetivos 2-2 Visão Geral 2-3 Oracle Universal Installer 2-4 Validando Usuários Privilegiados 2-8 Oracle Enterprise Manager 2-15 Sumário 2-30 Lição 3: Gerenciando uma Instância Oracle Objetivos 3-2 Visão Geral 3-3 Estágios da Inicialização e da Desativação 3-10 Inicializando a Instância 3-13 Alterando a Disponibilidade do Banco de Dados 3-16 Abrindo um Banco de Dados no Modo Somente Para Leitura 3-17 Desativando 3-18 Obtendo e Definindo Valores de Parâmetro 3-22 Gerenciando Sessões 3-29 Sumário 3-36 Lição 4: Criando um Banco de Dados Objetivos 4-2 Visão Geral 4-3 Preparando o Sistema Operacional 4-4 Criando um Banco de Dados 4-10 Usando o Assistente de Configuração de Banco de Dados 4-11 Criando um Banco de Dados Manualmente 4-15 Sumário 4-29 Lição 5: Criando Views de Dicionário de Dados e Pacotes Padrão Objetivos 5-2 Visão Geral 5-3 Visão Geral do Dicionário de Dados 5-4 Conteúdo do Dicionário de Dados 5-5 ..................................................................................................................................................... iv Enterprise DBA Parte 1A: Administração e Arquitetura
  • 5.
    Sumário ..................................................................................................................................................... Tabelas-Base e Views de Dicionário de Dados 5-6 Como Usar o Dicionário de Dados 5-7 Categorias de View de Dicionário de Dados 5-8 Exemplos de Dicionário de Dados 5-10 Views de Desempenho Dinâmicas 5-11 Unidades de Programa Armazenado 5-12 Unidades de Programa PL/SQL Armazenado 5-14 Pacotes 5-16 Executando uma Unidade de Programa PL/SQL 5-17 Especificação e Corpo do Pacote 5-18 Pacotes Fornecidos pela Oracle 5-19 Obtendo Informações 5-20 Solucionando Problemas 5-22 Construindo o Dicionário de Dados 5-23 Scripts Administrativos 5-25 Exemplo de Pacote Interno 5-27 Gatilhos 5-29 Partes de um Gatilho 5-31 Exemplo de Gatilho 5-33 Sumário 5-34 Lição 6: Mantendo o Arquivo de Controle Objetivos 6-2 O Uso do Arquivo de Controle 6-3 Conteúdo do Arquivo de Controle 6-4 Multiplexando o Arquivo de Controle 6-6 Diretrizes Para Arquivos de Controle 6-8 Obtendo Informações Sobre o Arquivo de Controle 6-10 Sumário 6-12 Lição 7: Mantendo Arquivos de Redo Log Objetivos 7-2 Visão Geral 7-3 Usando Arquivos de Redo On-line 7-4 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura v
  • 6.
    Sumário ..................................................................................................................................................... LGWR, Alternâncias de Log e Checkpoints 7-6 Arquivando Arquivos de Redo Log 7-8 Obtendo Informações Sobre Archive e Log 7-11 Controlando Alternâncias de Log e Checkpoints 7-18 Multiplexando e Mantendo Membros e Grupos 7-21 Realocando ou Renomeando Arquivos de Redo Log On-line 7-24 Eliminando Membros e Grupos de Redo Logs On-line 7-26 Planejando Redo Logs On-line 7-30 Solucionando Problemas 7-32 Usando LogMiner 7-33 Sumário 7-40 Lição 8: Gerenciando Tablespaces e Arquivos de Dados Objetivos 8-2 Visão Geral 8-3 Hierarquia de Armazenamento de Banco de Dados 8-4 Tablespaces SYSTEM e Não-SYSTEM 8-7 Criando Tablespaces 8-8 Gerenciamento de Espaço em Tablespaces 8-12 Tablespaces Gerenciados Localmente 8-13 Tablespace Temporário 8-15 Alterando Definições de Armazenamento 8-18 Obtendo Tablespaces Off-line ou On-line 8-20 Tablespaces Somente Para Leitura 8-23 Eliminando Tablespaces 8-26 Redimensionando um Tablespace 8-29 Ativando Redimensionamento Automático dos Arquivos de Dados 8-30 Redimensionando Arquivos de Dados Manualmente 8-33 Adicionando Arquivos de Dados a um Tablespace 8-34 Movendo Arquivos de Dados 8-36 Informações de Dicionário de Dados 8-39 Diretrizes 8-40 Sumário 8-42 ..................................................................................................................................................... vi Enterprise DBA Parte 1A: Administração e Arquitetura
  • 7.
    Sumário ..................................................................................................................................................... Lição 9: Estruturade Armazenamento e Relacionamentos Objetivos 9-2 Visão Geral 9-3 Tipos de Segmentos 9-4 Precedência da Cláusula de Armazenamento 9-8 Alocação e Desalocação de Extensões 9-9 Extensões Livres e Usadas 9-10 Usando Parâmetros de Utilização de Espaço em Bloco 9-11 Obtendo Informações sobre Estruturas de Armazenamento 9-16 Consultando DBA_SEGMENTS 9-17 Consultando DBA_EXTENTS 9-18 Consultando DBA_FREE_SPACE 9-19 Planejando a Localização dos Segmentos 9-20 Sumário 9-22 Lição 10: Gerenciando Segmentos de Rollback Objetivos 10-2 Visão Geral 10-3 Segmentos de Rollback 10-4 Usando Segmentos de Rollback com Transações 10-8 Criando Segmentos de Rollback 10-12 Mantendo Segmentos de Rollback 10-18 Obtendo Informações Sobre Segmentos de Rollback 10-26 Planejando Segmentos de Rollback 10-32 Solucionando Problemas de Segmento de Rollback 10-34 Sumário 10-40 Lição 11: Gerenciando Tabelas Objetivos 11-2 Visão Geral 11-3 Tipos de Dados Oracle 11-7 Criando uma Tabela 11-17 Controlando o Espaço Usado pelas Tabelas 11-25 Recuperando Informações da Tabela 11-41 Sumário 11-46 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura vii
  • 8.
    Sumário ..................................................................................................................................................... Lição 12: GerenciandoÍndices Objetivos 12-2 Visão Geral 12-3 Criando Índices 12-12 Reorganizando Índices 12-22 Eliminando Índices 12-29 Obtendo Informações de Índice 12-31 Sumário 12-33 Lição 13: Mantendo a Integridade dos Dados Objetivos 13-2 Visão Geral 13-3 Restrições de Integridade 13-5 Implementando Restrições 13-14 Mantendo Restrições 13-18 Obtendo Informações de Restrição 13-24 Sumário 13-27 Lição 14: Carregando Dados Objetivos 14-2 Visão Geral 14-3 Carregando Dados Usando Inserção de Carga Direta 14-4 Carregando Dados Usando o SQL*Loader 14-7 Carga de Caminho Direto 14-27 Sumário 14-28 Lição 15: Reorganizando Dados Objetivos 15-2 Visão Geral 15-3 Tablespaces Transportáveis 15-24 Transportando um Tablespace 15-26 Exportando e Importando Metadados 15-27 Transportando um Tablespace 15-29 Usos do Tablespace Transportável 15-30 ..................................................................................................................................................... viii Enterprise DBA Parte 1A: Administração e Arquitetura
  • 9.
    Sumário ..................................................................................................................................................... Tablespaces Transportáveis e Objetos de Esquema 15-31 Verificando o Conjunto de Transporte 15-32 Sumário 15-33 Lição 16: Gerenciando Recursos e Segurança de Senha Objetivos 16-2 Visão Geral 16-3 Administrando Senhas 16-5 Alterando e Eliminando um Perfil 16-19 Controlando o Uso dos Recursos 16-23 Exibindo Informações de Senha e Limites de Recurso 16-30 Sumário 16-32 Lição 17: Gerenciando Usuários Objetivos 17-2 Visão Geral 17-3 Criando Novos Usuários de Banco de Dados 17-6 Alterando e Eliminando Usuários de Banco de Dados 17-14 Eliminando Usuários 17-16 Monitorando Informações Sobre Usuários 17-17 Sumário 17-19 Lição 18: Gerenciando Privilégios Objetivos 18-2 Visão Geral 18-3 Privilégios de Sistema 18-4 Concedendo Privilégios de Sistema 18-6 Autenticação do Arquivo de Senhas 18-9 Exibindo Privilégios de Sistema 18-11 Revogando Privilégios de Sistema 18-14 Privilégios de Objeto 18-17 Concedendo Privilégios de Objeto 18-18 Exibindo Privilégios de Objeto 18-20 Revogando Privilégios de Objeto 18-21 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura ix
  • 10.
    Sumário ..................................................................................................................................................... Diretrizes de Auditoria 18-25 Usando a Auditoria de Banco de Dados 18-29 Exibindo Resultados de Auditoria 18-36 Sumário 18-37 Lição 19: Gerenciando Atribuições Objetivos 19-2 Visão Geral 19-3 Criando e Modificando Atribuições 19-5 Designando Atribuições 19-11 Controlando a Disponibilidade das Atribuições 19-14 Exibindo Informações sobre Atribuições 19-23 Usando Controle de Acesso Detalhado 19-24 Sumário 19-26 Lição 20: Usando Suporte a Idioma Nacional (National Language Support - NLS) Objetivos 20-2 Visão Geral 20-3 Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais 20-5 Especificando o Comportamento Dependente do Idioma 20-11 Parâmetros NLS e Funções SQL 20-19 Parâmetros NLS em Funções SQL 20-22 Suporte Para Índice Lingüístico 20-26 Importando e Carregando Dados Usando NLS 20-27 Obtendo Informações Sobre Definições NLS 20-28 Sumário 20-33 Apêndice A: Exercícios Ambiente A-2 Exercício 1: Componentes Arquitetônicos do Oracle A-3 Exercício 2: Conceitos Básicos do Oracle A-5 Exercício 3: Gerenciando uma Instância Oracle A-6 Exercício 4: Criando um Banco de Dados A-8 Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão A-9 ..................................................................................................................................................... x Enterprise DBA Parte 1A: Administração e Arquitetura
  • 11.
    Sumário ..................................................................................................................................................... Exercício 6: Mantendo o Arquivo de Controle A-10 Exercício 7: Mantendo Arquivos de Redo Log A-11 Exercício 8: Gerenciando Tablespaces e Arquivos de Dados A-12 Exercício 9: Estrutura de Armazenamento e Relacionamentos A-13 Exercício 10: Gerenciando Segmentos de Rollback A-14 Exercício 11: Gerenciando Tabelas A-15 Exercício 12: Gerenciando Índices A-17 Exercício 13: Mantendo a Integridade dos Dados A-19 Exercício 14: Carregando Dados A-20 Exercício 15: Reorganizando Dados A-21 Exercício 16: Gerenciando a Segurança de Senha A-22 Exercício 17: Gerenciando Usuários A-23 Exercício 18: Gerenciando Privilégios A-24 Exercício 19: Gerenciando Atribuições A-25 Exercício 20: Usando o Suporte a Idioma Nacional (National Language Support – NLS) A-26 Apêndice B: Dicas Exercício 1: Componentes Arquitetônicos do Oracle B-2 Exercício 2: Conceitos Básicos do Oracle B-3 Exercício 3: Gerenciando uma Instância Oracle B-4 Exercício 4: Criando um Banco de Dados B-7 Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão B-8 Exercício 6: Mantendo o Arquivo de Controle B-9 Exercício 7: Mantendo Arquivos de Redo Log B-10 Exercício 8: Gerenciando Tablespaces e Arquivos de Dados B-12 Exercício 9: Estrutura de Armazenamento e Relacionamentos B-14 Exercício 10: Gerenciando Segmentos de Rollback B-16 Exercício 11: Gerenciando Tabelas B-18 Exercício 12: Gerenciando Índices B-20 Exercício 13: Mantendo a Integridade dos Dados B-22 Exercício 14: Carregando Dados B-23 Exercício 15: Reorganizando Dados B-24 Exercício 16: Gerenciando a Segurança de Senha B-25 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura xi
  • 12.
    Sumário ..................................................................................................................................................... Exercício 17: Gerenciando Usuários B-26 Exercício 18: Gerenciando Privilégios B-27 Exercício 19: Gerenciando Atribuições B-28 Exercício 20: Usando o Suporte a Idioma Nacional (National Language Support – NLS) B-29 Apêndice C: Soluções dos Exercícios Para SQL*Plus Soluções do Exercício 1 C-2 Soluções do Exercício 2 C-4 Soluções do Exercício 3 C-7 Soluções do Exercício 4 C-17 Soluções do Exercício 5 C-21 Soluções do Exercício 6 C-25 Soluções do Exercício 7 C-28 Soluções do Exercício 8 C-34 Soluções do Exercício 9 C-41 Soluções do Exercício 10 C-47 Soluções do Exercício 11 C-55 Soluções do Exercício 12 C-60 Soluções do Exercício 13 C-64 Soluções do Exercício 14 C-70 Soluções do Exercício 15 C-76 Soluções do Exercício 16 C-81 Soluções do Exercício 17 C-85 Soluções do Exercício 18 C-88 Soluções do Exercício 19 C-93 Soluções do Exercício 20 C-96 Apêndice D: Soluções dos Exercícios para o Oracle Enterprise Manager Soluções do Exercício 1 D-2 Soluções do Exercício 2 D-3 Soluções do Exercício 3 D-4 Soluções do Exercício 4 D-8 Soluções do Exercício 5 D-9 Soluções do Exercício 6 D-10 ..................................................................................................................................................... xii Enterprise DBA Parte 1A: Administração e Arquitetura
  • 13.
    Sumário ..................................................................................................................................................... Soluções do Exercício 7 D-12 Soluções do Exercício 8 D-19 Soluções do Exercício 9 D-25 Soluções do Exercício 10 D-26 Soluções do Exercício 11 D-37 Soluções do Exercício 12 D-42 Soluções do Exercício 13 D-47 Soluções do Exercício 14 D-49 Soluções do Exercício 15 D-52 Soluções do Exercício 16 D-59 Soluções do Exercício 17 D-64 Soluções do Exercício 18 D-71 Soluções do Exercício 19 D-76 Soluções do Exercício 20 D-80 Apêndice E: Teste de Certificação: Exemplos de Perguntas Programa Oracle Certified Professional (OCP): Oracle Certified Database Administrator Track E-2 Administração de Banco de Dados Oracle: Exemplo e Teste E-3 Exemplo de Teste de Backup e Recuperação do Oracle E-5 Respostas E-8 Inscrevendo-se em um Teste OCP E-9 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura xiii
  • 14.
  • 15.
    15 ................................. Reorganizando Dados
  • 16.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá executar o seguinte: • Reorganizar dados usando os utilitários Exportar e Importar • Mover dados usando tablespaces transportáveis ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 15-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 17.
    Visão Geral ..................................................................................................................................................... Visão Geral Movendo Dados Usando Exportar e Importar Exportar Arq. S/O Arquivos de dados Importar ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Utilitários Exportar e Importar Os utilitários Exportar e Importar permitem que o administrador mova dados entre bancos de dados Oracle, e dentro de um banco de dados Oracle, para usuários ou diferentes tablespaces, ou reorganize os dados para armazenamento e desempenho eficientes. Utilitário Exportar O utilitário Exportar pode ser usado para criar uma cópia lógica de definições de objeto e dados em um arquivo binário de sistema operacional. A exportação pode gravar dados em um arquivo no disco ou fita. O utilitário Exportar extrai uma view consistente de dados de cada tabela. Utilitário Importar O utilitário Importar pode ler os arquivos do sistema operacional criados pelo utilitário Exportar e copiar definições de objeto e dados para um banco de dados Oracle. O utilitário Importar não consegue ler arquivos de texto ou arquivos criados em qualquer outro formato. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-3
  • 18.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Usos de Exportar e Importar • Reorganizar tabelas • Mover dados pertencentes a um usuário para outro usuário • Mover dados entre bancos de dados: – Desenvolvimento para produção – Sistema OLTP para um data warehouse • Migrar o banco de dados para outro(a): – Plataforma de S/O – Versão do banco de dados Oracle • Repetir execuções de teste durante desenvolvimento ou upgrade • Executar um backup lógico ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Usando os Utilitários Exportar e Importar Exportar e Importar podem ser usados nos seguintes casos: • Reorganizar tabelas: Existem várias instâncias em que é necessário reorganizar tabelas: – Os dados em um tablespace podem precisar ser movidos de um tablespace para outro para minimizar a disputa, reduzir a fragmentação do espaço livre ou para facilitar o backup. – Uma tabela pode conter várias linhas migradas. – Uma tabela pode ter vários blocos com grandes volumes de espaço livre. – Uma tabela pode ter muitos blocos vazios abaixo da marca d'água. • Mover dados pertencentes a um usuário para outro usuário: Isso pode ser necessário quando um esquema precisa ser removido do banco de dados ou para redistribuir propriedade de objetos. Dados que foram exportados de um usuário podem ser importados para o esquema de outro usuário. • Mover dados entre bancos de dados: As definições de objeto podem ser movidas do desenvolvimento para a produção através da extração apenas das definições, sem considerar os dados. Exportar e Importar também podem ser usados para extrair dados de uma aplicação OLTP (Online Transaction Processing System) para um data warehouse. • Migrar outra plataforma de sistema operacional ou versão do Oracle: Dados exportados de uma máquina podem ser importados para um banco de dados em uma outra máquina, possivelmente usando outro conjunto de caracteres. ..................................................................................................................................................... 15-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 19.
    Visão Geral ..................................................................................................................................................... Usando osUtilitários Exportar e Importar (continuação) • Migrar para outra versão do banco de dados Oracle: Quando você atualiza para uma nova versão do servidor Oracle, os dados podem ser exportados da versão antiga e importados para a nova versão. Observe que talvez não seja possível usar esse método para mover dados de uma versão posterior para uma versão anterior. • Repetir execuções de teste durante desenvolvimento ou upgrade: Em um banco de dados de desenvolvimento ou teste, uma aplicação pode exigir diversas execuções de teste antes de ser totalmente depurada e aceita. Os dados de teste podem ser exportados para um arquivo externo e importados antes de cada execução para garantir que os testes sejam executados no mesmo conjunto de dados. Esse método também é útil para testar uma nova versão do servidor Oracle antes de uma atualização de um banco de dados de produção. • Executar um backup lógico: Alguns ou todos os objetos de um banco de dados podem ser exportados e o arquivo de exportação pode ser usado como um backup lógico. Nesta lição, é apresentado o uso de Exportar e Importar para reorganização de dados e movimentação de dados entre usuários. Observação: O uso de Exportar e Importar para backup e recuperação será abordado detalhadamente no curso Enterprise DBA Part 1B: Backup and Recovery. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-5
  • 20.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Modos de Exportação Banco Tabela Usuário de Dados • Tabela • Todos os • Todos os • Índices objetos objetos no pertencentes banco de • Gatilhos ao usuário, dados, exceto • Restrições exceto índices objetos e gatilhos nas pertencentes • Concessões tabelas de ao SYS • Método de outros usuários análise ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Três Modos de Exportação O utilitário Exportar fornece três modos de exportação: • Tabela • Usuário • Banco de dados Modo de Tabela Todos os usuários podem usar o modo de tabela para exportar suas próprias tabelas. Os usuários privilegiados podem exportar tabelas pertencentes a qualquer usuário. O uso do modo de tabela exporta: • A definição da tabela. • Dados em uma tabela, se necessário. • Todos os índices da tabela se a exportação for executada por um usuário privilegiado. Caso contrário, serão exportados somente os índices da tabela que pertençam ao usuário. • Todos os gatilhos da tabela somente se o utilitário for executado por um usuário privilegiado. Caso contrário, serão exportados somente os gatilhos da tabela pertencentes ao usuário. • Restrições na tabela. • Todas as concessões feitas na tabela. • Definição do método de análise a ser utilizado na importação. ..................................................................................................................................................... 15-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 21.
    Visão Geral ..................................................................................................................................................... Modo deUsuário A exportação do modo de usuário funcionará de forma diferente dependendo do fato de o usuário que está executando a exportação possuir ou não privilégios especiais. • Um usuário privilegiado pode exportar objetos pertencentes a qualquer usuário. Nesse caso, os objetos exportados são: – Todos os objetos pertencentes ao usuário, exceto índices e gatilhos pertencentes ao usuário, mas que estejam em tabelas pertencentes a outro usuário. – Gatilhos e índices criados por outros usuários nas tabelas do usuário. • Os usuários não privilegiados podem exportar somente objetos de sua propriedade e esse modo não incluirá índices ou gatilhos criados por outros usuários nas tabelas pertencentes a esse usuário. Modo de Banco de Dados Integral Quando esse modo é utilizado, são exportados todos os objetos do banco de dados, exceto os pertencentes ao usuário SYS. Esse modo exige privilégios especiais e não pode ser usado por todos os usuários. Observação: Em todos os três modos de exportação, usuários privilegiados são usuários com a atribuição EXP_FULL_DATABASE. Essa atribuição será abordada detalhadamente na lição "Gerenciando Atribuições". ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-7
  • 22.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Exportação de Caminho Convencional e Direto Direto Arquivo Convencional Exportar Exportar de dump Buffer de Processamento avaliação de comando SQL Buffer privado Gerenciamento ou cache de cache de buffer de buffer Leitura de bloco do banco de dados Banco de Dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Caminhos de Exportação O slide mostra a diferença entre exportações de caminho convencional e de caminho direto. Caminho Convencional Este termo refere-se ao método default usado para formatar de dados de um banco de dados e gravá-los em um arquivo de exportação. A exportação de caminho convencional usa a instrução SQL SELECT para extrair dados de tabelas. Os dados são lidos do disco para um cache de buffer e as linhas são transferidas para o buffer de avaliação. Os dados, após passarem pela avaliação da expressão, são transferidos para o cliente da exportação que, em seguida, grava os dados no arquivo de exportação. Caminho Direto A exportação de caminho direto é muito mais rápida do que uma exportação de caminho convencional por ler os dados diretamente e ignorar a camada de processamento de comandos SQL. Em uma exportação de caminho direto, os dados são lidos do disco para o cache de buffer e as linhas são transferidas diretamente para o processo de exportação. O buffer de avaliação é ignorado — isto é, os dados nos blocos não são reorganizados para reunir fragmentos de linha. Os dados já estão no formato esperado pelo Exportar evitando, assim, a desnecessária conversão de dados. Os dados são transferidos para o processo de exportação que, em seguida, grava os dados no arquivo de exportação. O utilitário Importar pode usar um arquivo de exportação criado por qualquer um dos caminhos. O tempo despendido para executar a importação não é afetado de forma significativa pelo caminho de exportação utilizado. ..................................................................................................................................................... 15-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 23.
    Visão Geral ..................................................................................................................................................... Usando Exportar $exp scott/tiger tables=(dept,emp) $exp scott/tiger tables=(dept,emp) > file=emp.dmp log=exp.log > file=emp.dmp log=exp.log > compress=n direct=y > compress=n direct=y emp.dmp Exportar Exportar Tabelas DEPT e EMP exp.log ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Usando Exportar Exportar pode ser chamado por: • Linha de comandos • Modo interativo • Interface gráfica, quando disponível O modo interativo é fornecido principalmente para retrocompatibilidade e não oferece a faixa completa de opções proporcionadas pela linha de comandos. Como resultado, o uso do modo de linha de comandos é recomendado. Linha de Comandos Use o comando a seguir no UNIX ou Windows NT para executar uma exportação: $exp [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ... onde: keyword é uma das palavras-chave abordadas na próxima seção value é o valor atribuído à palavra-chave ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-9
  • 24.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Linha de Comandos (continuação) Observação • Se não forem especificadas palavras-chave, os valores precisarão ser especificados na ordem correta. Embora essa opção esteja disponível, é em geral aconselhável usar as palavras-chave. • Conforme mostrado no slide, é possível especificar os primeiros valores sem palavras-chave e, em seguida, especificar outros valores com palavras-chave. • Alguns sistemas operacionais, como o UNIX, utilizam caracteres de escape antes de caracteres especiais, como um parêntese, para que o caractere não seja tratado como um caractere especial. Windows NT: Linha de Comandos Use o mesmo comando no Windows NT para executar uma exportação: C:>EXP [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ... Observação: As views necessárias para os utilitários Exportar e Importar são criadas através da execução do script catexp.sql, chamado quando o script catalog.sql é executado. ..................................................................................................................................................... 15-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 25.
    Visão Geral ..................................................................................................................................................... Como Usaro Oracle Enterprise Manager para Exportar Dados 1 Inicie a console do Oracle Enterprise Manager: (N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console 2 Informe o administrador, senha e servidor de gerenciamento. Clique em OK para estabelecer login na console. 3 Expanda a pasta Databases (Bancos de Dados). 4 Selecione o banco de dados de trabalho e escolha Data Management (Gerenciamento de Dados) —> Exportar no menu do botão direito do mouse. 5 Informe o nome do arquivo de exportação em Export Filepage (Página de Arquivo de Exportação) e clique em Next (Próximo). 6 Especifique o tipo de exportação na página Export Type (Tipo de Exportação) e clique em Next. 7 Especifique os objetos associados e clique em Next. 8 Selecione os objetos a serem exportados na página Object Selection (Seleção de Objetos) do Assistente do Data Manager. 9 Especifique os objetos associados a serem exportados, como índices e linhas, e o caminho na página Associated Objects (Objetos Associados). 10 Especifique os parâmetros de programação e clique em Finish (Finalizar). 11 Verifique os parâmetros informados na página Summary (Resumo) e clique em OK. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-11
  • 26.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Parâmetros de Linha de Comandos Alguns dos parâmetros normalmente usados são mostrados abaixo. Palavra-chave Default Significado USERID Nome de usuário e senha do Oracle. Se a senha não for especificada, um prompt solicitará que o usuário a forneça. BUFFER Específico O tamanho do buffer que será usado para do OS armazenar as linhas extraídas antes de serem (Operational gravadas no arquivo de exportação. System, sistema operacional) COMPRESS Y Um valor Y especifica que na importação o tamanho da extensão inicial será definido como um valor igual ao tamanho atual do segmento. Um valor N fará os tamanhos de extensão atuais serem mantidos. A escolha precisa ser feita na exportação porque as informações são gravadas no arquivo de exportação. Os segmentos de LOB não são compactados. CONSISTENT N Um valor Y especifica que a operação de exportação inteira seja executada em uma transação somente para leitura. A exportação tentará obter uma imagem com leitura consistente de todos os objetos exportados. Um valor N especifica que é necessário manter somente consistência em nível de tabela. CONSTRAINTS Y Um valor Y especifica que as restrições devem ser exportadas com a tabela. Um valor N faz as restrições não serem exportadas. DIRECT N Um valor Y especifica que o caminho direto seja usado para a exportação. Um valor N utiliza o caminho convencional. FEEDBACK 0 Esse parâmetro é especificado como um número inteiro n para solicitar que um ponto (.) seja exibido quando n linhas forem exportadas. Zero, o default, indica que nenhum ponto será exibido. FILE expdat.dmp Nome do arquivo de saída. FULL N Um valor Y especifica exportação de banco de dados integral. ..................................................................................................................................................... 15-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 27.
    Visão Geral ..................................................................................................................................................... Palavra-chave Default Significado GRANTS Y Um valor Y especifica que todas as concessões em objetos exportados também precisam ser preservadas na importação. HELP N Um valor Y exibe uma lista dos parâmetros e seus significados. Esse parâmetro não é combinado com outros parâmetros. INDEXES Y Um valor Y faz os índices serem exportados. LOG NULL O nome do arquivo para armazenar todas as mensagens de exportação. Por default, as mensagens são exibidas somente na tela. OWNER Os nomes dos usuários para exportação no nível de usuário. PARFILE Especifica o nome do arquivo que contém uma lista de parâmetros de exportação. RECORDLENGTH Específico do O tamanho do registro de saída. S/O ROWS Y Um valor Y especifica que os dados devem ser exportados. STATISTICS ESTIMATE Especifica o método de análise a ser usado na importação. TABLES esquema.tabela para exportação no modo de tabela. Observação • Somente um dos parâmetros, FULL=Y, OWNER=usuário ou TABLES=esquema.tabela, pode ser definido. • Se for especificado o caminho direto (DIRECT=Y), o parâmetro CONSISTENT não poderá ser definido como Y. • Nem todos os parâmetros estão definidos aqui. Para obter uma referência completa, consulte o capítulo "Export" no manual Oracle8i Utilities. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-13
  • 28.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Usando Importar $imp scott/tiger tables=(dept,emp) $imp scott/tiger tables=(dept,emp) > file=emp.dmp log=imp.log ignore=y > file=emp.dmp log=imp.log ignore=y imp.log emp.dmp Importar Importar Banco de Dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Usando Importar Importar pode ser chamado através de: • Linha de comandos • Modo interativo • Interface gráfica, quando disponível O modo interativo é fornecido principalmente para retrocompatibilidade e não oferece a faixa completa de opções oferecida pela linha de comandos. Como resultado, o uso do modo de linha de comandos é recomendado. Linha de Comandos Use o comando a seguir no UNIX ou Windows NT para executar uma exportação: $imp [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ... onde: keyword é uma das palavras-chave abordadas na próxima seção value é o valor atribuído à palavra-chave Windows NT: Linha de Comandos O comando do Windows é igual ao do UNIX: C:>IMP [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ... ..................................................................................................................................................... 15-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 29.
    Visão Geral ..................................................................................................................................................... Como Usaro Oracle Enterprise Manager para Importar Dados 1 Inicie a console do Oracle Enterprise Manager: (N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console 2 Informe o administrador, senha e servidor de gerenciamento. Clique em OK para estabelecer login na console. 3 Expanda a pasta Databases (Bancos de Dados). 4 Selecione o banco de dados de trabalho e escolha Data Management (Gerenciamento de Dados) —> Importar no menu do botão direito do mouse. 5 Especifique o nome do arquivo de exportação a ser importado e clique em Next (Próximo). 6 Aguarde a finalização do serviço. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-15
  • 30.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Parâmetros de Linha de Comandos Alguns dos parâmetros usados normalmente são mostrados abaixo. Palavra-chave Default Significado USERID Nome de usuário e senha do Oracle. (Se a senha não for especificada, um prompt solicitará que o usuário a informe.) BUFFER Específico do Tamanho, em bytes, do buffer através do qual as S/O linhas de dados são transferidas. COMMIT N Um valor Y especifica que Importar deve efetuar uma submissão a commit após cada inserção de array. Por default, Importar efetua uma submissão a commit somente após carregar cada tabela e efetua um rollback quando ocorrem erros, antes de prosseguir para o próximo objeto. A especificação de COMMIT=Y impede o crescimento excessivo dos segmentos de rollback. FEEDBACK 0 Esse parâmetro é especificado como um número inteiro n para solicitar que um ponto (.) seja exibido quando n linhas forem importadas. O valor default suprime a exibição. FILE expdat.dmp Nome do arquivo de entrada. FROMUSER NULL Uma lista dos usuários cujos objetos devem ser importados. FULL N Um valor Y especifica importação de banco de dados integral. GRANTS Y Um valor Y especifica que todas as concessões nos objetos importados também devem ser importadas. HELP N Um valor Y exibe uma lista dos parâmetros e seus significados. Esse parâmetro não é combinado com outros parâmetros. ..................................................................................................................................................... 15-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 31.
    Visão Geral ..................................................................................................................................................... Palavra-chave Default Significado IGNORE N Se o valor for definido como Y, Importar ignorará erros de criação de objeto ao tentar criar objetos de banco de dados. Nesse caso, Importar prosseguirá sem relatar o erro. Para tabelas, IGNORE=Y faz linhas serem importadas para tabelas existentes. Nenhuma mensagem é fornecida. IGNORE=N faz um erro ser relatado e, se a tabela já existir, ela será ignorada. Observe que somente erros de criação de objeto são ignorados; outros erros, como erros de sistema operacional, banco de dados e SQL, não são ignorados e podem provocar interrupção do processamento. INDEXES Y Um valor Y faz índices serem importados. INDEXFILE NULL Especifica um arquivo para receber comandos de criação de índice. Quando esse parâmetro é especificado, os comandos de criação de índice do modo solicitado são extraídos e gravados no arquivo especificado em vez de serem usados para criar índices no banco de dados. Tabelas e outros objetos de banco de dados não são importados. O arquivo pode, em seguida, ser editado (por exemplo, para alterar parâmetros de armazenamento) e usado como um script SQL para criar os índices. LOG NULL O nome do arquivo para armazenar todas as mensagens de importação. Por default, as mensagens são exibidas somente na tela. PARFILE Especifica o nome do arquivo que contém uma lista de parâmetros de importação. RECORDLENGTH Específico do O tamanho do registro de saída. Será necessário S/O somente se os dados tiverem sido exportados em um sistema operacional com tamanho de registro diferente. ROWS Y Um valor Y especifica que os dados devem ser importados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-17
  • 32.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Palavra-chave Default Significado SHOW N Se o valor for Y, o conteúdo do arquivo de exportação será listado para exibição e não importado. As instruções SQL contidas na exportação são exibidas na ordem em que serão executadas pela importação. Se SHOW=Y, os únicos outros parâmetros que poderão ser definidos são FROMUSER, TOUSER, FULL e TABLES. TABLES NULL Nomes das tabelas a serem importadas. TOUSER NULL Uma lista dos nomes de usuário para importar tabelas. Somente usuários com atribuição IMP_FULL_DATABASE podem usar esse parâmetro para importar objetos para a conta de outro usuário. Observação • Somente um dos parâmetros, FULL=Y, OWNER=usuário ou TABLES=esquema.tabela, pode ser definido. • A atribuição IMP_FULL_DATABASE será abordada na lição "Gerenciando Atribuições". • Nem todos os parâmetros estão definidos aqui. Para obter uma referência completa, consulte o capítulo "Import" no manual Oracle8i Utilities. ..................................................................................................................................................... 15-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 33.
    Visão Geral ..................................................................................................................................................... Comportamento de Importar • Ordem de importação: Tabela —> Dados —> Índices em árvore B —> restrições, gatilhos, índices de bitmap • Tablespace usado para o objeto: – Tablespace igual ao do banco de dados de origem, se possível – Tablespace default do usuário ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Ordem de Importação Os objetos de tabela são importados na forma como são lidos no arquivo de exportação. O arquivo de exportação contém objetos na seguinte ordem: 1 Definições de tipo 2 Definições de tabela 3 Dados de tabela 4 Índices de tabela 5 Restrições de integridade, views, procedimentos e gatilhos 6 Índices de bitmap, funcionais e de domínio Essa seqüência impede a rejeição de dados em decorrência da ordem em que as tabelas são importadas. Essa seqüência também impede que gatilhos redundantes sejam disparados duas vezes no mesmo dia (uma vez ao ser inserido originalmente e novamente durante a importação). Entretanto, alguns objetos, como procedimentos, podem ser invalidados na importação por serem importados antes dos objetos a que fazem referência. Verifique os objetos com STATUS=INVALID e recompile-os. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-19
  • 34.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Considerações sobre a Importação em Tabelas Existentes Quando são importados dados para tabelas existentes, a ordem da importação pode continuar a produzir falhas de referência de integridade. Uma situação semelhante ocorre quando uma restrição de referência de integridade em uma tabela faz referência a si mesma no fim da importação. Pelas razões mencionadas anteriormente, é aconselhável desativar restrições de referência para importar para uma tabela existente. As restrições poderão ser ativadas novamente após a conclusão da importação. Tablespace Usado para um Objeto Se um usuário tiver a cota necessária, as tabelas serão importadas para o mesmo tablespace de onde elas foram exportadas. Contudo, se o tablespace não existir mais ou se o usuário não tiver a cota necessária, Importar criará a tabela no tablespace default desse usuário. Se um usuário não puder acessar o tablespace default, a tabela não poderá ser importada. Um segmento de LOB pode ser importado somente para o mesmo tablespace de onde ele foi exportado. Portanto, uma tabela que contenha LOBs não será criada se seu proprietário não puder criar objetos no tablespace de onde o segmento de LOB foi exportado. Observação: As cotas e o controle do uso de tablespaces por usuários serão abordados na lição "Gerenciando Usuários". ..................................................................................................................................................... 15-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 35.
    Visão Geral ..................................................................................................................................................... Diretrizes de Exportar e Importar • Use um arquivo de parâmetros para especificar opções de linha de comandos normalmente usadas. • Use CONSISTENT=Y somente se estiver exportando um volume pequeno de dados. • Não use COMPRESS=Y se houver muitas linhas deletadas. • Melhore o desempenho: – Alocando um buffer grande – Utilizando caminho direto se estiver usando 7.3.3 ou superior ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Diretrizes de Exportação e Importação Use um arquivo de parâmetros para armazenar parâmetros de linha de comandos usados normalmente. Isso minimiza erros e mantém a linha de comandos menor. Se as tabelas que estão sendo exportadas forem atualizadas com freqüência, usar CONSISTENT=Y provavelmente produzirá erros SNAPSHOT TOO OLD. Em geral, é preferível executar grandes exportações durante períodos de baixa atividade. Como alternativa, crie um grande segmento de rollback, coloque todos os outros como off- line e execute a importação. A opção de exportação COMPRESS=Y gerará código para criar uma extensão inicial, que é igual à soma dos tamanhos de todas as extensões alocadas no momento para um objeto. Se o objeto tiver muitas linhas deletadas ou se a última extensão tiver muitos blocos não utilizados, esse procedimento alocará sem necessidade muito espaço do objeto. Aloque o maior buffer permitido pelo sistema operacional e recursos da máquina. Use exportação de caminho direto se os dados forem importados para um banco de dados que esteja executando a versão 7.3.3 ou superior. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-21
  • 36.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Considerações Sobre NLS em Exportar e Importar Exportar conjunto de Exportar Exportar carecteres do cliente Conjunto de caracteres do Importar banco de dados Importar Importar conjunto de caracteres do cliente Conversão possível de conjunto de caracteres ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Exportação e Conversão de Conjunto de Caracteres A exportação de caminho convencional grava arquivos de exportação usando o conjunto de caracteres especificado para a sessão do usuário, como, por exemplo, ASCII de 7 bits ou IBM CODE Page 500 (EBCDIC). As exportações de caminho direto exportam dados somente no conjunto de caracteres do banco de dados. Se o conjunto de caracteres da sessão de exportação não for igual ao conjunto de caracteres do banco de dados, ao ser iniciada a exportação, Exportar exibirá uma advertência e abortará. Especifique o conjunto de caracteres da sessão igual ao do banco de dados antes de tentar a exportação novamente. O arquivo de exportação contém um indicador que mostra o esquema de codificação de caracteres usado para esses dados de caracteres. Importação e Conversão de Conjunto de Caracteres A sessão de importação e o conjunto de caracteres do banco de dados de destino podem diferir do conjunto de caracteres do banco de dados de origem. Essa situação requer uma ou mais operações de conversão de conjunto de caracteres. Se necessário, os dados do arquivo de exportação serão primeiro convertidos durante a importação para o esquema de codificação de caracteres especificado para a sessão do usuário e, em seguida, para o conjunto de caracteres do banco de dados. Durante a conversão, quaisquer caracteres do arquivo de exportação que não tenham equivalente no conjunto de caracteres de destino serão substituídos pelo caractere default, definido pelo conjunto de caracteres de destino. Para garantir 100% de conversão, o conjunto de caracteres de destino deverá ser um superconjunto ou equivalente do conjunto de caracteres de origem. ..................................................................................................................................................... 15-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 37.
    Visão Geral ..................................................................................................................................................... Diretrizes Como aconversão de conjunto de caracteres torna mais longo o tempo necessário para processamento de importação, limite o número de conversões de conjuntos de caracteres para o menor número possível. No cenário ideal, os conjuntos de caracteres da sessão de importação e do banco de dados de destino são iguais aos conjuntos de caracteres do banco de dados de origem, não exigindo conversão. Observação: A definição do conjunto de caracteres no nível da sessão e seu impacto sobre as diversas operações de banco de dados serão abordados detalhadamente na lição "Usando o Suporte a Idioma Nacional (National Language Support – NLS)". ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-23
  • 38.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Tablespaces Transportáveis Transporte de Dados: Tablespaces Transportáveis OLTP Área intermediária Data Datamarts warehouse Distribuição de informações ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Tablespaces Transportáveis Mover dados de um data warehouse para um datamart ou de um sistema OLTP para uma área intermediária de um data warehouse pode ser incômodo e demorado. A carga de caminho direto através do SQL*Loader ou DML paralelo torna a tarefa mais rápida, mas o processo pode ser mais simples para movimentação de dados entre bancos de dados idênticos. O Oracle8i oferece um mecanismo para copiar arquivos de dados entre sistemas idênticos e permitir que os mesmos dados sejam acessados pelos dois sistemas. Agora a movimentação de dados pode ser tão rápida quanto uma simples transferência de arquivos entre máquinas. Isso melhora bastante o desempenho e proporciona simplicidade operacional para transferência de dados. Sistemas de Informações Corporativos Um grande volume de dados pode fluir por um sistema de informações corporativo, de um banco de dados OLTP para um banco de dados intermediário e, em seguida, por um data warehouse da empresa para datamarts. Nesse ambiente, tablespaces transportáveis podem ser usados para diversas finalidades. Normalmente, tabelas em um data warehouse não são iguais as do banco de dados OLTP. É possível usar um tablespace transportável para mover dados de um banco de dados OLTP para um DSS (Decision Support System, Serviço de Suporte de Decisões) ou banco de dados de warehouse. ..................................................................................................................................................... 15-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 39.
    Tablespaces Transportáveis ..................................................................................................................................................... Distribuição deInformações Esse recurso também pode ser usado por: • Empresas para publicar dados em CD-ROMs que podem ser facilmente integrados a bancos de dados Oracle em escritórios regionais e de área. Por exemplo, é possível preencher e atualizar das tabelas PRODUCT com descrições de produto e preço no escritório central e movê-las para escritórios regionais ou filiais para serem usadas em um sistema de processamento de pedidos. • Provedores de conteúdo para distribuir para organizações dados estruturados, como catálogos de empresas e dados demográficos, para fácil integração em seus sistemas de suporte à decisão. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-25
  • 40.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Transportando um Tablespace Transportando Tablespaces 1. Torne o tablespace somente para leitura 2. Exporte metadados da origem 3. Copie arquivos de dados para o sistema de destino 4. Transfira arquivo de exportação 5. Importe metadados para o destino 6. Se necessário, altere o tablespace para leitura/gravação ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Etapas para Transportar um Tablespace Use as etapas mostradas abaixo para mover um tablespace de um banco de dados para outro. 1 Para garantir que nenhuma alteração seja efetuada no arquivo enquanto ele estiver sendo movido, defina o tablespace como somente para leitura. 2 Use Exportar para capturar as informações de dicionário de dados para um arquivo do sistema operacional. 3 Faça uma cópia do tablespace executando uma cópia binária dos arquivos de dados da origem na máquina de destino. 4 Transfira o arquivo de exportação para a máquina de destino. 5 Use Importar para carregar as informações de dicionário de dados no destino. 6 Se necessário, altere o tablespace no banco de dados de origem ou destino para permitir gravação. ..................................................................................................................................................... 15-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 41.
    Exportando e ImportandoMetadados ..................................................................................................................................................... Exportando e Importando Metadados Exportando e Importando Metadados exp sys/… FILE=s980501.dmp exp sys/… FILE=s980501.dmp TRANSPORT_TABLESPACE=y TRANSPORT_TABLESPACE=y TABLESPACES=sales_ts TABLESPACES=sales_ts TRIGGERS=N CONSTRAINTS=N TRIGGERS=N CONSTRAINTS=N imp sys/… FILE=s980501.dmp imp sys/… FILE=s980501.dmp TRANSPORT_TABLESPACE=y TRANSPORT_TABLESPACE=y DATAFILES=(/disk1/sales01.dbf, DATAFILES=(/disk1/sales01.dbf, /disk2/sales02.dbf) /disk2/sales02.dbf) ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Exportando Metadados O uso da opção TRANSPORT_TABLESPACE especifica que as informações do dicionário de dados sobre todos os objetos nos tablespaces precisam ser exportadas. A nova cláusula TRIGGERS, junto com CONSTRAINTS e GRANTS, pode ser usada para controlar se as informações associadas serão exportadas quando a tabela for exportada. É útil transferir todos os dados relacionados durante a publicação de dados estruturados, embora talvez não seja necessário copiar gatilhos e restrições se estiver copiando dados para um data warehouse. Importando Metadados Use o utilitário Importar com a opção TRANSPORT_TABLESPACE para atualizar o dicionário de dados de destino com o tablespace e outras definições de objeto. As seguintes regras controlam a operação de importação: • A opção DATAFILES deve ser especificada. Ela nomeia os arquivos pertencentes ao tablespace que está sendo transferido. Use os nomes da forma como eles estão armazenados no computador de destino, mesmo que eles sejam diferentes dos nomes de arquivo originais. • Se a cláusula TABLESPACES for especificada, os nomes de tablespace fornecidos serão comparados com os do arquivo de exportação. Caso contrário, os nomes de tablespace serão extraídos do arquivo de exportação. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-27
  • 42.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Importando Metadados (continuação) • A opção USERS pode ser especificada para comparar os nomes de usuário com os do arquivo de metadados. Caso contrário, os nomes de usuário serão extraídos do arquivo de exportação. • As opções FROMUSER e TOUSER podem ser usadas para importar objetos de um esquema de origem para um esquema de destino. ..................................................................................................................................................... 15-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 43.
    Transportando um Tablespace ..................................................................................................................................................... Transportandoum Tablespace Transportando um Tablespace Sistema 1 Sistema 2 s980501.dmp s980501.dmp /u/d1 /disk1 /u/d2 /disk2 SALES_TS SALES_TS /u/d1/sales1.dbf /u/d1/sales1.dbf /disk1/sales01.dbf /disk1/sales01.dbf /u/d2/sales2.dbf /u/d2/sales2.dbf /disk2/sales02.dbf /disk2/sales02.dbf Somente Para Leitura ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Transportando um Tablespace O slide mostra o transporte do tablespace SALES_TS do Sistema 1 para o Sistema 2. O transporte requer que estas etapas sejam executadas: 1 Coloque o tablespace no modo somente para leitura no banco de dados de origem do Sistema 1. SQL> ALTER TABLESPACE sales_ts READ ONLY; 2 Exporte os metadados do tablespace do banco de dados de origem no Sistema 1. exp FILE=x980501.dmp TRANSPORT TABLESPACE=y TABLESPACE=sales_ts TRIGGERS=n CONSTRAINTS=n 3 Copie fisicamente os arquivos de dados do tablespace System 1 para System 2. Observe que os nomes de arquivo dos dados são alterados durante a cópia. 4 Copie fisicamente o arquivo de exportação, s980501.dmp, do Sistema 1 para o Sistema 2. 5 Importe os metadados do tablespace para o banco de dados de destino, usando os nomes de arquivo de dados fornecidos no Sistema 2. imp FILE=x980501.dmp TRANSPORT TABLESPACE=y DATAFILES=(/disk1/sales01.dbf,/disk2/sales02.dbf) 6 Os dados do tablespace SALES_TS estão disponíveis para consulta nos dois sistemas. O tablespace pode ser retornado ao modo leitura/gravação em um nó ou nos dois nós. SQL> ALTER TABLESPACE sales_ts READ WRITE; ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-29
  • 44.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Usos do Tablespace Transportável Tablespaces Transportáveis: Usos • Move dados de tablespace integrais • Suporta recuperação de mídia • Bancos de dados de origem e destino devem: – Estar no mesmo sistema operacional – Executar o Oracle8i, versão 8.1 ou superior – Ter o mesmo tamanho de bloco – Usar o mesmo conjunto de caracteres ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Uso A recuperação de mídia é suportada através da operação de transporte. No caso de danos de mídia, você pode usar um backup realizado antes de uma operação de transporte de tablespace e fazer a recuperação para um momento posterior ao do transporte do tablespace. A coluna PLUGGED_IN em DBA_TABLESPACES será definida como YES após a importação. Um tablespace associado deverá ser eliminado antes que seja efetuado downgrade para versões anteriores. Você pode transportar o tablespace para outro banco de dados Oracle8i para preservar dados ou usar Importar e Exportar. ..................................................................................................................................................... 15-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 45.
    Tablespaces Transportáveis eObjetos de Esquema ..................................................................................................................................................... Tablespaces Transportáveis e Objetos de Esquema Tablespaces Transportáveis e Objetos de Esquema • Tablespaces transportados em uma execução devem ser independentes: – Todas as partições de uma tabela – LOBs devem ser exportados com tabelas • Os objetos a seguir não podem ser transportados: – Tabelas que contêm tabelas aninhadas e VARRAYs – Índices de bitmap ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Conjuntos de Dados Independentes O conjunto de tablespaces transportado em cada execução deve ser independente. O tablespace a ser movido pode conter tabelas com LOBs e tipos de dados definidos pelo usuário. Se uma tabela com uma coluna BFILE fizer parte de um tablespace movido, o usuário precisará copiar os arquivos referenciados para o destino. Os índices de bitmap e tabelas com VARRAYs ou tabelas aninhadas não podem ser transportados. O usuário é responsável por resolver as dependências entre objetos nos tablespaces que são transportados e os tablespaces no banco de dados de destino. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-31
  • 46.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... Verificando o Conjunto de Transporte Verificando o Conjunto de Transporte Dicionário Lista de de dados tablespaces DBMS_TTS.TRANSPORT_SET_CHECK( ts_list => ’SALES_TS’, incl_constraints => TRUE); Objetos com referências a objetos fora Verificar do conjunto de transporte para a tabela integridade TRANSPORT_SET_VIOLATIONS de referência ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. DBMS_TTS.TRANSPORT_SET_CHECK O procedimento PL/SQL DBMS_TTS.TRANSPORT_SET_CHECK pode ser usado para verificar se um conjunto de tablespaces é independente. Esse procedimento aceita dois argumentos IN: • Uma lista de tablespaces separados por vírgulas. • Um argumento booleano especificando se as restrições de integridade de referência devem ser verificadas ao determinar se o conjunto de tablespaces é independente. O procedimento preenche a view TRANSPORT_SET_VIOLATIONS, indicando quais objetos nos tablespaces especificados têm relacionamentos com objetos fora do conjunto de tablespaces especificado. O script dbmsplts.sql, que é executado por catproc.sql, cria o pacote DBMS_TTS. DBMS_TTS.ISSELFCONTAINED A função DBMS_TTS.ISSELFCONTAINED retornará TRUE se o conjunto transportável for independente; caso contrário, retornará FALSE. A função tem os mesmos argumentos de TRANSPORT_SET_CHECK. ..................................................................................................................................................... 15-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 47.
    Sumário ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Usar os utilitários Exportar e Importar para reorganizar dados • Mover dados usando tablespaces transportáveis ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Referência Rápida Contexto Referência Parâmetros de inicialização Nenhum Views de desempenho dinâmicas Nenhuma Views de dicionário de dados Nenhuma Comandos sqlldr ou sqlload UNIX exp imp Windows NT EXP.EXE IMP.EXE SQLLDR.EXE Procedimentos e funções empacotados DBMS_TTS ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 15-33
  • 48.
    Lição 15: ReorganizandoDados ..................................................................................................................................................... ..................................................................................................................................................... 15-34 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 49.
    16 ................................. Gerenciando Recursos e Segurança de Senha
  • 50.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá fazer o seguinte: • Gerenciar senhas usando perfis • Administrar perfis • Controlar o uso de recursos usando perfis • Obter informações sobre perfis, gerenciamento de senhas e recursos ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 16-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 51.
    Visão Geral ..................................................................................................................................................... Visão Geral Perfis • São conjuntos com nome de senha e limites de recurso Cotas de Tablespace • São atribuídos a usuários tablespace default pelo comando Mecanismo de Tablespace CREATE USER autenticação temporário ou ALTER USER Domínio de segurança • Podem ser ativados Privilégios Bloqueio de atribuição ou desativados de conta • Podem se relacionar ao Privilégios Limites de diretos recurso perfil DEFAULT ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que É um Perfil? Um perfil é um conjunto definido dos seguintes limites de recurso e senha: • Validade e expiração de senha • Histórico da senha • Verificação de complexidade da senha • Bloqueio de conta • Tempo de CPU • Operações de E/S • Tempo de inatividade • Tempo de conexão • Espaço na memória (área SQL privada para MTS somente) • Sessões simultâneas Após a criação de um perfil, o administrador do banco de dados pode atribuí-lo a cada usuário. Se os limites de recurso estiverem ativados, o servidor Oracle limitará o uso e os recursos do banco de dados ao perfil definido do usuário. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-3
  • 52.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Perfil DEFAULT Quando o banco de dados é criado, o servidor Oracle cria automaticamente um perfil DEFAULT. Os usuários aos quais não tenha sido atribuído um perfil específico obedecem todos os limites do perfil DEFAULT. Todos os limites do perfil DEFAULT são inicialmente ilimitados. Entretanto, o administrador do banco de dados pode alterar os valores para que os limites sejam aplicados a todos os usuários por default. Uso de Perfil • Impedir usuários de executarem algumas operações que exigem uso intensivo de recursos. • Assegurar que os usuários estabeleçam logoff no banco de dados quando tiverem deixado suas sessões inativas por algum tempo. • Ativar limites de recurso de grupo para usuários semelhantes. • Atribuir facilmente limites de recurso a usuários. • Gerenciar a utilização de recursos em sistemas de bancos de dados grandes e complexos de vários usuários. • Controlar o uso de senhas. Características de Perfil • As atribuições de perfil não afetam sessões atuais. • É possível atribuir perfis somente a usuários e não a atribuições ou outros perfis. • Se você não atribuir um perfil ao criar um usuário, o perfil DEFAULT será atribuído automaticamente ao usuário. ..................................................................................................................................................... 16-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 53.
    Administrando Senhas ..................................................................................................................................................... Administrando Senhas Gerenciamento de Senhas Histórico Bloqueio da senha de conta Usuário Configurando perfis Validade e Verificação expiração de de senha senha ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Recursos do Gerenciamento de Senhas Para maior controle sobre a segurança de banco de dados, o gerenciamento de senhas Oracle é controlado pelos administradores de banco de dados com perfis. Esta lição descreve os recursos disponíveis de gerenciamento de senhas: • Bloqueio de conta: Permite o bloqueio automático de uma conta quando um usuário não conseguir estabelecer login no sistema após um determinado número de tentativas. • Validade e expiração de senha: Permite que a senha tenha um período de vida útil, após o qual ela expira e deve ser alterada. • Histórico da senha: Verifica a nova senha para garantir que ela não seja reutilizada durante um período especificado ou número especificado de alterações de senha. • Verificação da complexidade da senha: Efetua uma verificação de complexidade na senha para confirmar se ela é suficientemente complexa para oferecer proteção contra a invasão do sistema por meio de pessoas que tentem adivinhar a senha. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-5
  • 54.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Ativando Gerenciamento de Senhas • Configure o gerenciamento de senhas usando perfis e atribuindo-os a usuários. • Bloqueie, desbloqueie e expire contas com o comando CREATE USER ou ALTER USER. • Limites de senha são sempre impostos. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Ativar o Gerenciamento de Senhas Crie o perfil para limitar as definições de senha e atribua-o ao usuário com o comando CREATE USER ou ALTER USER. As definições de limite de senha em perfis são sempre impostas. Quando o gerenciamento de senha está ativado, a conta do usuário pode ser bloqueada ou desbloqueada com o comando CREATE USER ou ALTER USER. Observação: O comando CREATE USER será abordado na lição "Gerenciando Usuários". ..................................................................................................................................................... 16-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 55.
    Administrando Senhas ..................................................................................................................................................... Bloqueio de Conta de Senha Parâmetro Descrição FAILED_LOGIN_ATTEMPTS Número de tentativas falhas de login antes da paralisação da conta PASSWORD_LOCK_TIME Número de dias em que a conta permanece bloqueada ao expirar a senha ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Bloqueio de Conta O servidor Oracle bloqueia automaticamente uma conta após o valor de FAILED_LOGIN_ATTEMPTS ser alcançado. A conta será automaticamente desbloqueada após um período especificado (PASSWORD_LOCK_TIME) ou precisará ser desbloqueada pelo administrador do banco de dados com o comando ALTER USER. A conta do banco de dados pode ser bloqueada explicitamente com o comando ALTER USER. Quando isso acontece, a conta não é desbloqueada automaticamente. Observação: O comando ALTER USER será demonstrado posteriormente nesta lição. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-7
  • 56.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Validade e Expiração de Senha Parâmetro Descrição PASSWORD_LIFE_TIME Período de vida útil em dias da senha após o qual ela expira PASSWORD_GRACE_TIME Período de tolerância em dias para alterar a senha após o primeiro login bem-sucedido depois da expiração da senha ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Validade e Expiração de Senha O parâmetro PASSWORD_LIFE_TIME define o período máximo de vida útil após o qual a senha precisa ser alterada. O administrador do banco de dados pode especificar um período de tolerância (PASSWORD_GRACE_TIME), que inicia após a primeira tentativa de estabelecer login no banco de dados depois da expiração da senha. Será gerada uma mensagem de aviso a cada vez que o usuário tentar estabelecer login até terminar o período de tolerância. O usuário deve alterar a senha durante o período de tolerância. Se a senha não for alterada, a conta será bloqueada. O status da conta do usuário será alterado para EXPIRED se você definir explicitamente a senha como expirada. Isto é, quando o usuário estabelecer login, a conta entrará no período de tolerância. Isso é útil, por exemplo, quando é criada uma nova conta. ..................................................................................................................................................... 16-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 57.
    Administrando Senhas ..................................................................................................................................................... Controlando Bloqueio de Conta e Senha ALTER USER hanne IDENTIFIED BY rue ACCOUNT UNLOCK; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Controlando Bloqueio de Conta e Senha Você pode usar o comando ALTER USER para alterar a senha e controlar bloqueio de conta. Estas são algumas das situações em que isso pode ser útil: • Para redefinir a senha quando ela for esquecida pelo usuário. • Para desbloquear uma conta de usuário que tenha sido bloqueada pelo sistema. • Para bloquear uma conta explicitamente. • Para expirar uma senha manualmente. Esse cláusula é útil ao redefinir senhas de usuário. Sintaxe Use o comando a seguir nessas situações: ALTER USER user [ IDENTIFIED {BY password | EXTERNALLY }] [ PASSWORD EXPIRE] [ ACCOUNT {LOCK | UNLOCK }] ; Alterações de senha, expiração e bloqueios não afetarão a sessão atual se o usuário já estiver com login estabelecido. Eles estarão vigorando somente para sessões subseqüentes. Quando uma conta de usuário é bloqueada e o usuário tenta se conectar, é exibida a seguinte mensagem: ERROR: ORA-28000: the account is locked Warning: You are no longer connected to ORACLE. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-9
  • 58.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Controlar Bloqueio de Conta e Senha 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Users (Usuários) na árvore do navegador. 4 Selecione o nome de usuário. Se estiver alterando bloqueio de conta ou expirando senha: 5 Selecione Object (Objeto) —> Change Account Status (Alterar Status de Conta). 6 Escolha Unlock, Lock, or Expire Password (Desbloquear, Bloquear ou Expirar Senha). Se estiver alterando senha ou modo de autenticação: 7 Informe os detalhes na página General (Geral) da folha de propriedades. 8 Clique em Apply (Aplicar) ..................................................................................................................................................... 16-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 59.
    Administrando Senhas ..................................................................................................................................................... Histórico de Senha Parâmetro Descrição PASSWORD_REUSE_TIME Número de dias antes que uma senha possa ser reutilizada PASSWORD_REUSE_MAX Número máximo de vezes que uma senha pode ser reutilizada ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Histórico de Senha O histórico de senha garante que um usuário não possa reutilizar uma senha durante um intervalo de tempo especificado. Essas verificações podem ser implementadas com um dos seguintes parâmetros: • PASSWORD_REUSE_TIME para especificar que o usuário não possa reutilizar uma senha durante um determinado número de dias. • PASSWORD_REUSE_MAX para forçar um usuário a definir uma senha que não seja idêntica a senhas anteriores. Quando um parâmetro é definido com um valor diferente de DEFAULT ou UNLIMITED, o outro parâmetro precisa ser definido como UNLIMITED. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-11
  • 60.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Verificação de Senha Parâmetro Descrição PASSWORD_VERIFY_FUNCTION Função PL/SQL que verifica a complexidade de uma senha antes de ela ser atribuída ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Verificação de Senha Antes de atribuir uma nova senha a um usuário, é possível chamar uma função PL/SQL para verificar a validade da senha. O servidor Oracle fornece uma rotina de verificação default ou o administrador do banco de dados poderá gravar uma função PL/SQL. ..................................................................................................................................................... 16-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 61.
    Administrando Senhas ..................................................................................................................................................... Função de Senha Fornecida Pelo Usuário A função deve ser criada no esquema SYS e precisa ter a seguinte especificação: nome_fução( parâmetro_idusuário IN VARCHAR2(30), parâmetro_senha IN VARCHAR2(30), antiga_parâmetro_senha IN VARCHAR2(30)) RETURN BOOLEAN ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Definir uma Função Para Verificar uma Senha Quando uma nova função de verificação de senha for adicionada, o administrador do banco de dados deve considerar as seguintes restrições: • O procedimento precisa usar a especificação indicada no slide. • O procedimento retornará o valor TRUE para êxito e FALSE para falha. • Se a função de senha criar uma exceção, será retornado um erro e o comando ALTER USER ou CREATE USER será encerrado. • A função de senha pertence a SYS. • Se a função de senha ficar inválida, será retornada uma mensagem de erro e o comando ALTER USER ou CREATE USER será encerrado. Observação: O comando CREATE USER será abordado na lição "Gerenciando Usuários". ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-13
  • 62.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Função de Verificação de Senha VERIFY_FUNCTION • Comprimento mínimo de quatro caracteres. • Senha não deve ser igual ao nome de usuário. • Senha deve ter pelo menos um caractere alfabético, um numérico e um especial. • Senha deve diferir da senha anterior em pelo menos três letras. Verificação de senha ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. A Função de Verificação Default O servidor Oracle fornece uma função de verificação de complexidade, na forma de uma função PL/SQL default chamada VERIFY_FUNCTION do script utlpwdmg.sql, que deve ser executado no esquema SYS. Durante a execução do script utlpwdmg.sql, o servidor Oracle cria VERIFY_FUNCTION e altera o perfil DEFAULT com o seguinte comando ALTER PROFILE: ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function; ..................................................................................................................................................... 16-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 63.
    Administrando Senhas ..................................................................................................................................................... Criando um Perfil: Definições de Senha CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_GRACE_TIME 5; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Criar um Perfil Use o seguinte comando CREATE PROFILE para administrar senhas: CREATE PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [ACCOUNT_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ] onde: profile é o nome do perfil a ser criado FAILED_LOGIN_ATTEMPTS especifica o número de tentativas malsucedidas de estabelecer login na conta do usuário antes de a conta ser bloqueada ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-15
  • 64.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Criar um Perfil (continuação) PASSWORD_LIFE_TIME limita o número de dias em que a mesma senha pode ser usada para autenticação. A senha expirará se não for alterada nesse período e conexões posteriores serão rejeitadas. PASSWORD_REUSE_TIME especifica o número de dias antes dos quais uma senha não pode ser reutilizada. Se você definir PASSWORD_REUSE_TIME como um valor inteiro, deverá definir PASSWORD_REUSE_MAX como UNLIMITED. PASSWORD_REUSE_MAX especifica o número de alterações de senha necessárias antes que a senha atual possa ser reutilizada. Se você definir PASSWORD_REUSE_MAX como um valor inteiro, deverá definir PASSWORD_REUSE_TIME como UNLIMITED. PASSWORD_LOCK_TIME especifica o número de dias durante os quais uma conta ficará bloqueada após o número especificado de tentativas consecutivas de login malsucedidas. PASSWORD_GRACE_TIME especifica o número de dias após o início do período de tolerância durante o qual será emitido um aviso e o login será permitido. Se a senha não for alterada durante o período de tolerância, ela expirará. PASSWORD_VERIFY_FUNCTION permite que um script de verificação de complexidade de senha PL/SQL seja passado como um argumento para a instrução CREATE PROFILE. ..................................................................................................................................................... 16-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 65.
    Administrando Senhas ..................................................................................................................................................... Como Usaro Oracle Enterprise Manager Para Criar um Perfil 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Selecione a pasta Profiles (Perfis) e selecione Object (Objeto) —> Create (Criar). 4 Selecione Profile (Perfil) na lista e clique em Create. 5 Selecione a guia Password (Senha) e informe os parâmetros de senha de conta. 6 Clique em Create (Criar). Atribuindo um Perfil Você pode atribuir um perfil com o comando CREATE USER ou o comando ALTER USER. A cada usuário, é possível atribuir somente um perfil de cada vez. Observação: O comando CREATE USER será abordado na lição "Gerenciando Usuários". ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-17
  • 66.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Atribuir um Perfil a um Usuário Para gerar o comando ALTER USER com o Oracle Enterprise Manager, utilize as seguintes etapas: 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Profiles (Perfis). 4 Selecione um perfil. 5 Selecione Object (Objeto) —> Assign a Profile to User(s) (Atribuir um Perfil a Usuários). 6 Na lista Assign Profile (Atribuir Perfil), selecione o usuário. 7 Clique em Ok. ..................................................................................................................................................... 16-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 67.
    Alterando e Eliminandoum Perfil ..................................................................................................................................................... Alterando e Eliminando um Perfil Alterando um Perfil ALTER PROFILE default ALTER PROFILE default FAILED_LOGIN_ATTEMPTS 3 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 60 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10; PASSWORD_GRACE_TIME 10; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Alterando um Perfil Use o comando ALTER PROFILE para alterar os limites de senha atribuídos a um perfil: ALTER PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [ACCOUNT_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ] Se desejar definir os parâmetros de senha para menos de um dia: 1 hora PASSWORD_LOCK_TIME = 1/24 10 minutos PASSWORD_LOCK_TIME = 10/1400 5 minutos PASSWORD_LOCK_TIME = 5/1440 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-19
  • 68.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Alterar um Perfil 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Profiles (Perfis). 4 Selecione o perfil. 5 Na guia Password (Senha), altere os detalhes nos parâmetros de senha. 6 Clique em Apply (Aplicar). Diretrizes As alterações em um perfil não afetam a sessão atual. As alterações serão usadas somente em sessões subseqüentes. ..................................................................................................................................................... 16-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 69.
    Alterando e Eliminandoum Perfil ..................................................................................................................................................... Eliminando um Perfil DROP PROFILE developer_prof; DROP PROFILE developer_prof; DROP PROFILE developer_prof CASCADE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Eliminando um Perfil Elimine um perfil usando o comando DROP PROFILE: DROP PROFILE profile [CASCADE] onde: profile é o nome do perfil a ser eliminado CASCADE revoga o perfil de usuários aos quais ele esteja atribuído. (O servidor Oracle atribuirá automaticamente o perfil DEFAULT a esses usuários. Especifique essa opção para eliminar um perfil que esteja atualmente atribuído a usuários.) Diretrizes • O perfil DEFAULT não pode ser eliminado. • Ao ser eliminado um perfil, essa alteração se aplica somente a sessões criadas posteriormente e não a sessões atuais. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-21
  • 70.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Eliminar um Perfil 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Profiles (Perfis). 4 Selecione o perfil. 5 Selecione Object (Objeto) —> Remove (Remover). 6 Clique em OK. ..................................................................................................................................................... 16-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 71.
    Controlando o Usodos Recursos ..................................................................................................................................................... Controlando o Uso dos Recursos Gerenciando Recursos com Perfis 1. Crie perfis com o comando CREATE PROFILE 2. Atribua perfis ao usuário com os comandos CREATE ou ALTER USER 3. Ative limites de recurso com o: – Parâmetro de inicialização RESOURCE_LIMIT – Comando ALTER SYSTEM ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Etapas Para Utilização de Limites de Recurso Use as seguintes etapas para controlar o uso de recursos com perfis: 1 Crie um perfil com o comando CREATE PROFILE para determinar os limites de recurso de senha. 2 Atribua perfis com o comando CREATE USER ou ALTER USER. 3 Imponha limites de recurso com o comando ALTER SYSTEM ou editando o arquivo de parâmetros de inicialização (e interrompendo e reiniciando a instância). Essas etapas serão abordadas detalhadamente na próxima seção. Observação: A imposição de limites de recurso não é necessária para ativar o gerenciamento de senha Oracle. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-23
  • 72.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Definindo Limites de Recurso em Nível de Sessão Recurso Descrição CPU_PER_SESSION Tempo total de CPU medido em centésimos de segundos SESSIONS_PER_USER No. de sessões simultâneas permitidas por nome de usuário CONNECT_TIME Tempo de conexão decorrido medido em minutos IDLE_TIME Períodos de inatividade medidos em minutos LOGICAL_READS_PER Número de blocos de dados _SESSION (leituras físicas e lógicas) PRIVATE_SGA Espaço privado na SGA medido em bytes (para MTS somente) ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Limites em Nível de Chamada e em Nível de Sessão Os limites de perfil podem ser impostos em nível de sessão, nível de chamada ou ambos. Os limites em nível de sessão são impostos para cada conexão. Quando um limite em nível de sessão é excedido: • É retornada uma mensagem de erro, por exemplo: ORA-02391: exceeded simultaneous SESSION_PER_USER limit (excedido o limite de SESSION_PER_USER simultâneo). • O servidor Oracle desconecta o usuário. Os limites em nível de chamada são impostos para cada chamada feita durante a execução de uma instrução SQL. Quando um limite em nível de chamada é excedido: • O processamento da instrução é paralisado. • É efetuado rollback da instrução. • Todas as instruções anteriores permanecem intactas. • A sessão do usuário permanece conectada. ..................................................................................................................................................... 16-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 73.
    Controlando o Usodos Recursos ..................................................................................................................................................... Definindo Limites de Recurso em Nível de Chamada Recurso Descrição CPU_PER_CALL Tempo de CPU por chamada em centésimos de segundo LOGICAL_READS_PER _CALL Número de blocos de dados que podem ser lidos por chamada ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Diretrizes • IDLE_TIME é calculado somente para o processo de servidor. Ele não leva em consideração atividade de aplicação. O limite IDLE_TIME não é afetado por execuções longas de consultas e outras operações. • LOGICAL_READS_PER_SESSION é uma limitação sobre o número total de leituras tanto da memória como do disco. Isso pode ser feito para garantir que nenhuma instrução completa de E/S poderá se acumular na memória e obstruir o disco. • PRIVATE_SGA se aplica somente ao executar a arquitetura MTS (multithreaded server - servidor multithread) e pode ser especificado em M ou K. Observação: A arquitetura MTS será abordada no curso Enterprise DBA Part 3: Network Administration. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-25
  • 74.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Criando um Perfil: Limite de Recurso CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2 CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. A Sintaxe do Comando CREATE PROFILE Crie um perfil usando o seguinte comando CREATE PROFILE: CREATE PROFILE profile LIMIT [SESSIONS_PER_USER max_value] [CPU_PER_SESSION max_value] [CPU_PER_CALL max_value] [CONNECT_TIME max_value] [IDLE_TIME max_value] [LOGICAL_READS_PER_SESSION max_value] [LOGICAL_READS_PER_CALL max_value] [COMPOSITE_LIMIT max_value] [PRIVATE_SGA max_bytes] onde: profile é o nome do perfil max_value é um número inteiro, UNLIMITED ou DEFAULT max_bytes é um número inteiro opcionalmente seguido por K ou M, UNLIMITED ou DEFAULT ..................................................................................................................................................... 16-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 75.
    Controlando o Usodos Recursos ..................................................................................................................................................... A Sintaxe do Comando CREATE PROFILE (continuação) UNLIMITED indica que um usuário a quem foi atribuído esse perfil pode usar uma quantidade ilimitada desse recurso DEFAULT indica que esse perfil está sujeito ao limite desse recurso, conforme especificado no perfil DEFAULT COMPOSITE_LIMIT limita o custo total de recursos de uma sessão expresso em unidades de serviço. A Oracle calcula o custo do recurso como a soma ponderada de: CPU_PER_SESSION CONNECT_TIME LOGICAL_READS_PER_SESSION PRIVATE_SGA Observação: A view de dicionário de dados RESOURCE_COST fornece os pesos atribuídos a diferentes recursos. Para obter informações sobre como especificar o peso de cada recurso da sessão, consulte o comando ALTER RESOURCE COST no SQL Reference Guide. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-27
  • 76.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Criar um Perfil 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Selecione a pasta Profiles (Perfis) e selecione Object (Objeto) —> Create (Criar). 4 Selecione Profile (Perfil) na lista e clique em Create. 5 Informe os parâmetros do recurso. 6 Clique em Create (Criar). ..................................................................................................................................................... 16-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 77.
    Controlando o Usodos Recursos ..................................................................................................................................................... Ativando Limites de Recurso • Defina o parâmetro de inicialização RESOURCE_LIMIT como TRUE • Imponha os limites de recurso ativando o parâmetro com o comando ALTER SYSTEM ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Controlando a Imposição de Limites de Recurso Ative ou desative a imposição de limites de recurso alterando o parâmetro de inicialização RESOURCE_LIMIT ou usando o comando ALTER SYSTEM. Parâmetro de Inicialização RESOURCE_LIMIT • Para ativar ou desativar a imposição de limites de recurso, altere esse parâmetro no arquivo de reinicialização e reinicie a instância. • Um valor TRUE ativa a imposição. • Um valor FALSE desativa a imposição (default). • Use esse parâmetro para ativar a imposição quando o banco de dados puder ser desativado. Comando ALTER SYSTEM • Para ativar ou desativar a imposição de limites de recurso para uma instância, use o comando ALTER SYSTEM. • A definição especificada com o comando ALTER SYSTEM permanecerá em vigor até ser alterada novamente ou até o banco de dados ser desativado. • Use esse comando para ativar ou desativar a imposição quando o banco de dados não puder ser desativado. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-29
  • 78.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Exibindo Informações de Senha e Limites de Recurso Exibindo Informações de Senha e Limites de Recurso • DBA_USERS – profile (perfil) – username (nome_usuário) – account_status (status_conta) – lock_date (data_bloqueio) – expiry_date (data_expiração) • DBA_PROFILES – profile (perfil) – resource_name (nome_recurso) – resource_type (tipo_recurso) (PASSWORD, KERNEL) – limit (limite) ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Exibindo Informações de Usuário Use DBA_USERS para obter informações sobre datas de expiração e bloqueio, e status de conta. SQL> SELECT username, password, account_status, 2 lock_date, expiry_date 3 FROM dba_users; USERNAME PASSWORD ACCOUNT_STATUS LOCK_DATE EXPIRY_DA -------- ------------------- --------------- ---------- ------- SYS 8A8F025737A9097A OPEN SYSTEM D4DF7931AB130E37 OPEN BOB 3B2BC8EE81975F69 OPEN OUTLN 4A3BA55E08595C81 OPEN DBSNMP E066D214D5421CCC OPEN TODD BB69FBB77CFA6B9A OPEN KAY 957C7EF29CC223FC LOCKED 24-JUN-99 SCOTT F894844C34402B67 OPEN 10-JUL-99 ..................................................................................................................................................... 16-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 79.
    Exibindo Informações deSenha e Limites de Recurso ..................................................................................................................................................... Exibindo Informações de Perfil Consulte a view DBA_PROFILES para exibir as informações de perfil de senha: SQL> SELECT * FROM dba_profiles 2 WHERE resource_type='PASSWORD' 3 AND profile=’GRACE_5’; PROFILE RESOURCE_NAM RESOURCE LIMIT ------- ------------------------ -------- --------- GRACE_5 FAILED_LOGIN_ATTEMPTS PASSWORD 3 GRACE_5 PASSWORD_LIFE_TIME PASSWORD 30 GRACE_5 PASSWORD_REUSE_TIME PASSWORD 30 GRACE_5 PASSWORD_REUSE_MAX PASSWORD UNLIMITED GRACE_5 PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT GRACE_5 PASSWORD_LOCK_TIME PASSWORD UNLIMITED GRACE_5 PASSWORD_GRACE_TIME PASSWORD 5 Junte as views de dicionário de dados DBA_USERS e DBA_PROFILES para exibir os limites de recurso do usuário SCOTT. SQL> SELECT p.profile, p.resource_name, p.limit 2 FROM dba_users u, dba_profiles p 3 WHERE p.profile=u.profile AND 4 username=’SCOTT’ AND 5 p.resource_type=’KERNEL’; PROFILE RESOURCE_NAME LIMIT --------------- -------------------------- -------- DEVELOPER_PROF COMPOSITE_LIMIT DEFAULT DEVELOPER_PROF SESSIONS_PER_USER 2 DEVELOPER_PROF CPU_PER_SESSION 10000 DEVELOPER_PROF CPU_PER_CALL DEFAULT DEVELOPER_PROF LOGICAL_READS_PER_SESSION DEFAULT DEVELOPER_PROF LOGICAL_READS_PER_CALL DEFAULT DEVELOPER_PROF IDLE_TIME 60 DEVELOPER_PROF CONNECT_TIME 480 DEVELOPER_PROF PRIVATE_SGA DEFAULT ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 16-31
  • 80.
    Lição 16: GerenciandoRecursos e Segurança de Senha ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Administrar senhas • Administrar perfis • Administrar limites de recurso ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Referência Rápida Contexto Referência Parâmetros de inicialização RESOURCE_LIMIT Views de desempenho dinâmicas Nenhuma Views de dicionário de dados DBA_PROFILES DBA_USERS Comandos CREATE PROFILE ALTER PROFILE DROP PROFILE ALTER USER Procedimentos e funções armazenados VERIFY_FUNCTION ..................................................................................................................................................... 16-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 81.
    17 ................................. Gerenciando Usuários
  • 82.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá fazer o seguinte: • Criar novos usuários de banco de dados • Alterar e eliminar usuários de banco de dados existentes • Monitorar informações sobre usuários existentes ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 17-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 83.
    Visão Geral ..................................................................................................................................................... Visão Geral Usuários e Segurança Bloqueio Tablespace de conta default Mecanismo de Tablespace autenticação temporário Domínio de segurança Privilégios Cotas de de tablespace atribuição Privilégios Limites de diretos recursos ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Domínio de Segurança O administrador de banco de dados define os nomes dos usuários que têm permissão para acessar um banco de dados. Um domínio de segurança estabelece as definições que se aplicam ao usuário. Mecanismo de Autenticação Um usuário que precisa ter acesso ao banco de dados pode ser autenticado por um dos elementos a seguir: • Banco de dados • Sistema operacional • Rede O meio de autenticação é especificado no momento em que o usuário é definido no banco de dados e pode ser alterado posteriormente. Esta lição aborda apenas a autenticação através do banco de dados e do sistema operacional. Observação • Consulte a autenticação do S/O usando atribuições na lição "Conceitos Básicos do Oracle". • A autenticação por rede será abordada no curso Enterprise DBA Part 3: Network Administration. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-3
  • 84.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Cotas de Tablespace As cotas de tablespace controlam a quantidade de espaço de armazenamento físico alocado para um usuário nos tablespaces do banco de dados. Tablespace Default O tablespace default define a localização onde os segmentos criados por um usuário serão armazenados se o usuário não especificar explicitamente um tablespace no momento que o segmento for criado. Tablespace Temporário O tablespace temporário define onde as extensões serão alocadas pelo servidor Oracle se o usuário executar uma operação que exija gravar dados de classificação no disco. Bloqueio de Contas As contas podem ser bloqueadas para impedir que um usuário estabeleça logon no banco de dados. Isso pode ser definido para ocorrer automaticamente, ou o administrador de banco de dados pode bloquear ou desbloquear contas manualmente. Limites de Recursos Podem ser estabelecidos limites para o uso de recursos, como hora da CPU, E/S lógica e número de sessões abertas pelo usuário. Os limites de recursos serão abordados no curso Oracle Enterprise DBA Part 2: Performance and Tuning. Privilégios Diretos Os privilégios são usados para controlar as ações que um usuário pode executar em um banco de dados. Privilégios de Atribuições Um usuário pode ter privilégios concedidos indiretamente através do uso de atribuições. Os privilégios concedidos diretamente e através de atribuições serão abordados nas lições "Gerenciando Privilégios" e "Gerenciando Atribuições". Esta lição aborda a definição de um usuário com o mecanismo de autenticação apropriado, limitando o uso de espaço pelos usuários no sistema e controlando manualmente o bloqueio de contas. ..................................................................................................................................................... 17-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 85.
    Visão Geral ..................................................................................................................................................... Esquema de Banco de Dados Tabelas Gatilhos Restrições Índices Views Seqüências Unidades de programa armazenado Sinônimos Tipos de dados definidos pelo usuário Vínculos de banco de dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que É um Esquema? Um esquema é um conjunto determinado de objetos, como tabelas, views, clusters, procedimentos e pacotes, associados a um usuário em particular. Quando o usuário de um banco de dados for criado, um esquema correspondente com o mesmo nome será criado para esse usuário. Um usuário pode ser associado apenas a um esquema do mesmo nome e, portanto, nome_de_usuário e esquema são em geral usados de maneira alternada. O slide mostra alguns objetos que os usuários podem possuir em um banco de dados Oracle. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-5
  • 86.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Criando Novos Usuários de Banco de Dados Lista de Verificação Para Criar Usuários 1. Escolha um nome de usuário e um mecanismo de autenticação. 2. Identifique os tablespaces nos quais o usuário precisa armazenar objetos. 3. Decida sobre as cotas para cada tablespace. 4. Atribua um tablespace default e um temporário. 5. Crie um usuário. 6. Conceda privilégios e atribuições ao usuário. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 17-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 87.
    Criando Novos Usuáriosde Banco de Dados ..................................................................................................................................................... Criando um Novo Usuário: Autenticação de Banco de Dados Defina a senha inicial: CREATE USER peter IDENTIFIED BY my1stson DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA 15m ON data PASSWORD EXPIRE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use o comando a seguir para criar um novo usuário: CREATE USER user IDENTIFIED {BY password | EXTERNALLY} [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace ] ...] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK }] [ PROFILE { profile | DEFAULT }] onde: user é o nome do usuário BY password especifica que o usuário será autenticado pelo banco de dados e precisará fornecer uma senha quando estabelecer logon EXTERNALLY especifica que o usuário será autenticado pelo sistema operacional GLOBALLY AS especifica que o usuário será autenticado external_name globalmente pelo nome externo especificado ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-7
  • 88.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Sintaxe (continuação) DEFAULT TEMPORARY TABLESPACE identifica o tablespace default ou temporário para o usuário QUOTA define o espaço máximo permitido para os objetos que pertencem ao usuário no tablespace tablespace (Quota pode ser definido como um integer (número inteiro) de bytes ou kilobytes e megabytes. A palavra-chave UNLIMITED é usada para especificar que os objetos de propriedade do usuário podem utilizar todo o espaço que estiver disponível no tablespace. Por default, nenhum usuário possui cotas em qualquer tablespace.) PASSWORD EXPIRE força o usuário a redefinir a senha quando o usuário estabelece logon no banco de dados usando SQL Plus. (Essa opção é válida apenas se o usuário for autenticado pelo banco de dados.) ACCOUNT LOCK/ UNLOCK pode ser usado para bloquear ou desbloquear a conta do usuário explicitamente (UNLOCK é o default.) PROFILE é usado para controlar a utilização de recursos e especificar o mecanismo de controle de senha a ser usado para o usuário Observação: Os perfis serão abordados na lição "Gerenciando Perfis". É obrigatório haver um método de autenticação de senha. Se uma senha for especificada, ela será mantida pelo servidor Oracle no dicionário de dados. Os mecanismos de controle de senha fornecidos pelo servidor Oracle ficam disponíveis quando os usuários são autenticados pelo servidor. ..................................................................................................................................................... 17-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 89.
    Criando Novos Usuáriosde Banco de Dados ..................................................................................................................................................... Sintaxe (continuação) Depois que a validade da senha for definida, quando o usuário estabelecer logon usando SQL Plus, a mensagem a seguir será exibida no momento de logon e o usuário será solicitado a informar uma nova senha: ERROR: ORA-28001: the account has expired Changing password for PETER Old password: New password: Retype new password: Password changed ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-9
  • 90.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Criar um Novo Usuário 1 Inicialize o Security Manager e conecte-se diretamente ao banco de dados Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Selecione a pasta Users (Usuários) e selecione Create from the right mouse menu (Criar com menu do botão direito do mouse). 4 Especifique as informações de usuário na página General (Geral) da folha de propriedades. 5 Especifique as cotas usando a página Quotas (Cotas). 6 Clique em Create (Criar). Selecione um usuário e, em seguida, Object (Objeto) —> Create Like (Criar Como) na barra de menus para criar um usuário com as mesmas cotas e os privilégios de um usuário de banco de dados existente. Observação: O Oracle Security Manager concede automaticamente a atribuição CONNECT a qualquer usuário criado com a ferramenta. Essa atribuição será abordada na lição "Gerenciando Atribuições". ..................................................................................................................................................... 17-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 91.
    Criando Novos Usuáriosde Banco de Dados ..................................................................................................................................................... Criando um Novo Usuário: Autenticação do Sistema Operacional Use OS_AUTHENT_PREFIX Exemplo: os User = user15 OS_AUTHENT_ Usuário de Possível Login PREFIX Banco de Dados Remoto OS_ OS_USER15 Não string vazia USER15 Não "" OPS$ OPS$USER15 (default) (default) Sim ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Autenticação do Sistema Operacional Use a cláusula IDENTIFIED EXTERNALLY do comando CREATE USER para especificar que um usuário deve ser autenticado pelo sistema operacional. Em geral, essa opção é útil quando o usuário estabelece logon diretamente na máquina na qual o servidor Oracle está em execução. Nome de Usuário para Autenticação do Sistema Operacional O parâmetro de inicialização OS_AUTHENT_PREFIX é usado para especificar o formato dos nomes de usuário para autenticação do sistema operacional. O valor default é OPS$ para manter retrocompatibilidade com versões anteriores do servidor Oracle. Para definir o prefixo como um valor NULL, especifique esse parâmetro de inicialização como: OS_AUTHENT_PREFIX = ““ O exemplo no slide mostra como um usuário, USER15, é definido no banco de dados. Ele especifica que o usuário do sistema operacional user15 terá permissão de acesso ao banco de dados sem precisar de qualquer validação do servidor Oracle. Portanto, para usar o SQL Plus para estabelecer logon no usuário UNIX do sistema, user15 precisa informar o comando a seguir no sistema operacional: $ sqlplus / ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-11
  • 92.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Nome de Usuário para Autenticação do Sistema Operacional (continuação) Observação • O OS_AUTHENT_PREFIX=OPS$ oferece a flexibilidade de ter um usuário autenticado pelo sistema operacional ou pelo servidor Oracle. Nesse caso, o DBA pode criar o usuário informando um comando desta forma: CREATE USER ops$user IDENTIFIED BY senha ... Um usuário que estabeleça logon na máquina em que está executando o servidor Oracle não precisa fornecer uma senha. Se o usuário se conectar a partir de um cliente remoto, ele poderá conectar-se fornecendo a senha. • A definição de um outro parâmetro de inicialização, REMOTE_OS_AUTHENT=TRUE, especifica que um usuário pode ser autenticado por um sistema operacional remoto. O valor default como FALSE indica que um usuário pode ser autenticado somente pela máquina que está executando o servidor Oracle. Use esse parâmetro com cuidado, porque há um problema de segurança em potencial. • Se há usuários no banco de dados que são autenticados pelo sistema operacional, a alteração de OS_AUTHENT_PREFIX pode impedir que esses usuários estabeleçam logon no banco de dados. ..................................................................................................................................................... 17-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 93.
    Criando Novos Usuáriosde Banco de Dados ..................................................................................................................................................... Criando um Novo Usuário: Diretrizes • Escolha uma senha padrão inicialmente; use a autenticação de s/o esporadicamente. • Use a palavra-chave EXPIRE para forçar os usuários a redefinirem suas senhas. • Sempre atribua um tablespace temporário. • Restrinja as cotas a poucos usuários; use QUOTA UNLIMITED com cuidado. • Ensine os usuários: – A se conectarem – A alterar a senha ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Diretrizes Para Criar um Novo Usuário • Após a criação da conta do usuário, passe as informações para o usuário. • Mostre ao usuário como conectar-se ao servidor Oracle e como alterar a senha. • O tablespace temporário default é SYSTEM e pode causar a fragmentação do tablespace SYSTEM, de forma que é importante especificar o tablespace temporário para cada usuário. • DEFAULT TABLESPACE é um recurso conveniente. Apesar de o default ser SYSTEM, um usuário não pode criar qualquer objeto nesse tablespace, a não ser espaço atribuído explicitamente. • Um usuário precisa de cotas em algum tablespace para armazenar objetos de usuário. Como os segmentos temporários são criados e removidos pelo servidor Oracle, os usuários não precisam de cotas em tablespaces temporários. De forma semelhante, um usuário não precisa de cotas em tablespaces destinados a segmentos de rollback. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-13
  • 94.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Alterando e Eliminando Usuários de Banco de Dados Alterando a Cota de Usuário no Tablespace ALTER ALTER USER USER peter peter QUOTA QUOTA 0 ON 0 ON data; data; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Modificando Cotas de Tablespace Você pode precisar modificar cotas de tablespace nas situações a seguir: • Quando as tabelas de um usuário demonstrarem um crescimento não previsto • Quando uma aplicação for aprimorada e precisar de tabelas ou índices adicionais • Quando os objetos forem reorganizados e colocados em diferentes tablespaces Sintaxe Use o comando a seguir para modificar cotas de tablespace ou reatribuir tablespaces: ALTER USER user [ DEFAULT TABLESPACE tablespace] [ TEMPORARY TABLESPACE tablespace] [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] ... ] Depois que uma cota em 0 for atribuída, os objetos do usuário permanecerão no tablespace revogado, mas não poderão ser alocados em qualquer espaço novo. Por exemplo, se uma tabela que tem 10 MB existir no tablespace data01, e a cota do tablespace data01 for alterada para 0, nenhuma extensão nova poderá ser alocada para essa tabela. As opções que não foram alteradas permanecerão inalteradas. ..................................................................................................................................................... 17-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 95.
    Alterando e EliminandoUsuários de Banco de Dados ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager Para Modificar Cotas de Tablespace 1 Inicialize o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Users (Usuários). 4 Selecione o nome de usuário. 5 Informe os detalhes na página Quotas (Cotas) da folha de propriedades. 6 Clique em Apply (Aplicar). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-15
  • 96.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Eliminando Usuários Eliminando um Usuário DROP USER peter; DROP USER peter; Use a cláusula CASCADE se o esquema contiver objetos. DROP USER peter CASCADE; DROP USER peter CASCADE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe DROP USER user [CASCADE] Diretrizes • A opção CASCADE elimina todos os objetos do esquema antes de eliminar o usuário. Isso deve ser especificado se o esquema contiver objetos. • Um usuário que, no momento, esteja conectado ao servidor Oracle não poderá ser eliminado. ..................................................................................................................................................... 17-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 97.
    Monitorando Informações SobreUsuários ..................................................................................................................................................... Monitorando Informações Sobre Usuários Monitorando Usuários DBA_USERS DBA_TS_QUOTAS DBA_TS_QUOTAS USERNAME USERNAME USERNAME USER_ID TABLESPACE_NAME TABLESPACE_NAME CREATED BYTES BYTES ACCOUNT_STATUS MAX_BYTES MAX_BYTES LOCK_DATE BLOCKS BLOCKS EXPIRY_DATE MAX_BLOCKS MAX_BLOCKS DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Cotas de Tablespace Use a consulta a seguir para verificar as cotas de tablespace para o usuário SCOTT: SQL> SELECT tablespace_name, blocks, max_blocks,bytes, max_bytes 2 FROM dba_ts_quotas 3 WHERE username = 'SCOTT'; TABLESPACE_NAME BLOCKS MAX_BLOCKS BYTES MAX_BYTES --------------- ------- ---------- ------- ----------- DATA01 10 -1 20480 -1 1 row selected. Um valor -1 na coluna MAX_BLOCKS ou MAX_BYTES indica que o usuário possui cotas ilimitadas em um tablespace. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-17
  • 98.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... Status da Conta de Usuário A consulta a seguir lista todos os usuários, o status de suas contas e os tablespaces temporários: SQL> SELECT username, account_status, temporary_tablespace 2 FROM dba_users; USERNAME ACCOUNT_STATUS TEMPORARY_TABLESPACE --------------- ---------------- -------------------- SYS OPEN TEMP SYSTEM OPEN TEMP DBSNMP OPEN TEMP SCOTT OPEN TEMP 4 rows selected. ..................................................................................................................................................... 17-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 99.
    Sumário ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Criar usuários especificando o mecanismo de senha apropriado • Controlar a utilização de espaço pelos usuários ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Referência Rápida Contexto Referência Parâmetros de inicialização OS_AUTHENT_PREFIX REMOTE_OS_AUTHENT Views de dicionário de dados DBA_USERS DBA_TS_QUOTAS Comandos CREATE USER ALTER USER DROP USER ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 17-19
  • 100.
    Lição 17: GerenciandoUsuários ..................................................................................................................................................... ..................................................................................................................................................... 17-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 101.
    18 ................................. Gerenciando Privilégios
  • 102.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá fazer o seguinte: • Identificar privilégios de sistema e objeto • Conceder e revogar privilégios • Controlar a autenticação do sistema operacional ou do arquivo de senhas • Identificar recursos de auditoria ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 18-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 103.
    Visão Geral ..................................................................................................................................................... Visão Geral Gerenciando Privilégios Dois tipos de privilégios: • Sistema: Permite que usuários executem determinadas ações no banco de dados • Objeto: Permite que usuários acessem e manipulem um objeto específico ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Privilégios de Sistema Cada privilégio de sistema permite que um usuário execute determinada operação de banco de dados ou classe de operação do banco de dados. Essas operações incluem criar, eliminar e alterar tabelas, views, segmentos de rollback e procedimentos. Privilégios de Objeto Cada privilégio de objeto permite que um usuário execute determinada ação em um objeto específico, como uma tabela, view, seqüência, procedimento, função ou pacote. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-3
  • 104.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Privilégios de Sistema Privilégios de Sistema • Existem cerca de 126 privilégios de sistema. • A palavra-chave ANY nos privilégios significa que os usuários têm o privilégio em todos os esquemas. • O comando GRANT adiciona um privilégio a um usuário ou grupo de usuários. • O comando REVOKE deleta os privilégios. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que São Privilégios de Sistema? • Existem aproximadamente 126 privilégios de sistema e o número continua a crescer. • Os privilégios podem ser classificados da seguinte maneira: – Privilégios que permitem operações amplas do sistema; por exemplo, CREATE SESSION, CREATE TABLESPACE – Privilégios que permitem o gerenciamento de objetos no próprio esquema de um usuário; por exemplo, CREATE TABLE – Privilégios que permitem o gerenciamento de objetos em qualquer esquema; por exemplo, CREATE ANY TABLE • Os privilégios podem ser controlados pelos comandos DDL (Data Definition Language, linguagem de definição de dados) GRANT e REVOKE, que adicionam e revogam privilégios de sistema para o usuário ou para uma atribuição (consulte a lição "Mantendo Atribuições"). Observação: Os usuários com privilégios ANY podem acessar tabelas de dicionário, exceto as com prefixo USER_, ALL, e quaisquer views para as quais os privilégios tenham sido concedidos a PUBLIC. ..................................................................................................................................................... 18-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 105.
    Privilégios de Sistema ..................................................................................................................................................... Privilégios de Sistema: Exemplos Categoria Exemplos INDEX CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX TABLE CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE SESSION CREATE SESSION ALTER SESSION RESTRICTED SESSION TABLESPACE CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Privilégios de Sistema: Exemplos • Não existe privilégio CREATE INDEX. • Privilégios, como CREATE TABLE, CREATE PROCEDURE ou CREATE CLUSTER, incluem a eliminação desses objetos. • CREATE TABLE inclui os comandos CREATE INDEX e ANALYZE. O usuário precisa ter uma cota do tablespace ou ter recebido a concessão UNLIMITED TABLESPACE. • UNLIMITED TABLESPACE não pode ser concedido a uma atribuição. • Para truncar uma tabela, é necessário o privilégio DROP ANY TABLE. Observação: Para obter uma lista completa, consulte o capítulo "Managing User Privileges" do Oracle Server Administrator’s Guide Release 8.1, ou consulte a view SYSTEM_PRIVILEGE_MAP. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-5
  • 106.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Concedendo Privilégios de Sistema Concedendo Privilégios de Sistema GRANT CREATE SESSION, CREATE TABLE TO managers; GRANT CREATE SESSION, CREATE TABLE TO managers; GRANT CREATE SESSION TO scott GRANT CREATE SESSION TO scott WITH ADMIN OPTION; WITH ADMIN OPTION; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use o comando a seguir para conceder um privilégio de sistema: GRANT {system_priv|role} [, {system_priv|role} ]... TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]... [WITH ADMIN OPTION] onde: system_priv especifica o privilégio de sistema a ser concedido role especifica o nome da atribuição a ser concedida PUBLIC concede o privilégio de sistema a todos os usuários WITH ADMIN OPTION permite que o concessionário conceda o privilégio ou a atribuição a outros usuários ou atribuições ..................................................................................................................................................... 18-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 107.
    Concedendo Privilégios deSistema ..................................................................................................................................................... Diretrizes • Para conceder um privilégio de sistema, é necessário que o privilégio WITH ADMIN OPTION tenha sido concedido. • O concessionário com ADMIN OPTION pode conceder a atribuição ou privilégio de sistema com ADMIN OPTION. • Qualquer usuário com o privilégio de sistema GRANT ANY ROLE pode conceder qualquer atribuição em um banco de dados. • O concessionário com ADMIN OPTION pode conceder privilégio de sistema a qualquer usuário ou atribuição ou revogar privilégio de qualquer usuário ou atribuição no banco de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-7
  • 108.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager para Conceder Privilégios de Sistema 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Selecione o nome de usuário ou atribuição ao qual você deseja conceder o privilégio. 4 Selecione Tab (Guia): System Privileges (Privilégios de Sistema). 5 Selecione o privilégio de sistema a ser concedido. 6 Como opção, marque a caixa WITH ADMIN OPTION. 7 Clique em Apply (Aplicar). ..................................................................................................................................................... 18-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 109.
    Autenticação do Arquivode Senhas ..................................................................................................................................................... Autenticação do Arquivo de Senhas Privilégios SYSDBA e SYSOPER Categoria Exemplos SYSOPER STARTUP SHUTDOWN ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE ALTER TABLESPACE BEGIN/END BACKUP RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSDBA Privilégios SYSOPER WITH ADMIN OPTION CREATE DATABASE RECOVER DATABASE UNTIL ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Privilégios SYSDBA e SYSOPER Na lição "Conceitos Básicos do Oracle", os privilégios de sistema SYSDBA e SYSOPER foram introduzidos para especificar a autenticação com um arquivo de senhas. Somente administradores de banco de dados devem poder se conectar ao banco de dados com privilégios de administrador. A conexão como SYSDBA concede a um usuário privilégios irrestritos para executar qualquer operação em um banco de dados ou em objetos de um banco de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-9
  • 110.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Autenticação do Arquivo de Senhas 1. Verifique se o arquivo de senhas foi criado; se não tiver sido, crie-o usando ORAPWD. 2. Verifique se o parâmetro de inicialização REMOTE_LOGIN_PASSWORD_FILE foi definido como EXCLUSIVE. 3. Conceda privilégios SYSOPER e SYSDBA a usuários. 4. Consulte V$PWFILE_USERS para verificar os membros do arquivo de senhas. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Ativar a Autenticação do Arquivo de Senhas Verifique se o arquivo de senhas foi criado; se não tiver sido, use o utilitário de senha ORAPWD para criá-lo. Verifique se o parâmetro de inicialização REMOTE_LOGIN_PASSWORD_FILE foi definido como EXCLUSIVE. O administrador do banco de dados pode adicionar usuários ao arquivo de senhas concedendo os privilégios de sistema SYSOPER ou SYSDBA. WITH ADMIN OPTION não pode ser usado para conceder esses privilégios. Somente usuários que estejam conectados no momento como SYSDBA podem conceder os privilégios de sistema SYSDBA ou SYSOPER a outro usuário ou revogá-los desse usuários. Esses privilégios não podem ser concedidos a atribuições, porque uma atribuição não está disponível antes de uma inicialização de banco de dados. Exiba V$PWFILE_USERS para mostrar os usuários aos quais foram concedidos os privilégios SYSDBA ou SYSOPER. SQL> SELECT * FROM v$pwfile_users; USERNAME SYSDB SYSOP ------------------------- ----- ----- INTERNAL TRUE TRUE SYS TRUE TRUE 2 rows selected. ..................................................................................................................................................... 18-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 111.
    Exibindo Privilégios deSistema ..................................................................................................................................................... Exibindo Privilégios de Sistema Exibindo Privilégios de Sistema Nível de Banco de Dados Nível de Sessão DBA_SYS_PRIVS SESSION_PRIVS • GRANTEE • PRIVILEGE • PRIVILEGE • ADMIN OPTION ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultando Privilégios de Sistema Consulte DBA_SYS_PRIVS para listar os privilégios de sistema concedidos a usuários e atribuições. SQL> SELECT * FROM DBA_SYS_PRIVS; GRANTEE PRIVILEGE ADM ---------- --------------- ----- ... SUMMIT SELECT ANY TABLE NO SYS DELETE ANY TABLE NO SYS EXECUTE ANY TYPE NO SYS INSERT ANY TABLE NO SYS SELECT ANY SEQUENCE NO SYS SELECT ANY TABLE YES SYS UPDATE ANY TABLE NO SYSTEM UNLIMITED TABLESPAC YES ... ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-11
  • 112.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Consultando Privilégios de Sistema (continuação) A view SESSION_PRIVS lista os privilégios que estão disponíveis na sessão atual para um usuário — no exemplo, para o usuário SUMMIT. SQL> SELECT * FROM session_privs; PRIVILEGE ---------------------------------------- CREATE SESSION ALTER SESSION CREATE TABLE SELECT ANY TABLE CREATE CLUSTER CREATE SYNONYM CREATE VIEW CREATE SEQUENCE CREATE DATABASE LINK CREATE PROCEDURE CREATE TRIGGER CREATE TYPE 12 rows selected. Observação: A view DBA_SYS_PRIVS mostra todos os privilégios de sistema concedidos a atribuições e usuários no nível do banco de dados, enquanto SESSION_PRIVS mostra os privilégios atuais da sessão, no que se refere tanto a privilégios concedidos diretamente quanto a atribuições que tenham sido ativadas (consulte a lição "Gerenciando Atribuições"). ..................................................................................................................................................... 18-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 113.
    Exibindo Privilégios deSistema ..................................................................................................................................................... Restrições do Privilégio de Sistema O7_DICTIONARY_ACCESSIBILITY = TRUE • Reverte para o comportamento do Oracle7 • Remove as restrições sobre privilégios de sistema com a palavra-chave ANY • TRUE é a opção default ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Impedir Acesso Não-autorizado ao Dicionário O mecanismo de proteção do dicionário do Oracle8 impede que usuários não-autorizados acessem objetos de dicionário. O acesso a objetos de dicionário é restrito aos usuários com os privilégios de sistema SYSDBA e SYSOPER. Os privilégios de sistema que permitem acesso a objetos em outros esquemas não permitem acesso a objetos de dicionário. Por exemplo, o privilégio SELECT ANY TABLE permite acesso a views e tabelas em outros esquemas, mas não permite que você efetue seleções de objetos de dicionário. Se o parâmetro for definido como TRUE, que é o default, o acesso a objetos no esquema SYS será permitido (comportamento do Oracle7). Se esse parâmetro for definido como FALSE, os privilégios de sistema que permitem acesso a objetos em outros esquemas não permitirão acesso a objetos no esquema do dicionário. Por exemplo, se O7_DICTIONARY_ACCESSIBILITY=FALSE, a instrução SELECT ANY TABLE permitirá o acesso a views ou tabelas em qualquer esquema, exceto no esquema SYS. O privilégio de sistema EXECUTE ANY PROCEDURE permite acesso aos procedimentos em qualquer outro esquema, exceto no esquema SYS. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-13
  • 114.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Revogando Privilégios de Sistema Revogando Privilégios de Sistema REVOKE CREATE TABLE FROM karen; REVOKE CREATE TABLE FROM karen; REVOKE CREATE SESSION FROM scott; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use a sintaxe a seguir para revogar um privilégio de sistema: REVOKE {system_priv|role} [, {system_priv|role} ]... FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ] Observação • O comando REVOKE consegue revogar apenas privilégios que tenham sido concedidos diretamente com um comando GRANT. • A revogação de privilégios de sistema pode ter efeito sobre alguns objetos dependentes. Por exemplo, se SELECT ANY TABLE for concedido a um usuário e esse usuário tiver concedido procedimentos ou views que utilizem uma tabela em algum outro esquema, a revogação do privilégio invalidará os procedimentos ou views. ..................................................................................................................................................... 18-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 115.
    Revogando Privilégios deSistema ..................................................................................................................................................... Revogando Privilégios de Sistema Usando WITH ADMIN OPTION DBA KAREN SCOTT CONCEDER REVOGAR DBA KAREN SCOTT ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-15
  • 116.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Revogando Privilégios de Sistema Usando WITH ADMIN OPTION RESULTADO DBA KAREN SCOTT ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Revogando Privilégios de Sistema Usando WITH ADMIN OPTION Não existe efeito em cascata quando um privilégio de sistema é revogado, independentemente de ele ter sido concedido com WITH ADMIN OPTION. O cenário a seguir ilustra esse fato: Cenário 1 O DBA concede o privilégio de sistema CREATE TABLE a KAREN com ADMIN OPTION. 2 KAREN cria uma tabela. 3 KAREN concede o privilégio de sistema CREATE TABLE a SCOTT. 4 SCOTT cria uma tabela. 5 O administrador do banco de dados revoga o privilégio de sistema CREATE TABLE de KAREN. Resultado • A tabela de KAREN continua a existir, mas o usuário não pode criar novas tabelas. • SCOTT ainda tem a tabela e o privilégio de sistema CREATE TABLE. Observação: Na etapa 3 acima, se KAREN conceder privilégios com WITH ADMIN OPTION a SCOTT, SCOTT possivelmente poderá revogar o privilégio de KAREN. ..................................................................................................................................................... 18-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 117.
    Privilégios de Objeto ..................................................................................................................................................... Privilégiosde Objeto Privilégios de Objeto Priv. de objeto Tabela View Seqüência Procedimento ALTER √ √ DELETE √ √ EXECUTE √ INDEX √ INSERT √ √ REFERENCES √ SELECT √ √ √ UPDATE √ √ ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que São Privilégios de Objeto? Cada privilégio de objeto concedido autoriza o concessionário a executar alguma operação no objeto. A tabela acima resume os privilégios de objeto que podem ser concedidos em cada tipo de objeto. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-17
  • 118.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Concedendo Privilégios de Objeto Concedendo Privilégios de Objeto GRANT EXECUTE ON dbms_pipe TO public; GRANT EXECUTE ON dbms_pipe TO public; GRANT UPDATE(first_name, salary) ON employee TO karen WITH GRANT OPTION; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use este comando para conceder um privilégio de objeto: GRANT { object_priv [(column_list)] [, object_priv [(column_list)] ]... |ALL [PRIVILEGES]} ON [schema.]object TO {user|role|PUBLIC} [, {user|role|PUBLIC} ] [WITH GRANT OPTION] onde: object_priv especifica o privilégio de objeto a ser concedido column_list especifica uma coluna de view ou tabela. Pode ser especificado somente ao conceder os privilégios INSERT, REFERENCES ou UPDATE. ..................................................................................................................................................... 18-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 119.
    Concedendo Privilégios deObjeto ..................................................................................................................................................... Sintaxe (continuação) ALL concede todos os privilégios do objeto que foram concedidos com WITH GRANT OPTION ON object identifica o objeto para o qual os privilégios devem ser concedidos WITH GRANT OPTION permite que o concessionário conceda os privilégios de objeto a outros usuários ou atribuições Diretrizes • Para conceder privilégios, o objeto precisa estar no seu esquema ou você precisa ter recebido o privilégio WITH GRANT OPTION. • Por default, se você for proprietário de um objeto, todos os privilégios sobre esse objeto serão obtidos automaticamente. • Tenha cuidado ao conceder privilégios sobre os seus objetos a outros usuários quando houver preocupação com segurança. • A opção WITH GRANT OPTION não pode ser usada para conceder privilégios a atribuições. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-19
  • 120.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Exibindo Privilégios de Objeto Exibindo Privilégios de Objeto DBA_TAB_PRIVS DBA_COL_PRIVS GRANTEE GRANTEE OWNER OWNER TABLE_NAME TABLE_NAME GRANTOR COLUMN_NAME PRIVILEGE GRANTOR GRANTABLE PRIVILEGE GRANTABLE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultar Privilégios de Objeto Consulte DBA_TAB_PRIVS para retornar todos os privilégios de objeto concedidos ao usuário especificado. SQL> SELECT * FROM dba_tab_privs 2 WHERE GRANTEE=’SUMMIT’ GRANTEE OWNER TABLE_NAME GRA PRIVILEGE GRA --------- ----- ----------- ----- ---------- ----- SUMMIT SYS RESUMES SYS READ NO 1 rows selected. Para listar todos os privilégios concedidos específicos da coluna, use esta consulta: SQL> SELECT * FROM dba_col_privs; GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA ------- ----- ---------- ---------- ------- --------- --- SYSTEM SUMMIT EMPLOYEE ID SUMMIT INSERT NO SYSTEM SUMMIT EMPLOYEE SALARY SUMMIT UPDATE NO 2 rows selected. ..................................................................................................................................................... 18-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 121.
    Revogando Privilégios deObjeto ..................................................................................................................................................... Revogando Privilégios de Objeto Revogando Privilégios de Objeto REVOKE execute ON dbms_pipe FROM scott; REVOKE execute ON dbms_pipe FROM scott; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use esta sintaxe para revogar um privilégio de objeto: REVOKE { object_priv [, object_priv ]... |ALL [PRIVILEGES] } ON [schema.]object FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ] [CASCADE CONSTRAINTS] onde: object_priv especifica o privilégio de objeto a ser concedido ALL revoga todos os privilégios de objeto concedidos ao usuário ON identifica o objeto sobre o qual os privilégios de objeto são revogados ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-21
  • 122.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Sintaxe (continuação) FROM identifica os usuários ou atribuições cujos privilégios de objeto são revogados CASCADE CONSTRAINTS elimina as restrições de integridade de referência definidas pela revogação usando os privilégios REFERENCES ou ALL Restrição Os concessores podem revogar privilégios somente dos usuários aos quais eles concederam privilégios. ..................................................................................................................................................... 18-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 123.
    Revogando Privilégios deObjeto ..................................................................................................................................................... Revogando Privilégios de Objeto Usando WITH GRANT OPTION SCOTT USUÁRIO 1 USUÁRIO 2 CONCEDER REVOGAR SCOTT USUÁRIO 1 USUÁRIO 2 ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-23
  • 124.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Revogando Privilégios de Objeto Usando WITH GRANT OPTION RESULTADO SCOTT USUÁRIO 1 USUÁRIO 2 ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Revogando Privilégios de Objeto Usando WITH GRANT OPTION A revogação de privilégios de objeto terá efeito em cascata quando os privilégios forem concedidos usando WITH GRANT OPTION. O cenário a seguir ilustra esse fato: Cenário 1 USUÁRIO 1 recebe o privilégio de objeto SELECT com GRANT OPTION. 2 USUÁRIO 1 concede o privilégio SELECT sobre EMP ao USUÁRIO 2. Resultado Posteriormente, o privilégio SELECT é revogado do USUÁRIO 1. Essa revogação também será aplicada em cascata para o USUÁRIO 2. ..................................................................................................................................................... 18-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 125.
    Diretrizes de Auditoria ..................................................................................................................................................... Diretrizesde Auditoria Diretrizes de Auditoria • Defina as finalidades da auditoria – Atividade de banco de dados suspeita – Reúna informações históricas • Defina o que você deseja auditar – Auditar usuários, instruções ou objetos – Por sessão – Com ou sem sucesso • Gerencie a trilha de auditoria – Monitorar o crescimento da trilha de auditoria – Proteger a trilha de auditoria de acesso não-autorizado ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Enfocando a Auditoria Restrinja a auditoria identificando primeiro os requisitos de auditoria e definindo as opções mínimas de auditoria que atenderão aos seus requisitos. A auditoria de objeto deve ser usada onde possível para reduzir o número de entradas geradas. Se for necessário usar auditoria de instrução ou privilégio, as seguintes definições poderão minimizar a geração de auditoria: • Especificação de usuários para auditoria • Auditoria por sessão e não por acesso • Auditoria de êxitos ou falhas, porém não ambos Os registros de auditoria podem ser gravados em SYS.AUD$ ou na trilha de auditoria do sistema operacional. A capacidade de usar a trilha de auditoria depende do sistema operacional. Monitorando o Crescimento da Trilha de Auditoria Se a trilha de auditoria ficar cheia, não será possível inserir mais registros de auditoria e as instruções auditadas não serão executadas com sucesso. Serão retornados erros a todos os usuários que emitirem uma instrução auditada. Você precisará liberar algum espaço na trilha de auditoria para que essas instruções possam ser executadas. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-25
  • 126.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Monitorando o Crescimento da Trilha de Auditoria (continuação) Para garantir que a trilha de auditoria não cresça com muita rapidez: • Ative a auditoria somente quando necessário. • Seja seletivo sobre as opções de auditoria especificadas. • Controle rigidamente a auditoria de objeto de esquema. Os usuários podem ativar a auditoria para os objetos de sua propriedade. • O privilégio AUDIT ANY também permite que um usuário ative a auditoria; portanto, conceda-o com parcimônia. Remova periodicamente os registros da trilha de auditoria com o comando DELETE ou TRUNCATE. Protegendo a Trilha de Auditoria Você deve proteger a trilha de auditoria para que não seja possível adicionar, modificar ou deletar informações de auditoria. Emita o comando: AUDIT delete ON sys.aud$ BY ACCESS; Para proteger a trilha de auditoria de deleções não-autorizadas, somente o DBA deverá ter a atribuição DELETE_CATALOG_ROLE. Removendo a Trilha de Auditoria do Tablespace SYSTEM À medida que são inseridos novos registros na trilha de auditoria do banco de dados, a tabela AUD$ pode crescer sem limites. Embora você não deva eliminar a tabela AUD$, é possível truncar ou deletar itens dessa tabela, porque as linhas são somente informativas e não são necessárias à execução da instância Oracle. Como a tabela AUD$ pode crescer e, em seguida, ser compactada, ela deve ser armazenada fora do tablespace SYSTEM. Para mover AUD$ para o tablespace AUDIT_TAB: 1 Certifique-se de que a auditoria esteja desativada no momento. 2 Digite este comando: ALTER TABLE aud$ MOVE TABLESPACE AUDIT_TAB; 3 Digite este comando: CREATE INDEX i_aud1 ON aud$(sessionid, ses$tid) TABLESPACE AUDIT_IDX; 4 Ative a auditoria para a instância. ..................................................................................................................................................... 18-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 127.
    Diretrizes de Auditoria ..................................................................................................................................................... Categorias de Auditoria • Auditoria de operações privilegiadas – Sempre auditadas – Inicialização, desativação e conexões SYSDBA • Auditoria de banco de dados – Ativada pelo DBA – Não pode registrar valores de coluna • Auditoria baseada em valor ou aplicação – Implementada através de código – Pode registrar valores de coluna – Usada para controlar alterações em tabelas ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Auditoria de Operações Privilegiadas O servidor Oracle sempre fará auditoria das seguintes ações relacionadas com banco de dados para a trilha de auditoria do sistema: • Inicialização da instância: É sempre gerado um registro de auditoria que especifica o usuário do S/O que inicializa a instância, o identificador do terminal, a data e timestamp, e se a auditoria de banco de dados está ou não ativada. • Desativação da instância: É sempre gerado um registro de auditoria que especifica o usuário de S/O que desativa a instância, o identificador do terminal, a data e o timestamp. • Conexões com o banco de dados com privilégios de administrador: É sempre gerado um registro de auditoria que especifica o usuário de S/O que está estabelecendo conexão com o servidor Oracle como SYSOPER ou SYSDBA para proporcionar responsabilidade dos usuários com privilégios de administrador. Auditoria de Banco de Dados A auditoria de banco de dados é a monitoração e o registro das ações de banco de dados do usuário selecionado. As informações sobre o evento são armazenadas na trilha de auditoria. A trilha de auditoria pode ser usada para investigar atividades suspeitas. Por exemplo, se um usuário não-autorizado estiver deletando dados de tabelas, o administrador do banco de dados poderá decidir auditar todas as conexões com o banco de dados em conjunto com as deleções com ou sem sucesso das linhas de tabelas no banco de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-27
  • 128.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Auditoria de Banco de Dados (continuação) A auditoria também pode ser usada para monitorar e reunir dados sobre atividades específicas de banco de dados. Por exemplo, o administrador do banco de dados pode reunir estatísticas sobre quais tabelas estão sendo atualizadas, quantas E/S lógicas estão sendo realizadas e quantos usuários simultâneos estão conectados em horários de pico. Auditoria Baseada em Valor A auditoria de banco de dados não pode registrar valores de coluna. Se for necessário controlar alterações feitas em colunas de banco de dados e os valores de coluna precisarem ser armazenados para cada alteração, use auditoria de aplicação. A auditoria de aplicação pode ser feita através de código de cliente, procedimentos armazenados ou gatilhos de banco de dados. ..................................................................................................................................................... 18-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 129.
    Usando a Auditoriade Banco de Dados ..................................................................................................................................................... Usando a Auditoria de Banco de Dados Auditoria de Banco de Dados Ativa auditoria de banco de dados Executa comando DBA Arq. de Usuário parâmetros Processo Especifica de servidor Analisa opções Gera trilha informações de auditoria de auditoria de auditoria Opções de auditoria Trilha de auditoria de S/O Banco Trilha de de dados auditoria ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Ativando e Desativando a Auditoria de Banco de Dados Após decidir o que deseja auditar, defina o parâmetro de inicialização AUDIT_TRAIL para ativar a auditoria da instância. Esse parâmetro indica se a trilha de auditoria será gravada em uma tabela de banco de dados ou na trilha de auditoria do sistema operacional. Sintaxe AUDIT_TRAIL = value onde value pode ser um dos itens a seguir: DB ativa a auditoria e direciona todos os registros de auditoria para a trilha de auditoria de banco de dados (SYS.AUD$) OS ativa a auditoria e direciona todos os registros de auditoria para a trilha de auditoria do sistema operacional (se permitido no sistema operacional) NONE desativa a auditoria. Esse é o valor default. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-29
  • 130.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Ativando a Auditoria de Banco de Dados (continuação) Os registros de auditoria não serão gravados na trilha de auditoria, exceto se o DBA tiver definido o parâmetro AUDIT_TRAIL como DB ou OS. Embora seja possível usar as instruções SQL AUDIT e NOAUDIT a qualquer momento, os registros serão gravados na trilha de auditoria somente se o DBA tiver definido o parâmetro AUDIT_TRAIL no arquivo de inicialização. Observação: O Guia de Instalação e Configuração do sistema operacional fornece informações sobre gravação de registros de auditoria na trilha de auditoria do S/O. Especificando Opções de Auditoria Em seguida, você define opções específicas de auditoria usando o comando AUDIT. Com o comando AUDIT, você pode indicar que comandos, usuários, objetos ou privilégios serão auditados. Pode também indicar se será gerado um registro de auditoria para cada ocorrência ou um registro por sessão. Se uma opção de auditoria não for mais necessária, você poderá desativá-la com o comando NOAUDIT. Execução de Instruções Quando os usuários executam instruções PL/SQL e SQL, o processo de servidor examina as opções de auditoria para determinar se a instrução que está sendo executada deve gerar um registro de auditoria. As instruções SQL contidas em unidades de programa PL/SQL são auditadas individualmente, conforme necessário, quando a unidade de programa é executada. Como views e procedimentos podem fazer referência a outros objetos de banco de dados, diversos registros de auditoria podem ser gerados em decorrência da execução de uma única instrução. Gerando Dados de Auditoria A geração e inserção de um registro de trilha de auditoria independe da transação de um usuário; portanto, se for efetuado o rollback da transação de um usuário, o registro da trilha de auditoria permanecerá intacto. Como o registro de auditoria é gerado durante a fase de execução, um erro de sintaxe, que ocorre durante a fase de análise, não provocará a geração de um registro de trilha de auditoria. Verificando Informações de Auditoria Examine as informações geradas durante a auditoria selecionando opções nas views de dicionário de dados de trilha de auditoria ou usando um utilitário de sistema operacional para exibir a trilha de auditoria do sistema operacional. Essa informação é usada para investigar atividades suspeitas e monitorar atividades de banco de dados. ..................................................................................................................................................... 18-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 131.
    Usando a Auditoriade Banco de Dados ..................................................................................................................................................... Ativando Opções de Auditoria • Auditoria de instrução AUDIT user; AUDIT user; • Auditoria de privilégio AUDIT select any table BY summit BY ACCESS; • Auditoria de objeto de esquema AUDIT LOCK ON summit.employee AUDIT LOCK ON summit.employee BY ACCESS WHENEVER SUCCESSFUL; BY ACCESS WHENEVER SUCCESSFUL; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Eventos Auditados por Solicitação Você pode especificar as opções de auditoria com o comando AUDIT. Esses registros de auditoria jamais são gerados por sessões estabelecidas pelo usuário SYS ou conexões como INTERNAL. As conexões estabelecidas por esses usuários ignoram determinados recursos internos do servidor Oracle para permitir a ocorrência de operações administrativas, como inicialização, desativação e recuperação de banco de dados. Auditoria de Instrução É possível auditar usando um tipo de instrução SQL ou de objeto. O exemplo de auditoria de instrução audita as instruções CREATE, ALTER e DROP USER de todos os usuários. As opções de auditoria de instrução são em geral amplas, auditando o uso de diversos tipos de ações relacionadas por opção. Por exemplo, AUDIT TABLE controla diversas instruções DDL, não importando em que tabela elas sejam emitidas. Você pode definir a auditoria de instrução para auditar os usuários selecionados ou todos os usuários no banco de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-31
  • 132.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Auditoria de Privilégio A auditoria de privilégio audita o uso de privilégios de sistema. No exemplo do slide, sempre que SUMMIT usar o privilégio SELECT ANY TABLE, será gerada uma entrada de auditoria. Uma entrada será gerada somente se SUMMIT consultar tabelas pertencentes a outros usuários para as quais ele não tenha recebido privilégios SELECT. Na auditoria, os privilégios de proprietário são verificados primeiro, seguido dos privilégios de objeto e, finalmente, dos privilégios de sistema. Assim, se o privilégio SELECT ANY TABLE de um usuário estiver sendo auditado e ele efetuar uma seleção em uma tabela de sua propriedade, o privilégio SELECT ANY TABLE não provocará a geração de um registro de auditoria, porque o usuário pode efetuar seleções na tabela usando seu privilégio de proprietário. Auditoria de Objeto de Esquema A auditoria de objeto de esquema audita instruções executadas em um objeto de esquema específico. No exemplo, é gerada uma entrada de trilha de auditoria quando um usuário executa com sucesso o comando LOCK no objeto SUMMIT.EMPLOYEE. Sintaxe Use este comando para ativar opções de auditoria: Auditoria de Privilégio ou Instrução AUDIT {statement|system_priv} [, {statement|system_priv} ]... [BY user [, user ]... ] [BY {SESSION|ACCESS} ] [WHENEVER [NOT] SUCCESSFUL] ..................................................................................................................................................... 18-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 133.
    Usando a Auditoriade Banco de Dados ..................................................................................................................................................... Sintaxe (continuação) Auditoria de Objeto AUDIT statement [, statement ]... ON {[schema.]object|DEFAULT} [BY {SESSION|ACCESS}] [WHENEVER [NOT] SUCCESSFUL] onde: statement especifica o tipo de instrução SQL ou objeto de esquema a ser auditado system_priv especifica o privilégio de sistema a ser auditado schema.schema-object identifica o objeto escolhido para auditoria DEFAULT define as opções do objeto especificado como opções de objeto default para objetos criados posteriormente user indica que somente os usuários da lista devem ser auditados. Se essa cláusula for omitida, as atividades de todos os usuários serão auditadas. BY SESSION faz o servidor Oracle inserir um registro por objeto de banco de dados na trilha de auditoria para cada sessão, não importando quantas instruções SQL do mesmo tipo sejam submetidas. Essa é a opção default, exceto para DDL. BY ACCESS faz o servidor Oracle inserir um registro na trilha de auditoria toda vez que uma instrução auditada for submetida. Para instruções DDL (Data Definition Language, linguagem de definição de dados), o servidor Oracle sempre audita por acesso. WHENEVER especifica que a auditoria deverá ser realizada somente na conclusão com ou sem sucesso de instruções SQL. O default é ambos. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-33
  • 134.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Sintaxe (continuação) Observação • Como registros de auditoria são gerados durante a fase de execução, erros de análise, como TABLE OR VIEW DOES NOT EXIST (Tabela ou view inexistente), não podem ser interceptados com a cláusula WHENEVER UNSUCCESSFUL. • As opções de auditoria de instrução e privilégio especificadas pelo comando AUDIT se aplicam somente a sessões posteriores, não à sessão atual. Por outro lado, alterações feitas em opções de auditoria de objeto de esquema entram em vigor imediatamente para a sessão atual. Desativando a Auditoria Use a instrução NOAUDIT para interromper a auditoria escolhida pelo comando AUDIT. Observação: Uma instrução NOAUDIT reverte o efeito de uma instrução AUDIT anterior. Observe que a instrução NOAUDIT deve ter a mesma sintaxe que a instrução AUDIT anterior e que ela reverte somente os efeitos dessa instrução específica. Assim, se uma instrução AUDIT (instrução A) ativar auditoria para um usuário específico e uma segunda (instrução B) ativar auditoria para todos os usuários, uma instrução NOAUDIT, que desativa a auditoria de todos os usuários, reverterá a instrução B, mas deixará a instrução A em vigor e continuará a auditar o usuário especificado pela instrução A. ..................................................................................................................................................... 18-34 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 135.
    Usando a Auditoriade Banco de Dados ..................................................................................................................................................... Exibindo Opções de Auditoria View de Dicionário de Dados Descrição ALL_DEF_AUDIT_OPTS Opções de auditoria default DBA_STMT_AUDIT_OPTS Opções de auditoria de instrução DBA_PRIV_AUDIT_OPTS Opções de auditoria de privilégio DBA_OBJ_AUDIT_OPTS Opções de auditoria de objeto de esquema ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Exibindo Resultados de Auditoria As views listadas acima contêm informações da trilha de auditoria. Veja a seguir em exemplo que mostra os registros de auditoria gerados quando uma série de instruções é executada: SQL> SELECT username, obj_name, action_name, priv_used 2 FROM sys.dba_audit_object 3 WHERE owner = 'SUMMIT' 4 AND obj_name = 'EMPLOYEE'; USERNAME OBJ_NAME ACTION_NAME PRIV_USED -------- -------- ----------- ---------------- SUMMIT EMPLOYEE SESSION REC ADAMS EMPLOYEE SESSION REC SYSTEM EMPLOYEE SESSION REC DELETE ANY TABLE 3 rows selected. Esses resultados são obtidos somente quando determinados eventos ocorrem no banco de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-35
  • 136.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Exibindo Resultados de Auditoria Exibindo Resultados de Auditoria View de Trilha de Auditoria Descrição DBA_AUDIT_TRAIL Todas as entradas de trilha de auditoria DBA_AUDIT_EXISTS Registros de AUDIT EXISTS/ NOT EXISTS DBA_AUDIT_OBJECT Registros relacionados a objetos de esquema DBA_AUDIT_SESSION Todas as entradas de conexão e desconexão DBA_AUDIT_STATEMENT Registros de auditoria de instrução ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Views de Trilha de Auditoria As views de dicionário de dados listadas contêm informações sobre opções de auditoria. Essas views são consultadas pelo administrador do banco de dados para determinar o que está sendo auditado. Por exemplo, a consulta a seguir mostra as opções de auditoria de privilégio que estão definidas: SQL> SELECT * FROM dba_priv_audit_opts; USER_NAME PRIVILEGE SUCCESS FAILURE ---------- ------------------- ------------ ----------- SUMMIT CREATE TABLE BY ACCESS BY ACCESS SYSTEM ALTER ANY TABLE BY ACCESS NOT SET SUMMIT ALTER ANY TABLE BY ACCESS NOT SET SYSTEM ALTER ANY PROCEDURE BY ACCESS NOT SET SUMMIT ALTER ANY PROCEDURE BY ACCESS NOT SET GRANT ANY PRIVILEGE BY ACCESS BY ACCESS 6 rows selected. ..................................................................................................................................................... 18-36 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 137.
    Sumário ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Controlar privilégios de sistema e objeto • Usar a auditoria de banco de dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 18-37
  • 138.
    Lição 18: GerenciandoPrivilégios ..................................................................................................................................................... Referência Rápida Contexto Referência Parâmetros de inicialização O7_DICTIONARY_ACCESSIBILITY AUDIT_TRAIL Views de desempenho dinâmicas Nenhuma Views de dicionário de dados DBA_SYS_PRIVS SESSION_PRIVS DBA_TAB_PRIVS DBA_COL_PRIVS ALL_DEF_AUDIT_OPTS AUDIT_ACTIONS DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION DBA_AUDIT_STATEMENT DBA_AUDIT_TRAIL DBA_OBJ_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_STMT_AUDIT_OPTS Comandos GRANT REVOKE AUDIT NOAUDIT Procedimentos e funções Nenhum empacotados ..................................................................................................................................................... 18-38 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 139.
    19 ................................. Gerenciando Atribuições
  • 140.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá executar o seguinte: • Criar e modificar atribuições • Controlar a disponibilidade de atribuições • Remover atribuições • Usar atribuições predefinidas • Exibir informações de atribuição a partir do dicionário de dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 19-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 141.
    Visão Geral ..................................................................................................................................................... Visão Geral Atribuições Usuários A B C Atribuições HR_MGR HR_CLERK Privilégios SELECT ON INSERT ON EMP EMP CREATE CREATE UPDATE TABLE SESSION ON EMP ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que É uma Atribuição? O Oracle oferece gerenciamento fácil e controlado de privilégios através de atribuições. Atribuições são grupos determinados de privilégios relacionados concedidos a usuários ou a outras atribuições. Elas são projetadas para facilitar a administração de privilégios no banco de dados. Características das Atribuições • São concedidas a usuários e são revogadas com os mesmos comandoutilizados para conceder ou revogar privilégios de sistema. • Pode ser concedida a qualquer usuário ou atribuição, exceto a si próprio (mesmo indiretamente). • Pode consistir tanto em privilégios de sistema como de objeto. • Pode ser ativada ou desativada para cada usuário ao qual essa atribuição tenha sido concedida. • Pode exigir uma senha para ser ativada. • Cada nome de atribuição deve ser exclusivo entre nomes de usuário e nomes de atribuição existentes. • Não pertencem a qualquer usuário; não estão em qualquer esquema. • Têm suas descrições armazenadas no dicionário de dados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-3
  • 142.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Benefícios das Atribuições • Concessão de privilégios reduzida • Gerenciamento dinâmico de privilégios • Disponibilidade seletiva de privilégios • Concedidas através do S/O • Sem revogações em cascata • Desempenho melhorado ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Concessão de Privilégios Reduzida Use atribuições para simplificar o gerenciamento de privilégios. Em vez de conceder o mesmo conjunto de privilégios a vários usuários, é possível conceder os privilégios a uma atribuição e, em seguida, conceder essa atribuição a cada usuário. Gerenciamento Dinâmico de Privilégios Se os privilégios associados a uma atribuição forem modificados, todos os usuários aos quais a atribuição tenha sido concedida obterão os privilégios modificados de forma automática e imediata. Disponibilidade Seletiva de Privilégios As atribuições podem ser ativadas e desativadas para colocar os privilégios em serviço ou para tirá-los de serviço temporariamente. A ativação de uma atribuição também é usada para verificar se ela foi concedida a um usuário. Concedida Através do Sistema Operacional É possível usar utilitários ou comandos do sistema operacional para designar atribuições a usuários no banco de dados. Sem Revogações em Cascata Os privilégios de objeto podem ser revogados sem causar revogações em cascata. Desempenho Melhorado Com a desativação das atribuições, há menos privilégios a serem verificados durante a execução da instrução. O uso de atribuições reduz o número de concessões armazenadas no dicionário de dados. ..................................................................................................................................................... 19-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 143.
    Criando e ModificandoAtribuições ..................................................................................................................................................... Criando e Modificando Atribuições Criando Atribuições CREATE ROLE sales_clerk; CREATE ROLE sales_clerk; CREATE ROLE hr_clerk IDENTIFIED BY bonus; CREATE ROLE hr_manager CREATE ROLE hr_manager IDENTIFIED EXTERNALLY; IDENTIFIED EXTERNALLY; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use este comando para criar uma atribuição: CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }] onde: role é o nome da atribuição NOT IDENTIFIED indica que nenhuma verificação é necessária ao ativar a atribuição IDENTIFIED indica que a verificação é necessária ao ativar a linha BY password fornece a senha que o usuário deve especificar ao ativar a atribuição EXTERNALLY indica que um usuário precisa ser autorizado por um serviço externo (como o sistema operacional ou um serviço de terceiros) antes de ativar a atribuição ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-5
  • 144.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager para Criar uma Atribuição 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Selecione a pasta Roles (Atribuições). Selecione Create (Criar) no menu do botão direito do mouse. 4 Informe o nome da atribuição e selecione o método de identificação. 5 Como opção, CONCEDA atribuições e privilégios à nova atribuição clicando na guia Roles, System Privileges (Privilégios de Sistema) ou Object Privileges (Privilégios de Objeto) (abordado em uma lição anterior). 6 Clique em Create. Observação: O comando CREATE ROLE IDENTIFIED GLOBALLY especifica que a verificação dessa atribuição deverá ser feita através do Oracle Security Server. O Oracle Security Server é um produto de segurança que permite a configuração centralizada de atribuições e usuários em um ambiente distribuído Oracle. Os usuários e atribuições definidos no Oracle Security Server podem ser usados entre vários bancos de dados. Esses usuários e atribuições são chamados de usuários globais e atribuições globais, respectivamente. Consulte o manual Oracle8i Server Distributed Database Systems para obter mais informações. ..................................................................................................................................................... 19-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 145.
    Criando e ModificandoAtribuições ..................................................................................................................................................... Usando Atribuições Predefinidas Nome da Atribuição Descrição CONNECT, São fornecidas para RESOURCE manter a retrocompatibilidade DBA Todos os privilégios de sistema WITH ADMIN OPTION EXP_FULL_DATABASE Privilégios para exportar o banco de dados IMP_FULL_DATABASE Privilégios para importar o banco de dados DELETE_CATALOG_ROLE Privilégios DELETE sobre tabelas de dicionário de dados EXECUTE_CATALOG_ROLE Privilégio EXECUTE sobre pacotes de dicionário de dados SELECT_CATALOG_ROLE Privilégio SELECT sobre tabelas de dicionário de dados ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Atribuições Predefinidas As atribuições listadas são definidas automaticamente para bancos de dados Oracle. As atribuições CONNECT e RESOURCE são fornecidas para retrocompatibilidade com versões anteriores do servidor Oracle e podem ser modificadas do mesmo modo que qualquer outra atribuição em um banco de dados Oracle. As atribuições EXP_FULL_DATABASE e IMP_FULL_DATABASE são fornecidas para conveniência ao usar os utilitários Importar e Exportar. As atribuições DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE e SELECT_CATALOG_ROLE são fornecidas para acessar pacotes e views de dicionário de dados. Essas atribuições podem ser concedidas a usuários que não tenham a atribuição DBA, mas que necessitem acessar as views e tabelas no dicionário de dados. Outras Atribuições Especiais O servidor Oracle também cria outras atribuições que autorizam você a administrar o banco de dados. Em diversos sistemas operacionais, essas atribuições são chamadas de OSOPER e OSDBA. Esses nomes podem ser diferentes no seu sistema operacional. Outras atribuições são definidas por scripts SQL fornecidos com o banco de dados. Por exemplo, as atribuições AQ_ADMINISTRATOR_ROLE e AQ_USER_ROLE são criadas pelo script dbmsaqad.sql. Essas atribuições são usadas com o recurso Advanced Queuing (Filas Avançadas). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-7
  • 146.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Outras Atribuições Especiais (continuação) Observação • Em algumas plataformas, como Solaris, os concessionários da atribuição RESOURCE também recebem explicitamente o privilégio UNLIMITED TABLESPACE, embora esse privilégio não seja designado à atribuição. • Você não deve confiar nessas atribuições. Em vez disso, é recomendável que você projete suas próprias atribuições para segurança de banco de dados. Talvez essas atribuições não sejam criadas automaticamente por futuras versões do servidor Oracle. ..................................................................................................................................................... 19-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 147.
    Criando e ModificandoAtribuições ..................................................................................................................................................... Modificando Atribuições ALTER ROLE sales_clerk ALTER ROLE sales_clerk IDENTIFIED BY commission; IDENTIFIED BY commission; ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY; ALTER ROLE hr_manager ALTER ROLE hr_manager NOT IDENTIFIED; NOT IDENTIFIED; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Modificando Atribuições Uma atribuição só pode ser modificada para alterar seu método de autenticação. Sintaxe Use este comando para modificar uma atribuição: ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }}; onde: role é o nome da atribuição NOT IDENTIFIED indica que nenhuma verificação é necessária ao ativar a atribuição IDENTIFIED indica que a verificação é necessária ao ativar a linha BY password fornece a senha usada ao ativar a atribuição EXTERNALLY indica que um usuário deverá ser autorizado por um serviço externo (como o sistema operacional ou serviço de terceiros) antes de ativar a atribuição ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-9
  • 148.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Como Usar o Oracle Enterprise Manager para Modificar uma Atribuição 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Roles (Atribuições). 4 Selecione a atribuição. 5 Indique o método de identificação. 6 Clique em Apply (Aplicar). ..................................................................................................................................................... 19-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 149.
    Designando Atribuições ..................................................................................................................................................... Designando Atribuições Designando Atribuições GRANT sales_clerk TO scott; GRANT sales_clerk TO scott; GRANT hr_clerk, TO hr_manager; GRANT hr_manager TO scott GRANT hr_manager TO scott WITH ADMIN OPTION; WITH ADMIN OPTION; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Para conceder uma atribuição a um usuário, use a mesma sintaxe de comando usada para conceder um privilégio de sistema a um usuário: GRANT role [, role ]... TO {user|role|PUBLIC} [,{user|role|PUBLIC} ]... [WITH GRANT OPTION] onde: role é uma atribuição a ser concedida ou uma atribuição que recebe a atribuição concedida user é um usuário que recebe uma atribuição role é uma atribuição que recebe uma atribuição PUBLIC concede a atribuição a todos os usuários ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-11
  • 150.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Sintaxe (continuação) WITH ADMIN OPTION permite que o concessionário conceda a atribuição a outros usuários ou atribuições. (Se você conceder uma atribuição com essa opção, o concessionário poderá conceder a atribuição a outros usuários, revogar a atribuição de outros usuários, alterar ou eliminar a atribuição.) Ao usuário que cria uma atribuição é designada implicitamente a atribuição ADMIN OPTION. Um usuário que não tenha recebido uma atribuição com ADMIN OPTION precisará do privilégio de sistema GRANT ANY ROLE para conceder e revogar atribuições para e de outros usuários. ..................................................................................................................................................... 19-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 151.
    Designando Atribuições ..................................................................................................................................................... Como Usaro Oracle Enterprise Manager para Designar uma Atribuição 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Users (Usuários) ou Roles (Atribuições). 4 Selecione o usuário ou atribuição. 5 Selecione a guia Role (Atribuição) ou System Privileges (Privilégios de Sistema). 6 Selecione a atribuição a ser concedida. 7 Clique na seta para baixo para adicionar a atribuição à lista de concessões. 8 Acrescente atribuições adicionais, conforme necessário. 9 Clique em Apply (Aplicar). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-13
  • 152.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Controlando a Disponibilidade das Atribuições Estabelecendo Atribuições Default ALTER USER scott ALTER USER scott DEFAULT ROLE hr_clerk, sales_clerk; DEFAULT ROLE hr_clerk, sales_clerk; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL EXCEPT ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk; hr_clerk; ALTER USER scott DEFAULT ROLE NONE; ALTER USER scott DEFAULT ROLE NONE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Atribuições Default Um usuário pode ter diversas atribuições. Uma atribuição default é um subconjunto dessas atribuições que é ativado automaticamente quando o usuário estabelece login. Por default, todas as atribuições designadas a um usuário são ativadas no login. Limite as atribuições default de um usuário com o comando ALTER USER. Sintaxe Use esta sintaxe para designar atribuições default a um usuário: ALTER USER user DEFAULT ROLE {role [,role]... | ALL [EXCEPT role [,role]... ] | NONE} onde: user é o nome do usuário que recebeu as atribuições role é a atribuição que se tornará a atribuição default do usuário ALL transforma em atribuições default todas as atribuições concedidas ao usuário, exceto aquelas listadas na cláusula EXCEPT. Essa é a opção default. EXCEPT indica que as atribuições a seguir não devem ser incluídas nas atribuições default ..................................................................................................................................................... 19-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 153.
    Controlando a Disponibilidadedas Atribuições ..................................................................................................................................................... Sintaxe (continuação) NONE não transforma as atribuições concedidas ao usuário em atribuições default. Os únicos privilégios que o usuário terá no login serão aqueles designados diretamente ao usuário. Como é necessário conceder as atribuições para que elas possam se tornar default, não é possível definir atribuições default com o comando CREATE USER. Para atribuições autenticadas com uma senha, a senha não será necessária quando a atribuição for uma atribuição default. Como Usar o Oracle Enterprise Manager para Designar Atribuições Default 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack — > Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Users. 4 Selecione o usuário. 5 Selecione a guia Role. 6 Marque a caixa Default das atribuições default. . 7 Clique em Apply. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-15
  • 154.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Ativando e Desativando Atribuições • Desative uma atribuição para revogar temporariamente a atribuição de um usuário. • Ative uma atribuição para concedê-la temporariamente. • O comando SET ROLE ativa e desativa tribuições. • Atribuições default são ativadas para um usuário quando o login é estabelecido. • É possível que uma senha seja necessária para ativar uma atribuição. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Ativando e Desativando Atribuições Ative ou desative atribuições temporariamente para ativar ou desativar os privilégios s associados a atribuições. Para ativar uma atribuição, é necessário primeiro que a atribuição seja concedida ao usuário. Quando uma atribuição é ativada, o usuário pode usar os privilégios concedidos a essa atribuição. Se uma atribuição for desativada, o usuário não poderá usar os privilégios associados a essa atribuição, exceto se esse privilégio for concedido diretamente ao usuário ou a outra atribuição ativada para esse usuário. As atribuições são ativadas para uma sessão. Na próxima sessão, as atribuições ativas do usuário reverterão para as atribuições default. Especificando Atribuições a Serem Ativadas O comando SET ROLE e o procedimento DBMS_SESSION.SET_ROLE ativam todas as atribuições incluídas no comando e desativam todas as outras atribuições. As atribuições podem ser ativadas em qualquer ferramenta ou programa que permita comandos PL/SQL; entretanto, não é possível ativar uma atribuição em um procedimento armazenado. Você pode usar o comando ALTER USER...DEFAULT ROLE para indicar quais atribuições serão ativadas para um usuário no login. Todas as outras atribuições serão desativadas. Pode ser exigida uma senha para ativar uma atribuição. A senha deve ser incluída no comando SET ROLE para ativar a atribuição. As atribuições default designadas a um usuário não exigem senha; elas são ativadas no login, da mesma forma que uma atribuição sem senha. ..................................................................................................................................................... 19-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 155.
    Controlando a Disponibilidadedas Atribuições ..................................................................................................................................................... Restrições É impossível ativar uma atribuição a partir de um procedimento armazenado, porque essa ação pode alterar o domínio de segurança (conjunto de privilégios) que permitia que o procedimento fosse chamado em primeiro lugar. Portanto, em PL/SQL, as atribuições podem ser ativadas e desativadas em procedimentos de aplicação e blocos anônimos (por exemplo, procedimentos do Oracle Forms), mas não em procedimentos armazenados. Se um procedimento armazenado contiver o comando SET ROLE, será gerado este erro durante a execução: ORA-06565: cannot execute SET ROLE from within stored procedure (não é possível executar SET ROLE a partir do procedimento armazenado) ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-17
  • 156.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Ativando e Desativando Atribuições: Exemplos SET ROLE hr_clerk; SET ROLE hr_clerk; SET ROLE sales_clerk IDENTIFIED BY commission; SET ROLE ALL EXCEPT sales_clerk; SET ROLE ALL EXCEPT sales_clerk; SET ROLE NONE; SET ROLE NONE; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Use estes comandos para ativar e desativar atribuições: SET ROLE {role [ IDENTIFIED BY PASSWORD ] [, role [ IDENTIFIED BY PASSWORD ]]... | ALL [ EXCEPT role [, role ] ...] | NONE } O comando SET ROLE desativa quaisquer outras atribuições concedidas ao usuário. onde: role é o nome da atribuição IDENTIFIED BY password fornece a senha necessária para ativar a atribuição ALL ativa todas as atribuições concedidas ao usuário atual, exceto aquelas listadas na cláusula EXCEPT. Você não pode usar esse opção para ativar atribuições com senhas. EXCEPT role não ativa essas atribuições NONE desativa todas as atribuições da sessão atual. Somente os privilégios concedidos diretamente ao usuário estarão ativos. A opção ALL sem a cláusula EXCEPT funciona somente quando todas as atribuições ativadas não têm uma senha. ..................................................................................................................................................... 19-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 157.
    Controlando a Disponibilidadedas Atribuições ..................................................................................................................................................... Removendo Atribuições de Usuários REVOKE sales_clerk FROM scott; REVOKE sales_clerk FROM scott; REVOKE hr_manager FROM PUBLIC; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Para revogar uma atribuição de um usuário, use a mesma sintaxe de comando usada para revogar um privilégio de sistema de um usuário: REVOKE role [, role ]... FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ] onde: role é a atribuição a ser revogada ou a atribuição cujas atribuições são revogadas user é o usuário cujos privilégios de sistema ou atribuições são revogados PUBLIC revoga os privilégios ou atribuições de todos os usuários Como Usar o Oracle Enterprise Manager para Revogar uma Atribuição 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Users (Usuários) ou Roles (Atribuições). 4 Selecione o usuário ou atribuição. 5 Selecione a guia Roles ou System Privileges (Privilégios de Sistema). 6 Em Granted (Concedido), selecione a Role (Atribuição) a ser revogada. 7 Clique na seta para cima para remover a atribuição da lista de concessões. 8 Clique em Apply (Aplicar). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-19
  • 158.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Removendo Atribuições DROP ROLE hr_manager; DROP ROLE hr_manager; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Sintaxe Para remover uma atribuição de um banco de dados, use esta sintaxe: DROP ROLE role onde: role é a atribuição a ser removida Quando você elimina uma atribuição, o servidor Oracle revoga essa atribuição de todos os usuários e atribuições aos quais ela foi concedida e a remove do banco de dados. Para eliminar a atribuição, é necessário que você tenha o privilégio de sistema DROP ANY ROLE ou que tenha recebido a atribuição com ADMIN OPTION. Como Usar o Oracle Enterprise Manager para Remover uma Atribuição 1 Inicie o Security Manager e conecte-se diretamente ao banco de dados: Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager 2 Especifique as informações de login e clique no botão OK. 3 Expanda a pasta Roles. 4 Selecione a atribuição. 5 Selecione Object (Objeto) —> Remove (Remover). 6 Na caixa de diálogo, clique em Yes (Sim). ..................................................................................................................................................... 19-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 159.
    Controlando a Disponibilidadedas Atribuições ..................................................................................................................................................... Diretrizes para Criação de Atribuições Usuários Atribuições HR_CLERK HR_MANAGER PAY_CLERK de usuário Atribuições BENEFITS PAYROLL de aplicação Privilégios de aplicação Privilégios Privilégios da folha dos benefícios de pagamentos ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Diretrizes para Criação de Atribuições Como uma atribuição inclui os privilégios necessários para executar uma tarefa, o nome da atribuição é normalmente uma tarefa de aplicação ou título de serviço. O exemplo acima utiliza tanto tarefas de aplicação como títulos de serviço para nomes de atribuições. 1 Crie uma atribuição para cada tarefa de aplicação. O nome da atribuição de aplicação corresponde a uma tarefa na aplicação, como a folha de pagamentos. 2 Designe os privilégios necessários para executar a tarefa à atribuição da aplicação. 3 Crie uma atribuição para cada tipo de usuário. O nome da atribuição do usuário corresponde a um título de serviço, como PAY_CLERK. 4 Conceda somente atribuições de aplicação, e não privilégios individuais, a atribuições de usuário. 5 Conceda atribuições de usuário e de aplicação a usuários. Se uma modificação em uma aplicação determinar que serão necessários novos privilégios para executar a tarefa de folha de pagamentos, o DBA precisará somente designar os novos privilégios à atribuição de aplicação, PAYROLL. Todos os usuários que estiverem executando essa tarefa no momento receberão os novos privilégios. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-21
  • 160.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Diretrizes para Usar Senhas e Atribuições Default Protegida por senha (não-default) Atribuição default PAY_CLERK PAY_CLERK_RO Privilégios INSERT, Privilégios Select UPDATE, DELETE e SELECT ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Usando Senhas • As senhas oferecem um nível adicional de segurança ao ativar uma atribuição. Por exemplo, a aplicação pode exigir que um usuário digite uma senha ao ativar a atribuição PAY_CLERK, porque essa atribuição pode ser usada para emitir cheques. • As senhas permitem que uma atribuição seja ativada somente através de uma aplicação. Essa técnica é mostrada no exemplo acima. – O DBA concedeu ao usuário duas atribuições, PAY_CLERK e PAY_CLERK_RO. – A atribuição PAY_CLERK recebeu todos os privilégios necessários à execução da função de escriturário de folha de pagamentos. – A atribuição PAY_CLERK_RO (RO significa Read-Only , somente para leitura) recebeu somente privilégios SELECT nas tabelas necessárias à execução da função de escriturário de folha de pagamentos. – O usuário pode estabelecer login no SQL Plus para executar consultas, mas não pode modificar os dados, porque PAY_CLERK não é uma atribuição default e o usuário não conhece a senha de PAY_CLERK. – Quando o usuário estabelece login na aplicação de folha de pagamentos, ele ativa a atribuição PAY_CLERK fornecendo a senha. Ela está codificada no programa, o usuário não é solicitado a fornecê-la. ..................................................................................................................................................... 19-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 161.
    Exibindo Informações sobreAtribuições ..................................................................................................................................................... Exibindo Informações sobre Atribuições Exibindo Informações de Atribuição View de Atribuição Descrição DBA_ROLES Todas as atribuições existentes no banco de dados DBA_ROLE_PRIVS Atribuições concedidas a usuários e atribuições ROLE_ROLE_PRIVS Atribuições concedidas a atribuições DBA_SYS_PRIVS Privilégios de sistema concedidos a usuários e atribuições ROLE_SYS_PRIVS Privilégios de sistema concedidos a atribuições ROLE_TAB_PRIVS Privilégios de tabela concedidos a atribuições SESSION_ROLES Atribuições ativadas atualmente pelo usuário ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultar Informações de Atribuição Diversas views de dicionário de dados que contêm informações sobre privilégios concedidos a usuários também contêm informações sobre privilégios para atribuições. SQL> SELECT role, password_required FROM dba_roles; ROLE PASSWORD ------------------------------ ----------- CONNECT NO RESOURCE NO DBA NO ... .. SELECT_CATALOG_ROLE NO EXECUTE_CATALOG_ROLE NO DELETE_CATALOG_ROLE NO IMP_FULL_DATABASE NO EXP_FULL_DATABASE NO SALES_CLERK YES HR_CLERK EXTERNAL ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-23
  • 162.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Usando Controle de Acesso Detalhado Controle de Acesso Detalhado Usuários A B C Política HR_ACCESS SELECT INSERT UPDATE ORDERS ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. O Que é Controle de Acesso Detalhado? O controle de acesso detalhado permite implementar políticas de segurança com funções e, em seguida, associar essas políticas de segurança a tabelas ou views. O banco de dados impõe automaticamente essas políticas de segurança, não importando a forma como os dados foram acessados. Você pode: • Usar políticas diferentes para SELECT, INSERT, UPDATE e DELETE. • Usar políticas de segurança somente onde elas forem necessárias, como, por exemplo, em informações de salário. • Usar mais de uma política para cada tabela, inclusive políticas baseadas em aplicações pré-criadas. O pacote DBMS_RLS do PL/SQL permite administrar as políticas de segurança. Usando esse pacote, é possível adicionar, eliminar, ativar, desativar e atualizar as políticas criadas por você. Observação: O modo de implementar o controle de acesso detalhado não será abordado neste curso. ..................................................................................................................................................... 19-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 163.
    Usando Controle deAcesso Detalhado ..................................................................................................................................................... Controle de Acesso Detalhado: Como Funciona • Acesso direto ou indireto de usuário a objeto com uma política anexada chama automaticamente a política. • Pacote de política retorna um predicado (uma condição WHERE). • O banco de dados grava novamente a instrução SQL de maneira dinâmica acrescentando o predicado. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como Funciona o Controle de Acesso Detalhado? A implementação do controle de acesso detalhado é feita através de modificação dinâmica. Quando um usuário acessa um objeto (diretamente ou através de uma subconsulta) que tenha uma política de segurança anexada, o RDBMS (object relational database management system) consulta automaticamente o pacote que implementa a política dessa view ou tabela. A política retorna um predicado (condição de acesso) que é acrescentado à consulta. A instrução é analisada, otimizada e executada. Se houver várias políticas anexadas a uma tabela, o servidor de dados acrescentará "ANDs" aos predicados retornados por cada política. Por exemplo, é possível ter uma política para consultas e outra para algumas ou todas as instruções DML (INSERT, UPDATE, DELETE). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-25
  • 164.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Criar atribuições • Designar privilégios a atribuições • Designar atribuições a usuários ou atribuições • Estabelecer atribuições default ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 19-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 165.
    Sumário ..................................................................................................................................................... Referência Rápida Contexto Referência Parâmetros de inicialização Nenhum Views de desempenho dinâmicas Nenhuma Views de dicionário de dados DBA_ROLES DBA_ROLE_PRIVS DBA_SYS_PRIVS ROLE_ROLE_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS SESSION_ROLES Comandos CREATE_ROLE ALTER ROLE DROP ROLE SET ROLE ALTER USER ... DEFAULT ROLES GRANT REVOKE Procedimentos e funções empacotados DBMS_SESSION.SET_ROLE ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 19-27
  • 166.
    Lição 19: GerenciandoAtribuições ..................................................................................................................................................... ..................................................................................................................................................... 19-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 167.
    20 ................................. Usando Suporte a Idioma Nacional (National Language Support - NLS)
  • 168.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Objetivos Objetivos Após completar esta lição, você poderá executar o seguinte: • Escolher o conjunto de caracteres e o conjunto de caracteres nacionais para um banco de dados • Especificar o comportamento dependente de idioma usando parâmetros de inicialização, variáveis de ambiente e o comando ALTER SESSION • Usar os diferentes tipos de parâmetros NLS (National Language Support, Suporte a Idioma Nacional) • Explicar a influência no comportamento de aplicação dependente de idioma • Obter informações sobre o uso de NLS ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... 20-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 169.
    Visão Geral ..................................................................................................................................................... Visão Geral Recursos de NLS • Suporte a idioma • Suporte a território • Suporte a conjunto de caracteres • Classificação lingüística • Suporte a mensagens • Formatos de data e hora • Formatos numéricos • Formatos monetários ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Suporte a Idioma Nacional O NLS (National Language Support, suporte a idioma nacional) garante que as mensagens de erro e os utilitários de banco de dados, a ordem de classificação e as convenções de data, hora, monetárias, numéricas e de calendário sejam adaptadas automaticamente ao idioma nacional. A Oracle suporta cerca de 45 idiomas, 60 territórios, 60 classificações lingüísticas e vários conjuntos de caracteres codificados. As operações que dependem de idioma são controladas por diversos parâmetros e variáveis de ambiente, tanto no cliente como no servidor. O servidor e o cliente podem ser executados no mesmo local ou em locais diferentes. Quando o cliente e o servidor utilizam diferentes conjuntos de caracteres, o servidor Oracle trata da conversão de conjunto de caracteres automaticamente. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-3
  • 170.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Suporte a Idioma Nacional • Os usuários podem interagir, armazenar, processar e recuperar dados em seu idioma nativo, incluindo idiomas do leste e oeste europeu, Oriente Médio, leste e sudeste asiático. • Os diferentes países e localidades ditam diferentes convenções culturais que afetam diretamente os formatos de dados. • São suportados muitos esquemas de codificação de caracteres diferentes, incluindo conjuntos de caracteres codificados de byte simples, de vários bytes e de largura fixa. • O servidor Oracle oferece várias classificações lingüísticas diferentes para a obtenção de classificações lingüísticas precisas. • Os utilitários de banco de dados e mensagens de erro aparecem no idioma nativo suportado. Os produtos da Oracle são traduzidos para 26 idiomas diferentes. • Os formatos de data e hora podem ser expressos de acordo com convenções ISO para hora, dia, mês e ano. • Há suporte para calendários nacionais, como gregoriano, japonês, imperial e Thai Buddha. • Os dados numéricos são representados nos formatos locais apropriados. • Os símbolos monetários refletem a economia local e as convenções ISO. Os símbolos de crédito e débito também diferem de local para local. ..................................................................................................................................................... 20-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 171.
    Escolhendo um Bancode Dados e um Conjunto de Caracteres Nacionais ..................................................................................................................................................... Escolhendo um Banco de Dados e um Conjunto de Caracteres Nacionais Diferentes Tipos de Esquema de Codificação A Oracle suporta diferentes classes de esquema de codificação de caracteres: • Conjuntos de caracteres de byte simples – 7-bits – 8-bits • Conjunto de caracteres de vários bytes de largura variável • Conjunto de caracteres de vários bytes de largura fixa • Unicode (UTF8, AL24UTFFSS) ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Esquemas de Codificação de Caracteres Um esquema de codificação de caracteres especifica códigos numéricos que correspondem a caracteres que um computador ou terminal pode exibir e receber. Os esquemas de codificação de caracteres são usados para interpretar dados em símbolos significativos de um terminal para uma máquina host. A Oracle oferece diferentes classes de esquema de codificação: • Byte simples • Largura variável • Largura fixa • Unicode Conjuntos de Caracteres de Byte Simples Em um conjunto de caracteres de byte simples, cada caractere ocupa um byte. Esquemas de codificação de byte simples de 7 bits pode definir até 128 (27) caracteres; esquemas de codificação de byte simples de 8 bits podem definir até 256 (28) caracteres. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-5
  • 172.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Exemplos de Esquemas de Byte Simples Conjunto de caracteres de 7-bits: ASCII de 7-bits americanos (US7ASCII) Conjunto de caracteres de 8-bits: • ISO 8859-1 para a Europa Ocidental (WE8ISO8859P1) • EBCDIC Code Page 500 de 8 bits para a Europa Ocidental (WE8EBCDIC500) • DEC de 8 bits para a Europa Ocidental (WE8DEC) Conjuntos de Caracteres de Vários Bytes de Largura Variável Um conjunto de caracteres de vários bytes é representado por um ou mais bytes por caractere. Os conjuntos de caracteres de vários bytes são normalmente usados para suporte a idiomas asiáticos. Alguns esquemas de codificação de vários bytes usam o valor do bit mais significativo para indicar se um byte representa um byte simples ou se faz parte de uma série de bytes que representam um caractere. Contudo, outros esquemas de codificação de caracteres diferenciam caracteres de byte simples dos de vários bytes. Um código de controle de saída, enviado por um dispositivo, indica que os próximos bytes são caracteres de byte duplo, até um código de entrada ser encontrado. Exemplos de Esquemas de Vários Bytes de Largura Variável • JEUC (Japanese Extended UNIX Code, código UNIX estendido japonês) • Chinese GB2312-80 (CGB2312-80) (Chinês) Conjuntos de Caracteres de Vários Bytes de Largura Fixa Os conjuntos de caracteres de largura fixa fornecem suporte semelhante ao dos conjuntos de caracteres de vários bytes, exceto pelo formato ter um número fixo de bytes para cada caractere. Isso proporciona a vantagem de ter uma representação de tamanho de byte uniforme para cada caractere. Exemplos de Conjuntos de Caracteres de Vários Bytes de Largura Fixa • JA16EUCFIXED, japonês de 16 bits (um subconjunto de JA16EUC de largura fixa) • JA16SJISFIXED, japonês de 16 bits (um subconjunto de JA16SIJS de largura fixa) ..................................................................................................................................................... 20-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 173.
    Escolhendo um Bancode Dados e um Conjunto de Caracteres Nacionais ..................................................................................................................................................... Conjunto de Caracteres Unicode Unicode é um padrão mundial de codificação de caracteres que pode representar todos os caracteres para uso de computador, incluindo caracteres e símbolos técnicos usados em publicação. No total, o Unicode versão 2.0 pode representar 38.885 caracteres. O repertório de caracteres Unicode pode ser representado em diversos formatos de codificação diferentes. UTF8 (Universal Character Set Transformation Format, Formato de transformação do conjunto de caracteres universal) é um formato de largura fixa de dois bytes; UTF8 (Universal Character Set Transformation Format, formato de transformação do conjunto de caracteres universal) é um formato de vários bytes de largura variável. O UCS2 e UTF8 codificam o mesmo repertório de caracteres: Unicode 1.1 ou Unicode 2.0. O Oracle7 usa Unicode 1.1 codificado como UTF8 (conjunto de caracteres: AL24UTFFSS); O Oracle8 oferece adicionalmente o Unicode 2.0 codificado como UTF8 (conjunto de caracteres: UTF8). A vantagem do UTF8 é que inclui ASCII usando a mesma codificação de byte simples. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-7
  • 174.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Conjuntos de Caracteres e Conjuntos de Caracteres Nacionais de um Banco de Dados Conjuntos de Caracteres de Conjuntos de Caracteres Banco de Dados Nacionais Definido no momento da Definido no momento da criação criação Impossível alterar sem Impossível alterar sem recriação recriação Armazena colunas de dados Armazena colunas de dados do do tipo CHAR, VARCHAR2, tipo NCHAR, NVARCHAR2 e CLOB, LONG NCLOB Pode armazenar conjuntos de Pode armazenar conjuntos de caracteres de largura variável caracteres de vários bytes de largura fixa e variável ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Tipos de Conjuntos de Caracteres A instrução CREATE DATABASE tem a cláusula CHARACTER SET e a cláusula opcional adicional NATIONAL CHARACTER SET para declarar o conjunto de caracteres a ser usado como o conjunto de caracteres do banco de dados e o conjunto de caracteres nacionais. Nenhum desses conjuntos de caracteres pode ser alterado após a criação do banco de dados. Se a cláusula NATIONAL CHARACTER SET não estiver presente, o conjunto de caracteres nacionais usa por default o conjunto de caracteres do banco de dados. Como o conjunto de caracteres do banco de dados é usado para identificar e manter o código-fonte SQL e PL/SQL, ele deve ter EBCDIC ou ASCII de 7-bits como subconjunto, o que for nativo para a plataforma. Portanto, não é possível usar um conjunto de caracteres de vários bytes de largura fixa como conjunto de caracteres do banco de dados, somente como o conjunto de caracteres nacionais. Os tipos de dados NCHAR, NVARCHAR2 e NCLOB são fornecidos para declarar colunas como variantes dos tipos básicos CHAR, VARCHAR2 e CLOB. Observe que eles são armazenados usando o conjunto de caracteres nacionais e não o conjunto de caracteres do banco de dados. ..................................................................................................................................................... 20-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 175.
    Escolhendo um Bancode Dados e um Conjunto de Caracteres Nacionais ..................................................................................................................................................... Tipos de Conjuntos de Caracteres (continuação) • Para declarar um item de caractere de tamanho fixo que utilize o conjunto de caracteres nacionais, use a especificação de tipo de dados NCHAR [(tamanho)]. • Para declarar um item de caractere de tamanho variável que utilize o conjunto de caracteres nacionais, use a especificação de tipo de dados NVARCHAR2 (tamanho). • Para declarar um item CLOB (Character Large Object, objeto grande de caracteres) que contenha caracteres de vários bytes de largura fixa e utilize o conjunto de caracteres nacionais, use a especificação de tipo de dados NCLOB (tamanho). Observação • A Oracle não suporta o conjunto de caracteres nacionais no tipo de dados LONG. • O aspecto de largura fixa ou variável da codificação de um conjunto de caracteres é independente do aspecto de tamanho fixo ou variável dos tipos CHAR e VARCHAR2. Um aspecto refere-se ao número de bytes que cada caractere necessita em uma string e o outro ao espaço total alocado à string. Um conjunto de caracteres de largura fixa ou variável pode ser usado para uma coluna de tipo de tamanho fixo (CHAR ou NCHAR) e da mesma maneira para um tipo de tamanho variável (VARCHAR2 ou NVARCHAR2). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-9
  • 176.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Diretrizes • Escolha um conjunto de caracteres do banco de dados e conjunto de caracteres nacionais estreitamente relacionados. • Operações de string podem ser mais velozes com conjuntos de caracteres de largura fixa. • Conjuntos de caracteres de largura variável utilizam espaço com mais eficiência. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Diretrizes O conjunto de caracteres do banco de dados e o conjunto de caracteres nacionais devem estar estreitamente relacionados; por exemplo, clientes japoneses escolherão JA16EUC como o conjunto de caracteres do banco de dados e JA16EUCFIXED como o conjunto de caracteres nacionais. ..................................................................................................................................................... 20-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 177.
    Especificando o ComportamentoDependente do Idioma ..................................................................................................................................................... Especificando o Comportamento Dependente do Idioma Especificando o Comportamento Dependente do Idioma Parâmetro de inicialização Variável de ambiente Comando ALTER SESSION ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Três Maneiras de Especificar Parâmetros NLS Existem três maneiras de especificar parâmetros NLS: • Como parâmetros de inicialização no lado servidor para especificar o ambiente NLS default do servidor. Essas definições default não têm efeito sobre o cliente. • Como variáveis de ambiente do cliente para especificar o comportamento dependente de local que anula os defaults definidos para o servidor. • Como o parâmetro ALTER SESSION para anular o default definido para a sessão ou servidor. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-11
  • 178.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Especificando o Comportamento Dependente do Idioma Para o Servidor • NLS_LANGUAGE especifica: - O idioma para mensagens - Nomes de dia e mês - Símbolos para d.C., a.C., A.M. e P.M. - O mecanismo de classificação default • NLS_TERRITORY especifica: - Numeração de dia e semana - Formato de data default, caractere decimal, separador de grupo, símbolos de moeda local e ISO default ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Parâmetros de Inicialização NLS O parâmetro de inicialização NLS_LANGUAGE define o valor de convenções dependentes do idioma, como: • Idioma usado para mensagens Oracle • Idioma usado para nomes de dia e mês e suas abreviações • Símbolos usados para equivalentes de idioma de a.m., p.m., d.C. e a.C. • Seqüência de classificação default de dados de caracteres O parâmetro de inicialização NLS_TERRITORY define valores para convenções dependentes do território, que incluem: • Formato de data default • Caractere decimal e separador de grupos • Símbolo de moeda local • Símbolo de moeda ISO • Cálculo do número de semana ISO • Dia inicial da semana Observação: Quando o nome do território contém um espaço, como em Países Baixos, o nome do território deve estar entre aspas, como, por exemplo "Países Baixos". ..................................................................................................................................................... 20-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 179.
    Especificando o ComportamentoDependente do Idioma ..................................................................................................................................................... Valores Default Dependentes de Idioma e Território PARÂMETRO VALORES NLS_LANGUAGE AMERICAN NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_DATE_FORMAT DD-MON-YY NLS_NUMERIC_CHARACTERS ,. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Parâmetros de Inicialização NLS O parâmetro de inicialização NLS_LANGUAGE determina os valores default dos seguintes parâmetros: Coluna Descrição NLS_DATE_LANGUAGE Altera explicitamente o idioma dos nomes de dia e mês, valores abreviados e por extenso além de outros elementos de formato de data. NLS_SORT Altera a seqüência de classificação lingüística que o servidor Oracle utiliza para classificar valores de caracteres.(O valor de classificação deve ser BINARY ou o nome de uma seqüência de classificação lingüística). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-13
  • 180.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Parâmetros de Inicialização NLS (continuação) NLS_TERRITORY determina os valores default dos seguintes parâmetros: Coluna Descrição NLS_CURRENCY Especifica explicitamente um novo símbolo de moeda local. NLS_ISO_CURRENCY Especifica explicitamente o território cujo símbolo de moeda ISO deve ser usado. NLS_DATE_FORMAT Especifica explicitamente um novo formato de data default. (O valor deve ser um modelo do formato de data). NLS_NUMERIC_CHARACTERS Especifica explicitamente um novo caractere decimal e separador de grupos. Suporte a Moeda Dupla para o Euro Em 1 de janeiro de 1999, a nova moeda da União Européia, o euro, fez sua estréia. Para suportar a nova moeda da União Européia, foi adicionado um suporte a moeda dupla para determinados territórios. Um parâmetro de inicialização NLS_DUAL_CURRENCY define um símbolo de moeda alternativa para a sessão de usuário. Os territórios a seguir têm o símbolo do euro adicionado para suporte a moeda dupla: Alemanha Holanda Áustria Irlanda Bélgica Itália Espanha Luxemburgo Finlândia Portugal França Os conjuntos de caracteres ISO, como WE8ISO8859P1, Páginas de Códigos da MS e IBM, têm pontos de código especificados para o símbolo do euro. ..................................................................................................................................................... 20-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 181.
    Especificando o ComportamentoDependente do Idioma ..................................................................................................................................................... Especificando o Comportamento Dependente de Idioma da Sessão • Variável de ambiente: NLS_LANG=<language>_<territory>.<charset> • Variáveis adicionais de ambiente: – NLS_DATE_FORMAT – NLS_DATE_LANGUAGE – NLS_SORT – NLS_NUMERIC_CHARACTERS – NLS_CURRENCY – NLS_ISO_CURRENCY – NLS_CALENDAR ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. A Variável de Ambiente NLS_LANG Anule o comportamento NLS default de um usuário individual com a variável de ambiente NLS_LANG. O valor de NLS_LANG anula quaisquer valores dos parâmetros de inicialização NLS. Cada componente controla um subconjunto de recursos NLS: NLS_LANG=<language>_<territory>.<charset> Por exemplo: NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1 onde: language anula o valor de NLS_LANGUAGE e controla os mesmos recursos que NLS_LANGUAGE territory anula o valor de NLS_TERRITORY e controla os mesmos recursos que NLS_TERRITORY charset especifica o esquema de codificação de caracteres usado pela aplicação do cliente (normalmente a do terminal do usuário) ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-15
  • 182.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Conjuntos de Caracteres em Arquitetura Cliente/Servidor NLS_LANG=<idioma>_<território>.<charset> NLS_LANG=<idioma>_<território>.<charset> NLS_NCHAR=<ncharset> NLS_NCHAR=<ncharset> CREATE DATABASE ... CREATE DATABASE ... CHARACTER SET <charset> CHARACTER SET <charset> NATIONAL CHARACTER SET NATIONAL CHARACTER SET <ncharset> <ncharset> ... ... ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. A Variável de Ambiente NLS_LANG (continuação) NLS_LANG define o esquema de codificação de caracteres do terminal de um cliente. Diferentes clientes podem usar diferentes esquemas de codificação. Os dados passados entre cliente e servidor são convertidos automaticamente entre os dois esquemas de codificação. O esquema de codificação do banco de dados deve ser um superconjunto, ou equivalente, de todos os esquemas de codificação do cliente. A conversão é transparente para uma aplicação cliente. Variáveis Adicionais de Ambiente Todos os parâmetros de inicialização NLS estão disponíveis como variáveis de ambiente, possibilitando a especificação de características NLS individuais para cada cliente. Além disso, NLS_CALENDAR pode ser usado para especificar o sistema de calendário que o servidor Oracle utiliza; por exemplo, gregoriano, persa ou Thai Buddha. As variáveis a seguir podem ser definidas somente no ambiente do cliente: • NLS_CREDIT • NLS_DEBIT • NLS_DISPLAY • NLS_LANG • NLS_LIST_SEPARATOR • NLS_MONETARY • NLS_NCHAR ..................................................................................................................................................... 20-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 183.
    Especificando o ComportamentoDependente do Idioma ..................................................................................................................................................... Variáveis Adicionais de Ambiente (continuação) Observação • A descrição desses parâmetros pode ser encontrada no Oracle8i: Server Reference Manual. • Se a variável de ambiente ORA_NLS33 (consulte a lição "Criando um Banco de Dados") não estiver definida, somente será possível criar o banco de dados com o conjunto de caracteres default US7ASCII. ORA_NLS deve ser definido no UNIX da seguinte maneira: $ORACLE_HOME/ocommon/nls/admin/data • No Windows NT, parâmetros, como NLS_LANG e ORA_NLS33, são definidos automaticamente durante a instalação e armazenados no registro na pasta HKEY_LOCAL_MACHINESOFTWAREORACLE. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-17
  • 184.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Especificando o Comportamento Dependente de Idioma Para a Sessão ALTER SESSION SET ALTER SESSION SET NLS_DATE_FORMAT=‘DD.MM.YYYY’; NLS_DATE_FORMAT=‘DD.MM.YYYY’; DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’, DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’, ’’’DD.MM.YYYY’’’) ; ’’’DD.MM.YYYY’’’) ; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Alterando Parâmetros NLS Altere características NLS individuais de uma sessão com o comando ALTER SESSION. Todas as variáveis de ambiente podem ser definidas tanto no lado cliente como no servidor, e também podem ser modificadas com a emissão do comando ALTER SESSION. No exemplo acima, o formato de data é alterado para a sessão. Além disso, ferramentas como SQL*Plus lêem variáveis de ambiente e emitem o comando ALTER SESSION correspondente. Além de emitir explicitamente comandos ALTER SESSION, existe um pacote de banco de dados DBMS_SESSION.SET_NLS que assume o nome e valor do parâmetro. ..................................................................................................................................................... 20-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 185.
    Parâmetros NLS eFunções SQL ..................................................................................................................................................... Parâmetros NLS e Funções SQL Classificando • O Oracle fornece uma classificação lingüística. • NLS_SORT especifica tipos de classificação. • A função NLSSORT reflete a comparação lingüística. ALTER SESSION SET NLS_SORT=GERMAN; SELECT letter FROM letters ORDER BY letter; LETTER ------ ä z ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Como NLS Afeta Classificações Uma classificação binária é um mecanismo de classificação convencional através do qual letras são classificadas de acordo com os valores binários usados para codificar os caracteres. A posição alfabética de um caractere pode variar em diferentes idiomas. Por exemplo, ä é classificado antes de b em alemão, mas ä ocorrerá depois de z se você usar uma classificação binária. Para superar as limitações da classificação binária, o servidor Oracle oferece definições lingüísticas através da definição do parâmetro NLS_SORT. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-19
  • 186.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Como NLS Afeta Classificações (continuação) Os exemplos a seguir ilustram o comportamento de classificação: SQL> ALTER SESSION SET NLS_SORT=BINARY; Session altered. SQL> SELECT letter FROM letters ORDER BY letter; L - a b c z ü ä 6 rows selected. SQL> ALTER SESSION SET NLS_SORT= GERMAN; Session altered. SQL> SELECT letter FROM LETTERS ORDER BY 1; L - ä ü a b c z 6 rows selected. ..................................................................................................................................................... 20-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 187.
    Parâmetros NLS eFunções SQL ..................................................................................................................................................... Como NLS Afeta Classificações (continuação) A função NLSSORT pode ser usada para ativar a comparação de acordo com convenções lingüísticas e não valores binários. SQL> SELECT letter FROM letters WHERE letter < 'z'; L - a b c SQL> SELECT letter FROM letters 2 WHERE NLSSORT(letter) < NLSSORT('z'); L - a b ä c ü ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-21
  • 188.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Parâmetros NLS em Funções SQL Usando Parâmetros NLS em Funções SQL SELECT TO_CHAR(hiredate,’DD.MON.YYYY’, SELECT TO_CHAR(hiredate,’DD.MON.YYYY’, ‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp; ‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp; SELECT ename, TO_CHAR(sal,’9G999D99’, SELECT ename, TO_CHAR(sal,’9G999D99’, ‘NLS_NUMERIC_CHARACTERS=‘‘,.’’’) ‘NLS_NUMERIC_CHARACTERS=‘‘,.’’’) FROM emp; FROM emp; ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Funções SQL com Parâmetros NLS As funções de caractere SQL suportam caracteres de byte simples e de vários bytes. Alguns parâmetros Oracle NLS de funções SQL devem ser especificados explicitamente como parte de sua lista de parâmetros. Assim, funções SQL podem anular o comportamento especificado pelo ambiente NLS. ..................................................................................................................................................... 20-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 189.
    Parâmetros NLS emFunções SQL ..................................................................................................................................................... Exemplos de Uso de Parâmetros NLS em Funções SQL SQL> SELECT TO_CHAR(hiredate,'dd.mon.yyyy', 2 'NLS_DATE_LANGUAGE=GERMAN') 3 FROM emp) TO_CHAR(HIR ----------- 17.dez.1980 20.feb.1981 22.feb.1981 02.apr.1981 28.sep.1981 01.mai.1981 09.jun.1981 19.apr.1987 17.nov.1981 08.sep.1981 23.mai.1987 03.dez.1981 03.dez.1981 23.jan.1982 14 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-23
  • 190.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Exemplos de Uso de Parâmetros NLS em Funções SQL (continuação) SQL> SELECT ename, 2 TO_CHAR(sal,'99G999D99','NLS_NUMERIC_CHARACTERS='',.''') 3 FROM emp; ENAME TO_CHAR(SA ------- ---------- SMITH 800,00 ALLEN 1.600,00 WARD 1.250,00 JONES 2.975,00 MARTIN 1.250,00 BLAKE 2.850,00 CLARK 2.450,00 SCOTT 3.000,00 KING 5.000,00 TURNER 1.500,00 ADAMS 1.100,00 JAMES 950,00 FORD 3.000,00 MILLER 1.300,00 14 rows selected. ..................................................................................................................................................... 20-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 191.
    Parâmetros NLS emFunções SQL ..................................................................................................................................................... Exemplos de Uso de Parâmetros NLS em Funções SQL (continuação) As funções SQL a seguir usam parâmetros NLS: Função Parâmetro NLS TO_DATE NLS_DATE_LANGUAGE NLS_CALENDAR TO_NUMBER NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY TO_CHAR NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_CALENDAR NLS_UPPER, NLS_LOWER, NLS_SORT NLS_INITCAP, NLSSORT Diversos elementos de máscara de formato foram definidos para funções, como TO_CHAR, TO_DATE e TO_NUMBER. Elementos de Máscara de Formato de Número • "D" para separador decimal • "G" para separador de grupos (milhares) • "L" para símbolo de moeda local • "C" para símbolo de moeda ISO local • "U" para símbolo de moeda dupla, usada para o euro Elementos de Máscara de Formato de Data • "RM, rm" para número de mês romano • "IW" para número de semana ISO • "IYYY, IYY, IY," e "I" para ano ISO ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-25
  • 192.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Suporte Para Índice Lingüístico Suporte de Idioma Nacional: Suporte Para Índice Lingüístico • Indexação lingüística • Alto desempenho com classificação local CREATE INDEX nls_ename ON emp (NLSSORT(ename, ‘NLS_SORT = German’)); • Parâmetro NLS_COMP para comparações lingüísticas ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Indexação Lingüística Os índices funcionais, descritos na lição Índices e Tabelas Organizadas por Índices, podem ser especializados para criar índices classificados lingüisticamente. A função SQL NLSSORT retorna a string de bytes usada para classificar o primeiro parâmetro na seqüência dada de classificação lingüística. Nesse exemplo, um índice é criado em ENAME, classificado de acordo com a ordem de classificação alemã. Isso permite executar consultas baseadas em índices sobre dados classificados de acordo com as regras de cada idioma. Comportamento Lingüístico de Operadores de Comparação NLS_COMP é um parâmetro de inicialização dinâmico que controla como os operadores de comparação, como <, > e = tratam a ordenação lingüística. Quando definido como BINARY (o default), a comparação baseia-se no valor binário da string. Quando definido como ANSI, os operadores de comparação usam seqüências de classificação lingüística para determinar o resultado da operação de acordo com o parâmetro NLS_SORT da sessão. ..................................................................................................................................................... 20-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 193.
    Importando e CarregandoDados Usando NLS ..................................................................................................................................................... Importando e Carregando Dados Usando NLS Importando e Carregando Dados Usando NLS • Os dados serão convertidos de NLS_LANG para o conjunto de caracteres do banco de dados durante a importação • LOADER: – Convencional: Os dados são convertidos para o conjunto de caracteres da sessão especificado por NLS_LANG. – DIRECT: Os dados são convertidos diretamente para o conjunto de caracteres do banco de dados. ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. NLS com Importar e SQL*Loader Durante a importação, os dados são automaticamente convertidos para o conjunto de caracteres da sessão especificada conforme determinado pelo parâmetro NLS_LANG. Após os dados terem sido convertidos para o conjunto de caracteres da sessão, eles serão convertidos, em seguida, para o conjunto de caracteres do banco de dados. Isso significa que NLS_LANG precisa ser definido para o conjunto de caracteres do arquivo de exportação. SQL*Loader também tem a capacidade de converter dados do conjunto de caracteres do arquivo de dados para o conjunto de caracteres do banco de dados. Ao usar o caminho convencional, os dados são convertidos para o conjunto de caracteres da sessão especificado pelo parâmetro NLS_LANG para essa sessão. No caminho direto, os dados são convertidos diretamente para o conjunto de caracteres do banco de dados. O arquivo de controle do SQL*Loader mostra como interpretar o arquivo de dados. O conjunto de caracteres do parâmetro informa qual é o conjunto de caracteres usado em cada arquivo de dados. Exemplo: $sqlldr control=utl1case.ctl characterset=WE8ISO9959P1 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-27
  • 194.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Obtendo Informações Sobre Definições NLS Obtendo Informações Sobre Conjuntos de Caracteres NLS_DATABASE_PARAMETERS: • PARAMETER ( NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET ) • VALUE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultando o Dicionário de Dados para Informações NLS Exiba o banco de dados e o conjunto de caracteres nacionais com a seguinte consulta: SQL>SELECT parameter, value FROM nls_database_parameters 2 WHERE parameter LIKE '%CHARACTERSET%'; PARAMETER VALUE ----------------------- ------------------------------ NLS_CHARACTERSET WE8ISO8859P1 NLS_NCHAR_CHARACTERSET US7ASCII 2 rows selected. ..................................................................................................................................................... 20-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 195.
    Obtendo Informações SobreDefinições NLS ..................................................................................................................................................... Obtendo Informações Sobre Definições NLS • NLS_INSTANCE_PARAMETERS: – PARAMETER (parâmetros de inicialização NLS definidos explicitamente) – VALUE • NLS_SESSION_PARAMETERS: – PARAMETER (parâmetros NLS da sessão) – VALUE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultando o Dicionário de Dados para Informações NLS Essa view exibe somente os valores dos parâmetros que foram definidos explicitamente no arquivo init<SID>.ora. SQL> SELECT * FROM nls_instance_parameters; PARAMETER VALUE -------------------------- ------------------------------ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCY 8 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-29
  • 196.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Consultando o Dicionário de Dados para Informações NLS (continuação) A view a seguir mostra parâmetros de sessão. SQL> SELECT * FROM nls_session_parameters; PARAMETER VALUE ------------------------ ------------------------------ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-YY NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY 9 rows selected. ..................................................................................................................................................... 20-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 197.
    Obtendo Informações SobreDefinições NLS ..................................................................................................................................................... Obtendo Informações Sobre Definições NLS • NLS_INSTANCE_PARAMETERS: – PARAMETER (parâmetros de inicialização NLS definidos explicitamente) – VALUE • NLS_SESSION_PARAMETERS: – PARAMETER (parâmetros NLS da sessão) – VALUE ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. Consultando o Dicionário de Dados para Informações NLS Lista de todos os valores válidos de parâmetros NLS. SQL>SELECT * FROM v$nls_valid_values 2 WHERE parameter='LANGUAGE'; PARAMETER VALUE --------- -------------- LANGUAGE AMERICAN LANGUAGE GERMAN LANGUAGE FRENCH LANGUAGE CANADIAN FRENCH LANGUAGE SPANISH LANGUAGE ITALIAN LANGUAGE DUTCH LANGUAGE SWEDISH LANGUAGE NORWEGIAN LANGUAGE DANISH ... ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-31
  • 198.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Consultando o Dicionário de Dados para Informações NLS (continuação) Exibe os valores atuais de parâmetros NLS. SQL> SELECT * FROM v$nls_parameters; PARAMETER VALUE ------------------ ------------------ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARAC ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-YY NLS_DATE_LANGUAGE AMERICAN NLS_CHARACTERSET WE8ISO8859P1 NLS_SORT BINARY 10 rows selected. Observação: Diversas views conterão uma nova coluna, CHARACTER_SET_NAME, que mostra o nome do conjunto de caracteres: CHAR_CS para o conjunto de caracteres do banco de dados e NCHAR_CS para o conjunto de caracteres nacionais. Por exemplo, DBA_TAB_COLUMNS elabora esse coluna a partir de COL$. ..................................................................................................................................................... 20-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 199.
    Sumário ..................................................................................................................................................... Sumário Sumário Nesta lição, você aprendeu como: • Escolher um conjunto de caracteres de banco de dados e um conjunto de caracteres nacionais para o banco de dados • Usar os diversos tipos de parâmetros NLS para o servidor ou para a sessão ® Copyright  Oracle Corporation, 1999. Todos os direitos reservados. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura 20-33
  • 200.
    Lição 20: UsandoSuporte a Idioma Nacional (National Language Support - NLS) ..................................................................................................................................................... Referência Rápida Contexto Referência Parâmetros de inicialização NLS_LANGUAGE NLS_TERRITORY NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_CURRENCY NLS_ISO_CURRENCY NLS_SORT NLS_NUMERIC_CHARACTERS NLS_CALENDAR Views de desempenho dinâmicas V$NLS_VALID_VALUES V$NLS_PARAMETERS Views de dicionário de dados NLS_DATABASE_PARAMETERS NLS_INSTANCE_PARAMETERS NLS_SESSION_PARAMETERS Comandos ALTER SESSION SET Procedimentos e funções DBMS_SESSION.SET_NLS empacotados ..................................................................................................................................................... 20-34 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 201.
  • 202.
    Apêndice A: Exercícios ..................................................................................................................................................... Ambiente Oinstrutor fornecerá as informações sobre a configuração dos exercícios. Lembre-se de que o seu ambiente talvez não precise de todas as informações fornecidas abaixo. Use esta seção para registrar os detalhes a serem usados durante os exercícios. Configuração do Cliente Nome de usuário Senha Contexto Diretório que contém arquivos de laboratório Diretório que contém exemplos de soluções Arquivo de parâmetros Configuração do Servidor Login Senha Nome do host/Endereço IP Diretório que contém arquivos de laboratório Diretório que contém exemplos de soluções Arquivo de parâmetros Ambiente Oracle Senha para SYSDBA Senha para SYS Senha para SYSTEM String de Conexão de Banco de Dados ..................................................................................................................................................... A-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 203.
    Exercício 1: ComponentesArquitetônicos do Oracle ..................................................................................................................................................... Exercício 1: Componentes Arquitetônicos do Oracle 1 Um usuário tenta estabelecer logon e recebe a mensagem de erro "ORA-01034 ORACLE not available" (ORA-01034 ORACLE não disponível). Qual destes itens é a causa provável do problema? a O usuário forneceu uma senha sem validade. b O usuário forneceu um nome de usuário sem validade. c A instância com a qual o usuário está estabelecendo conexão não está em execução. d A versão do Oracle solicitada pelo usuário não está instalada. 2 Um usuário executa um comando SQL para atualizar uma linha na tabela EMP. Qual processo executa essa instrução? a Processo de usuário b Processo de servidor c DBWR d LGWR 3 Um usuário executa um comando SQL para atualizar uma linha na tabela EMP. Onde o processo identificado na pergunta anterior faz a alteração? a Arquivos de dados b Cache de buffer do banco de dados c Pool compartilhado d Arquivo de parâmetros 4 Qual destes arquivos é usado para autenticar usuários de banco de dados privilegiados? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de logs arquivados 5 Qual destes arquivos não faz parte do banco de dados? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-3
  • 204.
    Apêndice A: Exercícios ..................................................................................................................................................... 6 Qual destes arquivos armazena segmentos de rollback? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados 7 Qual destas áreas de memória não faz parte da SGA? a Cache de buffer do banco de dados b PGA c Buffer de redo log d Pool compartilhado 8 Qual destas áreas de memória é usada para armazenar em cache as informações de dicionário de dados? a Cache de buffer do banco de dados b PGA c Buffer de redo log d Pool compartilhado 9 Quais destes estágios são usados para processar uma instrução DML? a Análise b Execução c Extração 10 Quando um usuário executa uma submissão a commit, em qual destes arquivos são registradas as alterações antes de o servidor Oracle retornar uma mensagem "Commit complete" (Commit concluído) ao usuário? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados ..................................................................................................................................................... A-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 205.
    Exercício 2: ConceitosBásicos do Oracle ..................................................................................................................................................... Exercício 2: Conceitos Básicos do Oracle Usando o SQL*Plus 1 Qual é o tamanho do cache de buffer do banco de dados? 2 Qual é o tamanho da área global do sistema? 3 Liste as 9 primeiras linhas das colunas OWNER, TABLE_NAME, TABLESPACE _NAME na view de dicionário de dados DBA_TABLES e formate a saída. (A exibição das dez primeiras linhas é suficiente.) Saia do SQL*Plus. 4 Inicie o SQL*Plus e execute um script chamado para.sql, que efetua spool de todos os parâmetros de inicialização para o arquivo de saída para.lst. 5 Execute o script scott.sql. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-5
  • 206.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício3: Gerenciando uma Instância Oracle 1 Identifique o nome do banco de dados, nome da instância e tamanho dos blocos de banco de dados. 2 Liste o nome e tamanho dos arquivos de dados, arquivos de redo log on-line e o nome dos arquivos de controle. 3 Liste as opções instaladas. 4 Exiba os números de versão. 5 Exiba o número máximo de processos de usuário do sistema operacional que podem se conectar simultaneamente à instância. 6 Tente alterar o tamanho do bloco de banco de dados. O que acontece? 7 Liste os parâmetros de inicialização default. 8 Abra o banco de dados no modo somente para leitura. Conecte-se como o usuário SCOTT e adicione 10% a todos os salários na tabela EMP. O que acontece? Coloque o banco de dados novamente no modo de leitura/gravação. 9 Ative e verifique o andamento em arquivos de rastreamento dinamicamente. 10 Conecte-se como o usuário SCOTT e insira linhas na tabela EMP. Abra uma segunda sessão e tente desativar o banco de dados com a opção transacional. O que acontece? 11 Certifique-se de que existam pelo menos duas sessões abertas, uma sessão como o usuário SCOTT e uma como o usuário SYS. Ative a sessão restrita, verifique isso e certifique-se de que somente o administrador de banco de dados SYS esteja conectado. ..................................................................................................................................................... A-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 207.
    Exercício 3: Gerenciandouma Instância Oracle ..................................................................................................................................................... 12 Examine este exemplo de um arquivo de alerta para identificar se ocorreram exceções ou erros internos. Wed Jun 30 13:24:30 1999 Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 LICENSE_MAX_USERS = 0 Starting up ORACLE RDBMS Version: 8.1.5.0.0. System parameters with non-default values: processes = 60 shared_pool_size = 3500000 java_pool_size = 1000000 control_files = $HOME/DATA/DISK1/control01.con db_block_buffers = 100 db_block_size = 4096 compatible = 8.1.5 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 db_files = 1024 db_file_multiblock_read_count= 8 dml_locks = 200 rollback_segments = sysrol db_domain = world global_names = TRUE distributed_transactions = 10 sort_area_size = 64000 db_name = DB01 job_queue_processes = 2 job_queue_interval = 10 parallel_max_servers = 12 background_dump_dest = $HOME/BDUMP user_dump_dest = $HOME/UDUMP max_dump_file_size = 10240 core_dump_dest = $HOME/CDUMP PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7 SNP0 started with pid=8 SNP1 started with pid=9 .. Corrupt block relative dba: 0x01c0003a file=7. blocknum=58. Fractured block found during buffer read Data in bad block - type:6. format:2. rdba:0x01c0003a last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00 consistancy value in tail 0x44c506a0 check value in block header: 0x0, check value not calculated spare1:0x0, spare2:0x0, spare2:0x0 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-7
  • 208.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício4: Criando um Banco de Dados Os diretórios especificados para os arquivos devem ser inseridos em $HOME/DATA. 1 Crie um arquivo de senhas usando estas informações: – Senha de sys:oracle – Ative cinco usuários privilegiados Certifique-se de que o Oracle possa gravar dados nesse arquivo. 2 Grave um script para a criação de um banco de dados com esta configuração: – Nome de banco de dados e nome de instância DB<xx> – Um arquivo de controle chamado control01.con localizado no diretório DISK5 – Dois grupos de arquivos de redo log, cada um deles com um membro de 150K chamado redo0101.log e redo0201.log localizados no diretório DISK6 – O número máximo de cinco grupos de arquivos de log e cinco membros de arquivo de log para cada grupo – Um arquivo de dados de 20M chamado system01.dbf localizado no diretório DISK4 – Máximo de 30 arquivos de dados que podem ser criados para o banco de dados – Um máximo de 100 arquivos redo log arquivados para recuperação automática de mídia – O conjunto de caracteres WE8ISO8859P1 A localização do arquivo de rastreamento deve ser nos diretórios BDUMP e CDUMP. 3 Ative o spool para capturar os erros e executar o script. 4 (Opcional) Inclua o comando "spool <nome_arquivo>" antes de executar o comando. 5 (Opcional) Após a criação, verifique o estado do banco de dados e certifique-se de que os arquivos de banco de dados foram criados. 6 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê? ..................................................................................................................................................... A-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 209.
    Exercício 5: CriandoViews de Dicionário de Dados e Pacotes Padrão ..................................................................................................................................................... Exercício 5: Criando Views de Dicionário de Dados e Pacotes Padrão 1 Crie as views de dicionário de dados. 2 Use as views de dicionário de dados para reunir estas informações: aQual é o nome e número dos segmentos de rollback? b Identifique o arquivo de dados que compõe o tablespace SYSTEM. c Qual é o espaço livre disponível no banco de dados e quanto já está usado? d Liste o nome e data de criação dos usuários do banco de dados. 3 Verifique quais tabelas de dicionário de dados são usadas para definir a view DBA_USERS. 4 Estabeleça o uso da funcionalidade PL/SQL. (Faça um intervalo assim que o script for iniciado.) 5 Verifique se algum dos pacotes é inválido. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-9
  • 210.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício6: Mantendo o Arquivo de Controle 1 Onde está localizado o arquivo de controle existente e qual é o seu nome? 2 Tente iniciar o banco de dados sem qualquer arquivo de controle. Você pode simular isso alterando o nome do arquivo de controle no arquivo de parâmetros ou apenas alterando o nome do arquivo de controle. O que acontece? 3 Aplique o recurso de multiplexação no arquivo de controle existente usando o diretório DISK2 e nomeie o novo arquivo de controle como control02.con. Certifique-se de que o Oracle Server possa gravar dados no novo arquivo de controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os dois arquivos de controle estão sendo usados. 4 Qual é o dimensionamento inicial da seção de arquivo de dados no arquivo de controle? ..................................................................................................................................................... A-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 211.
    Exercício 7: MantendoArquivos de Redo Log ..................................................................................................................................................... Exercício 7: Mantendo Arquivos de Redo Log 1 Liste o número e local dos arquivos de log existentes e exiba o número de grupos e membros de arquivos de redo log existentes no banco de dados. 2 Em que modo de banco de dados o seu banco de dados está configurado? O arquivamento está ativado? 3 Adicione um membro de redo log a cada grupo no banco de dados localizado em DISK3, usando estas convenções de nomeação: Se o grupo 1 tiver dois arquivos existentes chamados redo0101.log e redo0102.log, adicione um novo membro chamado redo0103.log. Verifique o resultado. 4 Crie um novo grupo de redo log localizado nos diretórios DISK3, DISK4 e DISK5 e verifique a existência do novo grupo. 5 Desloque os membros redo0103.log e redo0303.log (consulte a etapa 3) do diretório DISK3 para DISK5. 6 Remova o grupo de redo log criado na etapa 4. 7 Redimensione todos os arquivos de redo log on-line para 1024K. (Como não é possível redimensionar arquivos de log, será necessário adicionar novos logs e eliminar os antigos.) ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-11
  • 212.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício8: Gerenciando Tablespaces e Arquivos de Dados 1 Crie tablespaces permanentes com estes nomes e armazenamento: a DATA01 para tabelas com armazenamento default. b DATA02 para objetos grandes com armazenamento default. Certifique-se de que todos os tamanhos da extensão usados no tablespace sejam múltiplos de 100K. c INDX01 para índices com o armazenamento default. Ative a extensão automática de 500K quando mais extensões forem necessárias. d RONLY para tabelas somente para leitura com o armazenamento default Exiba as informações do dicionário de dados Nome do Tablespace Subdiretório Local do Arquivo de Dados (Tamanho) DATA01 DISK4 data01.dbf (2M) DATA02 DISK5 data02.dbf (1M) INDX01 DISK3 indx01.dbf (1M) RONLY DISK1 ronly.dbf (1M) 2 Aloque mais 500K ao tablespace DATA02 e verifique o resultado. 3 Desloque o tablespace INDX01 para DISK6. 4 Transforme o tablespace RONLY em somente para leitura após criar uma tabela nesse tablespace. Tente criar uma tabela adicional e eliminá-la. O que acontece e por quê? 5 Elimine o tablespace RONLY e verifique-o. 6 Sem desativar a instância, altere o SORT_AREA_SIZE para 2 kilobytes. 7 Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute srt_dd.sql a partir de uma sessão e monitore a atividade de classificação a partir da outra sessão. Consulte estatísticas de classificação e informações de segmento temporário durante e após a conclusão do script. Observe os resultados. 8 Em uma das sessões, execute asn_tts.sql para se preparar para a próxima parte do laboratório. Esse script garante que o tablespace TEMP será usado para as classificações feitas pelo usuário SYSTEM e será abordado na lição "Gerenciando Usuários". Conecte-se como SYSTEM a partir de uma das sessões e execute srt_dd.sql. Na outra sessão, monitore as estatísticas e a atividade de classificação, da mesma forma que fez na pergunta 3. Você notou alguma diferença? 9 Redefina SORT_AREA_SIZE. ..................................................................................................................................................... A-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 213.
    Exercício 9: Estruturade Armazenamento e Relacionamentos ..................................................................................................................................................... Exercício 9: Estrutura de Armazenamento e Relacionamentos 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices. 2 Identifique os diversos tipos de segmento no banco de dados. 3 Grave uma consulta para verificar quais segmentos estão a menos de cinco extensões do máximo de extensões. Ignore o segmento de bootstrap. Essa consulta é útil para identificar os segmentos com probabilidade de gerar erros durante a futura carga de dados. 4 Quais arquivos têm espaço alocado para a tabela EMP? 5 (a) Grave uma consulta para obter o Número de Arquivo) e o Número de Bloco do cabeçalho da tabela EMP. (b) Grave uma consulta que aceitará um número de arquivo e um número de bloco como entrada e retornará o nome e o tipo do segmento que utiliza o bloco. Teste a consulta fornecendo o arquivo e o número de bloco do cabeçalho da tabela EMP (obtidos na consulta anterior. Use o SQL*Plus para executar a consulta). 6 Liste o espaço livre disponível por tablespace. A consulta deverá exibir os números de fragmentos, o total do espaço livre e a maior extensão livre em cada tablespace. 7 Execute o script cr_frags.sql no diretório LABS. Verifique se existem extensões livres adjacentes no banco de dados. Una as extensões e verifique novamente. 8 Liste os segmentos que gerarão erros em decorrência de falta de espaço quando eles tentarem alocar uma extensão adicional. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-13
  • 214.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício10: Gerenciando Segmentos de Rollback Antes de iniciar este exercício, certifique-se de que executou o script $HOME/LABS/ alt_sysrol.sql como o usuário SYSTEM. 1 Conecte-se como o usuário SYSTEM (senha = manager) e insira um registro na tabela EMP. A operação foi bem-sucedida? Por que ou por que não? 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados. Os pedidos serão informados usando 15 estações clientes, que possuem um volume bastante alto de atividade pela manhã. Crie um número apropriado de segmentos de rollback no banco de dados. (Adote um tamanho default para este exercício.) 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para verificar se você consegue inserir um registro na tabela EMP. Não submeta INSERT a commit. 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem usados pelas transações. 5 Localize o segmento de rollback que é usado pela transação. 6 Chame o SQL*Plus do diretório labs. Execute o script ins_emp.sql. Usando uma sessão separada, coloque o tablespace do segmento de rollback como off-line; 7 (a) Desative a instância, inicialize novamente e consulte as informações do segmento de rollback no dicionário de dados para verificar quantos segmentos de rollback estão on-line. (b) Certifique-se de que todos os segmentos de rollback serão colocados on-line sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que todos os segmentos de rollback estejam ONLINE. 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados com os seguintes parâmetros de armazenamento e verifique se é possível usá-lo. Isso é essencial para a próxima pergunta: INITIAL = 10K NEXT = 10K OPTIMAL = 30K 9 Verifique o número de extensões no segmento de rollback DEMO_RBS rollback. Estabeleça login como system/manager usando o SQL*Plus e execute o script ext_rbs.sql. Há alguma alteração no número de extensões no segmento de rollback? 10 Verifique se o segmento de rollback DEMO_RBS foi reduzido para seu tamanho ideal. 11 Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada, conecte-se como SYSTEM e execute ins_emp3.sql. Verifique se existe uma sessão bloqueadora. 12 Elimine o segmento de rollback DEMO_RBS. ..................................................................................................................................................... A-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 215.
    Exercício 11: GerenciandoTabelas ..................................................................................................................................................... Exercício 11: Gerenciando Tabelas 1 É necessário criar estas tabelas para um sistema de entrada de pedidos que você esteja criando neste momento. As tabelas e colunas são mostradas abaixo: Tabela Coluna Tipo de Dados e Tamanho CUSTOMERS CUST_CODE VARCHAR2(3) NAME VARCHAR2(50) REGION VARCHAR2(5) ORDERS ORD_ID NUMBER(3) ORD_DATE DATE CUST_CODE VARCHAR2(3) DATE_OF_DELY DATE Você foi informado de que na tabela ORDERS as linhas serão inseridas sem um valor para DATE_OF_DELY e que ela será atualizada quando um pedido for atendido. Estabeleça login como system/manager e crie as tabelas usando as definições apropriadas de tablespace e utilização de espaço do bloco. Use o tablespace DATA01. Você pode utilizar as definições de armazenamento default. Use o Assistente de Tabela ao criar a tabela CUSTOMERS. Não utilize o Assistente de Tabela ao criar tabelas ORDERS. 2 Execute o script ins_cord.sql para inserir linhas em tabelas. 3 Descubra quais arquivos e blocos contêm os pedidos do cliente com CUST_CODE=A04. 4 Verifique quantas extensões foram usadas pela tabela ORDERS. 5 Aloque uma extensão manualmente, com o tamanho default, à tabela ORDERS e confirme se a extensão foi adicionada da forma especificada. 6 (a) Elimine a tabela BIG_EMP. (b) Crie outra tabela, ORDERS2 como cópia da tabela ORDERS, mas com MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi criada com o número especificado de extensões. 7 Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões para confirmar se as extensões não foram desalocadas. 8 Altere a tabela ORDERS2 para reduzir MINEXTENTS para 4. Houve uma redução no número de extensões? ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-15
  • 216.
    Apêndice A: Exercícios ..................................................................................................................................................... 9 Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela tem agora? 10 (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela ORDERS2. (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões. Houve espaço liberado da tabela? Por que ou por que não? 11 (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela PRODUCTS com estas colunas: Coluna Tipo de Dados e Tamanho PROD_CODE NUMBER(6) DESCRIPTION VARCHAR2(30) PRICE NUMBER(8,2) Crie essa tabela no tablespace DATA02 usando tamanhos de extensão uniformes de 10K. (b) Verifique os tamanhos das extensões dessa tabela. O que você percebe? ..................................................................................................................................................... A-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 217.
    Exercício 12: GerenciandoÍndices ..................................................................................................................................................... Exercício 12: Gerenciando Índices 1 Você está pensando em criar índices sobre as colunas NAME e REGION da tabela CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os índices com os nomes CUST_NAME_IDX e CUST_REGION_IDX, respectivamente, e coloque-os nos tablespaces apropriados. 2 Mova o índice CUST_REGION_IDX para outro tablespace. 3 Observe os arquivos e blocos usados por extensões pelo índice CUST_REGION_IDX. File_id Block_id Blocos 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, nem criá-lo novamente e mantenha-o no mesmo tablespace anterior. O novo índice utiliza os mesmos blocos usados anteriormente? 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a tabela NUMBERS. (b) Consulte a tabela NUMBERS para descobrir o número de valores distintos nas duas colunas da tabela. (c) Usando tamanhos de extensão uniformes de 4K, crie índices em árvore B NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-17
  • 218.
    Apêndice A: Exercícios ..................................................................................................................................................... (d) Novamente, usando tamanhos da extensão uniformes de 4K, crie os índices de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX O que você pode concluir sobre a relação entre cardinalidade e tamanhos dos dois tipos de índice? ..................................................................................................................................................... A-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 219.
    Exercício 13: Mantendoa Integridade dos Dados ..................................................................................................................................................... Exercício 13: Mantendo a Integridade dos Dados 1 Examine o script, cr_cons.sql. Execute o script para criar as restrições. 2 Consulte o dicionário de dados para: (a) Verificar as restrições, se elas são adiáveis e seus status. (b) Verificar os nomes e tipos de índices criados para validar as restrições. (c) Verificar quais colunas são usadas nas restrições criadas. 3 Insira dois registros com estes valores na tabela PRODUCTS: PROD_CODE DESCRIPTION PRICE 100860 Ace Tennis Racket 36.20 100860 Ace Tennis Ball 3-Pack 2.40 4 Ative a restrição exclusiva na tabela PRODUCTS. Foi bem-sucedido? Por que ou por que não? 5 (a) Certifique-se de que as novas linhas adicionadas à tabela não violem a restrição na tabela PRODUCTS. (b) Consulte o dicionário de dados para verificar o efeito da alteração. (c) Verifique se a restrição rejeita inserções que violam a restrição adicionando uma linha com estes valores: PROD_CODE: 100860 DESCRIPTION: Yellow Jersey Bicycle Helmet PRICE: 30 6 Execute as etapas necessárias para identificar violações de restrição existentes na tabela PRODUCTS, modificar códigos de produto conforme necessário e garantir que todos os novos dados e também os existentes não violam a restrição. (Presuma que a tabela tenha milhares de linhas e que seja muito demorado verificar cada linha manualmente.) 7 Execute o script ins_ocus1.sql para inserir linhas na tabela. As inserções foram bem-sucedidas? Efetue rollback das alterações. 8 Agora examine o script, ins_ocus2.sql. Observe que esse script também executa inserções na mesma seqüência. Execute o script e verifique se sua execução foi bem-sucedida. 9 Trunque a tabela CUSTOMERS. Foi bem-sucedido? Por que ou por que não? ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-19
  • 220.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício14: Carregando Dados Use a conta system para todas as perguntas deste laboratório. 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS. (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS. (c) Anote o último arquivo/número de bloco usado por uma linha existente no momento na tabela _____________________. 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com estes valores na tabela: ORD_ID: 200 PROD_CODE: 200000 QTY: 20 (b) Verifique e anote o arquivo/número do bloco da nova linha _____________________. 3 (a) Use inserção de carga direta para copiar dados para a tabela ITEMS2 a partir da tabela ITEMS. (b) Verifique o arquivo/números de bloco das linhas com ORD_ID<>200. O que você pode observar sobre a localização dessas linhas? 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat. Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as etapas a seguir para tentar duas execuções de carga e se familiarizar com o uso do SQL*Loader: (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP. (b) Execute o SQL*Loader para carregar dados para a tabela DEPT usando o arquivo de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela DEPT para verificar os dados carregados. (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando o arquivo de controle ulcase2.ctl. Observe que essa execução utiliza um arquivo de dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte a tabela EMP para verificar os dados carregados. 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2. (b) Aloque uma extensão à tabela manualmente e anote o número de extensões e blocos agora ______________________. Como você acabou de criar a extensão, a nova extensão está vazia. ..................................................................................................................................................... A-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 221.
    Exercício 15: ReorganizandoDados ..................................................................................................................................................... Exercício 15: Reorganizando Dados 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar. Verifique o número e o tamanho das extensões na tabela ITEMS2 antes de eliminá- la e depois repita esse procedimento após importar a tabela. O que você pode deduzir o comportamento dos utilitários Importar e Exportar na alocação de espaço? 2 Você precisa mover diversos índices de um tablespace para outro. Este exercício utiliza um índice para mostrar como isso pode ser feito. (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna ORD_ID da tabela ITEMS2. (b) Usando os utilitários Importar e Exportar, mova o índice para o tablespace INDX01. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-21
  • 222.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício16: Gerenciando a Segurança de Senha 1 Ative o gerenciamento de senha usando o script utlpwdmg.sql . 2 Tente alterar a senha do usuário SCOTT para SCOTT. O que acontece? 3 Certifique-se de que os seguintes itens se apliquem a usuários aos quais o perfil DEFAULT foi designado: – Após duas tentativas de login, a conta deve ser bloqueada. – A senha deve expirar após 30 dias. – A mesma senha não deve ser reutilizada novamente por pelo menos um minuto – A conta deve ter um período de tolerância de cinco dias para alterar uma senha expirada. Certifique-se de que os requisitos concedidos foram implementados. 4 Estabeleça login para o usuário SYSTEM fornecendo uma senha sem validade. Tente esse procedimento duas vezes e, em seguida, estabeleça login novamente, dessa vez fornecendo a senha correta. 5 Certifique-se de que SYSTEM possa se reconectar. 6 Desative as verificações de senha do perfil DEFAULT. ..................................................................................................................................................... A-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 223.
    Exercício 17: GerenciandoUsuários ..................................................................................................................................................... Exercício 17: Gerenciando Usuários 1 Crie o usuário Bob com uma senha ALONG. Certifique-se de que quaisquer objetos e segmentos temporários criados por Bob não sejam criados no tablespace SYSTEM. Além disso, certifique-se de que Bob possa estabelecer login e criar objetos de até um megabyte de tamanho nos tablespaces DATA01 e INDX01. Se você não estiver usando o Oracle Enterprise Manager, execute o script bob.sql. 2 (a) Crie um usuário Kay com uma senha MARY. Certifique-se de que quaisquer objetos e segmentos de classificação criados por Kay não sejam criados no tablespace SYSTEM. (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Dê à nova tabela o nome ORDERS. 3 Exiba as informações sobre Bob e Kay a partir do dicionário de dados. 4 No dicionário de dados, exiba as informações sobre o espaço que Bob pode utilizar em tablespaces. 5 (a) Como o usuário Bob, altere seu tablespace temporário. O que acontece? Por quê? (b) Como Bob, altere sua senha para SAM. 6 Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo. 7 Remova a conta de Kay do banco de dados. 8 Bob esqueceu sua senha. Designe a ele uma senha OLINK e exija que Bob altere a senha na próxima ocasião em que estabelecer logon. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-23
  • 224.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício18: Gerenciando Privilégios 1 Como o usuário SYSTEM, crie um usuário Kay e conceda a ele a capacidade de estabelecer logon no banco de dados e criar objetos em seu esquema. 2 (a) Conecte-se como Kay e crie tabelas usando o script ulcase1.sql para criar as tabelas EMP e DEPT. (b) Conecte-se como system e copie os dados de SYSTEM.EMP para a tabela EMP de Kay. Verifique se os registros foram inseridos. (c) Como system, conceda a Bob a capacidade de efetuar seleções na tabela EMP de Kay. O que acontece e por quê? 3 Reconecte-se como Kay e permita que Bob efetue seleções na tabela EMP de Kay. Além disso, permita que Bob conceda a outros usuários a capacidade de seleção. Examine as views de dicionário de dados que registram essas ações. 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados. 5 (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Forneça a Bob a nova senha sam. (b) Como Kay, retire de Bob o privilégio de ler a tabela EMP de Kay. (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê? 6 (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que acontece e por quê? (b) Como system, examine a view de dicionário de dados DBA_TABLES para verificar o resultado. 7 Permita que Kay inicialize e desative o banco de dados sem ter a capacidade de criar um novo banco de dados. ..................................................................................................................................................... A-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 225.
    Exercício 19: GerenciandoAtribuições ..................................................................................................................................................... Exercício 19: Gerenciando Atribuições 1 Examine a view de dicionário de dados e liste os privilégios de sistema da atribuição RESOURCE. 2 Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela, criar uma view e efetuar seleções na tabela EMP de Kay. 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas faça somente a atribuição RESOURCE ser ativada automaticamente quando ele estabelecer logon. (b) Forneça a Bob a capacidade de ler todas as informações de dicionário de dados. 4 Bob precisa verificar os segmentos de rollback que estão sendo utilizados no momento pela instância. Conecte-se como Bob e liste os segmentos de rollback utilizados. 5 Como system, tente criar uma view EMP_VIEW na tabela EMP de Kay. O que acontece e por quê? ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura A-25
  • 226.
    Apêndice A: Exercícios ..................................................................................................................................................... Exercício20: Usando o Suporte a Idioma Nacional (National Language Support – NLS) 1 Verifique o conjunto de caracteres nacionais e de banco de dados. 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados? 3 Certifique-se de que todas as datas desta sessão sejam exibidas usando um ano de 4 dígitos. 4 Defina o NLS_LANG no lado cliente e no lado servidor para ativar o esquema de codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o usuário SYS e exiba as linhas. Em seguida, exporte a tabela. Importe a tabela para o usuário Bob usando o conjunto de caracteres US7ASCII. Consulte a tabela. O que aconteceu e por quê? (opcional) ..................................................................................................................................................... A-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 227.
  • 228.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício1: Componentes Arquitetônicos do Oracle Não há dicas para esse exercício. ..................................................................................................................................................... B-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 229.
    Exercício 2: ConceitosBásicos do Oracle ..................................................................................................................................................... Exercício 2: Conceitos Básicos do Oracle Usando o SQL*Plus 1 Qual é o tamanho do cache de buffer do banco de dados? 2 Qual é o tamanho da área global do sistema? 3 Liste as colunas OWNER, TABLE_NAME, TABLESPACE _NAME da view de dicionário de dados DBA_TABLES e formate a saída. (A exibição das primeiras dez linhas é suficiente.) Saia do SQL*Plus. 4 Inicie o SQL*Plus e execute um script de lote chamado para.sql, que efetua spool em todos os parâmetros de inicialização para o arquivo de saída para.lst. Dica: Chame para.sql na linha de comandos do sistema operacional. 5 Execute o script scott.sql. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-3
  • 230.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício3: Gerenciando uma Instância Oracle 1 Identifique o nome do banco de dados, o nome da instância e o tamanho dos blocos de banco de dados. Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD e V$PARAMETER para exibir o nome do banco de dados, o nome da instância e o tamanho dos blocos de banco de dados. 2 Liste o nome e o tamanho dos arquivos de dados, dos arquivos de redo log on-line e o nome dos arquivos de controle. Dica: Consulte as views de desempenho dinâmicas V$DATAFILE, V$LOGFILE e V$CONTROLFILE para exibir os arquivos de dados, os arquivos de redo log on- line e o nome dos arquivos de controle. 3 Quais são as opções instaladas? Dica: Consulte as views de desempenho dinâmicas V$OPTION para exibir as opções instaladas. 4 Exiba o número da versão. Dica: Consulte as views de desempenho dinâmicas V$VERSION para exibir o número da versão. 5 Exiba o número máximo de processos de usuário do sistema operacional que pode estabelecer simultaneamente uma conexão com a instância. Dica: Consulte as views de desempenho dinâmicas V$PARAMETER ou use o comando SHOW PARAMETER para exibir o número máximo de processos de usuário do sistema operacional que pode estabelecer simultaneamente uma conexão com a instância. 6 Tente alterar o tamanho do bloco de banco de dados. O que aconteceu? Dica: Não há dica para essa pergunta. 7 Liste o parâmetro de inicialização default. Dica: Consulte as views de desempenho dinâmicas V$PARAMETER para exibir o parâmetro de inicialização default. 8 Abra o banco de dados no modo somente para leitura. Estabeleça conexão como o usuário SCOTT e adicione 10% a todos os salários na tabela EMP. O que acontece? Retorne o banco de dados para o modo de leitura/gravação. Dica: Não há dica para essa pergunta. ..................................................................................................................................................... B-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 231.
    Exercício 3: Gerenciandouma Instância Oracle ..................................................................................................................................................... 9 Ative o tempo nos arquivos de rastreamento de forma dinâmica e verifique-o. Dica: Use o comando ALTER SYSTEM para ativar o tempo nos arquivos de rastreamento de forma dinâmica e use a view de desempenho dinâmica V$PARAMETER para verificar o resultado. 10 Estabeleça conexão como o usuário SCOTT e insira linhas na tabela EMP. Abra uma segunda sessão e tente desativar o banco de dados com a opção transacional. O que acontece? Dica: Não há dica para essa pergunta. 11 Verifique se pelo menos duas sessões estão abertas, uma sessão como o usuário SCOTT e outra como SYS. Ative a sessão restrita, verifique isso e certifique-se de que somente o administrador de banco de dados SYS esteja conectado. Dica – Use o comando ALTER SYSTEM para ativar a sessão restrita e consulte as views de desempenho dinâmicas V$INSTANCE para verificar o resultado. – Use a view de desempenho dinâmica V$SESSION para ver os valores das colunas SID e SERIAL#. – Execute o comando ALTER SYSTEM KILL SESSION para encerrar sessões. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-5
  • 232.
    Apêndice B: Dicas ..................................................................................................................................................... 12Examine o seguinte exemplo de um arquivo de alerta para identificar se houve erros internos ou exceções. Dica: Não há dica para esse item. Wed Jun 30 13:24:30 1999 Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 LICENSE_MAX_USERS = 0 Starting up ORACLE RDBMS Version: 8.1.5.0.0. System parameters with non-default values: processes = 60 shared_pool_size = 3500000 java_pool_size = 1000000 control_files = $HOME/DATA/DISK1/control01.con db_block_buffers = 100 db_block_size = 4096 compatible = 8.1.5 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 db_files = 1024 db_file_multiblock_read_count= 8 dml_locks = 200 rollback_segments = sysrol db_domain = world global_names = TRUE distributed_transactions = 10 sort_area_size = 64000 db_name = DB01 job_queue_processes = 2 job_queue_interval = 10 parallel_max_servers = 12 background_dump_dest = $HOME/BDUMP user_dump_dest = $HOME/UDUMP max_dump_file_size = 10240 core_dump_dest = $HOME/CDUMP PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7 SNP0 started with pid=8 SNP1 started with pid=9 .. Corrupt block relative dba: 0x01c0003a file=7. blocknum=58. Fractured block found during buffer read Data in bad block - type:6. format:2. rdba:0x01c0003a last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00 consistancy value in tail 0x44c506a0 check value in block header: 0x0, check value not calculated spare1:0x0, spare2:0x0, spare2:0x0 ..................................................................................................................................................... B-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 233.
    Exercício 4: Criandoum Banco de Dados ..................................................................................................................................................... Exercício 4: Criando um Banco de Dados Insira os diretórios especificados para os arquivos em $HOME/DATA. 1 Crie um arquivo de senhas usando as seguintes informações: – Senha de sys:oracle – Ative cinco usuários privilegiados Certifique-se de que o Oracle possa gravar dados nesse arquivo. Dica: Use o utilitário orapwd para criar o arquivo de senhas e localizá-lo no diretório $ORACLE_HOME/dbs. 2 Crie um script para obter um banco de dados com a seguinte configuração: – Nome do banco de dados e nome da instância U<xx> – Um arquivo de controle chamado control01.con localizado no diretório DISK5 – Dois grupos de arquivos de redo log, cada um com um membro de 150K chamado log1a.rdo e log2a.rdo localizado no diretório DISK6 – O máximo de cinco grupos de arquivos de log e cinco membros de arquivos de log para cada grupo – Um arquivo de dados de 20M chamado system01.dbf e localizado no diretório DISK4 – Máximo de 30 arquivos de dados que podem ser criados para o banco de dados – O máximo de 100 redo logs arquivados para a recuperação automática de mídia – O conjunto de caracteres WE8ISO8859P1 Insira o arquivo de rastreamento no diretório BDUMP e CDUMP. Dica – Edite o arquivo de parâmetros. – Inicie a instância. – Gere o script do comando CREATE DATABASE. 3 Ative o spool para encontrar os erros e execute o script (opcional): Inclua o comando "spool <nome_arquivo>" antes de executá-lo. 4 Depois que o banco de dados tiver sido criado, verifique o estado do mesmo e certifique-se de que os arquivos de banco de dados tenham sido criados (opcional). Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD, V$DATAFILE, V$LOGFILE e V$CONTROLFILE para verificar o estado do banco de dados e exibir as informações sobre os arquivos de dados, os arquivos de redo log on-line e os arquivos de controle. 5 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê? (opcional) Dica: Não há dica para essa pergunta. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-7
  • 234.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício5: Criando Views de Dicionário de Dados e Pacotes Padrão 1 Crie as views de dicionário de dados. 2 Use essas views para reunir as seguintes informações: aQual é o nome e o número dos segmentos de rollback? Dica: Consulte a view de dicionário de dados DBA_ROLLBACK_SEGS para mostrar o nome dos segmentos de rollback. b Identifique o arquivo de dados que compõe o tablespace SYSTEM. Dica: Consulte a view de dicionário de dados DBA_DATA_FILES para identificar os arquivos de dados que compõem o tablespace SYSTEM. c Qual é o espaço disponível no banco de dados e qual é o espaço já utilizada? Dica – Consulte a view de dicionário de dados DBA_FREE_SPACE para mostrar o espaço disponível no banco de dados. – Consulte a view de dicionário de dados DBA_SEGMENTS para exibir o espaço já utilizado. d Liste o nome e a data de criação dos usuários do banco de dados. Dica: Consulte a view de dicionário de dados dba_users para listar o nome e a criação dos usuários do banco de dados. 3 Verifique as tabelas de dicionário de dados que são usadas para definir a view DBA_USERS. Dica: Consulte a view de dicionário de dados DBA_VIEWS para exibir a definição da view de dicionário de dados DBA_USERS. 4 Estabeleça o uso da funcionalidade PL/SQL. (Espere um pouco assim que o script for iniciado.) Dica: Não há dica para esse item. 5 Verifique se há algum pacote inválido. Dica: Consulte a view DBA_OBJECTS para obter essas informações. ..................................................................................................................................................... B-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 235.
    Exercício 6: Mantendoo Arquivo de Controle ..................................................................................................................................................... Exercício 6: Mantendo o Arquivo de Controle 1 Onde o arquivo de controle existente está localizado e qual é o nome do mesmo? Dica: Consulte a view de desempenho dinâmica V$CONTROLFILE ou V$PARAMETER, ou então execute o comando SHOW PARAMETER para exibir o nome e a localização do arquivo de controle. 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. Você pode simular essa situação alterando o nome do arquivo de controle no arquivo de parâmetros ou apenas alterando o nome do arquivo de controle. O que acontece? Dica: Não há dica para essa pergunta. 3 Aplique o recurso de multiplexação ao arquivo de controle existente usando o diretório DISK2 e nomeie o novo arquivo de controle como control02.con. Certifique-se de que o servidor Oracle consiga gravar dados no novo arquivo de controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os dois arquivos de controle estão sendo usados. Dica – Desative o banco de dados. – Copie o arquivo de controle existente para um novo arquivo chamado control02.con no diretório DISK2. – Use o comando chmod 660 no UNIX. – Modifique o arquivo de parâmetros para incluir o novo nome de arquivo. – Inicialize o banco de dados. – Consulte a view de desempenho dinâmica V$CONTROLFILE ou V$PARAMETER, ou então use o comando SHO PARAMETER para confirmar que os dois arquivos de controle estão sendo usados. 4 Qual é o tamanho inicial da seção de arquivo de dados no arquivo de controle? Dica: Não há dica para essa pergunta. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-9
  • 236.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício7: Mantendo Arquivos de Redo Log 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de grupos e de membros de arquivos de redo log que o seu banco de dados possui. Dica – Consulte as views de desempenho dinâmicas V$LOGFILE para exibir a localização dos arquivos de log existentes. – Use a view de desempenho dinâmica V$LOG para exibir o número de grupos e de membros de arquivos de redo log. 2 Em que modo de banco de dados o seu banco de dados está configurado? O arquivamento está ativado? Dica – Consulte as views de desempenho dinâmicas V$DATABASE para mostrar o modo de banco de dados. – Consulte a view de desempenho dinâmica V$INSTANCE para verificar se o arquivamento automático está ativado. 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no DISK3 usando as seguintes convenções de nomeação: Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e redo0102.log, adicione um novo membro chamado redo0103.log. Verifique o resultado. Dica – Execute o comando ALTER DATABASE ADD LOGFILE MEMBER para adicionar um membro de redo log a cada grupo. – Consulte as views de desempenho dinâmicas V$LOGFILE para verificar o resultado. 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e DISK5, e verifique a existência do novo grupo. Dica – Execute o comando ALTER DATABASE ADD LOGFILE para criar um novo grupo. – Consulte as views de desempenho dinâmicas V$LOGFILE para exibir o nome dos novos membros do novo grupo. – Consulte a view de desempenho dinâmica V$LOG para exibir o número de grupos e de membros de arquivos de redo log. ..................................................................................................................................................... B-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 237.
    Exercício 7: MantendoArquivos de Redo Log ..................................................................................................................................................... 5 Desloque os membros redo0103.log e redo0303.log (consulte a etapa 3) do diretório DISK3 para DISK5. Dica – Mova os membros para o diretório DISK5. – Execute o comando ALTER DATABASE RENAME FILE para renomear os membros. – Consulte as views de desempenho dinâmicas V$LOGFILE para verificar o resultado. 6 Remova o grupo de logs criado na etapa 4. Dica – Execute o comando ALTER DATABASE DROP LOGFILE GROUP para remover o grupo de logs. – Consulte as views de desempenho dinâmicas V$LOG para verificar o resultado. 7 Redimensione todos os arquivos de redo log on-line para 1024K. (Como não é possível redimensionar arquivos de log, é necessário adicionar novos logs e eliminar os antigos.) Dica – Execute o comando ALTER DATABASE ADD LOGFILE GROUP para adicionar dois novos grupos com o tamanho de 1024K. – Consulte as views de desempenho dinâmicas V$LOG para verificar o grupo ativo. – Execute o comando ALTER SYSTEM SWITCH LOGFILE para forçar alternâncias de log e alterar o estágio do grupo para inativo. – Execute ALTER DATABASE DROP LOGFILE para remover os grupos inativos. – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-11
  • 238.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício8: Gerenciando Tablespaces e Arquivos de Dados 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento: a DATA01 para tabelas com armazenamento default b DATA02 para objetos grandes com armazenamento default (Certifique-se de que cada tamanho de extensão usado no tablespace seja múltiplo de 100K.) c INDX01 para índices com o armazenamento default (Ative a extensão automática de 500K quando forem necessárias mais extensões.) d RONLY para tabelas somente para leitura com o armazenamento default Exiba as informações do dicionário de dados. Dica – Execute o comando CREATE TABLESPACE para criar os tablespaces permanentes. – Exiba as informações do dicionário de dados. – Consulte a view de desempenho dinâmica DBA_DATA_FILES para verificar o resultado. Localização do Arquivo de Nome do Tablespace Subdiretório Dados (Tamanho) DATA01 DISK4 data01.dbf (2M) DATA02 DISK5 data02.dbf (1M) INDX01 DISK3 indx01.dbf (1M) RONLY DISK1 ronly.dbf (1M) 2 Aloque mais 500K para o tablespace DATA02 e verifique o resultado. Dica – Use o comando ALTER DATABASE DATAFILE... RESIZE para alocar mais 500K. – Consulte a view de desempenho dinâmica V$DATAFILE para verificar o resultado. 3 Desloque o tablespace INDX01 e mova-o para DISK6. Dica – Coloque o tablespace INDX01 como OFFLINE. – Consulte a view de desempenho dinâmica V$DATAFILE para verificar o resultado. – Execute o comando ALTER TABLESPACE RENAME para renomear os arquivos. – Coloque o tablespace INDX01 como ONLINE. – Consulte as views de desempenho dinâmicas V$DATAFILE para verificar o resultado. ..................................................................................................................................................... B-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 239.
    Exercício 8: GerenciandoTablespaces e Arquivos de Dados ..................................................................................................................................................... 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar uma tabela nesse tablespace. Tente criar uma tabela adicional e eliminar a tabela. O que acontece e por quê? Dica: Não há dica para essa pergunta. 5 Elimine o tablespace RONLY e verifique-o. Dica – Execute DROP TABLESPACE ... para remover o tablespace. – Delete os arquivos do sistema operacional. – Consulte a view de desempenho dinâmica V$TABLESPACE para verificar o resultado. 6 Sem desativar a instância, altere SORT_AREA_SIZE para 2 kilobytes. Dica: SORT_AREA_SIZE é um parâmetro dinâmico que necessita da opção DEFERRED. 7 Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute srt_dd.sql em uma sessão e monitore a atividade de classificação em outra sessão. Consulte as estatísticas de classificação e as informações de segmento temporário durante e após da conclusão do script. Observe os resultados. Dica: As informações de segmento de classificação estão disponíveis em V$SORT_SEGMENT e a atividade de classificação atual em V$SORT_USAGE. 8 Em uma das sessões, execute asn_tts.sql para preparar para a próxima parte do laboratório. Esse script garante que o tablespace TEMP será usado para as classificações feitas pelo usuário SYSTEM e será abordado na lição "Gerenciando Usuários". Estabeleça conexão como SYSTEM em uma das sessões e execute srt_dd.sql. Na outra sessão, monitore as estatísticas e a atividade de classificação, da mesma forma que na pergunta 3. Você percebe alguma diferença? 9 Redefina SORT_AREA_SIZE. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-13
  • 240.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício9: Estrutura de Armazenamento e Relacionamentos 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices. 2 Identifique os diversos tipos de segmento no banco de dados. 3 Crie uma consulta para verificar os segmentos cuja extensão é cinco vezes menor do que as extensões máximas. Ignore o segmento de bootstrap. Essa consulta é útil na identificação de quaisquer segmentos que possam gerar erros durante a futura carga de dados. Dica: As colunas EXTENTS e MAX_EXTENTS na view de dicionário de dados DBA_SEGMENTS contêm o número atual e o número máximo de extensões. 4 Quais arquivos possuem espaço alocado para a tabela EMP? Dica: As views DBA_EXTENTS e DBA_DATA_FILES precisam ser reunidas para obter essas informações. 5 (a) Crie uma consulta para obter o Número de Arquivo e o Número de Bloco do cabeçalho da tabela EMP. Dica: Para localizar o bloco de cabeçalho da tabela EMP, consulte a view DBA_SEGMENTS. (b) Crie uma consulta que aceitará um número de arquivo e um número de bloco como a entrada e retornará o nome e o tipo do segmento que usa o bloco. Teste a consulta fornecendo o número de arquivo e de bloco do cabeçalho da tabela EMP (obtido na consulta anterior. Use o SQL*Plus para executar a consulta.) Dica: Crie um script do SQL*Plus para aceitar o número relativo de arquivo e de bloco, e consulte a view DBA_EXTENTS para localizar o segmento que usa o número relativo de arquivo e de bloco informado. 6 Liste o espaço disponível por tablespace. A consulta deverá exibir o número de fragmentos, o espaço livre total e a maior extensão livre em cada tablespace. Dica: Consulte a view DBA_FREE_SPACE para obter essas informações. ..................................................................................................................................................... B-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 241.
    Exercício 9: Estruturade Armazenamento e Relacionamentos ..................................................................................................................................................... 7 Execute o script cr_frags.sql no diretório LABS. Verifique se há extensões livres adjacentes no banco de dados. Reúna-as e verifique novamente. Dica Execute o script cr_frags.sql. – Consulte a view DBA_FREE_SPACE_COALESCED para localizar todos os tablespaces em que PERCENT_BLOCKS_COALESCED <> 100. – Use o comando ALTER TABLESPACE para reunir o espaço livre no tablespace. – Consulte a view DBA_FREE_SPACE_COALESCED novamente para localizar todos os tablespaces em que PERCENT_BLOCKS_COALESCED <> 100. 8 Liste segmentos que gerarão erros devido a falta de espaço quando tentarem alocar uma extensão adicional. Dica: É necessário verificar se a maior extensão livre de um tablespace em DBA_FREE_SPACE não é igual a NEXT_EXTENT de qualquer segmento no tablespace. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-15
  • 242.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício10: Gerenciando Segmentos de Rollback Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/ alt_sysrol.sql como o usuário SYSTEM. 1 Estabeleça conexão como o usuário SYSTEM (senha = manager) e insira um registro na tabela EMP. A operação foi bem-sucedida? Por que ou por que não? 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados. Os pedidos serão informados usando 15 estações clientes, que possuem um volume bastante alto de atividade pela manhã. Crie um número apropriado de segmentos de rollback no banco de dados. (Adote um tamanho default para este exercício.) Dica: Usando uma proporção de um segmento de rollback para cada quatro transações, você precisará criar quatro segmentos de rollback. 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para verificar se você consegue inserir um registro na tabela EMP. Não submeta INSERT a commit. Dica: Pelo menos um dos segmentos de rollback precisa estar ONLINE para que você possa inserir com sucesso uma linha na tabela EMP. 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem usados pelas transações. Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS. 5 Localize o segmento de rollback que é usado pela transação. Dica: É possível obter essa informação reunindo as views V$ROLLSTAT e V$ROLLNAME. 6 Chame o SQL*Plus do diretório labs. Execute o script ins_emp.sql. Usando uma sessão separada, coloque o tablespace do segmento de rollback como off-line. Dica • O script inicia outra transação que insere uma linha na tabela EMP. Como ambas transações estão usando os segmentos de rollback nesse tablespace, você precisará usar as etapas a seguir. – Primeiro coloque todos os segmentos de rollback no tablespace como OFFLINE para impedir que novas transações usem os segmentos de rollback no tablespace. – Agora identifique as sessões que estão usando os segmentos de rollback no tablespace RBS. – Cancele as sessões que estão usando segmentos de rollback no tablespace. – Coloque o tablespace RBS como off-line. ..................................................................................................................................................... B-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 243.
    Exercício 10: GerenciandoSegmentos de Rollback ..................................................................................................................................................... 7 (a) Desative a instância, inicialize novamente e consulte as informações do segmento de rollback no dicionário de dados para verificar quantos segmentos de rollback estão on-line. (b) Verifique se todos os segmentos de rollback serão colocados como on-line sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que todos os segmentos de rollback estejam ONLINE. Dica: Para isso, use o parâmetro de inicialização ROLLBACK_SEGEMENTS. Além disso, é necessário colocar como ONLINE o tablespace RBS. 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados com os seguintes parâmetros de armazenamento e verifique se é possível usá-lo. Isso é essencial para a próxima pergunta: INITIAL = 10K NEXT = 10K OPTIMAL = 30K Dica: Para verificar se é possível usar o segmento de rollback, coloque-o como ONLINE depois de criá-lo. 9 Verifique o número de extensões no segmento de rollback DEMO_RBS. Estabeleça login como system/manager usando o SQL*Plus e execute o script ext_rbs.sql. Há alguma alteração no número de extensões no segmento de rollback? 10 Certifique-se de que o segmento de rollback DEMO_RBS foi reduzido para seu tamanho ideal. Dica: É possível verificar o tamanho OPTIMAL em V$ROLLSTAT. Dica: Use o comando ALTER ROLLBACK SEGMENT para reduzir o tamanho e verifique novamente. 11 Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada, estabeleça conexão como SYSTEM e execute ins_emp3.sql. Verifique se há uma sessão bloqueadora. Dica: Determine uma sessão bloqueadora em V$ROLLSTAT. 12 Elimine o segmento de rollback DEMO_RBS. Dica: É necessário colocar como off-line o rollback antes de eliminá-lo. Talvez você precise verificar se nenhuma transação está usando o segmento de rollback. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-17
  • 244.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício11: Gerenciando Tabelas 1 Você precisa criar as seguintes tabelas para um sistema de entrada de pedidos que está implementando agora. As tabelas e as colunas são mostradas abaixo: Tabela Coluna Tipo de Dados e Tamanho CUSTOMERS CUST_CODE VARCHAR2(3) NAME VARCHAR2(50) REGION VARCHAR2(5) ORDERS ORD_ID NUMBER(3) ORD_DATE DATE CUST_CODE VARCHAR2(3) DATE_OF_DELY DATE Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um valor para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito. Estabeleça login como system/manager e crie as tabelas com a utilização de espaço em bloco apropriada e as definições de tablespace. Use o tablespace DATA01. Você pode usar as definições de armazenamento default. Use o Assistente de Tabela ao criar a tabela CUSTOMERS. Não use esse Assistente ao criar tabelas ORDERS. Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que as linhas nessa tabela provavelmente crescerão depois das atualizações. 2 Execute o script ins_cord.sql para inserir linhas nas tabelas. 3 Localize os arquivos e os blocos que contêm os pedidos do cliente com CUST_CODE=A04. Dica: Você precisa usar o pacote DBMS_ROWID para converter ROWID. Como o banco de dados possui somente alguns arquivos, os números de arquivos relativos e os números de arquivos absolutos são os mesmos. 4 Verifique o número de extensões usado pela tabela ORDERS. 5 Aloque uma extensão manualmente, com tamanho default, para a tabela ORDERS e confirme se a extensão foi adicionada conforme especificado. ..................................................................................................................................................... B-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 245.
    Exercício 11: GerenciandoTabelas ..................................................................................................................................................... 6 (a) Elimine a tabela BIG_EMP. (b) Crie outra tabela, ORDERS2, como cópia da tabela ORDERS, mas com MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi criada com o número especificado de extensões. 7 Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões para localizar extensões que não foram desalocadas. 8 Altere a tabela ORDERS2 para reduzir MINEXTENTS a 4. Houve uma redução no número de extensões? 9 Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela possui agora? 10 (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela ORDERS2. (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões. Algum espaço foi liberado na tabela? Por que ou por que não? 11 (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela PRODUCTS, que possui as seguintes colunas: Coluna Tipo de Dados e Tamanho PROD_CODE NUMBER(6) DESCRIPTION VARCHAR2(30) PRICE NUMBER(8,2) Crie essa tabela no tablespace DATA02 usando tamanhos de extensão uniformes de 10K. (b) Verifique os tamanhos das extensões dessa tabela. O que você observa? Dica: Verifique a view DBA_EXTENTS para obter o tamanho. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-19
  • 246.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício12: Gerenciando Índices 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX, respectivamente, e coloque-os nos tablespaces apropriados. Dica: Um índice em árvore B é adequado para uma coluna com vários valores distintos e um índice de bitmap é adequado para colunas com apenas alguns valores distintos. 2 Mova o índice CUST_REGION_IDX para outro tablespace. Dica: É possível criar o índice novamente especificando outro tablespace. 3 Anote os arquivos e os blocos usados pelas extensões pelo índice CUST_REGION_IDX. File_id Block_id Blocos Dica: Use a view DBA_EXTENTS para obter essas informações. 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, nem criá-lo novamente e mantenha-o no mesmo tablespace anterior. O novo índice usa os mesmos blocos usados anteriormente? Dica: Crie o índice novamente. ..................................................................................................................................................... B-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 247.
    Exercício 12: GerenciandoÍndices ..................................................................................................................................................... 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a tabela NUMBERS. (b) Consulte a tabela NUMBERS para obter o número de valores distintos nas duas colunas da tabela. (c) Usando tamanhos de extensão uniformes de 4K, crie os índices em árvore B NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX Dica – Use PCTINCREASE=0 para criar extensões de mesmo tamanho. – Verifique os blocos totais alocados para as extensões de DBA_SEGMENTS. (d) Mais uma vez, usando tamanhos de extensão uniformes de 4K, crie os índices de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos dois tipos de índices? Dica: É necessário eliminar os índices existentes antes de criar os novos índices. Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-21
  • 248.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício13: Mantendo a Integridade dos Dados 1 Examine o script cr_cons.sql. Execute-o para criar as restrições. 2 Consulte o dicionário de dados para: (a) Verificar restrições, se são ou não adiáveis e o status das mesmas. Dica: Use a view DBA_CONSTRAINTS para obter essas informações. (b) Verificar os nomes e os tipos de índices criados para validar as restrições. Dica: Os índices são criados somente para restrições exclusivas e de chave primária, e possuem o mesmo nome das restrições. (c) Verificar as colunas que são usadas nas restrições criadas. Dica: É possível obter essas informações em DBA_CONS_COLUMNS. 3 Insira dois registros com os seguintes valores na tabela PRODUCTS: PROD_CODE DESCRIPTION PRICE 100860 Ace Tennis Racket 36.20 100860 Ace Tennis Ball 3-Pack 2.40 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida? Por que ou por que não? 5 (a) Verifique se as novas linhas adicionadas à tabela não violam a restrição na tabela PRODUCTS. Dica: Para fazer isso, ative a restrição NOVALIDATE. (b) Consulte o dicionário de dados para verificar o efeito da alteração. (c) Verifique se a restrição rejeita inserções que a violam adicionando uma linha com os seguintes valores: PROD_CODE: 100860 DESCRIPTION: Yellow Jersey Bicycle Helmet PRICE: 30 ..................................................................................................................................................... B-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 249.
    Exercício 14: CarregandoDados ..................................................................................................................................................... Exercício 14: Carregando Dados Use a conta system para todas as perguntas deste laboratório. 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS. (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS. (b) Anote o último número de arquivo/bloco usado no momento por uma linha na tabela _____________________. Dica: Consulte as ROWIDs usando as funções no pacote DBMS_ROWID. 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com os seguintes valores na tabela: ORD_ID: 200 PROD_CODE: 200000 QTY: 20 (b) Verifique e anote o número de arquivo/bloco da nova linha _____________________. 3 (a) Use a inserção de carga direta para copiar dados para a tabela ITEMS2 da tabela ITEMS. (b) Verifique os números de arquivo/bloco das linhas com ORD_ID<>200. O que você pode observar sobre a localização dessas linhas? 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat . Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as etapas a seguir para tentar duas execuções de carga e se familiarizar com o uso do SQL*Loader: (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP. (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela DEPT para verificar os dados carregados. (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo de dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte a tabela EMP para verificar os dados carregados. 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2. Dica: Consulte a view DBA_SEGMENTS. (b) Aloque uma extensão para a tabela manualmente e anote o número de extensões e de blocos agora ______________________. Como você acabou de criar a extensão, a nova extensão está vazia. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-23
  • 250.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício15: Reorganizando Dados 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar. Verifique o número e o tamanho das extensões na tabela ITEMS2 antes de eliminá- la e depois repita esse procedimento após importar a tabela. O que você pode deduzir o comportamento dos utilitários Importar/Exportar no que se refere à alocação de espaço? Dica: Execute as seguintes etapas: – Para isso, use a exportação no nível de tabela. – Elimine a tabela ITEMS2. – Importe a tabela ITEMS2. – Verifique o número e o tamanho das extensões na tabela ITEMS2 usando DBA_SEGMENTS. 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa um índice para mostrar como executar esse procedimento. (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna ORD_ID da tabela ITEMS2. (b) Usando os utilitários Importar e Exportar, mova o índice para o tablespace INDX01. Dica: Execute as seguintes etapas. – Exporte a tabela com índices, mas sem linhas. – Elimine o índice. – Importe a partir da saída da exportação anterior e formule um script para criar o índice. – Edite o arquivo de índice criado na etapa anterior de modo a alterar o tablespace para INDX01 e execute o script para criar o índice novamente. ..................................................................................................................................................... B-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 251.
    Exercício 16: Gerenciandoa Segurança de Senha ..................................................................................................................................................... Exercício 16: Gerenciando a Segurança de Senha 1 Ative o gerenciamento de senhas usando o script utlpwdmg.sql. Dica: Não há dica para esse item. 2 Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece? Dica: Não há dica para essa pergunta. 3 Certifique-se de que os seguintes itens se apliquem aos usuários aos quais o perfil DEFAULT foi atribuído: – Depois de duas tentativas de login, a conta deverá ser bloqueada. – A senha deverá expirar depois de 30 dias. – A mesma senha não deverá ser reutilizada por, pelo menos, um minuto. – A conta deverá ter um período de tolerância de cinco dias para alterar uma senha que expirou. Certifique-se de que os requisitos concedidos tenham sido implementados. Dica – Use o comando ALTER PROFILE para alterar os limites de perfil default. – Consulte as views de dicionário de dados DBA_PROFILES para verificar o resultado. 4 Estabeleça login como o usuário SYSTEM fornecendo uma senha inválida. Repita esse procedimento duas vezes e depois estabeleça login novamente fornecendo desta vez a senha correta. Dica: Não há dica para esse item. 5 Verifique se é possível estabelecer conexão como o usuário SYSTEM novamente. Dica: Execute o comando ALTER USER para "desbloquear" a conta SYSTEM. 6 Desative verificações de senha para o perfil DEFAULT. Dica: Execute o comando ALTER PROFILE para desativar as verificações de senha. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-25
  • 252.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício17: Gerenciando Usuários 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que objetos e segmentos temporários criados por Bob não sejam criados no tablespace SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando o Oracle Enterprise Manager, execute o script bob.sql. Dica: Verifique se o tablespace temporário está atribuído. 2 (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que objetos e segmentos de classificação criados por Kay não sejam criados no tablespace SYSTEM. (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Nomeie a nova tabela como ORDERS. Dica: Kay precisa de uma cota em seu tablespace default para que objetos possam ser criados no seu esquema. 3 Exiba as informações sobre Bob e Kay no dicionário de dados. Dica: Para obter essas informações, consulte DBA_USERS. 4 No dicionário de dados, exiba as informações sobre o espaço que Bob pode usar nos tablespaces. Dica: Para obter essas informações, consulte DBA_TS_QUOTAS. 5 (a) Como o usuário Bob, altere o seu tablespace temporário. O que acontece? Por quê? (b) Como Bob, altere a sua senha para SAM. 6 Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo. 7 Remova a conta de Kay do banco de dados. Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE. 8 Bob esqueceu a sua senha. Atribua ao mesmo uma senha OLINK e exija que ele altere a senha na próxima vez em que estabelecer logon. ..................................................................................................................................................... B-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 253.
    Exercício 18: GerenciandoPrivilégios ..................................................................................................................................................... Exercício 18: Gerenciando Privilégios 1 Como o usuário SYSTEM, crie o usuário Kay e conceda a ele a capacidade de estabelecer logon no banco de dados e criar objetos em seu esquema. Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE. 2 (a) Estabeleça conexão como Kay e crie tabelas usando o script ulcase1.sql para criar as tabelas EMP e DEPT. (b) Estabeleça conexão como o usuário system e copie os dados de SYSTEM.EMP para a tabela EMP de Kay. Verifique se os registros foram inseridos. (c) Como o usuário system, conceda a Bob a capacidade de efetuar seleções na tabela EMP de Kay. O que acontece e por quê? 3 Estabeleça conexão novamente como Kay e conceda a Bob a capacidade de efetuar seleções na tabela EMP de Kay. Além disso, permita que Bob conceda a outros usuários a capacidade de seleção. Examine as views de dicionário de dados que registram essas ações. Dica: Consulte a view DBA_TAB_PRIVS para ver os privilégios. 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados. 5 (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Conceda a Bob a nova senha sam. (b) Como Kay, remova o privilégio de Bob de ler a tabela EMP de Kay. (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê? 6 (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e por quê? (b) Como o usuário system, examine a view de dicionário de dados DBA_TABLES para verificar o resultado. 7 Permita que Kay inicialize e desative o banco de dados sem a capacidade de criar um novo banco de dados. Dica: Conceda a Kay o privilégio SYSOPER. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-27
  • 254.
    Apêndice B: Dicas ..................................................................................................................................................... Exercício19: Gerenciando Atribuições 1 Examine a view de dicionário de dados e liste os privilégios do sistema da atribuição RESOURCE. Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS. 2 Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela, criar uma view e fazer seleções na tabela EMP de Kay. 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente que a atribuição RESOURCE seja ativada automaticamente quando ele estabelecer logon. Dica: Use o comando ALTER USER para especificar a atribuição default. (b) Conceda a Bob a capacidade de ler todas as informações de dicionário de dados. Dica: Atribua SELECT_CATALOG_ROLE a Bob. 4 Bob precisa verificar os segmentos de rollback que são usados no momento pela instância. Estabeleça conexão como Bob e liste os segmentos de rollback usados. Dica: Bob precisa de SELECT_CATALOG_ROLE para verificar os segmentos de rollback, mas, como essa não é uma das atribuições default do mesmo, é necessário ativá-la primeiro. 5 Como o usuário system, tente criar uma view EMP_VIEW na tabela EMP de Kay. O que acontece e por quê? ..................................................................................................................................................... B-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 255.
    Exercício 20: Usandoo Suporte a Idioma Nacional (National Language Support – NLS) ..................................................................................................................................................... Exercício 20: Usando o Suporte a Idioma Nacional (National Language Support – NLS) 1 Verifique o conjunto de caracteres nacionais e do banco de dados. Dica: Consulte a view de dicionário de dados NLS_DATABASE_PARAMETERS para verificar os conjuntos de caracteres. 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados? Dica: Consulte a view de dicionário de dados V$NLS_VALID_VALUES para listar os valores válidos. 3 Certifique-se de que todas as datas nessa sessão sejam exibidas usando um ano de quatro dígitos. Dica: Defina o parâmetro NLS_DATE_FORMAT. 4 Defina NLS_LANG no lado servidor e no lado cliente para ativar o esquema de codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o usuário SYS e exiba as linhas. Exporte a tabela. Importe a tabela para o usuário Bob usando o conjunto de caracteres US7ASCII. Consulte a tabela; o que aconteceu e por quê? (opcional) ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura B-29
  • 256.
  • 257.
    C ................................ Soluções dos Exercícios Para SQL*Plus
  • 258.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 1 1 Um usuário tenta estabelecer logon e recebe a mensagem de erro "ORA-01034 ORACLE not available" (ORA-01034 ORACLE não disponível). Qual destas opções é a provável causa do problema? a O usuário forneceu uma senha inválida. b O usuário forneceu um nome de usuário inválido. c A instância com a qual o usuário está estabelecendo conexão não está sendo executada. d A versão do Oracle que o usuário está solicitando não está instalada. Resposta: C 2 Um usuário executa um comando SQL para atualizar uma linha na tabela EMP. Qual processo executa essa instrução? a Processo de usuário b Processo de servidor c DBWR d LGWR Resposta: B 3 Um usuário executa um comando SQL para atualizar uma linha na tabela EMP. Onde está a alteração feita pelo processo identificado na pergunta anterior? a Arquivos de dados b Cache de buffer do banco de dados c Pool compartilhado d Arquivo de parâmetros Resposta: B 4 Qual destes arquivos é usado para autenticar usuários de banco de dados privilegiados? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de log arquivado Resposta: C 5 Qual destes arquivos não faz parte do banco de dados? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados Resposta: C ..................................................................................................................................................... C-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 259.
    Soluções do Exercício1 ..................................................................................................................................................... 6 Qual destes arquivos armazena segmentos de rollback? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados Resposta: D 7 Qual destas áreas da memória não faz parte da SGA? a Cache de buffer do banco de dados b PGA c Buffer de redo log d Pool compartilhado Resposta: B 8 Qual destas áreas da memória é usada para armazenar em cache as informações de dicionário de dados? a Cache de buffer do banco de dados b PGA c Buffer de redo log d Pool compartilhado Resposta: D 9 Quais destes estágios são usados para processar uma instrução DML? a Análise b Execução c Extração Resposta: A, B 10 Quando um usuário executa uma submissão a commit, em qual destes arquivos as alterações são registradas antes de o servidor Oracle retornar uma mensagem "Commit complete" (Commit concluído) para o usuário? a Arquivo de redo log b Arquivo de controle c Arquivo de senhas d Arquivo de dados Resposta: A ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-3
  • 260.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 2 Usando o SQL*Plus 1 Qual é o tamanho do cache de buffer do banco de dados? SQL> connect system/manager@db01 Connected. SQL> sho sga Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes 2 Qual é o tamanho da área global do sistema? SQL> sho sga Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes ..................................................................................................................................................... C-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 261.
    Soluções do Exercício2 ..................................................................................................................................................... 3 Liste as primeiras nove linhas das colunas OWNER, TABLE_NAME e TABLESPACE _NAME da view de dicionário de dados DBA_TABLES e formate a saída. (A exibição das dez primeiras linhas é suficiente.) Saia do SQL*Plus. SQL> COL owner FORMAT a5 SQL> COL table_name FORMAT a15 SQL> COL tablespace_name FORMAT a15 SQL> SELECT owner, table_name, tablespace_name 2 FROM dba_tables 3 WHERE rownum < 10; OWNER TABLE_NAME TABLESPACE_NAME ----- --------------- --------------- SYS FILE$ SYSTEM SYS BOOTSTRAP$ SYSTEM SYS SEG$ SYSTEM SYS ICOL$ SYSTEM SYS IND$ SYSTEM SYS CDEF$ SYSTEM SYS OBJ$ SYSTEM SYS PROXY$ SYSTEM SYS CCOL$ SYSTEM SQL> exit Disconnected from Oracle8i Enterprise Edition Release 8.1.5.0.0 ... With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production 4 Inicie o SQL*Plus e execute um script chamado para.sql, que efetua spool em todos os parâmetros de inicialização para o arquivo de saída para.lst. Dica: Chame para.sql da linha de comandos do sistema operacional. $ sqlplus system/manager@db01 @$HOME/LABS/para.sql SQL*Plus: Release 8.1.5.0.0 - Production on Thu May 6 15:37:15 1999 (c) Copyright 1999, Oracle Corporation. All Rights Reserved. Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Connected. NAME TYPE VALUE -------- ------ ------ ... db_name string db01 ... ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-5
  • 262.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 5 Execute o script scott.sql. SQL> @$HOME/LABS/scott Connected. Grant succeeded Connected. Table created. Table created. 1 row created. .... 1 row created. Commit completed. ..................................................................................................................................................... C-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 263.
    Soluções do Exercício3 ..................................................................................................................................................... Soluções do Exercício 3 1 Identifique o nome do banco de dados, o nome da instância e o tamanho dos blocos de banco de dados. Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD e V$PARAMETER. SQL> CONNECT system/manager@db01 Connected. SQL> SELECT name FROM v$database; NAME --------- DB01 SQL> SELECT instance FROM v$thread; INSTANCE ---------------- DB01 SQL> SELECT value 2 FROM v$parameter 3 WHERE name = 'db_block_size'; VALUE ------------------------- 4096 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-7
  • 264.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 2 Liste o nome e o tamanho dos arquivos de dados, dos arquivos de redo log on-line e o nome dos arquivos de controle. Dica: Consulte as views de desempenho dinâmicas V$DATAFILE, V$LOGFILE e V$CONTROLFILE. SQL> SELECT name FROM v$datafile; NAME ----------------------------------------- /oracle/hrasmuss/DATA/DISK1/system01.dbf /oracle/hrasmuss/DATA/DISK2/rbs01.dbf /oracle/hrasmuss/DATA/DISK3/data01.dbf /oracle/hrasmuss/DATA/DISK2/temp01.dbf /oracle/hrasmuss/DATA/DISK2/indx01.dbf /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf /oracle/hrasmuss/DATA/DISK1/query01.dbf SQL> SELECT member FROM v$logfile; MEMBER ----------------------------------------- /oracle/hrasmuss/DATA/DISK3/redo0101.log /oracle/hrasmuss/DATA/DISK4/redo0102.log /oracle/hrasmuss/DATA/DISK3/redo0201.log /oracle/hrasmuss/DATA/DISK4/redo0202.log SQL> SELECT name FROM v$controlfile; NAME ----------------------------------------- /oracle/hrasmuss/DATA/DISK1/control01.ctl ..................................................................................................................................................... C-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 265.
    Soluções do Exercício3 ..................................................................................................................................................... 3 Liste as opções instaladas. Dica: Consulte a view de desempenho dinâmica V$OPTION. SQL> COL paramter FORMAT a40 SQL> COL status FORMAT a10 SQL> SELECT * from v$option; PARAMETER VALUE ---------------------------------------- ---------- Partitioning TRUE Objects TRUE Parallel Server FALSE Advanced replication TRUE Bit-mapped indexes TRUE Connection multiplexing TRUE Connection pooling TRUE Database queuing TRUE Incremental backup and recovery TRUE Instead-of triggers TRUE Parallel backup and recovery TRUE Parallel execution TRUE Parallel load TRUE Point-in-time tablespace recovery TRUE Fine-grained access control TRUE N-Tier authentication/authorization TRUE Function-based indexes TRUE Plan Stability TRUE Online Index Build TRUE Coalesce Index TRUE Managed Standby TRUE Materialized view rewrite TRUE Materialized view warehouse refresh TRUE Database resource manager TRUE Spatial TRUE Visual Information Retrieval TRUE Export transportable tablespaces TRUE Transparent Application Failover TRUE Fast-Start Fault Recovery TRUE Sample Scan TRUE Duplexed backups TRUE Java TRUE ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-9
  • 266.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 4 Exiba os números de versão. Dica: Consulte a view de desempenho dinâmica V$VERSION. SQL> SELECT * FROM v$version; BANNER ---------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production PL/SQL Release 8.1.5.0.0 - Production CORE Version 8.1.3.0.0 - Production TNS for Solaris: Version 8.1.5.0.0 - Production NLSRTL Version 3.4.0.0.0 - Production 5 Exiba o número máximo de processos de usuário do sistema operacional que pode estabelecer simultaneamente uma conexão com a instância. Dica: Consulte a view de desempenho dinâmica V$PARAMETER ou use SHOW PARAMETER. SQL> SELECT value 2 FROM v$parameter 3 WHERE name = 'processes'; VALUE ------------------------------------------------------- 60 ..................................................................................................................................................... C-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 267.
    Soluções do Exercício3 ..................................................................................................................................................... 6 Tente alterar o tamanho do bloco de banco de dados. O que acontece? SQL> connect sys/oracle@db01 as sysdba Connected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit a Edite initdb01.ora e adicione a linha a seguir. DB_BLOCK_SIZE=8192 b Inicialize o banco de dados da seguinte forma: SQL> connect sys/oracle@db01 as sysdba Connected. SQL> startup pfile=$HOME/initdb01.ora ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes ORA-00209: control file blocksize mismatch, check alert log for more info SQL> shutdown immediate; SQL> exit c Edite o arquivo init<SID>.ora para desfazer a alteração de db_block_size feita acima. SQL> connect sys/oracle as sysdba SQL> startup pfile=$HOME/initDB01.ora ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-11
  • 268.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 7 Liste o parâmetro de inicialização default. Dica: Consulte a view de desempenho dinâmica V$PARAMETER. SQL> SELECT name 2 FROM v$parameter 3 WHERE isdefault='TRUE'; NAME ------------------------------------------------------- spin_count sessions ... session_max_open_files aq_tm_processes hs_autoregister 174 rows selected. ..................................................................................................................................................... C-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 269.
    Soluções do Exercício3 ..................................................................................................................................................... 8 Abra o banco de dados no modo somente para leitura. Conecte-se como o usuário SCOTTe adicione 10% a todos os salários na tabela EMP. O que acontece? a Retorne o banco de dados para o modo de leitura/gravação. SQL> connect sys/oracle@db01 as sysdba Connected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit b Inicialize o banco de dados da seguinte forma: SQL> connect sys/oracle@db01 as sysdba Connected SQL> startup pfile=$HOME/initDB01.ora mount; ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes Database mounted. SQL> alter database open read only; SQL> Database altered. SQL> connect scott/tiger@db01 SQL> update emp set sal=sal*1.1; 0 rows updated. SQL> connect sys/oracle@db01 as sysdba Connected SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit c Inicialize o banco de dados da seguinte forma: SQL> connect sys/oracle@db01 as sysdba Connected SQL> startup pfile=$HOME/initDB01.ora; ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes Database mounted. Database opened. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-13
  • 270.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 9 Ative e verifique o andamento nos arquivos de rastreamento de forma dinâmica. Dica: Use o comando ALTER SYSTEM. Use a view de desempenho dinâmica V$PARAMETER para verificar o resultado. SQL> SELECT value, isdefault, ismodified 2 FROM v$parameter 3 WHERE name = 'timed_statistics'; VALUE ISDEFAULT ISMODIFIED ------------------------------ --------- ---------- FALSE TRUE FALSE 1 row selected. SQL> ALTER SYSTEM SET timed_statistics=true; System altered. SQL> SELECT value, isdefault, ismodified 2 FROM v$parameter 3 WHERE name ='timed_statistics'; VALUE ISDEFAULT ISMODIFIED ------------------------------ --------- ---------- TRUE TRUE SYSTEM_MOD 10 Conecte-se como o usuário SCOTT e insira linhas na tabela EMP. Abra uma segunda sessão e tente desativar o banco de dados com a opção transacional. O que acontece? Dica: Não há nenhuma dica para essa pergunta. SQL> connect scott/tiger@db01 Connected. SQL> INSERT INTO emp (empno, ename, deptno) 2 VALUES (1,'Vijay',10); 1 row created. a Na segunda sessão, SQL> connect sys/oracle@db01 as sysdba SQL> shutdown transactional O servidor Oracle espera a transação de SCOTT terminar antes de desativar. Espere a instância ser desativada na segunda sessão. Em seguida, ative-a novamente. SQL> startup pfile=$HOME/initDB01.ora ..................................................................................................................................................... C-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 271.
    Soluções do Exercício3 ..................................................................................................................................................... 11 Verifique se pelo menos duas sessões estão abertas; uma sessão como o usuário SCOTT e outra como usuário SYS. Ative a sessão restrita, verifique isso e certifique-se de que somente o administrador de banco de dados SYS esteja conectado. Dicas: – Use o comando ALTER SYSTEM para ativar a sessão restrita e consulte as views de desempenho dinâmicas V$INSTANCE para verificar o resultado. – Use a view de desempenho dinâmica V$SESSION para ver os valores das colunas SID e SERIAL#. – Execute o comando ALTER SYSTEM KILL SESSION para encerrar sessões. SQL> connect scott/tiger@db01 Connected. a Na primeira sessão, SQL> INSERT INTO emp (empno, ename, deptno) 2 VALUES (1,'Vijay',10); 1 row inserted. b Na segunda sessão, SQL> connect sys/oracle@db01 as sysdba Connected. SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. SQL> SELECT logins FROM v$instance; LOGINS ---------- RESTRICTED SQL> SELECT sid, serial#,username 2 FROM v$session 3 WHERE username!= 'SYS'; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 7 3 SCOTT SQL> ALTER SYSTEM 2 KILL SESSION '7,3'; System altered. SQL> SELECT username, status 2 FROM v$session 3 WHERE type='USER'; USERNAME STATUS ------------------------------ -------- SCOTT KILLED SYS ACTIVE c Na primeira sessão, SQL> SELECT user 2 FROM dual; Your session has been killed. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-15
  • 272.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 12 Examine o exemplo a seguir de um arquivo de alerta para identificar se houve erros internos ou exceções. Wed Jun 30 13:24:30 1999 Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 LICENSE_MAX_USERS = 0 Starting up ORACLE RDBMS Version: 8.1.5.0.0. System parameters with non-default values: processes = 60 shared_pool_size = 3500000 java_pool_size = 1000000 control_files = $HOME/DATA/DISK1/control01.con db_block_buffers = 100 db_block_size = 4096 compatible = 8.1.5 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 db_files = 1024 db_file_multiblock_read_count= 8 dml_locks = 200 rollback_segments = sysrol db_domain = world global_names = TRUE distributed_transactions = 10 sort_area_size = 64000 db_name = DB01 job_queue_processes = 2 job_queue_interval = 10 parallel_max_servers = 12 background_dump_dest = $HOME/BDUMP user_dump_dest = $HOME/UDUMP max_dump_file_size = 10240 core_dump_dest = $HOME/CDUMP PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7 SNP0 started with pid=8 SNP1 started with pid=9 .. Corrupt block relative dba: 0x01c0003a file=7. blocknum=58. Fractured block found during buffer read Data in bad block - type:6. format:2. rdba:0x01c0003a last change scn:0x0000.0000e9c5 seq:0xa0 flg:0x00 consistancy value in tail 0x44c506a0 check value in block header: 0x0, check value not calculated spare1:0x0, spare2:0x0, spare2:0x0 Há uma mensagem de corrupção de blocos como mostrado acima. Observe também outras mensagens úteis como: • Tempo de inicialização • Parâmetros de inicialização não default e processos de segundo plano • Criação de tablespace e alternâncias de log (serão abordadas em uma lição posterior) ..................................................................................................................................................... C-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 273.
    Soluções do Exercício4 ..................................................................................................................................................... Soluções do Exercício 4 Insira os diretórios especificados para os arquivos em $HOME/DATA. 1 Crie um arquivo de senhas usando as seguintes informações: – Senha de sys:oracle – Ative cinco usuários privilegiados Certifique-se de que o Oracle possa gravar nesse arquivo. Dica: Use o utilitário orapwd para criar o arquivo de senhas e localizá-lo no diretório $ORACLE_HOME/dbs. $rm $ORACLE_HOME/dbs/orapwDB01 $orapwd file=$ORACLE_HOME/dbs/orapwDB01 entries=5 > password=oracle $chmod 777 $ORACLE_HOME/dbs/orapwDB01 2 Crie um script para obter um banco de dados com a seguinte configuração: – Nome do banco de dados e nome da instância DB<xx> – Um arquivo de controle chamado control01.con, localizado no diretório DISK5 – Dois grupos de arquivos de redo log, cada um com um membro de 150 KB chamado redo0101.log e redo0201.log, localizado no diretório DISK6 – O máximo de cinco grupos de arquivos de log e cinco membros de arquivos de log para cada grupo – Um arquivo de dados de 20 MB chamado system01.dbf, localizado no diretório DISK4 – O máximo de 30 arquivos de dados que podem ser criados para o banco de dados – O máximo de 100 redo logs arquivados para a recuperação automática de mídia – O conjunto de caracteres WE8ISO8859P1 Insira o arquivo de rastreamento no diretório BDUMP e CDUMP. Dicas: – Edite o arquivo de parâmetros. – Inicie a instância. – Gere o script do comando CREATE DATABASE. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-17
  • 274.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... . SQL> STARTUP NOMOUNT PFILE=initdb01.ora; ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes SQL> CREATE DATABASE "DB01" 2 MAXLOGFILES 5 3 MAXLOGMEMBERS 5 4 MAXDATAFILES 30 5 MAXLOGHISTORY 100 6 LOGFILE 7 GROUP 1 8 '$HOME/DATA/DISK6/redo0101.log' SIZE 150K, 9 GROUP 2 10 '$HOME/DATA/DISK6/redo0201.log' SIZE 150K 11 DATAFILE 12 '$HOME/DATA/DISK4/system01.dbf' SIZE 20M 13 CHARACTER SET WE8ISO8859P1; Database created. 3 Ative o spool para encontrar os erros e execute o script. 4 (Opcional) Inclua o comando "spool <nome_arquivo>" antes de executá-lo. ..................................................................................................................................................... C-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 275.
    Soluções do Exercício4 ..................................................................................................................................................... 5 (Opcional) Depois que o banco de dados tiver sido criado, verifique o estado do mesmo e certifique-se de que os arquivos de banco de dados tenham sido criados. Dica: Consulte as views de desempenho dinâmicas V$DATABASE, V$THREAD, V$DATAFILE, V$LOGFILE e V$CONTROLFILE. SQL> connect sys/oracle@db01 as sysdba; Connected. SQL> SELECT name, created, log_mode FROM v$database; NAME CREATED LOG_MODE --------- --------- ------------ DB01 10-JUN-99 NOARCHIVELOG SQL> SELECT status, instance FROM v$thread; STATUS INSTANCE ------ ---------------- OPEN DB01 SQL> SELECT name FROM v$datafile; NAME ------------------------------------------ /oracle/hrasmuss/DATA/DISK4/system01.dbf SQL> SELECT member FROM v$logfile; MEMBER ---------------------------------------- /oracle/hrasmuss/DATA/DISK6/redo0101.log /oracle/hrasmuss/DATA/DISK6/redo0201.log SQL> SELECT name FROM v$controlfile; NAME ----------------------------------------- /oracle/hrasmuss/DATA/DISK5/control01.con SQL> show sga Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-19
  • 276.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 6 Tente exibir os nomes dos usuários do banco de dados. O que acontece e por quê? SQL> SELECT username 2 FROM dba_users; FROM dba_users * ORA-00942: table or view does not exist Há falha nessa operação porque as views de dicionário de dados ainda não foram criadas. ..................................................................................................................................................... C-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 277.
    Soluções do Exercício5 ..................................................................................................................................................... Soluções do Exercício 5 1 Crie as views de dicionário de dados. SQL> @@?/rdbms/admin/catalog .... Role created. Grant succeeded. Commit completed. 2 Use as views de dicionário de dados para reunir as seguintes informações: a Qual é o nome e o número dos segmentos de rollback? Dica: Consulte a view de dicionário de dados DBA_ROLLBACK_SEGS para mostrar o nome dos segmentos de rollback. SQL> SELECT segment_name 2 FROM dba_rollback_segs; SEGMENT_NAME ------------------------------ SYSTEM SYSROL b Identifique o arquivo de dados que compõe o tablespace SYSTEM. Dica: Consulte a view de dicionário de dados DBA_DATA_FILES para identificar os arquivos de dados que compõem o tablespace SYSTEM. SQL> SELECT file_name 2 FROM dba_data_files 3 WHERE tablespace_name='SYSTEM'; FILE_NAME ----------------------------------------- /oracle/hrasmuss/DATA/DISK1/system01.dbf ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-21
  • 278.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... c Qual é o espaço disponível no banco de dados e qual é a quantidade de espaço já utilizada? Dicas: – Consulte a view de dicionário de dados DBA_FREE_SPACE para mostrar o espaço disponível no banco de dados. – Consulte a view de dicionário de dados DBA_SEGMENTS para exibir o espaço já utilizado. . SQL> SELECT sum(bytes)/1024 "free space in KB" 2 FROM dba_free_space; free space in KB ---------------- 146976 SQL> SELECT sum(bytes)/1024 "used space in KB" 2 FROM dba_segments; used space in KB ---------------- 43460 d Liste o nome e a data de criação dos usuários do banco de dados. Dica: Consulte a view de dicionário de dados DBA_USERS para listar o nome e a criação dos usuários do banco de dados. SQL> SELECT username, created FROM dba_users; USERNAME CREATED ------------------------------ --------- SYS 10-JUN-99 SYSTEM 10-JUN-99 SCOTT 10-JUN-99 OUTLN 10-JUN-99 DBSNMP 10-JUN-99 ..................................................................................................................................................... C-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 279.
    Soluções do Exercício5 ..................................................................................................................................................... 3 Verifique as tabelas de dicionário de dados que são usadas para definir a view DBA_USERS. Dica: Consulte a view de dicionário de dados DBA_VIEWS para exibir a definição de view da view de dicionário de dados DBA_USERS. SQL> SET PAGESIZE 100 SQL> SET LONG 1400 SQL> SELECT text 2 FROM dba_views 3 WHERE view_name = 'DBA_USERS'; TEXT ------------------------------------------------------------------ ------- select u.name, u.user#, u.password, m.status, decode(u.astatus, 4, u.ltime, 5, u.ltime, 6, u.ltime, 8, u.ltime, 9, u.ltime, 10, u.ltime, to_date(NULL)), decode(u.astatus, 1, u.exptime, 2, u.exptime, 5, u.exptime, 6, u.exptime, 9, u.exptime, 10, u.exptime, decode(u.ptime, '', to_date(NULL), decode(pr.limit#, 2147483647, to_date(NULL), decode(pr.limit#, 0, decode(dp.limit#, 2147483647, to_date(NULL), u.ptime + dp.limit#/86400), u.ptime + pr.limit#/86400)))), dts.name, tts.name, u.ctime, p.name, u.defschclass, u.ext_username from sys.user$ u, sys.ts$ dts, sys.ts$ tts, sys.profname$ p, sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp where u.datats# = dts.ts# and u.resource$ = p.profile# and u.tempts# = tts.ts# and u.astatus = m.status# and u.type# = 1 and u.resource$ = pr.profile# and dp.profile# = 0 and dp.type#=1 and dp.resource#=1 and pr.type# = 1 and pr.resource# = 1 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-23
  • 280.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 4 Estabeleça o uso da funcionalidade PL/SQL. (Espere um pouco assim que o script for iniciado.) SQL> @@?/rdbms/admin/catproc .... Package created. Package body created. .. Library created. .. 5 Verifique se há algum pacote inválido. Dica: Consulte a view DBA_OBJECTS para obter essa informação. SQL> COL object_name FORMAT a30 SQL> SELECT object_name, object_type 2 FROM dba_objects 3 WHERE object_type LIKE 'PACKAGE%' 4 AND status = 'INVALID'; OBJECT_NAME OBJECT_TYPE ------------------------------ ------------------ DBMSZEXP_SYSPKGGRNT PACKAGE DBMSZEXP_SYSPKGGRNT PACKAGE BODY DBMS_ALERT PACKAGE DBMS_ALERT PACKAGE BODY ... UTL_HTTP PACKAGE BODY UTL_REF PACKAGE UTL_REF PACKAGE BODY 213 rows selected. ..................................................................................................................................................... C-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 281.
    Soluções do Exercício6 ..................................................................................................................................................... Soluções do Exercício 6 1 Onde o arquivo de controle existente está localizado e qual é o nome do mesmo? Dica: Consulte a view de desempenho dinâmica V$CONTROLFILE ou V$PARAMETER, ou então execute o comando SHOW PARAMETER para exibir o nome e a localização do arquivo de controle. SQL> connect sys/oracle@db01 as sysdba Connected. SQL> COL name FORMAT a50 SQL> SELECT * FROM v$controlfile; STATUS NAME ------- ----------------------------------------- /oracle/hrasmuss/DATA/DISK1/control01.ctl 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. (Você pode simular isso alterando o nome do arquivo de controle no arquivo de parâmetros ou alterando somente o nome do arquivo de controle.) O que acontece? SQL> connect sys/oracle@db01 as sysdba; Connected. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit a Altere o nome do arquivo de controle movendo-o para um novo nome de arquivo: mv $HOME/DATA/DISK1/control01.ctl $HOME/DATA/DISK1/control01.bak SQL> connect sys/oracle@db01 as sysdba; Connected. SQL> startup pfile=initDB01.ora ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes ORA-00205: error in identifying controlfile, check alert log for more info SQL> shutdown immediate SQL> exit; b Renomeie o arquivo de controle para o nome original e para a localização: mv $HOME/DATA/DISK1/control01.bak $HOME/DATA/DISK1/control01.ctl c Não inicialize o banco de dados até o momento. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-25
  • 282.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 3 Aplique o recurso de multiplexação no arquivo de controle existente usando o diretório DISK2 e nomeie o novo arquivo de controle como control02.con. Certifique-se de que o Oracle Server consiga gravar dados no novo arquivo de controle. Por exemplo, no UNIX, use o comando chmod 660. Confirme se os dois arquivos de controle estão sendo usados. Dicas: – Desative o banco de dados. – Copie o arquivo de controle existente para um novo arquivo chamado control02.con no diretório DISK2. – Use o comando chmod 660 no UNIX. – Modifique o arquivo de parâmetros para incluir o novo nome de arquivo. – Inicialize o banco de dados. – Consulte a view de desempenho dinâmica V$CONTROLFILE ou V$PARAMETER, ou então use o comando SHOW PARAMETER para confirmar se os dois arquivos de controle estão sendo usados. Certifique-se de que o banco de dados seja desativado antes de fazer isso. $ cp $HOME/DATA/DISK1/control01.con $HOME/DATA/DISK2/control02.con $ chmod 660 $HOME/DATA/DISK2/control02.con a Edite o arquivo de parâmetros (init.ora) para incluir: control_files = ($HOME/DATA/DISK1/control01.con, $HOME/DATA/DISK2/control02.con) SQL> startup pfile=initdb01.ora ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes Database mounted. Database opened. SQL> SELECT name 2 FROM v$controlfile; NAME ------------------------------------------- /oracle/hrasmuss/DATA/DISK1/control01.con /oracle/hrasmuss/DATA/DISK2/control02.con ..................................................................................................................................................... C-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 283.
    Soluções do Exercício6 ..................................................................................................................................................... 4 Qual é o tamanho inicial da seção de arquivo de dados no arquivo de controle? SQL> SELECT records_total 2 FROM v$controlfile_record_section 3 WHERE type = 'DATAFILE'; RECORDS_TOTAL ------------- 254 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-27
  • 284.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 7 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de grupos e de membros de arquivos de redo log que o seu banco de dados possui. Dicas: – Consulte a view de desempenho dinâmica V$LOGFILE. – Use a view de desempenho dinâmica V$LOG. SQL> SELECT member FROM v$logfile; MEMBER ----------------------------------------- /oracle/hrasmuss/DATA/DISK3/redo0101.log /oracle/hrasmuss/DATA/DISK4/redo0102.log /oracle/hrasmuss/DATA/DISK3/redo0201.log /oracle/hrasmuss/DATA/DISK4/redo0202.log SQL> SELECT group#,members 2 FROM v$log; GROUP# MEMBERS --------- --------- 1 2 2 2 2 Em que modo de banco de dados o seu banco de dados está configurado? O arquivamento está ativado? Dicas: – Consulte a view de desempenho dinâmica V$DATABASE. – Consulte a view de desempenho dinâmica V$INSTANCE. SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ NOARCHIVELOG SQL> SELECT archiver FROM v$instance; ARCHIVE ------- STOPPED ..................................................................................................................................................... C-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 285.
    Soluções do Exercício7 ..................................................................................................................................................... 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no DISK3 usando as seguintes convenções de nomeação: Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e redo0102.log, adicione um novo membro chamado redo0103.log. Verifique o resultado. Dicas: – Execute o comando ALTER DATABASE ADD LOGFILE MEMBER para adicionar um membro de redo log a cada grupo. – Consulte a view de desempenho dinâmica V$LOGFILE para verificar o resultado. SQL> ALTER DATABASE 2 ADD LOGFILE MEMBER 3 '$HOME/DATA/DISK3/redo0103.log' TO GROUP 1, 4 '$HOME/DATA/DISK3/redo0203.log' TO GROUP 2; Database altered. SQL> COL member FORMAT a40 SQL> SELECT * FROM v$logfile; GROUP# STATUS MEMBER ------- ------- ---------------------------------------- 1 /oracle/hrasmuss/DATA/DISK3/redo0101.log 1 /oracle/hrasmuss/DATA/DISK4/redo0102.log 2 /oracle/hrasmuss/DATA/DISK3/redo0201.log 2 /oracle/hrasmuss/DATA/DISK4/redo0202.log 1 INVALID /oracle/hrasmuss/DATA/DISK3/redo0103.log 2 INVALID /oracle/hrasmuss/DATA/DISK3/redo0203.log 6 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-29
  • 286.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e DISK5, e verifique a existência do novo grupo. Dicas: – Execute o comando ALTER DATABASE ADD LOGFILE para criar um novo grupo. – Consulte a view de desempenho dinâmica V$LOGFILE para exibir o nome dos novos membros do novo grupo. – Consulte a view de desempenho dinâmica V$LOG para exibir o número de grupos e de membros de arquivos de redo log. SQL> ALTER DATABASE 2 ADD LOGFILE GROUP 3( 3 '$HOME/DATA/DISK3/redo0301.log', 4 '$HOME/DATA/DISK4/redo0302.log', 5 '$HOME/DATA/DISK5/redo0303.log') 6 SIZE 1024K; Database altered. SQL> SELECT * FROM v$logfile; GROUP# STATUS MEMBER ------- ------- ----------------------------------------- 1 /oracle/hrasmuss/DATA/DISK3/redo0101.log 1 /oracle/hrasmuss/DATA/DISK4/redo0102.log 2 /oracle/hrasmuss/DATA/DISK3/redo0201.log 2 /oracle/hrasmuss/DATA/DISK4/redo0202.log 1 INVALID /oracle/hrasmuss/DATA/DISK3/redo0103.log 2 INVALID /oracle/hrasmuss/DATA/DISK3/redo0203.log 3 /oracle/hrasmuss/DATA/DISK4/redo0301.log 3 /oracle/hrasmuss/DATA/DISK4/redo0302.log 3 /oracle/hrasmuss/DATA/DISK5/redo0303.log 9 rows selected. SQL> SELECT group#, members FROM V$log; GROUP# MEMBERS ------- --------- 1 3 2 3 3 3 3 rows selected. ..................................................................................................................................................... C-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 287.
    Soluções do Exercício7 ..................................................................................................................................................... 5 Desloque os membros redo0103.log e redo0203.log (consulte a etapa 3) e insira-os no diretório DISK5 a partir do DISK3. Dicas: – Mova os membros para o diretório DISK5. – Execute o comando ALTER DATABASE RENAME FILE para renomear os membros. – Consulte a view de desempenho dinâmica V$LOGFILE para verificar o resultado. . $ cd $HOME/DATA/DISK5 $ mv $HOME/DATA/DISK3/redo0103.log. $ mv $HOME/DATA/DISK3/redo0203.log. a Use a seguinte instrução para decidir qual é o grupo atual: SQL> SELECT group#, status 2 FROM v$log; GROUP# STATUS --------- ---------------- 1 INACTIVE 2 CURRENT 3 UNUSED SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER DATABASE 2 RENAME FILE '$HOME/DATA/DISK3/redo0103.log', 3 '$HOME/DATA/DISK3/redo0203.log' 4 TO '$HOME/DATA/DISK5/redo0103.log', 5 '$HOME/DATA/DISK5/redo0203.log'; Database altered. SQL> COL member FORMAT a50 SQL> SELECT * FROM v$logfile; GROUP# STATUS MEMBER --------- ------- ----------------------------------------- 1 /oracle/hrasmuss/DATA/DISK3/redo0101.log 1 /oracle/hrasmuss/DATA/DISK4/redo0102.log 2 /oracle/hrasmuss/DATA/DISK3/redo0201.log 2 /oracle/hrasmuss/DATA/DISK4/redo0202.log 1 INVALID /oracle/hrasmuss/DATA/DISK5/redo0103.log 2 INVALID /oracle/hrasmuss/DATA/DISK5/redo0203.log 3 /oracle/hrasmuss/DATA/DISK4/redo0301.log 3 /oracle/hrasmuss/DATA/DISK4/redo0302.log 3 /oracle/hrasmuss/DATA/DISK5/redo0303.log 9 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-31
  • 288.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 6 Remova o grupo de redo logs criado na etapa 4. Dicas: – Execute o comando ALTER DATABASE DROP LOGFILE GROUP para remover o grupo de logs. – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 3; Database altered. SQL> SELECT group#, members FROM v$log; GROUP# MEMBERS ---------- ---------- 1 2 2 2 2 rows selected. $rm $HOME/DATA/DISK5/redo0301.log $rm $HOME/DATA/DISK5/redo0302.log $rm $HOME/DATA/DISK5/redo0303.log ..................................................................................................................................................... C-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 289.
    Soluções do Exercício7 ..................................................................................................................................................... 7 Redimensione todos os arquivos de redo log on-line para 1024 KB. (Como não é possível redimensionar arquivos de log, é necessário adicionar novos logs e eliminar os antigos.) Dicas: – Execute o comando ALTER DATABASE ADD LOGFILE GROUP para adicionar dois novos grupos com o tamanho de 1024 KB. – Consulte a view de desempenho dinâmica V$LOG para verificar o grupo ativo. – Execute o comando ALTER SYSTEM SWITCH LOGFILE para forçar alternâncias de log e alterar o estágio do grupo para inativo. – Execute o comando ALTER DATABASE DROP LOGFILE para remover os grupos inativos. – Consulte a view de desempenho dinâmica V$LOG para verificar o resultado. . SQL> ALTER DATABASE ADD LOGFILE 2 GROUP 3 ('$HOME/DATA/DISK3/redo0301.log', 3 '$HOME/DATA/DISK4/redo0302.log') SIZE 1024K, 4 GROUP 4 ('$HOME/DATA/DISK3/redo0401.log', 5 '$HOME/DATA/DISK4/redo0402.log') size 1024K; Database altered. SQL> SELECT group#, status FROM v$log; GROUP# STATUS ------- --------- 1 INACTIVE 2 CURRENT 3 UNUSED 4 UNUSED 4 rows selected. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 1, GROUP 2; Database altered. SQL> SELECT group#, bytes FROM v$log; GROUP# BYTES ------- --------- 3 1048576 4 1048576 2 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-33
  • 290.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 8 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento: a DATA01 para tabelas com armazenamento default. b DATA02 para objetos grandes com armazenamento default. Certifique-se de que cada tamanho de extensão usado no tablespace seja múltiplo de 100 KB. c INDX01 para índices com o armazenamento default. Ative a extensão automática de 500 KB quando forem necessárias mais extensões. d RONLY para tabelas somente para leitura com o armazenamento default. Exiba as informações a partir do dicionário de dados. Dicas: – Execute o comando CREATE TABLESPACE para criar os tablespaces permanentes. – Exiba as informações a partir do dicionário de dados. – Consulte a view de desempenho dinâmica DBA_DATA_FILES para verificar o resultado. Nome do Tablespace Subdiretório Localização do Arquivo de Dados (Tamanho) DATA01 DISK4 data01.dbf (2 MB) DATA02 DISK5 data02.dbf (1 MB) INDX01 DISK3 indx01.dbf (1 MB) RONLY DISK1 ronly.dbf (1 MB) ..................................................................................................................................................... C-34 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 291.
    Soluções do Exercício8 ..................................................................................................................................................... SQL> CREATE TABLESPACE DATA01 DATAFILE 2 '$HOME/DATA/DISK4/data01.dbf' SIZE 2M; Tablespace created. SQL> CREATE TABLESPACE DATA02 DATAFILE 2 '$HOME/DATA/DISK5/data02.dbf' SIZE 1M 3 MINIMUM EXTENT 100k; Tablespace created. SQL> CREATE TABLESPACE INDX01 DATAFILE 2 '$HOME/DATA/DISK3/indx01.dbf' SIZE 1M 3 AUTOEXTEND ON NEXT 500K; Tablespace created. SQL> CREATE TABLESPACE RONLY DATAFILE 2 '$HOME/DATA/DISK1/ronly.dbf' SIZE 1M; Tablespace created. SQL> COL file_name FORMAT A40 SQL> COL tablespace_name FORMAT A15 SQL> SELECT file_name, tablespace_name, bytes, 2 autoextensible, increment_by 3 FROM DBA_DATA_FILES; FILE_NAME TABLESPACE_NAME BYTES ---------------------------------------- --------------- --------- /oracle/hrasmuss/DATA/DISK4/data01.dbf DATA01 2097152 /oracle/hrasmuss/DATA/DISK5/data02.dbf DATA02 1048576 /oracle/hrasmuss/DATA/DISK3/indx01.dbf INDX01 1048576 /oracle/hrasmuss/DATA/DISK1/ronly.dbf RONLY 1048576 /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM 52428800 /oracle/hrasmuss/DATA/DISK2/rbs01.dbf RBS 15728640 /oracle/hrasmuss/DATA/DISK3/data01.dbf DATA 52428800 /oracle/hrasmuss/DATA/DISK2/temp01.dbf TEMP 10485760 /oracle/hrasmuss/DATA/DISK2/indx01.dbf INDX 5242880 /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf OEM 5242880 /oracle/hrasmuss/DATA/DISK1/query01.dbf QUERY_DATA 1048576 11 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-35
  • 292.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 2 Aloque mais 500 KB ao tablespace DATA02 e verifique o resultado. Dicas: – Use o comando ALTER DATABASE DATAFILE... RESIZE para alocar mais 500 KB. – Consulte a view de desempenho dinâmica V$DATAFILE para verificar o resultado. SQL> ALTER DATABASE DATAFILE 2 '$HOME/DATA/DISK5/data02.dbf' RESIZE 1500K; Database altered. SQL> COL name FORMAT a40 SQL> SELECT name, bytes, create_bytes FROM v$datafile; NAME BYTES CREATE_BYTES ---------------------------------------- --------- ------------ /oracle/hrasmuss/DATA/DISK1/system01.dbf 52428800 52428800 /oracle/hrasmuss/DATA/DISK2/rbs01.dbf 15728640 15728640 /oracle/hrasmuss/DATA/DISK3/data01.dbf 52428800 52428800 /oracle/hrasmuss/DATA/DISK2/temp01.dbf 10485760 10485760 /oracle/hrasmuss/DATA/DISK2/indx01.dbf 5242880 5242880 /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf 5242880 5242880 /oracle/hrasmuss/DATA/DISK1/query01.dbf 1048576 1048576 /oracle/hrasmuss/DATA/DISK4/data01.dbf 2097152 2097152 /oracle/hrasmuss/DATA/DISK5/data02.dbf 1536000 1048576 /oracle/hrasmuss/DATA/DISK3/indx01.dbf 1048576 1048576 /oracle/hrasmuss/DATA/DISK1/ronly.dbf 1048576 1048576 11 rows selected. ..................................................................................................................................................... C-36 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 293.
    Soluções do Exercício8 ..................................................................................................................................................... 3 Desloque o tablespace INDX01 e mova-o para DISK6. Dicas: – Coloque como OFFLINE o tablespace INDX01. – Consulte a view de desempenho dinâmica V$DATAFILE para verificar o resultado. – Execute o comando ALTER TABLESPACE RENAME para renomear os arquivos. – Coloque como ONLINE o tablespace INDX01. – Consulte as views de desempenho dinâmicas V$DATAFILE para verificar o resultado. . SQL> ALTER TABLESPACE indx01 OFFLINE; Tablespace altered. SQL> SELECT name, status FROM v$datafile; NAME STATUS ---------------------------------------- ------- /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM /oracle/hrasmuss/DATA/DISK2/rbs01.dbf ONLINE /oracle/hrasmuss/DATA/DISK3/data01.dbf ONLINE /oracle/hrasmuss/DATA/DISK2/temp01.dbf ONLINE /oracle/hrasmuss/DATA/DISK2/indx01.dbf ONLINE /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf ONLINE /oracle/hrasmuss/DATA/DISK1/query01.dbf ONLINE /oracle/hrasmuss/DATA/DISK4/data01.dbf ONLINE /oracle/hrasmuss/DATA/DISK5/data02.dbf ONLINE /oracle/hrasmuss/DATA/DISK3/indx01.dbf OFFLINE /oracle/hrasmuss/DATA/DISK1/ronly.dbf ONLINE 11 rows selected. SQL> !mv $HOME/DATA/DISK3/indx01.dbf $HOME/DATA/DISK6/indx01.dbf SQL> ALTER TABLESPACE indx01 2 RENAME DATAFILE 3 '$HOME/DATA/DISK3/indx01.dbf' TO 4 '$HOME/DATA/DISK6/indx01.dbf'; Tablespace altered. SQL> ALTER TABLESPACE indx01 ONLINE; Tablespace altered. SQL> SELECT name, status FROM v$datafile; NAME STATUS ---------------------------------------- ------ /oracle/hrasmuss/DATA/DISK1/system01.dbf SYSTEM /oracle/hrasmuss/DATA/DISK2/rbs01.dbf ONLINE /oracle/hrasmuss/DATA/DISK3/data01.dbf ONLINE /oracle/hrasmuss/DATA/DISK2/temp01.dbf ONLINE /oracle/hrasmuss/DATA/DISK2/indx01.dbf ONLINE /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf ONLINE /oracle/hrasmuss/DATA/DISK1/query01.dbf ONLINE /oracle/hrasmuss/DATA/DISK4/data01.dbf ONLINE /oracle/hrasmuss/DATA/DISK5/data02.dbf ONLINE /oracle/hrasmuss/DATA/DISK6/indx01.dbf ONLINE /oracle/hrasmuss/DATA/DISK1/ronly.dbf ONLINE 11 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-37
  • 294.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar uma tabela nesse tablespace. Tente criar uma tabela adicional e eliminar a tabela. O que acontece e por quê? SQL> CREATE TABLE t1 (t1 number) TABLESPACE ronly; Table altered. SQL> ALTER TABLESPACE ronly READ ONLY; Tablespace altered. SQL> SELECT name, enabled, status FROM v$datafile; NAME ENABLED STATUS ---------------------------------------- ---------- ------ /oracle/hrasmuss/DATA/DISK1/system01.dbf READ WRITE SYSTEM /oracle/hrasmuss/DATA/DISK2/rbs01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK3/data01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK2/temp01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK2/indx01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK3/oemrep01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK1/query01.dbf READ ONLY ONLINE /oracle/hrasmuss/DATA/DISK4/data01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK5/data02.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK6/indx01.dbf READ WRITE ONLINE /oracle/hrasmuss/DATA/DISK1/ronly.dbf READ ONLY ONLINE 11 rows selected. SQL> CREATE TABLE t2 (t2 number) TABLESPACE ronly; CREATE TABLE t2 (t2 number) TABLESPACE ronly * ORA-01647: tablespace 'RONLY' is read only, cannot allocate space in it SQL> DROP TABLE t1; Table dropped. ..................................................................................................................................................... C-38 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 295.
    Soluções do Exercício8 ..................................................................................................................................................... 5 Elimine o tablespace RONLY e verifique-o. Dicas: – Execute o comando DROP TABLESPACE ... para remover o tablespace. – Delete os arquivos do sistema operacional. – Consulte a view de desempenho dinâmica V$TABLESPACE para verificar o resultado. SQL> DROP TABLESPACE ronly; Tablespace dropped. SQL> SELECT * FROM v$tablespace; TS# NAME ---------- ------------------------------ 0 SYSTEM 1 RBS 2 DATA01 3 DATA02 4 TEMP 5 INDX01 6 rows selected. $rm $HOME/DATA/DISK1/ronly.dbf 6 Sem desativar a instância, altere SORT_AREA_SIZE para 2 kilobytes. Dica: SORT_AREA_SIZE é um parâmetro dinâmico que necessita da opção DEFERRED. SQL> ALTER SYSTEM SET sort_area_size=2048 DEFERRED; System altered. 7 Abra duas conexões com o banco de dados como o usuário SYSTEM. Execute srt_dd.sql de uma sessão e monitore a atividade de classificação de outra sessão. Consulte as estatísticas de classificação e as informações de segmento temporário durante e depois da conclusão do script. Observe os resultados. Dica: As informações de segmento de classificação estão disponíveis em V$SORT_SEGMENT e a atividade de classificação atual em V$SORT_USAGE. 8 De uma das sessões, execute asn_tts.sql para preparar para a próxima parte do exercício. Esse script garante que o tablespace TEMP será usado para as classificações feitas pelo usuário SYSTEM; isso será abordado na lição "Gerenciando Usuários". Conecte-se como SYSTEM de uma das sessões e execute srt_dd.sql. Da outra sessão, monitore as estatísticas e a atividade de classificação, da mesma forma que na pergunta 3. Você percebe alguma diferença? A classificação nesse caso usa o tablespace temporário, TEMP, e as extensões alocadas não são liberadas no final da classificação. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-39
  • 296.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 9 Redefina SORT_AREA_SIZE. SQL> ALTER SYSTEM SET sort_area_size=65536 DEFERRED; System altered. ..................................................................................................................................................... C-40 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 297.
    Soluções do Exercício9 ..................................................................................................................................................... Soluções do Exercício 9 1 Como o usuário system, execute o script cr_segs.sql para criar tabelas e índices. SQL> connect system/manager Connected. SQL> @$HOME/LABS/cr_segs SQL> -- Script cr_segs.sql to create segments SQL> -- for Practice 09, Q1 O8iDBA class SQL> -- Dependencies : SQL> -- needs SYSTEM account to run SQL> -- needs DATA01 tablespace with exactly 2M free space SQL> -- needs INDX01 tablespace with at least 100K free space SQL> SQL> CREATE TABLE emp( 2 empno NUMBER(4), 3 ename VARCHAR2(30)) 4 TABLESPACE data01 5 STORAGE (INITIAL 100K 6 NEXT 100K 7 PCTINCREASE 0 8 MINEXTENTS 8 9 MAXEXTENTS 10) 10 / Table created. SQL> SQL> CREATE TABLE fragment1( 2 a NUMBER) 3 TABLESPACE data01 4 STORAGE(INITIAL 10K) 5 / Table created. SQL> CREATE TABLE dept( 2 deptno NUMBER, 3 dname VARCHAR2(15)) 4 TABLESPACE data01 5 STORAGE(INITIAL 50K 6 NEXT 50K) 7 / Table created. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-41
  • 298.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... SQL> CREATE TABLE fragment2( 2 a NUMBER) 3 TABLESPACE data01 4 STORAGE(INITIAL 8K) 5 / Table created. SQL> SQL> CREATE TABLE big_emp( 2 empno NUMBER(4), 3 ename VARCHAR2(30)) 4 TABLESPACE data01 5 STORAGE (INITIAL 1M 6 NEXT 1M 7 MAXEXTENTS 10) 8 / Table created. SQL> SQL> CREATE INDEX i_e_empno 2 ON emp(ename) 3 TABLESPACE indx01 4 STORAGE(INITIAL 50K 5 NEXT 50K) 6 / Index created. SQL> SQL> DROP TABLE fragment1 2 / Table dropped. SQL> SQL> DROP TABLE fragment2 2 / Table dropped. 2 Identifique os diversos tipos de segmento no banco de dados. SQL> connect system/manager Connected. SQL> SELECT DISTINCT segment_type 2 FROM dba_segments; SEGMENT_TYPE ------------------ CACHE CLUSTER INDEX LOBINDEX LOBSEGMENT ROLLBACK TABLE 7 rows selected. ..................................................................................................................................................... C-42 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 299.
    Soluções do Exercício9 ..................................................................................................................................................... 3 Crie uma consulta para verificar os segmentos cuja extensão é cinco vezes menor do que as extensões máximas. Ignore o segmento de bootstrap. Essa consulta é útil na identificação de quaisquer segmentos que possam gerar erros durante a futura carga de dados. Dica: As colunas EXTENTS e MAX_EXTENTS na view de dicionário de dados DBA_SEGMENTS contêm o número atual e o número máximo de extensões. SQL> SELECT segment_name, segment_type, max_extents, extents 3 FROM dba_segments 4 WHERE extents+5 > max_extents 5 AND segment_type<>'CACHE'; SEGMENT_NAME SEGMENT_TYPE MAX_EXTENTS EXTENTS ------------ ------------------ ----------- --------- EMP TABLE 10 8 4 Quais arquivos possuem espaço alocado para a tabela EMP? Dica: As views DBA_EXTENTS e DBA_DATA_FILES precisam ser reunidas para obter essas informações. SQL> SELECT DISTINCT f.file_name 2 FROM dba_extents e,dba_data_files f 3 WHERE e.segment_name='EMP' 4 AND e.file_id=f.file_id; FILE_NAME ---------------------------------------- /oracle/hrasmuss/DATA/DISK3/data01.dbf /oracle/hrasmuss/DATA/DISK4/data01.dbf 5 (a) Crie uma consulta para obter o número de arquivo e o número de bloco do cabeçalho da tabela EMP. Dica: Para localizar o bloco de cabeçalho da tabela EMP, consulte a view DBA_SEGMENTS. SQL> SELECT relative_fno, header_block 2 FROM dba_segments 3 WHERE owner='SYSTEM' 4 AND segment_name = 'EMP'; RELATIVE_FNO HEADER_BLOCK ------------ ------------ 8 2 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-43
  • 300.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... (b) Crie uma consulta que aceitará um número de arquivo e um número de bloco como a entrada e retornará o nome e o tipo do segmento que usa o bloco. Teste a consulta fornecendo o número de arquivo e de bloco do cabeçalho da tabela EMP (obtido na consulta anterior). Use o SQL*Plus para executar a consulta. Dica: Crie um script do SQL*Plus para aceitar o número relativo de arquivo e de bloco, e consulte a view DBA_EXTENTS para localizar o segmento que usa o número relativo de arquivo e de bloco informado. SQL> COL segment_name FORMAT A30 SQL> COL segment_type FORMAT A15 SQL> SELECT segment_name,segment_type 2 FROM dba_extents 3 WHERE file_id=&1 4 AND &2 BETWEEN block_id AND (block_id+blocks-1); Enter value for 1: 8 old 3: WHERE file_id=&1 new 3: WHERE file_id=8 Enter value for 2: 2 old 4: AND &2 between block_id and (block_id+blocks+1) new 4: AND 2 between block_id and (block_id+blocks+1) SEGMENT_NAME SEGMENT_TYPE ------------------------------ --------------- EMP TABLE 6 Liste o espaço disponível por tablespace. A consulta deverá exibir o número de fragmentos, o espaço livre total e a maior extensão livre em cada tablespace. Dica: Consulte a view DBA_FREE_SPACE para obter essas informações. SQL> SELECT tablespace_name,COUNT(*) AS fragments, 2 SUM(bytes) AS total, 3 MAX(bytes) AS largest 4 FROM dba_free_space 5 GROUP BY tablespace_name; TABLESPACE_NAME FRAGMENTS TOTAL LARGEST --------------- --------- --------- --------- DATA 1 50376704 50376704 DATA01 3 147456 126976 DATA02 1 1531904 1531904 INDX 1 5238784 5238784 INDX01 1 983040 983040 OEM 1 5238784 5238784 QUERY_DATA 1 1044480 1044480 RBS 1 1593344 1593344 SYSTEM 1 64565248 64565248 TEMP 5 10481664 9662464 10 rows selected. ..................................................................................................................................................... C-44 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 301.
    Soluções do Exercício9 ..................................................................................................................................................... 7 Execute o script cr_frags.sql no diretório LABS. Verifique se há extensões livres adjacentes no banco de dados. Reúna-as e verifique novamente. Dica: Execute o script cr_frags.sql. SQL> @$HOME/LABS/cr_frags Dica: Consulte a view DBA_FREE_SPACE_COALESCED para verificar quaisquer tablespaces nos quais PERCENT_BLOCKS_COALESCED <> 100. SQL> SELECT tablespace_name, total_blocks, 2 blocks_coalesced, percent_blocks_coalesced 3 FROM dba_free_space_coalesced 4 WHERE percent_blocks_coalesced<>100; TABLESPACE TOTAL_BLOCKS BLOCKS_COALESCED PERCENT_BLOCKS_COALESCED ---------- ------------ ---------------- ------------------------ TEMP 2559 50 1.9538882 DATA02 374 5 1.3368984 Dica: Use o comando ALTER TABLESPACE para reunir o espaço livre no tablespace. SQL> ALTER TABLESPACE data02 COALESCE; Dica: Consulte a view DBA_FREE_SPACE_COALESCED novamente para verificar quaisquer tablespaces nos quais PERCENT_BLOCKS_COALESCED <> 100. SQL> SELECT tablespace_name, total_blocks, 2 blocks_coalesced, percent_blocks_coalesced 3 FROM dba_free_space_coalesced 4 WHERE percent_blocks_coalesced<>100; TABLESPACE TOTAL_BLOCKS BLOCKS_COALESCED PERCENT_BLOCKS_COALESCED ---------- ------------ ---------------- ------------------------ TEMP 2559 50 1.9538882 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-45
  • 302.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 8 Liste segmentos que gerarão erros devido a falta de espaço quando tentarem alocar uma extensão adicional. Dica: É necessário verificar se a maior extensão livre de um tablespace em DBA_FREE_SPACE não é igual a NEXT_EXTENT de qualquer segmento no tablespace. SQL> SELECT s.segment_name,s.segment_type, 2 s.tablespace_name,s.next_extent 3 FROM dba_segments s 4 WHERE NOT EXISTS 5 (SELECT 1 FROM dba_free_space f 6 WHERE s.tablespace_name=f.tablespace_name 7 HAVING max(f.bytes) > s.next_extent); SEGMENT_NAME SEGMENT_TYPE TABLESPACE NEXT_EXTENT ------------ ------------------ ---------- ----------- BIG_EMP TABLE DATA01 1048576 ..................................................................................................................................................... C-46 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 303.
    Soluções do Exercício10 ..................................................................................................................................................... Soluções do Exercício 10 Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/ alt_sysrol.sql como o usuário SYSTEM. 1 Conecte-se como o usuário SYSTEM (senha = manager) e insira um registro na tabela EMP. A operação foi bem-sucedida? Por que ou por que não? SQL> INSERT INTO emp VALUES 2 (7369,'SMITH','CLERK',7902, 3 to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20); ORA-01552: cannot use system rollback segment for non-system tablespace 'DATA01' Há falha nessa operação porque DML em um tablespace não-SYSTEM necessita de um segmento de rollback não-SYSTEM e, no momento, não há nenhum disponível. 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados. Os pedidos serão informados usando 15 estações clientes, que possuem um volume bastante alto de atividade pela manhã. Crie um número apropriado de segmentos de rollback no banco de dados. (Pressuponha um tamanho default para este exercício.) Dica: Usando uma proporção de um segmento de rollback para cada quatro transações, você precisará criar quatro segmentos de rollback. SQL> CREATE ROLLBACK SEGMENT r01 2 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT r02 2 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT r03 2 TABLESPACE rbs; Rollback segment created. SQL> CREATE ROLLBACK SEGMENT r04 2 TABLESPACE rbs; Rollback segment created. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-47
  • 304.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 3 Certifique-se de que possa executar INSERT na pergunta 1. Faça um teste para verificar se você consegue inserir um registro na tabela EMP. Não submeta INSERT a commit. Dica: Pelo menos um dos segmentos de rollback precisa estar ONLINE antes que você possa inserir com sucesso uma linha na tabela EMP. SQL> ALTER ROLLBACK SEGMENT r01 ONLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r02 ONLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r03 ONLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r04 ONLINE; Rollback segment altered. SQL> INSERT INTO emp VALUES 2 (7369,'SMITH','CLERK',7902, 3 to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20); 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem usados pelas transações. Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS. SQL> SELECT segment_name, status 2 FROM dba_rollback_segs; SEGMENT_NAME STATUS ------------ ------- SYSTEM ONLINE SYSROL OFFLINE R01 ONLINE R02 ONLINE R03 ONLINE R04 ONLINE 6 rows selected. 5 Localize o segmento de rollback que é usado pela transação. Dica: É possível obter essa informação reunindo as views V$ROLLSTAT e V$ROLLNAME. SQL> SELECT n.name 2 FROM V$rollname n, V$rollstat s 3 WHERE n.usn=s.usn 4 AND s.xacts>0; NAME --------------- R01 ..................................................................................................................................................... C-48 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 305.
    Exercício 10: GerenciandoSegmentos de Rollback ..................................................................................................................................................... 6 Chame o SQL*Plus do diretório Labs. Execute o script ins_emp.sql. Usando uma sessão separada, coloque como off-line o tablespace do segmento de rollback. Dica: O script inicia outra transação que insere uma linha na tabela EMP. Como ambas as transações estão usando os segmentos de rollback nesse tablespace, você precisará seguir estas etapas: Primeiro coloque como OFFLINE todos os segmentos de rollback no tablespace para impedir que novas transações usem os segmentos de rollback no tablespace. SQL> ALTER ROLLBACK SEGMENT r01 OFFLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r02 OFFLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r03 OFFLINE; Rollback segment altered. SQL> ALTER ROLLBACK SEGMENT r04 OFFLINE; Rollback segment altered. Dica: Agora identifique as sessões que estão usando os segmentos de rollback no tablespace RBS. SQL> SELECT s.sid, s.serial# 2 FROM v$session s 3 WHERE s.saddr in 4 (SELECT t.ses_addr 5 FROM V$transaction t, dba_rollback_segs r 6 WHERE t.xidusn=r.segment_id 7 AND r.tablespace_name='RBS'); SID SERIAL# --------- --------- 9 362 11 306 Dica: Cancele as sessões que estão usando segmentos de rollback no tablespace. SQL> ALTER SYSTEM KILL SESSION '9,362'; System altered. SQL> ALTER SYSTEM KILL SESSION '11,306'; System altered. Dica: Coloque como off-line o tablespace RBS. SQL> ALTER TABLESPACE rbs OFFLINE; ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-49
  • 306.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 7 (a) Desative a instância, inicialize novamente e consulte as informações de segmento de rollback no dicionário de dados para verificar quantos segmentos de rollback estão on-line. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup pfile=$HOME/initDB01.ora ORACLE instance started. Total System Global Area 26676624 bytes Fixed Size 64912 bytes Variable Size 18149376 bytes Database Buffers 8388608 bytes Redo Buffers 73728 bytes Database mounted. Database opened. SQL> SELECT segment_name, status 2 FROM dba_rollback_segs; SEGMENT_NAME STATUS ------------ ------- SYSTEM ONLINE SYSROL OFFLINE R01 OFFLINE R02 OFFLINE R03 OFFLINE R04 OFFLINE 6 rows selected. (b) Verifique se todos os segmentos de rollback serão colocados como on-line sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que todos os segmentos de rollback estejam ONLINE. ..................................................................................................................................................... C-50 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 307.
    Exercício 10: GerenciandoSegmentos de Rollback ..................................................................................................................................................... Dica: Para tal, use o parâmetro de inicialização ROLLBACK_SEGMENTS. Além disso, é necessário colocar como ONLINE o tablespace RBS. SQL> ALTER TABLESPACE rbs ONLINE; Tablespace altered. SQL> shutdown Database closed. Database dismounted. ORACLE instance shut down. SQL> exit a Edite initdb01.ora e adicione a seguinte linha: rollback_segments = (r01,r02,r03,r04) SQL> startup pfile=$HOME/initDB01.ora ORACLE instance started. Total System Global Area 6315408 bytes Fixed Size 64912 bytes Variable Size 5308416 bytes Database Buffers 409600 bytes Redo Buffers 532480 bytes Database mounted. Database opened. SQL> SELECT segment_name, status 2 FROM dba_rollback_segs; SEGMENT_NAME STATUS ------------ -------- SYSTEM ONLINE SYSROL OFFLINE R01 ONLINE R02 ONLINE R03 ONLINE R04 ONLINE 6 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-51
  • 308.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados com os parâmetros de armazenamento a seguir e verifique se é possível usá-lo. Isso é essencial para a próxima pergunta: INITIAL = 10K NEXT = 10K OPTIMAL = 30K Dica: Para certificar-se de que possa usar o segmento de rollback, coloque-o como ONLINE depois de criá-lo. SQL> CREATE ROLLBACK SEGMENT demo_rbs 2 TABLESPACE rbs 3 STORAGE(INITIAL 16k NEXT 16K OPTIMAL 32K); Rollback segment created. SQL> ALTER ROLLBACK SEGMENT demo_rbs ONLINE; Rollback segment altered. 9 Verifique o número de extensões no segmento de rollback DEMO_RBS. Estabeleça login como system/manager usando o SQL*Plus e execute o script ext_rbs.sql. Há alguma alteração no número de extensões no segmento de rollback? SQL> SELECT extents 2 FROM dba_segments 3 WHERE segment_name='DEMO_RBS'; EXTENTS --------- 2 SQL> @$HOME/LABS/ext_rbs Table truncated. Transaction set. PL/SQL procedure successfully completed. SQL> SELECT extents 2 FROM dba_segments 3 WHERE segment_name='DEMO_RBS'; EXTENTS --------- 5 ..................................................................................................................................................... C-52 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 309.
    Exercício 10: GerenciandoSegmentos de Rollback ..................................................................................................................................................... 10 Verifique se o segmento de rollback DEMO_RBS foi reduzido para seu tamanho ideal. Dica: É possível verificar o tamanho OPTIMAL em V$ROLLSTAT. SQL> SELECT extents, rssize, optsize 2 FROM v$rollstat 3 WHERE usn = (SELECT usn 4 FROM v$rollname 5 WHERE name='DEMO_RBS'); EXTENTS RSSIZE OPTSIZE --------- --------- --------- 5 86016 32768 Dica: Use o comando ALTER ROLLBACK SEGMENT para reduzir o tamanho e verifique novamente. SQL> ALTER ROLLBACK SEGMENT demo_rbs SHRINK; Rollback segemnt altered SQL> SELECT extents, rssize, optsize 2 FROM v$rollstat 3 WHERE usn = (SELECT usn 4 FROM v$rollname 5 WHERE name='DEMO_RBS'); EXTENTS RSSIZE OPTSIZE --------- --------- --------- 2 36864 32768 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-53
  • 310.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 11 Execute ins_dept1.sql conectado como SYSTEM. Usando uma sessão separada, estabeleça conexão como SYSTEM e execute ins_emp3.sql. Verifique se há uma sessão bloqueadora. Dica: Determine a sessão bloqueadora em V$ROLLSTAT. a Na primeira Sessão: SQL> @$HOME/LABS/ins_dept1 b Na Segunda Sessão: SQL> @$HOME/LABS/ins_emp3 Table truncated. Transaction set. PL/SQL procedure successfully completed. SQL> SELECT s.sid, s.serial#, t.start_time, t.xidusn 2 FROM v$session s, v$transaction t, v$rollstat r 3 WHERE s.saddr = t.ses_addr 4 AND t.xidusn = r.usn 5 AND ((r.curext = t.start_uext-1) OR 6 ((r.curext = r.extents-1) AND t.start_uext=0)); SID SERIAL# START_TIME XIDUSN ---------- ---------- -------------------- ---------- 7 3 01/03/98 20:07:14 5 10 9 01/03/98 20:07:24 5 12 Elimine o segmento de rollback DEMO_RBS. Dica: É necessário colocar o rollback como off-line antes de eliminá-lo. Talvez você precise verificar se nenhuma transação está usando o segmento de rollback. SQL> ALTER ROLLBACK SEGMENT demo_rbs OFFLINE; Rollback segment altered. SQL> DROP ROLLBACK SEGMENT demo_rbs; Rollback segment dropped. ..................................................................................................................................................... C-54 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 311.
    Soluções do Exercício11 ..................................................................................................................................................... Soluções do Exercício 11 1 Você precisa criar as seguintes tabelas para um sistema de entrada de pedidos que esteja implementando agora. As tabelas e as colunas são mostradas abaixo: Tabela Coluna Tipo de Dados e Tamanho CUSTOMERS CUST_CODE VARCHAR2(3) NAME VARCHAR2(50) REGION VARCHAR2(5) ORDERS ORD_ID NUMBER(3) ORD_DATE DATE CUST_CODE VARCHAR2(3) DATE_OF_DELY DATE Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um valor para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito. Estabeleça login como system/manager e crie as tabelas com a utilização apropriada de espaço em bloco e as definições de tablespace. Use o tablespace DATA01. Você pode usar as definições de armazenamento default. Use o Assistente de Tabela ao criar a tabela CUSTOMERS. Não use esse Assistente ao criar a tabela ORDERS. Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que as linhas nessa tabela provavelmente crescerão depois das atualizações. SQL> CREATE TABLE SYSTEM.customers( 2 cust_code varchar2(3), 3 name varchar2(50), 4 region varchar2(5)) 5 TABLESPACE data01; Table created. SQL> CREATE TABLE SYSTEM.orders( 2 ord_id NUMBER(3), 3 ord_date DATE, 4 cust_code varchar2(3), 5 date_of_dely DATE) 6 TABLESPACE data01 7 PCTFREE 35; Table created. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-55
  • 312.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 2 Execute o script ins_cord.sql para inserir linhas nas tabelas. SQL> @$HOME/LABS/ins_cord 1 row created. 1 row created. .... 3 Localize os arquivos e os blocos que contêm os pedidos do cliente com CUST_CODE=A04. Dica: Você precisa usar o pacote DBMS_ROWID para traduzir ROWID. Como o banco de dados possui somente alguns arquivos, os números de arquivos relativos e os números de arquivos absolutos são os mesmos. SQL> SELECT DISTINCT dbms_rowid.rowid_relative_fno(rowid) AS "File", 2 dbms_rowid.rowid_block_number(rowid) AS "Block" 3 FROM orders 4 WHERE cust_code='A04'; File Block --------- --------- 8 488 4 Verifique o número de extensões usado pela tabela ORDERS. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS' 4 AND owner='SYSTEM' COUNT(*) --------- 1 5 Aloque uma extensão manualmente, com tamanho default, para a tabela ORDERS e confirme se a extensão foi adicionada conforme especificado. SQL> ALTER TABLE system.orders 2 ALLOCATE EXTENT; Table altered. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS' 4 AND owner='SYSTEM'; COUNT(*) --------- 2 ..................................................................................................................................................... C-56 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 313.
    Soluções do Exercício11 ..................................................................................................................................................... 6 (a) Elimine a tabela BIG_EMP. SQL> DROP TABLE system.big_emp; Table dropped. (b) Crie outra tabela, ORDERS2, como cópia da tabela ORDERS, mas com MINEXTENTS=10 e PCTINCREASE=0. Verifique se a tabela foi criada com o número especificado de extensões. SQL> CREATE TABLE system.orders2 2 TABLESPACE data01 3 STORAGE(MINEXTENTS 10 PCTINCREASE 0) 4 AS 5 SELECT * FROM system.orders; Table created. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS2' 4 AND owner='SYSTEM'; COUNT(*) ---------- 10 7 Trunque a tabela ORDERS sem liberar espaço e verifique o número de extensões para localizar extensões que não foram desalocadas. SQL> TRUNCATE TABLE system.orders 2 REUSE STORAGE; Table truncated. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS' 4 AND owner='SYSTEM'; COUNT(*) ---------- 2 8 Altere a tabela ORDERS2 para reduzir MINEXTENTS a 4. Houve uma redução no número de extensões? SQL> ALTER TABLE system.orders2 2 STORAGE(MINEXTENTS 4); Table altered. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS2' 4 AND owner='SYSTEM'; COUNT(*) ---------- 10 Não há nenhuma alteração no número de extensões da tabela. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-57
  • 314.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 9 Trunque a tabela ORDERS2 liberando espaço. Quantas extensões a tabela possui agora? SQL> TRUNCATE TABLE system.orders2; Table truncated. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS2' 4 AND owner='SYSTEM'; COUNT(*) ---------- 4 10 (a) Execute o script ins_ord2.sql para inserir algumas linhas na tabela ORDERS2. SQL> @$HOME/LABS/ins_ord2 1 row created. ... Commit complete. (b) Libere o espaço não utilizado de ORDERS2 e verifique o número de extensões. Algum espaço foi liberado na tabela? Por que ou por que não? SQL> ALTER TABLE system.orders2 2 DEALLOCATE UNUSED; Table altered. SQL> SELECT COUNT(*) 2 FROM dba_extents 3 WHERE segment_name='ORDERS2' 4 AND owner='SYSTEM'; COUNT(*) ---------- 4 Nenhum espaço foi liberado porque esse comando libera espaço somente acima da marca d’água, isto é, acima de MINEXTENTS. ..................................................................................................................................................... C-58 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 315.
    Soluções do Exercício11 ..................................................................................................................................................... 11 (a) Para a aplicação de entrada de pedidos, você agora precisa adicionar uma tabela PRODUCTS, que possui as seguintes colunas: Coluna Tipo de Dados e Tamanho PROD_CODE NUMBER(6) DESCRIPTION VARCHAR2(30) PRICE NUMBER(8,2) Crie essa tabela no tablespace DATA02 usando tamanhos de extensão uniformes de 10K. SQL> CREATE TABLE system.products 2 (prod_code NUMBER(6), 3 description VARCHAR2(30), 4 price NUMBER(8,2)) 5 STORAGE ( INITIAL 10K NEXT 10K 6 PCTINCREASE 0) 7 TABLESPACE data02 ; Table created. (b) Verifique os tamanhos das extensões dessa tabela. O que você observa? Dica: Verifique a view DBA_EXTENTS para obter o tamanho. SQL> COL segment_name FORMAT A12 SQL> SELECT segment_name, extent_id, blocks, bytes 2 FROM dba_extents 3 WHERE segment_name = 'PRODUCTS' 4 AND owner='SYSTEM' 5 / SEGMENT_NAME EXTENT_ID BLOCKS BYTES ------------ --------- --------- --------- PRODUCTS 0 25 102400 O tamanho da extensão é de 100 KB e não de 10 KB como especificado durante a criação da tabela, pois o tablespace DATA02 possui um tamanho MINIMUM EXTENT de 100 KB. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-59
  • 316.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 12 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX, respectivamente, e coloque-os nos tablespaces apropriados. Dica: Um índice em árvore B é adequado para uma coluna com vários valores distintos e um índice de bitmap é adequado para colunas com apenas alguns valores distintos. SQL> CREATE INDEX system.cust_name_idx 2 ON system.customers(name) 3 PCTFREE 30 4 TABLESPACE indx01; Index created. SQL> CREATE BITMAP INDEX system.cust_region_idx 2 ON system.customers(region) 3 TABLESPACE indx01; Index created. 2 Mova o índice CUST_REGION_IDX para outro tablespace. Dica: É possível criar o índice novamente especificando um tablespace diferente. SQL> ALTER INDEX system.cust_region_idx REBUILD 2 TABLESPACE indx; Index altered. 3 Anote os arquivos e os blocos usados pelas extensões pelo índice CUST_REGION_IDX. Id_arquivo Id_bloco Blocos Dica: Use a view DBA_EXTENTS para obter essas informações. SQL> SELECT file_id, block_id, blocks 2 FROM dba_extents 3 WHERE segment_name='CUST_REGION_IDX' 4 AND owner='SYSTEM'; FILE_ID BLOCK_ID BLOCKS --------- --------- --------- 5 2 5 ..................................................................................................................................................... C-60 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 317.
    Soluções do Exercício12 ..................................................................................................................................................... 4 Crie mais uma vez o índice CUST_REGION_IDX sem eliminá-lo, criá-lo novamente e mantenha-o no mesmo tablespace anterior. O novo índice usa os mesmos blocos usados anteriormente? Dica: Crie o índice novamente. SQL> ALTER INDEX system.cust_region_idx REBUILD; Index altered. SQL> SQL> SELECT file_id, block_id, blocks 2 FROM dba_extents 3 WHERE segment_name='CUST_REGION_IDX' 4 AND owner='SYSTEM'; FILE_ID BLOCK_ID BLOCKS --------- --------- --------- 5 7 5 O novo índice não reutiliza o mesmo espaço conforme visto do local da extensão depois de ser criado novamente. Isso porque o servidor Oracle cria um índice temporário, elimina o antigo e renomeia o índice temporário. 5 (a) Usando a conta system, execute o script cr_numb.sql para criar e preencher a tabela NUMBERS. SQL> @$HOME/LABS/cr_numb Table created. PL/SQL procedure completed successfully. (b) Consulte a tabela NUMBERS para obter o número de valores distintos nas duas colunas na tabela. SQL> SELECT COUNT(DISTINCT no), 2 COUNT(DISTINCT odd_even) 3 FROM system.numbers; COUNT(DIST COUNT(DIST ---------- ---------- 10000 2 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-61
  • 318.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... (c) Usando tamanhos de extensão uniformes de 4K, crie os índices em árvore B NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX Dica: Use PCTINCREASE=0 para criar extensões de mesmo tamanho. SQL> CREATE INDEX system.numb_oe_idx 2 ON system.numbers(odd_even) 3 TABLESPACE indx01 4 STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0); Index created. SQL> CREATE INDEX system.numb_no_idx 2 ON system.numbers(no) 3 TABLESPACE indx01 4 STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0); Index created. Dica: Verifique o total de blocos alocados para as extensões em DBA_SEGMENTS. SQL> SELECT segment_name, blocks 2 FROM dba_segments 3 WHERE segment_name LIKE 'NUMB%' 4 AND segment_type='INDEX'; SEGMENT_NAME BLOCKS --------------- ---------- NUMB_OE_IDX 40 NUMB_NO_IDX 45 (d) Mais uma vez, usando tamanhos de extensão uniformes de 4K, crie os índices de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX ..................................................................................................................................................... C-62 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 319.
    Soluções do Exercício12 ..................................................................................................................................................... O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos dois tipos de índices? Dica: É necessário eliminar os índices existentes antes de criar os índices novos. SQL> DROP INDEX system.numb_oe_idx; Index dropped. SQL> DROP INDEX system.numb_no_idx; Index dropped. SQL> CREATE BITMAP INDEX system.numb_oe_idx 2 ON system.numbers(odd_even) 3 TABLESPACE indx01 4 STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0); Index created. SQL> CREATE BITMAP INDEX system.numb_no_idx 2 ON system.numbers(no) 3 TABLESPACE indx01 4 STORAGE( INITIAL 4K NEXT 4k PCTINCREASE 0); Index created. Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices. SQL> SELECT segment_name, blocks 2 FROM dba_segments 3 WHERE segment_name LIKE 'NUMB%' 4 AND segment_type='INDEX'; SEGMENT_NAME BLOCKS ------------ --------- NUMB_OE_IDX 2 NUMB_NO_IDX 71 De acordo com os resultados, é possível observar que um índice de bitmap é compacto para uma coluna de baixa cardinalidade, enquanto um índice em árvore B é compacto para uma coluna de alta cardinalidade. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-63
  • 320.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 13 1 Examine o script cr_cons.sql. Execute-o para criar as restrições. SQL> @$HOME/LABS/cr_cons SQL>ALTER TABLE system.customers 2 ADD (CONSTRAINT cust_pk PRIMARY KEY(cust_code) 3 DEFERRABLE INITIALLY IMMEDIATE 4 USING INDEX TABLESPACE indx01, 5 CONSTRAINT cust_region_ck 6 CHECK (region in ('East','West','North','South'))); Table altered. SQL> ALTER TABLE system.orders 2 ADD(CONSTRAINT ord_pk PRIMARY KEY(ord_id) 3 USING INDEX TABLESPACE indx01, 4 CONSTRAINT ord_cc_fk FOREIGN KEY(cust_code) 5 REFERENCES customers(cust_code) 6 DEFERRABLE INITIALLY IMMEDIATE, 7 CONSTRAINT ord_dod_ck CHECK (date_of_dely >= ord_date)); Table altered. SQL> ALTER TABLE system.products 2 ADD CONSTRAINT prod_uk UNIQUE(prod_code) 3 DEFERRABLE DISABLE; Table altered. 2 Consulte o dicionário de dados para: (a) Verificar restrições, se são adiáveis e o status das mesmas. Dica: Use a view DBA_CONSTRAINTS para obter essas informações. SQL> SELECT constraint_name, table_name, 2 constraint_type, deferrable, status 3 FROM dba_constraints 4 WHERE table_name IN 5 ('PRODUCTS','ORDERS','CUSTOMERS') 6 AND owner='SYSTEM'; CONSTRAINT_NAME TABLE_NAME C DEFERRABLE STATUS --------------- ---------- - -------------- -------- CUST_PK CUSTOMERS P DEFERRABLE ENABLED CUST_REGION_CK CUSTOMERS C NOT DEFERRABLE ENABLED ORD_CC_FK ORDERS R DEFERRABLE ENABLED ORD_DOD_CK ORDERS C NOT DEFERRABLE ENABLED ORD_PK ORDERS P NOT DEFERRABLE ENABLED PROD_UK PRODUCTS U DEFERRABLE DISABLED 6 rows selected. (b) Verificar os nomes e os tipos de índices criados para validar as restrições. ..................................................................................................................................................... C-64 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 321.
    Soluções do Exercício13 ..................................................................................................................................................... Dica: Os índices são criados somente para restrições exclusivas e de chave primária, e possuem o mesmo nome das restrições. SQL> SELECT index_name,table_name,uniqueness 2 FROM dba_indexes 3 WHERE index_name in 4 (SELECT constraint_name 5 FROM dba_constraints 6 WHERE table_name IN ('PRODUCTS', 'ORDERS', 'CUSTOMERS') 7 AND owner='SYSTEM' 8 AND constraint_type in ('P','U')); INDEX_NAME TABLE_NAME UNIQUENES --------------- --------------- --------- CUST_PK CUSTOMERS NONUNIQUE ORD_PK ORDERS UNIQUE 2 rows selected. c Verificar as colunas que são usadas nas restrições criadas. Dica: É possível obter essas informações em DBA_CONS_COLUMNS. SQL> SELECT constraint_name,table_name, column_name 2 FROM dba_cons_columns 3 WHERE table_name IN ('PRODUCTS', 'ORDERS', 'CUSTOMERS') 4 AND owner='SYSTEM' 5 ORDER BY table_name, constraint_name, position; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME --------------- ---------- ------------ CUST_PK CUSTOMERS CUST_CODE CUST_REGION_CK CUSTOMERS REGION ORD_CC_FK ORDERS CUST_CODE ORD_DOD_CK ORDERS ORD_DATE ORD_DOD_CK ORDERS DATE_OF_DELY ORD_PK ORDERS ORD_ID PROD_UK PRODUCTS PROD_CODE 7 rows selected. 3 Insira dois registros com os seguintes valores na tabela PRODUCTS: PROD_CODE DESCRIPTION PRICE 100860 Ace Tennis Racket 36.20 100860 Ace Tennis Ball 3-Pack 2.40 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-65
  • 322.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... SQL> INSERT INTO system.products 2 VALUES(100860,'Ace Tennis Racket',36.20); 3 / 1 row created. SQL> INSERT INTO system.products 2 VALUES(100860,'Ace Tennis Ball 3-Pack', 2.4); 1 row created. 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida? Por que ou por que não? SQL> ALTER TABLE system.products 2 ENABLE CONSTRAINT prod_uk; ALTER TABLE system.products * ORA-02299: cannot enable (SYSTEM.PROD_UK) - duplicate keys found Não é possível ativar a restrição porque há linhas que a violam. 5 (a) Verifique se novas linhas adicionadas à tabela não violam a restrição na tabela PRODUCTS. Dica: Para fazer isso, ative a restrição NOVALIDATE. SQL> ALTER TABLE products 2 ENABLE NOVALIDATE CONSTRAINT prod_uk; Table altered. (b) Consulte o dicionário de dados para verificar o efeito da alteração. SQL> SELECT constraint_name, table_name, 2 constraint_type, validated, status 3 FROM dba_constraints 4 WHERE table_name = 'PRODUCTS' 5 AND owner='SYSTEM'; CONSTRAINT_NAME TABLE_NAME C VALIDATED STATUS --------------- --------------- - ------------- ------- PROD_UK PRODUCTS U NOT VALIDATED ENABLED ..................................................................................................................................................... C-66 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 323.
    Soluções do Exercício13 ..................................................................................................................................................... (c) Verifique se a restrição desativa inserções que violam a alteração adicionando uma linha com os seguintes valores: PROD_CODE: 100860 DESCRIPTION: Yellow Jersey Bicycle Helmet PRICE: 30 SQL> INSERT INTO products 2 VALUES(100860,'Yellow Jersey Bicycle Helmet', 3 30); ORA-00001: unique constraint (SYSTEM.PROD_UK) violated 6 Tome as providências necessárias para identificar violações de restrição existentes na tabela PRODUCTS, modifique códigos de produtos conforme necessário e garanta que todos os dados existentes e os novos dados não violem a restrição. (Pressuponha que a tabela possua milhares de linhas e que seja gasto um tempo enorme para verificar cada linha manualmente.) Dica: Siga estas etapas: Crie a tabela EXCEPTIONS. SQL> connect system/manager; Connected. SQL> @?/rdbms/admin/utlexcpt Table created. Dica: Execute o comando para ativar a restrição e interceptar as exceções. SQL> ALTER TABLE system.products 2 ENABLE CONSTRAINT prod_uk 3 EXCEPTIONS INTO system.exceptions; ALTER TABLE system.products * ORA-02299: cannot enable (SYSTEM.PROD_UK) - duplicate keys found Dica: Use as ROWIDs na tabela EXCEPTIONS para listar as linhas na tabela PRODUCTS que violam a restrição. (Não liste colunas LOB.) SQL> SELECT rowid, prod_code, description 2 FROM products 3 WHERE rowid IN (SELECT row_id 4 FROM exceptions 5 WHERE table_name='PRODUCTS'); ROWID PROD_CODE DESCRIPTION ------------------ --------- ----------------------- AAAAtRAAJAAAAADAAA 100860 Ace Tennis Racket AAAAtRAAJAAAAADAAB 100860 Ace Tennis Ball 3-Pack ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-67
  • 324.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Dica: Conserte os erros. SQL> UPDATE products 2 SET prod_code='100861' 3 WHERE rowid= (SELECT max(row_id) 4 FROM exceptions 5 WHERE table_name='PRODUCTS'); 1 row Updated. Dica: Ative a restrição. SQL> TRUNCATE TABLE exceptions; Table truncated. SQL> ALTER TABLE products 2 ENABLE CONSTRAINT prod_uk 3 EXCEPTIONS INTO exceptions; Table updated. 7 Execute o script ins_ocus1.sql para inserir linhas na tabela. As inserções foram bem-sucedidas? Efetue rollback nas alterações. SQL> @$HOME/LABS/ins_ocus1 SQL> SET ECHO on Echo ON SQL> INSERT INTO system.orders 2 VALUES(800,'01-JAN-98','J01',NULL) 3 / ORA-02291: integrity constraint (SYSTEM.ORD_CC_FK) violated - parent key not found SQL> SQL> INSERT INTO system.customers 2 VALUES('J01','Sports Unlimited','West') 3 / 1 row created. Há falha durante a inserção na tabela ORDERS porque o código do cliente não foi inserido na tabela CUSTOMERS. SQL> ROLLBACK; Rollback complete. ..................................................................................................................................................... C-68 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 325.
    Soluções do Exercício13 ..................................................................................................................................................... 8 Agora examine o script ins_ocus2.sql. Observe que esse script também executa as inserções na mesma seqüência. Execute o script e verifique se é executado com sucesso. SQL> @$HOME/LABS/ins_ocus2 SQL> ALTER SESSION SET CONSTRAINTS=deferred 2 / Session altered. SQL> INSERT INTO system.orders 2 VALUES(800,'01-JAN-98','J01',NULL) 3 / 1 row created. SQL> INSERT INTO system.customers 2 VALUES('J01','Sports Unlimited','West') 3 / 1 row created. SQL> COMMIT; Commit complete. Esse script é executado com sucesso porque ele adia a verificação de restrição até o commit. 9 Trunque a tabela CUSTOMERS. A operação foi bem-sucedida? Por que ou por que não? SQL> TRUNCATE TABLE system.customers; TRUNCATE TABLE system.customers * ORA-02266: unique/primary keys in table referenced by enabled foreign keys Não é possível truncar a tabela porque há uma chave estrangeira em ORDERS que faz referência a essa tabela. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-69
  • 326.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 14 Use a conta system para todas as perguntas neste exercício. 1 (a) Execute o script ins_item.sql para inserir dados na tabela ITEMS. SQL> @$HOME/LABS/ins_item 1 row created. ... (b) Crie uma tabela ITEMS2 como uma cópia da tabela ITEMS. SQL> CREATE TABLE items2 2 TABLESPACE data01 3 AS 4 SELECT * FROM items; Table created. (c) Anote o último número de arquivo/bloco usado no momento por uma linha na tabela _____________________. Dica: Consulte as ROWIDs usando as funções no pacote DBMS_ROWID. SQL> SELECT max(dbms_rowid.rowid_relative_fno(rowid) 2 ||'.'||dbms_rowid.rowid_block_number(rowid)) 3 AS "File.Block" 4 FROM system.items2; File.Block --------------- 8.494 ..................................................................................................................................................... C-70 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 327.
    Soluções do Exercício14 ..................................................................................................................................................... 2 (a) Delete todas as linhas em ITEMS2 e insira uma nova linha com os seguintes valores na tabela: ORD_ID: 200 PROD_CODE: 200000 QTY: 20 SQL> DELETE FROM system.items2; 271 rows deleted. SQL> INSERT INTO system.items2 2 VALUES(200,200000,20); 1 row created. (b) Verifique e anote o número de arquivo/bloco da nova linha. _____________________ SQL> SELECT dbms_rowid.rowid_relative_fno(rowid)||'.' 2 ||dbms_rowid.rowid_block_number(rowid) 3 AS "File.Block" 4 FROM system.items2; File.Block --------------- 8.494 3 (a) Use a inserção de carga direta para copiar dados para a tabela ITEMS2 da tabela ITEMS. SQL> INSERT /*+APPEND */ INTO system.items2 2 SELECT * FROM system.items; 271 rows created. SQL> COMMIT; Commit complete. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-71
  • 328.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... (b) Verifique os números de arquivo/bloco das linhas com ORD_ID<>200. O que você pode observar sobre a localização dessas linhas? SQL> SELECT DISTINCT 2 dbms_rowid.rowid_relative_fno(rowid)||'.' 3 ||dbms_rowid.rowid_block_number(rowid) 4 AS "File.Block" 5 FROM items2 6 WHERE ord_id <> 200; File.Block --------------- 8.495 8.496 As linhas inseridas usando a inserção de carga direta não reutilizaram blocos que foram usados anteriormente, enquanto uma inserção normal usa esses blocos. 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat . Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com a demonstração do Oracle8i Enterprise Edition. Como o usuário system, execute as seguintes etapas para tentar duas execuções de carga e se familiarizar com o uso do SQL*Loader: (a) Execute o script ulcase1.sql para criar as tabelas DEPT e EMP. SQL> @$HOME/LABS/ulcase1$ ..................................................................................................................................................... C-72 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 329.
    Soluções do Exercício14 ..................................................................................................................................................... (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela DEPT para verificar os dados carregados. $ sqlldr system control=ulcase1.ctl Password: SQL*Loader: Release 8.1.5.0.0 - Production on Thu Jun 17 09:47:08 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Commit point reached - logical record count 7 $ sqlplus system/manager SQL> SELECT * 2 FROM system.dept; DEPTNO DNAME LOC --------- -------------- ------------- 12 RESEARCH SARATOGA 10 ACCOUNTING CLEVELAND 11 ART SALEM 13 FINANCE BOSTON 21 SALES PHILA. 22 SALES ROCHESTER 42 INT'L SAN FRAN 7 rows selected. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-73
  • 330.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... (c) Execute o SQL*Loader novamente para carregar dados na tabela EMP usando o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo de dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte a tabela EMP para verificar se os dados foram carregados. $ sqlldr system control=ulcase2.ctl Password: SQL*Loader: Release 8.1.5.0.0 - Production on Thu Jun 17 09:47:08 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Commit point reached - logical record count 7 $ sqlplus system/manager SQL> SELECT * 2 FROM system.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------- --------- ----- --------- --------- ------ ------- 7782 CLARK MANAGER 7839 2572.5 10 7839 KING PRESIDENT 5500 10 7934 MILLER CLERK 7782 920 10 7566 JONES MANAGER 7839 3123.75 20 7499 ALLEN SALESMAN 7698 1600 300 30 7654 MARTIN SALESMAN 7698 1312.5 1400 30 7658 CHAN ANALYST 7566 3450 20 7 rows selected. 5 (a) Verifique o número de extensões e o número total de blocos na tabela ITEMS2. Dica: Consulte a view DBA_SEGMENTS. SQL> SELECT extents, blocks 2 FROM dba_segments 3 WHERE segment_name='ITEMS2' 4 AND owner='SYSTEM'; EXTENTS BLOCKS --------- --------- 1 5 ..................................................................................................................................................... C-74 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 331.
    Soluções do Exercício14 ..................................................................................................................................................... (b) Aloque uma extensão para a tabela manualmente e anote o número de extensões e de blocos agora.______________________. Como você acabou de criar a extensão, a nova extensão está vazia. SQL> ALTER TABLE system.items2 2 ALLOCATE EXTENT; Table altered. SQL> SELECT EXTENTS, BLOCKS 2 FROM dba_segments 3 WHERE segment_name='ITEMS2' 4 AND owner='SYSTEM'; EXTENTS BLOCKS --------- --------- 2 10 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-75
  • 332.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 15 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar. Verifique o número e o tamanho das extensões na tabela ITEMS2 depois da importação. O que você pode inferir sobre o comportamento de exportar e importar no que se refere à alocação de espaço? Dica: Execute as seguintes etapas: Use a exportação no nível de tabela para executar esse procedimento: $ exp system/manager tables=items2 Export: Release 8.1.5.0.0 - Production on Thu Jun 17 10:57:50 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Pro- duction With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Export done in US7ASCII character set and WE8ISO8859P1 NCHAR cha- racter set server uses WE8ISO8859P1 character set (possible charset conversion) About to export specified tables via Conventional Path ... . . exporting table ITEMS2 272 rows exported Export terminated successfully without warnings. Dica: Elimine a tabela ITEMS2. SQL> SELECT EXTENTS, BLOCKS 2 FROM dba_segments 3 WHERE segment_name='ITEMS2' 4 AND owner='SYSTEM'; EXTENTS BLOCKS --------- --------- 2 10 SQL> DROP TABLE system.items2; Table dropped. ..................................................................................................................................................... C-76 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 333.
    Soluções do Exercício15 ..................................................................................................................................................... Dica: Importe a tabela ITEMS2. $ imp system/manager tables=items2 Import: Release 8.1.5.0.0 - Production on Thu Jun 23 11:02:20 1999 (c) Copyright 1997 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Export file created by EXPORT:V08.01.05 via conventional path .. . importing SYSTEM's objects into SYSTEM . . importing table "ITEMS2" 272 rows imported Import terminated successfully without warnings. Dica: Verifique o número e o tamanho das extensões na tabela ITEMS2 usando DBA_SEGMENTS. SQL> SELECT extents, blocks 2 FROM dba_segments 3 WHERE segment_name='ITEMS2' 4 AND owner='SYSTEM'; EXTENTS BLOCKS --------- --------- 1 10 1 row selected. Por default, a exportação de uma tabela e a sua importação fará com que a tabela possua uma extensão cujo tamanho é o mesmo do tamanho original do segmento. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-77
  • 334.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa um índice para mostrar como é possível fazer isso. (a) Crie um índice chamado ITEM_OID_IDX no tablespace DATA01 na coluna ORD_ID da tabela ITEMS2. SQL> CREATE INDEX system.item_oid_idx 2 ON system.items2(ord_id) 3 TABLESPACE data01; Index created. (b) Usando os utilitários Importar e Exportar, mova o índice para o tablespace INDX01. Dica: Execute as seguintes etapas: Exporte a tabela com índices, mas sem linhas. $ exp system/manager tables=items2 rows=n Export: Release 8.1.5.0.0 - Production on Thu Jun 17 12:51:02 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Export done in US7ASCII character set and WE8ISO8859P1 NCHAR character set Note: table data (rows) will not be exported About to export specified tables via Conventional Path ... . . exporting table ITEMS2 Export terminated successfully without warnings. Dica: Elimine o índice. SQL> DROP INDEX system.item_oid_idx; Index dropped. ..................................................................................................................................................... C-78 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 335.
    Soluções do Exercício15 ..................................................................................................................................................... Dica: Importe a partir da saída da exportação anterior e formule um script para criar o índice. $ imp system/manager tables=items2 indexfile=cr_itix.sql Import: Release 8.1.5.0.0 - Production on Thu Jun 17 12:24:42 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Export file created by EXPORT:V08.01.05 via conventional path Import terminated successfully without warnings. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-79
  • 336.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Dica: Edite o arquivo de índice criado na etapa anterior de modo a alterar o tablespace para INDX01 e execute o script para criar o índice novamente. SQL> @cr_itix SQL> SQL> REM CREATE TABLE "SYSTEM"."ITEMS2" ("ORD_ID" NUMBER(3, 0), "PROD_CODE" SQL> REM NUMBER(6, 0), "QTY" NUMBER(4, 0)) PCTFREE 10 PCTUSED 40 INITRANS 1 SQL> REM MAXTRANS 255 LOGGING STORAGE(INITIAL 40960 NEXT 24576 MINEXTENTS 1 SQL> REM MAXEXTENTS 121 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 SQL> REM BUFFER_POOL DEFAULT) TABLESPACE "DATA01" ; SQL> CONNECT SYSTEM; Password: Connected. SQL> CREATE INDEX "SYSTEM"."ITEM_OID_IDX" ON "ITEMS2" ("ORD_ID" ) PCTFREE 10 2 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 10240 NEXT 10240 MINEXTENTS 1 3 MAXEXTENTS 121 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL 4 DEFAULT) TABLESPACE "INDX01" LOGGING ; Index created. ..................................................................................................................................................... C-80 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 337.
    Soluções do Exercício16 ..................................................................................................................................................... Soluções do Exercício 16 1 Ative o gerenciamento de senhas usando o script utlpwdmg.sql. SQL> connect sys/oracle as sysdba; Connected. SQL> @?/rdbms/admin/utlpwdmg Function created. Profile altered. 2 Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece? SQL> ALTER USER scott 2 IDENTIFIED BY scott; ALTER USER scott * ORA-28003: password verification for the specified password failed ORA-20001: Password same as user ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-81
  • 338.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 3 Certifique-se de que os seguintes items se aplicam aos usuários aos quais o perfil DEFAULT foi atribuído: – Depois de duas tentativas de login, a conta deverá ser bloqueada. – A senha deverá expirar depois de 30 dias. – A mesma senha não deverá ser reutilizada por, pelo menos, um minuto. – A conta deverá ter um período de tolerância de cinco dias para alterar uma senha que expirou. Certifique-se de que os requisitos concedidos tenham sido implementados. Dicas: – Use o comando ALTER PROFILE para alterar os limites de perfil default. – Consulte a view de dicionário de dados DBA_PROFILES para verificar o resultado. SQL> ALTER PROFILE default LIMIT 2 FAILED_LOGIN_ATTEMPTS 2 3 PASSWORD_LIFE_TIME 30 4 PASSWORD_REUSE_TIME 1/1440 5 PASSWORD_GRACE_TIME 5; Profile altered. SQL> SELECT resource_name, limit FROM dba_profiles 2 WHERE profile='DEFAULT' AND 3 resource_type='PASSWORD'; RESOURCE_NAME LIMIT -------------------------------- --------------- FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME .0006 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION PASSWORD_LOCK_TIME .0006 PASSWORD_GRACE_TIME 5 7 rows selected. ..................................................................................................................................................... C-82 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 339.
    Soluções do Exercício16 ..................................................................................................................................................... 4 Estabeleça login como usuário SYSTEM fornecendo uma senha inválida. Repita esse procedimento duas vezes e depois estabeleça login novamente fornecendo desta vez a senha correta. SQL> connect system/manger@db01 ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> connect system/man1@db01 ERROR: ORA-01017: invalid username/password; logon denied SQL> connect system/man2@db01 ERROR: ORA-28000: the account is lockedSQL> connect system/manger@db01 ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> connect system/man1@db01 ERROR: ORA-01017: invalid username/password; logon denied SQL> connect system/man2@db01 ERROR: ORA-28000: the account is locked 5 Verifique se é possível estabelecer conexão como SYSTEM novamente. Dica: Execute o comando ALTER USER para desbloquear a conta SYSTEM. SQL> CONNECT sys/oracle; SQL> ALTER USER system 2 ACCOUNT UNLOCK; User altered. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-83
  • 340.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 6 Desative verificações de senha para o perfil DEFAULT. Dica: Execute o comando ALTER PROFILE para desativar as verificações de senha. SQL> ALTER PROFILE default LIMIT 2 FAILED_LOGIN_ATTEMPTS UNLIMITED 3 PASSWORD_LIFE_TIME UNLIMITED 4 PASSWORD_REUSE_TIME UNLIMITED 5 PASSWORD_REUSE_MAX UNLIMITED 6 PASSWORD_VERIFY_FUNCTION NULL 7 PASSWORD_LOCK_TIME UNLIMITED 8 PASSWORD_GRACE_TIME UNLIMITED; Profile altered. ..................................................................................................................................................... C-84 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 341.
    Soluções do Exercício17 ..................................................................................................................................................... Soluções do Exercício 17 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que objetos e segmentos temporários criados por Bob não sejam criados no tablespace SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando o Oracle Enterprise Manager, execute o script bob.sql. Dica: Verifique se o tablespace temporário foi designado. SQL> CREATE USER bob 2 IDENTIFIED BY along 3 DEFAULT TABLESPACE data01 4 TEMPORARY TABLESPACE temp 5 QUOTA 1M ON data01 6 QUOTA 1M ON indx01; User created. SQL> @$HOME/LABS/bob GRANT create session TO bob; Grant succeeded. 2 (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que objetos e segmentos de classificação criados por Kay não sejam criados no tablespace SYSTEM. SQL> CREATE USER kay 2 IDENTIFIED BY mary 3 DEFAULT TABLESPACE data01 4 TEMPORARY TABLESPACE temp; User created. (b) Copie a tabela ORDERS2 do esquema SYSTEM para a conta de Kay. Nomeie a nova tabela como ORDERS. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-85
  • 342.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Dica: Kay precisa de uma conta em seu tablespace default antes que objetos possam ser criados em seu esquema. SQL> ALTER USER kay 2 QUOTA UNLIMITED ON data01; User altered. SQL> CREATE TABLE kay.orders 2 AS 3 SELECT * FROM system.orders2; Table created. 3 Exiba as informações sobre Bob e Kay no dicionário de dados. Dica: Para obter essas informações, consulte DBA_USERS. SQL> SELECT username, default_tablespace, 2 temporary_tablespace 3 FROM dba_users 4 WHERE username IN ('BOB', 'KAY'); USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE -------- -------------------- -------------------- KAY DATA01 TEMP BOB DATA01 TEMP 4 No dicionário de dados, exiba as informações sobre o espaço que Bob pode usar nos tablespaces. Dica: Para obter essas informações, consulte DBA_TS_QUOTAS. SQL> SELECT * FROM dba_ts_quotas WHERE username = 'BOB'; TABLESPACE_NAM USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS -------------- -------- --------- --------- --------- ---------- INDX01 BOB 0 1048576 0 256 DATA01 BOB 0 1048576 0 256 ..................................................................................................................................................... C-86 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 343.
    Soluções do Exercício17 ..................................................................................................................................................... 5 (a) Como o usuário BOB , altere o seu tablespace temporário. O que acontece? Por quê? SQL> CONNECT bob/along; Connected. SQL> ALTER USER bob 2 TEMPORARY TABLESPACE data01; ALTER USER bob * ORA-01031: insufficient privileges (b) Como Bob, altere sua senha para SAM. SQL> CONNECT bob/along; Connected. SQL> ALTER USER bob 2 IDENTIFIED BY sam; User altered. 6 Como o usuário SYSTEM, remova a cota de Bob no tablespace default do mesmo. SQL> CONNECT system/manager Connected. SQL> ALTER USER bob QUOTA 0 ON data01; User altered. 7 Remova a conta de Kay do banco de dados. Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE. SQL> DROP USER kay CASCADE; User dropped. 8 Bob esqueceu a sua senha. Atribua ao mesmo a senha OLINK e exija que ele altere a senha na próxima vez que efetuar logon. SQL> ALTER USER bob 2 IDENTIFIED BY olink 3 PASSWORD EXPIRE; User altered. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-87
  • 344.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 18 1 Como o usuário SYSTEM, crie o usuário Kay e conceda a ele a capacidade de estabelecer logon no banco de dados e criar objetos no seu esquema. Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE. SQL> CONNECT system/manager Connected. SQL> CREATE USER kay 2 IDENTIFIED BY "abcd12" 3 DEFAULT TABLESPACE data01 4 TEMPORARY TABLESPACE temp 5 QUOTA 1M ON data01; User created. SQL> GRANT create session, create table TO kay; Grante succeeded. 2 (a) Conecte-se como Kay e use o script ulcase1.sql para criar tabelas EMP e DEPT. SQL> CONNECT kay/abcd12 Connected. SQL> @$HOME/LABS/ulcase1 (b) Conecte-se como system e copie os dados de SYSTEM.EMP para a tabela EMP de Kay. Verifique se os registros foram inseridos. SQL> CONNECT system/manager Connected. SQL> INSERT INTO kay.emp 2 SELECT * FROM emp; 7 rows created. SQL> SELECT * FROM kay.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ --------- --------- ------- -------- ------- ------ ------- 7782 CLARK MANAGER 7839 2572.5 10 7839 KING PRESIDENT 5500 10 7934 MILLER CLERK 7782 920 10 7566 JONES MANAGER 7839 3123.75 20 7499 ALLEN SALESMAN 7698 1600 300 30 7654 MARTIN SALESMAN 7698 1312.5 1400 30 7658 CHAN ANALYST 7566 3450 20 7 rows selected. ..................................................................................................................................................... C-88 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 345.
    Soluções do Exercício18 ..................................................................................................................................................... (c) Como system, conceda a Bob a capacidade de efetuar seleções na tabela EMP de Kay. O que acontece e por quê? SQL> CONNECT system/manager Connected. SQL> GRANT select ON kay.emp 2 TO bob; GRANT select ON kay.emp * ORA-01031: insufficient privileges SYSTEM pode consultar a tabela de Kay usando o privilégio SELECT ANY TABLE, mas somente Kay ou qualquer outro usuário que tenha recebido o privilégio de Kay com GRANT OPTION pode conceder esse privilégio a outros usuários. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-89
  • 346.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 3 Estabeleça conexão novamente como Kay e conceda a Bob a capacidade de efetuar seleções na tabela EMP de Kay. Além disso, permita que Bob conceda a capacidade de efetuar seleções a outros usuários. Examine as views de dicionário de dados que registram essas ações. Dica: Consulte a view DBA_TAB_PRIVS para ver os privilégios. SQL> CONNECT kay/abcd12 Connected. SQL> GRANT select ON emp 2 TO bob WITH GRANT OPTION; Grant succeeded. SQL> SQL> CONNECT system/manager Connected. SQL> SELECT * FROM dba_tab_privs 2 WHERE grantee='BOB'; GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA ---------- ---------- ---------- ---------- ---------- --- BOB KAY EMP KAY SELECT YES 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados. SQL> CREATE USER todd IDENTIFIED BY "abcd1?"; User created. SQL> GRANT create session TO todd; Grant succeeded. 5 (a) Como Bob, permita que Todd acesse a tabela EMP de Kay. Conceda a Bob a nova senha sam. SQL> CONNECT bob/olink ERROR: ORA-28001: the password has expired Changing password for bob Old password: ***** New password: *** Retype new password: *** Password changed Connected.SQL> GRANT select ON kay.emp TO todd; Grant succeeded. ..................................................................................................................................................... C-90 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 347.
    Soluções do Exercício18 ..................................................................................................................................................... (b) Como Kay, remova o privilégio de Bob de ler a tabela EMP de Kay. SQL> CONNECT kay/abcd12 Connected. SQL> REVOKE select ON emp FROM bob; Revoke succeeded. (c) Como Todd, consulte a tabela EMP de Kay. O que acontece e por quê? SQL> CONNECT todd/abcd1? Connected. SQL> SELECT * FROM kay.emp; SELECT * FROM kay.emp * ORA-00942: table or view does not exist Como a revogação de privilégios de objeto possui um efeito cascata, Todd, que recebeu o privilégio de Bob, perdeu o privilégio SELECT na tabela de Kay quando o privilégio de Bob foi revogado na pergunta anterior. 6 (a) Permita que Kay crie tabelas em qualquer esquema. Como Kay, crie a tabela DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e por quê? SQL> CONNECT system/manager Connected. SQL> GRANT create any table TO kay; Grant succeeded. SQL> CONNECT kay/abcd12 Connected. SQL> CREATE TABLE bob.dept 2 AS 3 SELECT * FROM dept; SELECT * FROM dept * ORA-01536: space quota exceeded for tablespace 'DATA01' A cota de Bob no seu tablespace default foi removida no Exercício 17, pergunta 6. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-91
  • 348.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... (b) Como system, examine a view de dicionário de dados DBA_TABLES para verificar o resultado. SQL> CONNECT system/manager Connected. SQL> SELECT owner, table_name 2 FROM dba_tables 3 WHERE table_name IN ('EMP', 'DEPT'); OWNER TABLE_NAME ------ ----------- SCOTT DEPT SCOTT EMP SYSTEM EMP SYSTEM DEPT KAY DEPT KAY EMP 6 rows selected. 7 Conceda a Kay a capacidade de inicializar e desativar o banco de dados sem a capacidade de criar um novo banco de dados. Dica: Conceda a Kay o privilégio SYSOPER. SQL> CONNECT sys/coracle AS SYSDBA Connected. SQL> GRANT sysoper TO kay; Grant succeeded. ..................................................................................................................................................... C-92 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 349.
    Soluções do Exercício19 ..................................................................................................................................................... Soluções do Exercício 19 1 Examine a view de dicionário de dados e liste os privilégios do sistema da atribuição RESOURCE. Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS. SQL> CONNECT system/manager Connected. SQL> SELECT * 2 FROM dba_sys_privs 3 WHERE grantee = 'RESOURCE'; GRANTEE PRIVILEGE ADM -------- -------------------- --- RESOURCE CREATE CLUSTER NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TABLE NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE TYPE NO 8 rows selected. 2 Crie uma atribuição chamada DEV, que permite a um usuário criar uma tabela, criar uma view e fazer seleções na tabela EMP de Kay. SQL> CREATE ROLE dev; Role created. SQL> GRANT create table, create view TO dev; Grant succeeded. SQL> CONNECT kay/abcd12 Connected. SQL> GRANT select ON emp TO dev; Grant succeeded. SQL> CONNECT system/manager Connected. SQL> GRANT dev TO bob; Grant succeeded. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-93
  • 350.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente que a atribuição RESOURCE seja ativada automaticamente quando ele estabelecer logon. Dica: Use o comando ALTER USER para especificar a atribuição default. SQL> GRANT dev, resource TO bob; Grant succeeded. SQL> ALTER USER bob 2 DEFAULT ROLE resource; User altered. (b) Conceda a Bob a capacidade de ler todas as informações de dicionário de dados. Dica: Atribua SELECT_CATALOG_ROLE. a Bob. SQL> GRANT select_catalog_role TO bob; Grant succeeded. 4 Bob precisa verificar os segmentos de rollback que são usados no momento pela instância. Conecte-se como Bob e liste os segmentos de rollback usados. Dica: Bob precisa de SELECT_CATALOG_ROLE para verificar os segmentos de rollback, mas, como essa não é uma das atribuições default do mesmo, é necessário ativá-la primeiro. SQL> CONNECT bob/sam Connected. SQL> SET ROLE select_catalog_role; Role set. SQL> SELECT segment_name 2 FROM dba_rollback_segs 3 WHERE status='ONLINE'; SEGMENT_NAME -------------- SYSTEM R01 R02 R03 R04 ..................................................................................................................................................... C-94 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 351.
    Soluções do Exercício19 ..................................................................................................................................................... 5 Como system, tente criar uma view EMP_VIEW na tabela EMP de Kay. O que acontece e por quê? SQL> connect system/manager Connected. SQL> CREATE VIEW kay_emp AS SELECT * FROM kay.emp; CREATE VIEW kay_emp AS SELECT * FROM kay.emp * ORA-00942: table or view does not exist SYSTEM pode ler a tabela de Kay usando os privilégios adquiridos pela atribuição DBA, mas não é possível usar um privilégio obtido através de uma atribuição para criar views. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-95
  • 352.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... Soluções do Exercício 20 1 Verifique o conjunto de caracteres nacionais e do banco de dados. Dica: Consulte a view de dicionário de dados NLS_DATABASE_PARAMETERS para verificar os conjuntos de caracteres. SQL> SELECT parameter,value 2 FROM nls_database_parameters 3 WHERE parameter LIKE '%CHARACTERSET'; PARAMETER VALUE ------------------------ ------------------------ NLS_CHARACTERSET WE8ISO8859P1 NLS_NCHAR_CHARACTERSET WE8ISO8859P1 2 Quais são os valores válidos para o conjunto de caracteres do banco de dados? Dica: Consulte a view de dicionário de dados V$NLS_VALID_VALUES para listar os valores válidos. SQL> SELECT value FROM v$nls_valid_values 2 WHERE parameter='CHARACTERSET'; VALUE ------------------------ US7ASCII WE8DEC WE8HP ... ZHT32TRISFIXED 233 rows selected. ..................................................................................................................................................... C-96 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 353.
    Soluções do Exercício20 ..................................................................................................................................................... 3 Certifique-se de que todas as datas nesta sessão sejam exibidas usando um ano de quatro dígitos. Dica: Defina o parâmetro NLS_DATE_FORMAT. SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY'; Session altered. SQL> SELECT SYSDATE FROM dual; SYSDATE --------------- 18-06-1999 4 Defina NLS_LANG no lado servidor e no cliente para ativar o esquema de codificação de caracteres de 8 bits. Execute o script nls.sql conectado como o usuário SYS e exiba as linhas. Exporte a tabela. Importe a tabela para o usuário Bob usando o conjunto de caracteres US7ASCII. Consulte a tabela; o que aconteceu e por quê? (opcional) $NLS_LANG=German_Germany.WE8ISO8859P1 $export NLS_LANG SQL> CONNECT sytem/manager@db01 Connected. SQL> @$HOME/LABS/nls Table created. 1 row created. 1 row created. SQL> SELECT * FROM nls; C ----- _ SQL> EXIT exp system/manager tables=nls Export: Release 8.1.5.0.0 - Production on Thu Jun 17 12:51:02 1999 .. Export done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character set Note: table data (rows) will not be exported About to export specified tables via Conventional Path ... . . exporting table NLS 2 rows exported. Export terminated successfully without warnings. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura C-97
  • 354.
    Apêndice C: Soluçõesdos Exercícios Para SQL*Plus ..................................................................................................................................................... $NLS_LANG=American_America.US7ASCII $export NLS_LANG imp system/manager fromuser=system touser=bob tables=nls Import: Release 8.1.5.0.0 - Production on Thu Jun 17 12:24:42 1999 (c) Copyright 1998 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production Export file created by EXPORT:V08.01.05 via conventional path import done in US7ASCII character set and WE8ISO8859P1 character set import server uses WE8ISO8859P1 character set (possible charset conversion) export client uses WE8ISO8859P1 character set (possible charset conversion) . . importing table “NLS” 2 rows imported Import terminated successfully without warnings. SQL> CONNECT bob/sam Connected. SQL> SELECT * FROM nls; C ---------- U ? ..................................................................................................................................................... C-98 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 355.
    D ................................ Soluções dos Exercícios para o Oracle Enterprise Manager
  • 356.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 1 Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C, "Soluções dos Exercícios Para SQL*Plus". Consulte-o para obter as respostas. ..................................................................................................................................................... D-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 357.
    Soluções do Exercício2 ..................................................................................................................................................... Soluções do Exercício 2 Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start (Iniciar) —> Programs (Programas) —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet (Planilha SQL Plus) . Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-3
  • 358.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 3 Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica do Oracle Enterprise Manager. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. 5 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 359.
    Soluções do Exercício3 ..................................................................................................................................................... 6 Tente alterar o tamanho do bloco do banco de dados. O que aconteceu? a (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Instance Manager b Conecte-se com o nome de usuário sys, a senha oracle, o nome de serviço db01 e conecte-se como sysdba. Conecte-se diretamente com o banco de dados. Não se conecte com um OMS. c Selecione Database (Banco de Dados) —> Shutdown (Desativar). d Clique em Yes (Sim) na caixa de diálogo. e Selecione Immediate (Imediata) em Shutdown Options (Opções de Desativação). f Clique em OK. g Edite init<SID>.ora e adicione DB_BLOCK_SIZE=8192. h Use o Instance Manager. i Selecione Database (Bando de Dados) —> Startup (Inicializar). j Na caixa de diálogo Startup, selecione Open (Abrir) e especifique o nome do arquivo de parâmetros local. k Desative a instância. l Edite init<SID>.ora para criar comentários sobre DB_BLOCK_SIZE. m Inicialize e abra o banco de dados. Selecione o botão de opção Open e clique em Apply (Aplicar). 7 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-5
  • 360.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 8 A solução é a mesma mencionada no Apêndice C. 9 Inicie uma sessão do SQL*Plus. Conecte-se como o usuário SCOTT e insira linhas na tabela EMP. Abra uma segunda sessão e tente desativar o banco de dados com a opção transacional. O que acontece? SQL> connect scott/tiger Connected. SQL> INSERT INTO emp (empno, ename, deptno) 2 VALUES (1,'Vijay',10); 1 row processed. a Use o Instance Manager b Selecione Database —> Shutdown c Clique em Yes na caixa de diálogo d Selecione Transactional (Transacional) em Shutdown Options e Clique em OK Efetue rollback na transação de Scott. O servidor Oracle espera a transação de SCOTT terminar antes de desativar. Espere a instância ser desativada na segunda sessão. Em seguida, ative-a novamente. 10 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 361.
    Soluções do Exercício3 ..................................................................................................................................................... 11 Verifique se pelo menos duas sessões estão abertas, uma sessão como o usuário SCOTT e outra como o usuário SYS. Ative a sessão restrita, confirme-a e certifique-se de que somente o administrador de banco de dados SYS esteja conectado. a Use o Instance Manager. b Selecione Session (Sessão) —> Restrict (Restrita) no menu e clique em OK na caixa de diálogo. c Expanda a pasta Sessions (Sessões). d Selecione o usuário SCOTT e escolha Disconnect (Desconectar) —> Immediate no menu do botão direito do mouse. e Selecione a pasta Sessions e examine o status da sessão de SCOTT. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-7
  • 362.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 4 Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C. Consulte-o para obter as respostas. Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —>SQL Plus Worksheet Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... D-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 363.
    Soluções do Exercício5 ..................................................................................................................................................... Soluções do Exercício 5 Todas as soluções deste exercício são as mesmas mencionadas no Apêndice C. Consulte-o para obter as respostas. Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-9
  • 364.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 6 Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica do Oracle Enterprise Manager. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet . Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... D-10 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 365.
    Soluções do Exercício6 ..................................................................................................................................................... 1 A solução é a mesma mencionada no Apêndice C. 2 Tente iniciar o banco de dados sem nenhum arquivo de controle. (É possível simular isso alterando o nome do arquivo de controle no arquivo de parâmetros.) O que acontece? Depois de renomear o arquivo no servidor, use o Instance Manager para reiniciar o banco de dados. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-11
  • 366.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 7 1 Liste o número e a localização dos arquivos de log existentes e exiba o número de grupos e de membros de arquivos de redo log que o seu banco de dados possui. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Storage Manager. b Conecte-se diretamente com um banco de dados na caixa de diálogo de login. c Expanda a pasta Redo Log Groups (Grupos de Redo Logs) para ver o número de grupos. d Selecione um grupo para ver o número de membros no grupo e a localização dos mesmos. ..................................................................................................................................................... D-12 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 367.
    Soluções do Exercício7 ..................................................................................................................................................... 2 Em que modo de banco de dados o seu banco de dados está configurado? O arquivamento automático está ativado? a Use o Oracle Enterprise Manager. b Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Instance Manager. c Conecte-se diretamente com um banco de dados na caixa de diálogo de login. d Selecione o banco de dados na árvore do navegador e clique na guia Information (Informações) no painel de janela direito. e Selecione Initialization Parameters (Parâmetros de Inicialização) na árvore do navegador e exiba os parâmetros no painel de janela direito. O parâmetro LOG_ARCHIVE_START deverá aparecer na guia Basic Tuning (Ajuste Básico). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-13
  • 368.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 3 Adicione um membro de redo log a cada grupo no banco de dados localizado no DISK3 usando as seguintes convenções de nomeação: Se o grupo 1 possuir dois arquivos existentes chamados redo0101.log e redo0102.log, adicione um novo membro chamado redo0103.log no DISK3. Verifique o resultado. a Use o Storage Manager. b Expanda Redo Log Groups na árvore do navegador. c Selecione o grupo de redo logs e informe um novo arquivo de log na planilha, no painel de janela direito. Clique em Apply. ..................................................................................................................................................... D-14 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 369.
    Soluções do Exercício7 ..................................................................................................................................................... 4 Crie um novo grupo de redo logs localizado nos diretórios DISK3, DISK4 e DISK5, e verifique a existência do novo grupo. a Use o Storage Manager. b Selecione os grupos de redo logs na árvore do navegador e escolha Create (Criar) no menu do botão direito do mouse. c Informe o nome e a localização dos membros de redo log. Clique em Create. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-15
  • 370.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 5 Desloque os membros redo0103.log e redo0203.log (consulte a etapa 3) do diretório DISK3 para DISK5. a Use o Storage Manager. b Selecione os grupos de redo logs na árvore do navegador. c Altere a localização dos membros de redo log. Clique em Apply. (Lembre-se de copiar os arquivos para o novo destino antes de renomeá-los. Consulte o Apêndice C para obter as respostas.) ..................................................................................................................................................... D-16 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 371.
    Soluções do Exercício7 ..................................................................................................................................................... 6 Remova o grupo de logs criado na etapa 4. d Use o Storage Manager. e Selecione Redo Log Groups. f Se o grupo 3 estiver ativo, selecione o seu banco de dados de trabalho e escolha Switch Logfile (Alternar Arquivo de Log) no menu do botão direito do mouse. g Clique em OK na caixa de mensagem. h Selecione o grupo 3 na árvore do navegador. i Selecione Object (Objeto) —> Remove (Remover). j Clique em Yes na caixa de diálogo do Storage Manager. k Estabeleça login no servidor e execute: $rm $HOME/DATA/DISK3/redo0301.log $rm $HOME/DATA/DISK4/redo0302.log $rm $HOME/DATA/DISK5/redo0303.log ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-17
  • 372.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 7 Redimensione todos os arquivos de redo log on-line para 1024 KB. a Use o Storage Manager para adicionar dois grupos de log com dois membros cada. b Alterne os arquivos de log até que os grupos 1 e 2 fiquem inativos. c Elimine os grupos de log 1 e 2. d Estabeleça login no servidor e execute: $rm $HOME/DATA/DISK3/redo0101.log $rm $HOME/DATA/DISK3/redo0201.log $rm $HOME/DATA/DISK4/redo0102.log $rm $HOME/DATA/DISK4/redo0202.log $rm $HOME/DATA/DISK5/redo0103.log $rm $HOME/DATA/DISK5/redo0203.log e Selecione cada grupo de logs para verificar se os arquivos foram criados adequadamente. ..................................................................................................................................................... D-18 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 373.
    Soluções do Exercício8 ..................................................................................................................................................... Soluções do Exercício 8 1 Crie tablespaces permanentes com os seguintes nomes e armazenamento: a) DATA01 para tabelas com armazenamento default b) DATA02 para objetos grandes com armazenamento default. Certifique-se de que cada tamanho de extensão usado no tablespace seja múltiplo de 100 KB. c) INDX01 para índices com o armazenamento default. Ative a extensão automática de 500 KB quando forem necessárias mais extensões. d) RONLY para tabelas somente para leitura com o armazenamento default Exiba as informações do dicionário de dados. Localização do Arquivo Nome do Tablespace Subdiretório de Dados (Tamanho) DATA01 DISK4 data01.dbf (2M) DATA02 DISK5 data02.dbf (1M) INDX01 DISK3 indx01.dbf (1M) RONLY DISK1 ronly.dbf (1M) ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-19
  • 374.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... a Use o Storage Manager b Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Storage Manager. c Conecte-se diretamente com um banco de dados na caixa de diálogo de login. d Selecione a pasta Tablespaces na árvore do navegador e selecione Create no menu do botão direito do mouse. e Informe Name (Nome) na guia General (Geral) da Folha de Propriedades e clique em Add (Adicionar). f Informe o nome e o tamanho do arquivo de dados na caixa de diálogo Create Datafile (Criar Arquivo de Dados) e clique em OK. g Clique em Create. h Repita as etapas acima para todos os tablespaces. ..................................................................................................................................................... D-20 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 375.
    Soluções do Exercício8 ..................................................................................................................................................... 2 Aloque mais 500 KB ao tablespace DATA02 e verifique o resultado. a Use o Storage Manager. b Expanda a pasta Tablespaces. c Expanda o arquivo de dados DATA02. d Expanda a pasta Datafiles (Arquivos de Dados). e Selecione o arquivo de dados. f Especifique 1500 KB como o tamanho do arquivo na página General. g Clique em Apply. h Verifique o tamanho na página General ou selecionando Datafiles. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-21
  • 376.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 3 Desloque o tablespace INDX01 e mova-o para o DISK6. a Use o Storage Manager. b Expanda a pasta Tablespaces. c Selecione o tablespace INDX01. Selecione Tablespace —> Take Offline (Colocar Off-line) —> Normal no menu do botão direito do mouse e clique em Yes na caixa de diálogo. d Confirme na página General se o tablespace está off-line. e Estabeleça login no servidor e execute: $mv $HOME/DATA/DISK3/indx01.dbf $HOME/DATA/DISK6/ indx01.dbf f Expanda Datafiles. g Selecione o arquivo que pertence ao tablespace INDX01. h Altere o nome na página General. i Clique em Apply. j Expanda Tablespaces. k Selecione o tablespace INDX01. l Selecione Object —> Place Online (Colocar On-line). m Clique em Yes na caixa de diálogo Oracle Storage Manager. ..................................................................................................................................................... D-22 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 377.
    Soluções do Exercício8 ..................................................................................................................................................... 4 Coloque o tablespace RONLY no modo somente para leitura depois de criar uma tabela nesse tablespace. Tente criar uma tabela adicional e eliminá-la. O que acontece e por quê? a Use o SQL*Plus Worksheet para executar o seguinte comando: b Use o Storage Manager. c Expanda a pasta Tablespaces e selecione o tablespace RONLY. d Selecione Tablespace —> Make Read-Only (Colocar como Somente para Leitura) no menu do botão direito do mouse. Clique em Yes na caixa de diálogo Oracle Storage Manager. e Verifique na página General se o tablespace está no modo somente para leitura. f Use o SQL*Plus Worksheet para executar os seguintes comandos: g Use o SQL*Plus Worksheet para eliminar a tabela t1; ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-23
  • 378.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 5 Elimine o tablespace RONLY e verifique-o. Dica – Execute DROP TABLESPACE... para remover o tablespace. – Delete os arquivos do sistema operacional. – Consulte a view de desempenho dinâmica V$TABLESPACE para verificar o resultado. a Use o Storage Manager. b Expanda a pasta Tablespaces. c Selecione o tablespace RONLY. d Selecione Object —> Remove. e Estabeleça login no servidor e execute o comando: $rm $HOME/DATA/DISK1/ronly.dbf 6 A solução é a mesma mencionada no Apêndice C. 7 A solução é a mesma mencionada no Apêndice C. 8 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-24 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 379.
    Soluções do Exercício9 ..................................................................................................................................................... Soluções do Exercício 9 Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica do Oracle Enterprise Manager. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. 5 A solução é a mesma mencionada no Apêndice C. 6 A solução é a mesma mencionada no Apêndice C. 7 A solução é a mesma mencionada no Apêndice C. 8 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-25
  • 380.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 10 Antes de iniciar este exercício, certifique-se de executar o script $HOME/LABS/ alt_sysrol.sql como o usuário SYSTEM. Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica do Oracle Enterprise Manager. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-26 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 381.
    Soluções do Exercício10 ..................................................................................................................................................... 2 Você executará uma aplicação de entrada de pedidos on-line no banco de dados. Os pedidos serão informados usando 15 estações clientes, que possuem um volume bastante alto de atividade pela manhã. Crie um número apropriado de segmentos de rollback no banco de dados. (Pressuponha um tamanho default para este exercício.) Dica: Usando uma proporção de um segmento de rollback para cada quatro transações, você precisará criar quatro segmentos de rollback. a Use o Storage Manager b Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Storage Manager. c Selecione a pasta Rollback Segments (Segmentos de Rollback) e selecione Create no menu do botão direito do mouse. d Especifique o nome do segmento de rollback e selecione RBS como o tablespace na página General. e Clique em Create. f É possível criar o segundo, o terceiro e o quarto segmentos de rollback selecionando o segmento de rollback R01 e escolhendo Create Like (Criar Como) no menu do botão direito do mouse. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-27
  • 382.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 3 A solução é a mesma mencionada no Apêndice C. 4 Verifique os segmentos de rollback no sistema que estão disponíveis para serem usados pelas transações. Dica: É possível obter essas informações na view DBA_ROLLBACK_SEGS. a Use o Storage Manager. b Selecione a pasta Rollback Segments. c Verifique todos os segmentos de rollback com o status ONLINE. ..................................................................................................................................................... D-28 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 383.
    Soluções do Exercício10 ..................................................................................................................................................... 5 A solução é a mesma mencionada no Apêndice C. 6 Chame o SQL*Plus Worksheet. Execute o script ins_emp.sql. Usando uma sessão separada, coloque como off-line o tablespace do segmento de rollback. Dica: O script inicia outra transação que insere uma linha na tabela EMP. Como ambas transações estão usando os segmentos de rollback nesse tablespace, você precisará seguir estas etapas: Primeiro coloque como off-line todos os segmentos de rollback no tablespace para impedir que novas transações usem os segmentos de rollback no tablespace. a Use o Storage Manager. b Expanda Rollback Segments. c Selecione pelo menos um segmento de rollback que não seja SYSTEM. Selecione Take Offline no menu do botão direito do mouse. d Responda à caixa de diálogo do Storage Manager clicando em Yes. Dica: Agora identifique as sessões que estão usando os segmentos de rollback no tablespace RBS. A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-29
  • 384.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Elimine as sessões que usam segmentos de rollback no tablespace. a Use o Instance Manager. b Expanda a pasta Sessions. Selecione a sessão que será eliminada. c Selecione Session —> Disconnect —> Immediate. ..................................................................................................................................................... D-30 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 385.
    Soluções do Exercício10 ..................................................................................................................................................... Dica: Coloque como off-line o tablespace RBS. a Use o Storage Manager. b Expanda a pasta Tablespaces. Selecione RBS. c Selecione Tablespace —> Take Offline —> Normal no menu do botão direito do mouse. d Clique em Yes na caixa de diálogo Oracle Storage Manager. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-31
  • 386.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 7 (a) Desative a instância, inicialize novamente e consulte as informações de segmento de rollback no dicionário de dados para verificar quantos segmentos de rollback estão on-line. a Use o Instance Manager para desativar e reiniciar a instância. b Use o Storage Manager para verificar o status de todos os segmentos de rollback. . (b) Verifique se todos os segmentos de rollback serão colocados como on-line sempre que o banco de dados for aberto e reinicie a instância. Certifique-se de que todos os segmentos de rollback possuam o status ONLINE. ..................................................................................................................................................... D-32 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 387.
    Soluções do Exercício10 ..................................................................................................................................................... Dica: É possível fazer isso usando o parâmetro de inicialização ROLLBACK_SEGMENTS. Além disso, é necessário colocar como on-line o tablespace RBS. a Use o Storage Manager para colocar como on-line o tablespace RBS. b Edite initdb01.ora e especifique: rollback_segments = (r01,r02,r03,r04) c Use o Instance Manager para desativar e abrir o banco de dados novamente. d Verifique se os segmentos de rollback estão on-line usando o Storage Manager. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-33
  • 388.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 8 Crie um novo segmento de rollback chamado DEMO_RBS no banco de dados com os parâmetros de armazenamento a seguir e verifique se é possível usá-lo. Isso é essencial para a próxima pergunta: INITIAL = 10K NEXT = 10K OPTIMAL =30K Dica: Para certificar-se de que possa usar o segmento de rollback, coloque-o como on-line depois de criá-lo. a Use o Storage Manager. b Selecione a pasta Rollback Segments. Selecione Create no menu do botão direito do mouse. c Especifique DEMO_RBS como o nome do segmento de rollback, escolha RBS como o tablespace e selecione Online na página General. d Especifique as definições de armazenamento na página Extents (Extensões). e Clique em Create. 9 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-34 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 389.
    Soluções do Exercício10 ..................................................................................................................................................... 10 Certifique-se de que o segmento de rollback DEMO_RBS foi reduzido para seu tamanho ideal. a Use o SQL*Plus Worksheet para executar a seguinte consulta: SQL> SELECT extents, rssize, optsize 2 FROM v$rollstat 3 WHERE usn = (SELECT usn 4 FROM v$rollname 5 WHERE name='DEMO_RBS'); a Use o Storage Manager. b Expanda as pastas Rollback Segments. c Selecione DEMO_RBS. Selecione Shrink (Compactar) no menu do botão direito do mouse. d Especifique Optimal Size (Tamanho Ideal) na caixa de diálogo Shrink Rollback (Compactar Rollback) e clique em OK. e Use o SQL*Plus Worksheet para executar a seguinte consulta: SQL> SELECT extents, rssize, optsize 2 FROM v$rollstat 3 WHERE usn = (SELECT usn 4 FROM v$rollname 5 WHERE name='DEMO_RBS'); 11 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-35
  • 390.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 12 Elimine o segmento de rollback DEMO_RBS. Dica: É necessário colocar como off-line o rollback antes de eliminá-lo. Talvez você precise verificar se nenhuma transação está usando o segmento de rollback. a Efetue rollback em todas as transações ativas. b Use o Storage Manager. c Expanda a pasta Rollback Segments. d Selecione DEMO_RBS. Selecione Take Offline. e Clique em Yes na caixa de diálogo do Storage Manager. f Selecione Object —> Remove. g Clique em Yes na caixa de diálogo do Storage Manager. ..................................................................................................................................................... D-36 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 391.
    Soluções do Exercício11 ..................................................................................................................................................... Soluções do Exercício 11 Usando o SQL*Plus Worksheet Os comandos para usar o SQL*Plus e o SQL*Plus Worksheet são idênticos. Consulte o Apêndice C para obter as respostas, a não ser que seja usada uma solução específica do Oracle Enterprise Manager. É possível iniciar o SQL*Plus Worksheet no menu do Windows NT seguindo estas etapas: Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-37
  • 392.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 1 É necessário criar as seguintes tabelas para um sistema de entrada de pedidos que você esteja implementando agora. As tabelas e as colunas são mostradas abaixo: Tabela Coluna Tipo de Dados e Tamanho CUSTOMERS CUST_CODE VARCHAR2(3) NAME VARCHAR2(50) REGION VARCHAR2(5) ORDERS ORD_ID NUMBER(3) ORD_DATE DATE CUST_CODE VARCHAR2(3) DATE_OF_DELY DATE Você foi informado de que, na tabela ORDERS, as linhas serão inseridas sem um valor para DATE_OF_DELY e a tabela será atualizada quando o pedido for feito. Estabeleça login como system/manager e crie as tabelas com a utilização de espaço em bloco apropriada e as definições de tablespace. Use o tablespace DATA01. Você pode usar as definições de armazenamento default. Use o Assistente de Tabela ao criar a tabela CUSTOMERS. Não use esse Assistente ao criar a tabela ORDERS. ..................................................................................................................................................... D-38 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 393.
    Soluções do Exercício11 ..................................................................................................................................................... Dica: É preciso definir PCTFREE com cuidado para a tabela ORDERS, já que as linhas nessa tabela provavelmente crescerão depois das atualizações. a Use o Schema Manager. b Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Schema Manager. c Estabeleça conexão diretamente com um banco de dados na caixa de diálogo de login. d Selecione Object —> Create no menu. e Selecione Table (Tabela) na lista. Clique em Create. f Especifique o nome da tabela, o esquema e o tablespace. Clique em Next (Próximo). g Especifique nomes de coluna, tipos de dados e tamanhos. Clique em Insert (Inserir) para adicionar uma nova coluna. Clique em Finish (Finalizar) quando tiver terminado. h Clique em OK. i Crie a tabela ORDERS. j Selecione Object —> Create no menu. k Selecione Table na lista. Desmarque a caixa Use Wizard (Usar Assistente). Clique em Create. l Especifique o nome da tabela, o esquema, o tablespace, os nomes de coluna, os tipos de dados e os tamanhos. m Selecione a guia Storage (Armazenamento). Especifique 35 no campo% Free (% Livre). Clique em Create. Clique em OK. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-39
  • 394.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. 5 A solução é a mesma mencionada no Apêndice C. 6 (a) Elimine a tabela BIG_EMP. a Use o Schema Manager. b Expanda a pasta Tables. c Expanda SYSTEM. d Selecione a tabela BIG_EMP. e Selecione Remove no menu do botão direito do mouse. Clique em Yes para remover a tabela. (b) A solução é a mesma mencionada no Apêndice C. Não use o Schema Manager, pois ele não copiará os dados para a nova tabela. 7 A solução é a mesma mencionada no Apêndice C. 8 A solução é a mesma mencionada no Apêndice C. 9 A solução é a mesma mencionada no Apêndice C. 10 A solução é a mesma mencionada no Apêndice C. 11 (a) Para a aplicação de entrada de pedidos, é necessário adicionar agora uma tabela PRODUCTS, que possui as seguintes colunas: Coluna Tipo de Dados e Tamanho PROD_CODE NUMBER(6) DESCRIPTION VARCHAR2(30) PRICE NUMBER(8,2) ..................................................................................................................................................... D-40 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 395.
    Soluções do Exercício11 ..................................................................................................................................................... Crie essa tabela no tablespace DATA02 usando tamanhos de extensão uniformes de 10 KB. a Use o Schema Manager. b Expanda a pasta Tables. c Selecione SYSTEM. d Selecione Create no menu do botão direito do mouse. e Especifique o nome da tabela, o nome do tablespace, os nomes de coluna, os tipos de dados e os tamanhos na página General. f Especifique tamanhos de extensão de 4 KB e PCTINCREASE=0 na página Storage. . g Clique em Create. h Clique em OK. (b) A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-41
  • 396.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 12 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 Você está pensando em criar índices nas colunas NAME e REGION da tabela CUSTOMERS. Que tipos de índice são apropriados para as duas colunas? Crie os índices, nomeie-os como CUST_NAME_IDX e CUST_REGION_IDX, respectivamente, e coloque-os nos tablespaces apropriados. ..................................................................................................................................................... D-42 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 397.
    Soluções do Exercício12 ..................................................................................................................................................... Dica: Um índice em árvore B é adequado para uma coluna com vários valores distintos e um índice de bitmap é adequado para colunas com apenas alguns valores distintos. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Schema Manager. b Conecte-se diretamente com um banco de dados na caixa de diálogo de login. c Expanda a pasta Tables. d Expanda SYSTEM. Selecione a tabela CUSTOMERS. e Selecione Create Index On (Criar Índice em) no menu do botão direito do mouse. f Especifique o nome do índice, o nome do tablespace e o nome da coluna na página General. g Especifique PCTFREE de 35 na página Storage. h Clique em Create. Clique em OK. i Repita as etapas de f a j, especificando Bitmap na página General para o índice de bitmap. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-43
  • 398.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. 5 (a) A solução é a mesma mencionada no Apêndice C. 6 (b) A solução é a mesma mencionada no Apêndice C. 7 (c) A solução é a mesma mencionada no Apêndice C. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX Dica: Use PCTINCREASE=0 para criar extensões de mesmo tamanho. Consulte o Apêndice C para consultar os segmentos. a Use o Schema Manager. b Expanda a pasta Tables. c Expanda SYSTEM. d Selecione NUMBERS. e Selecione Create Index On no menu do botão direito do mouse. f Especifique o nome do índice, o nome do tablespace e o nome da coluna na página General. g Especifique tamanhos de extensão e PCTINCREASE de 0 na página Storage. h Clique em Create. i Repita as etapas de 5 a 8 para o segundo índice. (d) Mais uma vez, usando tamanhos de extensão uniformes de 4 KB, crie os índices de bitmap NUMB_OE_IDX e NUMB_NO_IDX nas colunas ODD_EVEN e NO da tabela NUMBERS, respectivamente, e verifique os tamanhos totais dos índices. Índice Blocos NUMB_OE_IDX NUMB_NO_IDX ..................................................................................................................................................... D-44 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 399.
    Soluções do Exercício12 ..................................................................................................................................................... O que você pode concluir sobre a relação entre a cardinalidade e os tamanhos dos dois tipos de índices? Dica: É necessário eliminar os índices existentes antes de criar os novos índices. a Use o Schema Manager. b Expanda a pasta Indexes (Índices). c Expanda SYSTEM. d Selecione o índice a ser eliminado. e Selecione Remove no menu do botão direito do mouse. Clique em Yes na caixa de diálogo do Schema Manager. f Expanda a pasta Tables. g Expanda SYSTEM. h Selecione NUMBERS. i Selecione Create Index On no menu do botão direito do mouse. j Especifique o nome do índice, o nome do tablespace, o tipo de índice de bitmap e o nome da coluna na página General. k Especifique tamanhos de extensão e PCTINCREASE de 0 na página Storage. l Clique em Create. m Repita as etapas de 2 a 13 para o segundo índice. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-45
  • 400.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Agora execute novamente a consulta para verificar os tamanhos dos índices. De acordo com os resultados, é possível observar que um índice de bitmap é compacto para uma coluna de baixa cardinalidade, enquanto um índice em árvore B é compacto para uma coluna de alta cardinalidade. ..................................................................................................................................................... D-46 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 401.
    Soluções do Exercício13 ..................................................................................................................................................... Soluções do Exercício 13 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-47
  • 402.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 4 Ative a restrição exclusiva na tabela PRODUCTS. A operação foi bem-sucedida? Por que ou por que não? a Use o Schema Manager. b Expanda a pasta Tables. c Expanda SYSTEM. d Selecione PRODUCTS. e Marque Disable (Desativar) em PROD_UK na página Constraints (Restrições). f Clique em Apply. Não é possível ativar a restrição porque há linhas que a violam. 5 A solução é a mesma mencionada no Apêndice C. 6 A solução é a mesma mencionada no Apêndice C. 7 A solução é a mesma mencionada no Apêndice C. 8 A solução é a mesma mencionada no Apêndice C. 9 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-48 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 403.
    Soluções do Exercício14 ..................................................................................................................................................... Soluções do Exercício 14 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. Use a conta system para todas as perguntas deste laboratório. 1 A solução é a mesma mencionada no Apêndice C. 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 Examine os scripts ulcase1.sql, ulcase1.ctl, ulcase2.ctl e ulcase2.dat. Esses são alguns dos arquivos de exemplo do loader padrão fornecidos com o Oracle8i Enterprise Edition. Como o usuário system, execute as seguintes etapas para tentar duas execuções de carga e se familiarizar com o uso do SQL*Loader: (a) A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-49
  • 404.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... (b) Execute o SQL*Loader para carregar dados na tabela DEPT usando o arquivo de controle ulcase1.ctl. Examine o arquivo de log gerado e consulte a tabela DEPT para verificar os dados carregados. a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console. b Expanda o seu banco de dados de trabalho. c Expanda a pasta Schema Objects (Objetos de Esquema). d Expanda a pasta Tables. e Expanda SYSTEM. f Selecione DEPT e escolha Data Management (Gerenciamento de Dados) —> Load (Carregar) no menu do botão direito do mouse. g Especifique o nome do arquivo de controle como ulcase1.ctl na página Introductions (Introduções). h Clique em Finish nessa página e clique em OK na página Summary (Resumo). i Use o SQL*Plus Worksheet para consultar a tabela DEPT. Consulte o Apêndice C para obter informações sobre a consulta. ..................................................................................................................................................... D-50 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 405.
    Soluções do Exercício14 ..................................................................................................................................................... CExecute o SQL*Loader novamente para carregar dados na tabela EMP usando o arquivo de controle ulcase2.ctl. Observe que essa execução usa um arquivo de dados de entrada para carregar dados. Examine o arquivo de log gerado e consulte a tabela EMP para verificar os dados carregados. Siga as etapas mostradas em (b), mas use EMP em vez de DEPT e use ulcase2.ctl em vez de ulcase1.ctl. 5 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-51
  • 406.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 15 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack—> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 Você deseja reorganizar a tabela ITEMS2 usando os utilitários Importar e Exportar. Verifique o número e o tamanho das extensões na tabela ITEMS2 depois da importação. O que você pode inferir sobre o comportamento de exportar e importar no que se refere à alocação de espaço? Dica: Para isso, use a exportação no nível da tabela. ..................................................................................................................................................... D-52 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 407.
    Soluções do Exercício15 ..................................................................................................................................................... . a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console. b Expanda o seu banco de dados de trabalho. c Expanda a pasta Schema Objects. d Expanda a pasta Tables. e Expanda SYSTEM. f Selecione ITEMS2 e escolha Data Management —> export (exportar) no menu do botão direito do mouse. g Aceite o nome do arquivo de exportação default EXPDAT.DMP na página Export File (Exportar Arquivo) e clique em Next. h Selecione Table na página Export Type (Tipo de Exportação) e clique em Next. i Verifique se somente a tabela ITEMS2 é mostrada no painel Selected Tables (Tabelas Selecionadas) da página Table Selection (Seleção de Tabelas). j Clique em Finish na página Table Selection e clique em OK na página Summary. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-53
  • 408.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Elimine a tabela ITEMS2. ..................................................................................................................................................... D-54 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 409.
    Soluções do Exercício15 ..................................................................................................................................................... Dica: Importe a tabela ITEMS2. a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console. b Selecione o seu banco de dados de trabalho e escolha Data Management —> Import (Importar) no menu do botão direito do mouse. c Aceite o nome do arquivo de exportação default EXPDAT.DMP na página Import File (Importar Arquivo), clique em Next e aguarde o job ser concluído. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-55
  • 410.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Verifique o número e o tamanho das extensões na tabela ITEMS2 usando DBA_SEGMENTS. Por default, após a exportação e a importação, a tabela passa a ter uma extensão com tamanho igual ao tamanho original do segmento. 2 É necessário mover vários índices de um tablespace para outro. Este exercício usa um índice para mostrar como executar esse procedimento. (a) Crie um índice chamado ITEM_OID_IDX, no tablespace DATA01, na coluna ORD_ID da tabela ITEMS2. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Schema Manager. b Expanda Tables. c Expanda SYSTEM. d Selecione ITEMS2. e Selecione Object —> Create Index On. f Especifique o nome do índice, o nome do tablespace e o nome da coluna na página General. g Clique em Create. (b) Usando os utilitários Importar e Exportar, mova o índice para o tablespace INDX01. Dica: Execute as etapas a seguir. ..................................................................................................................................................... D-56 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 411.
    Soluções do Exercício15 ..................................................................................................................................................... Exporte a tabela com índices, mas sem linhas. a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console. b Expanda o seu banco de dados de trabalho. c Expanda a pasta Schema Objects. d Expanda a pasta Tables. e Expanda SYSTEM. f Selecione ITEMS2 e escolha Data Management —> Export no menu do botão direito do mouse. g Aceite o nome do arquivo de exportação default EXPDAT.DMP na página Export File e clique em Next. h Selecione Table na página Export Type e clique em Next. i Verifique se somente a tabela ITEMS2 é mostrada no painel Selected Tables da página Table Selection. Clique em Next. j Selecione somente Indexes on Tables (Índices em Tabelas) na página Associated Objects (Objetos Associados). k Clique em Finish na página Associated Objects e clique em OK na página Summary. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-57
  • 412.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Elimine o índice. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Schema Manager. b Expanda Tables. c Expanda SYSTEM. d Selecione ITEMS2. e Expanda Indexes. f Selecione ITEM_OID_IDX. g Selecione Object —> Remove. h Clique em Yes na caixa de diálogo do Schema Manager. Dica: Importe a partir da saída da exportação anterior e formule um script para criar o índice. a Selecione Programs —> Oracle - EMV2 Home —> Oracle Enterprise Management —> Enterprise Manager Console. b Selecione o seu banco de dados de trabalho e escolha Data Management —> Import no menu do botão direito do mouse. c Aceite o nome do arquivo de exportação default EXPDAT.DMP na página Import File e clique em Next. d Clique em <– na página Selections (Seleções) para especificar que é necessário importar todos os itens do arquivo de exportação. e Clique em Next nessa página e nas próximas duas páginas. f Na página Advanced Options (Opções Avançadas), especifique Increment Type (Tipo de Incremento) como none (nenhum), clique em Write Index- Creation command to file (Gravar comandos de criação de índice em um arquivo) e especifique um nome para Index File (Arquivo de Índice). g Clique em Finish nessa página e clique em OK na página Summary. Dica: Edite o arquivo de índice criado na etapa anterior de modo a alterar o tablespace para INDX0 e execute o script para criar o índice novamente. A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-58 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 413.
    Soluções do Exercício16 ..................................................................................................................................................... Soluções do Exercício 16 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-59
  • 414.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 2 Tente alterar a senha de usuário SCOTT para SCOTT. O que acontece? a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager. b Expanda a pasta Users (Usuários). c Selecione SCOTT. d Especifique a nova senha na página General. e Clique em Apply. 3 Certifique-se de que os seguintes itens se apliquem aos usuários aos quais o perfil DEFAULT foi atribuído: – Depois de duas tentativas de login, a conta deverá ser bloqueada. – A senha deverá expirar depois de 30 dias. – A mesma senha não deverá ser reutilizada por pelo menos um minuto. – A conta deverá ter um período de tolerância de cinco dias para alterar uma senha que expirou. Certifique-se de que os requisitos concedidos tenham sido implementados. Dica – Use o comando ALTER PROFILE para alterar os limites de perfil default. – Consulte a view de dicionário de dados DBA_PROFILES para verificar o resultado. ..................................................................................................................................................... D-60 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 415.
    Soluções do Exercício16 ..................................................................................................................................................... a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager. b Expanda a pasta Profiles (Perfis). c Selecione o perfil DEFAULT. d Selecione a guia Password (Senha). e Informe os novos limites e clique em Apply 4 A solução é a mesma mencionada no Apêndice C. 5 Verifique se é possível estabelecer conexão como SYSTEM novamente. Dica: Execute o comando ALTER USER para desbloquear a conta SYSTEM. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-61
  • 416.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... a Use o Security Manager. b Expanda Users. c Selecione SYSTEM. d Selecione Unlock (Desbloquear) no menu do botão direito do mouse. 6 Desative verificações de senha para o perfil DEFAULT. ..................................................................................................................................................... D-62 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 417.
    Soluções do Exercício16 ..................................................................................................................................................... Dica: Execute o comando ALTER PROFILE para desativar as verificações de senha. a Use o Security Manager. b Expanda Profiles. c Selecione DEFAULT. d Especifique NULL para Complexity function (função Complexidade) e UNLIMITED para todos os outros valores na página Password. e Clique em Apply. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-63
  • 418.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 17 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 Crie o usuário Bob com uma senha de ALONG. Certifique-se de que os objetos e os segmentos temporários criados por Bob não sejam criados no tablespace SYSTEM. Além disso, verifique se Bob pode estabelecer login e criar objetos de até um megabyte nos tablespaces DATA01 e INDX01. Se você não estiver usando o Oracle Enterprise Manager, execute o script bob.sql. ..................................................................................................................................................... D-64 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 419.
    Soluções do Exercício17 ..................................................................................................................................................... Dica: Verifique se o tablespace temporário está atribuído. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager. b Selecione a pasta Users e escolha Create no menu do botão direito do mouse. c Especifique o nome de usuário, a senha, o tablespace default e o tablespace temporário na página General. d Especifique cotas nos tablespaces na página Quotas (Cotas) selecionando o tablespace na lista de rolagem, clicando no botão Value (Valor) e definindo o valor. e Clique em Create. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-65
  • 420.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 2 (a) Crie um usuário Kay com uma senha de MARY. Certifique-se de que os objetos e os segmentos de classificação criados por Kay não sejam criados no tablespace SYSTEM. a Use o Security Manager. b Selecione User —> Create. c Especifique o nome de usuário, a senha, o tablespace default e o tablespace temporário na página General. d Clique em Create. (b) Como o usuário SYSTEM, copie a tabela ORDERS2 no esquema SYSTEM para a conta de Kay. Nomeie a nova tabela como ORDERS. Dica: Kay precisa de uma cota no seu tablespace default para que objetos possam ser criados no seu esquema. a Use o Security Manager. b Expanda Users. c Selecione KAY. d Especifique uma cota UNLIMITED em DATA01 na página Quotas. e Clique em Apply. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-66 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 421.
    Soluções do Exercício17 ..................................................................................................................................................... 5 (a) Como o usuário Bob, altere seu tablespace temporário. O que acontece? Por quê? a Use o Security Manager. b Selecione o seu banco de dados de trabalho e escolha Change Database Connection (Alterar Conexão de Banco de Dados) no menu do botão direito do mouse. c Informe o nome de usuário bob, a senha along e o nome de serviço db01. (b) A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-67
  • 422.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 6 Como system, remova a cota de Bob no seu tablespace default. a Use o Security Manager. b Expanda a pasta Users. c Selecione BOB. d Especifique uma cota de 0 em DATA01 na página Quotas. e Clique em Apply. 7 Remova a conta de Kay do banco de dados. ..................................................................................................................................................... D-68 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 423.
    Soluções do Exercício17 ..................................................................................................................................................... Dica: Como Kay possui tabelas, você precisa usar a opção CASCADE. a Use o Security Manager. b Expanda a pasta Users. c Selecione KAY. d Selecione Remove no menu do botão direito do mouse. e Clique em Yes na caixa de diálogo do Security Manager. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-69
  • 424.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 8 Bob esqueceu a sua senha. Atribua ao mesmo uma senha de OLINK e exija que ele altere a senha na próxima vez que estabelecer logon. a Use o Security Manager. b Expanda a pasta Users. c Selecione BOB. d Selecione Expire Password Now (Expirar Senha Agora) e informe a nova senha na página General. e Clique em Apply. ..................................................................................................................................................... D-70 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 425.
    Soluções do Exercício18 ..................................................................................................................................................... Soluções do Exercício 18 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 Como system, crie o usuário Kay, conceda a ele a capacidade de estabelecer logon no banco de dados e criar objetos no seu esquema. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-71
  • 426.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Dica: Kay precisa dos privilégios CREATE SESSION e CREATE TABLE. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager. b Selecione a pasta Users e escolha Create no menu do botão direito do mouse. c Especifique o nome de usuário, a senha, o tablespace default e o tablespace temporário na página General. d Especifique uma cota de 1MB em DATA01 na página Quotas. e Selecione System Privileges (Privilégios do Sistema) para escolher o Tipo de Privilégio e conceda o privilégio CREATE TABLE na página Roles/ Privileges (Atribuições/Privilégios). f Clique em Create. Clique em OK. 2 (a) A solução é a mesma mencionada no Apêndice C. (b) A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-72 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 427.
    Soluções do Exercício18 ..................................................................................................................................................... (c) Como system, conceda a Bob a capacidade de fazer seleções na tabela EMP de Kay. O que acontece e por quê? a Use o Security Manager. b Expanda a pasta Users. c Selecione o usuário BOB. d Na página Object Privileges (Privilégios de Objeto), expanda KAY, expanda TABLES e selecione EMP. e Escolha SELECT em Available Privileges (Privilégios Disponíveis) e pressione a tecla de seta para baixo. f Clique em Apply. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-73
  • 428.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... SYSTEM pode consultar a tabela de Kay usando o privilégio SELECT ANY TABLE, mas somente Kay ou qualquer outro usuário que recebeu o privilégio de Kay com GRANT OPTION pode conceder esse privilégio a outras pessoas. 3 A solução é a mesma mencionada no Apêndice C. 4 Crie o usuário Todd com a capacidade de estabelecer logon no banco de dados. a Use o Security Manager. b Selecione a pasta Users e escolha Create no menu do botão direito do mouse. c Especifique o nome de usuário, a senha, o tablespace default e o tablespace temporário na página General. d Clique em Create. 5 A solução é a mesma mencionada no Apêndice C. 6 (a) Permita a Kay criar tabelas em qualquer esquema. Como Kay, crie a tabela DEPT no esquema de Bob como uma cópia de KAY.DEPT. O que aconteceu e por quê? a Use o Security Manager. b Expanda a pasta Users. c Selecione KAY. d Na página Roles/Privileges, atribua o privilégio CREATE ANY TABLE. e Clique em Apply. ..................................................................................................................................................... D-74 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 429.
    Soluções do Exercício18 ..................................................................................................................................................... A cota de Bob em seu tablespace default foi removida no Exercício 17, pergunta 6. (b) A solução é a mesma mencionada no Apêndice C. 7 Conceda a Kay a capacidade de inicializar e desativar o banco de dados sem a capacidade de criar um novo banco de dados e verifique os resultados. Dica: Conceda a Kay o privilégio SYSOPER. a Use o Security Manager (conectado como SYSDBA). b Expanda a pasta Users. c Selecione KAY. d Na página Roles/Privileges, atribua o privilégio SYSOPER. e Clique em Apply. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-75
  • 430.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 19 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. ..................................................................................................................................................... D-76 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 431.
    Soluções do Exercício19 ..................................................................................................................................................... 1 Examine a view de dicionário de dados e liste os privilégios do sistema da atribuição RESOURCE. Dica: Essas informações estão disponíveis em DBA_SYS_PRIVS. a Selecione Programs —> Oracle - EMV2 Home —> DBA Management Pack —> Security Manager. b Expanda a pasta Roles (Atribuições). c Expanda RESOURCE. d Expand System Privileges Granted (Privilégios do Sistema Concedidos). ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-77
  • 432.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... 2 Crie uma atribuição chamada DEV que permite a um usuário criar uma tabela, criar uma view e fazer seleções na tabela EMP de Kay. a Use o Security Manager. b Selecione a pasta Roles e escolha Create no menu do botão direito do mouse. c Especifique o nome na página General. d Atribua CREATE TABLE, CREATE VIEW na página Roles/Privileges. e Clique em Create. f Consulte o Apêndice C de modo a obter informações sobre o uso do SQL*Plus Worksheet para concluir este exercício. ..................................................................................................................................................... D-78 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 433.
    Soluções do Exercício19 ..................................................................................................................................................... 3 (a) Designe as atribuições RESOURCE e DEV a Bob, mas permita somente que a atribuição RESOURCE seja ativada automaticamente quando ele estabelecer logon. Dica: Use o comando ALTER USER para especificar a atribuição default. a Use o Security Manager. b Expanda a pasta Users. c Selecione BOB. d Na página Roles/Privileges, designe as atribuições DEV e RESOURCE. e Em Granted (Concedidos) na mesma página, desmarque Default em DEV. f Clique em Apply. (b) Conceda a Bob a capacidade de ler todas as informações de dicionário de dados. Dica: Atribua SELECT_CATALOG_ROLE a Bob. a Use o Security Manager. b Expanda Users. c Selecione BOB. d Na página Roles/Privileges, designe a atribuição SELECT_CATALOG_ROLE, mas não a torne uma atribuição default. e Clique em Apply. 4 A solução é a mesma mencionada no Apêndice C. 5 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura D-79
  • 434.
    Apêndice D: Soluçõesdos Exercícios para o Oracle Enterprise Manager ..................................................................................................................................................... Soluções do Exercício 20 Etapa Um (N) Start —> Programs —> Oracle - EMV2 Home —> DBA Management Pack —> SQL Plus Worksheet. Etapa Dois Certifique-se de estabelecer conexão diretamente com um banco de dados. Informe o nome de usuário system, a senha manager, o nome de serviço do seu banco de dados de trabalho e clique em OK. 1 A solução é a mesma mencionada no Apêndice C. 2 A solução é a mesma mencionada no Apêndice C. 3 A solução é a mesma mencionada no Apêndice C. 4 A solução é a mesma mencionada no Apêndice C. ..................................................................................................................................................... D-80 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 435.
    E ................................ Teste de Certificação: Exemplos de Perguntas
  • 436.
    Apêndice E: Testede Certificação: Exemplos de Perguntas ..................................................................................................................................................... Programa Oracle Certified Professional (OCP): Oracle Certified Database Administrator Track O Programa OCP foi desenvolvido pela Oracle para reconhecer profissionais técnicos que demonstrem profundo conhecimento e prática necessários para oferecer total suporte aos principais produtos da Oracle, de acordo com um padrão de excelência estabelecido pela Oracle. Desempenho com Base em Credenciais Para tornar-se um Administrador de Banco de Dados Certificado Oracle, é preciso passar em quatro testes separados. Cada teste exigirá a aplicação de conhecimentos específicos obtidos durante o treinamento Oracle, e também experiência adquirida no trabalho. Trabalhando em um computador sem outros recursos, você terá até 1,5 hora para responder de 60 a 70 perguntas de múltipla escolha em cada prova. Como não há meios de você memorizar o que é preciso saber, somente os que possuem prática comprovada conseguirão passar no teste. Não é obrigatório fazer os cursos do departamento Oracle Education antes de concluir os testes de certificação para a sua função. No entanto, esse curso é uma importante preparação para o teste 2: Administração de Banco de Dados Oracle. Você Está Pronto? As perguntas do teste abaixo são semelhantes as do: • Teste 2: Administração de Banco de Dados Oracle • Teste 3: Backup e Recuperação do Oracle As respostas encontram-se no fim deste apêndice. ..................................................................................................................................................... E-2 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 437.
    Administração de Bancode Dados Oracle: Exemplo e Teste ..................................................................................................................................................... Administração de Banco de Dados Oracle: Exemplo e Teste 1 O banco de dados possui dois grupos de redo logs e cada grupo possui dois membros. Cada membro do grupo de redo logs on-line não-atual está corrompido. Como você pode reinicializar esses arquivos para começar a usá-los novamente? a Emita o comando ALTER DATABASE para limpar os arquivos corrompidos. b Emita o comando ALTER DATABASE para eliminar cada membro do sistema operacional e, em seguida, criá-los novamente. c Crie um terceiro grupo para poder eliminar o grupo corrompido. d O arquivo deve ser deletado no nível do sistema operacional e criado novamente com o mesmo nome. 2 É preciso alocar mais espaço para o tablespace USERS, mas o disco que contém os arquivos de dados está cheio. Você deseja colocar o tablespace off-line para que os arquivos associados possam ser movidos para outro disco. Os arquivos de dados não possuem erros e você precisa certificar-se de que ocorrerá um checkpoint quando o tablespace ficar off-line. No momento, diversos usuários possuem transações pendentes para o tablespace USERS. Que modo você deve usar para colocar o tablespace off-line? a IMMEDIATE (Imediato) b NORMAL c TEMPORARY (Temporário) 3 Você criou uma tabela e inseriu dados sem restrições ativadas. Você precisa ativar as restrições de tabela para garantir que nenhum dado inserido viole as restrições. Você sabe que a tabela já contém dados que violam as restrições, mas não pode atualizar esses dados agora. Que estado seria mais apropriado para as restrições de integridade? a Disabled (Desativado) b NOVALIDATE Ativado c VALIDATE Ativado d Você não pode adicionar uma restrição a uma tabela que contenha dados que violam a restrição. e Uma restrição não pode ser ativada se for aplicada apenas a novas transações. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura E-3
  • 438.
    Apêndice E: Testede Certificação: Exemplos de Perguntas ..................................................................................................................................................... 4 No momento, todos os usuários de bancos de dados são autenticados pelo servidor Oracle. Você deseja garantir que todos os usuários usem uma senha que contenha três caracteres seguidos de três números. Como configurar o servidor para restringir o formato de todas as senhas de usuários? a Você pode criar um perfil que restrinja o formato de senha e atribuí-lo a cada usuário. b Você deve alterar o parâmetro PASSWORD em init.ora para ativar o mecanismo de controle de senha. c Você deve ativar o mecanismo de controle de senha quando o usuário é criado. d Não é possível controlar o formato da senha de um usuário. 5 Na sua sessão atual, o parâmetro NLS_LANG está definido como GERMAN_GERMANY.WE8ISO8859P1. Você usará o SQL*Loader para exportar e importar diversas tabelas. Você deseja converter os dados e importá-los para um banco de dados com outro conjunto de caracteres. Como executar essa tarefa? a Defina o parâmetro NLS_LANG para a exportação. b Desative a instância e reinicie-a usando o conjunto de caracteres desejado antes de exportar os dados. c Os dados não podem ser convertidos. d Defina o parâmetro NLS_LANG para a importação. 6 Você está determinando o número de segmentos de rollback necessários para o ambiente OLTP. Todas as transações serão rápidas e você estimou que haverá pelo menos 16 transações simultâneas durante a utilização normal. Qual é o número recomendado de segmentos de rollback para esse ambiente? a 1 b 2 c 4 d 8 ..................................................................................................................................................... E-4 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 439.
    Exemplo de Testede Backup e Recuperação do Oracle ..................................................................................................................................................... Exemplo de Teste de Backup e Recuperação do Oracle 1 Você está criando um novo banco de dados Oracle8 e usará o Recovery Manager. Que estrutura de memória você deve criar explicitamente para usar com o Recovery Manager? a Buffer de log b Pool compartilhado c Cache de buffer de dados d Pool grande 2 O administrador do sistema avisou que ele alocou duas novas unidades de disco para o banco de dados PROD. O banco de dados está sendo arquivado, mas você está preocupado com a freqüência recente de falhas de mídia. Agora que você possui recursos de disco adicionais, qual parâmetro init.ora você pode definir para oferecer proteção extra contra a perda de arquivos de log arquivados devido a falhas de mídia? a LOG_ARCHIVE_MIN_SUCCEED_DEST b LOG_ARCHIVE_FORMAT c LOG_ARCHIVE_DUPLEX_DEST d LOG_ARCHIVE_DEST 3 Você é responsável por um banco de dados híbrido que contém grandes tablespaces, que são atualizados com pouca freqüência e usados apenas para geração de relatórios. Esse banco de dados também inclui tablespaces que contêm tabelas que fazem uso intenso da DML. Por que você deve considerar usar o Recovery Manager para manter as operações de backup e restauração para esse banco de dados? a Backups incrementais em nível de bloco podem ser executados, reduzindo o tempo de backup e recuperação. b Por default, os backups não serão executados para grandes tablespaces, o que reduz o tempo de backup. c As operações de restauração serão mais rápidas, porque os grandes tablespaces não precisarão ser recuperados. d Os backups on-line em nível de tabela podem ser executados, reduzindo o tempo de recuperação. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura E-5
  • 440.
    Apêndice E: Testede Certificação: Exemplos de Perguntas ..................................................................................................................................................... 4 Você está mantendo um catálogo de recuperação para o banco de dados PROD e em geral atualiza o conteúdo do catálogo toda sexta-feira à tarde. No entanto, a equipe de desenvolvimento criou um novo tablespace no início da semana. Para executar uma recuperação completa usando o Recovery Manager, o que você precisa fazer agora para atualizar o catálogo de recuperação para que ele reflita as alterações efetuadas no banco de dados? a Atualizar o catálogo de recuperação emitindo o comando REGISTER DATABASE. b Atualizar o catálogo de recuperação emitindo o comando RESYNC CATALOG. c Não há necessidade de qualquer ação; o catálogo de recuperação será atualizado automaticamente pelo Oracle8 quando a estrutura do banco de dados for alterada. d Atualizar o catálogo de recuperação emitindo o comando CATALOG DATAFILECOPY <name> TAG = <string> para o novo arquivo de dados associado ao novo tablespace. e Atualizar o catálogo de recuperação emitindo o comando RESET DATABASE. 5 Você decidiu usar o Recovery Manager para manter as operações de backup e restauração para o banco de dados PROD, que contém muitos arquivos de dados cujo tamanho é grande. Cite um dos benefícios de usar o Recovery Manager com esse banco de dados. a Imagens espelhadas de todos os arquivos de dados serão incluídas automaticamente no conjunto de backup. b Conjuntos de backup serão gravados diretamente na fita. c Conjuntos de backup serão compactados não incluindo os blocos vazios nos arquivos de dados. d Conjuntos de backup não incluirão arquivos de banco de dados não-essenciais. ..................................................................................................................................................... E-6 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 441.
    Exemplo de Testede Backup e Recuperação do Oracle ..................................................................................................................................................... 6 Você está executando um backup on-line do banco de dados PROD e ocorre uma falha de energia. Depois que o banco de dados é montado, você consulta V$BACKUP e determina que, dos cinco arquivos de dados para os quais está sendo efetuado o backup, o segundo ficou no modo de backup automático. Que ação deve ser executada para sincronizar os arquivos de dados para que você possa abrir o banco de dados para os usuários? a Coloque o tablespace que contém o arquivo de dados como off-line emitindo o comando ALTER TABLESPACE <name> OFFLINE. b Descongele o cabeçalho do Arquivo 2 emitindo o comando ALTER DATABASE DATAFILE 3 END BACKUP. c Desative o banco de dados e restaure-o a partir do backup off-line completo anterior. d Desative o banco de dados, reinicie-o e emita o comando RECOVER DATAFILE para recuperar o segundo arquivo de dados. e Determine o tablespace que contém o segundo arquivo e descongele o cabeçalho emitindo o comando ALTER TABLESPACE <name> END BACKUP. 7 O banco de dados PROD está "inativo" e você tenta solucionar o problema. Após investigação, você percebe que o grupo de redo logs atual está corrompido. O que você pode fazer para tornar o banco de dados operacional? a Desativar o banco de dados, recriar o grupo de redo logs e inicializar o banco de dados. b Limpar o arquivo de log atual emitindo o comando ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP #. c Desativar o banco de dados com o comando SHUTDOWN ABORT e, em seguida, reiniciá-lo. d Deletar o arquivo de log atual e emitir o comando RECOVER DATABASE UNTIL CANCEL, recuperando o banco de dados para o último arquivo de log arquivado. ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura E-7
  • 442.
    Apêndice E: Testede Certificação: Exemplos de Perguntas ..................................................................................................................................................... Respostas Administração de Banco de Dados Oracle: Exemplo de Teste 1 A 2 B 3 B 4 A 5 D 6 C Exemplo de Teste de Backup e Recuperação do Oracle 1 D 2 C 3 A 4 B 5 C 6 B 7 B ..................................................................................................................................................... E-8 Enterprise DBA Parte 1A: Administração e Arquitetura
  • 443.
    Inscrevendo-se em umTeste OCP ..................................................................................................................................................... Inscrevendo-se em um Teste OCP Os testes do Programa OCP são oferecidos nos Authorized Prometric Testing Centers em todo o mundo. Entre em contato com o Sylvan Prometric Regional Service Center de seu país para informar-se sobre qual Authorized Prometric Testing Center é mais conveniente para você e inscreva-se em um teste no controle de certificação apropriado. • Sylvan Sydney, Australia Regional Service Center +61.2.9414.3666 • Sylvan Paris, France Regional Service Center +33.1.4289.3122 • Sylvan Düsseldorf, Germany Regional Service Center +49.2159.9233.50 • Sylvan London, England Regional Service Center +44.181.607.9090 • Sylvan Latin America Regional Service Center +1.612.820.5200 • Sylvan North America Regional Service Center +1.800.891.3926 Para obter informações mais detalhadas sobre vagas relacionadas a funções OCP, entre em contato com o representante Oracle Education local. • Telefone das Centrais das Américas +1.650.506.7000 • Telefone das Centrais da Ásia/Pacífico/Índia +65.337.3797 • Telefone das Centrais da Europa/Oriente Médio/África +31.30.669.9000 • Telefone das Centrais do Japão +81.3.5213.6666 ..................................................................................................................................................... Enterprise DBA Parte 1A: Administração e Arquitetura E-9
  • 444.
    Apêndice E: Testede Certificação: Exemplos de Perguntas ..................................................................................................................................................... ..................................................................................................................................................... E-10 Enterprise DBA Parte 1A: Administração e Arquitetura