You are on page 1of 904

sobre os autores

John Watson (Oxford, Reino Unido) é um Oracle Master Certified Master, com muitas outras
acreditações Oracle.
Tecnologias para Ele trabalha para a Skillbuilders Corporation, ensinando e consultando por toda
Europa e América do Norte. Ele esteve com a Oracle Corporation há vários anos em Joanesburgo
parte
trabalhando para suporte interno e Oracle University. Ele fala regularmente no Oracle User Group
reuniões e escreveu vários livros sobre tecnologias Oracle. John tem 30 anos de experiência em TI
e primeiro encontrou o Oracle com a versão 5 do banco de dados, instalando-o em PCs IBM.

Ropeh Ramklass (Canadá) é um mestre certificado da Oracle com experiência em infraestrutura,


middleware e arquitetura de banco de dados. Ele trabalhou para o Oracle Global Support, Advanced
Serviços ao Cliente e Oracle University. Ele dirigiu uma consultoria de TI e é experiente com
sistema de infra-estrutura, desenvolvimento de software e integração de sistemas. Ele falou em
Oracle Users Group conferências e é o autor de vários livros de tecnologia.
numerosos
Bob Bryla (Wisconsin) é um Oracle 9 i , 10 g , 11 g e 12 c Professional Certificado com mais de 20
anos de experiência em design de banco de dados, desenvolvimento de aplicativos de banco de
dados, treinamento
administração de banco
e Oracle
de dados. Ele é o principal Oracle DBA e engenheiro de sistemas da Epic
em Verona, Em seu tempo livre, ele é autor de diversos livros do Oracle DBA, como Oracle
Wisconsin.
12 c: A Referência Completa e o Banco de Dados Oracle 12 c Manual do DBA . Além disso, ele tem
Database
Criou vários guias de estudo de certificação para Oracle Database 11 g e 12 c . Ele também foi
para assistir a filmes de ficção científica e mergulhar em videografia em seu tempo livre.
conhecido
Copyright © 2015 de McGraw-Hill Education (editor). Todos os direitos reservados. Exceto quando
permitido
nos termos da Lei de Direitos Autorais dos Estados Unidos de 1976, nenhuma parte desta publicação
pode ser reproduzida
distribuídos de qualquer
ou forma ou por qualquer meio, ou armazenados em um banco de dados ou
sistema de escrita
permissão recuperação,
do editor,
semcom
o anterior
a exceção de que as listas de programas podem ser inseridas,
armazenado e executado em um sistema de computador, mas eles não podem ser reproduzidas para
publicação.
ISBN: 978-0-07-182807-9
MHID: 0-07-182807-9
O material neste eBook também aparece na versão impressa deste título: ISBN: 978-0-07-182808-6,
MHID: 0-07-182808-7.
conversão eBook por codeMantra
versão 1.0
Todas as marcas comerciais são marcas comerciais de seus respectivos proprietários. Em vez de
colocar
cada ocorrência
um símbolo
de um
de nome
marcaderegistrada
marca registrada,
depois usamos nomes de maneira editorial somente, e em
do titular da marca, sem intenção de violação da marca registrada. Onde tais designações
benefício
aparecem neste livro, eles foram impressos com tampas iniciais.
McGraw-Hill Education eBooks estão disponíveis em descontos especiais quantidade para usar
como prémios
vendas de promoções
e ou para uso em programas de treinamento corporativo. Para entrar em contato
com
na página Fale conoscovisite
um representante, na www.mhprofessional.com .
Informação foi obtida por Editor de fontes consideradas confiáveis. No entanto, devido
da possibilidade de erro humano ou mecânico por nossas fontes, editor, ou outros, Publisher faz
não garante a precisão, adequação ou integridade de qualquer informação incluída neste trabalho e
não é responsável por quaisquer erros ou omissões ou os resultados obtidos com o uso de tais
informações.
Oracle é uma marca registrada da Oracle Corporation e / ou suas afiliadas. Todas as outras marcas
comerciais
de propriedade
são de seus respectivos proprietários, e McGraw-Hill Education não faz nenhuma
reivindicação
pela menção dedeprodutos
propriedade
que contêm estas marcas.
Tela exibe de programas de software da Oracle com copyright foram aqui reproduzido com a
permissão da Oracle Corporation e / ou suas afiliadas.
A Oracle Corporation não faz quaisquer representações ou garantias quanto à exatidão, adequação,
integralidade das informações contidas neste trabalho, e não é responsável por quaisquer erros ou
ou
omissões.
livros McGraw-Hill Education estão disponíveis em descontos especiais quantidade para usar como
prémios e de vendas, ou para uso em programas de treinamento corporativo. Para entrar em contato
promoções
com
as páginas
um representante,
em contato conosco
visite pelo www.mhprofessional.com .
TERMOS DE USO
Este é um trabalho com direitos autorais e McGraw-Hill Education e os seus licenciadores reservam
todos
o os direitos
trabalho. e
A utilização deste trabalho está sujeito a estes termos. Com excepção do permitido ao
1976
abrigoe da
o direito de armazenar
lei Copyright de e recuperar uma cópia do trabalho, você não pode descompilar,
engenharia reversa, reproduzir, modificar, criar trabalhos derivados com base, transmitir, distribuir,
desmontar,
disseminar, vender, publicar ou sublicenciar o trabalho ou qualquer parte dele sem McGraw-Hill
Education do

consentimento prévio. Você pode usar o trabalho para seu próprio uso não comercial e pessoal;
Qualquer
o trabalhooutro uso do proibido. Seu direito de usar o trabalho pode ser rescindido se você deixar
é estritamente
de cumprir
com estes termos.
O TRABALHO É FORNECIDO “COMO ESTÁ”. McGraw-Hill EDUCAÇÃO E SEUS
Não fazer nenhuma garantia OU GARANTIA QUANTO À PRECISÃO, ADEQUAÇÃO OU
LICENCIADOS
INTEGRIDADE DE OU resultados a serem obtidos de usar a obra,
Incluindo qualquer informação que pode ser acessado através do trabalho VIA
HYPERLINK OU DE OUTRA FORMA, E EXPRESSAMENTE REJEITAM QUALQUER
GARANTIA,
OU IMPLÍCITA, EXPRESSA
INCLUINDO, MAS NÃO SE LIMITANDO A GARANTIAS DE
COMERCIALIZAÇÃO OU ADEQUAÇÃO A UM DETERMINADO FIM. McGraw-Hill
e seus licenciadores não assegura ou garante que as funções contidas no trabalho vai atender às suas
Education
exigências ou que sua operação será ininterrupta ou livre de erros. Nem McGraw-Hill Education
nem seus licenciadores será responsabilizada por você ou qualquer outra pessoa por qualquer
imprecisão, erro ou omissão,
independentemente da causa, no trabalho ou por quaisquer danos resultantes. McGraw-Hill
Education
não é responsável
tem pelo conteúdo de qualquer informação acessada através do trabalho. sob nenhuma
circunstância a McGraw-Hill Education e / ou os seus licenciadores responsáveis por quaisquer
danos incidentais,
indiretos, especiais, punitiva, consequenciais ou semelhantes, que resultam da utilização ou
da utilizar
de incapacidade
o trabalho, mesmo que nenhum deles tenha sido avisada da possibilidade de tais danos.
limitação de responsabilidade é aplicável a qualquer reivindicação ou causar qualquer se tal
este
reclamação
surge ou causa
em contrato, dano ou outra forma.

Obrigado a Silvia, para tornar a vida vale a pena viver.


-John

Todo o meu amor para Ameetha, para uma viagem de uma vida.
Rupesh

As crianças e o cão e o resto da família ... Eu faço isso por você!


-Prumo
CONTEÚDO at a Glance

Parte I Introdução
Capítulo 1 Instalar o software Oracle Database
Capítulo 2 Criação de um banco de dados Oracle usando DBCA
Capítulo 3 Instalação Oracle Grid Infrastructure para um servidor autônomo
Capítulo 4 Usando o Oracle Restart

PARTE II SQL
Capítulo 5 DDL e objetos de esquema
Capítulo 6 DML e simultaneidade
Capítulo 7 Recuperação, Restringindo e classificando dados usando SQL
Capítulo 8 de Uma Única Linha e conversão Funções
Capítulo 9 Funções de Grupo
Capítulo 10 SQL junta
Capítulo 11 Subqueries e operadores de conjunto

PARTE III DBA1


Capítulo 12 Visão Geral Arquitetural do Oracle Database 12 c
Capítulo 13 Gerenciamento de Instância
Capítulo 14 do Oracle Networking
Capítulo 15 do Oracle Armazenamento
Capítulo 16 do Oracle Segurança
Capítulo 17 Movimentação e Dados Re-organização
Capítulo 18 A AWR e do Sistema de Alerta
Capítulo 19 Ajuste de Desempenho
Capítulo 20 O Resource Manager
Capítulo 21 O Scheduler

Parte IV DBA2
Capítulo 22 Configurando o banco de dados para backup e recuperação
Capítulo 23 Back Up com o RMAN
Capítulo 24 Restaurar e recuperar com o RMAN
Capítulo 25 Falhas Diagnosticar
Capítulo 26 Flashback
Capítulo 27 Duplicando um banco de dados
Capítulo 28 Encrypting, garantindo, Monitoramento e Ajuste RMAN Backups

Parte V Melhoramentos e multitenant


Capítulo 29 Atualização de Software Oracle Database e Dados Migrando
Capítulo 30 Atualizando um banco de dados Oracle
Capítulo 31 multitenant Container e Pluggable Database Architecture
Capítulo 32 Como criar e gerenciar multitenant recipiente e plugáveis Databases
Capítulo 33 Gerenciamento de armazenamento, segurança, disponibilidade e desempenho em um
CDB e PDBs
Apêndice sobre o download
Glossário
Índice
CONTEÚDO

Introdução

Parte I Introdução
Capítulo 1 Instalar o software Oracle Database
Plano para uma instalação Oracle Database Software
Plataformas suportadas
Obter o software Oracle Database
Contas de usuário
Espaço e Diretórios disco
Os cheques pré-requisito
Instalar o software Oracle Database
O Inventário SIM
O diálogo OUI: instalação interativa
Instalação silenciosa e arquivos de resposta
Variações Windows e Linux
Broca Two-Minute
Plano para uma instalação Oracle Database Software
Instalar o software Oracle Database
Auto teste
Respostas de auto-teste

Capítulo 2 Criação de um banco de dados Oracle usando DBCA


Criar um banco de dados usando o banco de dados Assistente de Configuração
A Instância, o banco de dados e o Dicionário de Dados
Usando o Assistente de Configuração de banco de dados para criar um banco de
dados
O diálogo DBCA
Gerar scripts de criação de banco de dados usando o DBCA
Gerando os Scripts
Os scripts de criação
O arquivo de inicialização de parâmetros
Gerenciar banco de dados Modelos de usando DBCA
Configurar opções de banco de dados usando DBCA
Broca Two-Minute
Criar um banco de dados usando o banco de dados Assistente de Configuração
Gerar scripts de criação de banco de dados usando o DBCA
Gerenciar banco de dados Modelos de usando DBCA
Configurar opções de banco de dados usando DBCA

Auto teste
Respostas de auto-teste

Capítulo 3 Instalação Oracle Grid Infrastructure para um servidor autônomo


Configurar armazenamento para Automatic Storage Management da Oracle
GI Arquitetura
ASM Arquitetura
Discos ASM
Criando discos ASM
Instalar Oracle Grid Infrastructure para um servidor autônomo
Broca Two-Minute
Configurar armazenamento para Automatic Storage Management da Oracle
Instalar Oracle Grid Infrastructure para um servidor autônomo
Auto teste
Respostas de auto-teste

Capítulo 4 Usando o Oracle Restart


Usar o Oracle Restart para gerenciar os componentes
Administrar os processos Oracle Restart
Administrando recursos registrados
Reinicie Capability
Broca Two-Minute
Usar o Oracle Restart para gerenciar os componentes
Auto teste
Respostas de auto-teste

PARTE II SQL
Capítulo 5 DDL e objetos de esquema
Use as ferramentas de cliente
SQL * Plus
SQL Developer
Categorizar banco de dados principal Objects
Tipos de objeto
Usuários e Esquemas
Esquema de nomeação de objetos
Namespaces de objetos
Listar os tipos de dados que estão disponíveis para Columns
Criar uma tabela simples
Criando tabelas com a coluna Especificações
Criando tabelas de Subqueries
Alterando Definições Tabela após a criação

Deixando cair e Truncating Tabelas


Criar e usar tabelas temporárias
índices
Por que os índices são necessários
Tipos de Índices
Criação e Utilização de Índices
Modificar e remover um índice
restrições
Os tipos de restrições
definindo Restrições
Estado restrição
Verificação restrição
Visualizações
Por que usar exibições em tudo?
Visualizações simples e complexas
CREATE VIEW, ALTER VIEW, e DROP VIEW
sinônimos
seqüências
criação de seqüências
usando Seqüências
Broca Two-Minute
Categorizar banco de dados principal Objects
Listar os tipos de dados que estão disponíveis para Columns
Criar uma tabela simples
Criar e usar tabelas temporárias
índices
restrições
Visualizações
sinônimos
seqüências
Auto teste
Respostas de auto-teste

Capítulo 6 DML e simultaneidade


Descreva Cada Manipulação de Dados Declaração Idioma
INSERIR
ATUALIZAR
EXCLUIR
TRUNCAR
MERGE
Falhas instrução DML
Transações de controle

Transações de banco de dados


Executar instruções SQL
Controle de Transação: COMMIT, ROLLBACK, SAVEPOINT, SELECT FOR
ATUALIZAR
Explique DML e Undo geração de dados
Monitorar e administrar Undo Dados
Condições de erro relacionadas à Desfazer
Parâmetros para a Gestão de Undo
Dimensionamento e Acompanhamento da tabela de undo
Undo temporária
Criando e Gerenciando Undo Tablespaces
Descrever a diferença entre Undo Dados e Dados Redo
Configurar Anular Retenção
Configurando Undo Retenção de Apoio às consultas de longa duração
Flashback Query e Anular Retenção
Descrever o mecanismo de bloqueio e gerenciamento de concorrência Dados
Bloqueios exclusivos compartilhada e
O Mecanismo Enqueue
Bloqueio Automático e Manual
Monitorar e resolver conflitos Trava
As causas da disputa do bloqueio
Detectando a disputa do bloqueio
Resolver contenção de bloqueio
Impasses: um caso especial
Broca Two-Minute
Descreva Cada Manipulação de Dados Declaração Idioma
Transações de controle
Explique DML e Undo geração de dados
Monitorar e administrar Undo Dados
Descrever a diferença entre Undo Dados e Dados Redo
Configurar Anular Retenção
Descrever o mecanismo de bloqueio e gerenciamento de concorrência Dados
Monitorar e resolver conflitos Trava
Auto teste
Respostas de auto-teste

Capítulo 7 Recuperação, Restringindo e classificando dados usando SQL


Explique as capacidades de instruções SQL SELECT
Apresentando a instrução SQL SELECT
A Tabela de Comando DESCREVER
Capacidades da instrução SELECT
Normalização de dados

Modelagem de dados
Entidades e Relações
Linhas e Tabelas
Criar os esquemas de demonstração
Usuários e Esquemas
O HR e OE Esquemas
Demonstração criação de esquema
Executar uma instrução SELECT Básica
Sintaxe da instrução SELECT Primitive
Regras são destinadas a ser Seguido
SQL Expressões e Operadores
NULL é nada
Limitar as linhas recuperadas por uma consulta
A cláusula WHERE
Operadores de comparação
Operadores booleanos
regras de precedência
Classificar as linhas recuperadas por uma consulta
A cláusula ORDER BY
A cláusula SQL Row-Limitando
Ampersand Substituição
Variáveis de substituição
Definir e Verificar
Broca Two-Minute
Explique as capacidades de instruções SQL SELECT
Executar uma instrução SELECT Básica
Limitar as linhas recuperadas por uma consulta
Classificar as linhas recuperadas por uma consulta
Ampersand Substituição
Auto teste
Respostas de auto-teste

Capítulo 8 de Uma Única Linha e conversão Funções


Descrever e usar Character, Número, e funções de data no SQL
Definir uma Função
Tipos de Funções
Usando funções Caixa de Conversão
Usando funções de manipulação de caracteres
Usando funções numéricas
Trabalho com datas
Descrevem vários tipos de funções de conversão disponíveis em SQL
Funções de conversão

Use as funções de conversão TO_CHAR, to_number, e TO_DATE


Usando as funções de conversão
Aplicar expressões condicionais em uma instrução SELECT
Funções aninhadas
Funções condicionais
Broca Two-Minute
Descrevem vários tipos de funções de conversão disponíveis em SQL
Use as funções de conversão TO_CHAR, to_number, e TO_DATE
Aplicar expressões condicionais em uma instrução SELECT
Auto teste
Respostas de auto-teste

Capítulo 9 Funções de Grupo


Descrever as funções de agrupamento
Definição de Funções de Grupo
Usando Funções de Grupo
Dados do Grupo Usando a Cláusula GROUP BY
Criação de grupos de dados
A cláusula GROUP BY
O agrupamento por várias colunas
Funções grupo aninhado
Incluir ou excluir linhas agrupadas usando a cláusula HAVING
Restringindo Resultados do Grupo
A cláusula HAVING
Broca Two-Minute
Descrever as funções de agrupamento
Dados do Grupo Usando a Cláusula GROUP BY
Incluir ou excluir linhas agrupadas usando a cláusula HAVING
Auto teste
Respostas de auto-teste

Capítulo 10 SQL junta


Escrever SELECTs para acessar dados de mais de uma tabela Usando Equijoins
e Nonequijoins
Tipos de junta
Unindo tabelas usando ANSI SQL Sintaxe
Qualificar nomes de coluna ambíguos
O NATURAL JOIN Cláusula
O Cadastrar-se usando Cláusula
O JOIN ON Cláusula
N-Way junta e Junte adicionais Condições
Nonequijoins

Junte-se a uma tabela a si mesmo usando um auto-Junte


Juntando-se uma tabela a ela mesma Utilizando o JOIN. . . ON Cláusula
Visualizar dados que não atende a condição de associação usando associações externas
Inner contra associações externas
Left Outer Joins
Outer direita junta
Outer completa junta
Gerar um produto cartesiano de duas ou mais tabelas
Criando produtos cartesianos Usando Cruz junta
Broca Two-Minute
Escrever SELECTs para acessar dados de mais de uma tabela Usando
Equijoins e Nonequijoins
Junte-se a uma tabela a si mesmo usando um auto-Junte
Visualizar dados que não atende a condição de associação Usando Junções
Externas
Gerar um produto cartesiano de duas ou mais tabelas
Auto teste
Respostas de auto-teste

Capítulo 11 Subqueries e operadores de conjunto


definir Subqueries
Descrever os tipos de problemas que os Subqueries pode resolver
O uso de um resultado Subquery Definir para comparação Purposes
Transformação estrela
Gerar uma tabela de qual escolher
Gerar valores para a projeção
Gerar linhas a serem passados para uma instrução DML
Descrever os tipos de Subqueries
Simples e múltiplas fileiras Subqueries
Subconsultas correlacionadas
Write Single-Row e Multiple-Row Subqueries
Usando o EXISTE Condição
Os resultados nulos em uma subconsulta
Descrever os operadores de conjunto
Conjuntos e diagramas de Venn
Definir princípios Operador Gerais
Use um operador de conjunto para combinar várias consultas em uma única consulta
O operador UNION ALL
O operador de união
O operador de intersecção
O operador MINUS
Exemplos
Controlar a ordemmais complexos
de linhas retornadas

Broca Two-Minute
definir Subqueries
Descrever os tipos de problemas que os Subqueries pode resolver
Descrever os tipos de Subqueries
Write Single-Row e Multiple-Row Subqueries
Descrever os operadores de conjunto
Use um operador de conjunto para combinar várias consultas em uma única
consulta
Controlar a ordem de linhas retornadas
Auto teste
Respostas de auto-teste

PARTE III DBA1


Capítulo 12 Visão Geral Arquitetural do Oracle Database 12 c
Listar os componentes arquitectónicos de um banco de dados Oracle
Arquitectura de bases de instância única
Sistemas de arquiteturas distribuídas
Explicar as estruturas de memória
O banco de dados Buffer Cache
O Log Buffer
A piscina comum
A grande piscina
A Piscina Java
A Piscina Streams
Descrevem os processos de fundo
SMON, o Monitor do Sistema
PMON, o Processo Monitorar
DBW n , o escritor de banco de dados
LGWR, o escritor Log
CKPT, o processo de verificação
MMON, o Monitor de Gerenciamento
MMNL, o gerenciamento luz do monitor
Mman, o Gerenciador de Memória
LREG, o Processo de Registro Listener
ARC n , o arquivador
RECO, o Processo Recoverer
Alguns outros processos em segundo plano
Explicar a relação entre as estruturas de armazenamento lógico e físico
As Estruturas de banco de dados físico
As Estruturas de banco de dados lógico
O Dicionário de Dados
Broca Two-Minute

Listar os componentes arquitectónicos de um banco de dados Oracle


Explicar as estruturas de memória
Descrevem os processos de fundo
Explicar a relação entre as estruturas de armazenamento lógico e físico
Auto teste
Respostas de auto-teste

Capítulo 13 Gerenciamento de Instância


Usar ferramentas de gerenciamento de banco de dados
Trabalhando com o SQL * Plus
Logon como um usuário normal ou privilegiadas
Trabalhando com Banco de Dados Expresso
Entenda Inicialização Parâmetro Arquivos
Estática e arquivos de parâmetros dinâmicos
Estáticos e dinâmicos Parâmetros e o arquivo de inicialização de parâmetros
Os parâmetros básicos
Alterar parâmetros
Iniciar e desligar uma instância Oracle Database
Iniciar o Listener de banco de dados
Banco de dados de inicialização e desligamento
Ver log de alerta e acesso dinâmico Desempenho Visualizações
O Registro de alertas
O Log DDL
O desempenho Dynamic Views
Broca Two-Minute
Usar ferramentas de gerenciamento de banco de dados
Entenda Inicialização Parâmetro Arquivos
Iniciar e desligar uma instância Oracle Database
Ver log de alerta e acesso dinâmico Desempenho Visualizações
Auto teste
Respostas de auto-teste

Capítulo 14 do Oracle Networking


Configurar Oracle Net Services
Oracle Net e Paradigma Cliente-Servidor
Estabelecendo uma sessão
Criando um Listener de banco de dados
Registro Dynamic Service
servidor compartilhado
Use ferramentas para configurar e gerenciar a Rede do Oracle
A Net Manager
O Assistente de Configuração Net

O Utilitário de Controle Listener


A variável TNS_ADMIN Ambiente
Configurar a rede do lado do cliente
Resolução Easy Connect Nome
Resolução Local Naming Nome
Naming Directory e Naming externa
Teste do Oracle Net Conectividade
Entenda banco de dados Pooling Residente Connection
Configurar a comunicação entre bancos de dados
Broca Two-Minute
Configurar Oracle Net Services
Use ferramentas para configurar e gerenciar a Rede do Oracle
Configurar a rede do lado do cliente
Entenda banco de dados Pooling Residente Connection
Configurar a comunicação entre bancos de dados
Auto teste
Respostas de auto-teste

Capítulo 15 do Oracle Armazenamento


Descrever o armazenamento de tabela de dados Row nos Blocos
O modelo do Oracle armazenamento de dados
Segmentos, extensões, bloqueia e linhas
Criar e gerenciar Tablespaces
criando Tablespaces
alterando Tablespaces
Dropping Tablespaces
Gestão de extensão
Gerenciamento do Espaço segmento
A Oracle Managed Files
Explicar como Oracle Database Server gerencia automaticamente o espaço
Segmento cessão de espaço
Gestão automática do espaço Segmento
Economizar espaço usando a compactação
Proativamente monitorar e gerenciar Tablespace Uso de Espaço
Use o Segment Advisor
Recuperar espaço desperdiçado a partir de tabelas e índices usando o Segmento Shrink
funcionalidade
Gerenciar Resumable Espaço Allocation
Broca Two-Minute
Descrever o armazenamento de tabela de dados Row nos Blocos
Criar e gerenciar Tablespaces
Explicar como Oracle Database Server gerencia automaticamente o espaço

Economizar espaço usando a compactação


Proativamente monitorar e gerenciar Tablespace Uso de Espaço
Use o Segment Advisor
Recuperar espaço desperdiçado a partir de tabelas e índices usando o Segmento
Shrink
funcionalidade
Gerenciar Resumable Espaço Allocation
Auto teste
Respostas de auto-teste

Capítulo 16 do Oracle Segurança


Criar e gerenciar contas de banco de dados de usuários
Atributos de Conta de Usuário
Métodos de autenticação
criando contas
Conceder e revogar privilégios
privilégios de sistema
Privilégios de objeto
Criar e gerenciar funções
Criando e Concedendo Roles
funções predefinidas
permitindo Roles
Análise Privilege
Criar e gerenciar perfis
Limites senha Perfil
Criação e atribuição de Perfis
Explique Responsabilidades DBA para a Segurança e Auditoria
Motivos para Auditoria
técnicas de auditoria
Habilitar Auditoria Database Standard e Unified Auditoria
Activar a auditoria Padrão
Habilitar Unificação de Auditoria
Broca Two-Minute
Criar e gerenciar contas de banco de dados de usuários
Conceder e revogar privilégios
Criar e gerenciar funções
Criar e gerenciar perfis
Explique Responsabilidades DBA para a Segurança e Auditoria
Habilitar Auditoria Database Standard e Unified Auditoria
Auto teste
Respostas de auto-teste

Capítulo 17 Movimentação e Dados Re-organização

Descreva maneiras de mover dados


Criar e usar objetos de diretório
Use SQL * Loader para carregar dados de um banco de dados não-Oracle
Usando o SQL * Loader
Modo SQL * Loader Expresso
Use tabelas externas para mover dados através de arquivos Platform-Independent
Explicar a arquitetura geral do Oracle Data Pump
Use Data Pump Export e Import para mover dados entre bancos de dados Oracle
capacidades
Usando o Data Pump com os utilitários de linha de comando
Tablespace Exportação e Importação
Use Bomba dados em um ambiente multitenant
Exportação de Não-CDB e Importação para PDB
Exportação e importação entre PDBs
Exportação de PDB e Importação para não-CDB
Completa Transportável Exportação e Importação
Transportar um banco de dados sobre a rede
Use o SQL * Loader em um ambiente multitenant
Broca Two-Minute
Descreva maneiras de mover dados
Criar e usar objetos de diretório
Use SQL * Loader para carregar dados de um banco de dados não-Oracle
Use tabelas externas para mover dados através de arquivos Platform-
Independent
Explicar a arquitetura geral do Oracle Data Pump
Use Data Pump Export e Import para mover dados entre bancos de dados
Oracle
Use Bomba dados em um ambiente multitenant
Use o SQL * Loader em um ambiente multitenant
Auto teste
Respostas de auto-teste

Capítulo 18 A AWR e do Sistema de Alerta


Gerenciar o Automatic Workload Repository
Gathering HORA Estatísticas
Gerenciando o AWR
Use o Automatic Database Diagnostic Monitor
Descrever e usar o Quadro Consultivo
Os Advisors memória
Os Advisors SQL
O Undo Advisor automático
O tempo médio para recuperar Advisor
A Data Recovery Advisor
O Segment Advisor

O Advisor SQL Repair


Definir Limites de alerta
Alerta Monitoramento de condições e Notificações
definindo limites
Utilize Tarefas Automatizadas
os Autotasks
Controlando as Autotasks
Broca Two-Minute
Gerenciar o Automatic Workload Repository
Use o Automatic Database Diagnostic Monitor
Descrever e usar o Quadro Consultivo
Definir Limites de alerta
Utilize Tarefas Automatizadas
Auto teste
Respostas de auto-teste

Capítulo 19 Ajuste de Desempenho


Use Enterprise Manager para monitorar o desempenho
A metodologia de ajuste de desempenho
Dados Performance Monitoring
O banco de dados Expresso Desempenho Páginas
Use Gerenciamento automático de memória
Gerenciamento de memória PGA
Gerenciamento de memória SGA
Gerenciamento automático de memória
Use o Memory Advisor para o tamanho da memória buffers
Gerenciar Optimizer Estatísticas
objeto Estatísticas
Como o otimizador utiliza estatísticas
Gathering Estatísticas manualmente
Use o SQL Tuning Advisor
As capacidades do SQL Tuning Advisor
A API SQL Tuning Advisor: O Pacote DBMS_SQLTUNE
Use o SQL Access Advisor para Tune Workload
As capacidades do SQL Access Advisor
Usando o Advisor acesso SQL com DBMS_ADVISOR
Broca Two-Minute
Use Enterprise Manager para monitorar o desempenho
Use Gerenciamento automático de memória
Use o Memory Advisor para o tamanho da memória buffers
Gerenciar Optimizer Estatísticas
Use o SQL Tuning Advisor

Use o SQL Access Advisor para Tune Workload


Auto teste
Respostas de auto-teste

Capítulo 20 O Resource Manager


Configurar o Database Resource Manager
A necessidade de Gestão de Recursos
O Gerente de Arquitetura de Recursos
Configuration Manager Resource
Acesso e criar planos de recursos
Método CPU
A utilização do Método do Ratio CPU
A sessão ativa Método Piscina
Limitando o grau de paralelismo
Controle de trabalhos de Tempo de Execução
Terminar sessões de tempo ocioso
Restringindo Geração de Undo Dados
Monitorar o Gerenciador de recursos
Broca Two-Minute
Configurar o Database Resource Manager
Acesso e criar planos de recursos
Monitorar o Gerenciador de recursos
Auto teste
Respostas de auto-teste

Capítulo 21 O Scheduler
Usar o Oracle Scheduler para simplificar as tarefas de gerenciamento
A Arquitetura Scheduler
Scheduler Objects
Use Chains trabalho para executar uma série de tarefas relacionadas
Use Scheduler Jobs em sistemas remotos
Use Scheduler recursos avançados para Priorizar Jobs
Usando classes de emprego
usando o Windows
Broca Two-Minute
Usar o Oracle Scheduler para simplificar as tarefas de gerenciamento
Use Chains trabalho para executar uma série de tarefas relacionadas
Use Scheduler Jobs em sistemas remotos
Use Scheduler recursos avançados para Priorizar Jobs
Auto teste
Respostas de auto-teste

Parte IV DBA2
Capítulo 22 Configurando o banco de dados para backup e recuperação
Possíveis Falhas e sua resolução
falha Categorias
A Oracle Backup and Recovery Solutions
Recuperação Instância ea impossibilidade de corrupção de dados
Postos de controle e o Redo Log
O Mecanismo Checkpointing
Proteger o Redo Log Files on-line
Modo Archivelog e os Processos Archiver
Backup e Recuperação: Configuração
Configurar a Área de Recuperação Rápida
Configurar o modo ARCHIVELOG
Broca Two-Minute
Possíveis Falhas e sua resolução
Postos de controle e o Redo Log
Configurar a Área de Recuperação Rápida
Configurar o modo ARCHIVELOG
Configurar arquivos de controle e Redo Log Files para recuperação
Auto teste
Respostas de auto-teste

Capítulo 23 Back Up com o RMAN


Teoria de backup e sintaxe básica
Conceitos de backup
RMAN sintaxe básica
Configurações RMAN persistentes
Alguns Recursos avançados do RMAN
O Catálogo de Recuperação
Criar e utilizar RMAN Scripts armazenados
backups incrementais
outros Recursos
Broca Two-Minute
Criar backups banco de dados consistente
Fazer backup de seu banco de dados sem desligá-lo
Criar backups incrementais
Automatizar backups de banco de dados
Gerenciar backups eo repositório RMAN
Usar vários tipos de backup do RMAN e Estratégias
Executar backups completos e incrementais
Use Técnicas para melhorar Backups

Auto teste
Respostas de auto-teste

Capítulo 24 Restaurar e recuperar com o RMAN


Executar recuperação completa e incompleta
Restauração e recuperação em uma página
Usando o RMAN restaurar e recuperar Comandos
Executar a recuperação completa de um Noncritical Datafile
Executar a recuperação completa de um arquivo de dados Critical
Executando Recuperação Incompleta Usando RMAN
Recuperando Usando Backups incremental Atualizado
Mudar para cópias de imagens para recuperação rápida
Executar recuperação para Spfiles, Controlfiles, e Online Redo Log Files
Restaurar o spfile da Cópia de Segurança Automática
Restaurar o CONTROLFILE
Recuperando-se de um grupo de Redo Log Perdido
Backup e restauração do arquivo de senha
Recuperação de uma perdida Tempfile
Broca Two-Minute
Executar recuperação completa e incompleta
Executar recuperação para Spfiles, Controlfiles, e Online Redo Log Files
Executar recuperação de tempfiles
Auto teste
Respostas de auto-teste

Capítulo 25 Falhas Diagnosticar


Descrever o fluxo de trabalho automático de diagnóstico
Compreender o ADR
Usando a ferramenta ADRCI
Compreender Alertas, problemas e incidentes
Usando o Monitor de Saúde
Lidar com bloco Corrupção
Bloquear a Corrupção
Usando Bloco de Mídia de Recuperação
Usando o Data Recovery Advisor
Broca Two-Minute
Descrever o fluxo de trabalho automático de diagnóstico
Lidar com bloco Corrupção
Auto teste
Respostas de auto-teste

Capítulo 26 Flashback

Descrever as tecnologias Flashback


Flashback Database
Flashback Query, Transação, e Tabela
Flashback Gota
Flashback Data Archive
Quando usar Flashback Tecnologia
Use Flashback para consultar dados
Básico Flashback Query
Flashback tabela de consulta
Versões Flashback Query
Flashback Transaction Query
Flashback e Dados Undo
Realizar operações de Flashback Table gota
A Implementação de Flashback Gota
Usando Flashback Gota
Gerenciando a Lixeira
Executar recuperação Tabela de Backups
Descrever e usar Flashback Data Archive
Execute Flashback Database
Arquitectura de bases Flashback
Configurando Flashback Database
Monitoramento Flashback Database
Usando Flashback Database
Broca Two-Minute
Descrever as tecnologias Flashback
Use Flashback para consultar dados
Realizar operações de Flashback Table
Executar recuperação Tabela de Backups
Descrever e usar Flashback Data Archive
Execute Flashback Database
Auto teste
Respostas de auto-teste

Capítulo 27 Duplicando um banco de dados


Descrever e usar transportáveis Tablespaces e Bases de Dados
Configurando transportáveis Tablespaces
transportar Tablespaces
Transportar um banco de dados
Duplicar um banco de dados
Usando um banco de dados duplicados
Duplicar a partir do banco de dados ativo
Duplicados de backup

Broca Two-Minute
Descrever e usar transportáveis Tablespaces e Bases de Dados
Escolha uma técnica para duplicar um banco de dados
Criar um banco de dados duplicados baseado-Backup
Duplicar um banco de dados
Auto teste
Respostas de auto-teste

Capítulo 28 Encrypting, garantindo, Monitoramento e Ajuste RMAN Backups


Criar backups criptografados-RMAN
Configurando e usando criptografia transparente
Usando Criptografia de senha
Usando criptografia Dual-Mode
Configurar e usar o Oracle Secure Backup
Instalando e Configurando o Oracle Secure Backup
Usando RMAN com o Oracle Secure Backup
Comandos diversos obtool
Monitorar e RMAN desempenho sintonizar
Monitoramento Sessões RMAN e Empregos
Desempenho RMAN sintonia
Identificar Backup e Restauração Passos
paralelização conjuntos de backup
Entendimento RMAN Multiplexing
Canais de sintonia RMAN
Ajustando o comando de backup
Broca Two-Minute
Criar backups criptografados-RMAN
Configurar e usar o Oracle Secure Backup
Desempenho RMAN Tune
Auto teste
Respostas de auto-teste

Parte V Melhoramentos e multitenant


Capítulo 29 Atualização de Software Oracle Database e Dados Migrando
Descrever métodos de atualização
Atualização de software
Atualização de banco de dados: DBUA ou Manual
Descrever os métodos de migração de dados
Descreva o processo de atualização
Migrar dados usando o Oracle Data Pump
Broca Two-Minute

Descrever métodos de atualização


Descrever os métodos de migração de dados
Descreva o processo de atualização
Migrar dados usando o Oracle Data Pump
Auto teste
Respostas de auto-teste

Capítulo 30 Atualizando um banco de dados Oracle


Descreva requisitos de atualização quando determinados recursos ou opções são
usadas
BasenodeOracle
dados
Oracle Label Security e Oracle Data Vault
Oracle Warehouse Builder
Use a ferramenta de informações de pré-atualização Antes de executar uma
atualização
Prepare o novo Oracle Home Antes de executar uma atualização
Atualizar o banco de dados para o Oracle Database 12 c usando a atualização do banco
de dados
Assistente
Executar uma atualização manual para o Oracle Database 12 c usando scripts e
ferramentas
Migrar para Unified Auditoria
Executar tarefas Postupgrade
Broca Two-Minute
Descreva requisitos de atualização quando determinados recursos ou opções são
usadas
oracle
emDatabase
Use a ferramenta de informações de pré-atualização Antes de executar uma
atualização
Prepare o novo Oracle Home Antes de executar uma atualização
Atualizar o banco de dados para o Oracle Database 12 c usando a atualização
do banco de dados
Assistente
Executar uma atualização manual para o Oracle Database 12 c usando scripts e
ferramentas
Migrar para Unified Auditoria
Executar tarefas pós-upgrade
Auto teste de auto-teste
Respostas

Capítulo 31 multitenant Container e Pluggable Database Architecture


Descrever a arquitetura de banco de dados multitenant Container
Conceitos multitenant
Os drivers para multitenant
O CDB eo Container Root
PDBs: Pluggable Recipientes
Explique Provisioning banco de dados Pluggable
Técnicas para Provisioning Pluggable Containers
As comunicações entre Containers
Broca Two-Minute

Descrever a arquitetura de banco de dados multitenant Container


Explique Provisioning banco de dados Pluggable
Auto teste
Respostas de auto-teste

Capítulo 32 Como criar e gerenciar multitenant recipiente e plugáveis Databases


Criar um banco de dados Container
Use DBCA para criar um CDB
Usando SQL * Plus para criar um CDB
Criar Containers plugáveis
Usando PDB $ SEED para criar um novo PDB
A clonagem de um APO para criar um novo PDB
Conecte um não-CDB em um CDB
Ligar uma APO desconectado num CDB
Desligue e soltar um APO
Migrar um banco de dados pré-12.1 Non-CDB para CDB
Estabelecer conexões com CDBs e PDBs
Compreender CDB e nomes de serviços PDB
Criação de Serviços de CDBs ou PDBs
Alternando conexões dentro de um CDB
Start Up e Desligar a CDB e PDBs Abrir e Fechar
Startup Instância CDB
Abrir e fechar um APO
CDB Instância Shutdown
Automatizando PDB Startup
Alterar PDB Estado
Avaliar o impacto de alterações de parâmetros Valor
Compreender o escopo dos parâmetros Alterações
Usando ALTER SYSTEM em um ambiente multitenant
Broca Two-Minute
Criar um banco de dados Container
Criar Containers plugáveis
Migrar um banco de dados pré-12.1 Non-CDB para CDB
Estabelecer conexões com CDBs e PDBs
Start Up e Desligar a CDB e PDBs Abrir e Fechar
Avaliar o impacto de alterações de parâmetros Valor
Auto teste
Respostas de auto-teste

Capítulo 33 Gerenciamento de armazenamento, segurança, disponibilidade e desempenho em um


CDB e PDBs Gerenciamento de espaço em um ambiente multitenant
tablespace Arquitetura
Usando CREATE TABLESPACE
Padrão Permanente e espaços de tabela temporários em um PDB
Gerenciar comuns e locais usuários, funções e privilégios
Usuários comuns e locais
Conceder privilégios Comumente e localmente
Gerenciar funções comuns e locais
Habilitar os usuários comuns para acessar dados em PDBs específicos
Auditoria na multitenant Ambiente
Backup multitenant e Recuperação
Fazer backup de um CDB e Individual PDBs
Restauração e recuperação
PDBs duplicado utilizando RMAN
Mulitenant Performance Monitoring and Tuning
Ajustando o Instância
Usando a memória Advisors
Gerenciar alocação de recursos entre PDBs e dentro de um APO
Usando Ações para gerir os recursos Inter-PDB
Criando e Recursos Modificando Planos gerente
Execute o Database Replay
Fonte de captura de banco de dados As cargas de trabalho
As cargas de trabalho de processos no sistema de destino
Reproduzir cargas de trabalho no alvo CDB: Repetição Consolidado
Broca Two-Minute
Gerenciar Permanente e espaços de tabela temporários em CDB e PDBs
Gerenciar usuários comuns e locais
Gerenciar privilégios comuns e locais
Gerenciar funções comuns e locais
Habilitar os usuários comuns para acessar dados em PDBs específicos
Executar backups de um CDB e PDBs
Recuperar APO da perda PDB Datafiles
Use Data Recovery Advisor
PDBs duplicado utilizando RMAN
Monitorar operações e desempenho em um CDB e PDBs
Gerenciar alocação de recursos entre PDBs e dentro de um APO
Execute o Database Replay
Auto teste
Respostas de auto-teste

Apêndice sobre o download


Requisitos de sistema
Instalando e executando total Tester
Sobre Total Tester

Suporte técnico

Glossário
Índice
INTRODUÇÃO

Há uma demanda cada vez maior para o pessoal com certificação da indústria de TI. Os benefícios
parasignificativos
são os empregadores(eles podem estar certos de que os funcionários têm um certo nível de
competência),
os e ostermos
indivíduos, em benefícios para
de demanda por seus serviços, são igualmente grandes. Muitos
empregadores
pessoal técnicoexigem
para ter certificações, e muitos compradores não vai comprar de empresas que não
profissionais certificados. As certificações da Oracle estão entre os mais procurados. Mas, além de
têm
recompensas
sentido do negócio,
em uma estudando para os exames é um processo agradável que pode permitir que você
para investigar
aspectos do banco de dados que você pode não costumo usar.
Sua iniciação no mundo maravilhoso de administração banco de dados Oracle está prestes a
podecomeçar.
estudar Você
isso para o resto de sua vida. Apreciar!

oracle Certification
Há várias faixas de certificação Oracle; este livro está preocupado com o banco de dados Oracle
Trilha de certificação Administração, especificamente para liberação 12 c do banco de dados.
Existem
de certificação
três níveis
DBA: Oracle Certified Associate (OCA), Oracle Certified Professional (OCP), e
Oracle Certified Master (OCM). A qualificação OCA é baseada em dois exames; o OCP
qualificação exige passar um terceiro exame. Você pode tomar estes exames a qualquer Pearson
VUE Center, em qualquer ordem. A qualificação OCM exige completar uma avaliação adicional de
doiscentro
um dias no de testes Oracle, envolvendo simulações de ambientes complexos e utilização de técnicas
avançadas
técnicas que não são abordados neste livro.
Para se preparar para os exames OCA / OCP, você pode assistir instrutor-conduzido Oracle
University
cursos de formação, você pode estudar Oracle University material de aprendizagem on-line, ou você
podetodos
Em ler este
os casos,
livro. você também deve consultar a Biblioteca de documentação do Oracle para obter
detalhes
livro serásobre
uma aadição
sintaxe.
valiosa
este para outros métodos de estudo, mas também é suficiente por si só. Tem
projetado com os objetivos do exame em mente, embora também inclui uma grande quantidade de
sido
informações
que será útil no curso de seu trabalho.
Estudar o material e experiência, e como você trabalha através de exercícios e exemplos de
perguntas
e tornar-se mais familiarizados com o ambiente Oracle, você vai perceber que há uma regra de ouro:

“Quando em dúvida, experimentá-lo.”

Em uma infinidade de casos, você vai achar que um teste simples que leva um par de minutos
horas
pode
de especulação
salvar e debruçado através de manuais. Se alguma coisa é sempre claro, construir um
exemplo e
ver o que acontece. Note-se que este livro foi desenvolvido usando o Windows e Linux, mas para
realizar o e suas posteriores investigações, você pode usar qualquer plataforma para o qual o banco
exercícios
de dados é
acessível.
O exame
Aqui estão algumas sugestões para abordar o exame.

Um OCA / exame OCP será composto por questões de múltipla escolha, mas é de múltipla
escolhaAs
esteróides. sobre
perguntas não são sempre “escolher a melhor resposta.” Às vezes as perguntas pedirá
você “escolher todas as respostas corretas” ou “colocar as respostas na ordem correta.” Algumas
perguntas
fácil, alguns
sãosão difíceis, e alguns são confusas. Você pode ser solicitado (por exemplo) para
“escolher ovocê
resposta”e melhor
vai pensar:‘Todas as respostas estão erradas!’ou talvez“Mas duas das respostas são
corrigir “Nesse caso, leia a questão com cuidado, e você pode, eventualmente, ver o que eles estão
as perguntas são muitas vezes precisamente formulada.
querendo!;
As perguntas são justas e não requerem feitos de memória. Você não (por exemplo) ser
um perguntado
nome da vista se é V $ DATAFILE ou V $ data_file. Mas você pode ser perguntado se V $
DATAFILE ou
DBA_DATA_FILES é visível quando o banco de dados está no modo de montagem. Fair o
suficiente:
se uma vista você
é preenchida
deve saberdo exemplo, a partir do controlfile, ou do dicionário de dados; você
deve saber qual destas estruturas está disponível no modo de montagem. Esta não é uma questão de
éortografia;
algo que você
isto pode trabalhar para fora.
A técnica de exame que você deve seguir é passar por todas as perguntas o mais rápido possível,
respondendo as que você conhece e marcação aqueles que você não (há uma opção para fazer isso).
Esse primeiroirá levá-lo a metade do tempo. Em seguida, passar o resto do tempo passando por cima
run-through
das perguntas
marcado, novamente
que você
e novamente. No final, ainda pode haver algumas perguntas onde você não tem
idéia. Dentro
Nesses casos, apenas adivinhar-não há deduções para erros. O erro que você não deve fazer é tentar
fazer as perguntas em ordem, porque você vai ficar sem tempo. E pode ter havido algumas fáceis
perguntas no final que você nunca olhou.
Todos os detalhes de como reservar um exame está disponível no site da Oracle University,
http://education.oracle.com/certification .

Conhecimento pré-requisito e Meio Ambiente


Este livro foi desenvolvido usando o Windows e Linux, a partir do qual vêm todos os exemplos.
Para levar a cabo
os exercícios e as novas investigações, você pode usar qualquer plataforma na qual o banco de dados
pode ser instalado. Note que você não pode instalar o Oracle em qualquer sistema operacional de 32
Oracle
bits. Nãosobre
desligou fique se
muito
sua plataforma é suportado. Por exemplo, a Oracle não suporta o banco de dados
qualquer edição “casa” do Windows ou no CentOS Linux, mas estes devem trabalhar para fins de
aprendizagem,
problema. não
Claramente, você deve estar familiarizado com qualquer interface de linha de comando e
seu ferramentas de administração
ambiente oferece. gráficasusa Linux em sala de aula, e algumas questões do exame
Oracle University
ter um Linux sentir a eles, por isso, se possível, tentar fazer pelo menos alguma preparação em uma
fazer
máquina Linux.
Os lançamentos do banco de dados usado para o desenvolvimento deste livro foram 12.1.0.0
pode(uma
observar
versão
embeta,
alguns
comoscreenshots),
você 12.1.0.1 (a primeira versão de produção), e 12.1.0.2. Você
baixar e instalar qualquer que seja a última versão atualmente disponível para você passa a ser.
deve
Universidade valida os exames contra a primeira versão de produção. Quando uma nova versão
Oráculo
(talvez
12.2.0.1) é emitido, Oracle University revalidar todas as questões contra o novo lançamento e ajustar
ou remover quaisquer perguntas onde as mudanças no comportamento podem afetar a resposta.
Assim,
não importa
para fins
o quedelibertá-lo
exame, ele
usar, mas para efeitos práticos, você quer estar na mais recente.

Uma palavra sobre Exemplo de perguntas não


autorizadas (aka Cérebro
Lixões)
A revisão capítulo e exame de prática perguntas que vêm com este livro não são exame real do
questões; que seria ilegal. No entanto, eles cobrem o conhecimento que você deve ter. Não há
Oracle
ponto em memorizar as perguntas e respostas. Tratá-los apenas como um cheque de saber se você
agarrou o material. Alguns alunos gostam de passar por muitos exames de simulação (que você pode
tem
comprar
talvez ou de graça, embora a legalidade destes deve ser confirmado) repetidamente até que
baixar
tem uma pontuação perfeita. Nós acreditamos fortemente que este é técnica de preparação pobre. Ele
não prova
mais do quenada
isso, você pode passar por um exame simulado particular. O único valor desse material
questionar
érespostas as respostas,
que se você
erradas ou seja, Essa
estão errados. vocêétrabalha para
a maneira defora porque
abordar a resposta
todas supostamente
as questões neste livro.correta é
Se você
correta
arealmentee por
necessidade que
sente o
de fazer um exame de julgamento, porque não basta agendar a coisa real? Você nunca
asabe,
primeira
você vez.
pode passar

baixar
Para mais informações sobre o conteúdo digital, consulte o apêndice, “ sobre o download .”

objetivos Mapas
Aqui você vai encontrar um mapa de objetivos de cada um dos três exames. Os mapas foram
construídos
permitem que
para
você referência cruzada os objetivos do exame oficial com os objetivos como eles são
e coberto neste livro. Os objetivos são listados como apresentado pelo organismo de certificação
apresentados
com o de referência correspondente.
capítulo

exame 1Z0-061
exame 1Z0-062
exame 1Z0-063
PARTE I

Começando
Capítulo 1 Instalar o software Oracle Database
Capítulo 2 Criação de um banco de dados Oracle usando DBCA
Capítulo 3 Instalação Oracle Grid Infrastructure para um servidor autônomo
Capítulo 4 Usando o Oracle Restart
CAPÍTULO 1

Instalando o Oracle Database Software

Objetivos do exame
Neste capítulo, você vai aprender a
• Plano de 062.2.2.1 para uma instalação Oracle Database Software
• 062.2.4.1 instalar o software Oracle Database
O software de banco de dados Oracle está instalado com o Oracle Universal Installer (OUI). OUI é
produtos Oracle em seu próprio direito que é usado para gerenciar a instalação e manutenção de
uma
muitos outros
produtos. A instalação do software Oracle, na medida do possível, foram padronizados para todos
produtos em todas as plataformas, mas existem plataformas e produtos variações. Antes de instalar
qualquer
É essencial
coisa,
que você leia notas de lançamento do produto para a plataforma em causa. Este capítulo
através do processo de planejamento da instalação e, em seguida, instalar o Oracle Database 12 c
vai
com exemplos de Linux e Windows.
software,

Plano para uma instalação Oracle Database Software


O processo de instalação requer uma série de pré-requisitos, e principal entre eles são a
do software e uma máquina adequada. Uma vez que estes estão no lugar, a instalação real é
disponibilidade
simples e, dependendo do hardware, deve levar cerca de 15 minutos. Idealmente, os alunos
têm a sua própria instalação em seu próprio PC para que eles possam praticar tanto quanto desejado.
Essa é a descrito aqui.
ambiente

Plataformas suportadas
Historicamente, o banco de dados Oracle foi apoiado em uma extraordinariamente ampla gama de
que foi uma das razões para a preeminência do produto no software de gerenciamento de banco de
plataformas,
dados relacional
(RDBMS) mercado. Nos últimos anos, o número de plataformas considerada comercialmente viável
tem
diminuída, de modo a Oracle Corporation reduzida apoio em conformidade. Linux é sempre a
primeira
para a liberação.
plataforma
As plataformas mais comumente disponíveis para os estudantes são Linux e
Microsoft
assim que Windows,
estas são as plataformas mais comumente referenciados nos exames e neste guia.

Obter o software Oracle Database


Oracle Corporation fez com que o software disponível para download público, sem a necessidade de
comprar
licença. Noumentanto, essa licença pública é restrito. Você pode baixar e instalar o produto em sua
máquina própria apenas para fins de desenvolvimento de aplicações e de auto-aprendizagem. Isso
fica
o contrato
claro emde licença. Há também restrições legais sobre o download (ou posteriormente
transferindo para) determinados países. Além disso, normalmente, apenas a libertação de base está
disponível
obter manchaspublicamente.
de qualquerPara
tipo, é necessário ter um contrato de suporte. A libertação de base é
para fins de treinamento, embora não necessariamente para uso em produção.
adequada
As duas fontes comumente utilizados para download de software são o Oracle Technology
(OTN)Network
e Oracle Software Delivery Cloud. Para chegar ao site de download do OTN, ir para
www.oracle.com , navegar através do guia Downloads para Oracle Database, e selecione o mais
liberação disponível. Para usar o Oracle Software Delivery Cloud, ir para http://edelivery.oracle.com
recente
eselecionar o pacote de produto de banco de dados Oracle. Em qualquer local, é necessário fazer
logoncriar
(Ou em uma
uma nova
contaconta
do Oracle
Oracle) e, em seguida, aceitar o contrato de licença. O software está na
de arquivos zip, e quatro são necessários: dois arquivos para o software de banco de dados Oracle e
forma
dois para de
software a grade
infra-estrutura. Descompacte-los (um diretório para o software de banco de dados
Oracle e uma
diretório para segunda
a Infra-estrutura Grid), e você está pronto para ir.

Contas de usuário

Em qualquer versão do Unix ou Linux, não é possível instalar o software como usuário root. Isto é
necessário criar contas que será o dono do software. A melhor prática é criar uma conta que
será o dono do software de banco de dados e uma segunda conta que será o dono do software da
gradepermite
Isto de Infra-estrutura.
a separação das funções entre o domínio de administração do banco de dados e o
domínio administração. Para efeitos da educação, uma conta pode ser usado para ambas as funções.
sistema
Tradicionalmente, esta conta é nomeado Oracle e dado o grupo primário de oinstall. Um secundário
grupo será dba. Estes grupos devem ser criados antes de instalar e deve ser atribuído ao
conta Oracle.
No Windows, não é incomum para instalar software Oracle em uma conta com Administrador
privilégios. Embora esta é certamente ruim do ponto de vista de segurança e nunca deve ser feito em
sistema de produção, não vai causar um problema em um sistema de formação. O instalador irá criar
uma
grupos operacionais necessárias chamado ORA_DBA e atribuí-lo à conta da qual o instalador é
todos
corre.

Espaço e Diretórios disco


A instalação requer cerca de 5 GB para o banco de dados Oracle Home. Um Oracle Home é o local
de um produto da Oracle instalação-um conjunto de arquivos em uma estrutura de diretório. Note-se
que causa
por variações
da plataforma,
no tamanhodo tipo de sistema de arquivos e as opções selecionadas pode ser
substancial.
diretório pode
o estar em um sistema de arquivos local ou um sistema de arquivos em cluster, mas
deve ser isto
sistema, um “cozinhado” file de disco Automatic Storage Management (ASM) ou um dispositivo
é, não um grupo
bruto.
A estrutura de diretório recomendado é conhecido como Optimal Flexible Architecture (OFA).
OFAa éfacilitar o processo de organização de várias instalações de software. A idéia geral é que
destina
cada produto deve ser instalado em seu próprio Oracle Home, debaixo de uma Base de Dados
éOracle.
um diretório
A Baseque
de Dados
irá conter
do Oracle
um ou mais Casas da Oracle, bem como vários outros diretórios para
fins de administração e também as bases de dados reais. O diretório que contém o inventário OUI
existe fora da base de dados de Oracle, que faz sentido uma vez que deve ser independente de
qualquer outra
produtos.
A convenção de nomenclatura recomendadas da Oracle base é baseado em três variáveis:
/ Pm / s / u
E para cada Oracle Home, adicione um literal e mais variáveis:
/ Pm / s / u / produto / v / type_ [n]
Os arquivos que compõem cada banco de dados estão na base de dados Oracle, além de duas
variáveis:
/ Pm / s / u / q / d
Tabela 1-1 mostra as variáveis e valores sugeridos.

Tabela 1-1 A OMF Naming Convention

aqui estão alguns exemplos:

• Uma base de dados de Oracle of D: \ app \ oracle é uma indicação de que existem todos os
arquivos
em um da
diretório
Oracle-relacionados
chamado \ appna
e que
unidade
as instalações
D: foram feitas pela Oracle usuário do
Windows.
• Um Oracle Home do /u01/app/oracle/product/12.1.0/dbhome_1 sugere que a Base do Oracle
é / u01 / app / oracle e que este diretório contém a primeira instalação do 12 c liberação 1
software de banco de dados no computador.
• O caminho D: \ app \ oracle \ oradata \ orcl é o diretório sob o Oracle base de dados que
contém
de umos
orcl
arquivos
banco de dados chamado.
• O caminho / u01 / app / oraInventory é a localização dos arquivos de inventário Oui, ao lado
doBase.
Oráculo

Não é essencial para se conformar com a estrutura de diretórios OFA, mas OFA faz um banco de
vidadados
do administrador mais fácil. Muitos administradores de banco de dados (DBAs), e alguns
produtos,
OFA está no
assumir
lugar,que
o que significa que se desvia de OFA pode causar confusão.

Os cheques pré-requisito
O lançamento Notas de instalação para cada lista plataforma os pré-requisitos. Estes serão
geralmente(espaço
requisitos hardware em disco e memória de acesso aleatório), versões do sistema operacional, a
disponibilidade
certos utilitários,deconfigurações de segurança, limites de recursos do kernel, e níveis de patch. De um
modo geral,nível
instalações nestedo Windows são mais simples do que o Linux. Isso ocorre porque o Windows é um
rigidamente
meio ambientecontrolado
e OUI pode fazer muitas suposições. Da mesma forma, se a distribuição Linux é o
Enterprise Linux, é provável que uma instalação padrão irá cumprir todos os pré-requisitos. A Red
Oracle
SUSE, ou distribuição CentOS não pode conformar por padrão e pode, portanto, precisam de algum
Hat,
trabalhopode
Oracle antesser instalado.
Existem pré-requisitos para a execução OUI e mais pré-requisitos para produtos específicos. a
pré-requisitos
OUI são codificados na oraparam.ini arquivo e são básicos. Pesquisar este arquivo no
descompactado
Programas. O seguinte é de liberação 12.1.0.1.0 para Linux de 64 bits:

OUI irá se recusar a correr se não forem cumpridas estas condições. Depois, há pré-requisitos
realmente
para o está
produto
sendo instalado. Estes são codificados no arquivo cvu_prereq.xml e são verificados
porinstalação.
da OUI comoÉparte
possível ignorar falhas para atender os pré-requisitos e prosseguir com
instalação, mas se você fizer isso, não há nenhuma garantia a instalação vai realmente funcionar
corretamente.

DICA Muitas vezes o problema com as falhas pré-requisito não é que os produtos não vai funcionar;
é decidir
se importa. Por exemplo, no Linux, algumas das configurações de kernel e pacotes não são
necessário para uma instalação de nível de entrada. No entanto, pode ocorrer um problema com o
realmente
apoio.solicitação
uma Se você jádeseserviço
levantar
(um SR, que é passado para Serviços de Suporte Oracle através My
eOracle
seu sistema
Support)
não é compatível com os pré-requisitos, os analistas de suporte pode se recusar a
Portanto, se você tem que quebrar uma das regras para obter uma instalação completamente,
ajudá-lo.
certifique-se
possível depois.
de corrigi-lo assim

Instalar o software Oracle Database


OUI dá várias opções para a instalação. A instalação sugerido, discutidas a seguir, será adequado
para todos os estudos até o nível Oracle Certified Professional. O currículo do Oracle Certified
inclui RAC, a instalação de que não é coberto aqui. Uma opção é se a cadeia do
Master
instalação do software com a criação de um banco de dados. Esta opção não vai ser tomada aqui,
no entanto, porque a criação de um banco de dados é tratado como um tópico separado.

O Inventário SIM
OUI cria um inventário, que é um conjunto de Extensible Markup Language (XML) arquivos que
exatamente o que os produtos da Oracle foram instalados na máquina, com detalhes de onde o
gravam
Casas são. Para evitar este inventário de ser corrompidos, um mecanismo de bloqueio evita a
Oráculo
execução
OUI (ou o opatch patching rotina) simultaneamente em duas ou mais sessões. Sempre OUI ou
éopatch
executado, a primeira coisa que faz é localizar o inventário e verificar se ele já está bloqueado. o
localização do inventário e do grupo de sistema operacional que possui são armazenadas em um
arquivo de ponteiro
ponteiro.tem
o um nome e local específico da plataforma. No Linux, é
/etc/oracle/oraInst.loc,
Neste como em
exemplo, o que mostra que o inventário está localizado no diretório / app / oraInventory / U01:

No Solaris ou AIX, o arquivo ponteiro reside no diretório oracle / var / opt /. No Windows, o
localização de inventário é definido em uma chave de registro.
HKEY_LOCAL_MACHINE / SOFTWARE / ORACLE / inst_loc
OUI é escrito em Java, utilizando o JDK 1.5, que está incluído no produto. Isto significa que
o mesmo
OUI éem todas as plataformas, com exceção de certas variações triviais na interface do usuário
Java,
tais como se as janelas têm cantos quadrados ou arredondados. OUI pode ser instalado como uma
produto em sua própria Oracle Home, mas isso geralmente não é necessário porque ele é enviado
auto-contido
com cada
outro produto Oracle e pode ser iniciado a partir do CD de instalação do produto (ou DVD); ele irá
-se no Oracle Home juntamente com o produto. Existem diferentes versões do OUI, e se um
instalar
produto vem com uma versão anterior do que já está instalado na máquina, é geralmente uma boa
ideia (e pode de fato ser necessário) para instalar o produto usando a versão já instalada do
Oracle Home existente. Quando OUI solicita o local do arquivo products.xml, especifique o DVD
ou directório com o produto que você deseja instalar.

DICA Utilize sempre a versão mais recente da OUI que tem disponível. Pode haver problemas com
a atualização
inventário OUIdose você tentar reverter para versões anteriores depois de usar uma versão posterior.
Observe também
produtos (como oque
servidor
alguns
WebLogic) ainda não utilizam OUI e são instalados de forma
independente.
baixar a últimaVocê
OUI pode
do Oracle Technology Network.

O diálogo OUI: instalação interativa


Para iniciar OUI, executar o script shell runInstaller.sh (Linux) ou o programa setup.exe (Windows)
a raiz
partirdodediretório no qual o software foi descompactado. Para uma instalação interativa, uma gráfica
terminal deve estar disponível. No Windows, isso não é problema. Para Linux, isso significa um
terminal
algum tipo.X deSe você estiver conectado ao console através de um dos gerentes de janela padrão Linux
(Tais como o Gnome), OUI será executado imediatamente. Se você está se conectando remotamente,
X
você terádeque
método conexão
usar um
que permite a exibição de gráficos, como um desktop VNC ou um servidor X
Não há nada de especial sobre este; qualquer tutorial Linux ou usuário Linux experiente pode
Window.
explicar.
No entanto, este assunto está além do escopo de um tutorial Oracle.
O uso do diálogo OUI é detalhado no exercício, no final deste capítulo. Em resumo, aqui está
as informações solicitadas pelas 12 etapas do instalador no Linux (Windows é um pouco diferente):

1. Atualizações configurações de segurança Dê credenciais de login para My Oracle Support


(opcional).
2. Baixar atualizações de software Ativar downloads automáticos de CPUs ou UPAs
(opcional).
3. Selecione a Opção de Instalação Escolha se para encadear a instalação para criar ou
atualizar
base deumdados.
4. Grade Opções de instalação Crie uma instalação de única instância, RAC, ou RAC One
Nó.
5. Selecione um produto Idiomas Por padrão, apenas o Inglês é selecionado.

6. Selecione Database Edition Escolha Enterprise Edition, Standard Edition ou Standard


Edition
1.
7. Especifique Local de instalação Especifique os diretórios do Oracle Base e Oracle Home.
8. Grupos sistema operacional privilegiada nomear os grupos que irão gerenciar o Oráculo
Casa.
9. Realizar Pré-requisitos verificará Validar o ambiente.
10. Resumo Leia o resumo do diálogo.
11. Instalar Produto Ver o progresso.
12. Concluir Você concluiu com êxito o diálogo OUI.

Passo 9 pode falhar em alguns testes. Isso é improvável no Windows, mas no Linux (se você não
versão
estiver
do Linux
usandoOracle
uma validados, como OEL 5.8), você pode enfrentar uma série de questões.
estes envolvem ajustes de parâmetros do kernel e a disponibilidade de certos gestores de pacotes
Tipicamente,
RPM
(RPMs). Cada edição será marcada como “aviso” ou “crítica”. Ao clicar no Fix e verifique
botão irá gerar um script e pedir-lhe para executá-lo como root, o que irá corrigir muitos problemas
novamente
(Tais como os limites de kernel). No entanto, ele não pode corrigir todos eles. Portanto, quaisquer
“solucionáveis”
problemas
faltando RPMs
unfixable
críticos)
(taisdevem
como ser abordadas antes de prosseguir. Se não for possível corrigir os
problemas,
clicando no caixa de seleção Ignorar Tudo lhe permitirá prosseguir, mas sem garantia de que o
instalação será bem-sucedida.
Passo 11, no Linux, inclui uma solicitação para executar o root.sh script como o usuário root.
realiza
estedeterminadas
script tarefas que exigem privilégios de root, como a criação de arquivos em / etc e
modos de propriedade e de acesso em determinados arquivos no Oracle Home.
mudando

Instalação silenciosa e arquivos de resposta


Correndo OUI interativamente é bom para instalar um one-off. No entanto, se você estiver
instalandoou
máquinas emtalvez
múltiplos
a concepção de um procedimento repetível e automatizada, é necessário usar
Técnica: condução OUI com um arquivo de resposta. Um arquivo de resposta é lido por OUI e
outro
contém
todas asrespostas
questões para
colocadas pelo diálogo interativo. Ao usar um arquivo de resposta, normalmente
você vai querer
desativar todas as saídas gráfica. Isso permite que você para realizar instalações em sistemas onde
nenhuma gráfica
dispositivo de terminal está disponível, tais como servidores de lâmina sem consola ligada.
Criando um arquivo de resposta a partir do zero está além da capacidade da maioria dos DBAs
júnior.
arquivo de No entanto,
resposta uma é fornecido: o db_install.rsp arquivo no diretório / resposta / diretório
modelo
abaixo
do software
da raiz
de instalação. É bem documentado, com descrições de cada valor necessário. Mas
mesmo DBAs veteranos vão tentar evitar escrever um arquivo de resposta com a mão. E não há
necessidade
você pode gerar
de causa
um com uma corrida interativa da OUI. Lançar OUI e passar pelo diálogo. No
tela final você verá uma caixa de seleção ao lado da pergunta “Gerar arquivo de resposta?” Neste
ponto você
nomear um local para um arquivo de resposta gerado automaticamente com base no diálogo anterior
em seguida, cancelar a instalação.
Para executar uma instalação silenciosa mais tarde (talvez em uma máquina diferente), edite o
meio arquivo
ambiente
gerado
e, em
para
seguida,
corresponder
lançar OUI
à com a seguinte sintaxe (para Windows):

Você pode passar muitas outras opções de linha de comando para o instalador. Isto é como exibi-
los todos
em Linux:

Um interruptor particularmente útil é -ignoreSysPrereqs, que permitem uma silenciosa ou


proceder
instalação
mesmointerativa
que os cheques
para pré-requisito falhar.

Variações Windows e Linux


Discutindo os detalhes das variações plataforma está fora do âmbito do Oracle Certified Professional
(OCP) syllabus. No entanto, porque é possível que os alunos podem encontrar as diferenças confuso,
aqui está um resumo das principais diferenças:

• ID de usuário no Linux Um usuário do sistema operacional que será o dono do software


deve
e deve
ser precreated
ser um membro de grupos do sistema operacional a ser utilizado para o próprio Oracle
Home e para do banco de dados. Costuma-se citar o oráculo de usuário e os grupos oinstall e
administração
dba. Execute OUI como este usuário; você não pode executar o OUI como root.
• ID de usuário no Windows OUI deve ser executado como um usuário com privilégios de
solicita o usuário
administração, e que possui o Oracle Home. Se o usuário não existir, ele será criado.
• grupos de sistema operacional em Linux Pelo menos um grupo deve ser precreated, o
OSDBA
grupo. Você pode chamá-lo de qualquer coisa que você quiser, mas dba é o nome do grupo
habitual, oeoinstalador
executar usuário deve ser um membro deste grupo. Um segundo grupo, habitualmente
chamado
oinstall, deve ser o grupo primário da OUI usuário em execução.
• grupos do sistema operacional no Windows Os nomes são codificados e será criado por
OUI. O usuário nomeado será feito um membro desses grupos automaticamente.
• certificados de raiz no Linux No final da instalação, um shell script deve ser executado
como
do utilizador.
raiz Este script faz algumas alterações que necessitam de privilégios de root.
Executá-lo
O Windowsquando
não requerem
solicitado.
este passo porque o OUI deve-se ter sido executado como um
usuário com
direitos de administração.

Exercício 1-1: Instalar o software Oracle Database Neste exercício, você irá instalar um Oracle
Casa, mas você não vai criar um banco de dados neste momento.
Prepare o seu sistema de formação através da criação de diretórios apropriados e um usuário; em
sigaseguida,
o assistente.
lançar
OsOUI
passos
e e instruções são ligeiramente diferentes entre o Windows e Linux
diálogos, mas em geral, o processo é semelhante e auto-explicativa, com assistência sensível ao
disponível através do botão Ajuda. O seguinte é um exemplo do diálogo OUI para Windows,
contexto
seguido
por um diálogo a partir de uma instalação Linux. Claro, você deve ajustar o processo às suas
próprias
Você pode
circunstâncias.
usar estes dois exemplos para ajudá-lo na sua instalação.
A caixa de diálogo de instalação do Windows foi capturado executando o arquivo setup.exe OUI
Windows
em um8.064-bit
máquina. Pode ser necessário ajustar as respostas sugeridas ao seu ambiente.

1. Atualizações configurar a segurança Desmarque a I Wish caixa de seleção Atualizações de


Segurança
Deixar os
para
outros
receber.
campos em branco, clique em Avançar e, em seguida, clique em Sim
quando avisado sobre não fornecendo

um endereço de e-mail.
2. Faça o download Software Update selecione o botão Ignorar Software Updates e clique em
Próximo.
3. Selecione a Opção de Instalação Selecione o único botão Instalar Software de banco de
dados
clique
de rádio
em Avançar.
e, em seguida,
4. Classe Sistema Selecione o botão Class Server. Isso não tem nenhum significado técnico,
masnão garante que você vai, posteriormente, ver todas as opções possíveis. Clique em Avançar.
5. Grade opções de instalação Selecione o botão de instalação de banco de dados de instância
única
emeseguida, clique em Avançar.
6. Selecione Tipo de Instalação Selecione o botão de opção Instalação Avançada e clique em
Avançar.
7. Selecione um produto Idiomas Adicione quaisquer idiomas que você precisa e, em seguida,
clique em Avançar.
8. Selecione Database Edition Selecione o botão de opção Enterprise Edition e clique em
Avançar.
9. Especifique Oracle Home Usuário Digite o nome ea senha de qualquer um usuário
existente quea instalação ou um novo usuário a ser criado por OUI. Um nome de utilizador é
possuirá
usado comumente
Oracle (em letras minúsculas). Clique em Avançar.
10. Especificar Local de instalação Insira um diretório do Oracle Base, como C: \ app \ oracle,
e umalocalização de software, tais como C: \ app \ oracle \ product \ 12.1.0 \ dbhome_1. Clique em
Avançar. verificações de pré-requisito OUI irão realizar suas verificações. Corrigir
11. executar
quaisquer
12. Resumo problemas.
Um resumo da instalação será exibida. É possível fazer alterações
aqui ou para navegar de volta através do diálogo com o botão Voltar. Clique em Instalar para
continuar.
A caixa de diálogo de instalação do Linux foi capturado executando o arquivo OUI
Linux
runInstaller.sh
5.8 máquina.emPode
um ser
64-bit
necessário ajustar as respostas sugeridas ao seu ambiente.

1. Atualizações configurar a segurança Desmarque a I Wish caixa de seleção Atualizações de


Segurança
Deixar os
para
outros
receber.
campos em branco, clique em Avançar e, em seguida, clique em Sim
quando
um endereço
avisado
de sobre
e-mail.não fornecendo
2. Faça o download Software Update selecione o botão Ignorar Software Updates e clique em
Próximo.
3. Selecione a Opção de Instalação Selecione o único botão Instalar Software de banco de
dados
clique
de rádio
em Avançar.
e, em seguida,
4. Grade opções de instalação Selecione o botão de instalação de banco de dados de instância
única
emeseguida, clique em Avançar.
5. Selecione um produto Idiomas Adicione quaisquer idiomas que você precisa e, em seguida,
clique em Avançar.
6. Selecione Database Edition Selecione o botão de opção Enterprise Edition e clique em
Avançar.
7. Especifique Local de instalação Insira um diretório do Oracle base sobre a qual o usuário
Linux
todas
temas permissões, como / u01 / apporacle, e uma localização software dentro dele, como
/u01/app/oracle/product/12.1.0/dbhome_1. Clique em Avançar.

8. Grupos de Sistemas Operacionais privilegiadas Selecione um grupo de sistema


operacional
caixa paradebaixo.
cada drop
A lista será dependente da participação em grupo do usuário sob o qual
você
está executando a OUI. Selecionando dba, se disponível, é geralmente uma boa escolha.
Clique emPré-requisitos
9. Realizar Avançar. verificará OUI irá realizar suas verificações. Corrigir quaisquer
problemas.
10. Resumo Um resumo da instalação será exibida. É possível fazer alterações
aqui ou para navegar de volta através do diálogo com o botão Voltar. Clique em Instalar para
continuar.
11. Instalar Produto OUI copia o software para o Oracle Home, liga-lo, e corre vários
scripts de configuração.
12. Executar Scripts de configuração de uma janela pop-up (se certificar de que não está se
escondendo
outra janela!)
atrás irá pedir-lhe para executar um script shell como root. Executar este, padrões
aceitando
para todos os valores solicitado. Em seguida, clique em OK na janela pop-up. A instalação
está agora clique em Fechar para sair do instalador.
completo;

Broca Two-Minute
Plano para uma instalação Oracle Database Software
• Criar grupos de sistemas operacionais e usuários.
• Crie um diretório sob o qual a Base de Dados Oracle vai existir.
• Baixar a versão apropriada dos DVDs de instalação.

Instalar o software Oracle Database


• Lançamento OUI: setup.exe (Windows) ou runInstaller.sh (Linux).
• Siga o diálogo SIM.

Auto teste
1 . Qual afirmação melhor descreve a relação entre a Base de Dados Oracle e Oracle
Casa? (Escolha a melhor resposta.)
A. The Oracle base existe dentro do Oracle Home.
B. The Oracle base pode conter Oracle Homes para produtos diferentes.
C. Um a Oracle base é necessária para cada produto, mas versões do produto pode existir
em suas próprias casas de Oracle dentro de sua base de dados de Oráculo.
D. A Base do Oracle é criado quando você executar o script orainstRoot.sh, e que contém
umaponteiro para o Oracle Home.
2 . O que Optimal Flexible Architecture descrever? (Escolha a melhor resposta.)
A. A estrutura de diretório
B. sistemas de banco de dados distribuído
C. Uma arquitectura de processamento de múltiplas camadas
D. Tudo o que precede
3 . O variável de ambiente deve ser definido no Linux antes de executar o Oracle Universal
Installer para uma instalação interativa? (Escolha a melhor resposta.)
A. ORACLE_HOME
B. ORACLE_BASE
C. ORACLE_SID
D. EXIBIÇÃO
4 . Se a OUI detecta que um pré-requisito não foi cumprido, o que pode fazer? (Escolha o
melhor
responda.)
A. Você deve cancelar a instalação, corrigir o problema e lançar OUI novamente.
B. A instalação silenciosa falhará; uma instalação interativa irá continuar.
C. Instruir OUI para continuar (em seu próprio risco).
D. As opções vão depender de quão longe no OUI instalação é quando o problema é
detectou.
5 . Que tipo de dispositivos OUI pode instalar um Oracle Home para? (Escolha todos os que se
aplicam.)
A. sistemas de arquivos regulares
B. sistemas de arquivos em cluster
C. Dispositivos brutos
D. grupos de discos ASM
6 . Qual opção de linha de comando pode ser usado para impedir a OUI de parar quando pré-
requisito
testes falham? (Escolha a melhor resposta.)
A. -silent
B. -record
C. -responsefile
D. -ignoresysprereqs
7 . Quando é que um inventário OUI são criados? (Escolha a melhor resposta.)
A. Cada vez que um novo Oracle Home é criado
B. Toda vez que um novo Oráculo base é criado
C. Antes da primeira corrida da OUI
D. Durante a primeira execução da OUI

Respostas de auto-teste

1. B . O diretório do Oracle Base contém todos os Lares da Oracle, que pode ser qualquer
de quaisquer
versão produtos.
A , C , e D estão incorrectos. Um é incorrecta porque ele inverte a relação. C é
incorreto, pois não há nenhuma exigência para uma base separada para cada produto. D é
incorrecta
porque ele não entende o propósito do script orainstRoot.sh, que é criar a
arquivo oraInst.loc, para não criar o diretório do Oracle Base.
2. Um . A arquitetura flexível Optimal grandiosamente chamado é nada mais do que um
convenção de nomenclatura para estruturas de diretório.
B , C , e D estão incorrectos. Estas opções de resposta são incorretas porque eles vão
alémmuito
OFA.
3. D . Sem um conjunto DISPLAY, a OUI não será capaz de abrir todas as janelas.
A , B , e C são incorrectas. Estas opções de resposta são incorretas porque embora eles
podem antes da OUI é lançado, a OUI solicitará valores para eles.
ser definido
4. C . Talvez não é aconselhável, mas certamente você pode fazer isso.
A , B , e D são incorrectas. A está incorreta porque, embora possa ser uma boa idéia,
algonão
queévocê tem que fazer. B está incorreta porque a instalação interativa irá parar. D é
incorreto porque todos os pré-requisitos são verificados ao mesmo tempo.
5. A e B . A Oracle Home deve existir em um sistema de arquivos, mas pode ser local ou
cluster.
C e D são incorrectas. Dispositivos e dispositivos ASM Raw pode ser usado para
parabancos
um Oracle
de dados,
Home.mas não
6. D . O interruptor -ignoresysprereqs pára OUI de execução dos testes.
A , B , e C são incorrectas. A está incorreta porque esta mudança irá suprimir a geração
de e não a execução de testes. B está incorreta porque esta é a chave para gerar uma
janelas,
resposta
Arquivo. C está incorreta porque esta é a chave para ler um arquivo de resposta.
7. D . Se a OUI não consegue encontrar um inventário, ele irá criar um.
A , B , e C são incorrectas. A e B estão incorretas porque um inventário pode gerenciar
qualquer
número de casas em qualquer base. C é incorrecta porque o inventário é criado no final de
o processo, não o começo.
CAPÍTULO 2

Criação de um banco de dados Oracle


usando DBCA
Objetivos do exame
Neste capítulo, você vai aprender a
• 062.2.5.1 Criar um banco de dados usando o banco de dados Assistente de Configuração
(DBCA)
• 062.2.5.2 Gerar scripts de criação de banco de dados usando o DBCA
• 062.2.5.3 gerenciar banco de dados Modelos de usando DBCA
• Opções 062.2.5.4 Configure banco de dados usando DBCA
Este capítulo passa pela teoria e prática de criar um banco de dados através da mecânica de
criação usando tanto a interface gráfica do usuário (GUI) e da linha de comando. Este capítulo
descreve como criar modelos de banco de dados. No entanto, um objetivo que deve ser tratada com
também
imediatamente é desmistificar o processo: a criação de um banco de dados não é grande coisa. Além
disso,
não precisa
você realmente
se preocupar em acertar. Quase nada é fixo no momento de criação de banco de dados.
Certamente faz sentido pensar sobre como seu banco de dados será estruturada, a sua finalidade, e
isto
ambiente no momento da criação, mas com uma exceção: tudo pode ser mudado depois (embora
sua
algumas alterações podem ser estranho). Como regra geral, manter as coisas o mais simples possível
nesta fase.
Criar um banco de dados usando a configuração do
banco
Assistente
Criação de um banco de dados não é difícil. O processo pode ser rápido e simples: Pode demorar
menos deedez
minutos, um único comando de duas palavras vai fazê-lo. No entanto, existem alguns conceitos
que deveria
compreender antes de prosseguir com o processo de criação, ou seja, a instância, o banco de dados
dicionário de dados.
eo

A Instância, o banco de dados e o Dicionário de Dados


Um servidor Oracle é uma instância e um banco de dados; os dois são distintos, mas ligados. O
exemplo é de estruturas e processos de memória em sua memória de acesso aleatório (RAM) e no seu
composta
unidades centrais de processamento (CPUs). Sua existência é transitória; ele pode ser iniciado e
éinterrompido.
composto poro arquivos
banco denodados
disco; uma vez criado, ele persiste até que seja excluído. Criando uma
instância
nada maisédo que a construção das estruturas de memória e iniciar os processos. Criação de um
bancopela
feito de dados
instância
é como uma única operação de fora, e o exemplo pode, então, subsequentemente,
abrir
o e fechar
banco de dados muitas vezes. O banco de dados é inacessível sem a instância.
Dentro do banco de dados é um conjunto de tabelas e outros objetos chamados o dicionário de
dados .descreve
dicionário Os dadostodas as estruturas lógicas e físicas no banco de dados, incluindo todos os
que armazenar dados do usuário. O processo de criação do banco de dados envolve a criação o
segmentos
mínimo denecessárias
estruturas física para apoiar o dicionário de dados e, em seguida, criar o dicionário de dados
dentro deles.
Um exemplo é definido por um arquivo de parâmetro de instância. O arquivo de parâmetro
define
contém
(entrediretrizes
outras coisas)
que como a instância deve ser construído na memória, incluindo o tamanho
estruturas de memória e o comportamento dos processos em segundo plano. Após o exemplo foi
do
construído,
está eleem nenhum mount modo. Em nenhum modo de montagem, a instância existe mas não
a ser dito
se conectou
base de dados.a um
Na verdade, o banco de dados pode não ter sido criado neste momento.
Todos os parâmetros, tanto especificados pelo arquivo de parâmetros ou definir implicitamente,
o parâmetro
tem padrões,
DB_NAME.
exceto para
Este parâmetro nomes do banco de dados para que a instância irá se
Este nome também está embutido no controlfile. Um parâmetro, CONTROL_FILES, diz a instância
conectar.
a localização do controlfile. Este parâmetro define a conexão entre a instância eo
base de dados. Quando a instância lê o controlfile (o que vai encontrar pela leitura do
parâmetro CONTROL_FILES ou contando com o valor padrão), se há uma incompatibilidade no
banco deo dados
nomes, banco de dados não será montado. No modo de montagem, a instância se conectou com
sucesso à Se o controlfile está danificado ou inexistente, será impossível para montar o banco de
controlfile.
dados.

O controlfile é pequena, mas vital.


Dentro do controlfile são ponteiros para outros arquivos (os arquivos de log redo on-line e os
que arquivos
compõemdeodados)
resto do banco de dados. A montagem do banco de dados, a instância pode abrir o
banco de dados
localizando e abrir esses outros arquivos. Um banco de dados aberto é um banco de dados onde a
instância
abriu todos
tem
os arquivos de log redo online disponíveis e arquivos de dados. Também dentro do
controlfile
de arquivosédeumdados
mapeamento
de espaços de tabela. Isso permite que a instância identificar os arquivos de
dados que compõem
tablespace. No espaçoo desistema
tabela SYSTEM, ele vai encontrar o dicionário de dados. O dicionário de
dados permite que o
referências instância determinação de objectos referidos no código Structured Query Language
(SQL) paraem
segmentos o que residem e trabalham fora onde, fisicamente, os objetos são.
A criação de um servidor de banco de dados deve, portanto, envolver estes passos:
1. Criar a instância.
2. Crie o banco de dados.
3. Criar o dicionário de dados.
Na prática, porém, há uma quarta etapa.
4. Faça o banco de dados utilizável.

O dicionário de dados, tal como inicialmente criado com a base de dados, é totalmente funcional,
mas inutilizável.
capacidade para definir
Ele teme agerir os dados do usuário, mas não pode ser usado por seres humanos
normais,
estrutura é tambémsua
porque a obscuro. Antes de usuários (ou administradores de banco de dados) pode
realmente
de pontos de
usar
vista
o banco
devem deser
dados,
criados
um em
conjunto
cima do dicionário de dados que irá apresentá-lo em um ser
Formato. Além disso, muitos pacotes PL / SQL são necessárias para adicionar funcionalidade.
humano-compreensível
O dicionário de dados em si é criado pela execução de um conjunto de scripts SQL que existem
ORACLE_HOME
no / rdbms / admin. Estes são chamados pelo comando CREATE DATABASE.
O primeiro é sql.bsq, que em seguida, chama vários outros scripts. Esses scripts emitir uma série de
comandos
que criar todas as tabelas e outros objetos que compõem o dicionário de dados.
Os pontos de vista e outros objetos que fazem a base de dados utilizável são gerados com mais
scripts do
ORACLE_HOME / rdbms diretório e / admin ter um gato prefixo. Exemplos destes são catalog.sql
e catproc.sql, que deve sempre ser executado imediatamente após a criação do banco de dados. Há
outros scripts opcionais “gato” que permitirão que determinados recursos de alguns destes podem ser
muitos
executados
Tempo; outros
na criação
podem ser executados posteriormente para instalar os recursos em uma data posterior.

Usando o Assistente de Configuração de banco de dados para criar um banco de


dados
Estes são os passos a seguir para criar um banco de dados:

1. Crie um arquivo de parâmetro e (opcionalmente) um arquivo de senha.


2. Use o arquivo de parâmetros para construir uma instância na memória.
3. Edição o comando DATABASE CRIAR. Isso irá gerar, no mínimo, um controlfile,
dois arquivos de log redo on-line, um arquivo de dados cada para o sistema e os espaços de
tabela
um dicionário
SYSAUX, de dados.
e A sintaxe não permite muito mais a ser feito neste momento.
4. Executar scripts SQL para gerar as visualizações do dicionário de dados e os pacotes PL /
SQL fornecidos.

5. Executar scripts SQL para gerar o código que implementa Enterprise Manager banco de
dados
bemExpresso
como quaisquer opções (como Java) o banco de dados vai exigir.
6. Em sistemas Windows, há um passo adicional porque a Oracle é executado como um serviço
do A
Windows.
Oracle fornece um utilitário, oradim.exe, para ajudá-lo na criação deste serviço.

Estes passos podem ser executados de forma interativa a partir do SQL * Plus alerta ou através
Assistente
de umade ferramenta
Configuração
GUI,de
o banco de dados (DBCA). Alternativamente, você pode automatizar o
processo
scripts ouusando
DBCA com um arquivo de resposta.
Independentemente da plataforma que está sendo executado, a maneira mais fácil para criar um
DBCA.
banco Eledecria
dadosuméarquivo
atravésde parâmetros e um arquivo de senha e, em seguida, gera scripts que
vão começar
exemplo, criara o banco de dados e gerar o dicionário de dados e as visualizações do dicionário de
Alternativamente, você pode criar o arquivo de parâmetro e arquivo de senhas com a mão e, em
dados.
seguida,SQL
Sessão fazer* oPlus.
restoMuitos
de umadministradores de banco de dados (DBAs) combinam as duas técnicas:
DBCA para gerar os arquivos e scripts e, em seguida, olhar para eles e, talvez, editá-los antes de
Usam
executar
-los a partir do SQL * Plus.
Para iniciar DBCA no Windows, tomar o atalho no menu Iniciar. Este é um exemplo do
caminho de navegação: Iniciar | programas | A Oracle - OraDB12Home1 | Configuração e Migração
Ferramentas
Assistente de| Configuração de banco de dados.
Observe que o caminho exato vai variar dependendo do nome dado à Oracle Home no momento
Tempo.
da instalação
Como alternativa, executar o script dbca.bat de um prompt CMD. Após uma instalação
padrão,
será incluído
ele no seu caminho de busca do Windows.
Para iniciar DBCA no Linux, primeiro defina as variáveis de ambiente que devem sempre ser
Linux
definidos
sessão DBA:
para qualquer
DISPLAY, ORACLE_BASE, ORACLE_HOME e PATH. Aqui está um exemplo
de um script que vai fazer isso:

Note que a Base e Início variarão de acordo com as escolhas feitas no momento da instalação. as
também
variáveis
existem em um ambiente Windows, mas são geralmente definidas como variáveis de
registro estabelecidos
Universal Installer (OUI),
pela em
Oracle
vez de variáveis do shell. A variável de exibição deve ser definido
para o do servidor X. Para iniciar DBCA, executar o script shell dbca, que está localizado na
endereço
$ ORACLE_HOME / bin.

DICA Certifique-se de ter o diretório / bin $ ORACLE_HOME no início do seu caminho de busca
no caso quaisquer executáveis do Linux com o mesmo nome como executáveis Oracle. Um caso
existem
bem conhecido
ponto é rman, que
na é o nome de ambos uma ferramenta Oracle e um utilitário SUSE Linux.

Lembre-se que (com uma exceção) a cada escolha feita no momento da criação do banco de
maisdados
tarde,pode
masser
quealterado
algumas mudanças são difíceis e envolverá tempo de inatividade. Portanto, não
é vital para obter
tudo certo, mas quanto mais você pode obter direito, melhor.

O diálogo DBCA
O diálogo DBCA consiste (dependendo das opções) de cerca de 13 passos.

Passo 1: Base de dados de operação


Os botões de rádio disponíveis nesta primeira etapa permite que você selecione o tipo de operação
que deseja
executar.

• Criar banco de dados Você pode iniciar um diálogo que irá pedir-lhe para criar uma instância
e uma
base de dados.
• Configurar opções de banco de dados Você pode ajustar um banco de dados existente,
talvez
capacidades
instalando
adicionais.
• Excluir banco de dados Você pode remover todas as instâncias e bancos de dados existentes.
• Gerenciar Modelos Um modelo é um armazenados, banco de dados pré-configurado. Alguns
modelos
fornecido,
são ou você pode criar o seu próprio a partir de um banco de dados existente.
• Gerenciar Pluggable bancos de dados bancos de dados plugáveis são um novo recurso em
12ocescopo
e estãodo
além
currículo Oracle Certified Associate (OCA).

Passo 2: Modo de Criação


A criação de um banco opção configuração padrão com lhe dá acesso a um pequeno subconjunto de
capacidades de dbca. A opção Modo Avançado, por outro lado, dá-lhe acesso a todas as
possibilidades.

Passo 3: Modelo de Banco de Dados


Um modelo é uma versão armazenada de um banco de dados pré-configurado a partir do qual você
pode de
base gerar
dados.
umaCriação
nova de um banco de dados a partir de um template é muito mais rápido do que
criá-lo asão
opções partir
configuráveis.
do nada, masA não
Oracle
todos
fornece dois modelos de demonstração: um modelo de uso geral,
o qual está configurado para nada em particular, e um modelo de armazenamento de dados, a qual é
otimizado para o processamento de consultas em vez de processamento de transações. A opção de
supostamente
bancoum
gera dediálogo
dados personalizado
que vai lhe dar total liberdade na forma como o banco de dados está configurado,
limites predefinidos.
sem
Passo 4: Base de dados de identificação
O banco de dados deve ter um nome de banco de dados global. O nome global consiste em um nome
de banco de dados
opcionalmente, umae, base de dados de domínio. O nome do banco de dados é incorporado no
controlfile,
como o parâmetro
será especificado
de instância DB_NAME, e deve ser exclusivo na máquina do servidor. O nome
pode
até sercaracteres, incluindo caracteres alfanuméricos, sublinhados (_), sinais de número (#), e
oito
cifrões ($), e o primeiro caractere deve ser alfabético. caso sensibilidade podem variar de um
plataforma para outra. O nome do banco de dados é um exemplo de um valor que deseja obter
direito; pode ser
mudado mais tarde, mas isso requer tempo de inatividade.
O banco de dados de domínio pode ser de até 128 caracteres, incluindo caracteres alfanuméricos
sinale de
o número (#). Os pontos podem ser utilizados como separadores para os diferentes elementos
édoutilizado
domínio.para
O domínio
o parâmetro exemplo DB_DOMAIN. Note-se que embora seja possível construir um
nome global que lembra os nomes de domínio totalmente qualificados (FQDNs) usado em
Transmission
Protocol (TCP)Control
redes, não há nenhuma relação entre eles.
O segundo valor requerido é o identificador de sistema (SID). Este é o nome da instância do
a serOracle
criado e é usado para o parâmetro ORACLE_SID. Não há nenhuma razão para que isso seja o
como o valor DB_NAME, mas para o bem da sua sanidade, normalmente você vai mantê-lo o
mesmo
mesmo.
única naDeve ser do servidor de banco de dados.
máquina

DICA O uso de nomes globais com um domínio pode ajudar a distinguir os bancos de dados em
máquinas de
acontecer diferentes
ter o mesmo
que DB_NAME. Muitos DBAs irá acrescentar FQDN da máquina como o
DB_DOMAIN para esta finalidade. Mas não há necessidade de usar um DB_DOMAIN em tudo.
alguns DBAs
considerar domínios para ser uma responsabilidade, possivelmente porque eles podem causar
confusão
links de banco
devido
deaodados
seu impacto
e o nomesobre
global do banco de dados.

Passo 5: Opções de Gestão


Uso do Oracle Enterprise Manager (OEM) é totalmente opcional. Se você quiser usá-lo, você tem
possibilidades: Enterprise Manager banco de dados Express e Cloud Control Enterprise Manager.
dois
Enterprise Manager banco de dados Express é uma versão de OEM que está configurado dentro do
um conseguiu
base de dados. Se você instalar um segundo banco de dados, você precisará de uma instância
separada do banco
configurado de dados
no interior Express,
da referida base. Enterprise Manager Cloud Control é a gestão universal da
sistema, que geralmente é executado em uma máquina dedicada (ou máquinas) com agentes de
Oracle
execuçãoSe
servidor. emvocê
cadatem
alvouma instalação Cloud Control disponíveis, DBCA precisa saber como fazer
logon a ele.
Passo 6: As credenciais de banco de dados
Nesta etapa, você fornecer senhas para os esquemas SYS e sistema. SYS é o esquema que possui
o próprio dicionário de dados, e a senha é escrito para o arquivo de senhas externo. O usuário SYS
é muito especial, e a senha pode ser necessário para algumas funções críticas (tais como
inicialização
desligar). O esquema
e SYSTEM é realmente apenas um usuário como qualquer outro, mas é dado
muitos poderosos
privilégios.
A Oracle melhor prática é que essas senhas devem ter pelo menos oito caracteres, incluindo uma
mistura edeminúsculas e pelo menos um dígito. Os personagens são qualquer incluído no seu
maiúsculas
banco de de
conjunto dados
caracteres (detalhado mais adiante neste capítulo). Se você especificar uma senha que é
considerado
DBCA vai reclamar,
muito simples,
mas vai deixar de prosseguir, no entanto.
Uma variação do Windows neste momento é que você será solicitado para a senha da operação
conta do sistema que possui o Oracle Home.

DICA É muitas vezes considerada a melhor prática para furar a uma pequena gama de caracteres
para as senhas
(Letras maiúsculas e minúsculas, números e sinais de pontuação mais comuns) e começar com uma
levando caractere alfabético. Alguns intérpretes de shell de comando pode ter problemas com a mais
personagens incomuns.

Passo 7: Locais de armazenamento


O banco de dados pode ser criado em qualquer um grupo de disco Automatic Storage Management
ou em umdoarquivo
diretório sistema. De qualquer maneira, você pode nomear o destino ou deixar DBCA decidir
onde armazenar
arquivos de bancoo de dados, com base em seu valor derivado para a variável de ambiente
ORACLE_BASE.
tipos de armazenamento
Ambostambém pode usar, opcionalmente, Oracle Files Controlados (OMF). OMF
permite todos
nomear que o os
Oracle
seus assumir
arquivosodecontrole
banco de dados e construir uma estrutura de diretórios adequado
dentro do qual para armazenar
eles.
A secção de recuperação de arquivos relacionados desta etapa permite nomear uma área de
recuperação
usado como um rápida para ser
local padrão para backups e outros arquivos relacionados à recuperação e também
para permitir
modo de registro
que de
o arquivamento de operação. A maioria (se não todos) os bancos de dados de
produção
mas pode será
ser ativada
executado
a qualquer
no modo momento
de registro
apósdeaarquivamento,
criação do banco de dados.

Passo 8: Opções de banco de dados


Várias opções são licenciados separadamente e deve ser selecionada ou não de acordo com sua
licença. A guia Esquemas de exemplo causará DBCA para instalar os esquemas de demonstração em
próprio espaço de tabela.
sua

Passo 9: Parâmetros de inicialização


Existem mais de 300 parâmetros de inicialização publicamente visíveis e milhares mais chamadas
parâmetros escondidos. DBCA fornece instruções para o mínimo, com um link para um editor onde
pode ver os seus padrões para os outros e definir qualquer que quiser. Passo 9 do diálogo DBCA
você
solicita
um totalquer
geralpara
para memória a ser usada pela instância ou para especificar valores para System
Global eArea
(SGA) Global Area o Programa (PGA). SGA é usado pela instância e é acessível a partir de todos
sessões; ele é dividido em vários sub-estruturas, algumas das quais podem ser ajustados
individualmente.
dividido em áreasPGA
de memória
é privada para cada sessão eo processo conectado. Esta etapa do DBCA
diálogo define alguns dos parâmetros de memória.
A guia de dimensionamento mostra dois parâmetros: DB_BLOCK_SIZE (embora o prompt é
Tamanho)
apenas ebloco
processos. DB_BLOCK_SIZE é crítico; é o único parâmetro que nunca pode ser
mudou após a criação do banco de dados. Isto é porque especifica o tamanho dos blocos em que o
SISTEMA tablespace datafile é formatado. A tabela sistema armazena o dicionário de dados, e
alterá-lo exigiria recriar o dicionário de dados, o que seria equivalente a criação de um
novo banco de dados. O DB_BLOCK_SIZE padrão é 8KB. Os valores legais são 2KB, 4KB, 8KB,
16KB,
e (em algumas plataformas) 32KB.
Os conjuntos de caracteres guia permite que você escolha o conjunto de caracteres de banco de
dados ea alternativa nacional

conjunto de caracteres. O conjunto de caracteres do banco de dados é usado para o dicionário de


dados eNVARCHAR2,
exceto todos os tipos de dados de
NCHAR caracteresque usam o conjunto de caracteres nacional. É
e NCLOB,
possível mudar o conjunto de caracteres, a qualquer momento após a criação do banco de dados, mas
teoricamente
este é umperigoso
processo potencialmente
e não aquele em que a embarcar levemente. Muitos DBAs acreditam que a melhor
prática
não usaré o padrão (que é derivado de seu sistema operacional), mas para usar Unicode-
especificamente,
AL32UTF8.
A guia Modo de ligação permite configurar o servidor compartilhado. Este tópico é discutido no
14. Capítulo

DICA Não DBA nunca foi demitido por escolher 8 KB, o valor padrão, como o DB_BLOCK_SIZE
valor. Raramente há qualquer razão para usar qualquer outra coisa. Mas o conjunto de caracteres
padrão podeespecialmente
impróprio, muito bem serse você é sempre susceptível de ter clientes que utilizam outras do que o
americano idiomas
Inglês.

Passo 10: Opções de Criação


Nesta etapa, a caixa de seleção Criar banco de dados vai lançar a criação real. Salvar como um
caixa
bancodedeseleção
dados modelo irá gerar um modelo armazenado baseado no diálogo anterior, o que pode
subsequentemente ser usado muitas vezes (isto é seleccionado no passo 3). Finalmente, a criação de
banco de
Scripts marque
dados aGerar
caixa irá gerar e salvar um conjunto de scripts que podem ser executados
manualmente
base de dados.para criar o

Passo 11: Controlo de pré-requisito


DBCA corre alguns breves “checagens” para confirmar que a criação vai funcionar. Se houver
fracassos, eles realmente devem ser abordadas antes de prosseguir. No entanto, você pode optar por
algum
e prosseguir independentemente.
ignorá-los

TIP verificações de validação O DBCA não são abrangentes. Os erros podem aparecer apenas
durantede
Típico o passo
estes são
13. problemas de memória. Por exemplo, se no passo 9 especificar Automática de
Gestão com um total que é mais do que a memória compartilhada configurada no seu sistema, você
Memória
não vai um erro neste ponto.
receber

Passo 12: Síntese


A janela Resumo mostra o que DBCA pretende fazer. Examine o relatório, e se você ver
qualquer coisa que você não gosta, este é um bom momento para usar o botão Voltar e fazer
alterações.

Passo 13: Progresso Página


A janela Progresso página mostra a criação de scripts (se fossem solicitadas) e depois a
vários estágios de criação de banco de dados. Isso pode demorar 10 minutos, ou pode demorar uma
hora ou mais.
diferença é largamente
o dependente se um modelo foi usado, quais as opções foram selecionados, ea
especificações de hardware.

Exercício 2-1: Criar um banco de dados com DBCA Usando a ferramenta DBCA gráfica, criar
um banco
Repita de dados.tantas vezes quanto possível, eliminar quaisquer bancos de dados criados
o exercício
éanteriormente
curto no RAM primeiro
ou espaço
se você
em disco. É importante se sentir confortável com o processo e
experimentar com as várias opções apresentadas pelo diálogo.
Algumas das respostas vão variar dependendo se a plataforma é o Windows, Linux, ou
algo mais. As variações serão óbvias, e mais comumente têm a ver com a nomeação de diretório
convenções. Aqui estão os passos a seguir:

1. Faça logon no computador do servidor.


Conectar ao servidor como o usuário do sistema operacional que fez a instalação. O padrão
nome da conta é oráculo.
2. Lançamento DBCA.
A partir de um shell de comando, certifique-se que as variáveis de ambiente apropriadas
definidas.um
Segue-se o diálogo típico em um sistema Linux usando o shell bash:

A variável DISPLAY esteja definida para apontar para o endereço do servidor X


(normalmente
Testá-lo executando
o seu PC).
qualquer programa X, como o X-Relógio. Se você estiver executando
no console
talvez em um
ou desktop VNC, isso não será necessário. Em seguida, o valor é definido
ORACLE_BASE
e assume uma instalação Optimal Flexible Architecture (OFA) (binários de propriedade de
oráculo). ORACLE_HOME e PATH continuar o padrão OFA. Usando o qual utilitário
usuário
confirma que dbca está no caminho de pesquisa, então lançá-lo.
No Windows, pode ser possível encontrar um link para DBCA no menu Iniciar e executá-lo
confiando
em variáveis definidas no registro. Alternativamente, você pode controlar tudo manualmente
a partir de um
prompt comando, assim:

3. respondem às solicitações da seguinte forma:

A. Selecione o botão Criar banco de dados de rádio. Clique em Avançar.


B. Selecione o botão de Modo Avançado. Clique em Avançar.
C. Selecione o botão de opção de banco de dados personalizado. Clique em Avançar.
Note-se que, neste ponto, dependendo se o produto infraestrutura de rede já tem
foi instalado no servidor, você pode receber um prompt sobre a Oracle Restart. ignorar
e continuar.
esta
D. especificar o nome de banco de dados global e os valores SID como orcl121. Clique em
Avançar.
E. Selecione a caixa de seleção Configurar Enterprise Manager (EM) Banco de dados
Express. Clique
F. selecione em Avançar.
o botão usar a mesma senha administrativa para todas as contas e
entrar Oracle121 . Clique em Avançar.
G. Select File System na caixa drop-down do tipo de armazenamento, e selecione o botão
de rádio
Locais
Use
dos arquivos banco de dados do modelo. Deixar tudo no padrão. Isso vai
causar DBCA para criar o banco de dados e do Espaço rápida recuperação sob o
ORACLE_BASE. Clique em Avançar.
H. Na guia Componentes de banco de dados, deixe tudo no padrão. Clique no Sample
Esquemas guia e selecione a caixa de seleção esquemas de amostra. Clique em Avançar.
I. configurações de memória aceitável dependerá de seu ambiente, e o padrão pode ou
pode não ser adequado. Esses valores funcionam normalmente, mesmo em sistemas
muitoMemória,
guia baixo-spec.
selecione
No o botão de opção típica, defina o valor do tamanho da memória
(SGA para
PGA) e 640MB, e desmarque a caixa de seleção Gerenciamento de memória Use
Automatic.
No personagem guia Conjuntos, selecione o botão de opção Use Unicode (AL32UTF8).
J. Clique
Marqueem as Avançar.
caixas de seleção para tanto criar banco de dados e gerar Criação de banco de
dados
Scripts. Observe o diretório onde os scripts serão criados. Clique em Avançar.
K. Isso não deve exigir qualquer entrada.
L. Estudo do resumo. Clique em Concluir.
M. Os scripts serão gerados, seguido por uma pequena janela modal dizer onde eles
são (se você não vê esta janela, certifique-se de que não está escondendo debaixo outra
coisa).
Clique em OK.
Como os assistentes de correr, você vai notar que os dois primeiros, que criar a instância
banco de dados, completa em apenas alguns minutos. Os outros, que criam o dicionário
eo
de dados
pontos de vista e os vários componentes, levará muito mais tempo.
Em conclusão, você será presenteado com uma janela de sucesso que mostra o uniforme
Resource Locator (URL) para acessar banco de dados Enterprise Manager Express. Será
assemelham-se o seguinte:
http://db121a.example.com:5500/em
Nota esta URL para uso futuro.
4. Após a instalação, confirme que você pode fazer logon para o banco de dados recém-criado
usando
SQL * Plus.

A partir de um prompt do sistema operacional, definir a sua variável de ambiente


ORACLE_SID
da ao nome
instância de banco de dados, e depois log on e off, como neste exemplo para Windows:

Como alternativa, usar este exemplo para Linux:

5. Repita ad infinitum .
Passar por este exercício tão frequentemente quanto possível, fazendo suas próprias
variações,
com todas até que você
as opções. Naesteja
Etapafeliz
1: Operação de banco de dados, você pode querer selecionar
o Excluir
botão de opção do banco de dados para remover a criação anterior.

Gerar scripts de criação de banco de dados usando o


DBCA
Não há nenhuma razão para não criar um banco de dados de forma interativa com DBCA, mas em
muitas situações
melhor para criaréum banco de dados a partir da linha de comando. Por quê? Talvez por uma das
seguintes razões:
• A máquina servidor pode não ter capacidade gráfica.
• procedimentos de controle de mudanças pode exigir certificados testados.
• Você pode ter que criar uma dúzia de bancos de dados idênticos.
• Você não quer se sentar na frente de uma tela de responder às solicitações.

Seja qual for a razão, é simples de criar um banco de dados manualmente, se você tem os scripts.
A maneira mais fácil de escrever os scripts é deixar DBCA fazer isso por você.

Gerando os Scripts
Para gerar os scripts, lançar DBCA e passar pelo diálogo, tendo tudo o que opções estão
apropriada. Na etapa 10, marque a caixa de seleção apropriada e escolha um diretório. O local
está abaixo ORACLE_BASE. A localização típica de um banco de dados chamado orcl121 no
padrão
Windows
ser como se
seria
segue:

No Linux, o local típico seria o seguinte:

Seja qual for a plataforma, os scripts têm a mesma estrutura: shell script chamado após o banco
(Pordeexemplo,
dados orcl121.sh para Linux, orcl121.bat para Windows) que faz algum sistema operacional
trabalho e, em seguida, lança SQL * Plus para executar um script SQL (chamado oracle121.sql). As
(OS)
unidades
o resto dade script do
criação sqlbanco de dados. Estudar esses scripts e os scripts que chamam é instrutiva.
Os scripts de criação
O ponto de partida é o shell script. Dê uma olhada em um exemplo de Linux:

Isso cria alguns diretórios, usando valores calculados a partir do ORACLE_BASE e


ORACLE_HOME variáveis de ambiente, fornecidos na caixa de diálogo DBCA, ou de padrões com
permissões de acesso adequadas. Em seguida, ele conclui com o apelo à SQL * Plus para iniciar o
script SQL Uma variação no Windows serão chamadas para o utilitário oradim que cria do
orcl121.sql.
sob a qual a instância será executado.
Windows
O script SQL condução irá variar muito, dependendo das opções tomadas no diálogo DBCA.
Aqui está um exemplo:

Os comandos ACCEPT solicitar senhas para os esquemas SYS e sistema. Então o


roteiro invoca um shell do host para executar o utilitário orapwd. Este utilitário cria o arquivo de
senhas
com umexterna
nome que é plataforma específica. No Linux, será
$ ORACLE_HOME / dbs / orapw <DBNAME> (onde <dbname> é o nome do banco de dados), e
no Windows, que será% ORACLE_HOME% \ database \ PWD <DBNAME> .ora.
Após este é um conjunto de chamadas para outros scripts SQL, começando com CreateDB.sql.
A segunda linha conecta-se como utilizador SYS usando a palavra-passe fornecidas. A quinta
banco
linha
de começa
dados, ema nenhum modo de montagem usando um arquivo de parâmetro nomeado init.ora.
Este arquivodefinidos
parâmetros será preenchida
por padrão
comou especificado no diálogo DBCA. O próximo comando (que
continua
final do arquivo)
a cria o banco de dados.

NOTA Lembre-se os modos: O comando nomount significa “construir as estruturas de memória e


os processos.”
começar

Seguindo a linha CREATE DATABASE “orcl121” são algumas configurações para limites (tais
como
MAXDATAFILES = 100, o que significa que esta base de dados será restrita a 100 arquivos de
cláusulas de quatro
dados) e, em seguidaespaços de tabela:

• O espaço de tabela SYSTEM (onde o dicionário de dados vive) estará em um arquivo de


dados chamado com um tamanho de 700 MB.
system01.dbf
• O espaço de tabela SYSAUX (objetos que não estão associados com o dicionário de dados,
mas
intimamente
são relacionada) estará em um arquivo de dados chamado sysaux01.dbf com um
tamanho de 550MB.
• Um espaço de tabela temporário padrão (para espaço temporário de dados necessários por
sessões para, um
esperanças, apenas um breve período) chamado TEMP estará em temp01.dbf tempfile, com
um tamanho
Uma tabela dedeundo
20 MB.
(usado para desfazer segmentos, que são necessários para assegurar
consistência) chamado UNDOTBS1 usará o undotbs01.dbf arquivo de dados, com um
transacional
tamanho de 200 MB.
Em seguida, os conjuntos de caracteres para o banco de dados e língua nacional são
são especificados.
Unicode. A seçãoNo exemplo,
LOGFILEeles especifica que o banco de dados deve ter três arquivo de log on-line
grupos, cada um consistindo de uma imagem (o membro do ficheiro de registo) que é 50MB em
tamanho.
para SYS Finalmente,
e SYSTEM as sãosenhas
definidos.
Este comando de criação de banco de dados leva alguns minutos apenas um par para ser
estruturas
executado.
mínimas
Tudonecessárias
que faz é criar
paraoum banco de dados, o mais importante do dicionário de dados.
De controlo,
para o script SQL
em seguida,
chamando,
retorna
que (no exemplo) lança mais scripts.

• CreateDBFiles.sql cria uma tabela chamada USUÁRIOS, para ser usado como o espaço de
tabelas
armazenar
padrãoobjetos
para permanentes (como tabelas).
• CreateDBCatalog.sql chama um conjunto de scripts para gerar as vistas necessárias para a
dados
dicionário e os vários pacotes PL / SQL fornecidos.
• Vários scripts de (JServer.sql através apex.sql), em seguida, gerar várias opções que foram
selecionadas
no diálogo DBCA.
• postDBCreation.sql corre qualquer coisa necessária imediatamente após a criação, tais como a
aplicação
empacotado manchas e convertendo o pfile para um spfile.
• lockAccount.sql bloqueia todas as contas de pré-configuradas (com algumas exceções) e,
finalmente,
base de dados.
reinicia o

Os scripts gerados e os seus conteúdos variam muito, dependendo do diálogo DBCA. Para
exemplo, se no passo 3 você optou por criar um banco de dados a partir de um modelo, todo o
processo é muito
mais simples maiso banco de dados não precisam ser criados, e a maioria do trabalho é feito
porque
através
os procedimentos
de chamadasdo para
gerente de recuperação RMAN, que por efeito restaurar um banco de dados de
um backup no
modelo.

O arquivo de inicialização de parâmetros


Para iniciar a instância de banco de dados, DBCA deve criar um arquivo de parâmetro de
inicialização.
se Este éa gerado
você selecionar opção para criar um banco de dados ou para gerar scripts. O arquivo é gerado no
mesmo diretório que os outros scripts e é indicado no comando de inicialização no CreateDB.sql
roteiro.

Aqui está o arquivo gerado pelo diálogo a partir Exercício 2-1 (linhas de comentário removido
por brevidade):
Todos estes parâmetros serão abordados em capítulos posteriores. O arquivo tem apenas 16
foraparâmetros
das centenas
especificados
e é o mínimo necessário para obter um funcionamento de banco de dados típico.
Muito mais irão geralmente ser adicionados, subsequentemente, de acordo com os requisitos para o
parâmetros
ambiente,
escala e desempenho.

Exercício 2-2: Gerar scripts de criação de banco de dados usando o DBCA Use DBCA para
vários conjuntos de scripts de criação de banco de dados. Executar como muitas iterações deste
gerar
como você
nome diferente
quer,banco
fornecendo
de dados
umae SID de cada vez e selecionar opções diferentes. Aqui estão os
passos para
Segue:

1. Lançamento DBCA. Responda às solicitações da seguinte forma:


A. Selecione o botão Criar banco de dados de rádio. Clique em Avançar.
B. Selecione o botão de Modo Avançado. Se você selecionar Criar um banco de dados com
Padrão
Configuração, você não receber uma solicitação para gerar scripts. Clique em Avançar.
C. Selecione o botão de uso geral ou Transaction Processing. Clique em Avançar.
D. Especifique o valor gpdb tanto para Global Database Name e SID. Clique em Avançar.
E. desmarcar tudo. Clique em Avançar.
F. Digite as senhas como Oracle121 . Clique em Avançar.
G. Escolher tipo de armazenamento: File System. Deixar tudo no padrão. Clique em
Avançar.
H. Deixar tudo no padrão. Clique em Avançar.
I. Deixar tudo no padrão. Clique em Avançar.
J. desmarque as caixas de verificação Criar banco de dados e salvar como modelo de
banco
marque
de dados.
a caixaSelecione
Gerar scripts
os de criação de banco de dados. Observe o diretório de
destino. Clique
Próximo.
K. No input necessário.

L. Estudo do resumo. Note-se que a instalação de um modelo irá incluir todas as opções
queforam solicitadas no exercício anterior e também terá valores para vários
parâmetros. Clique em Concluir.
M. Os scripts será gerada. Clique em OK e em Fechar.
2. Estude os scripts.
Tentar fazer engenharia reversa do processo de criação. Note-se que o processo é muito mais
simplesum
usando quando
molde. Compare os scripts gerados por este exercício com aqueles gerados pela
exercício anterior.
3. Repita.
E repita mais uma vez, com variações. É vital para se familiarizar com o diálogo DBCA e
com os scripts que ele gera.

Gerenciar banco de dados Modelos de usando DBCA


Um modelo é uma definição armazenados de um banco de dados. Esta definição pode ser
posteriormente
número de bancos
usado
de dados,
para criar
e é qualquer
portável entre plataformas. Modelos vêm em uma das duas formas:

• Estrutura única Um modelo somente-estrutura contém a informação estrutural (base de


dados
as opções selecionadas, detalhes de armazenamento, parâmetros de inicialização), mas não
inclui o real
arquivos de dados. Quando este modelo é usado, o banco de dados será criado a partir do
nada. Não
possível para
é todos os dados definidos pelo utilizador para ser incluído.
• Estrutura e dados Um modelo de estrutura-e-de dados também inclui os arquivos de dados.
Bases
criado
de adados
partir desse modelo será idêntico ao banco de dados a partir do qual o modelo foi
gerado, a partir do tempo de geração.
Os modelos são gerenciados por meio DBCA. Se na etapa 1 da caixa de diálogo DBCA você
botão
escolher
Gerenciar
o rádio
Modelos, você será perguntado se deseja excluir um modelo ou criar um do
uma das três fontes:

• Um modelo já existente
• Um banco de dados existente, estrutura única
• Um banco de dados existente, a estrutura e os dados

O modelo ou banco de dados já deve existir na máquina a partir da qual DBCA está em
que execução. Nota
a criação do modelo a partir de um banco de dados rodando exigirá uma reinicialização do
banco deinclui
modelo dadosarquivos
de origem
de dados,
se o mas não se é apenas a estrutura.
O diálogo DBCA é perfeitamente simples. Você será solicitado para a fonte e tipo do
modelo e, se ele inclui arquivos de dados, para a localização do arquivo que irá armazenar o
base de dados. Uma vez que o modelo foi criado, ele será visível como uma fonte para um novo
comprimido
banco
3 do diálogo
de dados
DBCA.
no passo
O armazenamento subjacente para um modelo é de arquivos no
ORACLE_HOME / assistentes / dbca / diretório de modelos. Copiar esses arquivos para outro Lar
do Oracle

vai tornar o modelo disponível lá.

Exercício 2-3: Gerenciar Modelos banco de dados usando DBCA Use DBCA para criar uma
modelo do banco de dados criado no primeiro exercício deste capítulo. Estes são os passos a seguir:

1. Lançamento DBCA. Responda às solicitações da seguinte forma:


A. Selecione o botão Gerenciar Modelos. Clique em Avançar.
B. Selecione os botões de opção Criar um modelo de banco de dados e de um banco de
dados
(Estrutura, bem como de dados). Clique em Avançar.
C. Select orcl121 da Instância caixa drop-down banco de dados. Clique em Avançar.
D. Dê o modelo um nome e descrição. Note que o nome é usado para o nome do
arquivo de dados modelo no ORACLE_HOME / assistentes / dbca / templates. Clique
em Avançar.
E. Selecione o botão de opção para converter os locais de arquivo para usar a estrutura
OFA.
geralmente
Isto é a melhor opção, porque torna mais simples para usar o modelo em outra
máquina
com um sistema de arquivos diferente. Clique em Avançar.
F. Observe as informações de resumo. Clique em Concluir.
G. O modelo será criado, reiniciar o banco de dados de origem se ele está em execução. Isto
é necessário para a cópia dos arquivos de dados para ser consistente; a cópia é feita com o
banco de dados no modo de montagem. Clique em OK e em Fechar.
2. Use o modelo.
Use o modelo (se você quiser) para criar um banco de dados. Lançar DBCA e responder à
solicita como se segue:
A. Selecione o botão Criar banco de dados. Clique em Avançar.
B. Selecione o botão de Modo Avançado. Clique em Avançar.
C. A lista de modelos apresentados incluem o modelo recém-criado. Note que ele faz
incluir arquivos de dados. Selecione seu botão de rádio, e clique no botão Exibir
detalhes.
gerar o equivalente
Isso vai a um resumo das informações anteriormente apresentado quando a
banco de dados foi criado. Estudar isso e, em seguida, fechar a janela.
fonte
3. Sair DBCA. Clique no botão Cancelar e confirme para sair.

Configurar opções de banco de dados usando DBCA


O tópico final sobre a criação de banco de dados está modificando bancos de dados posteriores à
criação. Oé conceito
pendurar que uma de
opção de banco de dados, em geral, é uma combinação de código executável no
Oracle Home e objetos necessários (como tabelas e procedimentos PL / SQL) no banco de dados. o
instalação do software terá instalado o código executável. Mas para qualquer um banco de dados de
correr que
Casa, as opções serão ativadas somente se os objetos foram criados. O banco de dados DBCA
criação solicita que opções para instalar, que determina os scripts chamados pela condução
script de criação de banco de dados. Vai agora ser evidente porque quando se utiliza um modelo com
arquivos controlar
possível de dados as
nãoopções:
é ou vai ou não vai ter existido no banco de dados a partir do qual

o modelo foi gerado.


Usando DBCA para configurar as opções faz com que DBCA para gerar chamadas para scripts
opções
que no
irábanco
instalar
de dados. Não é possível desinstalar opções através DBCA. Para ver o instalado
opções, fazer logon no banco de dados e consultar a exibição DBA_REGISTRY. Este é um exemplo:

Exercício 2-4: Configurar opções de banco de dados usando DBCA Neste exercício, você vai
usar DBCA
adicionar uma
para
opção que não foi selecionado para a criação banco de dados original. Aqui estão os
passos a seguir:
1. Confirme a lista de opções instaladas.
A partir de um prompt do sistema operacional, fazer logon no banco de dados e executar
esta consulta:
2. Lançamento DBCA. Responda às solicitações da seguinte forma:
A. Selecione o botão Configurar opções de banco de dados. Clique em Avançar.
B. Selecione o botão de opção para o banco de dados orcl21. Clique em Avançar.
C. DBCA apresenta a lista de componentes de dados em tempo de criação com os
anteriormente
selecionado cinza e qualquer restante disponível para seleção. Note que não é possível
para adicionar os esquemas de amostragem com este método.
Selecione a caixa de seleção Oracle Label Security. Clique em Avançar.
D. Desmarque a caixa de seleção do Oracle Database Vault. Clique em Avançar.
E. Deixar tudo no padrão. Clique em Avançar.
F. O resumo irá mostrar o que está a ser instalado. Clique em Concluir.
G. A opção irá instalar. Clique em OK e em Fechar.
3. Confirme a instalação.
Execute novamente a consulta contra DBA_REGISTRY e observe que a Segurança etiqueta
é agora um instalado
componente.

Broca Two-Minute
Criar um banco de dados usando o banco de dados Assistente de Configuração
• DBCA é escrito em Java e requer uma exibição gráfica.

• A caixa de diálogo solicita todas as informações necessárias para criar uma instância e um
banco de dados.da criação, o banco de dados está pronto para uso.
• Na conclusão

Gerar scripts de criação de banco de dados usando o DBCA


• A geração inclui um script shell que chama um conjunto de scripts SQL.
• Também gerados são um arquivo de parâmetro e um arquivo de senha.
• Os scripts podem, opcionalmente, ser editado e, em seguida, executar manualmente.

Gerenciar banco de dados Modelos de usando DBCA


• Um modelo é uma definição de banco de dados salvos de que mais bancos de dados podem
ser
• Oscriados.
modelos incluem informação estrutural e, opcionalmente, arquivos de dados.
• Um modelo só de estrutura não pode incluir referências a objetos de usuário.
• Um modelo de estrutura-e-dados permite apenas alterações mínimas no momento da criação.

Configurar opções de banco de dados usando DBCA


• Opções são instalados por execução de scripts contra um banco de dados existente.
• Não é possível desinstalar opções através DBCA.

Auto teste
1 . Qual destas operações pode ser realizado com DBCA? (Escolha todos os que se aplicam.)
A. Criar um banco de dados
B. Remover um banco de dados
C. Melhora a uma base de dados
D. Adicionar opções de banco de dados
E. Remova opções de banco de dados
2 . Para criar um banco de dados, em que modo deve a instância ser? (Escolha a melhor
resposta.)
A. Não iniciado
B. iniciado no modo NOMOUNT
C. iniciado no modo MOUNT
D. Iniciado no modo ABERTO
3 . Várias ações são necessárias para criar um banco de dados. Coloque estes na ordem correta:
1. Criar as views de dicionário de dados.
2. Crie o arquivo de parâmetro.
3. Crie o arquivo de senha.

4. Emita o comando CREATE DATABASE.


5. Emita o comando de inicialização.
(Escolha a melhor resposta.)
A. 2, 3, 5, 4, 1
B. 3, 5, 2, 4, 1
C. 5, 3, 4, 2, 1
D. 2, 3, 1, 4, 5
4 . O parâmetro de instância não pode ser alterado após a criação do banco de dados? (Escolha
o melhor
responda.)
A. Todos os parâmetros de instância pode ser alterado após a criação do banco de dados.
B. Todos os parâmetros de instância pode ser alterado após a criação do banco de dados, se
for exemplo
feito enquanto
é no modo
o de montagem.
C. CONTROL_FILES.
D. DB_BLOCK_SIZE.
5 . Quais arquivos são criados pelo comando CREATE DATABASE? (Escolha todos os que se
aplicam.)
A. O controlfile
B. O arquivo de parâmetro de servidor
C. Os arquivos de log de redo on-line
D. O arquivo de senhas
E. O arquivo de parâmetro de inicialização estática
F. O ficheiro de dados de tabela SYSAUX
G. O sistema de arquivo de dados de tabela
6 . O que vai acontecer se você não executar os scripts catalog.sql e catproc.sql depois de criar
umbase de dados? (Escolha a melhor resposta.)
A. Não será possível abrir o banco de dados.
B. Não será possível criar quaisquer tabelas de usuário.
C. Não será possível usar PL / SQL.
D. Não será possível consultar as views de dicionário de dados.
E. Não será possível conectar como qualquer usuário que não seja SYS.
7 . Que ferramentas podem ser usadas para gerenciar modelos? (Escolha a melhor resposta.)
A. O banco de dados Assistente de Configuração
B. O Database Upgrade Assistant
C. SQL * Plus

D. Dados Expresso
E. A Oracle Universal Installer
8 . Em que ponto você não pode escolher ou alterar o conjunto de caracteres de banco de
dados?
responda.)
(Escolha o melhor
A. No momento da criação do banco de dados, se você estiver usando um modelo DBCA
B. No momento da criação do banco de dados, se você estiver usando um modelo DBCA
que inclui
C. no arquivos
momento de dados
da criação do banco de dados, se você não estiver usando um modelo
DBCA
D. Após a criação do banco de dados, usando DBCA para instalar opções
9 . Se houver vários bancos de dados criados fora da mesma Oracle Home, como será base de
dados
ser Expresso
configurado? (Escolha a melhor resposta.)
A. banco de dados Express irá dar acesso a todos os bancos de dados criados a partir da uma
da Oracle
Casa através de um URL.
B. Banco de Dados Express irá dar acesso a cada banco de dados através de portas
diferentes.
C base de dados expresso deve ser configurado em apenas uma base de dados e pode, então,
ser conectar-se
usadas para a todos eles.
D. banco de dados Express pode gerir apenas um banco de dados por Oracle Home.
10 . O espaço de tabela SYSAUX é obrigatória. O que vai acontecer se você tentar emitir um
CRIARcomando DATABASE que não especifica um arquivo de dados para o espaço de tabela
aSYSAUX? (Escolher
melhor resposta.)
A. O comando falhará.
B. O comando terá êxito, mas o banco de dados não funcionará até que o SYSAUX
tablespace é criado.
C. Um SYSAUX tabela e arquivo de dados padrão será criado.
D. objetos O SYSAUX será criado no espaço de tabela SYSTEM.
11 . Quais arquivos são gerados quando você escolher a opção Gerar scripts de criação de banco
de dados
o banco
em de dados Assistente de Configuração? (Escolha todos os que se aplicam.)
A. A shell script
B. SQL scripts
C. Um arquivo de parâmetro
D. arquivo de senhas A
E. Um arquivo de resposta

Respostas de auto-teste
1. A , B , e D . DBCA pode criar e remover bancos de dados e também opções de
basesinstalação
de dados em
existentes.

C e E estão incorrectos. A atualização do banco de dados exigiria a atualização de


Assistant
banco(DBUA),
de dados não DBCA. remoção de opções não pode ser feito através de qualquer
assistente. É um
processo manual.
2. B . O exemplo deve ser executado antes de criar um banco de dados.
A , C , e D estão incorrectos. A instância deve ser iniciada, mas não pode ser montado
(Porque não existe controlfile) ou aberto (porque não existem arquivos de dados).
3. Um . Esta é a sequência correcta (embora 2 e 3 pode ser feito o contrário).
B , C , e D estão incorrectos. Estas sequências não são possíveis.
4. D . Este é o único parâmetro que não pode ser alterado após a criação.
A , B , e C são incorrectas. A e B estão incorretas porque DB_BLOCK_SIZE não pode
ser não importa quando você tentar fazê-lo. C é incorrecta porque os
mudou,
parâmetro pode certamente ser alterado, embora isso exigirá um desligamento e reiniciar.
CONTROL_FILES
5. A , C , F , e G . Todos estes sempre serão criados, por padrão, se eles não são
especificados.
B , D , e E são incorrectas. B e D são incorrecta porque estes devem existir antes do
instância é iniciada. E é incorreto porque a conversão do parâmetro estático arquivo para um
arquivo de parâmetro dinâmico ocorre, opcionalmente, apenas após o banco de dados é
6. criado.
D . O banco de dados irá funcionar, mas sem as visões de dicionário de dados e PL /
SQLcriados por esses scripts, será inutilizável.
pacotes
A , B , C , e E são incorrectas. A está incorreta porque o banco de dados será aberta; na
deveverdade,
ser aberto para executar os scripts. B está incorreta porque as tabelas e outros objetos
pode
ser certamente
criado. C está incorreta porque PL / SQL estará disponível; é os pacotes fornecidos que
vai estar ausente. E é incorreta porque embora os scripts precisam ser executado por SYS,
você podecomo outros usuários.
conectar
7. Um . DBCA é a única ferramenta que pode gerenciar modelos.
B , C , D , e E são incorrectas. Estes são todos incorreta porque só DBCA oferece
gestão.
template
8. D . Não é possível alterar conjuntos de caracteres após a criação do banco de dados com
conjuntos
DBCA. de caracteres não são instalados como opções.
A , B , e C são incorrectas. A e B estão incorretas porque os modelos não são
relevantes.
O modelo incluiEarquivos
se de dados, DBCA vai mudar o conjunto de caracteres nos
bastidores.porque
incorreto C é a criação sem um modelo dá-lhe o controle completo, incluindo o seu
escolha do conjunto de caracteres.
9. B . Banco de dados Express pode ser usado para cada banco de dados e será
portaconfigurado
diferente para
comcada
um um.
A , C , e D estão incorrectos. A está incorreta porque isso exigiria Cloud Control. C é
incorreto porque banco de dados Express deve ser instalado em cada banco de dados que vai
usá-lo. D épois embora uma instância de banco de dados Express é apenas um banco de
incorreto,
dados, de
banco cada
dados pode ter o seu próprio.
10. C . Há padrões para tudo, incluindo o espaço de tabela SYSAUX e arquivo de dados
definições.
A , B , e D são incorrectas. A está incorreta porque o comando terá sucesso. B e D

estão incorretas porque estes não são a maneira que os padrões funcionam.
11. A , B , C , e D . Um shell script é gerado que chama um conjunto de scripts SQL. Há
sim registrar uma senha para permitir conexões SYSDBA e um arquivo de parâmetro
também
paraEiniciar a instância.
é incorreto, pois os arquivos de resposta são gerados pelo Oracle Universal Installer,
pelonão
Assistente de Configuração.
CAPÍTULO 3

Instalando o Oracle Grid Infrastructure


para um autônomo
Servidor

Objetivos do exame
Neste capítulo, você vai aprender a
• 62.2.4.1 Configurar armazenamento para Oracle Automatic Storage Management (ASM)
• 62.2.2.2 Instale Oracle Grid Infrastructure para um servidor autônomo
Este capítulo descreve a instalação da rede de Infra-estrutura (GI). GI é um produto instalado
que fornece clustering, rede, armazenamento e serviços de alta disponibilidade para bancos de dados
separadamente
éOracle.
necessário
isto para Clusters (RAC) bases de dados de aplicação real e também pode ser usado com
uma única
bancos instância
de dados. Em um ambiente de instância única, GI é normalmente usado para fornecer
Automatic Storage
Management (ASM) dispositivos para armazenar arquivos de banco de dados (como descrito neste
capítulo)
uma capacidade
e para fornecer
de religamento automático em caso de falhas (como descrito no Capítulo 4 ). O
tratamento
na Oracle Certified
de GI Associate (OCA) programa é limitado a usar a capacidade de reinicialização em
um único exemplo, embora os conceitos de ASM pode também ser examinado.
ambiente

Configurar armazenamento para Automatic Storage da


Oracle
Gestão
Grade infra-estrutura inclui a capacidade ASM para gerenciar o armazenamento a ser utilizado para
banco de dados
arquivos. Em versões
Oracleanteriores (até liberar 11.1. X ), ASM foi enviado como parte do software de
banco de dados,
mas a partir de 11,2. x em diante, é parte do GI. GI é um conjunto de processos que são executados
como parte
sistema: no da
Windows,
operaçãoserviços que são executados com privilégios de administrador; no Linux,
daemons que
privilégios defuncionam
root. Os processos
com GI iniciar uma instância ASM. De certa forma, uma instância ASM
aseinstância
assemelhade sistema de gestão de base de dados relacional (RDBMS) com a qual todos os banco de
dados
administradores (DBAs) são familiares, mas o seu objectivo é muito diferente: ele gerencia
dispositivos que são
disponibilizados às instâncias RDBMS para armazenamento de arquivos. Estes dispositivos devem
ser configuradoantes
administrador pelodesistema
instalar GI.

GI Arquitetura
GI consiste de um conjunto de processos, todos os quais estão protegidos contra falha. O processo é
o núcleo
Alta Disponibilidade Serviços daemon, o OHASD. Esta é protegido pelo sistema operacional. Se ele
o sistema operacional (OS) vai reiniciá-lo. O OHASD então começa e monitora um conjunto de
falhar,
processos, que por sua vez irá iniciar e monitorar recursos utilizados por instâncias de banco de
outras
dados.
são ASM estes
e banco
recursos
de dados ouvintes.

DICA Você pode executar ouvintes de banco de dados a partir de uma casa de banco de dados ou de
um lar GI.
prática paraEle
executar
é considerado
apenas um
o melhor
ouvinte (da casa GI se GI foi instalado).

GI mantém um registro de recursos que são executados sob seu controle. Esses recursos podem
incluir
todos um ou
os seguintes:

• ouvintes de banco de dados


• Virtual Internet Protocol (IP)
• Uma instância ASM (apenas uma)
• grupos de discos ASM
• instâncias de banco de dados
• Os produtos de terceiros

O registro existe em um arquivo chamado Oracle Registro Local (ROL). A localização do ROL é
especificado por um ponteiro de plataforma específica. No Linux, o ponteiro é o /etc/oracle/olr.loc
arquivo.
Janelas, éEm
a chave de registro HKEY_LOCAL_MACHINE / SOFTWARE / Oracle / ROL /
olrconfig_loc.
Os recursos são registrados no OLR usando o utilitário crsctl. Estes registos incluem detalhes de
como iniciar e parar os recursos, as contas de exploração sob o qual deve ser executado e o que
fazer se eles falham. Os daemons GI fazer uso desta informação para gerir os recursos.
A utilidade crsctl também é usada para iniciar e parar os processos de IG, incluindo o OHASD, e
administrar
a recursos registrados. Uma ferramenta de administração alternativa é a utilidade srvctl.
srvctlos
gerir pode
recursos do Oracle, e não quaisquer produtos de terceiros que podem ter sido registrados e
sob controlo GI. Em geral, é muito mais fácil usar sintaticamente (e é menos propenso a erros) do
colocados
que o utilidade.
crsctl

EXAME TIP processos GI e quaisquer recursos pode ser administrado com o utilitário crsctl. o
utilitário pode gerenciar apenas os recursos do Oracle; que não possa gerir GI ou de terceiros
srvctl
recursos.
ASM Arquitetura
ASM é um gerenciador de volume lógico (LVM) que pode ser usado para configurar listrada e
volumes
para armazenar
espelhados
arquivos de banco de dados Oracle. Estes volumes são conhecidos como grupos de
discos . Grupos
formatado com um
de discos
sistemanão
desão
arquivos que é visível para o sistema operacional; eles podem ser
usados somente
arquivos de banco
para
de Oracle
dados, e estes arquivos podem ser gerenciados apenas com produtos e
utilitários Oracle. a relação entre um arquivo ASM e um arquivo de banco de dados Oracle, estudar a
Para entender
diagrama
entity-relação apresentada na Figura 3-1 .
Figura 3-1 modelo de armazenamento A ASM

arquivos ASM residir em um grupo de discos, que consiste em um ou mais discos ASM. Os
discos ASM
formatado são
em unidades de atribuição (AUS). UA são agrupados em extensões de arquivo e um
arquivo
mais extensões
consistedeemarquivo.
um ou Há, com efeito, um relacionamento muitos-para-muitos entre arquivos
ASMarquivo
Um e discos
pode
ASM.ser espalhado por diversos discos e um disco pode conter partes de muitos
arquivos. Tãorelacionais,
engenheiros bom não permitimos muitos-para-muitos relacionamentos; este é resolvido de
duas entidade
pela maneiras:de grupo disco e pela extensão de arquivo e via UA. Qualquer medida um arquivo
consiste
UA consecutivos
em em um disco ASM. Um arquivo ASM é definido por seu mapa medida , ou seja, a
lista de para os locais físicos de suas extensões de arquivo.
ponteiros
ASM é gerido pela instância ASM. A instância ASM consiste em componentes de memória e
os processos de fundo; é uma estrutura leve que gerencia o ambiente ASM. Ele rastreia o
mapas medida em que definem os locais de arquivos, adicionar ou remover extensões de arquivos
para ou a partir
demandas de arquivos
da instância RDBMSde acordo com o arquivo.
utilizando
A instância ASM tem uma área global do sistema (SGA), e aceita sessões da mesma forma que
uma instância RDBMS faz, mas nunca é de qualquer modo diferente de nomount. Uma instância
ASM não
monta um controlfile; ele tem nenhum dicionário de dados. Portanto, a única maneira de logon é
usando operacional
sistema de autenticação ou a autenticação de arquivo de senha.
O bootstrap ASM faz o seguinte:

1. O sistema operacional inicia os processos GI.

2. GI inicia a instância ASM.


3. O exemplo ASM localiza os dispositivos de disco ASM.
4. A instância ASM monta os grupos de discos e registra-los com GI.
5. A instância RDBMS começa.
6. instância O RDBMS precisa de um arquivo que está em um grupo de discos ASM.
7. O RDBMS solicita o endereço instância ASM de GI.
8. A instância RDBMS inicia sessão para a instância ASM e solicita acesso ao arquivo ASM.
9. A instância ASM retorna mapa extensão do arquivo.
10. instância O RDBMS abre o arquivo.

Em resumo, ao abrir um arquivo ASM, GI facilita a conexão entre os RDBMS e


instâncias ASM, e, em seguida, o exemplo ASM facilita a ligação entre o exemplo RDBMS
eo arquivo.

EXAME TIP Nenhum dado sempre passa por uma instância ASM. Todos os I / O é entre o exemplo
RDBMS
eo arquivo. O exemplo ASM é apenas uma estrutura de controlo.

Um grupo de discos ASM pode armazenar apenas arquivos de banco de dados, mas é uma
incudes
definição
esses ampla
tipos de
dearquivos:
arquivos de banco de dados e
• Controlfiles
• Arquivos de dados
• tempfiles
• arquivos de log on-line
• arquivos de log Arquivo
• arquivo de parâmetro Server, o spfile
• Arquivo de senha
• RMAN backups
• arquivos de despejo Data Pump

Esses tipos de arquivo não pode ser armazenado em um grupo de discos ASM:

• O Início da Oracle
• arquivos de rastreamento ou o log de alerta
• arquivo de inicialização pfile A

• backups gerenciados pelos usuários

Discos ASM
O termo disco ASM é um pouco enganador, porque os dispositivos não são realmente discos. A
seguir,
as possibilidades:
são

• partições de armazenamento directamente ligados dispositivos (DAS)


• Dispositivos de rede de área de armazenamento (SAN)
• Network-attached storage (NAS) devices

dispositivos DAS são discos fisicamente conectadas ao servidor. Tipicamente, isto significa
algumadiscos
variação
SCSI ou do mesmo. Em versões anteriores, era possível dar todo o disco, prima para ASM
como um disco ASM. Este foi raramente aconselhável e não é mais possível. agora é necessário que
usar
os discos
uma tabela de partição, mesmo que este define apenas uma partição que cobre todo o disco. A
partição
em seguida,
é apresentado ao ASM.
dispositivos SAN vai geralmente ser listrado (e possivelmente espelhados) Os volumes de gestão
e conectado
por uma ao
matriz
servidor
de armazenamento
através de um canal de fibra óptica. Eles serão apresentados ao ASM como
unidade lógica
números (LUN). Não há limite prático para o tamanho que estes volumes podem ser. striping do
volumes com qualquer algoritmo RAID é considerado adequado irá melhorar o desempenho.
Mirroring pode ser habilitado no nível SAN ou geridas pela ASM.
dispositivos NAS será tipicamente volumes iSCSI ou arquivos NFS. Um dispositivo iSCSI é
exportada
da rede por umapara o
máquina de destino iSCSI e montado no servidor de banco de dados por um
iniciador existirá
arquivos iSCSI. NFS
como grandes arquivos de zero preenchidos em um volume NFS exportado a partir
de umservidor
pelo servidordeNFS
banco
e montadas
de dados. O armazenamento subjacente para dispositivos NAS pode, é claro,
asercamada
um dispositivo
NAS irá esconder
RAID; este de ASM. A conexão de rede local entre o banco de dados
servidor e servidor de armazenamento deve ser de alta velocidade e dedicada a esta função.
multipathing éacrescentar largura de banda e capacidade de resistência contra falhas de rede.
aconselhável
DAS, dispositivos SAN ou iSCSI (que não devem ser formatados com qualquer sistema de
por arquivos)
seus drivers
sãodeidentificados
dispositivo. arquivos NFS são identificados pelo seu nome de arquivo totalmente
qualificado.
instância ASMDe precisa
qualquerdeterminar
maneira, oquais os dispositivos que ele deve usar. Um exemplo ASM é
controlado
arquivo de parâmetro,
por um da mesma forma como uma instância RDBMS. Um parâmetro crítico é
ASM_DISKSTRING. Esta é uma lista separada por vírgulas de valores (o que pode incluir
caracteres universais
caracteres) que identificam os discos ASM. A forma de nomear os dispositivos, e, por conseguinte,
para osno
incluir valores
ASM_DISKSTRING, é plataforma específica. Estes são os valores padrão para alguns
sistemas operacionais populares:
É importante notar que o valor padrão pode encontrar discos que não são destinados ao uso do
esteASM. E seé imperativo para definir o parâmetro de tal forma que ele vai encontrar apenas
é o caso,
dispositivos apropriados.
Criando discos ASM
criação do disco será feito pelo administrador do sistema. Subsequentemente, cada dispositivo de
disco será
acedido através de um controlador de dispositivo. Os drivers de dispositivo são criados pelo sistema
operacional
Durante a inicialização,
como ele inicia.
o sistema operacional verifica os vários autocarros de I / O e cria um driver
de dispositivo
dispositivo quepara cada Uma vez que este é um processo dinâmico, é possível que um qualquer
encontra.
dispositivo
para um driver
podedeser
dispositivo
atribuído diferente em cada boot. Além disso, após a criação, os drivers de
dispositivo
raiz de propriedade.
será
Para fazer com que os dispositivos utilizados por ASM, é necessário que os nomes se persistente
reiniciado
no sistema
e que os controladores de ser legível e gravável pelos processos Oracle. No Linux,
três técnicas para isso.
existem

• A biblioteca do kernel ASMLib Esta biblioteca está disponível para algumas distribuições
Linux,
dependendo da sua licença de Linux.
• O driver ASM Filtro Esta facilidade é fornecida a partir liberação 12.1.0.2 e pode substituir o
ASMLib. Ele adiciona funcionalidade que irá impedir que qualquer processo não-Oracle a
partir escrito
discos ASM. ao
• A instalação udev Esta instalação executa scripts escritos pelo administrador do sistema que
identificam
dispositivos e definir o dono e permissões apropriadas.

Para configurar dispositivos no Windows, a Oracle fornece o utilitário asmtool.exe. outros


sistemas
operacional
terão suas próprias técnicas específicas da plataforma para o gerenciamento de propriedade
de dispositivo e nome
persistência.
Se você estiver usando arquivos NFS como discos ASM, criá-los com comandos como estes, que
um criam
arquivo de 1 TB e dar acesso ao proprietário Oracle:

Os detalhes da criação de discos ASM estão fora do escopo do exame OCA, e há


muitas variações de plataforma.

Instalar Oracle Grid Infrastructure para um Stand-


Alone
Servidor
GI é instalado em um Oracle Home dedicado. O lançamento de GI deve ser maior ou igual ao
liberação de qualquer banco de dados que pretende utilizar os serviços GI. É, por exemplo, possível
para uma 12.1.
instalação para xatender
GI um 11.2. x banco de dados, mas não o contrário. GI deve ser sempre
sobre os mesmos nós que as instâncias de banco de dados. É, no entanto, possível em um ambiente
correndo
de cluster para
configurar Flex ASM, onde apenas um pequeno número de nós (por padrão, três) casos prazo ASM.
A mídia de instalação GI incluem uma cópia do Oracle Universal Installer (OUI). Executar este
(a
executável é o shell script runInstaller.sh em Unix e é o arquivo setup.exe no Windows) e siga
as instruções. Estes são os principais escolhas:

• Baixar atualizações de software Escolha se deseja registrar a instalação com My Oracle


Apoio para facilitar o download de patches e atualizações.
• Selecione a Opção de Instalação Que tipo caixa de diálogo deve a OUI presente de? As
opções
do seguinte
são modo:
• Instalar e configurar Oracle Grid Infrastructure para um cluster
• Instalar e configurar Oracle Grid Infrastructure para um servidor independente
• Melhora a Oracle Grid Infrastructure ou Automatic Storage Management da Oracle
• Instalar Oracle Grid Só Software de Infra-estrutura
• Criar ASM Disk Grupo Set o caminho descoberta ASM_DISKSTRING e escolher discos
para
ser utilizado para um grupo de discos.

A Figura 2/3 mostra a janela que solicita para a criação de um grupo de discos. Esta janela é
caixa
parte
de diálogo
do apresentadas pelas opções de instalação instalar e configurar.

Figura 3-2 Criando um grupo de discos ASM durante GI instalar

Na figura, observe que, por padrão redundância é configurado para Normal, o que significa que a
casomenos que especificado
contrário, cada extensão de todos os arquivos criados neste grupo de discos será espelhado. Isto
significa
grupo deve
quesero composto de pelo menos dois discos porque não haveria sentido em criar uma cópia
do mesmo
no espelho dispositivo como a cópia primária, e ASM não vai permitir isso. Os outros botões de
rádio osão
Alta, que significa que três cópias irá ser feita de cada medida (e, pelo menos, três discos são
necessários),
e externos, o que significa que ASM não irá espelhar em tudo, mas sim contar com a tolerância a
falhas
o meiofornecido
de armazenamento.
pelo
A unidade de alocação de tamanho padrão para 1MB. Isto tem um efeito knock-on do tamanho
primeiros
do arquivo
20.000 extensão.
extensões
o de qualquer arquivo são um UA, os próximos 20.000 extensões são
quatro
são 16 UA,
Aus. etamanho
além de UAque pode
eles ser definido como 1, 2, 4, 8, 16, 32, ou 64 MB. Ela se aplica a todos
eosnunca
arquivos
podenosergrupo
alterado
de discos
após a criação do grupo de discos.

DICA As opiniões estão tendendo para 4MB sendo o tamanho AU ideal para grandes sistemas e é
recomendada pela Oracle para instalações Exadata. Mas, no contexto da ASM, “grande” significa
“Realmente muito grande.” Na verdade, 1MB será bom para a maioria das instalações.

Na Figura 3-2 , sem discos são mostrados. Isso ocorre porque o caminho de pesquisa padrão não
nenhuma
detectou
seqüência
qualquerdoedisco ainda não foi definido. Clicando no botão Path Mudança Descoberta irá
pedir para odos discos ASM preparados, que irá então (se configurada corretamente) ser listados
localização
comooscandidatos
para membros do grupo de discos.
Se você estiver usando OUI para realizar uma atualização, a OUI detectará a instalação existente
transferir
e sua configuração para a casa GI recém-instalado. Não é possível ter duas instâncias do GI
rodando em uma máquina ao mesmo tempo, e os assistentes de instalação vai cuidar de desativar a
versão anterior.
É considerada a melhor prática para instalar GI sob um usuário do sistema operacional diferente
software
do quedeobanco de dados. Isto é para permitir a separação de tarefas: um usuário OS pode
gerenciarde
recursos o armazenamento
alta disponibilidade,
de GItornando-os
e disponíveis para vários DBAs que cada um tem o seu
próprioEm
conta. sistema
um pequeno
operacional
site, onde o administrador GI eo DBA são a mesma pessoa, não há nenhuma
necessidade de seguir esta regra. No entanto, o sistema operacional será sempre separar estes papéis
através da utilização de grupos de sistema operativo. O administrador GI deve ser um membro do
grupo. O nome deste grupo é codificado em Windows como ORA_ASMDBA, eo grupo é
OSASM
criado implicitamente. No Unix, o grupo pode ter qualquer nome e deve ser criado antes de executar
OUI.
Exercício 3-1: Instalar grade Infra-estrutura Neste exercício, você irá instalar o software GI e
configurá-lo para uso. Supõe-se que o software foi baixado e descompactado. A rotina é
ligeiramente diferente no Windows e Linux.

1. Siga estes passos no Windows:


A. Inicie a caixa de diálogo OUI executando o arquivo setup.exe. Você vai precisar de fazer
issoprompt
a partirde
decomando
um começou com o privilégio Executar como administrador.
B. Na janela Download Software Updates, selecione o rádio Ignorar Software Updates

botão. Clique em Avançar.


C. Na janela Selecionar Opção de instalação, selecione Instalar Rede Software de Infra-
estrutura
Apenas botão de rádio. Clique em Avançar.
D. No Selecione Instalar janela Tipo, selecione a instalação de infra-estrutura Oracle Grid
paraStandalone
um botão Server. Clique em Avançar.
E. Na janela Selecionar Produto Idiomas, escolha quaisquer idiomas que deseja. Clique em
Avançar.
F. No Local de instalação Especifique, ajustar o diretório se você quer (o padrão é
geralmente muito bem). Clique em Avançar.
G. Na janela Verifica a Realizar Pré-requisito, qualquer “falhou” verificações devem ser
endereçadas
e uma decisão sobre se é provável que importa no seu caso. Avisos (para
exemplo, em relação às questões de segurança do Windows) geralmente pode ser
ignorado.
Todos caixa
Verifique
e cliqueaem
Ignorar
Avançar.
H. Na janela Resumo, clique em Instalar.
I. Após a conclusão da instalação, a janela Finish, mostrado a seguir, irá pedir-lhe para
executar
comando
o do sistema operacional necessário configurar GI para um servidor autônomo:
Na ilustração, o comando, que deve ser executado como administrador, é uma longa

comando sem quebras de linha (copy / paste será útil).

Depois de executar o comando, clique em Fechar para sair do instalador.


2. Siga estes passos no Linux:
A. Inicie a caixa de diálogo OUI em uma sessão gráfica, executando o script shell
runInstaller.
Isso não pode ser feito como o usuário root. Usando a mesma conta que foi usada para
instalação de software vai ficar bem (embora para um local de produção, que
Oracle
normalmente
separate OS user
seriatocriar
install
umGI).
B. Na janela Download Software Updates, selecione o rádio Ignorar Software Updates
botão. Clique em Avançar.
C. Na janela Selecionar Opção de instalação, selecione Instalar Rede Software de Infra-
estrutura
Apenas botão de rádio. Clique em Avançar.
D. Na janela Selecionar Produto Idiomas, escolha quaisquer idiomas que deseja. Clique em
Avançar.
E. Na janela privilegiada Operating System Groups, se você estiver executando o instalador
como
mesmo
o usuário que instalou o software Oracle, selecione o dba grupo para todos os três
(OSASM, OSDBA para ASM, e OSOPER para ASM).
grupos
F. Na janela Especificar Local de instalação, ajustar o diretório se você quer (o padrão
é geralmente muito bem). Clique em Avançar.
G. Na janela Verifica a Realizar pré-requisito, você pode geralmente ignorar os avisos.
Qualquer
cheques “falidos” devem ser abordadas. Por exemplo, uma falha do teste para uma NTP
daemon não importa; uma falha em permissões de arquivo o faria. Verifique a caixa
eTodos
cliqueIgnorar,
em Avançar.
H. Na janela Resumo, clique em Instalar.
I. executar scripts de configuração é uma janela pop-up que irá pedir-lhe para executar um
script
nomeado algo como /u01/app/12.1.0.grid/root.sh como root. Executar este script a partir
de uma aceitando
sessão, raiz os padrões para quaisquer solicitações. A figura seguinte mostra a
resultado de uma corrida típica:
J. Ainda em sua sessão de raiz, execute o comando gerado pelo script root.sh que vai
completar a configuração de um servidor autônomo. Este é um comando de
comprimento,
quebras de linha.
semNa ilustração anterior, o comando é como segue:

Após a conclusão, retornar à janela OUI e clique em OK e fechar.


3. Para confirmar a instalação bem-sucedida, use o utilitário crsctl. Isso vai estar no diretório
binsob o diretório escolhido para a instalação. Aqui está um exemplo no Windows:

Aqui está um exemplo em Linux:

Estes comandos mostram que o serviço de alta disponibilidade (HAS) está habilitado e que o
Event Management Daemon está em execução, como mostrado na ilustração a seguir:

4. Investigar a inicialização automática dos processos GI.


A. No Windows, GI é lançado por um serviço do Windows. Verifique sua configuração e
status
com o utilitário sc, como mostrado nesta ilustração:

B. No Linux, GI é lançado através do sistema rc. Procure o arquivo /etc/rc.d/init.d/init.ohasd


e links para ele em vários diretórios rc. Haverá também uma entrada em / etc / inittab
vai reaparecer o processo init.ohasd se ele falhar.
que

Broca Two-Minute
Configurar armazenamento para Automatic Storage Management da Oracle
• Um ASM lojas do grupo em disco apenas os arquivos de banco de dados; ele não tem sistema
de arquivos
• discos ASMnormal.
são DAS, dispositivos SAN ou NAS não formatados.
• A instância ASM é apenas uma estrutura de controlo; sem os dados passam através dele.

Instalar Oracle Grid Infrastructure para um servidor autônomo


• GI deve ser instalado em seu próprio Oracle Home.
• Configurar GI requer privilégios de root (Linux) ou Administrador (Windows).
• A cadeia de pesquisa disco ASM pode ser definido no momento da instalação ou alterado
posteriormente.
• Os daemons GI são lançados pelo sistema operacional na inicialização.

Auto teste
1 . Que tipos de arquivos e diretórios podem ser armazenados com ASM? (Escolha todos os
queA.se log
aplicam.)
Alerta
B. Controlfiles
C. Datafiles
D. arquivos de log redo online
E. diretório Oracle Home
F. tempfiles
2 . Qual dos seguintes arquivos de recuperação pode ser armazenado com ASM? (Escolha
todos
A. os que se de
arquivos aplicam.)
log redo Arquivo
B. conjuntos de backup do RMAN
C. RMAN cópias de imagem
D. backups gerenciados pelos usuários
E. A área de recuperação de flash
3 . Quais são as características padrão de arquivos ASM? (Escolha a melhor resposta.)
A. Os arquivos serão distribuídos para o desempenho, mas não espelhado para a segurança.
B. Os arquivos serão espelhados para a segurança, mas não listrado para o desempenho.
C. Os arquivos serão tanto listrado e espelhados.
D. Os arquivos não será nem listrado nem espelhados.
4 . Qual afirmação é correta sobre ASM e gerenciadores de volume lógicos (LVMs)? (Escolha
o

melhor resposta.)
A. ASM é em si um LVM e não pode trabalhar com um LVM de terceiros.
B. ASM pode usar volumes LVM se eles estão formatado com um sistema de arquivos.
C. Você pode usar ASM para striping ea LVM para espelhamento.
D. Você pode usar ASM para espelhamento eo LVM para distribuição.
5 . Como você pode se conectar a uma instância ASM? (Escolha a melhor resposta.)
A. Ao usar apenas a autenticação do sistema operacional
B. Usando a autenticação de arquivo de senha única
C. Usando autenticação dicionário de dados única
D. Ao usar qualquer sistema operacional ou a autenticação de arquivo de senha
6 . O que faz stripe ASM? (Escolha a melhor resposta.)
A. Arquivos em todos os grupos de discos
B. discos em todos os grupos de discos
C. grupos de discos em todos os discos
D. arquivos em todos os discos em um grupo
7 . Você quer fazer serviços Grade de infra-estrutura disponível para o seu banco de dados.
Onde pode oser instalado? (Escolha a melhor resposta.)
software
A. Para o banco de dados Oracle Home se for a mesma versão
B. Em um Oracle Home em uma máquina acessível a todos os bancos de dados através de
uma rede
C. Em um Oracle Home dedicado em cada máquina que executa um banco de dados
D. Tudo o que precede
8 . Que utilitários que você pode usar para iniciar e parar os GI Alta Disponibilidade Services?
(Escolha
respostas
doiscorretas.)
A. crsctl
B. SQL * Plus
C. srvctl
D. utilitário de rede iniciar o Windows

Respostas de auto-teste
1. B , C , D , e F . Você pode usar ASM para arquivos de banco de dados, como o
arquivos
controlfile,
de dados,
o os arquivos temporários, e os arquivos de log on-line.
A e E são incorrectas. A está incorreta porque o alerta e arquivos de rastreamento deve
estar na
armazenamento convencional, e E é incorreta porque o Oracle Home deve estar em
armazenamento bem.
convencional

2. A , B , C , e E . Logs de arquivo, backups RMAN e cópias de imagem e na verdade


área toda
de recuperação de flash pode estar em ASM.
D está incorrecta. Você não pode dirigir backups gerenciados pelo usuário para ASM
porquedooperacional
utilitários sistema não pode escrever para dispositivos ASM.
3. C . Por padrão, os arquivos são tanto listrado e espelhados porque este é o padrão
a criação
quando
de um grupo de discos e será aplicada a todos os arquivos, a menos que
especificado
A , B , e em contrário.
D são incorrectas. A está incorreta porque a redundância normal de
espelhamento
padrão. B e D estãoé incorretas
a porque enquanto você pode desativar o espelhamento usando
aopção de redundância externo, você não pode desativar striping (e você não iria querer
para).
4. C . Esta é provavelmente a melhor maneira de usar ASM: contar com um LVM para
fornecer
tolerância culpapara fornecer striping do Oracle-aware.
e ASM
A , B , e D são incorrectas. A está incorreta porque um LVM pode ser usado para criar
os discosao ASM. B é incorrecta porque LVMs deve ser apresentado como dispositivos
apresentado
brutos, não tãosistemas de arquivos. D está incorreta porque você pode (e deve) usar duas
“Cozinhado”
camadas se
primeiro ao striping:
nível do hardware sobre volumes físicos, então ASM vai listra em cima destes.
5. D . A autenticação de arquivo de senha e sistema operacional vai funcionar.
A , B , e C são incorrectas. A e B são incorrecta porque ambas as técnicas podem ser
é incorrecto
usadas. Cporque uma instância ASM tem nenhum dicionário de dados.
6. D . Listras ASM arquivos em todos os discos do grupo.
A , B , e C são incorrectas. A está incorreta porque um arquivo só pode existir em um
grupo.incorretas
e C estão B porque é extensões de arquivos que são listrados, e não discos ou
7. diskgroups.
C . GI deve ser instalado em seu próprio diretório home.
A , B , e D são incorrectas. A está incorreta porque não é possível para o GI e
binários de banco de dados para coexistir em um Oracle Home. B e D são incorrecto porque
não é para um banco de dados para entrar em contato com GI através de uma conexão de
possível
8. rede.A e D . crsctl é a ferramenta Oracle desde que pode gerenciar os processos de IG, e
sobre
Janelas gerente de serviço também pode ser usado.
B e C são incorrectas. B está incorreta porque o SQL * Plus pode gerenciar uma
mas instância
não Gi. CASM,
está incorreta porque srvctl pode gerenciar GI registrado recursos, mas não
em si.
GI
CAPÍTULO 4

Usando o Oracle Restart

Objetivos do exame
Neste capítulo, você vai aprender a
• 62.2.5.1 Use a Oracle Restart para gerenciar os componentes
Este capítulo detalha o uso do Oracle Restart, que é a versão sem cluster de grade
A infraestrutura. Ele fornece a capacidade de gerenciar uma variedade de recursos Oracle. Uma vez
colocada os
controle, sobrecursos
GI podem ser iniciado e interrompido com os utilitários GI e reiniciado
automaticamente
caso de falha.

Usar o Oracle Restart para gerenciar os componentes


A Oracle Restart é um serviço prestado pelo GI. Ele consiste de um conjunto de processos iniciados
e monitorizados
o sistema operacional.
por Alguns destes processos são executados com a raiz (ou administrador)
privilégios,
executar como
e outros
o usuário sob o qual GI foi instalado. A Oracle de reinicialização pode ser
configurado
ou para iniciar automaticamente
manualmente.
Um recurso é, neste contexto, algo que pode ser gerido pelo GI. Todos os recursos são
registrados
no local Registro Oracle (ROL). Uma vez registrado, eles estão sob o controle da Oracle Restart.
Algumas ferramentas de configuração irá registar implicitamente recursos se detectar a presença de
um Oracle de reinicialização; outros não. Neste último caso, o recurso deve ser explicitamente
configuração
Uma vez cadastrado, um recurso pode ser iniciado ou parado ou com utilitários GI (que também irá
registrado.
levá
cuidar de parar ou iniciar quaisquer recursos dependentes) ou com os utilitários nativos para o
recurso.
De grande importância é a capacidade de alta disponibilidade. GI inclui um evento de
monitoramento
mecanismo que irá detectar qualquer mudança de estado de um recurso registrado, propagar
mensagensde
alterações sobre
estado e, se necessário, tente uma reinicialização automática de recursos falharam.

Administrar os processos Oracle Restart


Após a instalação do GI, os processos do Oracle Restart será iniciado automaticamente na
a inicialização do servidor. No Linux, o processo central é o daemon init.ohasd. Esta é lançado
atravésrc,decom
script um monitoramento e de respawn ativada por uma entrada no arquivo / etc / inittab. Se o
morrer (ou ser morto), o init irá reiniciá-lo. No Windows, a mesma função é fornecida pelo
daemon
serviço OracleOHService Windows, que lança, monitores, e reinicia o processo ohasd.exe.
Para controlar a Oracle Restart manualmente, utilize o utilitário crsctl. A Figura 1/4 mostra a
freqüentemente
utilização deusado
mais comandos crsctl para administrar o Oracle Restart em um sistema Windows. o
comandos são sintaticamente idêntico em Linux. Note-se que a maioria destes comandos podem ser
executados
somente por um usuário com Administrador (Windows) ou privilégios de root (Linux).
Figura 4-1 Usando o utilitário crsctl para gerenciar o Oracle Restart (Windows)

Estes são os comandos usados na Figura 4-1 :

Figura 4-2 mostra mais alguns comandos crsctl, desta vez em um sistema Linux.
Figura 4-2 Usando o utilitário crsctl para gerenciar o Oracle Restart (Linux)

Estes são os comandos usados na Figura 4-2 :

Administrando recursos registrados


Os recursos devem ser registradas com o Oracle Restart, se é para prestar um serviço de alta
disponibilidade
eles. Algumas ferramentas
para irá registrar recursos como eles são criados; outros não. Por exemplo, se
criar um banco de dados com o utilitário Assistente de Configuração de banco de dados (DBCA), ele
você
irá detectar
presença daaOracle Restart e executar comandos para registrar o banco de dados. Você pode ver
essesscripts
nos comandos
que DBCA gera. Se você criar o banco de dados com SQL * Plus, você deve registrá-lo
você mesmo. Se você criar um ouvinte com o Assistente de Configuração Net, será registada; se
criar um com o Net Manager, não será registrado. Se GI foi instalado após o outro
vocês
produtos já foram instalados, todos os recursos criados anteriormente devem ser explicitamente
registrado.
É possível registrar recursos com o utilitário crsctl, mas esta é uma ferramenta de uso geral eo
sintaxe para adicionar um recurso é, para dizer o mínimo, estranho. Ao registrar um recurso, você
precisa
dar a Oracle Restart, no mínimo, as seguintes informações:

• Exatamente como para iniciar, parar e monitorar o recurso

• O que fazer se o recurso falhar


• Em que outros recursos que podem depender

Além disso, a natureza da informação necessária será diferente para diferentes tipos de
Recursos. Uma alternativa muito melhor quando se trabalha com recursos do Oracle é usar o
utilitário
Este é pré-configurado
srvctl. com comandos para trabalhar com todos os recursos que um DBA é provável
quenoprecisam.
É, entanto, limitada aos recursos da Oracle; você não pode usá-lo para (por exemplo) registe-se
web Apache
ouvinte como um recurso gerenciado.
A sintaxe geral do utilitário srvctl é como se segue:

Os comandos normalmente utilizados são os seguintes:

Os objectos vulgarmente utilizados são os seguintes:


As opções usadas em um comando srvctl dependem do comando e da natureza do objeto.

DICA O utilitário srvctl tem uma facilidade de ajuda soberba. Execute -help srvctl , e você vai
ver o completo
sintaxe de cada comando para cada tipo de recurso. Infelizmente, você não pode fazer isso quando se
toma a
exame.

Para registrar um banco de dados, use um comando como este:

A primeira opção é a DB_UNIQUE_NAME da base de dados, o que irá (em geral) ser a
DB_NAME. A segunda opção é o Oracle Home off qual a instância que abre o banco de dados
correrá. Outras opções não utilizadas raramente permitem especificar grupos em disco necessário,
enomear
o arquivo
o spfile
de senhas, e controlar o início automático. Por padrão, o banco de dados será
de tal forma que a Oracle Restart vai iniciá-lo no modo aberto automaticamente. Para mostrar a
configurado
configuração
orclz banco dedodados, use este comando:

Esta é a forma de iniciar, parar e verificar o status de um banco de dados:

Os argumentos STARTOPTION e padrão STOPOPTION para abrir e imediata (como


mostrando). Outros valores STARTOPTION possíveis são NOMOUNT, montar e READONLY. De
outros
valores STOPOPTION são normais, transacional, e abortar.

TIP EXAME O utilitário srvctl está instalado em ambos um banco de dados Oracle Home and the
eHome
pode GI
serdo
executado
Oracle a partir de qualquer um. O utilitário crsctl está disponível apenas no GI Oracle
Home.
Reinicie Capability
Quando um recurso é colocada sob o controlo de reinicialização da Oracle, que vai ser monitorizada
por GI e em caso de fracasso. Um encerramento controlado do recurso (quer seja com o utilitário
reiniciado
ou com uma ferramenta nativa para o recurso) não vai desencadear um reinício.
srvctl

EXAME TIP Não há “verificação da realidade” ao usar SRVCTL ADD. O fato de que um banco de
dados é com êxito na ROL não significa que ele realmente existe.
registrado

comportamento de reinicialização é determinado pelo argumento POLÍTICA passado para o


ou para o SRVCTL
comando MODIFICAR
SRVCTL ADD comando posteriormente. O valor padrão é permitir o reinício
automático.

Exercício 4-1: Configurar um banco de dados para Oracle Restart Neste exercício, você
registrar
banco deodados
seu com o Oracle Restart. Supõe-se que o exercício 3-1 foi concluída.

1. A partir de um prompt do sistema operacional, confirme que o OHASD está configurado e


funcionando.
que você precisará
Nota de privilégios de administrador ou de raiz, e garantir que o seu caminho
dediretório
o pesquisabin
inclui
em casa GI. Em seguida, utilizar o utilitário crsctl como se segue:

2. Demonstrar que o processo de GI que implementa o Oracle Restart é em si protegidos contra


falha por parte do sistema operacional. No Linux, como o usuário root, identificar o número
do processo
daemon do matá-lo. Use estes comandos, substituindo qualquer que seja o número do
e depois
processo
seu processo
de init.ohasd é para 12345:

No Windows, use o Gerenciador de tarefas para localizar o processo ohasd.exe e, em


seguida,
botão de clique
tarefa para
no Fim
matá-lo.
Observe que o processo é reiniciado, com um diferente ID do processo, em questão de
segundos.
3. Use o utilitário srvctl para registrar o seu banco de dados com o Oracle Restart. Você pode
confiar
para em
todos
padrões
os argumentos, exceto o nome único banco de dados e o Oracle Home. Se você
tem o
ORACLE_HOME variável de ambiente definida para a casa do banco de dados, você pode
usá-lo. Aqui
exemplo em Linux
está umcom um banco de dados chamado orclz:

4. Verifique se o banco de dados foi registrado com êxito e, em seguida, verificar o seu status.

O banco de dados será relatado como “não execução,” se é ou não. Isso é porque ele não tem
foi iniciado desde que foi registrado.
5. Força GI para realizar uma verificação da realidade através da emissão de um comando de
partida
novamente.
e, em seguida, verificar o estado

A ilustração a seguir mostra as etapas 2 a 4 em um sistema Windows:


6. Experiência com comandos de inicialização e desligamento, ambos com srvctl e com o SQL
* Plus.
Verifique o status de cada vez.
7. Enquanto o banco de dados está em execução, demonstram a capacidade de reinicialização.
Nocomando
Linux, use
para
o psidentificar o processo de fundo smon e depois matá-lo. Isto irá terminar a
instância imediatamente. No Windows, use o botão Gerenciador de tarefas Terminar tarefa
para matar processo.
oracle.exe o
Observe que a instância irá reiniciar dentro de segundos.
A ilustração a seguir mostra o teste de reinício exemplo em Linux:

A Oracle Restart pode proteger diferentes bases de dados de recursos, incluindo o Oracle
serviços
fornecido
e serviços de terceiros. Se a Oracle Restart já está instalado, então a maioria dos serviços da
instalado
Oracle posteriormente
ser registrado depois. será registrado durante a sua instalação. Se isso não foi feito, eles podem

Exercício 4-2: registrar um ouvinte como um recurso gerenciado Coloque o ouvinte banco de
dados sobReiniciar controlo e demonstrar a sua eficácia. O comando será necessário (sem linha
A Oracle
quebras) é como se segue:

Os valores padrão para os argumentos assumem que o ouvinte é chamado ouvinte, que o
ouvindo endpoint é 1521, e que a Oracle Home é a casa GI (que não estará correto se você
seguiu os exercícios até agora). Em seguida, verifique a sua configuração e status, parar e iniciar o
ouvinte, e observar o efeito de matar o processo do ouvinte com um utilitário do sistema operativo.
A seguir, são possíveis comandos (com um Windows Oracle Home):

Esta é uma maneira de simular uma falha no Windows:

No Linux, encontrar o ID de processo do processo tnslsnr e matá-lo.


Note-se que o ouvinte irá reiniciar dentro de alguns segundos.

Broca Two-Minute
Usar o Oracle Restart para gerenciar os componentes
• Controle do Oracle Restart com o utilitário crsctl.
• Administrar recursos do Oracle Restart-gerenciados com o utilitário srvctl.
• O processo OHASD é protegido pelo sistema operacional.
• componentes protegidas podem ser bancos de dados, ouvintes de banco de dados, a instância
ASMgrupos.
e disco ASM
• Se dependências ter sido configurada (por exemplo, entre uma base de dados e um grupo de
disco),
Restart
a Oracle
vai parar e iniciar-los em uma seqüência apropriada.

Auto teste
1 . Em que circunstâncias vai a Oracle Restart reiniciar um banco de dados? (Escolha duas
respostas.)
A. Se ele é parado com SQL * Plus
B. Se falhar após ser iniciado com o SQL * Plus
C. Se falhar após ser iniciado com o utilitário srvctl
D. Se for interrompida com o utilitário crsctl
2 . Existem várias técnicas para registrar um banco de dados com o Oracle Restart. Qual destes
técnicas não irá resultar em um registro bem-sucedido?
A. Use o comando DATABASE SRVCTL ADD do banco de dados para casa para adicionar
o banco de dados para a ROL e, em seguida, criar o banco de dados com SQL * Plus.
B. Crie o banco de dados com DBCA.
C. Criar um banco de dados e deixá-lo funcionando e, em seguida, instalar o GI e executar a
configuração
scripts. GI
D. Crie o banco
comando de dados
da casa gradecom SQL * Plus para
Infra-estrutura e, emadicionar
seguida,ousar o banco
banco de SRVCTL
de dados ADD
para a ROL.
3 . Após uma instalação padrão, os processos GI inicia-se automaticamente quando uma
máquina
é inicializado. Como você pode alterar esse comportamento de tal forma que deve ser
iniciado manualmente?
(Escolha a melhor resposta.)
A. Use o utilitário srvctl:

B. Use o utilitário crsctl:

C. Edite o arquivo / etc / inittab para remover a entrada que inicia o OHASD.
D. Use o utilitário gráfico DBCA para ajustar o modo de arranque.
4 . Seu banco de dados usa os grupos de discos ASM DATA e FRA para seu armazenamento.
Vocêbanco
registrar
de dados
o com o comando:

Qual das seguintes afirmações é correta? (Escolha a melhor resposta.)


A. Se você tentar usar srvctl para iniciar o banco de dados antes que a instância ASM
montou
grupos
o de discos, o banco de dados não será iniciado.
B. Se você tentar usar srvctl para iniciar o banco de dados antes que a instância ASM foi
iniciado,
instância
o ASM será iniciado automaticamente.
C. A $ ORACLE_HOME variável deve ser definida para a casa ASM para que o banco de
dados
instância pode localizar a instância ASM.
D. O comando registro falhará se o banco de dados não existe.

Respostas de auto-teste
1. B e C . A Oracle Restart irá reiniciar automaticamente depois de qualquer falha, não
bancoimporta
de dadoscomo
foi oiniciado.
A e D são incorrectas. Estes são incorretas porque a Oracle Restart não vai reiniciar um
banco de dados que é interrompido de forma ordenada, não importa o utilitário é usado para
2. isso.C . A instalação e configuração GI não inclui qualquer instalação para detectar e
registrar bancos de dados, ou não estão em execução no momento.
A , B , e D são incorrectas. B está incorreta porque se DBCA detecta a presença de GI,
ele e executar comandos apropriados. A e D estão incorretas porque inscrição no
irá gerar
a ROL pode ser feito antes ou depois da criação do banco de dados, executar o utilitário a
3. partirBde
. Aqualquer
utilidadecasa.
crsctl é a técnica suportado para desactivar o arranque automático do GI
processos.
A , C , e D estão incorrectos. A está incorreta porque o utilitário srvctl pode gerenciar
um Oracle
Recurso reiniciar-registrado, não a própria Oracle Restart. C está incorreta porque embora
você
poderia cortar no inittab sistema operacional e arquivos rc, não é uma técnica de suporte. D
éincorreto porque DBCA não pode gerenciar todos os componentes GI, apenas a bases de
4. dados.B . A Oracle Restart está ciente de dependências, e ele vai começar a ASM e montar
grupos
qualquer
de discos necessários.
A , C , e D estão incorrectos. A está incorreta porque dependências registradas vai
disto.cuidar
C está incorreta porque quando você está registrando um banco de dados, o
ORACLE_HOME
argumento deve apontar para o off casa qual a instância RDBMS será executado. D é
incorrecta
porque não há nenhuma “realidade” verificar ao adicionar entradas para o COV; os erros
mais tarde.
virá
PARTE II

SQL

Capítulo 5 DDL e objetos de esquema


Capítulo 6 DML e simultaneidade
Capítulo 7 Recuperação, Restringindo e classificando dados usando SQL
Capítulo 8 de Uma Única Linha e conversão Funções
Capítulo 9 Funções de Grupo
Capítulo 10 SQL junta
Capítulo 11 Subqueries e operadores de conjunto
CAPÍTULO 5

DDL e objetos de esquema

Objetivos do exame
Neste capítulo, você vai aprender a
• 061.10.1 Categorizar banco de dados principal Objects
• 061.10.2 Explicar a estrutura da tabela
• 061.10.3 Descrever os tipos de dados que estão disponíveis para Columns
• 061.10.4 criar uma tabela simples
• 061.10.5 Explique como as restrições são criadas no tempo de criação de tabelas
• 061.10.6 descrever como objetos de esquema Trabalho
Este capítulo contém várias seções que não estão diretamente testados pelo exame, mas são
conhecimento pré-requisito para todos os alunos. Duas ferramentas utilizadas extensivamente para
considerados
exercícios
SQL Developer,
são SQL
que*são
Plusabordados
e neste capítulo. especialistas da Oracle usá-los todos os dias em
sua
trabalhos. Os exercícios e muitos dos exemplos são baseados em dois conjuntos de demonstração de
dados,
o RH econhecidos
esquemas OE,
comofornecido pela Oracle. Há instruções sobre como iniciar as ferramentas e
criar os esquemas de demonstração.

Os tipos de dados primitivos e a estrutura da tabela organizada-pilha padrão são as primeiras


mensagens
capítulo neste
que estão diretamente medido no exame. O capítulo se move para definir os tipos de objetos
são dependentes de tabelas (índices, restrições e visitas) e, em seguida, sequências e sinónimos.
que
Tudo tipos
estes de de objeto será usado durante todo o restante deste livro.

Use as ferramentas de cliente


Inúmeras ferramentas podem ser usadas para conectar a um banco de dados Oracle. Dois dos mais
ebásicos são SQL *Estes
SQL Developer. Plus são fornecidos pela Oracle Corporation e são adequados para a maior parte
trabalhar que um desenvolvedor ou um administrador de banco de dados precisa fazer. A escolha
do
entre
de preferência
eles é uma
pessoal,
questãoem parte, a ver com o ambiente e, em parte, a ver com a funcionalidade. SQL
Desenvolvedor, sem dúvida, oferece muito mais funcionalidade do SQL * Plus, mas é mais exigente
em precisa
ele que de um terminal gráfico, enquanto SQL * Plus pode ser usado em dispositivos de modo
personagem.
A ferramenta que já dura mais longo é o SQL * Plus, e apesar de Oracle Corporation está
SQLpromovendo
Developer fortemente como um substituto, os técnicos que trabalham no ambiente Oracle
ser bem aconselhados a se familiarizar com o SQL * Plus.

SQL * Plus
SQL * Plus é uma ferramenta cliente-servidor para se conectar a um banco de dados e emitir
comandos
também pode
SQL seradusado
hoc. isto
para a criação de código de PL / SQL e dispõe de instalações para resultados
de formatação.
todas Ele está
as plataformas emdisponível em o banco de dados; as seções que seguem dar algum detalhe
que foi portado
sobre*como
SQL Plus no
usarLinux e Windows. Não há diferenças significativas com o uso do SQL * Plus em
outra plataforma.
qualquer
Em termos de arquitetura, SQL * Plus é um processo de usuário escrito em C. Ele estabelece
umauma
ocorrência
sessão contra
e um banco de dados sobre o protocolo Net Oracle. As plataformas para o cliente eo
pode ser diferente. Por exemplo, não há nenhuma razão para não usar SQL * Plus em um PC com
servidor
Windows
um banco para conectar-se
de dados rodando em um servidor Unix (ou o contrário), desde que a Oracle Net tem sido
configurada para fazer a ligação.

SQL * Plus no Linux


O arquivo executável SQL * Plus em uma instalação Linux é sqlplus. O local desse arquivo será
instalação específica, mas será tipicamente algo como isto:

Sua conta Linux deve ser configurado adequadamente para executar o SQL * Plus, mas você
precisará definir alguns
variáveis ambientais. Estas são as seguintes:
ORACLE_HOME
CAMINHO
LD_LIBRARY_PATH
Os ORACLE_HOME variável aponta para o Oracle Home. Um Oracle Home é o Oráculo
instalação de software, ou seja, o conjunto de arquivos e diretórios que contêm o código executável
e alguns dos arquivos de configuração. O caminho deve incluir o diretório bin contido dentro do
Oracle Home. O LD_LIBRARY_PATH deve incluir o diretório lib, também contido dentro do
Oracle Home, mas na prática você pode começar afastado sem definir isso. Figura 5-1 mostra um
Linux
janela de terminal e alguns testes para ver se o ambiente está correto.
Figura 5-1 Verificação da configuração da sessão Linux

Na Figura 5-1 , em primeiro lugar as verificações comando echo se as três variáveis foram
criadas Há uma ORACLE_HOME, e os diretórios bin e lib em que foram definidas como a
corretamente.
elemento do caminho e o primeiro elemento das variáveis LD_LIBRARY_PATH, respectivamente.
última
Então, o que comando confirma que o arquivo executável SQL * Plus é realmente disponível no
Finalmente, o SQL * Plus é lançado com um nome de usuário, uma senha e um identificador de
PATH.
aconexão
linha depassado paraSeele
comando. osem
testes não retornam resultados aceitáveis e SQL * Plus não iniciar, você
deve discutir este assunto com o administrador do sistema e o administrador do banco de dados.
Algo com
erros comum
o logon em si são descritos na seção “Criando e testando um banco de dados
Connection”mais adiante neste capítulo.
O formato do texto de logon é o nome de usuário do banco de dados seguido por um caractere de
um barra
delimitador,
como então uma senha seguido por um símbolo @ como um delimitador e, finalmente,
um Oracle Net
conectar identificador. Neste exemplo, o nome de usuário é o sistema, cuja senha é admin123, eo
banco de dados é identificado por coda.
Após o logon, as próximas linhas de texto exibir a versão do SQL * Plus sendo usado, o que é
12.1.0.0.2; a versão do banco de dados para o qual foi feita a conexão (que passa a ser
o mesmo que a versão do SQL * Plus ferramentas); e que as opções foram instaladas dentro do
base de dados. A última linha é o prompt para o usuário, SQL>, altura em que o usuário pode inserir
SQL * Plus ou comando SQL. Se o logon não terá êxito com qualquer nome de usuário
qualquer
(provavelmente
sistema) nãoalocado, você deve discutir este assunto com o seu administrador de banco de
tiver sido
dados.
SQL * Plus no Windows
Historicamente, sempre houve duas versões do SQL * Plus para Microsoft Windows: o personagem
versão ea versão gráfica. A versão personagem era (e ainda é) o arquivo executável
sqlplus.exe, e a versão gráfica foi sqlplusw.exe. Com a versão atual e 11g, o
versão gráfica não existir mais, mas muitos desenvolvedores vão preferir usá-lo, e as versões
com versões anteriores são perfeitamente boas ferramentas para trabalhar com um 12 c banco de
enviado
dados. Nãocom
problemas há a mistura de versões; a 12 c SQL * cliente Plus pode conectar-se a 10 g de banco de
dados,* ePlus
SQL a 10cliente
g pode se conectar a um 12 c banco de dados. Após uma instalação padrão de
qualquer
banco de um
dados
Oracle
ou apenas um cliente Oracle no Windows, SQL * Plus estará disponível como um
atalhoIniciar
menu no do Windows. A localização do arquivo executável lançado pelo atalho será tipicamente
algo como o seguinte:

No entanto, o caminho exato será específico de instalação. A Figura 5-2 mostra um início de
SQLsessão
* Plus,
a um
lançado
bancoa de
partir
dados
do atalho.
com A primeira linha de texto mostra a versão do SQL * Plus, que
éo lançamento 12.1.0.0.2, eo tempo que o programa foi lançado. A terceira linha de texto é um início
de sessão
pronto.
Figura 5-2 Um logon banco de dados com SQL * Plus para Windows

Isto é seguido pela seqüência de logon inseridos manualmente, que é a seguinte:

Uma mudança que algumas pessoas gostam de fazer para o atalho que lança SQL * Plus é para
imediatamente
evitar que ele
apresentar um prompt de logon. Para fazer isso, adicione a opção nolog ao final do
comando.

Não há razão para não lançar SQL * Plus a partir de um prompt do sistema operacional ao invés
do do menu Iniciar; basta abrir uma janela de comando e executá-lo. O programa irá
Atalho
solicitará um logon, a menos que você execute-o com a chave nolog descrito anteriormente.
imediatamente

Criar e testar uma conexão de dados


O SQL * Plus não tem qualquer forma de armazenar detalhes de conexão de banco de dados. Cada
vez que um
conectar usuário
a um bancoquer
de dados, o usuário deve informar SQL * Plus quem são e onde o banco de
dados é. tem
variações dependendo instalações de segurança específicas do local, mas os meios mais comuns de
-se ao banco de dados é através da apresentação de um nome de usuário e uma senha maiúsculas de
identificação
minúsculas. formas
tipicamente Há doisde identificador de ligação utilizada para identificar o banco de dados: quer
fornecendo
que um alias
é resolvido em detalhes de conexão completos ou digitando os detalhes completos.
A partir de um prompt do sistema operacional, estes comandos irá lançar SQL * Plus e conectar-
se como
usuário SCOTTbasecuja
de dados
senha está tigre usando cada técnica:

O primeiro exemplo utiliza um alias, orcl, para identificar o banco de dados. Isso deve ser
conecte
resolvido
detalhes.
no total
As técnicas usuais para esta resolução de nomes são o uso de um arquivo de texto
armazenados
chamado o arquivo
localmente
tnsnames.ora (geralmente contido dentro do subdiretório network / admin do
ORACLE_HOME) ou entrar em contato com um diretório LDAP como o Active Directory ou do
Microsoft
Oracle’s Oracle Internet Directory (OID).
O segundo exemplo fornece toda a conexão detalhes em linha. Os detalhes de conexão
necessários
hostname são o
do computador no qual a instância do banco de dados está em execução, o Transmission
Protocol (TCP) porta na qual o ouvinte de banco de dados Oracle Net pode ser contactado, eo banco
Control
de dadosao qual o usuário quer o ouvinte de banco de dados para conectar-lo. A primeira técnica,
serviço
onde o precisa inserir apenas um apelido, exige que o administrador de banco de dados para
usuário
configurar a aresolução
mecanismo; segunda de nomes
técnica pode funcionar apenas se o usuário conhece os detalhes de conexão.
Há uma série de circunstâncias que fará com que uma tentativa de conexão SQL * Plus para
5-3 falhar.
ilustra Figura
alguns dos problemas mais comuns.

Figura 5-3 Alguns problemas de início de sessão comuns

Primeiro, o usuário lança SQL * Plus a partir de um prompt do sistema operacional Windows,
mudar
usando
para oimpedir
NOLOG que o prompt de logon imediata. Nenhum problema até agora.

Em segundo lugar, a partir do SQL> prompt, o usuário emite uma solicitação de conexão, que
errofalha com um bem
conhecido:

Este erro ocorre porque o identificador de conexão dado, wrongalias, não pode ser resolvido na
base de
detalhes da dados
ligação pela camada transparente de rede Substrate (TNS) da Oracle Net. O nome
método de resolução para ser usado e sua configuração são assuntos para o administrador de banco
de dados.
caso, o erro
Nisso
é óbvia: O usuário entrou o identificador de conexão errada.
A segunda tentativa de conexão dá o identificador correto, orcl. Esta falha com o seguinte:

Isso indica que o identificador de conexão resolveu corretamente no endereço de um banco de


ouvinte,
dadosmas que o ouvinte não está realmente funcionando. Note-se que uma outra possibilidade
seria que ode endereço está com defeito e está enviando SQL * Plus para o endereço errado. Após
resolução
esse erro,
usuário deve
o entrar em contato com o administrador de banco de dados e pedir-lhe para iniciar o
ouvinte. Em seguida,
O terceiro pedido tente novamente.
de ligação falha com o seguinte:

Este erro é gerado pelo ouvinte banco de dados. SQL * Plus encontrou o ouvinte sem
problemas, mas o ouvinte não pode fazer a conexão em diante para o serviço de banco de dados. O
mais provável
razão para isso é que a instância de banco de dados não foi iniciado, para que o usuário deve pedir ao
banco de dadospara iniciá-lo e tente novamente.
administrador
O quarto pedido de conexão falha com o seguinte:

Para receber esta mensagem, o usuário deve ter contactado o banco de dados. O usuário tem
obtido
todos através de rede possíveis, a instância de banco de dados está em execução e o banco de
os problemas
dados em
aberto pelosiexemplo.
tem sido O usuário só tem a senha ou nome de usuário errado. Note que a mensagem
não indica se é a senha ou o nome de usuário que está errado; se fosse a fazê-lo, seria
estar dando informações no sentido de que o outro estava certo.
Finalmente, a quinta tentativa de conexão bem-sucedida.

DICA O exemplo anterior demonstra uma técnica de resolução de problemas que você vai usar com
freqüência.
algo falhar, E
o trabalho
se através do que ele está fazendo passo a passo. Ler cada mensagem de erro.

SQL Developer
SQL Developer é uma ferramenta para se conectar a um banco de dados Oracle (ou, de fato, bancos
de dados alguns
também) e emitirnão-Oracle
comandos SQL ad hoc. Ele também pode gerenciar objetos PL / SQL. Ao
contrário de SQL * Plus, é uma

ferramenta gráfica com assistentes para acções comuns necessárias. SQL Developer é escrito em
Java e um Java Runtime Environment (JRE) para ser executado.
requer
Sendo escrito em Java, SQL Developer está disponível em todas as plataformas que suportam o
apropriado
versão do JRE. Não há diferenças significativas entre plataformas.

Instalando e iniciando o SQL Developer


SQL Developer não está instalado com o Oracle Universal Installer, que é usado para instalar todos
os outros Oracle. Ela não existe em um Oracle Home, mas é um produto completamente auto-
produtos
suficiente.
versão maiso recente pode ser baixado do site da Oracle Corporation.

DICA Uma instalação do 12 c banco de dados irá incluir uma cópia do SQL Developer, mas não
será o Atual. Mesmo se acontecer de você ter uma instalação do banco de dados, normalmente você
Versão
vai querer
instalar a versão atual do SQL Developer também.

Para instalar o SQL Developer, descompacte o arquivo ZIP. Isso é tudo. Ele requer um JDK, o
MeioJava
Ambiente,
Runtimeque estará disponível; isso vem de Oracle. Mas se um JDK apropriada não é já
disponível na máquina que está sendo usado, há versões para download de SQL Developer para
Windows que incluí-lo. Para outras plataformas que não o Windows, o JDK deve ser pré-instalado.
a partir do site da Oracle e instalar de acordo com as instruções específicas da plataforma. Para
baixar
JDK estáse
verificar disponível
o com a versão correta, a partir de um prompt do sistema operacional, execute o
comando:
seguinte

Isso deve retornar algo como o seguinte:

Se isso não acontecer, usando o qual comando java podem ajudar a identificar o problema; o
caminho uma
ser localizar de pesquisa poderia
versão incorreta.
Uma vez que SQL Developer foi descompactado, alterar o diretório atual para o diretório no qual
SQL Developer foi descompactado e lançá-lo. No Windows, o arquivo executável é
No Linux, é o shell script sqldeveloper.sh. Lembre-se de verificar se o ambiente DISPLAY
sqldeveloper.exe.
variável foi definida para um valor adequado (como 127.0.0.1:0.0, se SQL Developer está sendo
executado
console dono
sistema) antes de executar o script shell.
Qualquer problema com a instalação do JRE e lançamento de SQL Developer deve ser
administrador
encaminhado do sistema.
para o seu

A interface do usuário SQL Developer


A Figura 5-4 mostra o interface de utilizador SQL Developer depois de ligar a um banco de dados.

Figura 5-4 Interface desenvolvedor utilizador O SQL

O layout geral da janela do SQL Developer é um painel da esquerda para a navegação em torno
um depainel
objetos
da direita
e para apresentar e introduzir informação.
Na figura, o painel esquerdo mostra que uma ligação foi feita para um banco de dados. A
chamados
conexão orcl_sys.
é Este nome é apenas um rótulo escolhido quando a conexão foi definida, mas a
os desenvolvedores vão usar algum tipo de convenção de nomenclatura, neste caso, o nome
maioria
escolhido é o banco
identificador, que é orcl,
de dados
e o nome do utilizador a ligação foi feito como, o qual foi SYS. o
ramos abaixo lista todos os possíveis tipos de objetos que podem ser gerenciados. Expandir os ramos
iria listar os objetos em si. O painel direito tem uma parte superior solicitando que o usuário digite
um SQL e uma parte inferior que irá exibir o resultado da declaração. SQL Developer pode ser um
declaração
ferramenta, pois é altamente personalizável. Experimento com ele, ler a ajuda, e configurar a
útil
ainterface
maneirado usuário
que funciona melhor para você.
Criando uma conexão de dados
conexões de banco de dados podem ser criados e salvos para reutilização. A janela onde as ligações
podem ser
definido pode ser alcançado escolhendo o símbolo + visíveis na guia Conexões mostrado
anteriormente
Figura 5-4 . em
O nome para a conexão é arbitrária. O nome de usuário e senha devem ambos ser fornecido, mas
apenas o nome de usuário serão salvas a menos que a caixa de seleção Salvar senha é selecionado.
Salvando uma senha
significa que futuras ligações podem ser feitas sem qualquer solicitação de senha. Isto é conveniente,
mas
altamente perigoso se houver qualquer possibilidade de que o computador que você está trabalhando
não é seguro.
verdade, vocêDentro
está delegando a autenticação para o seu sistema operacional local; se você pode fazer
logonpode
você em que,
fazer logon no banco de dados.
Supondo que você está usando SQL Developer para conectar a um banco de dados Oracle em
banco
vezdededados
um de terceiros, selecione a guia Oracle.
A caixa suspensa Função lhe dá a opção de se conectar como sysdba . Uma ligação é sysdba
necessária antes de certas operações particularmente graves (como a inicialização do banco de dados
e desligamento)
ser realizada. Isso
pode
nunca vai ser necessário para os exercícios abordados neste livro.
Os botões Tipo de conexão de rádio deixá-lo escolher entre cinco opções:

• Básico Este solicita o nome da máquina do servidor de banco de dados, a porta na qual o
ouvinte de banco de dados vai aceitar pedidos de ligação, ea instância (o identificador da
sessão
[SID]) ou o serviço para o qual a conexão será feita.
• TNS Se um método de resolução de nomes foi configurado, então um alias para o banco de
dados
selecionado
pode ser(a partir do arquivo tnsnames.ora local) ou inseridos, ao invés de todos os
detalhes
opção básica.
necessários para o
• LDAP definições de serviço de banco de dados e seus detalhes de conexão que são
armazenadas
serviço de diretório
em um Lightweight Directory Access Protocol (LDAP) pode ser consultado por
especificando os detalhes do servidor LDAP.
• Avançada Esta permite a entrada de um total conectividade de banco de dados Java (JDBC)
ligar
Istocadeia.
é completamente o Oracle independente e poderia ser usado para se conectar a qualquer
banco de dadoscom
conformidade queo padrão JDBC.
• Local / legar Se o banco de dados está sendo executado na mesma máquina como seu SQL
Developer
cliente, esta opção permite que você conecte diretamente a um processo de servidor,
ignorando
ouvinte. a rede

Seleção de Base exige que o usuário saiba como se conectar ao banco de dados; selecionando
alguma
TNSconfiguração
exige ter sido feito na máquina do cliente pelo administrador de banco de dados para
que opode ser resolvido em detalhes conexão completa.
alias

Categorizar banco de dados principal Objects


Vários tipos de objetos podem existir dentro de um banco de dados, muitos mais com a versão atual
do que com
versões. Todos
mais
oscedo
objetos têm nomes, e todos os objetos são propriedade de alguém. O “alguém” é
base de dados de utilizador, tais como AR. Os objetos que o usuário possui são o seu esquema . O
uma
nome de um
obedecer a certas
objetoregras.
deve

Tipos de objeto
Esta consulta lista a contagem por tipo de objeto para os objetos que acontecem a existir neste banco
de dados específico:
Esta consulta aborda a DBA_OBJECTS vista, que tem uma linha para cada objeto no
base de dados. Os números são baixos, porque a base de dados é um pequeno usado apenas para o
ensino.deUMA
banco dados usado por um aplicativo de negócios geralmente tem muito mais objetos. Você pode
anão visão
ser DBA_OBJECTS
capaz de ver porque depende de que foram concedidas permissões para o seu
conta. visões alternativas são USER_OBJECTS, que irá mostrar todos os objetos de sua propriedade,
eALL_OBJECTS, que irá mostrar todos os objetos para o qual tenha sido concedido o acesso
seu próprio). Todos os utilizadores têm acesso a esses pontos de vista. Em uma 12 c da base de
(incluindo
dados, umacom
prefixado camada
CDB_ adicional
foi adicionado
de pontos
paradefacilitar
vista o novo recurso de banco de dados multitenant
que, logicamente,
separa uma base de dados tradicional para um recipiente e, opcionalmente, várias bases de dados
conectáveis.
Os objetos de maior interesse para um programador de SQL são aqueles que contêm, ou dar
dados.
acesso
Estes
a, incluem tabelas, vistas, sinónimos, índices e sequências.
Tabelas basicamente armazenar dados em linhas segmentadas por colunas. A vista é uma
que instrução
pode ser referenciada
SELECT armazenados
como se fosse uma tabela. Não é nada mais do que uma consulta nomeada.
Ao invés adeinstrução, o usuário emite uma instrução SELECT contra a visão. Com efeito, o utilizador
executar
éseleccionando a partir do resultado de uma outra selecção. Um sinónimo é uma abreviatura para uma
mesa (ou uma vista). Os usuários podem

executar instruções SQL contra o sinônimo, eo banco de dados irá mapear os em declarações contra
O objeto ao qual os pontos sinônimo. Os índices são um meio de melhorar os tempos de acesso a
linhas de
mesas. Se uma consulta requer apenas uma linha, em seguida, em vez de digitalizar a tabela inteira
para encontrar
índice pode fornecer
a linha,um
umaponteiro para a localização exata do linha. É claro, o próprio índice deve ser
mas este é muitas vezes mais rápido do que a digitalização da tabela. Uma sequência é uma
pesquisado,
construção
números que gera
emitir números.
seqüências em ordem sob demanda.
Os tipos de objetos remanescentes são menos comumente relevantes para um programador de
maisSQL. Suas
dentro do quedas
reino dedeprogramadores
uso PL / SQL e administradores de banco de dados.

Usuários e Esquemas
Muitas pessoas usam os termos do usuário e esquema alternadamente. No ambiente Oracle, você
pode obter
acabar com isso (embora não necessariamente com outros sistemas de gerenciamento de banco de
dados).pode
quem Umse usuário
conectar
é uma
ao banco
pessoade dados. O usuário terá um nome de usuário e uma senha. Um
esquema épara
container um os objetos pertencentes a um usuário. Quando um usuário é criado, seu esquema é
criado também.
esquema é os objetos
UMApertencentes a um usuário; Inicialmente, ele estará vazio.
Alguns esquemas estará sempre vazia; os usuários nunca irá criar quaisquer objetos porque eles
precisa
não efazem
(se configurado corretamente) não terá os privilégios necessários de qualquer maneira.
Usuários
terá sido permissões,
como este seja através de privilégios diretos ou através de papéis, para usar código
dados
possuirdemuitos
concedido acesso em outros
e objetos, masesquemas
nunca vaipertencentes a outros
realmente fazer logonusuários.
no bancoOutros utilizadores
de dados. Eles nãopode ser a
poderia
inversa da presente;
mesmo ter osido
concedido elas vão
privilégio SESSION CRIAR, então a conta está efectivamente desactivado (ou, na
bloqueado);
verdade ele pode
essesser
esquemas são usados como repositórios de código e dados acessados por outras
pessoas.
objetos de esquema são objetos com um proprietário. O identificador único para um objecto de
não um
é o tipo
seu nome;
específico
é o nome prefixado com o nome do esquema ao qual pertence. Assim, a mesa
HR.REGIONS é uma tabela chamada REGIÕES, que é propriedade do usuário HR. Não poderia
haver outra tabela
SYSTEM.REGIONS nomeados, o que seria uma tabela completamente diferente (talvez diferente
em ambose conteúdo) de propriedade pelo sistema de usuário e residentes no seu esquema.
estrutura
Um número de usuários (e seus esquemas associados) são criados automaticamente na criação de
Tempo.
banco Entre
de dados
estas estão SYS e SYSTEM. Usuário SYS é dono do dicionário de dados, que é um
conjunto de tabelas (no esquema SYS) que definem o banco de dados e seu conteúdo. SYS também
possui
cem pacotes
váriosPL / SQL, que consistem em código que é fornecido para o uso de banco de dados
administradores e desenvolvedores. Objetos no esquema SYS nunca deve ser modificado com dados
linguagem de manipulação (DML) comandos. Se você fosse para executar DML contra o dicionário
de dadosvocê corre o risco de corromper o dicionário de dados, com resultados desastrosos. você
tabelas,
o dicionário de dados, executando comandos DDL (tais como CREATE TABLE), que fornecem uma
atualizar
camada deentre você eo dicionário de dados. As lojas de esquema SYSTEM vários adicional
abstração
objectos usados para administração e monitorização.
Dependendo das opções selecionadas durante a criação do banco de dados, pode haver mais
Esses
usuários
usuárioscriado.
armazenar código e dados exigidos por várias opções de banco de dados. Por
exemplo, os
armazena os MDSYS
objetos usados
usuáriopelo Spatial, uma opção que estende os recursos de um banco de dados
Oracle para
gerenciar de informação geográfica.

Esquema de nomeação de objetos

Um objeto de esquema é de propriedade de um usuário e deve obedecer a certas regras:

• O nome pode ter entre 1 e 30 caracteres (com exceção de nomes de link de banco de dados
que pode ser de até 128 caracteres).
• Palavras reservadas (como SELECT) não podem ser usados como nomes de objetos.
• Todos os nomes devem começar com uma letra do alfabeto.
• Os nomes de objetos só podem incluir letras, números, o sublinhado (_), o cifrão ($), ou o
símbolo cardinal (#).
• As letras minúsculas serão convertidos automaticamente para maiúsculas.

Colocando o nome dentro de aspas duplas, todas essas regras (com exceção do comprimento)
pode
ser quebrado, mas para chegar ao objeto posteriormente, deve sempre ser especificado com aspas
duplas,
os exemplos
comonaemFigura 5-5 . Note-se que as mesmas restrições também se aplicam aos nomes das
colunas.
Figura 5-5 Usando aspas para usar nomes não padronizados

NOTA nomes objeto não mais de 30 caracteres deve ser. Os personagens podem consistir de letras e
dígitos, bem como os símbolos de sublinhado, dólar, e hash.

Embora ferramentas como o SQL * Plus e SQL Developer converterá automaticamente em


minúsculas

letras em maiúsculas, a menos que o nome é colocado dentro de aspas duplas, lembre-se que os
nomes
são de objetos
sempre maiúsculas e minúsculas. Neste exemplo, as duas tabelas são completamente diferentes:

DICA Embora seja possível usar nomes minúsculas e caracteres fora do padrão (mesmo espaços), é
considerado uma má prática por causa da confusão que pode causar.

Namespaces de objetos
De um modo geral, o identificador exclusivo para um objeto é o seu nome, que é ponto prefixado
com odo esquema. No entanto, para um entendimento completo de nomeação de objetos, é
nome
necessário
conceito deintroduzir
um namespace
o . Um namespace define um grupo de tipos de objetos, dentro do qual
todos
ser os nomes exclusivamente
identificada devem pelo esquema e nome. Objetos em diferentes namespaces podem
compartilhar
Estes tiposo de
mesmo nome.
objetos todos compartilham o mesmo espaço de nomes:

• Mesas
• Vistas
• Seqüências
• sinônimos privados
• procedimentos autônomos
• Funções autônomo armazenados
• Pacotes
• visões materializadas
• Tipos definidos pelo usuário e operadores

Assim, é impossível criar uma exibição com o mesmo nome de uma tabela se eles estão na
esquema.
mesmaUma vez que declarações criadas, SQL podem abordar uma visão como se fosse uma
tabela. Ovisualizações
tabelas, fato de que e sinônimos privados compartilham o mesmo espaço de nomes significa que
você pode configurar vários

camadas de abstração entre o que os usuários ver e as mesas reais, que pode ser inestimável para
a segurança e para simplificar o desenvolvimento de aplicações.
Estes tipos de objetos, cada um tem seu próprio namespace:

• Restrições
• Clusters
• gatilhos de banco de dados
• ligações de base de dados privados
• Dimensões

Assim, é possível (embora talvez não uma boa idéia) para um índice para ter o mesmo nome de
mesa,
ummesmo dentro do mesmo esquema.

EXAME TIP dentro de um esquema, tabelas, visualizações e sinônimos não pode ter o mesmo
nome.
Exercício 5-1: Determine quais objetos são acessíveis a sua sessão Neste exercício, consulta
várias visões de dicionário de dados como usuário HR para determinar o que os objetos pertencem
ao esquema
que objetos em
HRoutros
e esquemas são acessíveis a HR. Por favor, siga as instruções descritas no
Capítulo 7 para criar o esquema HR se ele está ausente do seu banco de dados.

1. Conecte-se ao banco de dados com SQL * Plus ou SQL Developer como usuário HR.
2. Determine como muitos objetos de cada tipo estão no esquema HR.

Os USER_OBJECTS visualizar listas de todos os objetos de propriedade do esquema ao


qual a corrente
sessão está conectada, neste caso HR.
3. Determinar quantos objetos em RH total de tem permissões.

Os ALL_OBJECTS visualizar listas de todos os objetos aos quais o usuário tem algum tipo
de acesso. quem possui os objetos HR pode ver.
4. Determinar

Listar os tipos de dados que estão disponíveis para


Columns
Ao criar tabelas, cada coluna deve ser atribuído um tipo de dados, o que determina a natureza do

valores que podem ser inseridos na coluna. Esses tipos de dados também são usados para especificar
a natureza dopara procedimentos e funções PL / SQL. Ao selecionar um tipo de dados, você deve
argumentos
considerar
dados que você
o precisa para armazenar e as operações que você vai querer realizar sobre ela. O
espaço é também
consideração. Alguns
um tipos de dados são de comprimento fixo, ocupando o mesmo número de bytes
não importa
dados é, na verdade
o que nele; outros são variáveis. Se uma coluna não é preenchida, o Oracle não vai dar
qualquer
espaço em tudo. Se, posteriormente, atualizar a linha para preencher a coluna, em seguida, a linha
vaioficar
se tipo maior,
de dados
nãoé importa
de comprimento fixo ou variável. Em 12 c banco de dados, um novo parâmetro
do sistema,
MAX_STRING_SIZE, permite que tipos de dados string para ser muito maior do que nas versões
anteriores,
alterado dequando
seu valor
é padrão da norma para Extended.
A seguir estão os tipos de dados para dados alfanuméricos:

• VARCHAR2 dados de caracteres de comprimento variável, de 1 byte para 4.000 bytes se


MAX_STRING_SIZE = STANDARD e até 32.767 bytes se
MAX_STRING_SIZE = EXTENDED. Os dados são armazenados no conjunto de caracteres
de banco de dados.
• NVARCHAR2 como VARCHAR2,
conjunto de caracteres, mas osdedados
um dos conjuntos são armazenados
caracteres na língua nacional
Unicode permitidos.
alternativa
• CHAR dados de caracteres de comprimento fixo, a partir de um byte para 2000 bytes, no
conjunto
Se os dados
de caracteres
não é o comprimento
da base de dados.
da coluna, então ele irá ser preenchido com espaços.

DICA Para conformidade com a Organização Internacional de Normalização (ISO) e da American


National Standards Institute (ANSI), você pode especificar um tipo de dados VARCHAR, mas
nenhuma
tipo serãocoluna
convertidos
desta automaticamente para VARCHAR2.

O seguinte é o tipo de dados para dados binários:

• RAW dados binários de comprimento variável, a partir de um byte de 4.000 bytes se estiver
MAX_STRING_SIZE = STANDARD e até 32.767 bytes se
MAX_STRING_SIZE = EXTENDED. Ao contrário dos tipos de dados CHAR e
VARCHAR2,
dados não são RAW
convertidos pela Oracle Net a partir de conjunto de caracteres do banco de
dados para
conjunto deocaracteres
usuário processo
em SELECT
de ou para o outro lado em INSERT.
O seguinte são os tipos de dados para os dados numéricos, todos comprimento variável:

• NÚMERO dados numéricos, para o qual você pode especificar precisão e escala. A precisão
pode
gama de 1 a 38, e a escala pode variar desde -84 a 127.
• FLUTUADOR um ANSI tipo de dados, número de ponto flutuante com uma precisão de 126
binário
decimal).
(ou 38
A Oracle também fornece BINARY_FLOAT e BINARY_DOUBLE como
alternativas.
• INTEGER Equivalente a NÚMERO, com escala de zero.

A seguir estão os tipos de dados de data e hora de dados, todos comprimento fixo:

• DATA Isto é, quer de comprimento zero, se a coluna está vazia, ou 7 bytes. Todos os dados
DATE
século,
inclui
ano, mês, dia, hora, minuto e segundo. O intervalo válido é de 1 de janeiro de 4712
BC, a 31 de Dezembro de 9999 AD.
• TIMESTAMP Este é o comprimento zero se a coluna está vazia, ou até 11 bytes, dependendo
doprecisão especificada. Isto é semelhante à data, mas com uma precisão de até nove decimal
lugares para os segundos e seis lugares por padrão.
• TIMESTAMP WITH TIMEZONE Isto é como TIMESTAMP, mas os dados são
armazenados
registro mantido
com umdo fuso horário para o qual se refere. O comprimento pode ser de até 13
bytes, dependendo
precisão. Este tipo de dados permite que a Oracle determinar a diferença entre duas vezes por
normalizando-os para Tempo Universal Coordenado (UTC), mesmo que os tempos são para
fusos horários.
diferentes
• TIMESTAMP WITH TIMEZONE LOCAL Isto é como TIMESTAMP, mas os dados são
normalizada para a zona de tempo do banco de dados sobre a poupança. Quando recuperado,
ele é normalizado
zona aoutilizador
do processo de tempo seleccionar.
• ANO intervalo para MÊS Isto é usado para a gravação de um período em anos e meses
entre duas datas ou marcas de tempo.
• INTERVAL DAY TO SECOND Isto é usado para a gravação de um período de dias e
segundos
entre duas datas ou marcas de tempo.

A seguir estão os grandes tipos de objeto de dados:

• CLOB dados de caracteres armazenados no conjunto de caracteres de banco de dados. O


tamanho é efetivamente
4GB menos ilimitada:
uma multiplicada pelo tamanho do bloco de dados.
• NCLOB como CLOB, mas os dados são armazenados no conjunto de caracteres do idioma
nacional
um dosalternativa,
conjuntos de caracteres Unicode permitidos.
• BLOB como CLOB, mas os dados binários que não vai sofrer conversão conjunto de
Líquido.pela Oracle
caracteres
• BFILE Um localizador apontar para um arquivo armazenado no sistema operacional do
servidor
O tamanho
de banco
dos arquivos
de dados.é limitado a 2 elevado à potência de 64 menos 1, embora o seu
sistema
pode teroperacional
outras idéias.
• LONGO Dados de caracteres no conjunto de caracteres de banco de dados, até 2GB menos 1.
Toda
de comprimento
a funcionalidade
(e mais) é fornecido por CLOB; LONGs não deve ser utilizado em um banco
edesedados
o seumoderno,
banco de dados tem quaisquer colunas deste tipo, eles devem ser convertidos para
CLOB.
Pode haver
Lá apenas uma coluna LONG numa tabela.
• LONG RAW como Long, mas os dados binários que não serão convertidos pela Oracle Net.
Qualquer
colunas RAW tempo deve ser convertido para BLOBs.

A seguir, o tipo de dados ROWID:

• ROWID Este é um valor codificado na base 64 que é o indicador para a localização de uma
linha
mesa.
numa
Ele é criptografado. Dentro dele é o endereço físico exato. ROWID é uma propriedade
da Oracle

tipo de dados que não é visível, a menos que especificamente seleccionado.

TIP EXAME Para o exame você vai esperar para saber sobre estes tipos de dados: VARCHAR2,
CHAR, número, a data, carimbo do tempo, INTERVALO, CRU, muito, muito RAW, CLOB, gota,
BFILE e ROWID. O conhecimento detalhado também serão necessários de VARCHAR2, número e
ENCONTRO.

O tipo de dados VARCHAR2 deve ser qualificada com um número que indica o comprimento
coluna.
máximo
Se umdovalor é inserido na coluna que é menos do que isso, não é um problema. O valor será
ocupar apenas tanto espaço quanto ele precisa. Se o valor for maior do que esse máximo, o INSERT
falhará
com um erro. Se o valor é atualizado para um valor maior ou menor, o comprimento da coluna (e
Por conseguinte, a própria linha) vai mudar em conformidade. Se não for inserido em tudo ou é
atualizado
ele vai ocupar
paranenhum
NULL, espaço
em seguida,
em tudo.
O tipo de dados NÚMERO pode opcionalmente ser qualificada com uma precisão e uma escala.
define
a precisão
o número máximo de dígitos decimais significativos, onde o algarismo mais significativo é o
dígito mais diferente de zero e o dígito menos significativo é o dígito mais à direita conhecido no
esquerdo
énúmero.
o númeroA escala
de dígitos do ponto decimal para o dígito menos significativo. Uma escala positiva é a
número de dígitos significativos para a direita do ponto decimal até (e incluindo) a menos
dígito. Uma escala negativa é o número de dígitos significativos para a esquerda do ponto decimal
significativo
em (mas não
incluindo) o dígito menos significativo.
O tipo de dados DATE inclui sempre século, ano, mês, dia, hora, minuto e segundo-even
Se todos esses elementos não são especificados em tempo de inserção. Ano, mês, dia e deve ser
especificado;
horas, minutosseeosegundos são omitidos, eles será o padrão para a meia-noite. Usando a função
TRUNC
uma dataemtambém tem o efeito de definir as horas, os minutos e os segundos para a meia-noite.

Exercício 5-2: Investigar os tipos de dados no esquema HR Neste exercício, descobrir o que os
tipos são usados nas tabelas no esquema HR, utilizando duas técnicas.
dados

1. Conecte-se ao banco de dados como usuário HR com o SQL * Plus ou SQL Developer.
2. Use o comando DESCRIBE para mostrar os tipos de dados em algumas tabelas.

3. Use uma consulta contra uma vista dicionário de dados para mostrar o que colunas compõem
os FUNCIONÁRIOS
mesa, como o comando DESCRIBE faria.

O USER_TAB_COLUMNS vista mostra o detalhe de cada coluna em cada tabela na


esquema do usuário atual.

Criar uma tabela simples


As tabelas podem ser armazenados no banco de dados de várias maneiras. O mais simples é a pilha
de mesa.
linhas Uma pilha constituída
de comprimento variável em ordem aleatória. Pode haver alguma correlação entre a ordem
em quesão inseridas e a ordem em que eles são armazenados, mas esta é uma questão de sorte. Mais
linhas
estruturas de tabela, como o seguinte, pode impor ordenação e agrupamento nas linhas ou forçar uma
avancado
distribuição aleatória:

• Índice organizadas mesas essas linhas de loja na ordem de uma chave de índice.
• aglomerados Índice Estes podem desnormalizar tabelas em relações pai-filho para que
relacionado
linhas de diferentes tabelas são armazenados juntos.
• agrupamentos hash Estes forçar uma distribuição aleatória de linhas, o que vai quebrar
qualquer
ordenação baseada na sequência de entrada.
• As tabelas particionadas essas linhas de loja em estruturas físicas separadas, as partições e
atribuir linhas de acordo com o valor de uma coluna.

Usando as estruturas de tabelas mais avançados não tem qualquer efeito sobre SQL. Cada
instrução
executada SQLtabelas definidas com estas opções retornarão os mesmos resultados que embora as
contra
foram tabelas de heap padrão, portanto, usando esses recursos não afetará código. Mas enquanto a
mesas
sua utilizaçãopara
transparente é os programadores, eles dão enormes benefícios em termos de desempenho.

Criando tabelas com a coluna Especificações


Para criar uma tabela de heap padrão, use esta sintaxe:

No mínimo, especificar o nome da tabela (que será criado no seu próprio esquema, se você não
de outra
especificar
pessoa) e pelo menos uma coluna com um tipo de dados. Há poucos desenvolvedores que já
ORGANIZAÇÃO MONTÃO porque este é o padrão e é SQL padrão da indústria. O padrão
especificam
palavra-chave em uma definição de coluna permite que você forneça uma expressão que irá gerar
um valor
coluna para ouma linha é inserida se um valor não é fornecido pela instrução INSERT.
quando
Considere a seguinte declaração:

Isto irá criar uma tabela chamada EMP no esquema SCOTT. Ou o próprio usuário SCOTT tem
emitir
quea declaração (caso em que nomear o esquema não seria realmente necessário), ou de outra
usuário pode emiti-lo se ele foi permissão para criar tabelas no esquema de outro usuário concedido.
Levando
as colunas de um por um, aqui está uma repartição:

• EMPNO pode ter quatro dígitos, sem casas decimais. Se nenhum decimais são incluídos em
umINSERT, eles serão arredondados (para cima ou para baixo) para o número inteiro mais
próximo.pode armazenar quaisquer caracteres em tudo, até dez deles.
• ENAME
• HireDate aceitará qualquer data, opcionalmente, com o tempo, mas se um valor não for
fornecido,
a data de hoje será inserido como a meia-noite.
• SAL, destinado salário do empregado, aceitará valores numéricos com até sete dígitos.
Um máximo de cinco dígitos pode ser à esquerda do ponto decimal. Se qualquer dígito mais
àdedireita
dois devem
do ponto decimal, eles serão arredondados.
• COMM (por percentual de comissão) tem um valor padrão de 0,03, que será inserido se o
INSERT não inclui um valor para esta coluna.
Após a criação da tabela, estas declarações inserir uma linha e selecione o resultado:

Note que os valores para as colunas não mencionados na instrução INSERT ter sido gerados por
as cláusulas padrão. Tinha essas cláusulas não foram definidos na definição da tabela, as colunas
faria
ter sido NULL. Observe também o arredondamento do valor fornecido para SAL.

TIP A cláusula padrão pode ser útil, mas é de funcionalidade limitada. Você não pode usar uma
subconsulta para gerar o valor padrão; você pode especificar valores somente literais ou funções ou
seqüências.
Criando tabelas de Subqueries
Em vez de criar uma tabela de nada e, em seguida, inserir linhas em que (como na secção anterior),
tabelas podem ser criadas a partir de outras tabelas usando uma subconsulta. Esta técnica permite
criar a tabela
definição e preencher a tabela com linhas com apenas um comunicado. Qualquer consulta em tudo
apode
fonte
serdeusado
tantocomo
a estrutura da tabela e as linhas. A sintaxe é como se segue:
CREATE TABLE [ esquema .] Tabela AS subquer y;
Todas as consultas retornar um conjunto bidimensional de linhas; este resultado é armazenada
exemplo
comosimples
a nova tabela.
de criarAqui
umaestá
tabela
umcom uma subconsulta:

Esta declaração vai criar um EMPLOYEES_COPY tabela, que é uma cópia exata do
tabela EMPREGADOS, idêntico em ambos definição e as linhas que ele contém. Qualquer não nula
e verificação
restrições sobre as colunas também serão aplicadas para a nova tabela, mas qualquer chave primária,
original, ou
restrições de chave estrangeira não será. (As restrições são discutidos mais tarde.) Isto é porque estes
trêsrestrições
de tipos exigem índices que podem não estar disponíveis ou desejado.
O seguinte é um exemplo mais complexo:

As linhas na nova tabela será o resultado da união das duas tabelas de origem, com dois dos
colunas selecionadas de ter seus nomes alterados. A nova coluna SERVIÇO será preenchida com o
resultado da aritmética que calcula o número de dias desde que o empregado foi contratado. As
linhas
ser inserido
serão na ordem especificada. Esta ordenação não será mantido pelo DML subseqüente, mas
assumindo que os dados do esquema HR padrão, a nova tabela será parecido com este:
A subconsulta pode, é claro, incluir uma cláusula WHERE para restringir as linhas inseridas na
mesa.
nova
Para criar uma tabela com nenhuma linha, use uma cláusula WHERE que irá excluir todas as
linhas:

A cláusula WHERE 1 = 2 nunca pode retornar TRUE, então a estrutura da tabela será criado,
usar,pronto
mas hápara
linhas serão inseridas no momento da criação.

Alterando Definições Tabela após a criação


Há muitas alterações que podem ser feitas a uma tabela após a criação. Aquelas que afetam o físico
alterações de armazenamento cair no domínio do administrador de banco de dados, mas muitos são
puramente
será realizada
lógico
pelos
e desenvolvedores de SQL. Os seguintes são exemplos (para a maior parte auto-
explicativo):

• A adição de colunas:

• Modificação de colunas:

• Deixar cair colunas:

• Marcação colunas como não utilizadas:

• colunas Renomear:

• Marcando a tabela como somente leitura:

Todas essas mudanças são a linguagem de definição de dados (DDL) comandos com o built-in
ElesCOMMIT.
são, portanto, não reversível e irá falhar se houver uma transação ativa contra a mesa. Eles
são também virtualmente instantânea, com a excepção de que deixa cair uma coluna. Eliminando
uma colunaexercício
demorado pode serporque
um como cada coluna é descartado, cada linha deve ser reestruturada para
remover dados da coluna. O comando NÃO UTILIZADO SET, o que torna colunas inexistente,
tanto está
SQL quanto
em causa, é muitas vezes uma alternativa melhor, seguido, quando conveniente, pelos
seguintes
que vai cair
linhas,
todas as colunas não utilizados em uma passagem através da tabela:

Marcando uma tabela como somente leitura irá causar erros para qualquer tentativa de comandos
DML.
ainda podeMas a mesa
ser descartado. Isto pode ser desconcertante, mas é perfeitamente lógico, quando você
CAIR comando não
pensa sobre isso. UMArealmente afetar a mesa; ela afeta as tabelas no dicionário de dados que definem
a mesa, e estes não são somente leitura.

Deixando cair e Truncating Tabelas

O comando TRUNCATE TABLE tem o efeito de remover todas as linhas de uma tabela, deixando
a definição da tabela intacta. GOTA TABELA é mais drástica na definição que a tabela é removido
bem. A sintaxe é como se segue:
como
DROP TABLE [ esquema ]. Tablename ;
Se o esquema não é especificado, então a tabela chamada tablename no seu esquema conectado
seráno momento
descartado.
Tal como acontece com um TRUNCATE, SQL não produzirá um aviso antes da tabela é
Alémdescartado, e com qualquer comando DDL, inclui um COMMIT. Mas existem algumas
disso, como
restrições;sessão
qualquer E se (mesmo a sua própria) tem uma transação em andamento, que inclui uma linha na
tabela, então
GOTA irá falhar,
o e também é possível reduzir uma tabela que é referido em uma restrição de chave
definido para outra tabela. Esta tabela (ou a restrição) deve ser descartado em primeiro lugar.
estrangeira

TIP do Oracle 12 c inclui uma opção de lixeira que é ativado por padrão. Isso permite que qualquer
mesa para ser restaurada a menos que foi abandonada com a opção PURGE ou a menos que a opção
caiu
de lixeira
foi desabilitado.

Exercício 5-3: Criar Tabelas Neste exercício, utilize SQL Developer para criar uma tabela pilha,
inserção
algumas linhas com uma subconsulta, e modificar a tabela. Fazer mais algumas modificações com o
SQLseguida,
em * Plus esolte a tabela.

1. Conecte-se ao banco de dados como usuário HR com SQL Developer.


2. Direito do mouse no ramo Tabelas da árvore de navegação e clique em Nova tabela.
3. O nome do novo EMPS de mesa e use o botão Adicionar Coluna para configurá-lo, como no
seguinte
ilustração:
4. Clique na guia DDL para ver a declaração foi construído. Deve olhar como este:

Retornar à guia Table (como na ilustração anterior) e clique em OK para criar a tabela.
5. Execute a seguinte declaração:

e comprometer a inserção:

6. Direito-clique na tabela EMPS no SQL Developer navegador e clique em coluna e em


Adicionar.
7. Definir uma nova coluna HIRED, de tipo DATE, como na seguinte ilustração; clique em
Aplicar
criar para
a coluna.
8. Ligue para o banco de dados como HR com o SQL * Plus.
9. Definir um padrão para a coluna HIRED na tabela EMPs:

10. Inserir uma linha sem especificar um valor para o CONTRATADO e verifique se a nova
linhadata
temcontratado,
um mas que as outras linhas não fazer:

11. Arrumar por deixar cair a nova tabela:

Criar e usar tabelas temporárias


A temporária tabela tem uma definição que é visível para todas as sessões, mas as linhas dentro dele
asão privados
sessão parainserido. Os programadores podem usá-los como uma área de armazenagem
que eles
privada para
grandes quantidades
manipular
de dados. A sintaxe é como se segue:

A definição da coluna é a mesma como uma tabela regular e podem, efectivamente, ser fornecida
A cláusula
a partir opcional
de uma subconsulta.
no final determina o tempo de vida de quaisquer linhas inseridas. O padrão é
para
as linhas
remover
no momento da transação que eles inserido completa, mas este comportamento pode ser
alterado paraaté que a sessão que lhes inserido termina. Independentemente da opção escolhida, os
preservá-los
dados serão
privada para cada sessão; diferentes usuários podem inserir suas próprias fileiras em sua própria
cópianunca
eles da tabela,
verá linhas
e de cada um.
De muitas maneiras, uma tabela temporária é semelhante a uma tabela permanente. Você pode
comando
executar
SELECT
qualquer
contra
DML ela.
ouEle pode ter índices, restrições e gatilhos definidos. Pode ser
referenciado em exibições e sinônimos ou se juntou a outras mesas. A diferença é que os dados são
transitórios
e privado para a sessão e que todos os comandos SQL contra ele será muito mais rápido do que os
contra tabelas permanentes.
comandos
A primeira razão para a velocidade é que as tabelas temporárias não são segmentos em
A tabela
tablespaces
é escrita
permanentes.
para um segmento temporário na tabela temporário do usuário. I / O em
tabela temporários é muito mais rápido do que eu / O em tablespaces permanentes porque não ir
atravésdodobuffer do banco de dados; tudo é executada diretamente no disco pelo processo servidor da
cache
sessão.
Uma segunda razão para a velocidade é que DML contra tabelas temporárias não gera redo.
dadosDesde
persiste
o somente para a duração de uma sessão (talvez apenas para a duração de uma
transação),
nenhum há na geração de um refazer. Isto dá o benefício duplo de fast DML para a sessão de
efeito
atrabalho
mesa e sobre
tomar a tensão fora do sistema de geração de redo, que pode ser um mau ponto de discórdia
em bancos de dados multiusuários ocupados.
Figura 5-6 mostra a criação e utilização de uma tabela temporária com SQL * Plus. O Database
Tabela
Control
Assistente de Criação também pode criar tabelas temporárias.
Figura 5-6 criação e utilização de uma tabela temporária

Exercício 5-4: Criar e usar tabelas temporárias Neste exercício, crie uma tabela temporária a ser
usado para informar sobre os atuais funcionários. Demonstrar, usando duas sessões SQL * Plus, que
éosprivada
dados para cada sessão.

1. Conecte-se ao seu banco de dados com SQL * Plus como usuário HR.
2. Criar uma tabela temporária da seguinte forma:

3. Insira algumas linhas e cometê-los.

4. Iniciar uma segunda sessão SQL * Plus como HR.


5. Na segunda sessão, confirme que a primeira inserção não é visível, apesar de ter sido
comprometida
na primeira sessão, e inserir algumas linhas diferentes.

6. Na primeira sessão, truncar a tabela.

7. Na segunda sessão, confirme que ainda existem linhas na cópia que da sessão da mesa.

8. Na segunda sessão, demonstram que terminar a sessão não limpar as linhas. Isso vai
exigem desligar e ligar novamente.
9. Arrumar o ambiente, largando as tabelas em ambas as sessões.

índices
Índices têm duas funções: para impor chave primária e restrições exclusivas e melhorar
desempenho. estratégia de indexação de uma aplicação é fundamental para o desempenho. Não há
demarcação de cuja gestão índice de domínio se encontra dentro. Quando os analistas de negócios
clara
regras de negócios que serão implementadas como restrições, que estão em vigor especificando
especificar
índices. o
administradores de banco de dados estará monitorando a execução de código em execução no banco
de dados
fazer e vontade para índices. O desenvolvedor, que deve ter a melhor idéia do que está
recomendações
no código ea natureza dos dados, também serão envolvidos no desenvolvimento da estratégia de
acontecendo
indexação.
Por que os índices são necessários
Os índices são parte do mecanismo de restrição. Se uma coluna (ou um grupo de colunas) é marcado
como um
chave primária da tabela, em seguida, cada vez que uma linha é inserida na tabela, a Oracle deve
verificar
com se uma
o mesmo fileira
valor na chave primária ainda não existir. Se a tabela não tem nenhum índice na
colunas, a única maneira de fazer isso seria fazer a varredura para a direita através da mesa,
verificando
Embora istocada
possalinha.
ser aceitável para uma mesa de apenas algumas linhas, para uma tabela com
milhares(ou
milhões ou bilhões) de linhas, isso não é viável. Um índice dá (quase) acesso imediato a chave
valores, então a verificação de existência pode ser feita praticamente instantâneo. Quando uma chave
restrição é definida, o Oracle criará automaticamente um índice em colunas de chave primária, se um
primária
ainda não existir.
Uma restrição únicos também requer um índice. Ela difere de uma restrição de chave primária
colunas
em que
da restrição
a exclusiva pode ser deixado nulo. Isso não afeta a criação e utilização do índice.
restrições de chave estrangeira são aplicadas por índices, mas o índice deve existir na tabela pai, não
necessariamente na tabela para a qual a restrição está definida. Uma restrição chave estrangeira
refere
na tabela
umafilho
coluna
para a chave primária ou uma chave única na tabela pai. Quando uma linha é inserida
tabela filho, a Oracle irá fazer uma pesquisa sobre o índice na tabela pai para confirmar que há uma
em
correspondentes linha antes de permitir a inserção. No entanto, você deve sempre criar índices no
estrangeiro
colunas de chave dentro da tabela a criança por motivos de desempenho; A Apagar na tabela pai será
muito mais rápido se a Oracle pode usar um índice para determinar se existem quaisquer linhas na
tabela de criança
referenciando a linha que está sendo excluído.
Os índices são essenciais para o desempenho. Ao executar qualquer instrução SQL que inclui um
cláusula,
WHERE Oracle tem de identificar quais as linhas da tabela são para ser seleccionada ou modificada.
Se nãonas
índice há colunas referenciadas na cláusula WHERE, a única maneira de fazer isso é com uma mesa
cheia
digitalização . A varredura completa da tabela lê cada linha da tabela, a fim de encontrar as linhas
relevantes.
muitas linhas,
Se aisso
tabela
podetem
levar um longo tempo. Se houver um índice nas colunas relevantes, a Oracle
pode
o índice
pesquisar
vez. Um índice é uma lista ordenada de valores-chave, estruturado de uma forma que torna
a pesquisa
muito eficiente. Com cada valor-chave é um ponteiro para a linha na tabela. Localizando linhas
relevantes através de um
índice de pesquisa é muito mais rápido do que usar uma varredura completa da tabela, se a tabela é
sobre um determinado
proporção das linhas a tamanho ea
serem recuperadas está abaixo de um determinado valor. Para pequenas
mesas ouque
cláusula parairáuma
recuperar
ONDEuma grande fração de linhas da tabela, uma varredura completa da tabela
será mais rápido.
(Geralmente) confiar
VocêOracle
pode para tomar a decisão correta a respeito de se usar um índice baseado em
informação estatística da base de dados reúne sobre as tabelas e as linhas dentro deles.
Uma segunda circunstância onde os índices podem ser utilizados é para a classificação. A
inclui
instrução
o ORDER SELECT
BY, GROUP
que BY, ou palavra-chave UNION (e alguns outros) devem classificar as
linhas
em ordem, a menos que exista um índice, que pode retornar as linhas na ordem correcta, sem
necessidade deem primeiro lugar.
classificá-los
A terceira circunstância quando os índices podem melhorar o desempenho é quando as tabelas
A Oracle
são unidas,
tem uma masescolha.
novamente
Dependendo do tamanho das tabelas e os recursos de memória
disponíveis,
ser mais rápido
pode para fazer a varredura tabelas na memória e se juntar a eles lá, em vez de índices de
uso. O técnica
juntar loop aninhado
passa através de uma tabela usando um índice na outra tabela para localizar as linhas
correspondentes;
esta é geralmente uma operação de disco intensivo. Um hash técnica lê a tabela inteira na memória,
converte-os em uma tabela hash, e usa um algoritmo de hash para localizar linhas correspondentes;
isso é mais
memória e CPU. Um merge sort juntar os tipos as tabelas no fusões de coluna e, em seguida, juntar-
-los juntos; este é frequentemente um compromisso entre os recursos de disco, memória e CPU. Se
se
não houver
índices, o Oracle é severamente limitada nos juntar técnicas disponíveis.

DICA Índices ajudar instruções SELECT e também qualquer UPDATE, DELETE ou MERGE
que o uso de uma cláusula WHERE, mas eles vão abrandar instruções INSERT.
declarações

Tipos de Índices
Oracle oferece suporte a vários tipos de índices, cada um com diversas variações. Os dois tipos de
índices de aqui é o índice B * Árvore, que é o tipo de índice padrão, eo índice de bitmap. Como
preocupação
regra, índices irá melhorar o desempenho para recuperação de dados, mas reduzir o desempenho
geral
para DML Isto é porque os índices deve ser mantida. Cada vez que uma linha é inserida em uma
operações.
tabela,chave
nova uma deve ser inserido em cada índice na tabela, o que coloca uma pressão adicional sobre o
base de dados. Por esta razão, em sistemas de processamento de transações é habitual para manter o
númerotão
índices de baixas quanto possível (talvez não mais do que os necessários para as restrições) e sobre
sistemas intensivos, como um armazém de dados para criar tantos como pode ser útil.
query-

Os índices de árvore B *
AB * Árvore índice (o B significa “equilibrada”) é uma estrutura de árvore. O nó raiz dos pontos de
árvoresnopara
nodos segundo nível, que podem apontar para os nós no terceiro nível, e assim por diante. A
profundidade
da árvore seránecessária
em grande parte determinada pelo número de linhas na tabela e o comprimento do
índice
valores-chave.

TIP estrutura A B * árvore é muito eficiente. Se a profundidade for maior do que três ou quatro,
então oudeoíndice são muito longos ou a tabela tem bilhões de linhas. Se nenhum destes é o caso,
chaves
éentão o índicede beneficiar de uma reconstrução.
susceptível

Os nós de folhas da árvore índice armazenar chaves das linhas, na ordem, cada um com um
a localização
ponteiro que
física
identifica
da linha. Então, para recuperar uma linha com um índice de pesquisa, se a
cláusulaum
usando WHERE
predicadoé de igualdade na coluna indexada, a Oracle navega para baixo da árvore para o

quefolha
contém o valor de chave desejado e, em seguida, usa o ponteiro para encontrar o local da linha.
Se o ONDE
cláusula está usando um predicado nonequality (como COMO, ENTRE,> ou <), o Oracle pode
para baixo da árvore para encontrar o primeiro valor chave correspondente e, em seguida, navegar
navegar
entreencontrar
para os nós folha
todos
do os
índice
outros valores correspondentes. Como ele faz isso, ele vai recuperar as linhas
da tabela em ordem.
O ponteiro para a linha é a idlinha . O rowid é um pseudocoluna Oracle proprietária, que
cada carreira, de cada mesa tem. Criptografado dentro dele é o endereço físico da linha. porque
rowids
não fazem parte do padrão SQL, eles nunca estão visíveis para uma instrução SQL normal, mas você
podeever
-los usá-los se quiser. Isto é demonstrado na Figura 5-7 .
Figura 5-7 Resultados e usando rowids

O rowid para cada linha é globalmente únicos. Cada linha em cada mesa em todo o banco de
ter um
dados
rowid diferente. A criptografia idlinha fornece o endereço físico da linha; oracle pode
usar isso para calcular qual arquivo do sistema operacional, e onde no arquivo, a linha é e ir direto
paraíndices
ele. de árvore B * são uma maneira eficiente de recuperar linhas, se o número de linhas
necessário é baixa em

proporcionalmente ao número total de linhas na tabela e se a tabela é grande. Considere a seguinte


declaração:

Esta cláusula WHERE é suficientemente abrangente em que ele irá incluir todas as linhas na
ser muito
tabela.mais
Serialento para pesquisar o índice para encontrar as rowids e, em seguida, usar os rowids
para encontrar
digitalizar todaas linhas do
a tabela. que de
Afinal a contas, é toda a tabela que é necessário. Outro exemplo é que se a
é pequeno o suficiente para que uma leitura do disco pode digitalizá-lo em sua totalidade, não há
tabela
nenhum
Diz-seponto em ler um índice
frequentemente primeiro.
que, se a consulta está indo para recuperar mais de 2 a 4 por cento das
varredura
linhas,da
emtabela
seguida,
seráuma
maiscompleta
rápido. Um caso especial é se o valor especificado na cláusula
WHERE
Nulos nãoé entram
NULL.em índices de árvore B *, então uma consulta como a seguinte será sempre
resultar em de
verificação umatabela:
completa

Há pouco valor na criação de um índice B * Árvore em uma coluna com alguns valores exclusivos
porque
não ser ele vai
suficientemente selectivo; a proporção da tabela que será recuperada para cada chave
valor será muito alto. Em geral, os índices de árvore B * deve ser usado se os seguintes itens forem
diferente
verdadeiras:
• A cardinalidade (o número de valores distintos) na coluna é alta.
• O número de linhas na tabela é alta.
• A coluna é usado em WHERE ou condições de junção.

Os índices bitmap
Em muitas aplicações de negócio, a natureza dos dados e das consultas é tal que os índices B * de
árvores
não é desão
muito uso. Considere uma tabela de vendas de uma cadeia de supermercados que armazena
um anohistóricos,
dados de que podem ser analisadas de várias dimensões. A Figura 5-8 mostra um entity-
diagrama de relação, com apenas quatro das dimensões.
simples
Figura 5-8 Uma tabela de verdade com quatro dimensões

A cardinalidade de cada dimensão pode ser bastante baixa. Faça essas premissas:

Assumindo que uma distribuição uniforme de dados, apenas duas das dimensões (PRODUTO e
umaDATA)
selectividade
têm que é melhor do que o critério utilizada de 2 por cento a 4 por cento, o que faz
com que
índice deum
valor. Mas se as consultas usar predicados de intervalo (tais como a contagem de vendas
emdez
de um ou
mêsmais
ou de
produtos),
uma classe
então nem mesmo estes irão qualificar. Este é um fato simples: índices de
árvore B
muitas * sãoinútil em um ambiente de data warehouse. Uma consulta típica pode querer comparar
vezes
as vendas
duas lojas entre
por clientes walk-in de uma certa classe de produto em um mês. Não poderia muito bem
ser B * nas
índices Árvore
colunas relevantes, mas a Oracle iria ignorá-los como sendo insuficientemente seletivo.
é o que índices de bitmap são projetados para.
este
Um índice de bitmap armazena os rowids associados a cada valor de chave como um bitmap. Os
Channel
bitmaps
Indexpara
pode
o ter esta aparência:

Isso indica que as duas primeiras linhas foram as vendas para clientes walk-in, a terceira venda
era um
entrega, a quarta venda foi um walk-in, e assim por diante.
Os bitmaps para o índice SHOP pode ser a seguinte:

Isso indica que as duas primeiras vendas foram na loja de Londres, o terceiro estava em Oxford,
em Reading,
a quarta e assim por diante. Agora, se essa consulta é recebida:

Oracle pode recuperar os dois bitmaps relevantes e adicioná-los em conjunto com uma operação
booleana AND.

O resultado da operação AND mostra que apenas as linhas sétima e XVI qualificar
para a seleção. Esta fusão de bitmaps é rápido e pode ser usado para implementar booleana
operações com muitas condições em muitas colunas usando qualquer combinação de AND, OR e
complexo
NOT
operadores. Uma vantagem particular que os índices bitmap têm sobre índices de árvore B * é que
eles incluem
Nulos. Quanto ao índice de bitmap está em causa, NULL é apenas mais um valor distinto, que terá
seu próprio bitmap.
Em geral, os índices de bitmap deve ser usado se a seguir forem verdadeiras:

• A cardinalidade (o número de valores distintos) na coluna é baixo.


• O número de linhas na tabela é alta.
• A coluna é usado em operações de álgebra booleana.
DICA Se você soubesse de antemão o que as consultas seriam, então você pode construir índices de
iria funcionar,
árvore B * quecomo um índice composto na loja e CHANNEL. Mas normalmente você não sabe, o
é onde a fusão dinâmica de bitmaps oferece uma grande flexibilidade.
que

Opções Índice de Tipo


Há seis opções comumente usados que podem ser aplicadas ao criar índices:

• exclusivo ou não exclusivo


• chave reversa
• comprimido
• Composite
• Função base
• ascendente ou descendente

Todos os seis variações se aplicam a índices de árvore B *, mas apenas os três últimos podem ser
aplicadas
Um únicoa índices
índicedenão
bitmap.
permitirá valores duplicados. Não exclusivo é o padrão. O atributo único de
o índice opera independentemente de uma restrição de chave única ou principal; a presença de um
único
não iráíndice
permitir a inserção de um valor duplicado mesmo que não existe tal limitação definida. A
única ou chave primária pode usar um índice não exclusivo; ela só vai acontecer não ter valores
restrição
Este é na verdade um requisito para uma restrição que é deferrable porque pode haver um período
duplicados.
(antes
as transações são confirmadas), quando existem valores duplicados. As restrições são discutidas na
seção.
próxima
Uma chave inversa índice é construído sobre uma versão da coluna da chave com os seus bytes
indexação
invertidas.
JohnAo, ele
invés
irá indexar
de nhoJ . Quando um SELECT é feito, a Oracle irá reverter
automaticamente
valor da cadeia deopesquisa. Esta é uma técnica poderosa para evitar contenção em sistemas multi-
Por exemplo, se muitos usuários estão simultaneamente inserir linhas com chaves primárias com
utilizador.
base em crescente,
número uma sequencialmente
todas as suas inserções de índice irá concentrar-se na extremidade alta do índice.
as chaves, as inserções de índice de chave consecutiva tenderá a ser distribuídos por toda a gama de
revertendo
Mesmo que John e Jules estão juntos, nhoJ e seluJ será muito separadas.
índice.

Um comprimido índice armazena valores repetidos chave apenas uma vez. O padrão não é para
comprimir,
o que significa que se um valor de chave não é único, ele será armazenado uma vez para cada
ocorrência,
ponteiro único
cadaidlinha.
um tendo
Umumaíndice comprimido irá armazenar a tecla uma vez, seguido por uma
seqüência de rowids.
combinando toda a
Um composto indicador é construído sobre a concatenação de duas ou mais colunas. Não há
em misturar
restriçõestipos de dados. Se uma seqüência de pesquisa não inclui todas as colunas, o índice ainda
podese
mas sereleusado,
não incluir a coluna mais à esquerda, a Oracle terá que usar um método skip-digitalização
que é menos eficiente do que se a coluna mais à esquerda está incluído.
muito
Um baseado em função de índice é construída sobre o resultado de uma função aplicada a uma
comoouSUPERIOR
mais colunas, tais
(ultimo_nome) ou TO_CHAR (startdate, '-CCYY mm dd'). A consulta terá que
aplicar opara
função mesmo
a cadeia de pesquisa, ou a Oracle pode não ser capaz de usar o índice.
Por padrão, um índice é ascendente , o que significa que as chaves são classificados em ordem
maisdealta.
valorUm mais
índice
baixo
descendente
para inverte este. Na verdade, a diferença muitas vezes não é
importante.
um índice são Asarmazenados
entradas como uma lista duplamente ligada, por isso, é possível navegar para
cima ou para
celeridade, masbaixo
issocom
vai afetar
igual a ordem em que as linhas são devolvidas se forem recuperados com
um índice completa.
verificação

Criação e Utilização de Índices


Os índices são criados implicitamente quando restrições de chave e únicas primários são definidos se
um índice
colunas relevantes
na ainda não existir. A sintaxe básica para a criação de um índice explicitamente é
seguinte maneira:
tão

O tipo padrão de índice é um, noncompressed não inverter-chave B * índice não exclusivo, da
árvore.
possível Não
criar umé índice de bitmap único (e você não iria querer se você pudesse-pensar sobre o
questão cardinalidade). Os índices são objetos de esquema, e é possível criar um índice em um
uma tabela
esquema noem outra, mas a maioria das pessoas iria encontrar esta um pouco confuso. Um composto
indicador
índice em évárias
uma colunas. índices compostos podem ser em colunas de diferentes tipos de dados, e o
colunas não tem que ser adjacentes na tabela.

DICA Muitos administradores de banco de dados não consideram boa prática de contar com índice
criação. Se os índices são criados de forma explícita, o criador tem total controle sobre as
implícito
características
o índice, o quede
pode tornar mais fácil para o administrador de banco de dados (DBA) para gerenciar
posteriormente.
Considere este exemplo de criação de tabelas e índices e, em seguida, definir restrições:

Os dois primeiros índices criados são sinalizadas como único, o que significa que não será
inserir
possível
valores duplicados. Esta não é definido como uma restrição neste momento, mas é verdade,
no entanto.
terceiro índice
o não é definida como única e, por conseguinte, irá aceitar valores duplicados; este é
um compósito
índice em duas colunas. O quarto índice é definida como um índice de mapa de bits, porque a
cardinalidade
coluna é susceptível
do de ser reduzido proporcionalmente ao número de linhas da tabela.
Quando os dois principais constrangimentos primários são definidos, Oracle irá detectar os
usá-los
índices
paraefazer
preexistentes
cumprir as restrições. Note-se que o índice de DEPT.DEPTNO não tem nenhum
propósito para
desempenho porque a tabela vai com toda a probabilidade ser tão pequena que o índice nunca será
usado paralinhas (uma varredura será mais rápido), mas ainda é essencial ter um índice para fazer
recuperar
cumprir
restriçãoadeprimária
chave.
Uma vez criados, os índices são utilizados de forma completamente transparente e
automaticamente.
instrução Antes
SQL, o servidor de executar
Oracle um todas as possíveis formas de executá-lo. Alguns desses
irá avaliar
maneiras podem envolver usando qualquer índices estão disponíveis; outros não. Oracle vai fazer
uso do
informações que recolhe sobre as mesas e o ambiente para tomar uma decisão inteligente sobre qual
(Se houver) índices de usar.

DICA O servidor Oracle deve tomar a melhor decisão sobre o uso de índice, mas se ele está
começando
É possível para
errado,
um ele
programador para incorporar instruções, conhecidas como sugestões de
optimização
o uso (ou não)
, no
decódigo
certos índices.
que irá forçar

Modificar e remover um índice


O comando ALTER INDEX não pode ser usada para alterar qualquer uma das características
descritas incluindo
capítulo, neste o tipo (B * árvore ou bitmap) do índice, as colunas, e se é ou única
não exclusivo. O comando ALTER INDEX situa-se no domínio da administração do banco de dados
e é tipicamente
utilizado para ajustar as propriedades físicas do índice, não as propriedades lógicos que são de seu
interesse
desenvolvedores. Se for necessário alterar qualquer uma destas propriedades, o índice deve ser
eliminada
criada. Continuando
e re- o exemplo na secção anterior, para alterar o índice EMP_I2 para incluir o
aniversários dos empregados, você usa o seguinte:

Este índice compósito agora inclui colunas com diferentes tipos de dados. As colunas que ser
listados na mesma ordem em que são definidas na tabela, mas esta é de forma alguma necessário.
Quando uma tabela é descartado, todos os índices e restrições definidas para a tabela são
Se umdescartados
índice foitambém.
criado implicitamente através da criação de uma restrição, em seguida, deixando
cair
o índice.
a restrição
Se o índice
também havia
vaisido
cair criado de forma explícita e a restrição criada mais tarde, em seguida,
se a restrição
foram retiradas, o índice iria sobreviver.

Exercício 5-5: criar índices Neste exercício, criar, preencher e adicionar alguns índices para o
tabela CLIENTES.

1. Conecte-se ao esquema HR e criar os clientes, pedidos, ORDER_ITEMS, e


PRODUTOS tabelas como segue:

2. Criar um composto B índice * Árvore sobre os nomes dos clientes e status.

3. Criar índices de bitmap em uma coluna de baixa cardinalidade.

4. Determine o nome e algumas outras características dos índices criados apenas executando
esteinquerir:

restrições
As restrições de tabela são um meio pelo qual o banco de dados pode impor regras de negócio e
garantir
dados emque o
conformidade com o modelo de entidade-relação determinada pela análise de sistemas que
define o de dados de aplicação. Por exemplo, os analistas de negócios de sua organização pode ter
estruturas
que cada cliente e cada ordem deve ser unicamente identificável por número, que nenhuma ordem
decidido
pode serpara um cliente antes que o cliente foi criado, e que toda a ordem deve ter um válido
emitido
data e um valor maior que zero. Estes seriam implementados através da criação de restrições de
chave
na coluna
primária
CUSTOMER_ID da tabela CLIENTES e a coluna do ORDER_ID
mesa de ordens, uma restrição de chave estrangeira na tabela Pedidos referenciando a tabela
CLIENTES,
restrição de não
um nulo na coluna DATA da tabela de encomendas (o tipo de dados DATA vai si só,
garantir
que quaisquer datas são válidas automaticamente-não vai aceitar datas inválidos), e uma restrição de
verificação
coluna na
ORDER_AMOUNT na tabela de encomendas.
Se qualquer DML executada contra uma tabela com restrições definidas viola uma restrição, o
conjuntoserá revertida automaticamente. Lembre-se que uma instrução DML que afeta muitas
declaração
pode parcialmente bem sucedido antes que bata um problema de restrição com uma linha particular.
linhas
Se a declaração
parte de uma transação
é várias instruções, então as declarações que já tiveram sucesso permanecerão
mas não confirmada.
intactos
EXAME TIP uma violação de restrição irá forçar uma reversão automática de toda a instrução que
o problema, não apenas a única ação dentro da instrução e não toda a transação.
atingiu

Os tipos de restrições
Os tipos de restrição suportados pela Oracle Database são os seguintes:

• ÚNICO
• NÃO NULO
• CHAVE PRIMÁRIA
• FOREIGN KEY
• VERIFICA
• REF

Restrições têm nomes. É uma boa prática para especificar os nomes com uma nomenclatura
convenção,
padrão mas se eles não estão explicitamente nomeado, a Oracle irá gerar nomes. Uma discussão
sobre REF que são tipicamente utilizados em interacções objeto-relacional está fora do âmbito desta
limitações
guia.
Restrições exclusivas
A única restrição nomeia uma coluna (ou combinação de colunas) para o qual o valor deve ser
diferente para cada linha na tabela. Se a restrição é baseada numa única coluna, esta é conhecida
como acoluna. Se a restrição é composto por mais do que uma coluna (conhecida como uma chave
chave
composta única
restrição), as colunas não tem que ser o mesmo tipo de dados ou ser adjacente na definição da tabela.
Uma singularidade de restrições exclusivas é que é possível inserir um valor NULL para as
é realmente
colunas de
possível
chave;ter
isto
qualquer número de linhas com valores nulos em suas colunas de chave. Isto
éporque NULL não é igual a nada, nem mesmo para outro NULL. Assim, a seleção de linhas em uma
coluna vai garantir que apenas uma linha é devolvida a menos que você procurar NULL, caso em
chave
quelinhas
as todosonde as colunas de chave são NULL será retornado.

EXAME DICA É possível inserir muitas linhas com NULLs em uma coluna com uma restrição
Isso não é possível para uma coluna com uma restrição de chave primária.
exclusiva.

restrições exclusivas são impostas por um índice. Quando uma restrição exclusiva é definida, a
procurar
Oracleum índice sobre as colunas de chave, e se não existir, ele será criado. Então, sempre que um
linha é inserida, a Oracle irá procurar o índice para ver se os valores das colunas de chave já estão
presente; se forem, ele irá rejeitar a inserção. A estrutura destes índices (conhecidos como índices de
árvore
não B *valores
inclui ) nulos, razão pela qual são permitidas muitas linhas com NULL; eles simplesmente
não fazer
existe no índice. Enquanto o primeiro objectivo do índice é para aplicar a restrição, ele tem uma
efeito: melhorar o desempenho se as colunas de chave são usadas nas cláusulas WHERE das
secundário
instruções
No entanto,SQL.
selecionando ONDE KEY_COLUMN IS NULL não pode usar o índice (porque ele não
inclui
os nulos) e, portanto, sempre resulta em uma varredura de toda a tabela.

As restrições de não-nulo
Os não-nulos valores forças de restrição a ser celebrado a coluna de chave. Restrições não-nulos são
definidos por colunas e às vezes são chamados colunas obrigatórias ; se o requisito de negócio é que
um grupo de colunas devem ter todos os valores, você não pode definir uma restrição de não nulo
para o mas
grupo conjunto
deve definir uma restrição de não nulo para cada coluna.
Qualquer
em um erro. Étentativa
possívelpara inserir
ignorar uma linha sem
a necessidade especificarum
de especificar valores
valorpara as colunas
através resultados
da inclusão de umanão-
cláusula
coluna
constrangido
aopadrão
criar ano
tabela,
nulos como discutido na seção anterior “Criando tabelas com a coluna
Especificações."

Restrições de chave primária


A chave principal é o meio de localização de uma única linha em uma tabela. O paradigma banco de
dados uma
inclui relacional
exigência que cada tabela deve ter uma chave primária, ou seja, uma coluna (ou
de colunas) que pode ser usado para distinguir cada linha. Oracle Database desvia do paradigma
combinação
(Como fazem algumas outras implementações de RDBMS), permitindo tabelas sem chaves
primárias.
A implementação de uma restrição de chave primária está em vigor a união de uma restrição
exclusiva
restrição e uma
de não nulo. As colunas de chave deve ter valores únicos, e eles podem não ser nulo. Como
restrições exclusivas, um índice deve existir nas colunas com restrição. Se um já não existe, um
com
índice será criado quando a restrição está definida. Uma tabela pode ter apenas uma chave primária.
criar uma segunda, e você obterá um erro. Uma tabela pode, no entanto, ter qualquer número de
Tente
única
restrições e colunas não-nulo, por isso, se há várias colunas que os analistas de negócios têm
decidiu deve ser único e povoada, um deles pode ser designado a chave primária e os outros
feita única e não nulo. Um exemplo poderia ser uma tabela de funcionários, onde endereço de e-
mail, Sociais
número de segurança e número de empregados são todas necessárias e único.

EXAME TIP original e restrições de chave primária precisa de um índice. Se não existir, um será
criado automaticamente.

Restrições de chave estrangeira


Uma chave estrangeira restrição é definido na tabela a criança numa relação pai e filho. a restrição
designa uma coluna (ou colunas) na tabela a criança que corresponde às colunas chave primária na
tabela pai. As colunas não precisam ter os mesmos nomes, mas eles devem ser do mesmo tipo de
dados.
restrições de chave estrangeira definir a estrutura relacional da base de dados, isto é, a um de muitos
relações que ligam a mesa, em sua forma normal do terceiro.
para
Se a tabela pai tem restrições exclusivas, bem como (ou em vez de) uma restrição de chave
colunas
primária,
podemestes
ser usadas como base de restrições de chave estrangeira, mesmo se eles são
anuláveis.

TIP EXAME A restrição de chave estrangeira é definida na mesa de criança, mas uma chave única
ou primária
restrição já deve existir em tabela pai.

Assim como uma restrição exclusiva permite valores nulos na coluna restrito, o mesmo acontece
limitação.
com uma Vocêchave
podeestrangeira
inserir linhas na tabela de criança com nulos colunas de mesmo de chave
estrangeira
uma linha na
setabela
não houver
pai com um valor nulo. Isso cria órfãos linhas e pode causar terrível
confusão. Como regra geral, todas as colunas em uma restrição exclusiva e todas as colunas em uma
restrição de chave são melhor definidas com restrições de não-nulo, bem; esta será muitas vezes um
estrangeira
requerimento.
negócio
A tentativa de inserir uma linha na tabela filho para o qual não há nenhuma linha correspondente
daránaumtabela
erro.pai
Da mesma forma, excluir uma linha na tabela pai vai dar um erro se já existem
linhas referentes a ele na tabela filho. Existem duas técnicas para alterar esse comportamento.
Primeiro,pode
restrição o ser criado como ON DELETE CASCADE. Isto significa que se uma linha na tabela
pai é
excluída, a Oracle irá procurar tabela filho para todas as linhas correspondentes e excluí-los também.
Isso vai automaticamente. Uma técnica menos drástica é para criar a restrição como ON DELETE
acontecer
SET NULL.
Neste caso, se uma linha na tabela pai é excluído, a Oracle irá procurar tabela filho para toda a
combinando linhas
órfãs, mas ainda vaieexistir.
definirSe
as as
colunas de na
colunas chave estrangeira
tabela para null.
filho também Isto restrição
têm uma significa de
quenão-nulo,
as linhas
criançao seráda tabela pai irá falhar.
então
eliminação
Não é possível deixar cair ou truncar a tabela pai em um relacionamento de chave estrangeira,
nenhuma
mesmolinha
se houver
na tabela filho. Isto aplica-se ainda se o ON DELETE SET NULL ou ON DELETE
foi usado cláusula CASCADE.
Uma variação sobre a restrição de chave estrangeira é a auto-referência restrição de chave
define
estrangeira.
uma condição
este onde existem as linhas pai e filho na mesma tabela. Um exemplo é uma tabela
de
funcionários, que inclui uma coluna para o gerente do funcionário. O gerente é um empregado e
obrigação
existem na tabela. Então, se a chave primária é a coluna EMPLOYEE_ID eo gerente é identificado
por um MANAGER_ID coluna, em seguida, a restrição de chave estrangeira irá indicar que o valor
coluna MANAGER_ID deve remeter para um EMPLOYEE_ID válido. Se um empregado é o seu
do
gerente, em seguida, a linha remete para si mesmo.
próprio

Restrições de verificação
A verificação de restrição pode ser usado para impor regras simples, como que o valor inserido em
uma coluna
deve estar dentro de uma gama de valores. A regra deve ser uma expressão que irá avaliar como
VERDADEIRO
FALSO. As regras
oupodem referir-se a valores absolutos inseridos como literais ou para outras
ecolunas na mesma
eles podem fazer linha,
uso de algumas funções. Como muitas restrições de verificação que você quer
podecoluna,
uma ser aplicado
mas não
a é possível usar uma subconsulta para avaliar se um valor é permitido ou
uso de funções, tais como SYSDATE.

DICA A restrição de não nulo é de fato implementado como uma restrição de verificação pré-
configurado.
definindo Restrições
As restrições podem ser definidos durante a criação de uma tabela ou adicionado à tabela
posteriormente.
restrições na criação
ao definir
da tabela, a restrição pode ser definida em linha com a coluna à qual ele
refere-se ou no final da definição da tabela. Há uma maior flexibilidade para usar a última técnica.
Para
exemplo, é impossível definir uma chave estrangeira que refere-se a duas colunas ou um cheque
restrição que se refere a qualquer coluna diferente daquele ser constrangido se a restrição é definida
em linha,
mas ambos estes são possíveis se a restrição é definida na extremidade da mesa.
Para as restrições que exigem um índice (as restrições de chave únicas e primários), o índice
ser criado com a tabela se a restrição é definida no momento da criação da tabela.
Considere estas instruções de criação de dois mesa (ao qual foram adicionados números de
linha):

Tomando estas declarações linha por linha, aqui está o processo:

1. A primeira tabela criada é DEPT, a intenção de ter uma linha para cada departamento.
2. DEPTNO é numérico, dois dígitos, sem casas decimais. Esta é a chave primária da tabela. a
restrição
é nomeado DEPT_DEPTNO_PK.
3. Uma segunda restrição aplicada a DEPTNO é uma verificação de se limitar a números na
gama
90.de
A 10
restrição
a é nomeado DEPT_DEPTNO_CK.
4. A coluna é DNAME caracteres de comprimento variável, com uma restrição
DEPT_DNAME_NN
tornando-se não anulável.
5. A segunda tabela criada é EMP, a intenção de ter uma linha para cada funcionário.
6. EMPNO é numérico, até quatro dígitos sem decimais. Marcas EMP_EMPNO_PK restrição
isso como chave primária da tabela.
7. ENAME consiste de caracteres de comprimento variável, com uma tomada de restrição
EMP_ENAME_NN
não anuláveis.
8. MGR é gerente do funcionário, que se deve ser um funcionário. A coluna é definida
da mesma forma como coluna de chave primária da tabela de EMPNO. a restrição
EMP_MGR_FK define esta coluna como uma chave externa de auto-referência, portanto,
qualquer
deve se referir
valor adigitado
uma linha já existente no EMP (apesar de não ser constrangido a não ser
nulo, ser
pode pordeixado
isso em branco).
9. DOB, aniversário do empregado, é uma data e não restrita.
10. HireDate é a data em que o empregado foi contratado e não é limitado. Pelo menos ainda
não.
11. DEPTNO é o departamento com o qual o empregado está associado. A coluna é definida em
da mesma forma como coluna de chave primária da tabela DEPT de DEPTNO, ea restrição
EMP_DEPTNO_FK impõe uma relação de chave estrangeira; não é possível atribuir um
empregado a um departamento que não existe. Esta é anulável, no entanto.
12. O EMP_DEPTO_FK restrição é ainda definida como ON DELETE SET NULL, por isso, se
o linha pai em DEPT é excluído, todas as linhas filho correspondente em EMPNO terá
DEPTNO
para NULL.
set
13. EMAIL é dados de caracteres de comprimento variável e deve ser exclusivo se inserido
(embora
vazio).
ele pode ser deixado
14. Isto define um EMP_HIREDATE_CK adicional de restrição de nível de tabela. a restrição
cheques para uso de trabalho infantil, rejeitando quaisquer linhas onde a data da contratação
não é,mais
anos pelotarde
menos, 16 o aniversário. Esta restrição não pode ser definido em linha com
do que
porque a sintaxe não permite referências a outras colunas nesse ponto.
HireDate
15. Um EMP_EMAIL_CK restrição adicional é adicionado à coluna EMAIL, que faz com que
doiscontrolo do endereço de e-mail. A busca funções Instr para o sinal de arroba (@) e ponto (.)
caracteres (que estará sempre presente em um endereço de e-mail válido); se não pode
encontrar
eles, tanto de
a condição de verificação irá retornar FALSE, ea linha será rejeitada.

Os exemplos anteriores mostram diversas possibilidades para definir restrições na criação da


tabela.
Outras possibilidades não abrangidas incluem o seguinte:

• Controlar a criação do índice para as restrições de chave únicas e primários


• Definir se a restrição deve ser verificada no momento da inserção (que é por padrão) ou
mais tarde, quando a transação é confirmada
• indicando se a restrição é de fato sendo aplicadas em tudo (que é o padrão) ou é
Desativado

É possível criar tabelas sem restrições e, em seguida, adicioná-los mais tarde com um ALTER
comando TABLE. O resultado final será o mesmo, mas esta técnica não tornar o código menos auto-
documentando porque a definição da tabela completa, então, ser repartido por várias declarações
bastante
do que estar em um.

Estado restrição
A qualquer momento, cada restrição é ativado ou desativado e validado ou não validado. Qualquer
combinação destes é possível sintacticamente:

• ATIVAR VALIDATE Não é possível inserir linhas que violam a restrição, e


todas as linhas na tabela em conformidade com a restrição.
• DISABLE NOVALIDATE Quaisquer dados (em conformidade ou não) pode ser inserido, e
pode
já haver dados não-conformes na tabela.
• ATIVAR NOVALIDATE Não pode já estar de dados não-conformes na tabela, mas todos
dados inseridos agora deve estar em conformidade.
• DISABLE VALIDATE Todos os dados na tabela está em conformidade com a restrição, mas
novas
não. linhas
O índice
precisam
também é lançada sobre a restrição.

A situação ideal (e o padrão quando uma restrição é definida) é ATIVAR VALIDATE. este
irá garantir que todos os dados são válidos, e há dados inválidos podem ser inseridos. O outro
DISABLE NOVALIDATE, pode ser útil ao transferir grandes quantidades de dados para uma tabela.
extremo,
bem ser que os dados que estão sendo enviados não está em conformidade com as regras de
Pode
negócios,
grande carregamento
mas em vezfalhar
de terpor
umcausa de algumas linhas ruins, colocando a restrição neste estado irá
permitir o carregamento
ter sucesso. Imediatamente após o carregamento, a transição da restrição para o ACTIVAR
Estado NOVALIDATE. Isso vai evitar que a situação se deteriore ainda mais, enquanto os dados são
verificadas para conformidade antes da transição a restrição para o estado ideal.
Como exemplo, considere este script, que lê dados de uma tabela fonte de dados em tempo real
de dados
em umade tabela
arquivo. A suposição é de que existe uma restrição NOT NULL em uma coluna da
tabela
que podem
de destino
não ter sido imposta na tabela de origem.

Verificação restrição
As restrições podem ser verificados como uma instrução é executada (uma restrição IMEDIATA) ou
quando
transaçãoumé confirmada (a restrição diferido). Por padrão, todas as restrições são imediatos e
não postergáveis. Uma abordagem alternativa para o exemplo anterior teria sido possível se a
restrição foi criado como deferrable.

Para a restrição a ser deferrable, ele deve ter sido criado com a sintaxe apropriada.

Não é possível fazer uma deferrable restrição mais tarde, se ele não foi criado dessa forma. o
restrição SA_NN1 irá, por padrão, ser aplicada quando uma linha é inserida (ou atualizado), mas a
verificação
pode ser adiada até que a transação seja confirmada. Um uso comum para constrangimentos
postergáveis
chaves estrangeiras.
é com Se um processo insere ou atualiza linhas em ambas as tabelas pai e filho, em
seguida, se
restrição deochave estrangeira não é diferido, o processo pode falhar se as linhas não são processados
na correta
ordem.
Alterar o status de uma restrição entre ativado / desativado e
VALIDATE / NOVALIDATE é uma operação que afetará todas as sessões. A mudança de status é
um dos dadosdo Dicionário. Alternar uma restrição deferrable entre imediato e diferido é
Atualização
sessão específica, embora o estado inicial será aplicada a todas as sessões.

EXAME DICA Por padrão, as restrições estão habilitadas e validados, e eles não estão postergáveis.
Exercício 5-6: Gerenciar restrições Neste exercício, definir e ajustar algumas restrições sobre a
criado no Exercício 5-5 .
mesa

1. No SQL Developer, navegue para o esquema HR e clique na tabela clientes.


2. Vá para a guia Restrições para ver as quatro restrições NOT NULL que foram criados com o
mesa. Note-se que os seus nomes não são úteis, isso será corrigido na etapa 8.
3. Clique no botão Ações e escolha Restrições: Adicionar chave primária.
4. Na janela de chave primária Adicionar, nomeie a restrição PK_CUSTOMER_ID, escolha o
Customer_id coluna e clique em Aplicar.
5. Escolha a guia Mostrar SQL para ver a instrução de criação restrição e clique em Aplicar

botão para executar a instrução.


6. Ligue para o seu banco de dados como usuário HR com o SQL * Plus.
7. Execute esta consulta para encontrar os nomes das restrições:

8. Renomeie os constrangimentos para algo mais significativo usando os nomes de restrição


originais
recuperado no passo 7, com comandos ALTER TABLE.

9. Adicione as seguintes restrições no esquema HR:

Visualizações
Para o usuário, uma vista parece uma tabela, em outras palavras, uma estrutura bidimensional de
linhas decontra o qual o usuário pode executar SELECT e DML. O programador sabe o
colunas
Verdade: A vista é apenas uma instrução SELECT nomeado. Qualquer instrução SELECT retorna
um dois-dimensional
conjunto de linhas. Se a instrução SELECT é guardada como um ponto de vista, então sempre que os
utilizadores
linhas na vista
consultar
(sob a impressão
ou atualização
de que é uma tabela), a declaração é executado, eo resultado é
apresentadas aos usuários como se fosse uma tabela. A instrução SELECT em que a visão é baseada
pode ser coisa. Pode associar tabelas, executar agregações, ou os tipos; absolutamente qualquer
qualquer
comando
pode ser usado
legal SELECIONAR
como a base para um ponto de vista.

EXAME TIP Visualizações compartilham o mesmo espaço de nomes como tabelas. Em qualquer
lugar que
Nome do ponto
um nome
de vista
de tabela
também
podem
é sintaticamente
ser usados, uma
correto.

Por que usar exibições em tudo?


As possíveis razões incluem o fornecimento de segurança, simplificando a instrução SQL do
usuário, evitando
melhorar o desempenho,
erros, e tornando compreensível dados. nomes de tabelas e colunas são muitas
vezes longo
muito e O ponto de vista e suas colunas podem ser muito mais óbvio.
sentido.

Visualizações para reforçar a segurança


Pode ser que os usuários devem ver apenas determinadas linhas ou colunas de uma tabela. Existem
várias maneiras de
impor esta, mas uma visão muitas vezes é o mais simples. Considere a tabela HR.EMPLOYEES.
Isso inclui
detalhes pessoais que não devem ser visíveis para o pessoal fora do departamento de pessoal. Mas a
terá de ser capaz de ver a informação de custeio. Essa visão vai despersonalizar os dados.
equipe de finanças

Observe o uso de qualificadores de esquema para a tabela como a fonte dos dados (muitas vezes
referida
a base de oucomo quer tabela) e o ponto de vista; vistas são objetos de esquema e pode desenhar seus
o detalhe
dados de
tabelas no mesmo esquema ou em outros esquemas. Se o esquema não é especificado, ele irá,
naturalmente,
o esquema atual.
estar em
equipe financeira pode então ser dada permissão para ver a vista, mas não a tabela e pode emitir
declarações como esta:

Eles vão ver apenas os cinco colunas que constituem o ponto de vista, não as colunas restantes do
Funcionários com as informações pessoais. A visão pode ser unida a outras tabelas ou agregadas
se fosse uma mesa.
como

Um conjunto bem construído de pontos de vista pode implementar uma estrutura de segurança
dando
inteiro
aos usuários
no bancoacesso
de dados,
aos dados que eles precisam para ver enquanto ocultando dados que não
precisam de ver.
Visualizações para simplificar SQL Usuário
Será muito mais fácil para os usuários a consultar dados se o trabalho duro (tais como associações ou
agregações)
para eles, o código
é feito que define a vista. No exemplo anterior, o usuário tinha que escrever código que
juntou-se à vista EMP_FIN à mesa de departamentos e resumiu os salários por departamento.
Isto tudo pode ser feito em uma exibição.

Em seguida, os usuários podem selecionar a partir DEPT_SAL sem precisar saber nada sobre se
como
junta
classificar
ou mesmoos resultados.

Em particular, eles não precisam saber como ter certeza de que todos os departamentos estão
aqueles
listados,
sem mesmo
empregados. O exemplo na seção anterior teria perdido estes.

Visualizações para evitar erros

É impossível evitar que os usuários de cometer erros, mas vistas bem construídos podem impedir
que alguns
erros decorrentes de uma falta de compreensão de como os dados devem ser interpretados. A secção
já introduziu este conceito através da construção de uma visão que irá listar todos os departamentos,
precedente
ou não
eles têm atualmente a equipe atribuídos a eles.
Uma visão pode ajudar a apresentar os dados de uma forma que não é ambíguo. Por exemplo,
nunca
muitas
realmente
aplicações
excluir linhas. Considere esta tabela:

A coluna ACTIVE é uma bandeira indicando que o funcionário está empregado atualmente e
paraserá
Y quando
o padrão
uma linha é inserida. Quando um usuário, por meio da interface do usuário, “apaga”
um empregado, o
subjacente a instrução SQL será uma atualização que define ACTIVE para N. Se os usuários que não
estão cientes
consultar a tabela,
deste eles podem interpretar mal severamente os resultados. Muitas vezes é melhor dar-
alhes
vista.
acesso
Consultas dirigidas a este ponto de vista não pode possivelmente ver “excluído” membros da
equipe.
Visualizações para tornar os dados Compreensível
As estruturas de dados em um banco de dados será tabelas normalizadas. Não é razoável esperar que
os usuários
entender as estruturas normalizadas. Para dar um exemplo do Oracle E-Business Suite, um “cliente”
no módulo Contas a Receber é, de fato, uma entidade constituída por informação distribuída através
as tabelas HZ_PARTIES, HZ_PARTY_SITES, HZ_CUST_ACCTS_ALL, e muitos mais. Todos
mesas estão ligados por relações de chave chave-de-estrangeiras primárias, mas estes não são
estes
definidos em qualquer
identificadores visíveis aos usuários (como um número de cliente). Eles são baseados em colunas os
usuários
ver nunca
que têm valores internos gerados pelas sequências. Os formulários e relatórios usados para
cliente informação nunca abordar diretamente essas tabelas; todos eles funcionam através de pontos
recuperar
de vista.
, Bem como a apresentação de dados para os utilizadores de uma forma compreensível, a
de abstração
utilizaçãoentre
de pontos
os objetos
de vista
vistos
de proporcionar
pelos usuáriosuma
e oscamada
objetos armazenados no banco de dados pode
inestimável para trabalhos de manutenção. Torna-se possível redesenhar as estruturas de dados sem
ser
recodificar a aplicação. Se as tabelas são alterados, em seguida, ajustar as definições de visualização
ter
podem fazer
alterações qualquer
para o SQL e PL / código SQL desnecessária. Esta pode ser uma técnica poderosa para
aplicações portáveis entre bases de dados diferentes.
fazer

Visualizações de Desempenho
A instrução SELECT atrás de um ponto de vista pode ser otimizado por programadores para que os
usuários não precisam
se preocupar com código de tuning. Pode haver muitas possibilidades para obter o mesmo resultado,
mas alguns
técnicas podem ser muito mais lento do que outros. Por exemplo, ao se juntar duas mesas,
geralmente
escolha entre
háouma
loop aninhado aderir e o hash de participar. Um loop aninhado usa um índice para
chegarindividuais;
linhas ao uma associação de hash lê a tabela inteira na memória. A escolha entre os dois
será
dependente do estado dos dados e os recursos de hardware disponíveis.
Teoricamente, você pode sempre contar com o otimizador Oracle para trabalhar a melhor
maneira mas
declaração, de executar
há casosum
emSQL
que o otimizador começa errado. Se os programadores sabem que

técnica é melhor, eles podem instruir o otimizador. Este exemplo forças uso da técnica de hash:

Sempre que os usuários consultar a exibição DEPT_EMP, a junção será realizada varrendo o
tabelas
detalhe
na memória. Os usuários não precisam saber a sintaxe para forçar o uso deste método
participar.
Não é necessário
Você conhecê-lo, qualquer um; isso está além do alcance da Oracle Certified
Professional
exame, mas o(OCP)
conceito de sintonia com o projeto vista deve ser conhecido.

Visualizações simples e complexas


Para fins práticos, a classificação de uma visão tão simples ou complexo está relacionada à
possibilidadepodem
declarações DML ser executados contra ela. views simples pode (normalmente) aceitar instruções
DML; complexo
pontos de vista não pode. As definições estritas são as seguintes:

• A visão simples desenha dados de uma tabela detalhe, não usa funções, e não faz nenhum
agregação.
• A visão complexa pode se juntar tabelas de detalhes, funções de uso, e realizar agregações.

Aplicando estas definições que mostra um dos quatro pontos de vista usados como exemplos na
o primeiro
secção anterior,
e o terceiro são simples, e a segunda e quarta são complexas.
Não é possível executar INSERT, UPDATE ou DELETE contra uma vista complexo.
O mapeamento das linhas na vista de volta para as linhas nas tabelas de detalhes não podem ser
estabelecida em uma base one-to-one, que é necessário para operações DML. Normalmente, é
sempre
possível
executar DML contra uma visão simples, mas nem sempre. Por exemplo, se a visão não inclui um
coluna que tenha uma restrição NOT NULL, em seguida, um INSERT através do ponto de vista não
pode sertem
coluna bem
umsucedido
valor padrão).
(a menos
Issoque
pode
o produzir um efeito desconcertante, porque a mensagem de
referem-se a uma mesa e uma coluna que não são mencionadas na instrução, tal como demonstrado
erro
no primeiro
exemplo na Figura 5-9 .
Figura 5-9 DML vistas simples e complexos

A primeira vista na figura, RNAME_V, está em conformidade com a definição de uma visão
INSERT
simples,
nãomas
podeumser realizada através dele porque está faltando uma coluna obrigatória. O segundo
ponto de vista,
RUPPERNAME_V, é uma vista complexo porque inclui uma função. Isso faz com que um INSERT
impossível porque não há nenhuma maneira o banco de dados pode descobrir o que realmente deve
ser inserido.
não istoengenharia reversa do efeito da função UPPER em uma forma determinista. Mas
pode fazer
sucede porque isso não depende da função.
DELETE

CREATE VIEW, ALTER VIEW, e DROP VIEW


A sintaxe para criar uma visão é a seguinte:

Note-se que vistas são objetos de esquema. Não há razão para não ter uma vista de propriedade
referenciando
de um usuário
tabelas de detalhes de propriedade de outro usuário. Por padrão, a visão será criada na
esquema. As palavras-chave opcionais, nenhum dos quais foram usados nos exemplos até agora, são
atual
as seguintes:
• OR REPLACE Se a vista já existir, ele será descartado antes de ser criado.
• FORCE ou NOFORCE palavra-chave a força irá criar a vista, mesmo se as tabelas de
detalhes
na subconsulta não existem. NOFORCE é o padrão e irá causar um erro se o detalhe
tabela não existe.
• WITH CHECK OPTION Isso tem a ver com DML. Se a subconsulta inclui um WHERE

cláusula, então esta opção irá evitar a inserção de linhas que não seria visto na vista ou
atualizações que poderiam causar uma fila para desaparecer da vista. Por padrão, esta opção
não está o que pode dar resultados desconcertantes.
ativado,
• WITH READ ONLY Isso impede que qualquer DML através da view.
• CONSTRAINT constraintName Isso pode ser usado para nomear o WITH CHECK
OPTION
COM lidoe apenas restrições para que as mensagens de erro quando as restrições causar
a falhar será mais compreensível.
declarações

Além disso, um conjunto de nomes de alias pode ser fornecido para os nomes das colunas da
desdevisão.
que,Seas não
colunas será nomeado após colunas da tabela ou com aliases especificados no
subconsulta.
O principal uso do comando ALTER VIEW é compilar a vista. A vista deve ser compilado
com sucesso antes que possa ser usado. Quando uma exibição é criado, a Oracle irá verificar se as
etabelas
as colunas
de detalhes
necessárias em que a visão se baseia existem. Se não o fizerem, a compilação falhar,
ea vista não será criado, a menos que você usar a opção FORCE. Nesse caso, a vista será
criado mas não poderá ser usado até que as tabelas ou colunas a que se refere são criados e a vista
compilado com sucesso. Quando uma vista inválida é consultado, a Oracle vai tentar compilá-lo
está
automaticamente. Se a compilação for bem-sucedido porque o problema foi corrigido, os usuários
nãofoisaberão
lá sempre um problema, exceto que a sua consulta pode demorar um pouco mais do que o
habitual.você
falando, Geralmente
deve compilar manualmente pontos de vista para se certificar de que eles compilar
com êxito,
tendo os usuários
ao invésa descobrir
de erros.
Não é possível ajustar definições de coluna de uma vista após a criação da mesma forma que
colunas
uma pode
tabelaser alterado. A visão deve ser descartado e recriado. O comando DROP é tão
seguinte maneira:

Ao utilizar o OR REPLACE palavras-chave com o comando CREATE VIEW, a exibição será


caiu automaticamente (se é que existe) antes de ser criado.

Exercício 5-7: Criar Visualizações Neste exercício, você irá criar alguns pontos de vista simples e
complexos
usando dados no esquema HR. De qualquer SQL * Plus ou SQL Developer pode ser usado.

1. Ligue para o seu banco de dados como usuário HR.


2. Criar pontos de vista sobre os funcionários e mesas departamento que remover todo o
pessoal
em formação.

3. Criar uma visão complexa que irá juntar e agregar os dois pontos de vista simples. Note que
nãonenhuma
há razão que você não pode ter vistas de pontos de vista.

4. Confirmar que a visão funciona consultando-lo.

sinônimos
Um sinónimo é um nome alternativo para um objecto. Se existirem sinónimos para objetos, então
qualquer
pode abordar
instrução
o objeto
SQL quer pelo seu nome real ou pelo seu sinónimo. Isto pode parecer trivial. Não é.
de sinônimos
Usar
os pontos significa
de vista que ou
e mesas ummesmo
aplicativo podebanco
em qual funcionar para qualquer
de dados usuário,
residem as tabelas.independentemente
Considere a
de qual esquema é dono
seguinte declaração:

O usuário que emitiu a declaração deve saber que a tabela de funcionários é de propriedade do
o banco
esquema
de dados
HR emidentificada pelo link de banco de dados PROD (não se preocupe com banco de
dados de links
meios acessodeaque eles em
objetos sãoum
umdiferente daquele no qual você está conectado banco de dados). Se
um público
sinônimo foi criado com esta declaração:

então tudo o que o usuário (! qualquer usuário) precisa entrar é o seguinte:

Isto dá tanto a independência de dados e transparência de localização. O usuário deve ter


privilégios
acessar o objetopara
subjacente para que a referência à base sinônimo de sucesso. Tabelas e vistas
pode ser renomeado ou realocados sem ter que alterar o código; única os sinônimos precisa ser
ajustado.
Bem como instruções SELECT, DML pode resolver sinônimos como se fossem o
objeto a que se referem.
Sinônimos privadas são objetos de esquema. Ou eles devem estar no seu próprio esquema ou
qualificado
eles devem
comser
o nome do esquema. sinônimos públicos existir independentemente de um esquema.
Um sinônimo
pode ser referido
público
por qualquer usuário a quem foi concedida a permissão para vê-lo sem a
necessidade de
qualificá-lo com um nome de esquema. Sinônimos privadas devem ter nomes exclusivos dentro de
seu esquema.
Sinônimos pode
Público
ter o mesmo nome de objetos de esquema. Ao executar declarações que abordam
sem um qualificador de esquema, a Oracle vai olhar primeiro para o objeto no esquema do local, e
objetos
somente
não podese,
ser encontrado será que vai procurar um sinônimo público. Assim, no exemplo anterior, se
o utilizador
aconteceu de possuir uma tabela chamada EMP, seria isso que iria ser visto, não a tabela apontada
o sinônimo público.
pelo
A sintaxe para criar um sinônimo é a seguinte:

Um usuário terá que foram permissão para criar sinônimos particulares e mais concedido
permissão para criar sinônimos públicos. Normalmente, apenas o administrador de banco de dados
pode criar (ou gota)
sinônimos públicos. Isto é porque a sua presença (ou ausência) afetará todos os usuários.

EXAME TIP O público em sinônimo público significa que não é um objeto de esquema e não pode,
ser prefixado com um nome de esquema. Isso não significa que todo mundo tem permissões contra
portanto,
ele.
Para retirar um sinônimo, faça o seguinte:

Se o objecto para o qual um sinónimo refere-se (a tabela ou vista) é descartada, o sinónimo


existir.
continua
Qualquer tentativa de usar ele retornará um erro. A este respeito, sinônimos comportar-se da
mesma de
pontos forma que
vista. Se o objeto é recriado, o sinônimo devem ser recompilados antes de usar. Tal como
acontece com
acontecerá automaticamente
vistas, este na próxima vez que o sinônimo é dirigida, ou pode ser feito
esta:
explicitamente

Exercício 5-8: Criar e usar sinônimos Neste exercício, você irá criar e usar privado
Sinônimos usando objetos no esquema HR. Você pode usar o SQL * Plus ou SQL Developer.

1. Ligue para o seu banco de dados como usuário HR.


2. Criar sinônimos para as três exibições criadas no Exercício 5-7 .
3. Confirme se os sinônimos são idênticos aos objetos subjacentes.

4. Confirmar que os sinônimos de trabalho (mesmo ao ponto de produzir os mesmos erros),


executando
as declarações em Exercício 5-7 contra os sinônimos em vez dos pontos de vista.

5. Gota dois dos pontos de vista.

6. Consulta a visão complexa que é baseada nos pontos de vista caiu.

Note-se que a consulta falha.

7. Tentativa de recompilar o vista quebrada.

Esta falha também.


8. Gota a vista DEP_SUM_V.

9. Consultar o sinónimo de uma visão caiu.

Esta falha.
10. Recompile o sinônimo quebrado.

Note que isso não dá um erro, mas executar novamente a consulta a partir do passo 9. É
definitivamente ainda
partido.
11. arrumado-se por deixar cair os sinónimos.

seqüências
Uma sequência é uma estrutura para a gerao de valores de número inteiro exclusivo. Apenas uma
sessão pode
valorizar ler o próximo
e, assim, forçá-lo a incrementar. Este é um ponto de serialização, de modo que cada valor
gerado será
único.
Sequências são uma ferramenta inestimável para a geração de chaves primárias. Muitas
gerado
aplicações
automaticamente
terá valores de chaves primárias. Exemplos de processamento de dados de
negóciosdetodos
número clientes
os dias
e números
são de pedido. Os analistas de negócios vai afirmaram que todos os
pedidos
ter um número
devem único, que deve continuamente incrementar. Outras aplicações podem não ter um tal
exigência em termos de negócios, mas serão necessários para impor a integridade relacional.
considere
sistema deumfaturamento telefone. Em termos empresariais, o identificador único de um telefone é o
número (que é uma string), e o identificador exclusivo de uma chamada será o número de telefone
telefone
detempo
o origem daechamada começou (que é um timestamp). Estes tipos de dados sejam desnecessariamente
complexos
chaves para usar
primárias paracomo
os volumes altos que passam por um sistema de comutação telefônica.
Enquanto isso
informação será gravada, ela será muito mais rápido de usar colunas numéricas simples para definir
chaves primárias e estrangeiras. Os valores nestas colunas pode ser sequencial, com base.
o
O mecanismo de sequência é independente de tabelas, o mecanismo de bloqueio de linha, e
processamento
cometer ou de reversão. Isto significa que uma sequência pode emitir milhares de valores
exclusivos
mais rápidodedoum queminuto-far
qualquer método que envolve selecionando uma coluna de uma tabela, atualizá-
lo eAcometer
Figura o5-10 mostra duas sessões de selecção de valores a partir de uma sequência de chamada
mudança.
SEQ1.

Figura 5-10 Utilização de uma sequência de duas sessões concorrentemente

Note-se que na figura cada seleção de SEQ1.NEXTVAL gera um número único. o


os números são emitidos consecutivamente, a fim do tempo a selecção foi feita, e o número
incrementa a nível mundial, não apenas dentro de uma sessão.

criação de seqüências
A sintaxe completa para a criação de uma sequência é a seguinte:

Você pode ver que a criação de uma seqüência pode ser simples. Por exemplo, a sequência
foi criado
utilizada
comnaesta:
Figura 5-6

As opções são mostradas na tabela a seguir:


configurações apropriadas para INCREMENT BY, começar, e MAXVALUE ou MINVALUE
virão de seus analistas de negócios.
É raro para o ciclo para ser usado porque permite que os valores duplicados questão sequência.
sequência
Se o está a ser utilizada para gerar valores de chaves primárias, CICLO só faz sentido se existe
umabanco
no rotinade dados que irá excluir linhas antigas mais rápido do que a seqüência irá reeditar
números.
O cache de valores de sequência é vital para um desempenho. Seleccionando a partir de uma
sequêncianoé código
serialização um ponto de
de aplicação; apenas uma sessão pode fazer isso ao mesmo tempo. O
mecanismo
É muito mais é eficiente.
rápido do bloqueio uma fileira, atualizar a linha, e, em seguida, desbloquear com um
COMMIT.
mesmo assim,
Masa selecção de uma sequência pode ser uma causa de contenção entre as sessões. a
chave instrui Oracle para pregenerate números de sequência em lotes. Isso significa que eles podem
CACHE
ser
emitido mais rápido do que se tivessem de ser gerado por demanda.

DICA O número padrão de valores para armazenar em cache é de apenas 20. A experiência mostra
que este não
suficiente. Seéogeralmente
seu aplicativo seleciona a partir da sequência 10 vezes por segundo, em seguida,
definir oNão
50.000. valor dotímido
seja cache para
sobre isso.

usando Seqüências
Para usar uma seqüência, uma sessão pode selecionar o próximo valor com o pseudocoluna
o que obriga a seqüência para incrementar, ou o último (ou “corrente”) valor emitido para a sessão
NEXTVAL,
com o
pseudocoluna CURRVAL. O NEXTVAL será globalmente único. Cada sessão que seleciona ele vai

obter um valor diferente, incrementado para cada SELECT. O CURRVAL será constante para uma
sessão
até que selecciona NEXTVAL novamente. Não há nenhuma maneira de descobrir o que o último
valor emitido
estava. Você sempre
por uma
pode
seqüência
obter o próximo valor de incrementá-lo com NEXTVAL, e você pode
recordar o último valor emitido para sua sessão com CURRVAL, mas você não consegue encontrar o
sempre
último valor emitido.

EXAME TIP O CURRVAL de uma sequência é o último valor emitido para a sessão atual, não
necessariamente o último valor emitido. Você não pode selecionar o CURRVAL até depois de
selecionar o
NEXTVAL.

Um uso típico de sequências é para valores de chaves primárias. Este exemplo utiliza uma
parasequência de CUST_SEQ
gerar o número de clientes únicos, ORDER_SEQ para gerar números de pedidos únicos, e
LINE_SEQ para gerar números de linhas exclusivas para os itens de linha da ordem. Primeiro criar
asqual
o sequências,
é uma única operação de fora.

Em seguida, insira as ordens com as suas linhas como uma única transação.
A primeira instrução INSERT levanta uma ordem com um número de ordem original desenhado
ORDER_SEQ
a partir da sequência
para o número de cliente 1000. O segundo e terceiro demonstrações inserir as duas
linhas do
ordem, usando o número do pedido anteriormente emitidos a partir de ORDER_SEQ como a chave
estrangeira
itens de linha
para
para
conectar
a ordem,
o e os próximos valores de LINE_SEQ para gerar um identificador único
para cada
linha. Finalmente, a transação é confirmada.
Uma sequência não está ligado a qualquer uma mesa. No exemplo anterior, não haveria técnico
razão para não utilizar uma sequência para gerar valores para as chaves primárias da ordem e das
linhas.
Um COMMIT não é necessário fazer o incremento de uma seqüência permanente. É permanente
e visível para o resto do mundo no momento em que acontece. Ele não pode ser revertida,
tornada
também. Seqüência
atualizações ocorrem de forma independente do sistema de gerenciamento de transações. Por esta
razão,
ser lacunas
haverá
nasempre
série. As lacunas será maior se o banco de dados foi reiniciado anormalmente eo
foi usado cláusula CACHE. Todos os números que foram gerados e armazenados em cache, mas
ainda não
perdido emitidas
quando serãode dados é abortada. Na próxima reinicialização, o valor atual da seqüência
o banco
será a última
número gerado, não o último emitido. Assim, com o cache padrão de 20, cada desligamento abortar
falha da instância vai perder até 20 números.
ou
Se os analistas de negócios têm afirmado que não deve haver lacunas em uma seqüência, em
seguida, um outro meio de
gerando números únicos devem ser usadas. Para o exemplo anterior de levantar encomendas, a
corrente
número de ordem pode ser armazenado nesta tabela e inicializado a 10:

Em seguida, o código para criar uma ordem teria de se tornar o seguinte:

Isso vai certamente funcionar como um meio de gerar números de pedidos únicos, e porque o
incremento do número de ordem está dentro da transação que insere a ordem, ele pode ser revertida
com o inserto se necessário. Não haverá lacunas em números de ordem, a menos que uma ordem é
excluída. Mas é muito menos eficiente do que usar uma seqüência, e um código como este é famosa
deliberadamente
por causar de contenção terríveis. Se muitas sessões de tentar bloquear e incrementar a linha que
problemas
contém oatual, toda a aplicação irá pendurar como as sessões fila para ter sua vez.
número
Depois de criar e usar uma seqüência, você pode modificá-lo. A sintaxe é como se segue:

Este comando ALTER é o mesmo que o comando CREATE, com uma exceção: Não há
maneira de definir o valor inicial. Se você deseja reiniciar a seqüência, o único caminho é para soltá-
lo e re- Para ajustar o valor do cache do padrão para melhorar o desempenho do anterior
criá-lo.
encomendar um exemplo de entrada, faça o seguinte:

No entanto, se você deseja redefinir a seqüência para o seu valor inicial, o único caminho é para
soltá-lo e criar
isso de novo.
Exercício 5-9: Criar e usar seqüências Neste exercício, você irá criar e usar algum
sequências. Você vai precisar de duas sessões simultâneas, o SQL Developer ou SQL * Plus.

1. Inicie a sessão no seu banco de dados duas vezes mais HR em sessões separadas. Considere
umeapara
outra
serpara
sua sessão
ser suaAsessão B.
2. Na sua sessão de A, criar uma seqüência como segue:

O uso de NOCACHE é deletério para o desempenho. Se MAXVALUE for especificado,


CICLO será necessário para evitar erros quando MAXVALUE é atingido.
3. Execute os seguintes comandos na sessão apropriada na ordem correta para observar
o uso de NEXTVAL e CURRVAL e o ciclo da sequência:

4. Criar uma tabela com uma chave primária.

5. Criar uma sequência para gerar valores de chaves primárias.

6. Na sua sessão de A, inserir uma linha para a nova tabela e se comprometer.

7. Na sua sessão B, inserir uma linha para a nova tabela e não cometê-lo.

8. Na sua sessão de A, inserir uma terceira linha e cometer.

9. Na sua sessão B, reverter a segunda inserção.

10. Em sua sessão B, ver o conteúdo da tabela.

Isso demonstra que as sequências são incrementados eo próximo valor é publicado


imediatamente, fora do mecanismo de controlo da transacção.
11. arrumado acima.
12. Conecte-se ao esquema HR com o SQL Developer ou SQL * Plus e criar três
sequências que irão ser utilizados em exercícios posteriores.

Broca Two-Minute
Categorizar banco de dados principal Objects
• Alguns objetos contêm dados, principalmente tabelas e índices.
• Objetos de programação, tais como procedimentos armazenados e funções são códigos
executáveis.
• exibições e sinônimos são objetos que dão acesso a outros objetos.
• As tabelas são estruturas bidimensionais, armazenar linhas definidas com colunas.
• existir Tabelas dentro de um esquema. O nome do esquema, juntamente com o nome da tabela
fazidentificar.
uma única

Listar os tipos de dados que estão disponíveis para Columns


• Os tipos de dados de caracteres mais comuns são VARCHAR2, NUMBER e DATE.
• Existem muitos outros tipos de dados.

Criar uma tabela simples


• As tabelas podem ser criadas a partir do nada ou com uma subconsulta.
• Após a criação, definições de coluna podem ser adicionados, caiu, ou modificado.
• A definição da tabela pode incluir valores padrão para colunas.

Criar e usar tabelas temporárias


• linhas em uma tabela temporária são visíveis apenas para a sessão que eles inserido.
• DML em tabelas temporárias não gera redo.
• existem tabelas temporárias somente em sessões Programa Global Áreas (PGAs) ou
temporária
segmentos.
• Uma tabela temporária pode manter linhas para a duração de uma sessão ou de uma transação,
dependendo
sobre a forma como ele foi criado.

índices
• Os índices são necessários para impor restrições de chave únicas e primários.

• nulos não são incluídos em índices de árvore B *, mas são incluídos em índices bitmap.
• índices B * árvore pode ser única ou não exclusivo, que determina se eles podem aceitar
duplicar os valores da chave.
• índices B * árvore são adequados para as colunas de alta cardinalidade; índices de bitmap são
para
colunas
baixode cardinalidade.
• índices de mapa de bits pode ser composto, baseado função, ou descendente; índices de árvore
B única,
* também
comprimido,
pode ser e a chave de inverter.

restrições
• As restrições podem ser definidas na criação da tabela ou adicionado mais tarde.
• A restrição pode ser definida em linha com a sua coluna ou no nível da tabela após as colunas.
• restrições de nível de tabela pode ser mais complexa do que os definidos em linha.
• Uma tabela pode ter apenas uma chave primária, mas pode ter muitas chaves únicas.
• Uma chave primária é funcionalmente equivalente a única além de não nulo.
• A única restrição não impede a inserção de muitos valores nulos.
• Restrições de chave estrangeira definir as relações entre tabelas.

Visualizações
• Uma visão simples tem mesa de um detalhe (ou base) e usa nem funções nem agregação.
• A visão complexa pode ser baseada em qualquer instrução SELECT, não importa quão
complicada.
• As vistas são objetos de esquema. Para usar uma vista em outro esquema, o nome da visão
deve
comsero qualificado
nome do esquema.
• Uma visão pode ser consultado exatamente como se fosse uma tabela.
• Visualizações podem ser unidos a outros pontos de vista ou para mesas, eles podem ser
agregados
eles podem
e, em
aceitar
algunsinstruções
casos DML.
• Visualizações só existem como construções de dicionário de dados. Sempre que você
consultar
instrução
uma
SELECT
vista, odeve
subjacente
ser executado.

sinônimos
• Um sinônimo é um nome alternativo para uma vista ou uma tabela.
• sinônimos privados são objetos de esquema; sinônimos públicos existem esquemas do usuário
fora e pode
usado semser
especificar um nome de esquema como um qualificador.
• sinônimos compartilham o mesmo espaço de nomes como vistas e tabelas e, portanto, pode
serintercambiável
usado com eles.

seqüências
• Uma sequência gera valores a menos únicas quer MAXVALUE ou MINVALUE e CICLO

foram especificados.
• Incrementar uma seqüência não precisa ser comprometido e não pode ser revertida.
• Qualquer sessão pode incrementar a seqüência, lendo o seu valor seguinte. É possível obter o
último valor emitido para a sessão, mas não o último valor emitido.

Auto teste
1 . Se uma tabela é criada sem especificar um esquema, no qual esquema será? (Escolha o
melhor resposta.)
A. Será um órfão mesa, sem um esquema.
B. A criação irá falhar.
C. Será no esquema SYS.
D. Será no esquema do usuário criá-la.
E. Será no esquema PUBLIC.
2 . Vários tipos de objetos compartilham o mesmo espaço de nomes e, portanto, não pode ter o
mesmo nomeesquema.
o mesmo em Qual dos seguintes tipos de objeto não está no mesmo espaço de nomes
como o (Escolha a melhor resposta.)
outras?
A. Índice
B. PL procedimento / SQL armazenado
C. Sinônimo
D. Tabela
E. Ver
3 . Qual destas afirmações falhará porque o nome da tabela não é legal? (Escolha dois
respostas.)
A. criar a tabela "SELECT" (data col1);
B. criar a tabela "minúscula" (data col1);
C. criar número1 mesa (data COL1);
D. criar 1Número mesa (data COL1);
E. criar atualização da tabela (data col1);
4 . Quais são distinguindo características de tabelas de heap? (Escolha duas respostas.)
A. Uma tabela de pilha pode armazenar linhas de comprimento variável.
B. Mais de uma tabela pode armazenar linhas em uma única pilha.
C. Linhas em uma pilha estão em ordem aleatória.
D. tabelas de heap não podem ser indexados.
E. Tabelas em uma pilha não tem uma chave primária.

5 . Qual dos seguintes tipos de dados são de comprimento variável? (Escolha todos os que se
aplicam.)
A. BLOB
B. CHAR
C. LONG
D. NÚMERO
E. RAW
F. VARCHAR2
6 . Estudar estas declarações:

Será que a inserção ter sucesso? (Escolha a melhor resposta.)


A. A inserção falhará porque o 1.1 é muito longo.
B. A inserção falhará porque o '31 -01-07' é uma string, não uma data.
C. O inserto irá falhar por razões tanto A e B.
D. A inserção terá êxito.
7 . Qual das seguintes não é suportada pela Oracle como um tipo de dados interno? (Escolha o
melhor
responda.)
A. CHAR
B. FLOAT
C. INTEIRO
D. STRING
8 . Considere a seguinte declaração:

Qual será o resultado? (Escolha a melhor resposta.)


A. Haverá um erro por causa da condição impossível.
B. Nenhuma tabela será criado porque a condição retorna FALSE.
C. A tabela T1 vai ser criado, mas vai ser inserido nenhuma linha porque a circunstância
retorna
FALSO.
D. A tabela T1 vai ser criada, e a cada fileira em regiões irá ser inserido porque a
condição retorna um NULL como um filtro de linha.
9 . Quando uma tabela é criada com uma declaração como a seguinte:

haverá quaisquer restrições sobre a nova tabela? (Escolha a melhor resposta.)


A. A nova tabela não terá restrições porque as restrições não são copiados ao criar
tabelas com uma subconsulta.
B. Todas as restrições sobre TAB serão copiados para newtab.
C. chave primária e únicas restrições, mas não verificar e restrições não-nulos, será
copiado.
D. Verifique e restrições não-nulos, mas não único ou chaves primárias, serão copiados.
E. Todas as restrições serão copiados, exceto restrições de chave estrangeira.
10 . Quais os tipos de restrições requer um índice? (Escolha todos os que se aplicam.)
A. VERIFICAÇÃO
B. NOT NULL
C. PRIMÁRIA CHAVE
D. UNIQUE
11 . A transação consiste em duas declarações. O primeiro bem-sucedido, mas o segundo (que
atualizações
várias linhas) falhar a meio por causa de uma violação de restrição. O que vai acontecer?
(Escolha a melhor resposta.)
A. Toda a transação será revertida.
B. A segunda instrução será revertida completamente, eo primeiro será comprometida.
C. A segunda instrução será revertida completamente, eo primeiro permanecerá
descompromissado.
D. Apenas a atualização que causou a violação será revertida; tudo o resto será
comprometido.
E. Apenas a atualização que causou a violação será revertida; tudo o resto vai
permanecem não confirmadas.
12 . Qual das seguintes afirmações está correta sobre índices? (Escolha a melhor resposta.)
A. Um índice pode ser baseada em várias colunas de uma tabela, mas as colunas devem ser
do mesmo tipo de dados.
B. Um índice pode basear-se em várias colunas de uma mesa, mas as colunas devem ser
adjacentes
e especificados na ordem em que eles são definidos na tabela.
C. Um índice não podem ter o mesmo nome de uma tabela, a menos que o índice e a tabela
estão em
esquemas separados.
D. Nenhuma dessas afirmações é correta.
13 . Qual das seguintes opções pode ser aplicado a índices de árvore B *, mas não para bitmap
índices?
(Escolha todas as respostas corretas.)
A. compressão
B. ordem decrescente
C. baseada em função expressões-chave

D. reverso indexação chave


E. Unicidade
F. Utilização de chaves compostos
14 . Dados em tabelas temporárias restringiu visibilidade. Se um usuário faz logon como RH e
insere
emlinhas
uma tabela temporária, para quem vai as linhas sejam visíveis?
A. Para nenhuma sessão diferente daquele que fez a inserção
B. Para todas as sessões conectadas como HR
C. Para todas as sessões, até que a sessão que lhes inserido termina
D. Para todas as sessões, até que a sessão que lhes inserido confirma a transação
15 . Onde é queé os
A. Nunca dados no
gravado emdisco.
uma tabela temporária são escritos para o disco? (Escolha a melhor
resposta.)
B. Para tabela temporário do usuário.
C. Para a tabela temporário do usuário em cujo esquema reside a tabela.
D. Para um disco local para o processo de usuário da sessão.
16 . Qual destes é uma característica definidora de uma visão complexa, ao invés de uma visão
simples?
(Escolha todas as respostas corretas.)
A. A restrição da projecção, seleccionando apenas algumas das colunas da tabela
B. Naming colunas da visão com alias de colunas
C. Restringir a seleção de linhas com uma cláusula WHERE
D. Realizando uma agregação
E. junção de duas tabelas
17 . Considere estas três afirmações:

Por que a primeira consulta ser mais rápido do que o segundo? (Escolha a melhor resposta.)
A. A vista já fez o trabalho de unir as tabelas.
B. A vista utiliza a norma ISO sintaxe de associação, que é mais rápido do que o do Oracle
aderir
na sintaxe
segundautilizada
consulta.
C. O ponto de vista é pré-compilado, então a primeira consulta requer compilação menos
dinâmico
segunda
doconsulta.
que o
D. Não há nenhuma razão para a primeira consulta para ser mais rápido.
18 . Estudar esta declaração criação da vista:

O que pode fazer a seguinte declaração falhar? (Escolha a melhor resposta.)

A. A menos que especificado em contrário, vistas será criada como WITH READ ONLY.
B. A vista é complexa demais para permitir operações DML.
C. O WITH CHECK OPTION irá rejeitar qualquer declaração que muda a
DEPARTMENT_ID.
D. A declaração terá sucesso.
19 . Há uma visão simples SCOTT.DEPT_VIEW na SCOTT.DEPT mesa. Esta inserção falha
com um erro:

O que poderia ser o problema? (Escolha a melhor resposta.)


A. A INSERÇÃO viola uma restrição na tabela de detalhes.
B. A INSERÇÃO viola uma restrição na view.
C. O ponto de vista foi criado como WITH READ ONLY.
D. O ponto de vista foi criado como WITH CHECK OPTION.
20 . Quais são as características distintivas de um sinônimo público, em vez de um privado
sinônimo? (Escolha duas respostas corretas.)
A. sinônimos públicos são sempre visível para todos os usuários.
B. sinônimos públicos podem ser acessados por nome sem um qualificador de nome do
esquema.
C. sinônimos públicos podem ser selecionados sem a necessidade de quaisquer permissões.
D. sinônimos públicos pode ter os mesmos nomes de tabelas ou exibições.
21 . Considere estas três afirmações:

Qual das seguintes afirmações é correta? (Escolha a melhor resposta.)


A. A segunda instrução irá falhar porque um objeto S1 já existe.
B. A terceira declaração irá mostrar o conteúdo de empregados.
C. A terceira declaração irá mostrar o conteúdo dos departamentos.
D. A terceira comunicação irá mostrar o conteúdo da tabela S1, se uma tal tabela no existe
esquema atual.

22 . Uma visão e um sinônimo são criados da seguinte forma:

Posteriormente, o DEPT tabela é descartado. O que vai acontecer se você consultar o


DEPT_S? (Escolha a melhor resposta.)
sinônimo
A. Não haverá um erro porque o sinônimo aborda a vista, que ainda existe,
mas não haverá linhas retornadas.
B. Não haverá um erro se você primeiro recompilar o ponto de vista com o comando
ALTER
VISTA DEPT_V COMPILE FORCE ;.
C. Haverá um erro porque o sinônimo será inválido.
D. Haverá um erro porque a vista será inválido.
E. Haverá um erro porque a vista terá sido caiu implicitamente quando o
mesa foi descartado.
23 . Uma sequência é criado como se segue:

Se o valor atual já é de 50, quando você tentar selecionar SEQ1.NEXTVAL, o que será
acontecer? (Escolha a melhor resposta.)
A. dará um ciclo A sequência e edição 0.
B. dará um ciclo A sequência e um problema.
C. A sequência vai reemitir 50.
D. Haverá um erro.
24 . Você cria uma seqüência como segue:

Depois de selecionar a partir dele algumas vezes, você quer reinicializar-lo para refazer os
númerosComo
gerado. já você pode fazer isso? (Escolha a melhor resposta.)
A. Você deve soltar e recriar a seqüência.
B. Você não pode. Sob nenhuma circunstância pode números de uma sequência ser
reeditado
foi usado.
uma vez que eles
C. Use o comando ALTER seqüência de partida SEQ1 COM 1; para redefinir o próximo
valor
1. a
D. Use o comando ALTER SEQUENCE SEQ1 CICLO; para repor a sequência para a sua
valor inicial.
Respostas
1. D . O de auto-teste
esquema será o padrão para o usuário atual.
A , B , C , e E são incorrectas. A está incorreta porque todas as tabelas devem estar em
um esquema.
incorreto porque aBcriação
é terá sucesso. C está incorreta porque o esquema SYS não é um

esquema padrão. E é incorreta porque enquanto há um público usuário nocional, ele não faz
tem um esquema em tudo.
2. Um . Índices têm o seu próprio namespace.
B , C , D , e E são incorrectas. Existem procedimentos armazenados, sinônimos, tabelas
e visualizações
mesmo namespace. no
3. D e E . D viola a regra de que um nome de tabela deve começar com uma letra, e E
determinar
viola a que um nome de tabela não pode ser uma palavra reservada. Ambas as regras
pode ser contornado usando dupla
citações.
A , B , e C são incorrectas. Estes são incorretas porque todos terão sucesso (embora A e
não são
B exatamente sensível).
4. A e C . Uma pilha é uma tabela de linhas de comprimento variável em ordem aleatória.
B , D , e E são incorrectas. B está incorreta porque uma tabela pilha pode ser apenas
umaincorrecta
e E são tabela. D porque uma tabela pilha pode (e, geralmente, irá) têm índices e um
primário
chave.
5. A , C , D , E , e F . Todos estes são tipos de dados de comprimento variável.
B é incorrecta. Colunas CHAR têm comprimento fixo.
6. D . O número será arredondado para um dígito, ea cadeia será lançado como uma data.
A , B , e C são incorrectas. Arredondamento automático e typecasting vai corrigir os
embora
“erros”
idealmente eles não iria ocorrer.
7. D . STRING não é um tipo de dados internos.
A , B , e C são incorrectas. CHAR, FLOAT, e INTEIRO são todos os tipos de dados
embora
internos,
não tão amplamente utilizado como alguns outros.
8. C . A condição se aplica apenas às linhas selecionadas para a inserção, não para a
criação
A , B , eda
D tabela.
são incorrectas. A está incorreta porque a declaração é sintaticamente
está correto.
incorretaBporque a condição não se aplica ao DDL, apenas para o DML. D é incorrecta
porque a condição irá excluir todas as linhas de seleção.
9. D . Verifique e restrições não-nulos não são dependentes de quaisquer outros do que a
a quetabela estruturas
se aplicam e assim pode seguramente ser copiado para uma nova tabela.
A , B , C , e E são incorrectas. A está incorreta porque não-nula e restrições de
verificação
ser aplicado paraserá
a nova tabela. B , C , e E são incorrecta porque estes constrangimentos
precisa outra
objetos (índices ou uma tabela pai) e por isso não são copiados.
10. C e D . Restrições de chave únicas e primários são aplicadas com os índices.
A e B são incorrectas. Verifique e restrições não-nulos não contam com índices.
11. C . A violação de restrição irá forçar uma reversão da declaração atual, mas nada mais.
A , B , D , e E são incorrectas. A está incorreta porque todas as declarações que foram
bem sucedidos
permanecem intactos. B e D são incorretas porque não há confirmação de nada até que seja
especificamente requerido. E é incorreta porque toda a declaração, não apenas a linha
será revertida.
falhou,
12. D . Todas as declarações são incorretas.
A , B , e C são incorrectas. Um é incorrecta porque índices compostos não necessitam
de ser em
colunas do mesmo tipo de dados. B é incorrecta porque as colunas em uma necessidade
índice composto
não estar fisicamente adjacente. C está incorreta porque índices e tabelas não compartilham
o mesmo
namespace.
13. A , D , e E . Compressão, chave inversa, e única pode ser aplicada apenas a B * Árvore
índices.
B , C , e F são incorrectas. Descendente, com sede em função, e índices compostos
querpodem
B * árvore
ser ou bitmap.
14. Um . Linhas em uma tabela temporária são visíveis apenas para a sessão de inserção.
B , C , e D estão incorrectos. Todos estes incorretamente descrever o escopo da
em uma tabela temporária.
visibilidade das linhas
15. B . Se uma tabela temporária não pode caber no PGA de uma sessão, ele será gravado
tabela
para
temporário.
a sessão de
A , C , e D estão incorrectos. A está incorreta porque as tabelas temporárias podem ser
escritostemporários.
segmentos para C é incorrecta porque a localização do segmento temporário é
sessão
específico, não tabela específica. D está incorreta porque é o processo do servidor sessão
quedados,
os escreve
não o processo de utilizador.
16. D e E . Agregações e junta-se fazer um complexo vista e fazer DML impossível.
A , B , e C são incorrectas. Seleção e projeção ou renomear colunas não faz
a vista complexo.
17. D . Triste mas verdadeiro. Visualizações não vai ajudar o desempenho, a menos que
Aincluem
, B , e dicas
C sãode afinação. A está incorreta porque a vista é apenas uma instrução
incorrectas.
SELECT; isto
não prerun a consulta. B está incorreta porque o otimizador Oracle vai resolver qualquer
diferenças de sintaxe. C está incorreta porque embora vistas são pré-compilados, isso não
afetar a velocidade de compilar declaração de um usuário.
18. C . O WITH CHECK OPTION irá impedir DML que causaria uma linha de desaparecer
a partir da vista.
A , B , e D são incorrectas. A está incorreta porque opiniões são, por padrão, criado
leitura
Escreva. B está incorreta porque a vista é uma visão simples. D está incorreta porque a
instrução
não pode ter sucesso porque a opção de verificação irá rejeitá-la.
19. Um . Existe uma restrição de chave NOT NULL ou primária em DEPT.DEPTNO.
B , C , e D estão incorrectos. B está incorreta porque as restrições são aplicadas no
detalhe
tabelas, e não em opiniões. C e D são incorrecta porque a mensagem de erro seria diferente.
20. B e D . Sinônimos públicos não são objetos de esquema e por isso pode ser abordado
Elesdiretamente
podem ter osúnica.
mesmos nomes de objetos de esquema.
A e C são incorrectas. Estes são incorretas porque os usuários devem ser concedidos
sinônimo
privilégios
público
sobre
antes
umque eles possam vê-lo ou selecione a partir dele.
21. B . A ordem de prioridade é a busca do namespace do esquema antes do namespace
por isso
público,
vai ser o sinônimo privado (para empregados) que será encontrado.
A , C , e D estão incorrectos. A está incorreta porque um sinônimo pode existir tanto no
sector público
namespace eo namespace do esquema. C está incorreta porque a ordem de prioridade vai
encontrar
o sinônimo privado em primeiro lugar. D está incorreta porque não seria possível ter uma
mesa e
um sinônimo privado no mesmo esquema com o mesmo nome.
22. D . O sinônimo vai ficar bem, mas a vista será inválido. Oracle vai tentar
recompilar o ponto de vista, mas isso vai falhar.
A , B , C , e E são incorrectas. A está incorreta porque a vista será inválido. B é
incorreto, pois a palavra-chave FORCE só pode ser aplicado quando se cria uma visão (e
ainda seria inválida, mesmo assim). C está incorreta porque o sinônimo vai ficar bem. E é
incorreto porque opiniões não são descartados de forma implícita (ao contrário de índices e
23. restrições).
D . O padrão é NOCYCLE, ea sequência não pode avançar ainda mais.
A , B , e C são incorrectas. A e B estão incorretas porque CICLO está desativado por
Se fosse
padrão.
ativado, o próximo número emitido seria 1 (não 0), porque 1 é o padrão para
COMEÇAR COM. C é incorrecta porque, em nenhuma circunstância, um problema
sequência
repetindo valores.
24. Um . Não é possível alterar o valor seguinte de uma sequência, então você deve recriá-
lo., C , e D estão incorrectos. B é incorrecta porque, enquanto uma sequência
B
NuncaNOCYCLE
reeditar números,
pode não há nenhuma razão para que uma nova sequência (com o
mesmo
faça nome)
isso. não
C está pode porque START WITH só pode ser especificado no momento da
incorreta
criação. D porque
incorrecta é isso não vai forçar um ciclo instante; ele irá afetar o que acontece apenas
a sequência atinge o seu MAXVALUE ou MINVALUE.
quando
CAPÍTULO 6

DML e simultaneidade

Objetivos do exame
Neste capítulo, você vai aprender a
• 061.9.1 descrever cada Data Manipulation Language (DML)
• Linhas 061.9.2 inserir em uma tabela
• Linhas 061.9.3 Atualização em uma tabela
• 061.9.4 excluir linhas de uma tabela
• Transações de Controle 061.9.5
• 062.9.1 Explique DML e Undo geração de dados
• Monitor de 062.9.2 e administrar Undo Dados
• 062.9.3 descrever a diferença entre Undo Dados e Dados Redo
• 062.9.4 Configurar Undo Retenção
• 062.10.1 descrever o mecanismo de bloqueio e gerenciamento de concorrência Dados
• Monitor de 062.10.2 e resolver conflitos Trava

Dados em um banco de dados relacional é gerido com o Data Manipulation Language (DML)
comandos
SQL. Estesdesão INSERT, UPDATE, DELETE e, com versões mais recentes do SQL, MERGE. este
capítulo discute o que acontece na memória e no disco quando você executar instruções INSERT,
UPDATE oua exclusão maneira pela qual os dados alterados são escritas
declarações
aos blocos de segmentos de mesa e de índice e a versão antiga dos dados é escrito para blocos de um
desfazer segmento. A teoria por trás disso, resumido como o teste ACID, que cada banco de dados
deve passar, é explorado, e você vai ver os aspectos práticos de como os dados undo é gerenciado.
relacional

A transação instruções de controle COMMIT e ROLLBACK, que estão intimamente associados


DML comandos, também são explicados. O capítulo termina com uma análise detalhada dos dados
simultânea
O acesso e a tabela e bloqueio de linha.

Descreva Cada Manipulação de Dados Declaração


Idioma falando, há cinco comandos DML:
Estritamente

• SELECIONAR
• INSERIR
• ATUALIZAÇÃO
• APAGAR
• MERGE

Na prática, a maioria dos profissionais de banco de dados não incluem SELECT como parte do
umaDML.
línguaÉseparada
considerado
em seu próprio direito, que não é razoável quando se considera que os
próximos são
capítulos cinco
dedicados
anos a descrevê-la. O comando MERGE é muitas vezes caiu bem, não porque
não é claramente um comando de manipulação de dados, mas porque não fazer qualquer coisa que
não pode
com outros
sercomandos.
feito Você pode pensar em MERGE como um atalho para a execução de qualquer
um INSERT
UPDATE ou ou
umumDELETE, dependendo de alguma condição. Um comando muitas vezes
considerado com
TRUNCAR. Este DML
é realmente
é um comando (DDL) Data Definition Language, mas porque o efeito
usuários finais é o mesmo que para um DELETE (embora a sua implementação é totalmente
de
diferente), ele se encaixa com
DML.

INSERIR
Oracle armazena dados na forma de linhas em tabelas. As tabelas são preenchidos com linhas
(apenas como
povoada com asumpessoas)
país é de várias maneiras, mas o método mais comum é com a instrução
SQL é uma linguagem orientada a conjunto, de modo que qualquer um comando pode afetar uma
INSERT.
linhadeclaração
essa ou um conjunto
uma pastilha
de linhas.
pode
Segue-se
inserir uma linha individual em uma tabela ou muitas linhas em
muitas
As mesas.
versões básicas da declaração que inserir apenas uma linha, mas as variações mais complexas
pode, cominserir
comando, um várias linhas em várias tabelas.

DICA Existem técnicas muito mais rápidas do que de inserção para preencher uma tabela com um
grande O
linhas. número
utilitário
de SQL * Loader pode carregar dados de arquivos produzidos por um sistema de
alimentação
Bomba de dados podee transferir dados em massa a partir de um banco de dados Oracle para outro,
externa,
quer através
através de umdelink
arquivos
de rede.
de disco ou

EXAME TIP Um comando INSERT pode inserir uma linha, com valores de coluna especificado na
de comando, ou pode inserir um conjunto de linhas criados por uma instrução SELECT.

A forma mais simples da instrução INSERT insere uma linha em uma tabela, usando valores
em linha
fornecidos
como parte do comando. A sintaxe é como se segue:
Aqui está um exemplo:

O primeiro dos comandos anteriores fornece valores para ambas as colunas da tabela de
a mesa
REGIÕES.
tinha umaE se
terceira coluna, a declaração seria um fracasso porque depende de notação
posicional .não
declaração o diz que o valor deve ser inserido no qual coluna; ele depende da posição do
os valores, a saber, a sua ordem no comando. Quando o banco de dados recebe uma declaração
usando
notação posicional, ele irá corresponder a ordem dos valores para a ordem em que as colunas da
São definidos. A declaração também falharia se a ordem das colunas estava errado; o banco de dados
tabela
a inserção, mas seria um fracasso por causa da incompatibilidade de tipos de dados.
tentaria
O segundo comando nomeia as colunas a serem povoadas e os valores com os quais a
preenchê-los. Note que a ordem em que as colunas são mencionados agora torna-se irrelevante,
como a ordem das colunas é a mesma que a ordem dos valores.
contanto
O terceiro exemplo lista uma coluna e, portanto, apenas um valor. Todas as outras colunas serão
nulo.
deixadas
Esta declaração irá falhar se a coluna REGION_NAME não é anulável. O quarto exemplo vai
produzir o mesmo resultado, mas porque não há nenhuma lista de colunas, algum valor (mesmo um
NULL) deve
fornecida paraser
cada coluna.

DICA Muitas vezes, é considerada uma boa prática para não confiar em notação posicional e, em
vez sempre para listar
as colunas. Esta é mais trabalho, mas faz com que o código de auto-documentado (sempre uma boa
idéia!)o Ecódigo
torna tambémmais resistente contra mudanças na estrutura da tabela. Por exemplo, se uma coluna é
adicionado
mesa, todasaasuma
instruções INSERT que dependem de notação posicional irá falhar até que sejam
reescritosum
incluem para
nulo para a nova coluna. código INSERT que nomeia as colunas continuará a funcionar.

Para inserir muitas linhas com um comando INSERT, os valores para as linhas devem vir de uma
inquerir. A sintaxe é como se segue:

Note-se que esta sintaxe não usa a palavra-chave VALUES. Se a lista de coluna for omitido,
então o deve fornecer valores para cada coluna na tabela. Para copiar todas as linhas de uma
subconsulta
tabela se
outro, para
as tabelas têm a mesma estrutura de coluna, um comando como este é tudo que é
necessário:

Isso pressupõe que o REGIONS_COPY tabela existe. A subconsulta SELECIONAR lê cada


linha da tabela de origem, que é REGIÕES, e o INSERT insere-os na tabela de destino,
que é REGIONS_COPY.

EXAME TIP Qualquer instrução SELECT, especificado como uma subconsulta, pode ser usado
como fonte
passado paradeuma
linhas
inserção. Isto permite a inserção de várias linhas. Alternativamente, utilizando a
cláusula
irá inserirVALUES
uma linha. Os valores podem ser literais ou solicitadas durante a variáveis de substituição.

Para concluir a descrição do comando INSERT, deve ser mencionado que é possível
inserir linhas em várias tabelas com uma instrução. Isso não faz parte do Oracle Certified
Professional (OCP) exame, mas para ser completo, aqui está um exemplo:
Para ler esta declaração, começa na parte inferior. A subconsulta recupera todos os funcionários
últimos
recrutados
30 dias.noEm seguida, ir para o topo. A palavra-chave ALL significa que cada linha
selecionada
para inserçãoserá
emconsiderada
todas as tabelas seguintes, não apenas para a primeira tabela para a qual a condição
se primeira
A aplica. condição é 1 = 1, que é sempre verdadeira, então cada linha de origem irá criar uma linha
na
EMP_NO_NAME. Esta é uma cópia da tabela Empregados com os identificadores pessoais
removidos.
A segunda condição é DEPARTMENT_ID <> 80, que irá gerar uma linha na
EMP_NON_SALES para cada funcionário que não é no departamento de vendas; não há
necessidade
tabela a ter apara
coluna
issoCOMMISSION_PCT. A terceira condição gera uma linha em EMP_SALES
para todos os vendedores; não há necessidade para a coluna DEPARTMENT_ID porque tudo será
no departamento 80.
Este é um exemplo simples de uma inserção multitable, mas deve ficar claro que, com uma
instrução,
e, portanto, apenas uma passagem através dos dados de origem, é possível preencher muitas tabelas
de destino.
pode tomar este
uma enorme quantidade de tensão fora o banco de dados.

Exercício 6-1: Use o comando Inserir Neste exercício, usam várias técnicas para inserir linhas
em uma tabela.

1. Conecte-se ao esquema HR com o SQL Developer ou SQL * Plus.


2. Consulta dos produtos, encomendas e tabelas ORDER_ITEMS criados no Exercício 5-5 para
confirmar os dados que são armazenados atualmente.

3. Insira duas linhas na tabela de produtos, oferecendo a linha valores.

4. Insira duas linhas na tabela de ordens, fornecendo explicitamente os nomes das colunas.

5. Insira três linhas na tabela de ORDER_ITEMS, utilizando variáveis de substituição.

Quando solicitado, fornecem os seguintes valores: {1, 1, 2,5}, {2,1,1,3} e {1,2,2,4}.


6. Insira uma linha na tabela produtos, cálculo do PRODUCT_ID ser maior do que 100
o valor corrente alta. Isto terá uma subconsulta escalar.

7. Confirmar a inserção das linhas.

8. Commit as inserções.
A ilustração a seguir mostra os resultados do exercício, usando o SQL * Plus:

ATUALIZAR
O comando UPDATE é usado para alterar as linhas que já existem-linhas que foram criados por um
Inserir comando ou, eventualmente, por uma ferramenta como o Data Pump. Tal como acontece com
qualquer outro comando
ATUALIZAÇÃO SQL,uma
pode afetar um linha ou um conjunto de linhas. O tamanho do conjunto afectado
por uma actualização
determinada por uma está
cláusula WHERE, exatamente da mesma maneira que o conjunto de linhas
recuperadasé por
declaração definida
um SELECT
por uma cláusula WHERE. A sintaxe é idêntica. Todas as linhas atualizadas
estarãonão
mesa; eméum possível para um único comando UPDATE para afetar as linhas em várias tabelas.
Ao atualizar uma linha ou um conjunto de linhas, especifica comando de atualização quais
linhas
colunas
para atualizar.
da Não é necessário (ou mesmo comum) para atualizar a cada coluna da linha. Se
o
coluna já a ser actualizado tem um valor, então este valor é substituído pelo novo valor especificado
o comando UPDATE. Se a coluna não foi povoada-que anteriormente seja, seu valor era
pelo
NULL-então será preenchida após a atualização com o novo valor.
Um uso típico de UPDATE é para recuperar uma linha e atualizar uma ou mais colunas da linha.
recuperação
o irá ser feito usando uma cláusula WHERE que seleciona uma linha por sua chave
primária, queexclusivo
identificador éa que irá garantir que apenas uma linha é recuperada. Em seguida, as colunas
que sãoquaisquer
haverá atualizadosoutras do que a coluna primária chave colunas. É incomum para alterar o valor do
chave primária. O tempo de vida de uma linha começa quando é inserido e, em seguida, pode
continuar através
atualizações, até que
de várias
seja excluído. Ao longo deste tempo de vida, que não costumam mudar sua
chave
Paraprimária.
atualizar um conjunto de linhas, use uma menos restritiva cláusula WHERE que a chave
cadaprimária.
linha de Atualizar
uma tabela, não use qualquer cláusula WHERE em tudo. Este comportamento
conjuntoisso
quando pode
acontece
ser desconcertante
por acidente. Se você selecionar as linhas a serem atualizados com qualquer
coluna que não seja a
chave primária, você pode atualizar várias linhas, não apenas um. Se você omitir a cláusula WHERE
completamente,
você irá atualizar as inteiro de mesa talvez milhões de linhas atualizadas com apenas uma
declaração,
você quis mudar
quandoapenas um.

EXAME TIP declaração Uma atualização pode alterar linhas em apenas uma mesa, mas pode
alterar qualquer
número de linhas na tabela.

Um comando UPDATE deve honrar quaisquer restrições definidas para a tabela, assim como o
INSERÇÃO
original teria. Por exemplo, não será possível atualizar uma coluna que foi marcada como
obrigatória para um valor nulo ou atualizar uma coluna de chave primária para que ele não será mais
exclusivo.
sintaxe o é a seguinte:
básica
A forma mais complexa do comando utiliza subconsultas para um ou mais dos valores de coluna
e para a condição ONDE. Figura 6-1 mostra as atualizações de complexidade variável, executado a
partir*dePlus.
SQL

Figura 6-1 Exemplos de uso da instrução UPDATE


O primeiro exemplo é o mais simples. Uma coluna de uma linha é ajustado para um valor literal.
é escolhido
Porque acomlinha
uma cláusula WHERE que usa o predicado de igualdade na chave primária da
tabela,
uma há
garantia absoluta de que, no máximo, apenas uma linha será afetado. Nenhuma linha será
alterado se
Cláusula WHERE
o não conseguir encontrar todas as linhas em tudo.
O segundo exemplo mostra a utilização de aritmética e uma coluna existente para definir o novo
seleção
valor,
deelinha
o não é feito na coluna de chave primária. Se a seleção não for feito na chave primária
se um predicado nonequality (tais como ENTRE) é utilizado, em seguida, o número de linhas pode
ou
ser actualizados
mais de um. Se a cláusula WHERE é totalmente omitido, a atualização será aplicada a cada linha
a mesa.
O terceiro exemplo na Figura 6-1 apresenta a utilização de um subconsulta para definir o
conjuntoUma
Atualizada. de linhas a ser adicional menor é o uso de uma variável de substituição para solicitar
complicação
ao usuário
um valor a ser usado na cláusula WHERE da subconsulta. Neste exemplo, a subconsulta (linhas 3 e
irá selecionar cada funcionário que está em um departamento cujo nome inclui a string 'TI' e vontade
4)
incrementar seu salário atual em 10 por cento (improvável de acontecer na prática).
É também possível usar subconsultas para determinar o valor para o qual uma coluna irá ser
definido, como no

quarto exemplo. Neste caso, um empregado (identificado por chave primária em linha 5) é
transferido para
departamento 80 (departamento de vendas), e depois a subconsulta nas linhas 3 e 4 define sua taxa
de comissão
para qualquer que seja a taxa de comissão menor no departamento passa a ser.
A sintaxe de uma atualização que usa subconsultas é a seguinte:

Não existe uma restrição rígida sobre as subconsultas utilizando colunas de actualização na
subconsulta
cláusula deve
SET. retornar
o um escalar de valor. Um valor escalar é um valor único de qualquer tipo
adeconsulta
dados é deve
necessária;
retornar uma linha, com uma coluna. Se a consulta retornar vários valores, a
atualização
falhou. Considere estes dois exemplos:

O primeiro exemplo, usando um predicado de igualdade na chave primária, sempre terá êxito.
a subconsulta
Mesmo se não recuperar uma linha (como seria o caso se não houvesse empregado com
EMPLOYEE_ID igual a 206), a consulta ainda irá retornar um valor escalar: um nulo. Nesse caso,
todo
linhaso em funcionários teriam seu conjunto salário para NULL, que não pode ser desejado, mas não
éum erro na medida em que SQL está em causa. O segundo exemplo utiliza um predicado de
igualdade em o que não é garantido para ser único. A declaração terá êxito se existe apenas uma
LAST_NAME,
funcionário com esse nome, mas se houvesse mais de um, seria falhar com o erro “ORA-01427:
Única linha subconsulta retorna mais de uma linha.”Para código que irá trabalhar de forma
confiável,
estado dosnão
dados,
importa
que éovital
que assegurar
a que as subconsultas utilizados para definir os valores da
coluna são escalar.

DICA Uma correção comum para certificar-se de que as consultas são escalares é usar MAX ou
aMIN. Esta versão
declaração do terá êxito:
sempre
atualizar os funcionários definir salário = (select max (salário) dos empregados
ultimo_nome = 'Abel');
onde
No entanto, só porque ele vai trabalhar não significa necessariamente que ele faz o que é desejado.

As subconsultas na cláusula WHERE também deve ser escalar se estiver usando o predicado de
nos igualdade
exemplos (como
anteriores) ou a maior / menor do que predicados. Se ele está usando o predicado IN,
em seguida, o
consulta pode retornar várias linhas, como neste exemplo que usa IN:
Isto irá aplicar a atualização a todos os funcionários em um departamento cujo nome inclui a
string 'TI'.

Existem vários destes. Mas mesmo que a consulta pode retornar várias linhas, ele ainda deve
retornar apenas
uma coluna.

Exercício 6-2: Use o comando update Neste exercício, usam várias técnicas para atualizar
linhas em uma tabela. Supõe-se que a tabela de HR.PRODUCTS é como mostrado na ilustração na
de Exercício 6-1 . Se não, ajustar os valores conforme necessário.
extremidade

1. Conecte-se ao esquema HR usando SQL Developer ou SQL * Plus.


2. Atualize uma única linha, identificado por chave primária.

Esta declaração deve retornar a mensagem “1 linha atualizada.”


3. Atualizar um conjunto de linhas, usando uma subconsulta para selecionar as linhas e
fornecer valores.

Esta declaração deve retornar a mensagem “1 linha atualizada.”


4. Confirmar o estado das linhas.

5. Confirme as alterações feitas.

EXCLUIR
Anteriormente linhas inseridas podem ser removidos a partir de uma tabela com o comando
DELETE.
irá removerOuma
comando
linha ou um conjunto de linhas da tabela, dependendo de uma cláusula WHERE. Se
não há WHERE, todas as linhas na tabela serão removidos (que pode ser um pouco desconcertante
Cláusula
se vocêde fora a cláusula WHERE por engano).
deixou

DICA Não há “aviso” solicita quaisquer comandos SQL. Se você instruir o banco de dados para
um milhão de linhas, ele vai fazê-lo. Imediatamente. Não é nada disso “Tem certeza?” Negócio que
eliminar
alguns
ambientes oferecer.

A eliminação é tudo ou nada. Não é possível nomear colunas. Quando linhas são inseridas, você
pode escolher quais colunas para preencher. Quando as linhas são atualizadas, você pode escolher
quais colunas
atualizar. Mas uma exclusão se aplica a toda linha, a única escolha é que as linhas em que mesa. este
faz com que o comando DELETE sintaticamente mais simples do que comanda o outro DML. A
sintaxe é maneira:
seguinte tão

Este é o mais simples dos comandos DML, especialmente se a condição é omitido. Nesse caso,
cada linha na tabela serão removidos sem aviso. A única complicação está na condição.
Este pode ser um jogo simples de uma coluna para um literal.

A primeira declaração identifica um registro pela chave primária. Apenas uma linha será
tudo,
removida-ou
se o valor dado
nenhuma
não encontrar
linha na uma correspondência. A segunda instrução usa um predicado
nonequality que
poderia resultar na exclusão de várias linhas, ou seja, cada funcionário cujo sobrenome começa com
maiúscula S . A terceira declaração usa um predicado de igualdade, mas não na chave primária. Ele
uma
um número de departamentos com uma variável de substituição, e todos os funcionários nesse
pede
departamento
declaração final
vai.
remove
o todos os empregados que não estão atualmente atribuídos a um
departamento.
A condição pode também ser um subconsulta.

Este exemplo usa uma subconsulta para a seleção de linha que navega a árvore geográfica HR
mais(com
subconsultas) para apagar cada funcionário que trabalha para qualquer departamento que se
baseia
A mesmana Europa.
regra para o número de valores devolvidos pela subconsulta aplica-se para uma
comando: Se a selecção de linha baseia-se um predicado de igualdade (como no exemplo anterior), o
actualização
subconsulta deve ser escalar, mas se ele usa IN, a subconsulta pode retornar várias linhas.
Se o comando DELETE não encontrar linhas para apagar, isso não é um erro. O comando irá
a mensagem
retornar “0 linhas excluído” em vez de uma mensagem de erro porque a instrução foi concluída
com sucesso, ele simplesmente não encontrar nada para fazer.

Exercício 6-3: Utilize o comando delete Neste exercício, usam várias técnicas para excluir linhas
em uma tabela. Supõe-se que a tabela de HR.PRODUCTS foi modificada durante os dois anteriores
exercícios. Se não, ajustar os valores conforme necessário.

1. Conecte-se ao esquema HR usando SQL Developer ou SQL * Plus.


2. Remover uma linha, utilizando o predicado de igualdade na chave primária.

Isso deve retornar a mensagem “1 linha excluída.”


3. Tentativa de remover todas as linhas na tabela, omitindo uma cláusula WHERE.

Isto irá falhar devido a uma violação de restrição, porque há registros filho na
ORDER_ITEMS tabela que os valores de referência product_id na tabela de produtos
através da
FK_PRODUCT_ID restrição de chave estrangeira.
4. Cometer a eliminação.

Para remover linhas de uma tabela, há duas opções: o comando DELETE e TRUNCATE
comando. APAGAR é menos drástica, em que uma exclusão pode ser revertida, enquanto um
truncamento
APAGAR também
não pode.
é mais controlável em que é possível escolher quais linhas para excluir, enquanto
que um
truncamento sempre afeta toda a tabela. APAGAR é, no entanto, muito mais lento e pode colocar um
monte de
tensão sobre a base de dados. TRUNCAMENTO é virtualmente instantânea e sem esforço.

TRUNCAR
O comando TRUNCATE não é um comando DML; é um comando DDL. A diferença é
enorme. Quando os comandos DML afeta os dados, eles inserir, atualizar e excluir linhas como parte
transações. Transações são definidos mais adiante neste capítulo, na seção “Operações de Controle”.
de
agora, diga-se que uma transação pode ser controlada, no sentido de que o usuário tem a opção de
Para
se a fazer o trabalho feito em uma transação permanente ou se para revertê-la. Isso é útil, mas
obriga o banco de dados para fazer o trabalho adicional nos bastidores que o usuário não está ciente.
comandos não são transações do usuário (embora dentro do banco de dados, eles são, de fato,
DDL
implementadas
transações, mascomo
os desenvolvedores não podem controlá-los), e não há nenhuma escolha sobre se
para torná-los
permanente ou para invertê-los. Uma vez executado, eles são feitos. No entanto, em comparação
commuito
são o DML,
rápidos.
eles
EXAME TIP Transações, consistindo de INSERT, UPDATE e DELETE (ou mesmo MERGE)
comandos, podem ser feitas permanente (com um COMMIT) ou revertida (com um ROLLBACK).
TRUNCATE comando, como qualquer outro comando DDL, é imediatamente permanente. Ela
UMA
nunca pode ser
revertida.

Do ponto de vista do usuário, um truncamento de uma tabela é equivalente a executar um


cadaDELETE de comando DELETE sem uma cláusula WHERE. Mas, enquanto um apagamento
linha; é um
poderátempo
algum levar (possivelmente horas, se houver muitas linhas na tabela), um truncamento vai passar
Não faz diferença se a tabela contém uma linha ou mil milhões; um TRUNCAMENTO será
instantaneamente.
instantâneo. A tabela ainda existirá, mas ele vai estar vazio.
praticamente

DICA comandos DDL, como TRUNCATE, irá falhar se houver qualquer comando DML ativo no
mesa. A transação irá bloquear o comando DDL até que o comando DML é encerrado com um
COMMIT ou um ROLLBACK.

EXAME TIP TRUNCATE esvazia completamente a mesa. Não existe o conceito de seleção de
linha como
existe com um DELETE.

Uma parte da definição de uma tabela como armazenado no dicionário de dados é a tabela de
localização.
física Quando criado, uma mesa é atribuído uma única área de espaço de tamanho fixo na
arquivos de dados do banco de dados. Isso é conhecido como uma extensão e estará vazia. Então,
como linhas
medida enche.sãoUma
inseridas,
vez queo ele está cheio, mais extensões serão alocados para a mesa
automaticamente.
portanto, Umaum
consiste em mesa
ou mais extensões, que detêm as linhas. Bem como o acompanhamento da
alocação, o dicionário de dados rastreia quanto do espaço alocado para a tabela tenha sido usado.
extensão
é feito com a marca de água elevado . A marca d'água alta é a última posição na última medida em
este
que tem
sido usado; todo o espaço abaixo da marca de água alta foi utilizada para as linhas de uma só vez ou
outra, e do espaço acima da marca de água alta foi ainda usado.
nenhum
Note que é possível para que haja bastante espaço abaixo da marca de água de alta que não está
sendono momento; isto é por causa de linhas de ter sido removido com um comando DELETE.
utilizado
linhas em uma tabela empurra para cima a marca de água de alta. Excluí-los deixa a marca de água
inserindo
deoalta
é; espaço
ondeque ocupavam permanece atribuído à mesa, mas é liberado para inserir mais linhas.
Truncar uma tabela repõe a marca d'água alta. Dentro do dicionário de dados, a posição
a marca
registrada
d'água alta é movido para o início do primeiro ponto da tabela. Porque a Oracle assume que
não pode haver linhas acima da marca d'água alta, isso tem o efeito de remover todas as linhas do
mesa. A tabela é esvaziado e permanece vazio até que as inserções subsequentes começar a empurrar
a água de
marcar novamente
alta para cima. Desta forma, um comando DDL, que faz pouco mais do que fazer uma
no dicionário de dados, pode aniquilar milhares de milhões de linhas em uma tabela.
atualização
A sintaxe para truncar uma tabela não poderia ser mais simples.

MERGE
Há muitas ocasiões em que você deseja tomar um conjunto de dados (a origem) e integrá-lo em uma
tabela existente (o alvo). Se uma linha nos dados de origem já existe na tabela de destino, você pode
querer
para atualizar a linha de destino, você pode querer substituí-lo completamente, ou você pode querer
deixarinalterada.
linha o alvo Se uma linha na fonte não existe no destino, você vai querer para inseri-lo. o
comando MERGE permite que você faça isso. Uma mala passa através dos dados de base para cada
tentar localizar uma linha correspondente no alvo. Se nenhuma correspondência for encontrada, uma
fileira
linha pode ser inserido;
correspondência se um a linha correspondente pode ser atualizado. A liberação de 10 g de
for encontrada,
reforço
linha pode
significa
até serque
excluído
o alvodepois de ser acompanhado e atualizado. O resultado final é uma tabela
os
de dados
destinonapara
fonte foi fundida.
a qual
Uma operação MERGE não faz nada que não poderia ser feito com INSERT, UPDATE e
declarações,
DELETEmas com uma passagem através os dados de origem, ele pode fazer todos os três.
código alternativo
MERGE exigiria três
sempassagens
uma pelos dados, um para cada comando.
Os dados de origem para a instrução MERGE pode ser uma mesa ou qualquer subconsulta. A
encontrar
condição
linhas
usado
correspondentes
para no alvo é semelhante a uma cláusula WHERE. As cláusulas que
atualização ou inserção
linhas são tão complexo como uma atualização ou um comando INSERT. Segue-se que MERGE é o
mais
complicada dos comandos DML, que não é razoável, porque é (discutivelmente) o mais
poderoso. Usando MERGE não está no currículo OCP, mas para ser completo, aqui está um exemplo
simples:

A declaração anterior usa o conteúdo de um NEW_EMPLOYEES tabela de atualizar ou inserir


em funcionários.
linhas A situação poderia ser que os empregados é uma tabela de todos os funcionários, e
NEW_EMPLOYEES é uma tabela com linhas para novos funcionários e para alterações salariais
para o pessoal
comando vai passar
existente.
por NEW_EMPLOYEES
o e, para cada linha, tentar encontrar uma linha em
Funcionários com o mesmo EMPLOYEE_ID. Se houver uma linha encontrada, sua coluna de salário
atualizado com o valor da linha na NEW_EMPLOYEES. Se não houver tal linha, um será
será
inserido. Variações sobre a sintaxe permitir o uso de uma subconsulta para selecionar as linhas de
origem, eapagar
possível é aindalinhas correspondentes.

Falhas instrução DML


Os comandos podem falhar por muitas razões, incluindo o seguinte:

• Os erros de sintaxe
• As referências a objetos inexistentes ou colunas
• As permissões de acesso
• violações de restrição
• Questões Espaciais

Figura 6-2 mostra várias tentativas de execução de uma declaração com o SQL * Plus.
Figura 6-2 Alguns exemplos de falha de declaração

Na Figura 6-2 , um utilizador se liga como SUE (senha, Sue-não um exemplo de boa segurança)
consulta
e a tabela EMPREGADOS. A declaração falhar devido a um erro de sintaxe simples,
identificado por SQL * Plus. Observe que o SQL * Plus nunca tenta corrigir esses erros, mesmo
corretamente
quando
sabe exatamente o que você quis escrever. Algumas ferramentas de terceiros pode ser mais útil,
oferecendo
correção de automática
erros.
A segunda tentativa de executar a instrução falha com um erro informando que o objeto não
Issoexiste.
é porque ele não existe no esquema do usuário atual; que existe no esquema HR. Tendo
corrigida isso, a terceira corrida da declaração sucede, mas apenas por enquanto. O valor passado na
cláusula é uma string, “07-JUN-2002”, mas o HIRE_DATE coluna não está definida na tabela como
ONDE
uma string;como uma data. Para executar a instrução, o banco de dados teve que trabalhar para fora o
é definido
que o usuário
significava e lançou
realmente
a corda como uma data. No último exemplo, o elenco tipo falhar.
Se uma declaração é sintaticamente correto e não tem erros com os objetos a que se refere, pode
ainda falhar por causa de permissões de acesso. Se o usuário tentar executar a instrução não tem
as permissões relevantes nas tabelas a que se refere, o banco de dados retornará um erro idêntico ao
o que seria devolvido se o objeto não existia. Na medida em que o usuário está em causa, não
existir.
Erros causados por permissões de acesso são um caso em que SELECT e DML declarações
podemresultados.
diferentes retornar É possível que um usuário tem permissão para ver as linhas em uma tabela,
mas nãoatualizar
inserir, para ou apagar. Uma tal disposição não é incomum; muitas vezes faz sentido para os
Talvez mais confusa, permissões pode ser configurado de tal maneira que é possível inserir
negócios.
linhas que não estão autorizados a ver. E, talvez o pior de tudo, é possível excluir linhas que você
não pode ver nem atualização. No entanto, tais acordos não são comuns.

A violação de restrição pode causar uma instrução DML falhar. Por exemplo, um comando
INSERT
inserir váriaspode
linhas em uma tabela, e para cada linha no banco de dados irá verificar se uma linha já
existe com a mesma chave primária. Isto ocorre à medida que cada linha é inserida. Pode ser que os
linhas (ou os primeiros milhões de linhas) entrar sem um problema, e em seguida, a declaração
primeiros
atingeduplicado.
valor uma linha Neste
com umponto, ele retornará um erro, e a instrução irá falhar. Esta falha será
desencadear uma reversão de todas as inserções que já tinham conseguido. Esta é parte do padrão
SQL; uma deve ser bem sucedido no total ou não em todos. A reversão do trabalho é um rollback .
declaração
os mecanismos
de um rollback está descrito na próxima seção deste capítulo, “Operações de Controle”.
Se uma declaração falhar devido a problemas de espaço, o efeito é semelhante. Uma parte da
conseguiram
declaraçãoantes
podede o banco de dados ficou sem espaço. A parte que teve sucesso será
revertida. Rollback de uma instrução é um assunto sério. Ele força o banco de dados para fazer um
automaticamente
monte de eextras
trabalhar normalmente irá demorar pelo menos enquanto a declaração já tomou (às vezes muito
mais longo).

Transações de controle
Os conceitos por trás de uma transação são parte do paradigma de banco de dados relacional. Uma
consiste de uma ou mais instruções DML, seguido quer por um ROLLBACK ou um comando
transação
COMMIT.
É possível usar o comando SAVEPOINT para dar um grau de controle dentro da transação.
Antes de ir para a sintaxe, é necessário rever o conceito de uma transação. Um tópico relacionado é
consistência de leitura; este é automaticamente implementado pelo servidor Oracle, mas até certo
programadores pode controlá-lo pela forma como eles usam a instrução SELECT.
ponto,

Transações de banco de dados


mecanismo da Oracle para assegurar a integridade da transação é a combinação de segmentos de
desfazer ederefazer
arquivos log. Este mecanismo é sem dúvida o melhor de qualquer banco de dados ainda
desenvolvido ecom
perfeitamente estáasem
normas
conformidade
internacionais de processamento de dados. Outros fornecedores de
banco
os mesmos
de dados
padrões
em conformidade
com seus próprios
com mecanismos, mas com diferentes níveis de eficácia. Em
resumo, qualquer
banco de dados relacional deve ser capaz de passar no teste ACID; deve garantir atomicidade,
isolamento, e durabilidade.
consistência,

A é para Atomicity
O princípio da atomicidade afirma que ou todas as partes de uma transação deve completar ou
nenhum deles
completo. Por exemplo, se os seus analistas de negócios têm dito que cada vez que mudar de um
salário, você também deve mudar seu grau, então a transação atômica será composto de duas
funcionário
atualizações.
banco de dados
o deve garantir que tanto passar ou não fazer. Se apenas uma das atualizações eram
para ter
você teria
sucesso,
um empregado com um salário que era incompatível com seu grau, que é um conjunto de
dados
corrupção em termos de negócios. Se alguma coisa (qualquer coisa!) Vai mal antes que a transação é
completa, o próprio banco de dados deve garantir que todas as peças que se passam por são
invertidos;automaticamente.
acontecer esta obrigação Mas, apesar de uma transação atômica soa pequena (como um átomo),
que poderia
enorme. Paraser
dar outro exemplo, é logicamente impossível em termos de contabilidade para o
nominal
contabilidade de um pacote de contabilidade para ser metade em agosto e metade em setembro. O
capotamento
portanto (em de
termos
fim de
de mês
negócios)
é uma transação atômica, o que pode afetar milhões de linhas em
de tabelas, bem como levar horas para ser concluído (ou reverter, se alguma coisa der errado). A
milhares
reversão de
uma transação incompleta é o processo de reversão e pode ser manual (como quando você emitir o
comando ROLLBACK), mas deve ser automático e inevitável no caso de um erro.

C é para Consistência
O princípio da coerência afirma que os resultados de uma consulta deve ser consistente com o estado
banco de dados no momento da consulta começou. Imagine uma consulta simples que calcula a
da
média Se
mesa. do avalor defor
tabela uma colunavai
grande, dedemorar
um muitos minutos para passar pela mesa. Se outros usuários
atualizar a coluna enquanto a consulta está em andamento, deve a consulta incluem os valores novos
ou velhos?
Deve incluir linhas que foram inseridas ou excluídas após a consulta começou? O princípio de
consistência exige que a base de dados de garantir que os valores alterados não são vistos pela
consulta;
dar-lhe serámédia de coluna como era quando a consulta começou, não importa quanto tempo a
uma
toma ou o que outra atividade está ocorrendo nas tabelas em questão.
consulta
Através do uso de segmentos de desfazer, a Oracle garante que se a consulta for bem sucedido, o
consistente.
resultadoNo seráentanto, se os seus segmentos de desfazer está configurado incorretamente, a
consulta
O erro dopode
Oracle
nãofamoso
ter êxito.
“ORA-1555: instantâneo muito antigo” é levantada. Isto costumava ser um
problema
para fixar difícil
com versões anteriores do banco de dados, mas de liberação 9 i em diante, você deve
sempre
Evite ser capaz de
isso.

I é para Isolamento
O princípio do isolamento afirma que um incompleta (isto é, não confirmada) de transação deve ser
invisível para o resto do mundo. Enquanto a transação está em andamento, apenas o uma sessão que
éexecutar a operação é permitida para ver as alterações. Todas as outras sessões devem ver a
dados, não os novos valores. A lógica por trás disso é, em primeiro lugar, que a transação completa
inalterada
pode não passar
(Lembre-se o princípio da atomicidade?), E, portanto, nenhum outro usuário deve ser autorizado a
alterações que possam ser revertida. E, segundo, durante o progresso de uma transação, os dados são
ver
(em
termos de negócios) inconsistente; há um curto período de tempo quando o empregado teve seu
salário
não a sua
mudado,
série. isolamento
mas da transação requer que o banco de dados deve esconder operações em
de outros usuários. Eles vão ver a versão pré-atualização dos dados até que a transação for
andamento
quando eles vão ver todas as alterações como um conjunto consistente.
concluída,
A Oracle garante isolamento da transação, consistência e atomicidade através do uso de undo
segmentos.
D é paradaDurabilidade
O princípio durabilidade afirma que uma vez que uma transação for concluída, ele deve ser
impossível
banco de dados
para para
o perdê-lo. Durante o tempo em que a transação está em andamento, o princípio
do isolamento
exige que ninguém (excepto a sessão em questão) pode ver as mudanças que fez até agora. Mas o
instante em que a transação for concluída, ele deve ser transmitido para o mundo, eo banco de dados
deveagarantir
que mudança nunca é perdido porque um banco de dados relacional não é permitido perder dados.
cumpre
esta exigência
o oracle
através do uso de arquivos de log. Os arquivos de log vêm em arquivos de log redo
duas formas-on-line
arquivar arquivos de elog refazer-que armazenam um registro de todas as alterações aplicadas ao
bancoser
pode deperdido
dados. Claro,
atravésosdedados
erro do usuário, como o uso inapropriado DML e soltando objetos. Mas,
tanto quanto
Oracle e o administrador de banco de dados (DBA) estão em causa, esses eventos são transações
como
de outros.
qualquer
De acordo com o princípio de durabilidade, eles são absolutamente não reversível.

Executar instruções SQL


A linguagem SQL inteira consiste de apenas uma dúzia de comandos. As que estão preocupados
com
aqui estão SELECT, INSERT, UPDATE e DELETE.

Executar uma instrução SELECT


O comando SELECT recupera dados. A execução de uma instrução SELECT é um processo
faseado. odo servidor de executar a instrução irá primeiro verificar se os blocos contendo os dados
processo
necessários
já estão na memória no cache de buffer do banco de dados. Se eles são, em seguida, a execução pode
imediatamente. Se não estiverem, o processo servidor deve localizá-los no disco e copiá-los para o
prosseguir
cache do buffer do banco de dados.

EXAME DICA Lembre-se sempre que os processos de servidor ler blocos de arquivos de dados no
banco dededados
tampão cache; DBW n escreve quarteirões do cache de buffer do banco de dados para os arquivos
de dados.
Uma vez que os blocos de dados necessários para a consulta estão na memória cache do banco
processamento
de dados, qualquer
(como classificação
outra ou agregação) é realizada na Global Area o Programa (PGA) do
sessão. Quando a execução for concluída, o conjunto de resultados é retornado para o processo do
usuário.
Como isso se relaciona com o teste ACID acabamos de descrever? Para consistência, se a
blococonsulta
que foiencontra
alteradoum
desde o tempo da consulta iniciado, o processo servidor irá para o undo
segmento que protegia a mudança, localize a versão antiga dos dados, e, para os fins da
consulta atual, reverter a mudança. Assim, quaisquer alterações iniciada após a consulta começou
não ser visto. Um mecanismo semelhante garante isolamento da transação, embora este é baseado
vontade
também
se em foi cometido, não apenas sobre se os dados foram alterados. Claramente, se o
a mudança
dados necessários para fazer isso rollback não nos segmentos de desfazer é, este mecanismo não vai
éfuncionar.
quando você
que obter o “instantâneo muito antigo” erro.
A Figura 6-3 mostra uma representação da forma de um comando SELECT é processada.
Figura 6-3 As fases de execução de um SELECT

Na figura, o passo 1 é a transmissão da instrução SELECT do processo do usuário para o


processo do servidor. O servidor irá procurar o cache de buffer do banco de dados para determinar se
o necessário
blocos já estão na memória e, se forem, vá para a etapa 4. Se não forem, o passo 2 é localizar o
blocos nos arquivos de dados, e o passo 3 é copiar-los para a memória cache do banco de dados.
Passo
os dados
4 transfere
para o processo
a de servidor, onde pode haver algum processamento adicional antes do
passo
da consulta
5 devolve
para oo resultado
processo do usuário.

A execução de uma instrução UPDATE


Para qualquer operação DML, é necessário trabalhar em ambos os blocos de dados e desfazer blocos
e também
gerar redo:para
a A, C, e I do teste ÁCIDO requerem a geração de desfazer; a D exige geração
de refazer.

EXAME TIP Undo não é o oposto de refazer! Refazer protege todas as alterações de bloco, não
éimporta
uma mudança
se ele para um bloco de um segmento de mesa, um segmento de índice, ou um segmento
de desfazer.
em causa, um Tanto
segmento
quantoderedo
undoé é apenas mais um segmento, e quaisquer alterações devem ser
feitas durável.
O primeiro passo na execução DML é o mesmo que a execução SELECCIONAR; os blocos
necessários
encontrado devem
no cache ser do banco ou copiado para a memória cache do banco de dados de
buffer
arquivos
única alteração
de dados.
queoé um vazio (ou expirado bloco) de um segmento de desfazer é necessário
também.
as coisas Asãopartir
um pouco
de então,
mais complicado.
Primeiro, travas devem ser colocados em quaisquer linhas e chaves de índice associados que vão
a operação.
ser afetados
Isso por
é abordado mais adiante neste capítulo.
Em seguida, o redo é gerado; o processo servidor grava no log buffer os vetores de mudança que
são
vai ser aplicado aos blocos de dados. Esta geração de refazer é aplicado tanto a mudanças de bloco
edeparamesadesfazer as alterações bloco. Se uma coluna de uma linha é para ser atualizado, então o rowid
aeocoluna
novo valor de
são escritos para a memória intermédia de registo (que é a variação que vai ser aplicada ao
ebloco
também
de mesa)
o valor antigo (que é a variação que vai ser aplicada ao bloco de desfazer). Se a coluna
parte de uma chave de índice, em seguida, as mudanças a ser aplicada para o índice também são
estiver
escritos
em conjunto
para com
a memória
uma alteração
intermédia
a ser
deaplicado
registo, a um bloco de desfazer a proteger a mudança de
índice.
Tendo gerado o refazer, a actualização é efectuada na cache de memória intermédia base de
dadosdados;
tabela
o bloco
é atualizada
de com a nova versão da coluna alterada, e a versão antiga do mudado
coluna está escrito para o bloco do segmento de desfazer. Deste ponto até que a atualização está
comprometida,
consultas de outras
todossessões abordando a linha alterada será redirecionado para os dados de desfazer.
Apenasque
sessão o está fazendo a atualização verá a versão atual da linha no bloco de tabela. o
mesmo princípio se aplica a todas as mudanças de índice associados.

Executar instruções INSERT e DELETE


Conceitualmente, inserir e excluir são geridos da mesma forma como uma atualização. O primeiro
é para localizar os blocos relevantes no cache de buffer do banco de dados ou para copiá-los para
passo
há.
que se não forem
geração de redo é o mesmo. Todos os vetores de mudanças a serem aplicadas aos dados e
escrita
desfazer
para ablocos
memória
são intermédia
de primeirade registo. Para uma inserção, o vector de alteração a ser aplicada
ao bloco de tabela (e
possivelmente blocos de índice) é constituído pelos bytes que compõem a nova linha (e
possivelmente
chaves). O vector
o novo
paraíndice
ser aplicada ao bloco de desfazer é o idlinha da nova linha. Para um
DELETE,
change vector
o a serem gravados para o bloco de desfazer é a linha inteira.
Uma diferença fundamental entre a inserção e eliminação está na quantidade de desfazer gerado.
linhaQuando
é inserida,
um a única undo gerado é escrever a nova rowid para o bloco de desfazer. Isto é
porque para reverter uma INSERT, a única informação Oracle requer é o rowid para que este
declaração pode ser construído:

Executar essa instrução vai inverter a alteração originais.


Para um DELETE, toda a linha (que pode ter várias kilobytes) deve ser escrito para o undo
bloco de modo que a exclusão pode ser revertida se necessário através da construção de uma
declaração
linha completa
de que
de volta
irá inserir
para oa mesa.

O início eo fim de uma Operação


A sessão começa uma transação no momento em que emite qualquer DML. A transação continua
através de
número dequalquer
mais DML comandos até que as questões de sessão ou um COMMIT ou um
declaração. Apenas as modificações efetivadas serão feitas permanente e tornar-se visível para
ROLLBACK
outras
É impossível
sessões.aninhar
isto transações. O padrão SQL não permite que um usuário para iniciar uma
transação
e, em seguida, iniciar outra antes de terminar o primeiro. Isso pode ser feito com PL / SQL (Oracle
linguagem proprietária de terceira geração), mas não com o SQL padrão da indústria.
As instruções de controle de transação explícita são COMMIT, ROLLBACK, e SAVEPOINT. Lá
também são diferentes circunstâncias, um emitido pelo usuário COMMIT ou ROLLBACK que irá
terminar uma transação.
implicitamente

• Emissão de um DDL ou Data Control Language declaração (DCL)


• Sair da ferramenta de usuário (SQL * Plus ou SQL Developer ou qualquer outra coisa)
• Se a sessão do cliente morre
• Se o sistema falhar

Se um usuário emite uma DDL (CREATE, ALTER ou DROP) ou DCL (concessão ou


revogação)
a transação em de comando,(se houver) será comprometida; será tornada permanente e se tornam
andamento
para todos os outros usuários. Isso ocorre porque os comandos DDL e DCL são elas mesmas
visíveis
transações.
não é possível
Comoaninhar
isso transações
é em SQL, se o usuário já tem uma transação em execução, as
o usuário foi executado será comprometida implicitamente antes da instrução que compõe o DDL ou
demonstrações
DCL
comando executa.
Se você iniciar uma transação emitindo um comando DML e depois sair da ferramenta que você
semestá usando
emitir explicitamente ou um COMMIT ou um ROLLBACK, a transação irá terminar, mas
se ele termina com um COMMIT ou um ROLLBACK é totalmente dependente da forma como a
ferramenta
escrito. Muitas
é ferramentas terão um comportamento diferente, dependendo de como a ferramenta é
encerrado.
no ambiente(Por
Microsoft
exemplo,Windows, é comum para ser capaz de terminar um programa, quer por
selecionando Arquivo | Sair de um menu no canto superior esquerdo da janela ou clicando em um X
no canto
canto. Ossuperior
programadores
direito que escreveram a ferramenta pode muito bem ter codificado lógica
diferente para
funções.) Em ambos
estes os casos, será uma saída controlada, de modo que os programadores devem
emitir querou
COMMIT umum ROLLBACK, mas a escolha é com eles.
Se a sessão de um cliente falhar por algum motivo, o banco de dados será sempre reverter a
falhatransação.
poderia ser
Talpara uma série de razões. O processo de usuário pode morrer ou ser morto no
sistema
nível, operacional
a conexão de rede para o servidor de banco de dados pode ir para baixo, ou a máquina onde o
ferramenta está em execução pode falhar. Em qualquer destes casos, não há nenhum problema
cliente
ordenada de ume cabe
ROLLBACK, COMMIT
ao banco
ou de dados para detectar o que aconteceu. O comportamento é que
a sessão é morto e uma transação ativa é revertida. O comportamento é o mesmo se a falha é
no lado do servidor. Se o servidor de banco de dados falhar, por qualquer motivo, quando se próxima
inicia, todosde todas as sessões que estavam em curso será revertida.
transações
Controle de Transação: COMMIT, ROLLBACK, SAVEPOINT, SELECT FOR
ATUALIZAR
implementação do paradigma banco de dados relacional da Oracle começa uma transação
implicitamente
primeira com DML.
declaração o A transação continua até que uma instrução COMMIT ou ROLLBACK.
comando SAVEPOINT não é parte do padrão SQL e é realmente apenas uma maneira fácil para
o
programadores para voltar com algumas declarações na ordem inversa. Ele não precisa ser
considerada
porque não terminar
separadamente
uma transação.

COMMIT
processamento de cometer é o lugar onde muitas pessoas (e até mesmo alguns DBAs experientes)
mostram
ou mesmoumacompletamente
incompleta, imprecisas, compreensão da arquitetura Oracle. Quando você diz
tudo o que acontece fisicamente é que LGWR libera o buffer de log para o disco. DBW n faz
COMMIT,
absolutamente
nada. Esta é uma das características de desempenho mais importantes de um banco de dados Oracle.

EXAME TIP O que DBW n faz quando você emitir um comando COMMIT? Resposta:
nada.
Absolutamente

Para fazer uma operação durável, tudo o que é necessário é que as mudanças que compõem a
estão transação
no disco; não há necessidade alguma dos dados da tabela mudado para ser no disco nos
arquivos deestão
mudanças dados.
no Se o na forma de arquivos de log refazer multiplexados, em seguida, em caso de
disco
danos ao
banco de dados, a transação pode ser reinstantiated por restaurar os arquivos de dados de um backup
feito antes
ocorreu o dano e aplicando as alterações dos logs. Este processo é coberto em detalhe mais tarde
capítulos-por agora, apenas ficar com o fato de que um COMMIT nada mais do que lavar o envolve
log buffer para o disco e sinalizar a transação como concluída. É por isso que uma transacção que
milhões de atualizações em milhares de mesas ao longo de muitos minutos ou horas podem ser
envolva
cometidos
de um segundo.
em umaPorque
fração
LGWR escreve em tempo quase real, praticamente todas as alterações da
transação
disco já. Quando
estão emvocê diz COMMIT, LGWR realmente faz escrever em tempo real; sua sessão
pendurar até que a gravação está completa. Este atraso será o comprimento de tempo que leva para
limpar
redo doobuffer
últimodepedaço
log para
de o disco, que terá milissegundos. Sua sessão é livre para continuar,
e desde então todas as outras sessões não serão mais redirecionados para os blocos de desfazer
aquando
tabela eles
alterada,
abordam
a menos que o princípio da coerência exige.
Os vetores de mudança gravados no log de redo são todos os vetores de mudança: as aplicadas
(tabelas
aos blocos
e índices)
de dados
e os aplicados para desfazer segmentos.

EXAME TIP O fluxo de log refazer inclui todas as modificações, incluindo as aplicadas aos
segmentos
para desfazer
de segmentos,
dados e para ambas as transações confirmadas e não confirmadas.

Onde muitas vezes há confusão é que o fluxo de redo escrita para os arquivos de log por LGWR
contêm alterações para ambas as transações confirmadas e não confirmadas. Além disso, em
qualquer
DBW n podem
dado momento,
ou não podem ter escrito blocos alterados de segmentos de dados ou desfazer
segmentos
arquivos depara
dados
o para ambas as transações confirmadas e não confirmadas. Assim, em princípio, o
seu banco deOs
corrompido. dados
arquivos
no discode dados
é pode muito bem ser o armazenamento de trabalho não
consolidada
Mas no casoedeestar
um faltando
acidente,alterações
o fluxo decomprometidos.
redo no disco sempre tem informações suficientes para
quaisquer transações confirmadas que não estão nos arquivos de dados (pelo uso das mudanças
reinstantiate
eaplicadas
para reinstantiate
aos blocososdesegmentos
dados) de desfazer (por utilização das mudanças aplicado para desfazer
blocos)asnecessária
apoiar transaçõespara
nãorolar
confirmadas que estão nos arquivos de dados.
EXAME TIP Qualquer comando DDL, ou uma concessão ou revogação, irá confirmar a transação
atual.
ROLLBACK
Enquanto uma transação está em andamento, a Oracle mantém uma imagem dos dados como era
antesimagem
Esta da transação.
é apresentado a outras sessões que consultam os dados enquanto a transação está em
andamento.
também usado
Istopara
é reverter a transação automaticamente se alguma coisa der errado ou
deliberadamente
sessão solicita. Asesintaxe
o para solicitar uma reversão é a seguinte:

O uso opcional de pontos de salvamento é detalhado na seção seguinte.


O estado dos dados antes da reversão é que os dados foi alterado, mas a informação
necessária para inverter as alterações está disponível. Esta informação é apresentada para todas as
outrasimplementar
Para sessões em o princípio de isolamento. A reversão irá descartar todas as alterações de
restauração
a imagem prechange dos dados; todas as linhas da transação inseridos será eliminado, todas as linhas
transação excluída serão inseridos de volta para a mesa, e as linhas que foram atualizados será
do
retornou ao seu estado original. Outras sessões não estará ciente de que qualquer coisa que
aconteceu
eles nunca em
viram
tudo;
as mudanças. A sessão que fez a transação agora ver os dados como era
antes que a transação começou.

SAVEPOINT
Savepoints permitir que um marcador para ser definido em uma operação que pode ser utilizada para
controlar oROLLBACK.
comando efeito do Ao invés de rolar para trás toda a transação e que encerra-lo, torna-se
possível reverter todas as alterações feitas depois de um determinado ponto, mas deixam as
alterações
intacta. A transação
feitas antesemdesse
si permanece
ponto em andamento: não autorizadas, ainda capaz de ser revertida, e
ainda invisível para outras sessões.
A sintaxe é como se segue:

Isso cria um ponto chamado na transação que pode ser usado em um posterior grupamento
comando. Quadro 6-1 ilustra o número de linhas de uma tabela em várias fases de uma transacção. o
tabela é uma tabela simples chamado TAB, com uma coluna.
Tabela 6-1 consistência de leitura e Savepoints

O exemplo na tabela mostra duas operações: a primeira foi finalizado com um COMMIT, a
comsegunda
um ROLLBACK. Pode ser visto que o uso de pontos de salvamento é visível somente dentro da
outras sessões ver nada que não seja comprometida.
transação;

SELECIONE FOR UPDATE


Uma declaração último controle de transação é SELECT FOR UPDATE. Oracle, por padrão, fornece
amais elevado nível de concorrência. Leitores não bloqueiam escritores e escritores não bloquear
leitores. Ou, em linguagem simples, não há nenhum problema com uma sessão de dados de consulta
que uma
está atualizando
outra sessão
ou uma sessão de atualização de dados que uma outra sessão está consultando. No
entanto,você
quando há momentos
pode querer mudar este comportamento e evitar alterações de dados que está sendo
consultado.
Não é incomum para um aplicativo para recuperar um conjunto de linhas com um comando
-losSELECT,
para um usuário
presentepara leitura, e levá-los para quaisquer alterações. Porque a Oracle é um banco
de dados
não multiusuário,
é impossível que uma outra sessão também recuperou as mesmas linhas. Se ambas as sessões
fazer alterações, pode haver alguns efeitos bastante estranhos. A tabela a seguir ilustra tal situação.
tentar

Isto é o que o primeiro usuário verá a partir de um SQL * Plus prompt:

Isto é um pouco desconcertante. Uma maneira de contornar este problema é para bloquear as
interessado.
linhas em que um é

A cláusula FOR UPDATE irá colocar um bloqueio em todas as linhas recuperadas. Não
-losocorreram
por qualquer sessão diferente
alterações podem ser dofeitas
que emitiu
para o comando, e, portanto, as actualizações
terá sucesso; não é possível para as linhas que foram alteradas. Isto significa que uma sessão
subsequentes
ter uma visão consistente dos dados (isso não vai mudar), mas o preço a ser pago é que outras
irá travar se tentarem atualizar qualquer das linhas bloqueadas (eles podem, naturalmente, consultá-
sessões
los).Os bloqueios colocados por uma cláusula UPDATE será realizado até que a sessão de emitir o
emitecomando
um COMMIT ou ROLLBACK. Isso deve ser feito para liberar os bloqueios, mesmo se
nenhum DML
comandos foram executados.

O Autocommit So-Called
Para concluir esta discussão sobre o processamento de consolidação, é necessário remover qualquer
éconfusão
muitas vezes
sobre chamado
o que autocommit ou às vezes implícita cometer . Muitas vezes você vai ouvir-se
dizer que,ade
situações Oracle
algumavai AutoCommit. Uma dessas situações é quando se faz DDL, que é descrito em
a secção anterior; outra é quando você sair de um processo de usuário, como SQL * Plus.
Pura e simplesmente, não existe tal coisa como cometer um automático. Quando você executar
umaperfeitamente
há um instrução DDL,
normal COMMIT incluído no código fonte que implementa o comando DDL.
Mas o que dizer quando você sair do seu processo de usuário? Se você estiver usando SQL * Plus no
terminal e você emitir uma instrução DML seguido por uma saída, a sua transação ser cometido.
Windows

Isso ocorre porque embutido no comando SQL * Plus SAIR há uma instrução COMMIT. Mas o que
se
clicar no canto superior direito do SQL * Plus janela? A janela será fechada, e se você fizer login
novamente, você verá que a transação foi revertida. Isso ocorre porque os programadores que
escreveu SQL * Plus para Microsoft Windows incluiu uma declaração ROLLBACK no código que é
executada quando você fechar a janela. O comportamento do SQL * Plus em outras plataformas
pode muitoa única
diferente; bem ser
maneira de ter certeza é testá-lo. Então, se você receber um “autocommit” quando
de um programa de várias maneiras é totalmente dependente da forma como seus programadores
sair
escreveu oOusuário
processo. servidor Oracle vai simplesmente fazer o que é dito para fazer.
O comando SQL * Plus SET AUTOCOMMIT ON fará com que SQL * Plus para modificar seu
irá adicionar
comportamento;
um COMMIT para cada instrução DML emitidas. Assim, todas as declarações são
imediatamente, logo que eles são executados e não pode ser revertida. Mas isso está acontecendo
cometidos
puramente em de utilizador; ainda não há confirmação automática no banco de dados, e as
lado o processo
mudanças feitas
declaração em execução
por um longo
será isolada de outras sessões até que a instrução seja concluída. Claro, um
saída desordenada do SQL * Plus nestas circunstâncias, tais como matá-lo com um sistema
utilidade enquanto a instrução está em execução, será detectado pelo PMON, ea transação ativa vai
operacional
sempre ser revertida.

Exercício 6-4: Explique DML e Undo Geração de Dados Neste exercício, você vai demonstrar
isolamento da transação e controle. Use duas sessões SQL * Plus (ou SQL Developer, se você
preferir), cada
conectados como usuário SYSTEM. Executar os comandos nos passos que se seguem nas duas
sessõescorreta.
ordem do

Os resultados são os mesmos em ambas as sessões.

Os resultados diferem porque isolamento da transação esconde as alterações.

Os resultados são os mesmos em ambas as sessões.


Oh céus! A declaração DDL comprometida DELETE, por isso não pode ser revertida.

Explique DML e Undo geração de dados


dados desfazer é a informação necessária para reverter os efeitos do DML. É muitas vezes referido
reversão de dados , mas tentar evitar esse termo. Em versões anteriores do Oracle, os termos
como
reversão dados
desfazer de dados e utilizados indistintamente, mas a partir de 9 i em diante eles são diferentes.
foram
Sua função
mesmo, masé aa sua gestão não é. O velho mecanismo de segmentos de reversão é longo ultrapassado,
e todade dados deve usar o gerenciamento de undo automático , que utiliza segmentos de undo para
bases
armazenar
Revertendodesfazer
umade dados. significa que a utilização de dados a partir dos segmentos de
transacção
dados
desfazer
como era
a construir
antes queumaa transação
imagem do ocorreu. Isso geralmente é feito automaticamente para
satisfazer ado teste ACID, mas a capacidade de Flashback Query (detalhados na seção “Flashback
requisitos
Consulta e Undo Retenção”) aproveita o poder do mecanismo de desfazer, dando-lhe a opção de
consultando o banco de dados, uma vez que foi em algum momento no passado. E, claro, qualquer
usuário pode
comando ROLLBACK
usar o interativamente para desfazer quaisquer instruções DML que foram emitidos
e não
comprometido.
O teste ACID requer, em primeiro lugar, que o banco de dados deve manter versões PreUpdate
que de
as dados,
transações
a fimincompletas pode ser revertida, seja automaticamente no caso de um erro ou em
exigir, através da utilização do comando ROLLBACK. Este tipo de reversão é permanente e
publicado para todos os usuários. Em segundo lugar, por razões de coerência, o banco de dados deve
ser capaz
versão do de
banco
apresentar
de dadosumacomo
consulta
era nocom
momento
um da consulta começou. O processo do servidor de
executar
vai para osa consulta
segmentos de desfazer e construir o que é chamado de leitura consistente imagem dos
blocos sendose eles foram alterados após a consulta começou. Este tipo de reversão é temporária e
consultado,
apenas para a sessão de executar a consulta. Em terceiro lugar, desfazer segmentos também são
visível
usados
Este é talvez
para ooisolamento
uso mais complexo
de transação.
de dados de desfazer. O princípio do isolamento exige que
transação pode ser de alguma forma dependente de outra transação incompleta. Com efeito, mesmo
nenhum
que
bancoumde dados multiusuário terá muitas transações em andamento ao mesmo tempo, o resultado
final
as transações
deve ser estavam
como se executando uma após a outra. A utilização de dados de desfazer combinado
com fileira garante
fechaduras e mesa isolamento da transação, o que significa a impossibilidade de transações
Mesmo que várias operações podem ser executadas simultaneamente, o isolamento requer que o
incompatíveis.
resultado
deve final se as transações foram serializados.
ser como

EXAME TIP O uso de segmentos de desfazer é incompatível com a utilização de segmentos de


reversão;
outra, dependendo
é um ou oda configuração do parâmetro UNDO_MANAGEMENT.

Exercício 6-5: monitorar e administrar Undo Dados Neste exercício, você vai investigar o undo
configuração e uso em seu banco de dados. Use o SQL * Plus ou SQL Developer.
1. Conecte-se ao banco de dados como usuário SYSTEM.
2. Determine se o banco de dados está usando segmentos de undo ou segmentos de rollback
com esta consulta:
Isso deve retornar o valor AUTO. Se isso não acontecer, emita este comando e reinicie o
instância:

3. Determine o que desfazer espaços de tabela foram criados e qual deles está sendo usado com
estes
duas consultas:

4. Determinar o que desfazer segmentos estão em uso no banco de dados e como eles são
grandes.

Note-se que o número de identificação para um segmento tem um nome da coluna diferente
nos dois
5. Saiba pontos
quanto de vista.
desfazer os dados estavam sendo gerados em seu banco de dados no passado
recente.

Monitorar e administrar Undo Dados


Uma das principais características dos segmentos de desfazer é que eles são gerenciados
automaticamente,
dentro do qual a Oracle
mas você
vai fazer
deve adefinir
sua gestão.
os limites
Depois de considerar a natureza eo volume de
actividade em
seu banco de dados, defina determinados parâmetros de instância e ajustar o tamanho de sua tabela
adefim
undo
de em
atingir seus objetivos.

Condições de erro relacionadas à Desfazer


Os princípios são simples. Em primeiro lugar, deve sempre haver espaço de undo suficiente
disponível para continuar.
transações permitir que Emtodo
segundo lugar, deve haver sempre suficiente desfazer de dados
disponíveis
ter sucesso. para todas asprincípio
O primeiro consultas
exige que a sua tabela de undo deve ser grande o suficiente para
acomodar o pior caso para a demanda de desfazer. Ele deve ter espaço suficiente alocado para o pico
uso de dados de desfazer ativos gerados por sua carga de trabalho transação. Note que isso pode não
sermaior
o durante
número de transações simultâneas; pode ser que durante o funcionamento normal você tem
muitos
transações pequenas, mas o desfazer total que geram pode ser menor do que o gerado por um único
final
de de trabalho em lotes. O segundo princípio exige que haja espaço adicional no undo
meses
espaço de tabela para armazenar dados de desfazer unexpired que possa ser necessária para a
consistência de leitura.é executado fora do espaço de undo, ele irá falhar com o erro “ORA-30036:
Se uma transação
segmento
não é possível
na tabelaestender
de undo.”A afirmação de que bater o problema é revertida, mas o resto do
transação permanece intacta e não confirmadas. O algoritmo que atribui espaço dentro do undo
tablespace desfazer segmentos significa que esta condição de erro surgirá apenas se a tabela de undo
éabsolutamente completo de dados undo ativo.

EXAME TIP Se uma instrução DML é executado fora do espaço de undo, a parte dele que já havia
será revertida. O restante da transação permanece intacta e não confirmadas.
sucedido

Se uma consulta encontra um bloco que foi alterado desde a consulta iniciado, ele irá para o
segmento
undo para encontrar a versão de pré-atualização dos dados. Se, quando ele vai para o segmento
de undo, de
desfazer quedados
poucofoidesubstituído, a consulta falhará com o famoso erro Oracle “ORA-1555:
instantâneo muito antigo.”
Se a tabela de undo está subdimensionado para o volume de transações eo comprimento de
temconsultas,
uma escolha:
a Oracle
ou deixar transações sucesso e consultas de risco falhando com ORA-1555 ou
deixar
ter consultas
sucesso
sucesso, eque
operações de riscosubstituir
lhes permitam de falha com ORA-30036.
desfazer a decorrer.O comportamento padrão é permitir que
as transações
Parâmetros para a Gestão de Undo
Os quatro parâmetros seguintes controlar desfazer:

• UNDO_MANAGEMENT
• UNDO_TABLESPACE
• UNDO_RETENTION (discutido na seção “Configure Undo Retenção”)
• TEMP_UNDO_ENABLED (discutido na seção “Temporary Undo”)

defaults UNDO_MANAGEMENT para Auto. É possível definir esta como MANUAL, o que
significa
Oracle que
não vai usar segmentos de undo em tudo. Isto é para compatibilidade com versões anteriores,
e se que
terá vocêfazer
usar uma
isso,grande
você quantidade de geração de trabalho e segmentos de reversão de ajuste. Não
fazê-lo. Oráculo
Corporação aconselha fortemente definindo este parâmetro para AUTO para permitir a utilização de
segmentos édeestático,
parâmetro desfazer.
o que
estesignifica que se for alterado, a alteração não entrará em vigor até que a
instância
é reiniciado. Os outros parâmetros são dinâmicos, eles podem ser alterados enquanto a instância está
em execução.
Se você estiver usando UNDO_MANAGEMENT = AUTO (como deveria), você também deve
especificar
UNDO_TABLESPACE. Este parâmetro nomeia um espaço de tabela, o que deve ter sido criado
como umtabela, como a tabela de undo activo. Todos os segmentos de desfazer dentro dele será
desfazer
colocado
(Isto é, disponível
online para uso) automaticamente.

Dimensionamento e Acompanhamento da tabela de undo


A tabela de undo deve ser grande o suficiente para armazenar o pior caso de todo o undo gerado pelo
transações concorrentes, que serão undo ativo além de desfazer a decorrer o suficiente para satisfazer
a maior duração
executar consulta. Em um ambiente avançado, você também pode ter de adicionar espaço para
permitir a de
consultas. O algoritmo
flashback é simples: Calcule a taxa em que desfazer está sendo gerado em seu pico
carga de trabalho e multiplicar pelo comprimento de sua consulta mais longa. Há uma visão, V $
UNDOSTAT,
dizer-lhe tudo que
o queirávocê precisa saber.
Fazendo o seu arquivos de dados de desfazer autoextensible irá garantir que as transações nunca
vai ficar
espaço, mas fora de não vai estendê-los apenas para cumprir a meta UNDO_RETENTION; é,
a Oracle
ainda é possível para uma consulta a falhar com “instantâneo muito antigo.” No entanto, você não
portanto
deve contar autoextend;
capacidade com o seu espaço de tabela deve ser o tamanho correto para começar.
Figura 6-4 mostra a configuração desfazer e utilização usando o SQL * Plus. A mesma
disponível
informação
em formato
é gráfico no banco de dados Express. Na home page do banco de dados,
selecione
link Gerenciamento
o Undo no menu drop-down de armazenamento.

Figura 6-4 configuração e actividade Anular


A primeira declaração na figura configura o formato de exibição da data da sessão para mostrar
as horas,
segundos. Emminutos
seguida,e o comando SQL * Plus MOSTRA mostra as configurações para os quatro
parâmetros
incluir a string
de instância
“desfazer”que
em seu nome. Todos os quatro estão definidas para o seu padrão: desfazer
temporária
desfazer gestão
é desativado,
é automática (utilizando desfazer segmentos, não antiquadas segmentos de reversão),
a retenção
alvo é de 900 segundos, e a tabela de undo é UNDOTBS1, que é o espaço de tabela criada quando
usando DBCA para criar um banco de dados. Uma consulta contra V $ UNDOSTAT mostra desfazer
actividade de
intervalos capturado
10 minutos.
em Durante a meia-hora mostrado, desfazer geração atingiu um pico de
281,117 blocos em um
intervalo de 10 minutos e gerou 908 operações. A consulta mais longa foi 1.393 segundos.
Finalmente,
consultando DBA_DATA_FILES mostra que o arquivo de dados de tabela de desfazer é 540,800
blocos,
cerca deque
4GB,é assumindo que o banco de dados foi criada usando o tamanho padrão do bloco de 8
KB.Fazendo um pouco de aritmética simples mostra que os picos de taxa de geração de desfazer a
segundo,
cerca por
de 500
isso,blocos
se a consulta
de um mais longa é de cerca de 1.000 segundos (que é bastante próximo ao
configuração), você precisaria de uma tabela de undo de cerca de meio milhão de blocos para
undo_retention
garantirser
sempre quemantido
desfazerdurante
pode o tempo que a consulta mais longa. Esta base de dados parece ter undo
configuração que está bem adaptado à carga de trabalho.
A visão V $ UNDOSTAT é muitas vezes referido como o conselheiro de desfazer , porque
permite
longa prever
desfazer comopodem ser mantidos por um determinado volume de trabalho. Banco de
os dados
dados
na Figura
expresso
6-5 . representa isso muito bem, como mostrado

Figura 6-5 configuração Undo no banco de dados Expresso

A curva na janela de desfazer orientador mostra que, se a tabela de undo foram 5GB, seria
capaz de armazenar desfazer de dados para entre cerca de 1.500 e 4.000 segundos (dependendo da
atividade).menores
tamanhos maior ouiria aumentar ou diminuir o tempo para o qual desfazer seria mantida.

Undo temporária
segmentos de desfazer temporários são utilizados para armazenar dados gerados por desfazer DML
temporária
mesas. A tabela
global
temporária global é uma tabela cuja definição pode ser visível em todas as sessões (
mundial
mas cujas) linhas são privados para a sessão que eles inserido. A duração das linhas ou é até

COMMIT ou até que os sessão termine ( temporária ).


tabelas temporárias globais são muitas vezes úteis para os desenvolvedores. Eles oferecem um
podelocal
ser útil
de armazenamento
para conjuntos de
de resultados
dados que provisórios, sem qualquer necessidade de se preocupar
sobre como eliminar os dados quando não é não irá interferir com (ou mesmo ver) os dados criados
mais necessário ou a assegurar que as sessões
sessão.
por Do criado
outra
segmentos ponto de vista do
(e caiu) banco de dados,emtabelas
automaticamente temporárias
um espaço globais
de tabela são fáceis de gerir. Eles
temporário.
existem como
O desempenho em tabelas temporárias é normalmente superior ao desempenho de tabelas
Istopermanentes.
por duas razões.

• A / S é direta . A sessão lê e escreve seu segmento temporário, sem passar por


o cache de buffer e sem envolver o escritor banco de dados.
• Não redo é gerado em tabelas temporárias globais . Não haveria razão. O propósito de
redo é fazer alterações persistentes e tabelas temporárias globais não armazenar dados
persistentes.
Desfazer dados é gerado pelo DML contra tabelas temporárias. Isso é necessário porque o
habitual
regras transacionais aplicar. E segue-se que refazer é gerado porque mesmo que a tabela pode ser
um segmento temporária, o segmento de desfazer não é. Em versões anteriores, isso causou estes
dois problemas:
• Uma batida por causa da entrada segmento de undo / saída (I / O) desempenho indo através do
cache
geradora
de buffer
de redo
e associado
• A impossibilidade de transações contra tabelas temporárias em um banco de dados somente
leitura;
pode não
a mesa
existir em um espaço de tabela de leitura / gravação, mas o segmento de desfazer
faz
Release 12 c tem uma facilidade que permite a criação de segmentos de desfazer temporários em
tablespace.
uma temporária
Isso pode melhorar significativamente o desempenho de transações contra tabelas
temporárias
sem comprometer a integridade transacional, e isso também significa que as transações podem ser
em bancos de dados somente leitura, como um banco de dados standby físicos Data Guard.
executados

Criando e Gerenciando Undo Tablespaces


Quanto à gestão arquivo de dados está em causa, uma tabela de undo é o mesmo que qualquer outro
espaço depodem
arquivos tabela;ser adicionados, redimensionada, feitos online e offline, e movido ou renomeado.
Mas não é possível
especificar quaisquer opções em relação ao armazenamento. Você não pode especificar o
gerenciamento
você não pode especificar
automáticoum do espaço
tamanhosegmento
uniformee medida. Para criar uma tabela de undo, use a
palavra-chave UNDO.

Por padrão, o espaço de tabela não garante a retenção de undo. Esta característica pode ser
no momento
especificado
da criação de tabela ou definir mais tarde.

TIP EXAME A menos que especificado no momento da criação na cláusula de arquivo de dados, os
arquivosdedetabela
espaço dadosnão
de será
um undo
definido com autoextend. Mas se o seu banco de dados é criado com o
Banco de Dados
Assistente de Configuração (DBCA), vai permitir a extensão automática para arquivo de dados da
tabelatamanho
com de undomáximo ilimitado. extensão automática pode ser ativado ou desativado a qualquer
momento,
ser para qualquer
como searquivo
pode de dados.

Não é possível criar segmentos em uma tabela de undo, além dos segmentos de desfazer que irá
ser criado automaticamente. Inicialmente, haverá um conjunto de dez segmentos de desfazer criados
em uma undo
tablespace. Mais será criado se houver mais de dez transações concorrentes. oracle
monitorar a taxa de transação simultânea e ajustar o número de segmentos, conforme necessário.
Não importa quantas desfazer espaços de tabela não pode estar em um banco de dados, em geral,
vai estar
apenasemumuso ao mesmo tempo. Os segmentos de desfazer neste espaço de tabela terá um status
de on-line
que estão disponíveis
(ou seja, para uso); os segmentos em qualquer outro desfazer espaços de tabela terá um
status de indicando que eles não serão usados. Se a tabela de undo é alterado, todos os segmentos
desligada,
de antiga
na desfazertabela de undo será colocado offline e aqueles na nova tabela de undo será levado
conectados. Há duas excepções a esta:
• Em um banco de dados Real Application Cluster (RAC), cada instância de abrir o banco de
dados
a suadeve ter tabela de undo. Isto pode ser controlado ajustando o UNDO_TABLESPACE
própria
parâmetro para um valor diferente para cada instância. Cada instância irá trazer o seu próprio
segmentos online.
desfazer
• Se a tabela de undo é alterado alterando o parâmetro UNDO_TABLESPACE, qualquer
segmentos no espaço de tabela previamente indicado que foram suportando uma transação no
da mudança permanecerá on-line até que a transação termina.
momento

Exercício 6-6: Trabalhar com Undo Tablespaces Neste exercício, você irá criar uma tabela de
e trazê-lo para uso. Aqui estão os passos a seguir:
undo

1. Conecte-se à instância como SYSTEM usuário com SQL * Plus.


2. Criar uma tabela de undo.

Para o caminho eo nome do arquivo de dados, use nada adequado para o seu ambiente.
3. Execute a seguinte consulta, que irá retornar uma linha para cada tabela em seu banco de
dados.
Note-se que o seu novo espaço de tabela tem conteúdo desfazer, o que significa que ele pode
ser usado apenas
segmentos e que apara
retenção
desfazer
é NOGUARANTEE.
4. Execute a seguinte consulta, que irá retornar uma linha para cada reversão ou desfazer
segmento
seu banco
no de dados:

Note-se que dez segmentos de undo ter sido criado automaticamente em sua nova tabela de
mas todos eles são offline.
undo,
5. Ajuste o seu exemplo para usar a nova tabela de undo. Use uma cláusula SCOPE para
garantir que onão será permanente.
mudança

6. Execute novamente a consulta a partir do passo 4. Você verá que os segmentos de desfazer
na nova
sido colocado
tabela tem
online e aqueles na tabela de undo ativo anteriormente estão offline.
7. Arrume definindo o parâmetro undo_tablespace volta para seu valor original e, em seguida,
deixar cair a nova tabela de undo. Lembre-se de usar o conteúdo INCLUINDO E
cláusula de arquivos de dados.

Descrever a diferença entre Undo Dados e Redo


Dados
Este tópico recebe uma menção especial porque muitos erros são feitos por muitas pessoas ao
desfazer e refazer. Aqui é um conjunto de contrastes:
descrever

• Undo é transitório, enquanto que refazer é permanente . Desfazer dados persiste por pelo
menos
a transação
a duração
quede
gera, mas possivelmente não para. Eventualmente, será sempre
sobrescrito. Refazer persistir indefinidamente, pela primeira vez nos arquivos de log on-line
e, em seguida, o arquivo de log
arquivos.
• Undo opera no nível lógico, enquanto refazer opera no nível físico . Desfazer dados é
fila orientada; mudanças são agrupadas de acordo com a transação que eles fizeram, e dentro
de uma segmento todas as entradas estão relacionados com as linhas da mesma transação.
desfazer
Refazer é fisicamente
orientado. vetores de mudança estão relacionados com locais físicos em blocos pelo ponteiro
de linha
Não ID.
há qualquer relação entre vectores de mudança consecutivos no buffer de log ou os
ficheiros
• Undo podedereverter
registo.as alterações, ao passo que refazer pode repetir mudanças . Dados
desfazer
para reverter
fornecetransações
a capacidade
confirmadas. Refazer fornece a capacidade de reproduzir obra que foi
perdido.
• Undo
dentroreside em espaços
do banco de Refazer
de dados. tabela, enquanto refazer
é escrito para residedo
arquivos emsistema
arquivos . Desfazer de dados é
operacional.
uma estrutura de segmento
• Undo são redo não são opostos . Eles têm funções diferentes. Undo é sobre transacional
integridade, enquanto que é de cerca de refazer prevenir a perda de dados.

Configurar Anular Retenção


gerenciamento automático de desfazer sempre manter os dados desfazer para o maior tempo
possível.
que Este é geralmente
é necessário. tudo
No entanto, existem dois casos em que sejam necessárias medidas DBA: se for
para garantir que as consultas sempre terá êxito, mesmo se isso significa que DML pode falhar, e se
necessário
de flashback
consultas estão a ser amplamente utilizadas.

Configurando Undo Retenção de Apoio às consultas de longa duração


UNDO_RETENTION, definido em segundos, é geralmente opcional. Ele especifica um alvo para
manter
desfazerinativa
de dados e determina quando se torna classificadas como expirou em vez de unexpired. Se,
exemplo, sua consulta mais longa duração é de 30 minutos, você deve definir este parâmetro para
por
1800.
em seguida,
A Oracletentar manter todos desfazer de dados para pelo menos 1.800 segundos depois de
COMMIT,nunca
portanto, e suafalhar
consulta
comdeve
ORA-1555. Se, entretanto, você não definir esse parâmetro ou configurá-
lo para zero,
A Oracle continuará a manter os dados durante o tempo que ele pode de qualquer maneira. O
controle algoritmo
desfazer os dados são
quesubstituídos
expirou primeiro será sempre optar por substituir a pouco mais velho dos
dados; assim sendo, é sempre no máximo permitido pelo tamanho da tabela.
UNDO_RETENTION

DICA Algumas consultas podem ser muito longa duração, de fato. Consultas de vários dias não são
Você vai precisar de uma tabela de undo do tamanho de Júpiter, se você está indo para executar essas
desconhecidos.
consultaso com
durante processamento
sucesso normal transação. Você pode querer considerar limitar a carga de trabalho
DML durante
longo relato corre ou ajustar o SQL para reduzir o tempo necessário.

Onde o parâmetro UNDO_RETENTION não é opcional é se você tiver configurado garantida


anular de retenção. O modo padrão de operação para desfazer é que a Oracle irá favorecer as
transacçõesSesobre
consultas. o dimensionamento da tabela de undo é tal que uma escolha tem que ser feita entre o
possibilidade de uma falha consulta com ORA-1555 e a certeza de uma transação falhando com
ORA
30036, a Oracle vai optar por deixar a transação continuar sobrescrevendo desfazer dados que uma
consulta podeEm outras palavras, a retenção de undo é apenas uma meta que a Oracle vai tentar
necessidade.
alcançar.
haver circunstâncias
Mas pode quando consultas bem-sucedidas são considerados mais importantes do que
bem sucedida
transações. Um exemplo pode ser o fim do mês de faturamento prazo para uma empresa utilitários,
quando
ser poderia
aceitável para operações de risco a ser bloqueados por um curto tempo, enquanto os relatórios
estão gerando.
Outro caso é se você estiver fazendo uso de consultas de flashback, que dependem de dados de
desfazer.
retenção de undo garantida, significado que desfazer dados nunca serão substituídos até o
especificado
momentopela retenção de undo passou, é activada ao nível da tabela. Este atributo pode ser
especificada no momento da criação de tabela, ou um espaço de tabela undo pode ser alterado mais
tarde ativar
você para ativá-la.
uma tabelaUmadevez
undo para o qual foi especificada garantia de retenção, todas as consultas
serão
completar com sucesso, desde que terminar dentro do tempo de retenção de undo; você nunca terá
“Instantâneo muito velho” erros novamente. A desvantagem é que as transações podem falhar por
faltaSedeoespaço de desfazer.
parâmetro UNDO_RETENTION tabela foi definido e o arquivo de dados (ou arquivos de
tornando-se
dados) a tabela de undo está definido para autoextend, o Oracle irá aumentar o tamanho do
arquivo de dados se for necessário para manter a meta de retenção de undo. Esta combinação de
automaticamente
desfazer garantida
retenção e arquivos de dados autoextending significa que ambas as consultas e transações será
sempre sucesso
supondo que vocêterátenha espaço em disco suficiente. Se não o fizer, a extensão automática irá falhar.

Flashback Query e Anular Retenção


Flashback Query pode colocar exigências adicionais sobre o sistema de desfazer. Flashback Query é
uma facilidade
permite aos usuários
que ver o banco de dados, uma vez que foi em um momento no passado. Existem
vários métodos de fazer
consultas
Aqui está de
umflashback,
exemplo: mas a mais simples é uma instrução SELECT simples com um AS DE
cláusula.

Esta declaração vai retornar todas as linhas na tabela SCOTT.EMP que estavam lá 10 minutos
As linhas
atrás. que foram excluídos será visto, linhas que foram inseridas não será visto e linhas
que foram atualizados será visto com seus valores antigos. Este é o caso ou não o DML
declarações foram cometidos. Para executar consultas de flashback, desfazer de dados é usada para
reverterAs
alterar. todo
linhas
o que foram excluídos são extraídos a partir dos segmentos de desfazer e inserido em
o conjunto de resultados; linhas que foram inseridas são excluídos do conjunto de resultados. A
volta
consulta, como
precedendo um oque tenta voltar 10 minutos, provavelmente terá sucesso. Uma consulta que tenta ir
de volta uma semana quase certamente falhará porque os dados de desfazer necessário para
reconstruir
mesa como umafoi há
versão
uma semana
do terá sido substituído.
Flashback Query pode ser uma ferramenta valiosa. Por exemplo, se por causa de algum erro uma
ocorreu
deleção
(e tem
temsido comprometida) em algum momento na última hora, este comando irá inverter-lo
inserção de todas as linhas excluídas de volta para a tabela:

Se Flashback Query é susceptível de ser usado, então você deve configurar o sistema de desfazer
definindo
para segurá-lo
o parâmetro
por UNDO_RETENTION para um valor adequado. Se você quer a capacidade de
de volta um dia, ele deve ser definido para 86.400 segundos. A tabela de undo deve ser
piscar
apropriadamente
para ter certeza dedimensionada.
sucesso, quer Então
permitir a extensão automática de arquivos de dados da tabela de
undo ou
permitir a garantia de retenção para o espaço de tabela.

Exercício 6-7: Trabalhar com Transações e Flashback Query Neste exercício, você vai
a maneira pela qual desfazer dados é utilizado para proporcionar isolamento de transação e reversão,
demonstrar
bem como a Flashback Query. Use a tabela de regiões no esquema HR demonstração. Aqui está o
implementar
passos a seguir:

1. Conecte-se ao esquema HR com duas sessões simultaneamente. Estes podem ser de dois
SQL * Plus duas sessões SQL Developer, ou um de cada. A tabela a seguir lista os passos
sessões,
a seguir em cada sessão:
2. Demonstrar o uso de Flashback Query usando uma sessão conectados como usuário HR.
A. Ajuste o formato de exibição de tempo para incluir segundos.

B. Consulta e registrar o tempo atual.

C. Eliminar a linha inserida anteriormente e, em seguida, cometer a eliminação.

D. consultar a tabela como foi antes da linha foi excluída.

A linha eliminada para a região 100 serão listados, tendo sido recuperados a partir de um
segmento anular.
Descrever o mecanismo de bloqueio e simultaneidade de
dados
Gestão
Existem muitos tipos de fechaduras. A maioria são internos ao servidor, como bloqueios necessários
para a serialização
execução de determinadas seções críticas do código ou para proteger certas estruturas de memória. O
Certified Associate (OCA) exame não cobre estes, embora eles são muitas vezes importantes para o
oraculo
Os tópicos são cobertos fechaduras que são utilizadas na camada de aplicação, tais como fechaduras
ajuste.
tomado
como e libertado
instruções SQL executar. Esses bloqueios são aplicados tanto para linhas ou tabelas inteiras,
ou manualmente (se os desenvolvedores realmente precisa fazer isso).
automaticamente
Serialização do acesso simultâneo é realizado por meio de mecanismos de registos e tabela-
Travando
bloqueio.
em um banco de dados Oracle é completamente automático. De um modo geral, os
problemas surgem somente se
software tenta interferir com o mecanismo de travamento automático com o código escrito mal ou se
o
análise de negócios está com defeito e, portanto, resulta em um modelo de negócios onde as sessões
vão colidir.
Bloqueios exclusivos compartilhada e
O nível padrão de bloqueio em um banco de dados Oracle garante o mais alto nível possível de
simultaneidade. Isto significa que se uma sessão está atualizando uma linha, a linha é bloqueada e
nada mais.
Além disso, a linha é bloqueada apenas para prevenir outras sessões de atualizá-lo; outras sessões
podem
lê-lo em qualquer momento. O bloqueio é mantido até que a transação for completada, ou com um
COMMIT ou com
ROLLBACK. Esteum
é um bloqueio exclusivo; a primeira sessão para solicitar o bloqueio na linha
recebe-lo,
outras sessões
e qualquer
solicitando acesso de gravação deve esperar. acesso de leitura é permitido, embora se
a linha
foi atualizado
tem pela sessão de bloqueio, como normalmente será o caso, então qualquer lê vai
envolver
de o uso
desfazer de dados para se certificar de que as sessões de leitura não vêem quaisquer alterações
não confirmadas.

EXAME TIP linhas bloqueadas não pode ser atualizado ou excluído por outra sessão, mas qualquer
outra sessão
ainda pode lê-los.

Apenas uma sessão pode ter um bloqueio exclusivo em uma linha ou uma tabela inteira, em um
bloqueios
momento,
podemmasser
compartilhada
tomadas no mesmo objeto por várias sessões. Não faria qualquer sentido ter um
bloquear em uma linha, porque o único propósito de um bloqueio de linha é ganhar o acesso
compartilhada
exclusivo necessário
modifique a linha. bloqueios
para compartilhados são tomadas em tabelas inteiras, e muitas sessões pode
àtermesma
um bloqueio
mesa. Ocompartilhado na
propósito de tomar um bloqueio compartilhado sobre uma mesa é para evitar outra
sessão deum bloqueio exclusivo na tabela. Você não pode obter um bloqueio exclusivo se alguém já
adquirir
um bloqueio compartilhado. bloqueios exclusivos em tabelas são necessários para executar
tem
instruções DDL.
declaração de queVocê
vai modificar
não pode emitir
um objeto
uma(por exemplo, soltando uma coluna de uma tabela), se
qualquer
já tem umoutra sessão
bloqueio compartilhado sobre a mesa.
Para executar DML em linhas, uma sessão deve adquirir bloqueios exclusivos sobre as linhas a
bemser mudado,
como fechaduras nas tabelas contendo as linhas compartilhadas. Se outra sessão já tem
bloqueios
nas linhas,exclusivos
a sessão irá travar até que os bloqueios sejam liberados por um COMMIT ou um
ROLLBACK.
outra sessão já Etem
se um bloqueio compartilhado na mesa e bloqueios exclusivos em outras linhas, que
não é um Um bloqueio exclusivo sobre a mesa poderia ser um problema, mas o mecanismo de
problema.
bloqueio
não padrão
bloquear não faz
tabelas inteiras a menos que isso seja necessário para instruções DDL.

DICA É possível exigir um bloqueio exclusivo em uma tabela inteira, mas isso tem que ser
solicitadas, e programadores seria necessário uma boa razão para fazê-lo.
especificamente

Todas as declarações DML exigem pelo menos dois bloqueios: um bloqueio exclusivo em cada
bloqueio
linha afetada
compartilhado
e uma na tabela que contém a linha. O bloqueio exclusivo impede outra sessão de

interferindo com a linha, e o bloqueio compartilhado impede outra sessão de alterar a tabela
definição com uma declaração DDL. Esses bloqueios são solicitadas automaticamente. Se uma
instruçãoosDML
adquirir bloqueios
não pode
de linha exclusivos que necessita, ele irá esperar até que ele recebe-los.
Executar comandos DDL requer um bloqueio exclusivo no objeto em questão. Isto não pode ser
obtida até que todas as transacções DML contra a mesa tiver terminado, libertando, desse modo,
tanto os seus
bloqueios de linhas exclusivas e seus bloqueios de tabela compartilhados. O bloqueio exclusivo
éexigido
solicitada
por automaticamente,
qualquer instruçãomas,
DDLse não puder ser obtido-normalmente porque outra sessão já
tem o bloqueio compartilhado concedida para DML-em seguida, a declaração será encerrado com
um erro imediatamente.

EXAME TIP Qualquer inserção não confirmadas, atualizar ou excluir de uma linha fará com que
aqualquer
tabela atentativa
falhar imediatamente.
de DDL em

O Mecanismo Enqueue
Os pedidos de fechaduras são colocadas em fila. Se uma sessão solicita um bloqueio e não pode
obtê-lo
já tem aporque
linha ououtra
objeto
sessão
bloqueado, a sessão vai esperar. Pode ser que várias sessões são
à espera de acesso à mesma linha ou objeto, nesse caso, a Oracle vai manter o controle da ordem em
que as sessões solicitado o bloqueio. Quando a sessão com o bloqueio libera-lo, a próxima sessão
será concedido o bloqueio, e assim por diante. Isto é conhecido como o mecanismo de
enfileiramento
Se você não. quer uma sessão de fila se não for possível obter um bloqueio, a única maneira de
evitar ou
a esperar isso é usar cláusula do SELECT ... FOR comando UPDATE. Um irá selecionar normais
NOWAIT
sempre bem sucedidos porque SELECT não necessita de quaisquer bloqueios, mas uma instrução
DML irá travar.
SELECT ... FORo comando UPDATE irá selecionar linhas e trancá-los em modo exclusivo. Se
qualquer
linhas já estão
um dos bloqueadas, o SELECT ... FOR UPDATE serão enfileirados, ea sessão
vai travar até que os bloqueios sejam liberados, assim como uma declaração DML faria. Para evitar
sessões
usar SELECT
de enforcamento,
... FOR UPDATE NOWAIT ou SELECT ... FOR ESPERA ATUALIZAÇÃO <n>,
éonde
um <n>
número de segundos. Tendo obtido as fechaduras com qualquer um o SELECT ... FOR
opções, você pode emitir comandos do DML, sem possibilidade do enforcamento sessão.
UPDATE

DICA É possível anexar as palavras-chave SKIP bloqueado para um SELECT FOR UPDATE,
que irá retornar e bloquear somente as linhas que ainda não estão bloqueados por outra sessão.

Bloqueio Automático e Manual


Sempre que qualquer instrução DML é executada, como parte da execução, a sessão será
automaticamente
tomar um bloqueio compartilhado na mesa e bloqueios exclusivos sobre as linhas afetadas. Este é de
perfeito
bloqueiopara praticamente todas as operações. Ele oferece o mais elevado nível de concorrência
automático
possibilidades
(minimizando ode contenção) e não requer nenhuma entrada programador qualquer. Estes bloqueios
são libertados,
Também automaticamente, quando a transação for concluída com qualquer confirmação ou
anulação.
Sempre que qualquer instrução DDL é executado, a sessão terá automaticamente um bloqueio
em todo
exclusivo
o objeto. Esse bloqueio persistir para a duração da instrução DDL e é liberado
automaticamente quando a instrução seja concluída. Internamente, o que está acontecendo é que o
DDL é, de DML
instruções fato, contra linhas em tabelas no dicionário de dados. Se alguém pudesse ver o código
fonte de, por
exemplo, o comando DROP TABLE, este seria clara. Vai (entre outras coisas) ser a exclusão de um
número de linhas da tabela SYS.COL $, que tem uma linha para cada coluna no banco de dados, e
uma linha de US $ mesa de SYS.TAB, que tem uma linha para cada mesa, seguido por COMMIT. A
instruções DDL são rápidos para executar, de modo que os bloqueios de tabela que necessitam
maioria
geralmente não ser notado por
Comercial.
Manualmente objetos de bloqueio pode ser feito. A sintaxe é como se segue:

Cinco modos são possíveis, cada uma das quais pode ou não ser compatível com outro pedido de
bloqueio
de um certo modo de outra sessão:

• AÇÃO ROW
• ROW EXCLUSIVE
• COMPARTILHAR
• SHARE ROW EXCLUSIVE
• EXCLUSIVO

A tabela a seguir mostra as compatibilidades de bloqueio. Se uma sessão tomou o tipo de


através
bloqueio
da parte
listada
superior da tabela, uma outra sessão (Y) ou não vai (N) ser capaz de tomar o tipo de
fechadura
listada na primeira coluna.

Por exemplo, se uma sessão tomou um bloqueio SHARE ROW sobre uma mesa, outras sessões
tipopode
de bloqueio
tomar qualquer
excepto EXCLUSIVO. Por outro lado, se uma sessão tem um bloqueio exclusivo no
objeto, nenhuma outra sessão pode tomar qualquer bloqueio em tudo. Um bloqueio de linha quota-
parte permitir
sessões, mas impedirá
LMG porque outra
qualquer outra sessão de tomar um bloqueio exclusivo na tabela. A
bloqueio exclusivo é necessário (e solicitado automaticamente), a fim de remover a tabela.
COMPARTILHE
será, portanto, assegurar
ROW que a tabela não é descartado por outra sessão. Na prática, o único tipo de
bloqueio
que é sempre susceptível de ser tomada é manualmente o bloqueio EXCLUSIVE. Isto irá prevenir
quaisquer
de executaroutras
qualquer
sessões
DML contra a mesa.

Sempre que uma sessão faz qualquer DML contra uma tabela, ele irá (automaticamente) tomar
um bloqueio
o modo de tabela em Porque este não é incompatível com outras sessões, tendo uma ROW
ROW EXCLUSIVE.
EXCLUSIVO bloqueio modo, muitas sessões pode executar DML simultaneamente, contanto que
eles não
tentar atualizar as mesmas linhas.

Monitorar e resolver conflitos Trava


Quando uma sessão solicita um bloqueio em uma linha ou objeto e não pode obtê-lo porque outra
sessão tem
bloqueio um
exclusivo sobre a linha ou objeto, ele irá travar. Este é contenção de bloqueio , e isso pode
fazer
o desempenho
com que odo banco de dados a deteriorar-se espantosamente como sessões fila à espera de
bloqueios. podem
contenção alguns bloqueio
ser inevitáveis, como resultado da actividade normal; a natureza da aplicação pode
quetal
ser diferentes usuários exigirá acesso aos mesmos dados. Mas em muitos casos, contenção de
bloqueio é causado
por programa e projeto do sistema.
A base de dados Oracle fornece utilitários para a detecção de contenção de bloqueio, e também é
possível
resolver o problema em caso de emergência. Um caso especial de contenção de bloqueio é o impasse
, que é resolvidos automaticamente pelo banco de dados.
sempre

TIP contenção de bloqueio é um motivo comum para uma aplicação que tem um bom desempenho
sob teste paraquando
um impasse moer aele vai produção e do número de usuários simultâneos aumenta.

As causas da disputa do bloqueio


Pode ser que a natureza do negócio é tal que os usuários exigem acesso de gravação para as mesmas
linhas
o mesmoemtempo. Se este é um fator limitante no desempenho do sistema, a única solução é negócio
processo de reengenharia para desenvolver um modelo de negócio mais eficiente. No entanto,
éembora alguns
uma parte travamento
necessária de processamento de dados de negócios, algumas falhas no design do
aplicativo pode exacerbar a
problema.
transações de longa duração vai causar problemas. Um caso óbvio é onde um usuário atualiza
e depois
uma linha
não confirmar a alteração. Talvez eles ainda vão para o almoço, deixando a transação
inacabado. Você não pode impedir que isso aconteça, se os usuários têm acesso ao banco de dados
com ferramentas
como SQL * Plus,tais
mas nunca deve ocorrer com software bem escrito. A aplicação deve tomar
cuidado
que um bloqueio é imposta apenas antes de ocorrer uma atualização e em seguida liberado (com um
COMMIT ou imediatamente depois.
ROLLBACK)
processos batch mal escrito também pode causar problemas se eles são codificados como
Considere
transações
o caso
longas.
de um razão nominal contabilidade suíte. É uma impossibilidade lógica em
termos para o razão de ser, em parte, em um período e, em parte, em outro, de modo que o rollover
contabilidade
depróximo
o fim de mês
período
para é uma transação comercial. Esta transação pode envolver a atualização milhões
de linhas de
milhares emmesas e levar horas para ser concluído. Se a rotina rollover é codificado como uma
transação
um COMMIT com no final, milhões de linhas será bloqueado durante horas, mas em termos de
contabilidade,
o que deve acontecer.
este é Bom design programa evitaria o problema atualizando as linhas em grupos,
com commits regular, mas os programadores também terá que cuidar de simular a consistência ler
das transacções e lidar com a situação em que o processo falhar a meio. Se fosse um

transação, isso não seria um problema; o banco de dados seria revertê-lo. Se ela envolve muitos
pequenos
transações, eles terão de gerir um livro que é a metade em um período e metade em outra. Estes
considerações não deve ser um problema. Seus programadores devem ter em transações longas
impacto sobre a usabilidade do sistema e projetar seus sistemas em conformidade.
mente
De terceiros produtos de processo de usuário pode impor níveis de bloqueio excessivamente
algumas
elevados.
ferramentas
Por exemplo,
de desenvolvimento de aplicações sempre fazer um SELECT ... FOR UPDATE
para evitar aosnecessidade
requerying dados e verificação
de de alterações. Alguns outros produtos não pode fazer bloqueio em
nível dedeseja
usuário linha. atualizar
Se um uma linha, a ferramenta bloqueia um grupo de linhas, talvez dezenas ou
mesmo
seu software
centenas.
aplicativo
E se é escrito com ferramentas como estes, o banco de dados Oracle irá
simplesmente
o que é dito para
fazer
fazer; vai impor várias fechaduras que são desnecessários em termos de negócios.
Se vocês que o software está aplicando mais bloqueios do que o necessário, investigar se ele tem
suspeitar
opções de configuração para alterar esse comportamento.
Por último, certifique-se seus programadores estão cientes das capacidades do banco de dados.
Um comum
problema é repetíveis. Veja este exemplo:
Como isso pode ser possível? A primeira consulta (detalhe do relatório) mostra quatro linhas,
query (relatório de síntese) mostra cinco. O problema é que, durante o curso da primeira consulta,
mas, em seguida, o segundo
outra sessão inseridos e comprometidos a quinta linha. Uma saída para isso seria bloquear a tabela
durante a execução dos relatórios, causando outras sessões para pendurar. Uma maneira mais
sofisticada
Utilize a transação
seria SET LEITURA comunicado. Isso irá garantir (sem impor qualquer
bloqueios) que a sessão não ver qualquer DML em qualquer tabela, comprometida ou não, até que
termina o transação com um COMMIT ou ROLLBACK. O mecanismo baseia-se no uso de desfazer
read-only
segmentos.

Detectando a disputa do bloqueio


Certos pontos de vista irá dizer-lhe o que está acontecendo com bloqueio no banco de dados e banco
de dadosuma
oferece expresso
interface gráfica para o monitoramento de bloqueio. contenção de bloqueio é uma
consequência
usuários natural de
que acessam os muitos
mesmos dados simultaneamente. O problema pode ser exacerbado por mal
software, mas, em princípio, contenção de bloqueio faz parte da atividade de banco de dados normal.
projetado
Portanto,para
possível não DBAs
é para resolvê-lo completamente; eles podem identificar apenas que é um
problema
sistema e de
e sugerir
aplicativos
a estilistas que ter em mente o impacto da contenção de bloqueio ao projetar
estruturas de dados e programas.
contenção de bloqueio pode ser visto na visão V $ SESSION. Esta visão tem uma linha para
cada
sessão momento
iniciada sessão. O identificador exclusivo é o identificador da sessão coluna (SID). Se uma
sessão
por outro
estásessão,
bloqueada
o SID da sessão de bloqueio é mostrado na BLOCKING_SESSION coluna.

A Figura 6-6 mostra uma consulta que associa V $ SESSÃO a si mesmo, utilizando o SID e
BLOCKING_SESSION
colunas. As únicas sessões listadas são aquelas que são bloqueadas; todas as outras sessões terão
BLOCKING_SESSION = NULL e não serão incluídos.

Figura 6-6 Localizando e sessões de matança bloqueando

Na figura, o usuário MILLER está bloqueando outras duas sessões: JW e rei. Usuário SCOTT é
bloqueando SISTEMA usuário. Para identificar disputa pelo bloqueio na base de dados Express,
clique no
na guia
link para
Desempenho,
Hub Performance, e em seguida, clique na guia atual Achados ADDM. Isto irá
problemas detectados atuais, com detalhes visíveis se você clique na barra de impacto. A Figura 6-7
mostrar
mostra
onde uma
uma situação
sessão, SID = 256, está bloqueando outras duas sessões (SID = 15 e SID = 251) com
bloqueio de
enfileira. Também
linha é possível compreender a fila: Sessão SID = 15 é bloqueado por ambas as sessões
251 e 256, assim matando 256 (que é sugerido como Recomendação 1) não será suficiente para
No entanto, matando sessão 256 irá liberar sessão 251. Isso permitirá que 251 a concluir os seus
libertá-la.
trabalhos,
que pode então liberar sessão 15. Todas as sessões são identificados por um ID sessão de três
que consiste no número exemplo (que é sempre 1 porque esta não é uma base de dados em cluster),
facetada,
SID, eo SERIAL #.
o
Figura 6-7 Bloqueio de contenção tal como apresentado no banco de dados Expresso

Resolver contenção de bloqueio


Na maioria dos casos, esses blocos serão muito curta. As sessões de bloqueio irá comprometer a sua
transações, e as sessões bloqueadas, então, ser capaz de trabalhar. Em caso de emergência, no
entanto,
possível épara o DBA para resolver o problema-terminando a sessão (ou sessões) segurando demais
muitos bloqueios por muito tempo. Quando uma sessão é finalizada à força, os bloqueios que detém
serátransação
sua lançado como
ativa é revertida. As sessões bloqueadas, então, tornar-se livre e pode continuar.
Para terminar uma sessão, use o comando SESSION ALTER SYSTEM matar. Leva o SID e
SERIAL # da sessão para identificar qual sessão de matar. O SID é exclusivo a qualquer momento,
como fazer logon e logoff usuários, SIDs serão reutilizados. O SID mais SERIAL # é garantido para
mas
sertempo
o exclusivo para
de vida da instância, e ambos devem ser especificados quando uma sessão é morto.

Impasses: um caso especial


É possível construir uma posição em duas sessões de bloquear um ao outro de tal forma que tanto
vai travar, cada um esperando o outro para liberar seu bloqueio. Este é um impasse . Impasses são
causados por
concepção do programa ruim e são resolvidos automaticamente pelo banco de dados. Informações
ésobre
escrito
bloqueios
para o log de alerta, com detalhes completos em um arquivo-parte traço de seu
acompanhamento
-se a ocorrência dediário vai pegar
impasses e informar seus desenvolvedores que estão acontecendo.
Se ocorrer um impasse, ambas as sessões irá travar, mas apenas por um breve momento. Uma
das sessões

irá detectar o impasse em poucos segundos, e vai reverter a declaração que causou o problema.
Isto irá liberar a outra sessão, retornando a mensagem “ORA-00060 Deadlock detectado.” Este
mensagem deve ser preso por seus programadores em suas cláusulas de exceções, que deverá ter
ação apropriada.
EXAME DICA Você não pode fazer nada sobre outros do que relatá-los impasses; eles são
automaticamente pelo banco de dados.
resolvidos

Deve ser enfatizado que os impasses são uma falha de design do programa. Eles ocorrem porque
tentao fazer
códigoalgo que é logicamente impossível. código bem escrito sempre solicitar bloqueios no
uma sequência que não pode causar bloqueios de ocorrer ou vai testar se os bloqueios incompatíveis
já existem
antes de solicitar-los.

Exercício 6-8: descrever o mecanismo de bloqueio e gerenciamento de concorrência Dados No


primeira parte deste exercício, você vai usar o SQL * Plus para causar um problema e, em seguida,
adetectar
segunda e resolver
parte, você
isso.
vaiDentro
aprender a lidar com os impasses.
Aqui estão os passos a seguir para demonstrar contenção de bloqueio:

1. Usando o SQL * Plus, se conectar ao seu banco de dados com três sessões como o sistema
do usuário.
2. Na primeira sessão, criar uma tabela.

3. Na segunda sessão, atualizar uma linha.

4. Na terceira sessão, emitir a mesma declaração como no passo 2. A sessão irá travar.
5. Na primeira sessão, executar esta consulta para identificar qual sessão está bloqueada:

Em seguida, execute esta consulta para recuperar os detalhes necessários da sessão de


bloqueio:

Quando solicitado, digite o SID do sessão de bloqueio.


6. Na primeira sessão, matar a sessão de bloqueio.

Quando solicitado, digite da sessão bloqueando SID e SERIAL #.


7. até Tidy.
A. Na segunda sessão, tentar executar qualquer instrução SQL. Você receberá a mensagem
“ORA-00028: a sua sessão foi morto.”

B. Na terceira sessão, a actualização irá agora tiveram sucesso e completou. rescindir o


transação com COMMIT ou ROLLBACK.

Aqui estão os passos a seguir para demonstrar impasses:

1. Em sua primeira sessão, atualizar uma linha.

2. Em sua terceira sessão, atualizar uma segunda linha.

3. Em sua primeira sessão, tentar atualizar a segunda fila.

Isto irá travar porque a linha já está bloqueado.


4. Configure o impasse, atualizando a primeira linha na terceira sessão.

Isto irá travar, mas dentro de três segundos a primeira sessão vai se tornar livre com a
“ORA-00060: impasse solicitado enquanto espera por recursos.”
mensagem
5. Recuperar informações sobre o impasse do registro de alertas e arquivos de rastreamento.
A. A partir de um prompt do sistema operacional, abra o log de alerta no diretório de
A localização
rastreamento pode de
do banco serdados.
encontrado com esta consulta:

eo arquivo será chamado alert_ SID .ora. A última entrada no arquivo será algo como
este (a exemplo Windows):

B. Abra o arquivo de rastreamento com um editor. Em direção ao topo do arquivo será esta
crítica
mensagem:

Note-se que esta mensagem coloca a responsabilidade firmemente sobre os


desenvolvedores.
no arquivo, e vocêOlhe
vai encontrar
mais paraos
baixo
SID das sessões envolvidos e as declarações que
executado que causou o impasse.
6. até Tidy. Na primeira sessão, emitir um ROLLBACK para reverter a atualização teve êxito.
Isto irá liberar a terceira sessão, onde agora você pode também emitir um ROLLBACK.
Largue
mesa LOCKDEMO.
o

Broca Two-Minute
Descreva Cada Manipulação de Dados Declaração Idioma
• INSERIR entra linhas em uma tabela.
• ATUALIZAÇÃO ajusta os valores em linhas existentes.
• APAGAR remove linhas.
• MERGE pode combinar as funções de INSERT, UPDATE e DELETE.
• Mesmo que TRUNCATE não é DML, ele faz remover todas as linhas em uma tabela.
• É possível para um INSERT para inserir linhas em várias tabelas.
• Subqueries pode ser usado para gerar as linhas a serem inseridos, atualizados ou excluídos.
• Um INSERT, UPDATE, ou DELETE não é permanente até que seja cometido.
• TRUNCATE remove todas as linhas de uma tabela.
• A TRUNCATE é imediatamente permanente; ele não pode ser revertida.

Transações de controle
• A transação é uma unidade lógica de trabalho, possivelmente compreendendo várias
instruções DML.
• Transações são invisíveis para outras sessões até comprometida.
• Até cometido, as transações podem ser revertidas.
• um ponto de salvamento permite que um rolo sessão de volta parte de uma transação.

Explique DML e Undo geração de dados


• Todos os comandos DML gerar desfazer e refazer.
• Refazer protege todas as alterações a segmentos de segmentos de undo, bem como segmentos
de dados. de servidor Lê de arquivos de dados; DBW n grava arquivos de dados.
• Processos

Monitorar e administrar Undo Dados


• Uma instância usará segmentos de undo em uma tabela de undo nomeado.
• Mais desfazer podem existir espaços de tabela, mas apenas um será utilizado de cada vez.
• A tabela de undo deve ser grande o suficiente para ter em conta a taxa máxima de undo
geração e a consulta mais longa.
• Undo arquivos de dados de espaços de tabelas são arquivos de dados como quaisquer outros.

Descrever a diferença entre Undo Dados e Dados Redo


• Undo protege transações, enquanto refazer protege mudanças de bloco. Eles não são opostos;
eles
são complementares.

Configurar Anular Retenção


• Dados Undo será sempre mantido até que a transação que gerou ele conclui com um
COMMIT ou um ROLLBACK. Esta é undo ativo.
• Dados Undo serão mantidos por um período depois que ele se torna inativo para satisfazer
qualquer
requisitos
leitura
de consistência de consultas de longa duração; este é desfazer a decorrer.
• desfazer expirado é de dados não é mais necessário para a consistência de leitura e podem ser
substituídos
tempo como a qualquer
espaço em segmentos de desfazer é reutilizado.
• Configurar desfazer retenção, definindo uma meta com o parâmetro undo_retention. Este é
apenas
alvo, um
e se a tabela de undo tem espaço suficiente, não vai ser alcançada a menos que você
o espaço de tabela para garantia de retenção, que corre o risco de transações não por falta de
definir
desfazer espaço.

Descrever o mecanismo de bloqueio e gerenciamento de concorrência Dados


• O nível padrão de bloqueio é nível de linha.
• Os bloqueios são necessários para todos os comandos DML e são opcionais para SELECT.
• Uma declaração DML requer bloqueios compartilhados sobre os objetos envolvidos e
bloqueios exclusivos no
linhas envolvidos.
• Um bloqueio DDL requer um bloqueio exclusivo no objeto que afeta.

Monitorar e resolver conflitos Trava


• O bloqueio causado por bloqueios de linha podem ser identificadas consultando a V $ vista
SESSÃO
Banco de
oudados
através
Express.
• contenção de bloqueio Resolve quer por terminar transações bloqueio ou matando o bloqueio
sessão.
• Deadlocks são resolvidos automaticamente.

Auto teste
1 . Qual dos seguintes comandos podem ser revertida? (Escolha todos os que se aplicam.)
A. COMMIT
B. APAGAR
C. INSERIR
D. MERGE
E. TRUNCATE
F. ATUALIZAÇÃO
2 . Se um UPDATE ou comando APAGAR tem uma cláusula WHERE que lhe dá um alcance
de várias
linhas, o que vai acontecer se houver um erro a meio da execução? O comando é um

de diversos em uma transação de várias instruções. (Escolha a melhor resposta.)


A. O comando irá ignorar a linha que causou o erro e continuar.
B. O comando vai parar no erro, e as linhas que foram atualizados ou excluídos vai
permanecer atualizado ou excluído.
C. O que quer trabalhar o comando tinha feito antes de bater o erro será revertida, mas
trabalho já realizado pela transação permanecerá.
D. Toda a transação será revertida.
3 . Estudar o resultado dessa instrução SELECT:

Se você emitir a seguinte declaração:

porque ele irá falhar? (Escolha a melhor resposta.)


A. Porque os valores não são fornecidos para todas as colunas da tabela. Deve haver nulos
paraC3 e C4.
B. Como a subconsulta retorna várias linhas. Ela exige uma cláusula WHERE para
restringir
número a de linhas retornadas para um.
C. Como a subconsulta não é escalar. Deve usar MAX ou MIN para gerar valores escalares.
D. Porque a palavra-chave VALUES não é usado com uma subconsulta.
E. Ele terá sucesso, inserindo duas fileiras com nulos para C3 e C4.
4 . Você deseja inserir uma linha e, em seguida, atualizá-lo. Que seqüência de passos que você
deve(Escolha
seguir?a melhor resposta.)
A. INSERT, UPDATE, COMMIT
B. INSERT, COMMIT, UPDATE, COMMIT
C. INSERT, SELECT FOR UPDATE, UPDATE, COMMIT
D. INSERT, COMMIT, SELECT FOR UPDATE, UPDATE, COMMIT
5 . Qual destes comandos irá remover todas as linhas em uma tabela? (Escolha todas as
respostas
A. Umcorretas.)
comando DELETE sem cláusula WHERE
B. comando TABELA UMA GOTA
C. comando Um TRUNCAMENTO
D. Um comando UPDATE, definindo cada coluna como NULL e sem cláusula WHERE
6 . Usuário JOHN atualiza algumas linhas e pede Roopesh usuário logar e verificar as
mudanças
antes que ele comete-los. Qual das seguintes afirmações é verdadeira? (Escolha o melhor
responda.)

A. Roopesh pode ver as mudanças, mas não pode alterar-los, porque JOHN vai ter trancado
a linhas.
B. Roopesh não será capaz de ver as alterações.
C. JOHN deve confirmar as alterações para que Roopesh pode vê-los e, se necessário, rolo
-los de volta.
D. JOHN deve confirmar as alterações para que Roopesh pode vê-los, mas apenas JOHN
pode
-los
rolar
de volta.
7 . Há várias etapas envolvidas na execução de uma instrução DML. Coloque estes na correta
ordem:
A. Aplicar os vetores de mudança para o cache de buffer do banco de dados.
B. blocos de cópia de arquivos de dados nos buffers.
C. Pesquisa para os blocos relevantes no cache de buffer do banco de dados.
D. Escrever os vectores de mudança para o tampão de registo.
8 . Quando um COMMIT é emitido, o que vai acontecer? (Escolha a melhor resposta.)
A. Todos os vetores de mudança que compõem a transação são gravados no disco.
B. DBW n escreve os blocos de mudança para o disco.
C. LGWR escreve da memória intermédia de registo no disco.
D. A desfazer os dados são excluídos para que as alterações não podem mais ser revertida.
9 . Que tipos de segmentos são protegidos por refazer? (Escolha todos os que se aplicam.)
A. segmentos de índice
B. segmentos Tabela
C. Segmentos temporários
D. segmentos Undo
10 . Qual destes comandos irá encerrar uma transação? (Escolha todos os que se aplicam.)
A. CRIAR
B. GRANT
C. SAVEPOINT
D. SET AUTOCOMMIT
11 . Os bloqueios são necessários para parar sessões de trabalho sobre os mesmos dados ao
mesmousuário
tempo.
atualiza
Se umuma linha sem especificar qualquer bloqueio, qual será o efeito sobre outras
sessões?
A. Outros serão capazes de ler e escrever outras linhas, mas não as linhas afetadas.
B. Outros serão capazes de ler as linhas afetadas, mas não escrever para eles.
C. Outros serão capazes de ler e escrever as linhas afetadas, mas um COMMIT irá travar
até a primeira sessão foi confirmada ou revertida.

D. Outros não poderão escrever nenhuma linha porque, por padrão, a primeira sessão terá
tomado um bloqueio em toda a tabela.
12 . Qual destes comandos irá impedir que outras sessões de leitura de linhas na tabela?
(Escolha a melhor resposta.)
A. BLOQUEIO TABELA SCOTT.EMP no modo exclusivo;
B. LOCK TABLE SCOTT.EMP IN ROW MODO EXCLUSIVO;
C. SELECT * DE SCOTT.EMP FOR UPDATE;
D. DELETE FROM SCOTT.EMP;
E. Oracle não fornece um bloqueio que irá evitar que outras pessoas lendo uma mesa.
13 . Se várias sessões de solicitar um bloqueio exclusivo na mesma linha, o que vai acontecer?
(Escolher
a melhor resposta.)
A. A primeira sessão terá a fechadura; depois que ele libera o bloqueio, há uma seleção
aleatória
da próxima sessão para obter o bloqueio.
B. A primeira sessão terá um bloqueio exclusivo, e as outras sessões vai ficar bloqueios
compartilhados.
C. As sessões será dado um bloqueio exclusivo na sequência em que o solicitou.
D. Oracle vai detectar o conflito e reverter as declarações que, de outra forma pendurar.
14 . Se um programador não solicitar um tipo de bloqueio ao atualizar muitas linhas em uma
tabela,
bloquear
o que ou que será dada fechaduras? (Escolha a melhor resposta.)
A. Não há bloqueios em todos. O nível padrão de bloqueio é NONE, a fim de maximizar a
simultaneidade.
B. Um bloqueio exclusivo na tabela. Este é o método mais rápido quando muitas linhas
estão sendo
Atualizada.
C. Compartilhada bloqueia sobre a mesa e em cada fileira. Este é o mais seguro (embora
nãométodo.
seja o mais rápido)
D. Um bloqueio exclusivo em cada linha e um bloqueio compartilhado sobre a mesa. Isso
simultaneidade com segurança.
maximiza
15 . O que acontece se duas sessões impasse uns contra os outros? (Escolha a melhor resposta.)
A. Oracle vai reverter a declaração de uma sessão.
B. Oracle vai reverter declarações de ambas as sessões.
C. Ambos sessões irá travar indefinidamente.
D. Oracle vai terminar uma sessão.
E. Oracle vai terminar ambas as sessões.
16 . Quando uma instrução DML é executada, o que acontece? (Escolha a melhor resposta.)
A. Ambos os dados e os blocos de desfazer no disco são atualizados, e as alterações são
gravadas
o fluxopara
de refazer.
B. A versão antiga dos dados é escrito para um segmento desfazer, ea nova versão está
escrito
para os segmentos de dados e o buffer de redo log.
C. Ambos os dados e desfazer blocos são atualizados no cache de buffer do banco de dados,
e asiratualizações
para o buffertambém
de log.
D. O buffer de redo log é atualizado com as informações necessárias para refazer a
transação,
desfazereoblocos são atualizados com informações necessárias para reverter a transação.
17 . Se você suspeitar que desfazer geração é um problema de desempenho, o que pode fazer
paraquantidade
reduzir o de dados de desfazer gerado? (Escolha a melhor resposta.)
A. Converter do uso de segmentos de reversão para o gerenciamento automático de
desfazer.
B. Defina o parâmetro UNDO_MANAGEMENT para NONE.
C. Reduzir o tamanho dos segmentos de desfazer.
D. Não há nada que você pode fazer, porque todas as instruções DML deve gerar desfazer.
18 . Primeiro, o usuário JOHN inicia uma consulta. Em segundo lugar, o usuário Roopesh
atualiza
incluídos
uma linha
na consulta.
que seráEm terceiro lugar, consulta de JOHN concluída. Em quarto lugar,
Roopesh comete
mudança. Quinto,seu
JOHN dirige sua consulta novamente. Qual das seguintes afirmações são
(Escolha todos os que se aplicam.)
corretas?
A. O princípio da consistência significa que ambas as consultas de John retornará o mesmo
resultar definido.
B. Quando Roopesh comete, os dados de desfazer é descarregado para o disco.
C. Quando Roopesh compromete, a desfazer torna-se inativo.
D. primeira consulta de JOHN usará desfazer de dados.
E. segunda consulta de JOHN usará desfazer de dados.
F. As duas consultas serão inconsistentes entre si.
19 . Se um segmento de desfazer enche, o que vai acontecer? (Escolha a melhor resposta.)
A. Outro segmento desfazer será criado automaticamente.
B. O segmento anular vai aumentar de tamanho.
C. O undo tablespace estenderá se seus arquivos de dados estão definidas para autoextend.
D. Transações irá continuar em um segmento de desfazer diferente.
20 . Qual das seguintes afirmações são corretas sobre desfazer? (Escolha todos os que se
aplicam.)
A. segmento Uma desfazer pode proteger muitas transações.
B. Uma transação pode usar muitos segmentos de undo.
C. Um banco de dados pode ter muitos desfazer espaços de tabela.
D. Uma instância pode ter muitos desfazer espaços de tabela.
E. segmento Uma desfazer pode ser cortado em vários arquivos de dados.
F. Desfazer segmentos e os segmentos de reversão não pode coexistir.
21 . Sua tabela de undo tem 10 segmentos de desfazer, mas durante uma súbita explosão de
atividade
20 transações
que vocêconcorrentes.
tem O que vai acontecer? (Escolha a melhor resposta.)
A. A Oracle irá criar mais dez segmentos de undo.
B. As transações serão equilibradas automaticamente em dez segmentos de undo.
C. Dez transações será bloqueado até que os dez primeiros cometer.
D. O que acontece vai depender de sua configuração UNDO_RETENTION.
22 . Seus usuários estão relatando “ORA-1555: instantâneo muito antigo” erros. O que poderia
ser aesta?
causa(Escolha
de a melhor resposta.)
A. Você não está gerando instantâneos com freqüência suficiente.
B. A desfazer de dados é muito antiga.
C. Não há o suficiente desfazer de dados.
D. Sua tabela de undo é reter os dados por muito tempo.
23 . Examine essa consulta e conjunto de resultados:

O tamanho do bloco da tabela de undo é 4KB. Qual dos seguintes seria o ideal
tamanho para a tabela de undo? (Escolha a melhor resposta.)
A. 1GB
B. 2GB
C. 3GB
D. 4GB
24 . Quando alterações são escritas para o buffer de log? (Escolha todos os que se aplicam.)
A. Quando um bloco de tabela é atualizada
B. Quando um bloco de índice é atualizado
C. Quando um bloco de desfazer é atualizado
D. Durante as operações de reversão
E. ON COMMIT
F. Quando as consultas são executadas que bloqueia o acesso com alterações não
confirmadas

25 . Mesmo que você esteja usando segmentos de desfazer automáticos, os usuários ainda estão
recebendo
erros. O
“instantâneo
que você poderia
muito antigo”
fazer? (Escolha todos os que se aplicam.)
A. Aumente o parâmetro UNDO_RETENTION.
B. Defina o parâmetro RETENTION_GUARANTEE.
C. Tune as consultas para fazê-los correr mais rápido.
D. Aumento do tamanho da tabela de undo.
E. Ativar retenção de garantia.
F. Aumentar o tamanho de seus segmentos de desfazer.
Respostas
1.
de auto-teste
B , C , D , e F . Estes são os comandos DML; todos eles podem ser revertidas.
A e E são incorrectas. COMMIT termina uma transação, que pode, então, nunca será
revertida. TRUNCATE é um comando DDL e inclui um built-in COMMIT.
2. C . Este é o comportamento esperado: A declaração é revertida, e o resto do
transação permanece não confirmada.
A , B , e D são incorrectas. A está incorreta porque enquanto este comportamento é, de
fato,
configurável, ele não está habilitado por padrão. B está incorreta porque, enquanto esta é, de
fato,
possível em caso de erros de espaço, não é ativado por padrão. D é incorrecta porque
a declaração será revertida, não toda a transação.
somente
3. D . A sintaxe está incorrecta; usar a palavra-chave VALUES ou uma subconsulta, mas
Remova
não ambos.
a palavra-chave VALUES, e ele será executado. C3 e C4 seria preenchida com
nulos.
A , B , C , e E são incorrectas. A está incorreta porque não há necessidade de fornecer
paravalores
as colunas não listados. B e C são incorrecta porque um INSERT pode inserir um
conjunto
não de linhas, de modo
há necessidade limitar o número com um cláusula ONDE ou usando máximo ou
mínimo de
retornar apenas uma linha. E está incorreta porque a instrução não é sintaticamente correto.
4. Um . Este é o mais simples (e, portanto, o melhor) maneira.
B , C , e D estão incorrectos. Todos estes irão funcionar, mas todos eles são
Nenhum
desnecessariamente
programador devecomplicado.
usar declarações desnecessárias.
5. A e C . O TRUNCATE será mais rápido, mas DELETE vai chegar lá também.
B e D são incorrectas. B está incorreta porque isso irá remover a mesa, bem como a
linhas dentro dele. D está incorreta porque as linhas ainda estará lá, mesmo que eles sejam
preenchida com nulos.
6. B . O princípio de isolamento significa que apenas JOHN pode ver sua transação não
confirmada.
A , C , e D estão incorrectos. A está incorreta porque isolamento da transação significa
outraque não será capaz de ver as alterações. C e D são incorrecta porque um comprometido
sessão
transação não pode ser revertida.
7. C , B , D , e A . Esta é a sequência. Todos os outros estão incorretas.
8. C . Um COMMIT é implementado colocando um registro COMMIT no buffer de log e

LGWR liberar o buffer de log para o disco.


A , B , e D são incorrectas. A está incorreta porque muitos dos vetores de mudança
todos(talvez
eles) estará no disco já. B está incorreta porque DBW n não participa
processamento de confirmação. D é incorrecta porque os dados de desfazer pode muito bem
persistir durante
COMMIT não é algum tempo;
relevante para uma
esta.
9. A , B , e D . Alterações a qualquer um destes irá gerar refazer.
C é incorrecta. Alterações aos segmentos temporários não geram refazer.
10. A e B . Ambos os comandos de controle de DDL e de acesso incluem um COMMIT.
C e D são incorrectas. C é incorrecta porque um ponto de salvamento é apenas um
marcador
transação. dentro
D está de uma
incorreta porque este é um comando SQL * Plus que age localmente no
processo; ele não tem efeito sobre uma transação ativa.
usuário
11. B . Por padrão, um bloqueio exclusivo fileira irá proteger a linha contra a gravação, mas
não
A , Cler.
, e D estão incorrectos. A está incorreta porque lendo a linha atualizada (na sua
pré
atualização formulário) será sempre possível. C está incorreta porque é DML que será
bloqueado,
não COMMIT. D está incorreta porque o bloqueio exclusivo padrão é somente na linha
12. afetada.
E . Os leitores nunca são bloqueadas.
A , B , C , e D estão incorrectos. A está incorreta porque vai bloquear todas as linhas
contra
e B está a atualização,
incorreta porque vai bloquear quaisquer linhas atualizadas. Nem irá bloquear
leitores.
D Ce
estão incorretas porque eles vão ter bloqueios compartilhados sobre a mesa e bloqueios
exclusivos
linhas. Maisnouma vez, não pode impedir que lê.
13. C . Esta descreve correctamente o funcionamento do mecanismo de enfileiramento.
A , B , e D são incorrectas. Um é incorrecta porque fechaduras são concedidos
sequencialmente,
aleatoriamente. não
B é incorrecta porque os bloqueios compartilhados aplicar ao objecto;
bloqueios de
exclusivo. linhas
D está deve serporque este é mais como uma descrição de como os impasses são
incorreta
gerenciou.
14. D . Este descreve corretamente o mecanismo de bloqueio DML: um bloqueio
compartilhado
definição de tabela para protegerexclusivos
e bloqueios a para proteger as linhas.
A , B , e C são incorrectas. A está incorreta porque os bloqueios são sempre imposta. B
é
incorreto porque bloqueios de tabela exclusivos são aplicadas apenas se o programador
ésolicita-los.
incorreta porque
C bloqueios exclusivos devem ser sempre tomados em linhas.
15. Um . Uma das declarações será lançado automaticamente para trás, permitindo que a
continuar.
sessão
B , C , D , e E são incorrectas. B está incorreta porque apenas uma instrução será
lançado
costas. A outra permanecerá em vigor, bloqueando a sua sessão. C é incorrecta porque este é
exatamente o efeito que é evitado. D e E são incorrecta porque a resolução impasse
mecanismo não terminar sessões, apenas declarações.
16. C . Todos DML ocorre no cache de buffer do banco de dados, e mudanças para ambos
os blocos
desfazer blocosdeestão
dados e
protegidos por refazer.
A , B , e D são incorrectas. A está incorreta porque a escrita para o disco é independente
executar a instrução. B e D são incorrecta porque elas são incompletas: redo protege
mudanças para ambos os blocos de dados e desfazer blocos.

17. D . Todos DML gera desfazer, por isso a única maneira de reduzir a geração de undo
recriar
seria
o aplicativo.
A , B , e C são incorrectas. A está incorreta porque, apesar de undo automático é mais
eficiente, não pode reduzir desfazer. B está incorreta porque não há nenhuma definição de
parâmetros que podem
desligar desfazer. C está incorreta porque o tamanho dos segmentos irá afetar somente a
rapidez
eles são reutilizados, não quanto undo é gerado.
18. C , D , e F . C é correto porque desfazer torna-se inativo em cometer (embora não
necessariamente expiram). D está correcto porque a consulta será necessário desfazer dados
para construir
consistente com umo resultado
estado dos dados no início da consulta. F está correto porque a Oracle
garante a consistência dentro de uma consulta, não entre consultas.
A , B , e E são incorrectas. A está incorreta porque a Oracle garante a consistência
dentronão
consulta, de entre
um consultas. B é incorrecta porque não há nenhuma correlação entre um
COMMIT
e uma gravação para os arquivos de dados. E é incorreto porque a segunda consulta é contra
umamudou
não tabela que
durante
é o curso da consulta.
19. B . Desfazer segmentos estender como uma transação gera mais desfazer dados.
A , C , e D estão incorrectos. A está incorreta porque outro segmento de undo será
criado
somente se houver mais transações simultâneas que segmentos. C confunde o efeito de um
segmento enchendo-se com que a tabela de encher. D é impossível porque um
transação pode ser protegida por apenas um segmento de desfazer.
20. A , C , E . Um está correta, embora a Oracle vai tentar evitar isso. C é correcta, embora
apenas
um vai ser feita activo em qualquer momento pelo exemplo. E é correto porque quando se
trata de
armazenamento, um segmento de desfazer é como qualquer outro segmento de: A tabela
abstrai a física do armazenamento lógico.
armazenamento
B , D , e F são incorrectas. B está incorreta porque uma transação está protegido por
uma segmento. D é incorrecta porque um exemplo pode utilizar apenas uma tabela de
desfazer
desfazer. Fporque
incorrecto é undo e reversão segmentos podem coexistir, uma base de dados, mas pode
utilizar
o outro.apenas um ou
21. Um . Desfazer segmentos são gerados de acordo com a demanda.
B , C , e D estão incorrectos. B é incorrecta porque mais segmentos vai ser criado. C é
incorreto, pois não há limite imposto pelo número de segmentos de desfazer. D é incorrecta
porque este parâmetro não é relevante para as operações, apenas para consultas.
22. C . Um “ORA-1555: instantâneo muito antigo” erro é uma indicação clara de que
sendodesfazer
mantidodepor
dados
tempo
nãosuficiente
é para satisfazer a carga de trabalho de consulta. Não é o
suficiente desfazer de dados
acessível.
A , B , e D são incorrectas. A está incorreta porque ele não se refere a desfazer de todo-
parase
Instantâneos,
refere que existiam em versões anteriores do banco de dados, mas agora são
chamados
visualizações materializadas. B e D são ambos incorrecta porque descrevem a situação
oposta,
em que os dados de desfazer está sendo retida durante mais tempo do que o necessário. Este
ser
nãoum desperdício
é um problema,de espaço.
mas pode
23. C . Para calcular isso, tomar o maior valor para UNDBLKS, que é para a 10 minutos
período. Dividir por 600 para obter a taxa de geração de desfazer em blocos por segundo, e
pelo tamanho do bloco para obter o valor em bytes. Multiplique pelo maior valor para
multiplicar

MAXQUERYLEN para encontrar o espaço necessário se a maior taxa de geração de


desfazer coincidiu
com a consulta mais longa, e depois dividir por um bilhão de obter a resposta em gigabytes:
237014/600 * 4096 * 1740 = 2,6 GB (aproximadamente).
A , B , e D são incorrectas. Esses números são derivados de uma compreensão incorreta
de
a aritmética desfazer (detalhado para C ).
24. A , B , C , e D . Alterações em todos os blocos de dados são protegidos por refazer.
mudaUmade blocos
operação
e, por
de reversão
conseguinte, também gera refazer.
E e F são incorrectas. COMMIT não escreve mudanças, porque eles já têm sido
escrito. Consultas não ler ou escrever refazer, embora possam também ler desfazer.
25. C , D , e E . Resposta C está correta porque fazer as consultas completas mais rápido
vai a probabilidade de “instantâneo muito antigo.” D está correta porque vai permitir
reduzir
mais
undo unexpired para ser armazenado. E vai resolver o problema completamente, embora
possa causar
problemas com transações.
A , B , e M são incorrectas. A está incorreta porque ele não vai ajudar, por si só, é
alvo,apenas
a menosumaque combinada com a de E . B está incorreta porque não existe tal parâmetro
(embora
é uma cláusula de que pode ser aplicado a uma tabela de undo). F está incorreta porque isso
não pode
feito manualmente
ser em Oracle já estará fazendo o seu melhor automaticamente.
CAPÍTULO 7

Apanhar, Restringindo e classificando dados


usando SQL

Objetivos do exame
Neste capítulo, você vai aprender a
• 061.1.1 Explique as capacidades de instruções SQL SELECT
• 061.1.2 Executar uma instrução SELECT Básica
• 061.2.1 limitar as linhas recuperadas por uma consulta
• 061.2.2 classificar as linhas recuperadas por uma consulta
• 061.2.3 Use Ampersand Substituição para restringir e classificar a saída em tempo de execução
Este capítulo discute o paradigma relacional, normalizando dados em estruturas relacionais e
recuperação de dados armazenados em tabelas relacionais usando a instrução SELECT. A declaração
é introduzido
sua forma básica
no e é construído progressivamente, a alargar a sua funcionalidade núcleo. Este
capítuloatambém
discute cláusula WHERE, que especifica uma ou mais condições que o servidor Oracle
avalia para restringir as linhas retornadas pela instrução. O capítulo examina a cláusula ORDER BY,
que fornece capacidades de classificação de dados, eo novo SQL-fila limitar a cláusula; o capítulo
fecha pela substituição e comercial, que é um mecanismo que fornece uma maneira de reutilizar a
discutindo
mesma
declaração para executar consultas diferentes substituindo elementos de consulta em tempo de
execução.
Explique as capacidades de instruções SQL SELECT
Sabendo como recuperar dados em um formato definido utilizando uma linguagem de consulta é o
primeiro passoaspara
compreender capacidades de instruções SELECT. Descreve as relações envolvidos proporciona
ligação física entre a teoria de como os dados são armazenados em tabelas e a visualização prática
uma
do
estrutura dessas tabelas. Estes tópicos formar um precursor importante para a discussão do
capacidades da instrução SELECT. As três áreas primárias explorado são os seguintes:

• Apresentando a instrução SQL SELECT


• Apresentando o comando mesa DESCREVER
• Explorando as capacidades da instrução SELECT

Apresentando a instrução SQL SELECT


A instrução SELECT do Structured Query Language (SQL) tem que ser a mais poderosa
construção de linguagem nonspoken. É um mecanismo elegante, flexível e altamente extensível
criado parainformações de uma tabela de banco de dados. Um banco de dados de pouco serviria se
recuperar
não poderiapara
consultado ser responder a todos os tipos de questões interessantes. Por exemplo, você pode ter um
banco deregistros
contém dados quefinanceiros pessoais, como seus extratos bancários, as suas contas, e seu salário
afirmações. Você poderia facilmente pedir ao banco de dados para uma lista ordenada-data de suas
contas
Nos últimos
de serviços
seis meses
públicos
ou consultar
elétricos seu
paraextrato bancário para uma lista de pagamentos feitos para
uma
o determinada
mesmo período.conta sobre
A beleza da instrução SELECT é encapsulado em sua simples, Inglês-like
formato que permite perguntas a serem feitas do banco de dados de uma forma natural.

A Tabela de Comando DESCREVER


Para obter as respostas que você procura, você deve fazer as perguntas corretas. Uma compreensão
referência,
dos termos que
de neste caso são tabelas relacionais, é essencial para a formulação da correcta
questões. A descrição estrutural de uma tabela é útil para estabelecer o que perguntas podem ser
feitasOracle
The do mesmo.
servidor armazena informações sobre todas as tabelas em um conjunto especial de
tabelas relacionais
dicionário de dadoschamado
, a fim de gerenciá-los. O dicionário de dados é bastante semelhante a uma
linguagem regular
dicionário. Ele armazena as definições dos objetos de banco de dados em um formato centralizado,
ordenada
O e estruturada.
dicionário de dados foi descrito no Capítulo 2 .
Uma distinção clara deve ser feita entre a definição e armazenar o conteúdo de uma tabela. o
definição de uma tabela inclui informações como o nome da tabela, proprietário da tabela, detalhes
sobre o
colunas que compõem a mesa, e o seu tamanho físico de armazenamento em disco. Esta informação
está também
referido como metadados . O conteúdo de uma tabela são armazenadas em filas e são referidos como
dados
Você. pode obter os metadados estrutural de uma tabela, consultando o banco de dados para a
que lista de colunas
o compõem usando o comando DESCRIBE. A forma geral da sintaxe para este comando é a
seguinte maneira:

Este comando irá ser sistematicamente descompactado. A palavra-chave DESCREVER pode ser
DESC.encurtado
Todas as
para
tabelas pertencem a um esquema ou proprietário. Se você está descrevendo uma
tabela queaopertence
esquema qual vocêà se conectou, você pode omitir o <SCHEMA> parte do comando. Figura
7-1 mostra como a tabela de funcionários é descrito a partir do SQL * Plus após a conexão com o
banco odeusuário
como dados HR com o comando FUNCIONÁRIOS descrever e como a tabela de departamentos
édescrito usando a notação abreviada: DESC HR.DEPARTMENTS. O HR. prefixo notação podia
ser omitida desde tabela DEPARTMENTS pertence ao esquema HR. O esquema HR (e cada
outro esquema) tem acesso a uma tabela especial chamada DUAL, que pertence ao esquema SYS.
tabela pode ser estruturalmente descrito com o comando descrever SYS.DUAL.
este

Figura 7-1 Descrevendo os funcionários, departamentos e mesas DUAL

Descrevendo tabelas produz resultados interessantes e úteis. Você sabe quais colunas de uma
tabela pode ser
seleccionada uma vez que seus nomes estão expostos. Você também conhecer a natureza dos dados
contidosdesde
colunas nesteso tipo de dados da coluna está exposta. Capítulo 5 tipos de colunas detalhado.
colunas obrigatórias, que são obrigados a armazenar dados para cada linha, estão expostos pela
Null?
saída coluna produzido pelo comando DESCREVER tendo o valor não nulo. Tu es
anotar
garantia de que tem
que NULL qualquer coluna restringido
um significado especial pela
para restrição
o servidorNOT NULL
Oracle. contém
NULL alguns
refere-se dados. É
a uma
importante
ausência
Os espaçosde em
dados.
branco não contam como NULL, pois estão presentes na linha e ter algum
comprimento
embora mesmo
eles não são visíveis.

Capacidades da instrução SELECT


Tabelas de banco de dados relacionais são construídos sobre uma base matemática chamado teoria
relacional
teoria, as relações
. Nisso ou tabelas são operados por uma linguagem formal chamado de álgebra
relacional
álgebra usa. alguns
relacional
termos especializados: Relações loja tuplas, que têm atributos. Ou em Oracle-
falar, tabelas fileiras de lojas, que têm colunas. SQL é uma interpretação comercial do relacional
construções álgebra. Três conceitos da teoria relacional abranger as capacidades do SELECIONAR
declaração: projeção, seleção e adesão.
Projecção refere-se a restrição das colunas seleccionadas a partir de uma tabela. Ao solicitar
de uma
informações
tabela, você pode pedir para ver todas as colunas. É possível recuperar todos os dados do
mesa HR.DEPARTMENTS com uma instrução SELECT simples. Essa consulta retornará
DEPARTMENT_ID, department_name, MANAGER_ID e LOCATION_ID informações para
cada registro departamento armazenados na tabela. E se você queria uma lista contendo apenas o
colunas department_name e manager_id? Bem, você teria pedido apenas aqueles dois
colunas da tabela. Esta restrição de colunas é chamado de projecção .
Selecção refere-se a restrição das linhas seleccionadas a partir de uma tabela. Muitas vezes não é
recuperar
desejável
todas as linhas de uma tabela. Tabelas podem conter muitas linhas, e, em vez de solicitar
todos eles,
seleção fornece um meio para restringir as linhas retornadas. Talvez você foi convidado apenas para
os funcionários que pertencem ao departamento de 30. Com a seleção , é possível limitar os
identificar
resultados
essas linhasdefinidos
de dadospara
com um valor DEPARTMENT_ID de 30.
Juntando-se , como um conceito relacional, refere-se à interacção de tabelas com o outro em
Forma
umanormal
consulta.
terceira apresenta a noção de separar diferentes tipos de dados em tabelas autônomas
evitar a duplicação e manutenção anomalias e associar dados relacionados usando primária e
para
estrangeira
relações de chave. Estas relações fornecem o mecanismo para unir tabelas uns com os outros
(discutido em Capítulo 10 ).
Suponha que há uma necessidade de recuperar os endereços de e-mail para os funcionários que
departamento.
trabalham nas A coluna
VendasEMAIL pertence à tabela de trabalhadores, enquanto o
Coluna department_name pertence à tabela de SERVIÇOS. Projeção e seleção
da tabela de departamentos podem ser usadas para obter o valor que DEPARTMENT_ID
corresponde ao departamento de vendas. As linhas correspondentes na tabela Funcionários podem
ser juntou-se
tabela DEPARTMENTS
a com base neste valor DEPARTMENT_ID comum. A coluna EMAIL
pode, então, ser projectada a partir deste conjunto de resultados.
A instrução SQL SELECT é matematicamente regidos por estes três princípios. um ilimitado
combinação de projeções, seleções, e junta-se fornece a linguagem para extrair os dados relacional
requeridos.

EXAME TIP Os três conceitos de projecção, selecção, e juntando-se, que formam a base subjacente
base para as capacidades da instrução SELECT, são geralmente medidos no exame. Você deve ser
solicitado a escolher as corretas três conceitos fundamentais ou para escolher uma declaração que
demonstra
ou mais desses
uma conceitos.

Normalização de dados
Esta seção apresenta várias do mundo real cenários de organização de dados para discutir o
paradigma e introduzir algumas técnicas de modelagem práticas. Fundamental para uma
relacional
compreensão
uma de SQL
compreensão é
do paradigma relacional e a capacidade de normalizar os dados em relacional
estruturas. A normalização é o trabalho de analistas de sistemas, porque eles modelar dados de
negócios
formar adequado
em um para armazenar em tabelas relacionais. É uma ciência que pode ser estudado há
anos, e escolas
muitas há de pensamento que se desenvolveram os seus próprios métodos e notações.
Cenários do mundo
Este guia usa vários real
cenários hipotéticos, incluindo os dois cenários enlatados chamados HR e OE
fornecido pela Oracle e freqüentemente usado como o contexto para questões do exame para ilustrar
vários SQLOs seguintes cenários evoluir ainda mais à medida que novos conceitos são discutidos.
conceitos.

Concessionária de carros Sid funciona uma concessionária de carros e precisa de um sistema para
acompanhar
e vende. Ela os carros
notou que ela
negócio compra
tomar um mergulho e quer se mudar para o século 21 e criar um
web site que anuncia estoque disponível. Ela precisa de um sistema para manter registros dos carros
que ela teme vendidos e os detalhes dessas transações.
comprados

Geological Cores amostras de núcleo da Terra foram coletadas pelo seu levantamento geológico
agência. Para garantir o rigor científico, os desenvolvedores da GeoCore ter determinado que o
local,
sistema adeve
rastrear localização exata geográfica, o conteúdo elementar das amostras de núcleo, e as datas de
coleção.

Entrada de Pedidos A entrada de pedidos cenário (OE) fornecido como um exemplo pela Oracle
contém
para uminformações
sistema comercial fictício que acompanha os produtos, os clientes e as ordens de venda que
ter sido colocado.

Recursos Humanos Os recursos humanos cenário (HR) fornecido como um exemplo de registros de
Oracle
funcionários, departamentos, escritórios locais e informações relacionadas com o trabalho para um
departamento
Embora osde RH típico.
cenários hipotéticos descritos variam em complexidade, eles compartilham vários
características, incluindo um crescimento de dados potencial que pode eventualmente sobrecarregar
um baseado
solução organização
em papeldeoudados à base de folha de cálculo, bem como uma exigência para que os
dados sejam
(Inserido, actualizado,
manipuladose suprimido) e recuperados de forma eficiente. O desafio de produzir um
desenho organização de dados eficiente (também conhecido como um modelo de dados ) podem ser
superados comdeum
compreensão tanto
como os dados sendo organizado é susceptível de ser utilizado e alguns modelagem
de dados básicos
técnicas. O objectivo é conseguir um equilíbrio óptimo entre o armazenamento de dados e de acesso
airádados, o qual
fornecer a jusante benefícios de economia de custos a longo prazo.

Modelagem de dados
Várias abordagens de modelagem de dados formalizados estão disponíveis, tais como o quadro
ZachmanUnified
Rational eo Process, que, finalmente, procuramos fornecer uma sistemática, abordagem
baseada em padrões
representando objetos
para
em uma empresa. Há uma infinidade de notações disponíveis para modelar
entidades
e seus relacionamentos. Uma notação populares adotada pela Oracle em seu software assistida por
engenharia (CASE) ferramentas e, mais recentemente, no SQL Developer é notação pé do corvo,
computador
serão discutidos neste capítulo. Outras notações, como a notação Relacional esquema e Universal
que
Markup Language (UML), também são populares, mas você deve escolher uma notação que é
confortável
sensato paraevocê.
Modelagem lógica baseia-se conceituar objetos de interesse como entidades e suas interações
uns com os outros como relacionamentos . Existem muitas abordagens para diagramas entidade-
relacionamento,
com seus benefícios
cadae limitações. Uma breve discussão sobre diagramas entidade-relacionamento e
notação segue.
sua

Entidades e Relações
Muitos profissionais da Oracle adotam uma estrutura que consiste em três etapas de modelagem para
modelagem de banco de dados relacional. Um modelo lógico é concebido quando construções de
alto nível chamada
entidades , compreendendo vários atributos e as suas relações , são tipicamente representados em
conjunto numa
diagrama. Entidades em modelos lógicos são geralmente representadas como rectângulos com
cantos arredondados,
compreendem atributos
queou identificadores, por vezes, indicado por um símbolo “o”. Atributos que
exclusivamente
identificar uma instância de uma entidade são designados como chaves primárias e às vezes são
indicados
"#*" personagens.
pelo Dados de digitação os atributos podem ser feitas nesta fase, mas geralmente não
sedesign.
o reflecte em
O modelo lógico é então transformado em um modelo relacional, traduzindo as entidades em
comumente
relações referido
, como tabelas. A idéia aqui é que conjuntos de instâncias das entidades são
modelado como uma mesa. Os atributos são transformados em tabela colunas . Cada instância de
colectivamente
uma entidade
reflectido como é um tuplo ou linha de dados, tendo cada um valores para as suas diferentes atributos
ou colunas.
número de “linhas
o na tabela” é o “cardinalidade das tuplas.” Normalmente os atributos que são
para
(que cada
exclusivos linha são mais
será discutido chamados
tarde).deAs
chaves únicas
relações entre, e,asnormalmente,
entidades sãouma chave
muitas única
vezes é escolhido
modelado comopara
ser a
chaveschave primária
estrangeiras
que também ,
serão exploradas neste capítulo.
Relações em modelos relacionais são geralmente representados como retângulos. Nesta fase não
maisé detalhes
tipicamente
em termos de digitação de dados para os atributos e atributos chave primária e
estrangeiracom
reflectido também
um Psãoe um F , respectivamente, no modelo relacional. Finalmente, o modelo
relacional éem um modelo físico através da implementação do projeto em um banco de dados
projetados
relacional.
notação pé-de-galinha é frequentemente usado para descrever relacionamentos em modelos de
As relações
dados lógicos
entre as
e relacionais.
entidades podem ser um dos seguintes procedimentos e serão exploradas no
do cenário concessionária de carros:
contexto

• 1: N de um-para-muitos

• N: 1 -to Many-um
• 1: 1 Um-um para-
• M: N muitos-para-muitos

Considere o cenário de negócio do carro de Sid introduzido anteriormente. Você pode modelar os
comodados
umaprovável
entidade composta pelas seguintes atributos relacionados a carros: Marca, Modelo,
cilindrada
Cor. Tambémdo motor,
é necessário
e informações sobre a compra e venda de carros, assim você pode adicionar
Data de compra, data de venda, vendedores Nome, os vendedores SSN (por número de Segurança
Social), Sellers
Companhia, os mesmos detalhes para o comprador e, finalmente, Preço de Compra e preço de
venda, como na Figura 7
2.

Figura 7-2 A entidade concessionária de carros única

Dados transacionais de amostras armazenadas em uma tabela com base nesta entidade pode
mostra
parecer
três linhas
Figurade7-3dados
, quenuma tabela compreendendo 14 colunas chamadas CAR_DEALERSHIP.
comandos para criar tabelas e preenchê-los com dados será discutido mais tarde neste livro. Para
o
agora,
há várias coisas mais fundamentais importantes de aviso. armazenar as tabelas dados em linhas,
também chamado
registros. Cada elemento de dados encontra-se na intersecção de uma linha, e uma coluna, também
chamadaintuitiva
bastante uma célula.
e muito
Isto parecido
é com uma planilha.
Figura 7-3 Dados de exemplo na tabela CAR_DEALERSHIP

Os dois primeiros registros na tabela CAR_DEALERSHIP incluir as seguintes informações:

• A prata A160 Mercedes com uma cilindrada de 1600cc que pertencia a Coda, uma empresa
privada
seller com SSN 12345, foi comprado por Sid com SSN 12346 de Carros de Sid, por US $
10.000
01 de junho
em de 2013.
• A prata A160 Mercedes com uma cilindrada de 1600cc que pertencia a Sid, com SSN
12346, de carros de Sid, foi comprado por Wags, com SSN 12347, de Wags Auto, por US $
12.000
de 1 de Agosto de 2013.

Observe a repetição de dados. Cada registro contém informações duplicadas para os carros sendo
ou vendidos
comprados e para o cliente fazer a compra ou venda. duplicação desnecessária de dados
indica má concepção, uma vez que é um desperdício e muitas vezes requer manutenção
normalmente
desnecessária.
não é feito comSecuidado,
esta manutenção
este projeto permite que os erros (por vezes referido como atualização de
inserção e exclusão
anomalias ) para entrar e reduz a integridade global dos dados.
normalização de dados refere-se a modelagem de dados usando várias entidades com as relações
-los,entre
o que pode reduzir ou eliminar totalmente a redundância de dados. Existem muitos tipos de
formas
que foram
normais
definidas teoricamente, mas o projeto de banco de dados relacional se concentra
principalmente na seguinte
três:

• Primeira forma normal (1NF) lida com a questão de eliminar grupos de repetição
desnecessária
dados. Um exemplo
de de um grupo de repetição na Figura 7-3 seriam as primeiras quatro
colunas daduas linhas onde a informação descritiva sobre o carro é repetido. Você poderia
primeiras
definirentidade
nova um Carros que identifica exclusivamente um carro específico usando o atributo
chavecomo
bem primária Car ID
a marca, como Motor Capacidade e Cor atributos. O identificador ID Car é,
modelo,
utilizado na entidade transações relacionadas para evitar grupos de dados repetir.
então,
• forma normal Segundo remove atributos da entidade (1NF) que não são dependentes do
chave primária. Na entidade Carros proposta descrito anteriormente, o atributo cor não é
dependente
em um carro específico. Você pode definir uma nova entidade cores que identifica
exclusivamente
colorir usando oum
atributo
específico
chave primária cores ID. A ID A cor pode ser referenciado pela
Carros entidade.
• forma normal Terceiro remove todos os atributos interdependentes de uma entidade 2NF. Os
compradores
vendedoresede carros, cada um tem um número de Segurança Social identificação exclusiva
(SSN).
no entanto,
Os nomes
são interdependentes
deles, no atributo SSN. Você pode definir uma nova entidade
que identifica exclusivamente um cliente usando o cliente ID atributo chave primária onde
Clientes
informações interdependentes como nome e empresa do cliente são armazenadas.

NOTA Muitas vezes há vários modelos normalizados possíveis para um aplicativo. É importante
o mais apropriado. Se o analista de sistemas recebe esta errado, as implicações podem ser sérias para
usar
desempenho, necessidades de armazenamento e esforço de desenvolvimento.

Note-se que no contexto de ajuste de desempenho é intencional e aceitável para duplicar os


entidades.
dados emQuando os dados são normalizados entre várias entidades instanciado como várias tabelas
que devem
unidas, os processos
estar servidor Oracle precisa buscar fisicamente os dados de várias tabelas e
juntar a eles em buffers de memória para produzir o resultado conjunto necessário. A entrada
adicional
para consultar
/ saída
ou(IO)
manipular
requerido
dados normalizados às vezes justifica desnormalizar modelos de dados
para reduzir
operações dedisco
IO e, consequentemente, aumentar o desempenho. Isto é comum em armazéns de
dados (DWHs)
sistemas de apoioe à decisão (DSSS), mas é uma exceção e não a regra em transações on-line
de processamento (OLTP) sistemas.
Considere o modelo lógico de dados na Figura 7-4 . Os dados relacionados com o carro foi
modelado
entidade. como os carros
A informação do cliente (compradores e vendedores) é essencialmente o mesmo, para que
modelado
os clientescomo
têmAs
e vendedores. acompras
entidadeeClientes
sido comregistrados
vendas são o atributo Tipo de cliente
na entidade para diferenciar
Transações, enquantoentre
uma pesquisa
compradores
de entidadede cores mantém o controle de cores diferentes.
chamadas
Figura 7-4 O carro concessionário entidade-relacionamento diagrama
Existem várias vantagens para conceituar este projeto como quatro entidades inter-relacionadas.
Primeiro,
dados o
foram normalizados, e não existe duplicação de dados. Um benefício prático de várias
cada rastreamento de um único construto como automóveis, clientes, cores e até mesmo Transações,
entidades,
é a manutenção
de facilidade de dados. Novas cores podem ser adicionados, cada um com um código único e,
como carros
compra, estasnovos
cores,são
definidos e mantidos em um lugar, pode ser usado para descrever vários carros
com a mesma cor. Você poderia melhorar a sofisticação deste modelo, definindo entidades para
sistemas de segurança, dispositivos de rastreamento, ou audiovisual add-ons. Você poderia
pneus,
igualmentepara
recolhido melhorar
cada carro,
os detalhes
tais como os números de identificação de veículos (VINs) e números de
motor,
cada cliente,
ou paracomo endereço e dados bancários, mas este cenário hipotético serve para ilustrar
vários conceitos e, obviamente, não pode ser usado em um cenário de aplicativo de produção sem
melhorias.
mais

Chaves primárias
Cada entidade Figura 7-4 tem um atributo chave primária que identifica unicamente uma tupla ou
linha de dados
denotado por “# *” ao lado do nome do atributo. Cada valor da chave primária Car ID é único no
entidade. Várias linhas não podem compartilhar o mesmo valor da chave primária. Da mesma forma,
cores ID exclusiva
identifica cada linha na entidade cores, assim como ID do cliente e ID da transação nos clientes e
Transações entidades, respectivamente.

relações
As linhas na Figura 7-4 que ligam os vários entidades são conhecidos como relações . Notação pé do
expressa a cardinalidade das relações entre as entidades-um-para-um, um-para-muitos, muitos-
corvo
para-um e muitos-para-muitos. Notação pé do corvo ilustra explicitamente a entidade com a muitos
da relação com vários “pés”, enquanto a entidade no um lado tem um pé. Atributos em um
lados
um-para-um são idênticos, enquanto muitos-para-muitos relacionamentos indicam que várias tuplas
na entidade A têm os mesmos valores de atributos como muitos tuplas em entidade B. Ambos um-
para-umrelacionamentos
muitos e muitos-para- não são comuns e, às vezes apontam para falhas no modelo relacional. Um
muitos e relacionamentos many-to-one ocorrem com freqüência na modelagem de entidades
para-
relacionais.
atributos emEles
duasestão atrasados
entidades em um mestre-detalhe relação. Do ponto de vista da relação
entre as entidades carros e de cores (a ordem é significativa), por exemplo, muitos registros nos
entidade será um Color. Muitos carros poderia ter o mesmo atributo ID única cor, indicando que eles
carros
da mesma cor. A entidade Cores é o mestre ou lookup entidade, enquanto a entidade Cars é o detalhe
são
entidade nesta relação. Do ponto de vista da relação entre Cores e Cars, um
A cor pode ser associado com muitos carros. Então, é apenas uma questão de perspectiva se um
é um-para-muitos ou muitos-para-um; tudo depende de qual direção da relação que você considerar.
relacionamento
As outras relações indicados por pés de galinha mostram que um único carro pode ser comprado e
vendido
várias vezes, o que é a razão para a relação de um-para-muitos e entre os carros
Transações entidades e que um cliente pode realizar muitas transações (tais como compra e venda
muitos carros).

Integridade Referencial e chaves estrangeiras


Estas relações introduzir o conceito de integridade referencial, que garante a consistência dos dados
eintegridade, garantindo que um atributo (por exemplo, um atributo) pertencente à entidade no um
a relação deve ser único, enquanto o atributo (digamos atribuem B) sobre a entidade sobre a muitos
lado
deve ter um valor que está no conjunto de valores exclusivos descritos por atributo A. Atributo B é
lados
chamado
chave de
estrangeira, uma vez que tem uma dependência referencial em atributo A. considerar as cores-
relacionamento com base no atributo cor ID. integridade referencial garante que o atributo de cor ID
Cars
cada tupla na entidade Carros deve ter um valor que é idêntico a exatamente uma instância da ID a
em
atributo na entidade Cores. Esta garantia é central para a modelagem relacional desde o juntar do
cores
Carros e de cores entidades sobre o atributo de cor ID permite que as cores. Cor (esta é a notação de
ponto ) para ser combinado com uma tupla relacionadas na entidade Cars. O atributo cor ID na
atributo
éentidade
a chaveCars
estrangeira que está relacionada com a chave única, que é o atributo de cor ID na entidade
onde também acontece a ser a chave primária. É comum que as chaves estrangeiras em uma entidade
Cores,
são baseados
chaves em em uma entidade relacionada, mas isso não é a regra.
primárias
DICA As chaves estrangeiras em uma entidade são baseados em chaves únicas em uma entidade
relacionada,
não tem que mas
ser aessas
chavechaves
primária;
únicas
elesfazer
só têm de ser único.

O modelo lógico na Figura 7-4 seria tipicamente evoluir para um modelo relacional com mais
digitando
dados detalhes e chaves primárias e externas mais claros, como se mostra na Figura 7-5 .

Figura 7-5 Modelo relacional da concessionária de carros

O modelo relacional pode ser projetado em um modelo físico onde tabelas reais e outros
construções de banco de dados (discutidas mais adiante neste capítulo) são criados. Os dados da
amostra empara
transferido Figura
o modelo
7-3 físico construído a partir do modelo relacional descrito anteriormente
produziria

quatro conjuntos de dados, como na Figura 7-6 .


Figura 7-6 Os dados de amostra, usando o modelo relacional carro concessionário

As duas primeiras linhas de dados no conjunto de dados Transações pode ser interpretado da
seguinte forma:
• A transação com TX ID 100 descreve a compra de um carro com ID Car 1 por Sid
concessionária de um cliente com o ID do cliente 2 por US $ 10.000 em 1º de junho de 2013.
Você
ID doolhar
cliente
para
2 e cima
ver que era uma venda de Coda, um vendedor privado com SSN 12345. É
olhar
ID Carpara cima
1 e determinar que era um 2001-A160 Mercedes com ID Cor 1, o que você mais
resolver ser prata.
• A transação com TX ID 101 descreve a venda de ID Car 1 a ID do cliente 4, que você
resolver ser um negociante chamado Wags de Wags Auto com SSN 12347, por R $ 12.000,
em2013.
1, agosto

Com base nas descrições anteriores oferecidos em um design única entidade, nada foi perdido
organizar
por os dados de exemplo em todo o projeto de quatro entidade. No entanto, muito já foi
adquirida. Não
duplicação de dados.
há Há uma clareza e elegância que irá facilitar a facilidade de manutenção desses
dados

carros como novos são comprados e vendidos e novos clientes transaccionar com concessionária de
Sid.
Linhas e Tabelas
Os modelos de paradigma relacional dados como tabelas bidimensionais. Uma tabela consiste de um
númeroconsistindo
linhas, de cada uma de um conjunto de colunas. Dentro de uma tabela, todas as linhas têm a
mesma estrutura
embora seja possível
de coluna,
que, em algumas linhas algumas colunas pode não ter nada neles. Um exemplo
de umseria uma lista dos próprios funcionários, cada funcionário que está sendo representado por
mesa
uma linha.
pode ser umasnúmero
colunasde funcionário, um nome e um código para o departamento em que o
empregadofuncionários
Quaisquer trabalha. não atualmente atribuídas a um departamento teria que coluna em branco.
outra mesarepresentar os departamentos, com uma linha por departamento e com colunas para o
poderiam
departamento
código e nomededo departamento.
tabelas relacionais obedecer a certas regras que limitam e definem os dados. Ao nível da coluna,
cada coluna deve ser de um certo tipo de dados, tais como numérico, data e hora, ou personagem. O
personagem
tipo de dados é o mais geral, na medida em que pode aceitar qualquer tipo de dados. No nível de
linha,ter
deve geralmente
alguma característica
cada linha de identificação única. Este pode ser o valor de uma coluna, tal como
número do empregado e número do departamento nos exemplos anteriores, a qual não pode ser
o
repetido
linhas diferentes.
em Também pode haver regras que definem as ligações entre as tabelas, como uma
regra que todos
empregado deveosser atribuído um código de departamento que pode ser combinado a uma linha na
tabela de7-1
Tabelas departamentos.
através 7-4 são exemplos das definições de dados tabulados (um subconjunto de dados e
a partir do esquema de exemplo conhecido como SCOTT fornecida pela Oracle).
estruturas
Olhando para o layout das tabelas DEPT e EMP em Tabelas 7-1 e 7-2 , o bidimensional
estrutura é clara. Cada linha é de comprimento fixo, cada coluna é de comprimento fixo (preenchido
com espaços
quando necessário), e as linhas são delimitados por uma nova linha. Quadro 7-3 mostra as linhas de
DEPT
tabela armazenada em ordem DEPTNO, mas esta é uma questão de oportunidade, não projetar:
impor
tabelasqualquer ordenação
relacionais não particular sobre suas linhas. A Tabela 7-4 demonstra que departamento
empregado,
número 10 teme douma
departamento de número 40 não tem nenhum. Alterações de dados são geralmente
muito eficiente
modelo relacional.
comNovos
o funcionários podem ser anexado para a tabela de empregados, ou eles
podem
de ser movidos para outro simplesmente alterando o valor DEPTNO em sua linha.
um departamento

Tabela 7-1 O Quadro DEPT

Tabela 7-2 O Quadro EMP

Tabela 7-3 de linha de dados a partir da tabela DEPT

Tabela 7-4 de linha de dados a partir da tabela EMP

Considere-se uma estrutura alternativa, onde os dados são armazenados de acordo com o
O modelo
paradigmahierárquico
hierárquico.
foi desenvolvido antes do modelo relacional, por razões tecnológicas. No
primórdios da computação, dispositivos de armazenamento não tinha a capacidade para manter os
muitos
que eramarquivos
necessárias
separados
para as muitas tabelas relacionais. Observe que esse problema é evitado em
Oracle
banco de dados abstraindo o armazenamento físico (arquivos) do armazenamento lógico (tabelas);
não há direto
conexão entre mesas e arquivos e certamente não um mapeamento um-para-um. Com efeito, muitas
tabelas
ser armazenados
pode em alguns arquivos.
A hierárquicos lojas estrutura todos os dados relacionados em uma unidade. Por exemplo, o
departamento
recorde para incluiria
um todos os funcionários desse departamento. O paradigma hierárquico pode ser
rápido e muito eficiente do espaço. Um acesso de arquivo pode ser tudo o que é necessário para
muito
recuperar
para todosuma
satisfazer os dados necessários
consulta. Os funcionários e departamentos listados anteriormente podem ser
armazenadas
seguinte maneira:
hierarquicamente como
Neste exemplo de configurao, as linhas e colunas são de comprimento variável. As colunas são
delimitadas com um
vírgulas e linhas são delimitados por uma nova linha. recuperação de dados é normalmente muito
eficiente
pode se a consulta
navegar pela hierarquia. Se você sabe departamento de um empregado, você pode encontrar o
empregado
Se não o fizer,
rapidamente.
a recuperação pode ser lenta. Alterações de dados pode ser um problema se a
mudança necessita
movimento. Por exemplo, para mover empregado 7566, JONES da pesquisa para a VENDAS faria
envolver um esforço considerável por parte do banco de dados porque a mudança tem de ser
implementado
remoção de uma como
linhaume uma inserção para outro. Note-se que, neste exemplo, embora seja possível
tem um departamento sem empregados (o Departamento de Operações), é absolutamente impossível
tem um funcionário sem um departamento. Há nenhum lugar para colocá-la. Isto é excelente se
é uma regra de negócio afirmando que todos os funcionários devem estar em um departamento, mas
houver
não tão bom se isso não é o
caso.
O paradigma relacional é altamente eficiente em muitos aspectos, para muitos tipos de dados,
mas nãopara
apropriada é todas as aplicações. Como regra geral, uma análise relacional deve ser a primeira
tirada quando a modelagem de um sistema. Apenas se provar inadequada você deve recorrer a
abordagem
estruturas. Aplicações onde o modelo relacional tem se mostrado altamente eficaz incluem
nonrelational
praticamente
sistemas OLTP todos
e DSS. O paradigma relacional pode ser exigente em seus requisitos de hardware e
na habilidade necessária para desenvolver aplicações em torno dele, mas se os dados se encaixa, ele
provou ser
modelo versátil.
o maisNão pode ser, por exemplo, os problemas causados pela necessidade de manter os
manter as ligações entre as tabelas e os requisitos de espaço de manter várias cópias do
índices
dados indexados nos índices de si mesmos e nas tabelas em que as colunas residem. Não obstante,
projeto relacional é, na maioria das circunstâncias, o modelo ideal.
Um número de editores de software têm produzido sistemas de gerenciamento de banco de dados
que estejam
diferentes graus em conformidade
de precisão) para o(com
paradigma relacional; Oracle é único. IBM foi talvez o
primeira empresa a comprometer grandes recursos para isso, mas seu produto (que mais tarde
evoluiu
Não portado
para DB2)
para plataformas
foi não-IBM por muitos anos. Microsoft SQL Server é um outro banco de
dados
que temrelacional
sido limitado pelas plataformas em que é executado. bancos de dados Oracle, por outro
lado, tem sempre
foi portado para cada grande plataforma a partir da primeira versão. Pode ser isso que deu a Oracle a
vantagem
o sistema deemgerenciamento de banco de dados relacional (RDBMS) de mercado.
Uma nota sobre terminologia: Confusão pode surgir quando se discute bancos de dados
acostumado
relacionaisa trabalhar
com as pessoas
com os produtos da Microsoft. SQL é uma linguagem, e SQL Server é um
banco de dados,
Microsoft mundo, maso termo
no SQL é usado frequentemente para se referir a qualquer um.

Criar os esquemas de demonstração


Ao longo deste livro, há exemplos de código SQL. Para a maior parte, os exemplos usam tabelas em
dois esquemas de demonstração fornecidos pelo Oracle: o esquema HR, que são dados exemplo que
uma simples aplicação de recursos humanos, eo esquema OE, que simula uma ordem mais
simula
aplicação de entrada.
complicada
Estes esquemas pode ser criado quando o banco de dados é criado; é uma opção apresentada pela
Assistente de Configuração de banco de dados (DBCA). Se eles não existem, eles podem ser criados
mais tarde,
alguns scripts
executando
que existem no banco de dados Oracle Home.

DICA Um esquema de demonstração anterior era SCOTT (tigre senha). Este esquema é mais
simples do que
RH ou OE. Muitas pessoas com vasta experiência com a Oracle ainda preferem usar isso. A criação
script ainda é fornecido; é utlsampl.sql.

Usuários e Esquemas
No Oracle linguagem, uma base de dados do usuário é uma pessoa que pode fazer logon no banco
de dados.
todos os objetos
Um banco
no banco
de dados
de dados
esquema
de propriedade
é de um usuário. Os dois termos muitas vezes
porque
podem sernãousados
há umaindistintamente
relação de um-para-um entre os utilizadores e esquemas. Note-se que enquanto
verdade,
há, em um comando CREATE SCHEMA, isso não realmente criar um esquema é apenas uma
maneira
de rápida em um esquema. Um esquema é criado inicialmente vazio quando um usuário é
criar objetos
criado com
CRIAR USUÁRIO
o comando.
Os esquemas são utilizados para o armazenamento de objectos. Estes dados objetos podem ser
objetos
tais como tabelas
procedimentos
ou programático
PL / SQL armazenado. logons de usuário são usados para conectar ao
banco deesses
acessar dados objetos.
e Por padrão, os usuários têm acesso aos objetos em seu próprio esquema e que
para nada
outros, mas a maioria das aplicações mudar isso. Tipicamente, um esquema pode ser utilizado para o
armazenamento
acessados de dados
por outros que éque têm permissão para usar os objetos, mesmo que não fazer
usuários
possuí-los. Na prática, alguns usuários nunca vai ter objetos no seu próprio esquema ou permissão
para criar
eles. Eles terão direitos de acesso (que será estritamente controlada) apenas a objetos em outra
esquema. Esses objetos serão utilizados por todos os usuários que executam o aplicativo cujos dados
de esquema
lojas. Por outro lado, os usuários que possuem os esquemas de armazenamento de dados nunca
podem, dede
propósito fato,
seusfazer
esquemas
logon; éoconter
único dados utilizados por outros.
É impossível para um objeto de dados para existir independentemente de um esquema. Em
deveoutras
ter umpalavras,
dono. Otodasproprietário
as tabelas
é o usuário em cujo esquema reside a tabela. O identificador
por uma mesa (ou qualquer outro objecto de esquema) é o nome de usuário, seguido pelo nome do
exclusivo
objecto.
não é possível
Seguepara
que duas tabelas com o mesmo nome existir no mesmo esquema, mas que duas
tabelas
com o mesmo nome (embora possivelmente diferentes estruturas ou conteúdos) podem existir em
diferentes
um objeto esquemas.
não existe no E seseu próprio esquema, para acessá-lo o usuário deve qualificar seu nome com
o nome
do esquema em que ele reside. Por exemplo, HR.EMPLOYEES é a tabela chamada
em esquema de usuário de RH. A não ser sinônimos estão disponíveis apenas um usuário conectado
FUNCIONÁRIOS
como
mesa, HR poderia chegar
referindo-se ao sem um qualificador de nome do esquema. Um sinónimo é uma
empregados
construção
torna um objeto
que acessível a outros usuários sem a necessidade de seu nome do esquema como
prefixo.
O HR e OE Esquemas
O esquema HR demonstração consiste em sete mesas, ligados pela chave key-to-estrangeira primária
relacionamentos. A Figura 7-7 mostra as relações entre as tabelas como uma entidade-
relacionamento
diagrama.
Figura 7-7 O AR entidade-relacionamento diagrama

Dois dos relacionamentos mostrados na Figura 7-7 pode não ser imediatamente compreensíveis.
Primeiro,
existe uma relação muitos-para-um dos empregados aos empregados. Isto é o que é conhecido como
auto-referência de chave estrangeira . Isto significa que muitos funcionários pode ser conectado a
um
eumé baseado
funcionário,
no fato de que muitos funcionários pode ter um gerente, mas o gerente é também um
empregado. A relação é implementado pelo manager_id coluna sendo uma chave estrangeira para
employee_id, que é a chave primária da tabela.
A segunda relação que pode exigir explicação é entre departamentos e
EMPREGADOS, que é bidirecional. A relação de um departamento-to-many-funcionários
afirma que pode haver muitos membros da equipe em cada departamento, com base nos
simplesmente
FUNCIONÁRIOS
sendo uma chave estrangeira
dept_id para a coluna dept_id chave primária SERVIÇOS coluna. A um
to-many-departamentos relação mostra que um empregado poderia ser o gerente de várias
funcionário-
departamentos e é implementado pela coluna manager_id nos departamentos de ser uma chave
para a coluna employee_id chave primária nos empregados.
estrangeira
Quadro 7-5 mostra as colunas de cada tabela no esquema HR, usando a notação descrito no
seção anterior “Normalização de dados” para indicar as chaves primárias (#), chaves estrangeiras (\),
e se
columns are optional (o) or mandatory (*).
Tabela 7-5 Os tabelas e colunas no esquema HR

As tabelas são as seguintes:

• REGIÕES tem linhas para as principais áreas geográficas.


• países tem linhas para cada país, que são opcionalmente atribuídos a uma região.
• Locais inclui endereços individuais, que são opcionalmente atribuídos a um país.
• DEPARTAMENTOS tem uma linha para cada departamento, opcionalmente atribuído a um
local e
opcionalmente com um gerente (que deve existir como um empregado).
• Os funcionários tem uma linha para cada funcionário, cada um dos quais deve ser atribuído a
umopcionalmente
trabalho e a um departamento e um gerente. Os gestores devem ser eles próprios
funcionários.
• lista trabalhos de todos os postos de trabalho possíveis na organização. É possível que muitos
empregados para ter a
mesmo trabalho.
• listas JOB_HISTORY trabalhos anteriores realizadas pelos funcionários, identificado
exclusivamente
e Data_inicial;por
nãoemployee_id
é possível para um empregado para manter dois empregos ao mesmo
tempo. cada trabalho

registro histórico irá se referir a um funcionário, que terá tido um trabalho naquela época e
pode
ter sido um membro de um departamento.
Este esquema HR é utilizado para a maioria dos exercícios e muitos dos exemplos embutido no
capítulos deste livro e não precisam estar disponíveis.

CUIDADO Há linhas em funcionários que não têm uma linha pai correspondente na
Departamentos. Isto poderia ser por design, mas poderia muito bem ser um erro de design que é
porque a coluna DEPARTMENT_ID em funcionários não é obrigatória. Não são semelhantes
possível
possíveis erros na hierarquia regiões de países de localidades, o que realmente não faz
um monte de sentido.

O esquema OE é consideravelmente mais complexo do que o esquema HR. As estruturas de


maistabela
complicado;
são muito
eles incluem colunas definidas como tabelas aninhadas, tipos de dados definidos
pelo usuário,
Extensible Markup
e Language (XML) tipos de dados. Os objectos referidos são descritos como eles
são
usava.

Demonstração criação de esquema


Se o banco de dados que você está usando foi criado especificamente para estudar para o exame de
SQL, o de demonstração deveria ter sido já criado. Eles são uma opção apresentada pela
esquemas
Banco de dados Assistente de Configuração quando se cria um banco de dados. Após a criação do
bancoter
pode deque
dados, os esquemas e suas senhas definido; por padrão, as contas estão bloqueadas, o que
ser desbloqueado
você não pode fazer logon para eles. Estes comandos, que poderiam ser emitidos a partir de SQL *
significa
Plus ou SQLserá possível fazer logon como usuários HR e OE usando o hr senhas e oe:
Developer,

Estes comandos do utilizador alter pode ser emitido apenas quando ligado à base de dados como um
utilizador comde banco de dados (DBA) privilégios, tais como o sistema do usuário.
administrador
Se os esquemas não foram criados no momento da criação do banco de dados, eles podem ser
scripts
criados
instalados
mais tarde,
no Oracle
executando
Home do banco de dados. Se esses scripts não estão presentes, você
pode
baixar e instalar o software de banco de dados Exemplos Oracle da Oracle. Esses scripts precisará
ser executado a partir do SQL * Plus ou SQL Developer como um usuário com privilégios
SYSDBA.
para certos Ovalores
script como
solicitará
ele é executado. Por exemplo, no Linux, primeiro SQL lançamento * Plus a
partir de um sistema operacional
pronto.

Existem várias opções para esta conexão, mas a sintaxe anterior normalmente irá funcionar se o
banco de dados está sendo executado na mesma máquina em que você está executando o SQL *
Plus.
do SQL>
Em seguida,
prompt. chamar o script

O ? personagem é uma variável que SQL * Plus vai expandir-se para o caminho para o Início do
OracleO script irá pedir a senha do HR, tabelas padrão e tabela temporário;
diretório.
a senha SYS; e um destino para um arquivo de log do script que está sendo executado. Os valores
típicos para
espaço de tabela
o padrão e tabela temporário são usuários e TEMP, mas estes terão de ter sido
já criado. Após a conclusão, você será conectado ao banco de dados como o novo usuário HR. Para
verificar isso, executar estas instruções:

Você vai ver que você está conectado como HR; em seguida, execute o seguinte:

Você verá uma lista dos sete tabelas no esquema HR.


Para criar o esquema OE, siga o mesmo processo, nomeando o script.
O processo para criar os esquemas no Windows é idêntico, exceto para o caminho delimiters-
onde a maioria dos sistemas operacionais utilizam barras, o Windows usa barras invertidas. Assim, o
caminho
script para o de RH do Windows torna-se o seguinte:
de criação

Note que a execução desses scripts de criação de esquema vai soltar os esquemas primeiro se
Soltando
eles jáum
existem.
esquema significa remover todos os itens nele e, em seguida, remover o usuário. Este
não deve ser
problema, a menos
um que o esquema foi usado para algum trabalho de desenvolvimento que precisa ser
mantido.

CUIDADO Os esquemas de demonstração não deveria existir em bancos de dados de produção.


Não é bom,
razões de segurança,
por para ter esquemas desnecessários em um banco de dados que têm nomes bem
capacidades e (possivelmente) senhas.
conhecidos,

Executar uma instrução SELECT Básica


As capacidades práticas da instrução SELECT são realizados na sua execução. A chave para a
qualquer declaração linguagem de consulta é uma compreensão completa de sua sintaxe e as regras
execução
que regem
uso. Você vai
a sua
aprender mais sobre esse assunto em primeiro lugar, em seguida, sobre a execução de
uma consulta
cerca de expressões
básica,ee,operadores,
finalmente,que aumentam exponencialmente a utilidade dos dados
armazenados em relacional
mesas. Em seguida, o conceito de um valor nulo é desmistificado, como suas armadilhas estão
expostos.
coberta nas
Estes
quatro
tópicos
secções
são seguintes:

• A sintaxe da instrução SELECT primitiva

• As regras destinam a ser seguido


• expressões SQL e operadores
• NULL, significando nada

Sintaxe da instrução SELECT Primitive


Na sua forma mais primitiva, a instrução SELECT suporta a projeção de colunas e a criação
da aritmética, caráter e expressões de data. Além disso, facilita a eliminação de valores duplicados
a partir dos resultados estabelecidos. A sintaxe básica instrução SELECT é a seguinte:

As palavras-chave especiais ou palavras reservadas da sintaxe instrução SELECT aparecem em


maiúsculas.
Ao usar os comandos, no entanto, o caso das palavras reservadas em sua declaração de consulta não
importam. As palavras reservadas não podem ser usados como nomes de coluna ou outros nomes de
objetos de banco
DISTINCT, e FROM
de dados.
são três
SELECT,
palavras-chave. Uma instrução SELECT sempre contém dois ou mais
cláusulas. As duas cláusulas obrigatórias são a cláusula SELECT ea cláusula FROM. O símbolo pipe
(|) É usado para denotar OR. Assim, você pode ler a primeira forma da instrução SELECT anterior
seguinte maneira:
como

Neste formato, o asterisco (*) é utilizado para designar todas as colunas. SELECT * é uma forma
sucinta
pedindo Oracle para retornar todas as colunas possíveis. Ele é usado como um atalho, símbolo de
economia SELECIONAR
digitando de tempo, em vezcolumn1,
de column2, column3, column4, ..., columnx , para selecionar todas
as cláusula
A colunas. FROM especifica qual tabela de consulta para buscar os colunas solicitadas no SELECT
cláusula.
Você pode emitir o seguinte comando SQL para recuperar todas as colunas e todas as linhas da
mesa REGIÕES no esquema HR:
Quando este comando é executado, ele retorna todas as linhas de dados e todas as colunas
pertencentes
mesa. O uso do
a esta
asterisco em uma instrução SELECT é por vezes referido como um cego consulta
porque
as colunas exatas de ser obtida não são especificados.
A segunda forma da instrução SELECT básica tem a mesma cláusula FROM como a primeira
forma,
cláusula mas é diferente.
SELECT

Esta cláusula SELECT pode ser simplificada em dois formatos. Aqui está a primeira:

Aqui está a segunda:

Um nome alternativo é um nome alternativo para fazer referência a uma coluna ou expressão.
paraAliases
a exibição
são normalmente
de saída de uma
utilizados
maneira user-friendly. Eles também servem como abreviação
quando se
colunas ourefere a
expressões para reduzir a digitação. Aliases será discutido em detalhe mais tarde neste
capítulo.explicitamente
listando De somente as colunas relevantes na cláusula SELECT, você, na verdade,
projecto a exata
subconjunto dos resultados que você deseja recuperar. A seguinte declaração retornará apenas o
coluna REGION_NAME da tabela de REGIÕES:

Você pode ser solicitado para obter todos os cargos na organização que os funcionários têm
realizada. Para isso, você pode emitir o SELECT * comando do JOB_HISTORY. No entanto, em
historicamente
Adicionalmente, a construo * SELECT retorna o EMPLOYEE_ID, START_DATE, e END_DATE
colunas. Os resultados despojados conjunto contendo apenas as colunas JOB_ID e
pode ser obtido com a seguinte declaração:
DEPARTMENT_ID

Usando a palavra-chave DISTINCT permite linhas duplicadas para ser eliminado do conjunto de
inúmeras
resultados.
situações
Dentro
um único conjunto de linhas é necessária. É importante notar que o critério
empregada pelo servidor Oracle para determinar se uma linha é único ou distinto depende
o que é especificado após a palavra-chave DISTINCT na cláusula SELECT. Selecionando JOB_ID
inteiramente
Os valores da tabela JOB_HISTORY com a seguinte consulta retornará o trabalho distinto oito
distinta
tipos:

Uma característica importante da palavra-chave DISTINCT é a eliminação de valores duplicados


combinações
de de colunas.

Regras são destinadas a ser Seguido


SQL é uma linguagem bastante rigorosa em termos de regras de sintaxe, mas continua a ser simples
e flexíveluma
suportar o suficiente
variedadepara
de estilos de programação. Esta seção discute alguns dos governantes regras
básicas
instruções SQL.

Maiúsculas ou minúsculas
É uma questão de gosto pessoal sobre o caso em que instruções SQL são enviados para o banco de
Muitos desenvolvedores, incluindo os autores deste livro, prefiro escrever suas instruções SQL em
dados.
minúsculas. Há também um equívoco comum que o SQL palavras reservadas precisa ser
especificadoNovamente,
maiúsculas. em isso é com você. Aderindo a um formato consistente e padronizada é
aconselhada.
Há uma advertência sobre a sensibilidade caso. Ao interagir com valores literais, caso faz
importam. Considere a coluna JOB_ID da tabela JOB_HISTORY. Esta coluna contém linhas de
dados que acontecer para ser armazenado no banco de dados em letras maiúsculas, como em
SA_REP e ST_CLERK.
solicitando que o conjunto
Quando
de resultados ser restringido por uma coluna literal, o caso é crítica. O
servidor Oracle
trata o pedido para as linhas na tabela de JOB_HISTORY que contêm um valor de St_Clerk na
coluna JOB_ID diferentemente do pedido de linhas que têm um valor de ST_CLERK na JOB_ID
coluna.
Metadados sobre diferentes objetos de banco de dados são armazenados por padrão em
Se você
maiúsculas
consultar
no adicionário
tabela de de
dicionário
dados. de banco de dados para retornar uma lista de tabelas de
propriedade
que os nomesdodeesquema
tabela devolvidos
HR, é provável
serão armazenados em maiúsculas. Isso não significa que uma
tabela não
criado compode
um nome
ser em minúsculas; pode ser. É apenas mais comum e é o comportamento padrão
do
servidor Oracle para criar e armazenar tabelas, colunas e outros metadados de objeto de banco de
dados
o dicionário
em letras
de dados.
maiúsculas em

EXAME TIP Você pode enviar instruções SQL para o banco de dados em qualquer caso. Você deve
prestar cuidadosa
atenção ao caso quando interagindo com caracteres dados literais e aliases. Solicitando uma coluna
JOB_ID ou job_id retorna a mesma coluna, mas pedindo linhas onde o valor JOB_ID é
chamada
PRESIDENTE é diferente de pedir para as linhas onde o valor é presidente.

Exterminadores Declaração
Ponto e vírgula são geralmente usados como terminadores de instrução SQL. SQL * Plus requer
sempre umae,declaração
terminador, geralmente, um ponto e vírgula é usado. Uma única instrução SQL, ou mesmo grupos
de associadosmuitas vezes são salvos como arquivos de script para uso futuro. instruções individuais
declarações,
em scripts SQL
normalmente terminada
são por uma quebra de linha (ou retorno do carro) e uma barra diagonal na
próxima linha, em vez
de um ponto e vírgula. Você pode criar uma instrução SELECT, terminá-lo com uma quebra de
linha, incluem
cortar para executar
um atacante
a instrução, e guardá-lo em um arquivo script. O arquivo de script pode então
ser chamado
dentro do SQL de* Plus. Note-se que SQL Developer não requer um terminador de instrução, se
apenas um único
declaração está presente, mas não vai se opor se este for usado. É uma boa prática para sempre
terminar o SQL
instruções seu com um ponto e vírgula. Vários exemplos de SQL * Plus declarações seguir:

O primeiro exemplo demonstra duas regras importantes. Primeiro, a declaração é terminada por
ponto
ume vírgula. Em segundo lugar, a declaração inteira é escrita em uma linha. É totalmente
aceitável para
declaração sejaum SQL
para ser escrito em uma linha ou para abranger várias linhas, desde que não seja no
declaração abranger várias linhas. A segunda amostra de código demonstra uma declaração que se
estendeque
linhas poré três
encerrada por uma nova linha e executados com uma barra.

Recuo, legibilidade e Boas Práticas


Considere a seguinte consulta:

Este exemplo destaca os benefícios de recuo de sua instrução SQL para melhorar a legibilidade da
seu código. O servidor Oracle não opor-se toda a instrução está escrito em uma linha sem
recuo. No entanto, é uma boa prática para separar diferentes cláusulas da instrução SELECT para
diferentes linhas. Quando uma expressão em uma cláusula é particularmente complexa, que muitas
vezesseparar
para melhora esse
a legibilidade
termo da declaração em uma nova linha. Ao desenvolver SQL para atender a sua
precisa, o processo muitas vezes é iterativo. O intérprete SQL é muito mais útil durante o
comunicação
desenvolvimento
expressões complexas
se são isolados em linhas separadas já que os erros são geralmente jogado no
formato na
“ERRO de linha X:” Isso faz com que o processo de depuração muito mais simples.
Exercício 7-1: responder à sua primeira Perguntas com SQL Neste exercício passo-a-passo, você
faz uma usando SQL * Plus como o usuário HR responder a duas perguntas usando a instrução
conexão
SELECT.
Pergunta 1: Quantos departamentos única ter funcionários trabalhando atualmente em-los?

1. Inicie o SQL * Plus e ligar para o esquema HR.


2. Você pode inicialmente ser tentados a encontrar a resposta na tabela DEPARTMENTS. Uma
cuidadosa
exame revela que a questão pede informações sobre funcionários. Essa informação
está contido na tabela de PESSOAL.
3. A palavra única deve guiá-lo para usar a palavra-chave DISTINCT.
4. passos Combinando 2 e 3, você pode construir a seguinte instrução SQL:

5. Esta consulta retorna 12 linhas. Note-se que a terceira fila está vazia. Este é um valor nulo na
coluna DEPARTMENT_ID.
6. A resposta à primeira pergunta é então a seguinte: Onze departamentos únicos têm
empregados que trabalham neles, mas pelo menos um funcionário não tenha sido atribuído a
um departamento.
Pergunta 2: Quantos países existem na região da Europa?

1. Esta questão compreende duas partes. Considere a tabela de regiões, que contém quatro
regiões, cada uma delas identificada de forma única por um valor REGION_ID, e a tabela
de países,
tem uma coluna
o que REGION_ID indicando que a região um país pertence.
2. A primeira consulta deve identificar o valor REGION_ID da região da Europa. Isto é
realizado pela instrução SQL, o que mostra que a região da Europa tem uma REGION_ID
valor de 1.

3. Para identificar quais países têm 1 como seu valor REGION_ID, você pode executar o
seguinte consulta SQL:

4. contando manualmente as linhas de campo com um REGION_ID de 1 voltou mostra que há


oito países da região da Europa, tanto quanto o modelo de dados HR está em causa.

SQL Expressões e Operadores


A forma geral da instrução SELECT introduziu a noção de que as colunas e expressões podem
ser projetada. Uma expressão geralmente consiste de uma operação a ser realizada em um ou mais
valores ou expressões. Os operadores que podem actuar sobre os valores de modo a formar uma
coluna
expressão
Tipo de dados
dependerá
subjacente.
da Eles são os operadores aritméticos quatro cardeais (adição, subtração,
multiplicação e divisão) para colunas numéricas, o operador de concatenação para o personagem ou
colunas, e os operadores de adição e subtração para data e timestamp colunas. Como em comum
string
aritmética, existe uma ordem predefinida de avaliação (precedência operador) quando mais do que
operador ocorre numa expressão. Parênteses têm a mais alta prioridade. divisão e
um
operações de multiplicação estão próximos na hierarquia e são avaliados antes da adição e subtração,
que têm menor precedência.
Os operadores com o mesmo nível de precedência são avaliados da esquerda para a direita.
por Parênteses
conseguinte,
podem
ser utilizada para impor a precedência operador não padrão. Usando suportes
generosamente
construir expressões
quando
complexas é uma boa prática e é incentivada. Isso leva a código legível que é
menos propenso a erros. Expressões expor um grande número de possibilidades de manipulação de
dados úteis.
Operadores aritméticos
Considere a tabela JOB_HISTORY, que armazena a data de data de início e fim do mandato de um
empregado
um papel trabalho
em anterior. Pode ser útil para fins fiscais ou de pensão para calcular quanto tempo
um empregado
trabalhou nesse papel. Esta informação pode ser obtida usando uma expressão aritmética. De várias
elementos de ambos a instrução SQL e os resultados retornados da Figura 7-8 mandado mais
discussão.
Figura 7-8 expressão aritmético para calcular o número de dias de trabalho

A cláusula SELECT especifica cinco elementos. Os quatro primeiros são colunas regulares do
mesa JOB_HISTORY, enquanto o segundo fornece a informação da fonte necessário para calcular o
número de dias que um empregado enchidos numa posição particular. Considere o funcionário
número
nona linha
176denasaída. Esse funcionário começou como gerente de vendas em 1 de janeiro de 2007, e
terminou
emprego em 31 de dezembro de 2007. Portanto, este empregado trabalhou para exatamente um ano,
o que, consistia
2007, em de 365 dias.
O número de dias em que foi empregue pode ser calculada utilizando um empregado pelo quinto
elemento na cláusula SELECT, que é uma expressão. Esta expressão demonstra que a aritmética
realizado em colunas que contêm a informação data devolve valores numéricos que representam
uma determinada
número de dias.
Para impor a precedência do operador da operação de subtração, a subexpressão end_date-
start_date está entre colchetes redondas. Adicionando 1 faz com que o resultado inclusive do
primeiro dia.

DICA Como você pratica SQL em seu ambiente de banco de dados de teste, você pode encontrar
erros Oracle: “ORA-00923: DA palavra-chave não encontrado onde esperado” e “ORA-00942:
dois infame
tabelanão
vista ou existe.”Estes, muitas vezes indicam ortografia ou de pontuação erros, como delimitador em
falta
cita torno literais de caracteres.

Expressão e Coluna Aliasing


Figura 7-8 introduziu um novo conceito chamado aliasing coluna. Observe que a expressão tem um
significativas título denominado Dias Employed. Esta posição é um apelido. Um apelido é um nome
para uma coluna ou uma expressão. Se esta expressão não fazer uso de um alias, o título da coluna
alternativo
seria (END_DATE-START_DATE) +1, o que não é muito amigável. Aliases são especialmente
útil com expressões ou cálculos e pode ser implementado de várias maneiras. Há alguns
regras que regem o uso de aliases de coluna em instruções SELECT. O alias “Dias Empregado” em
Figura 7-8 foi especificado, deixando um espaço e introduzir o alias entre aspas duplas. Estes
aspas são necessárias por duas razões. Em primeiro lugar, este alias é composto por mais de uma
palavra.
Em segundo lugar, a preservação caso de um alias só é possível se o alias é dupla citado. Se um
apelido separados por espaço é especificado, um “ORA-00923: DA palavra-chave não encontrado
multiworded,
ondeéesperado”
erro retornado se não é o dobro citado. SQL oferece uma maneira mais formal de inserir aliases por
inserindo o AS palavra-chave entre a coluna ou expressão e o alias, como mostrado na primeira linha
de
esta consulta:

Operador caráter e concatenação de string


Os símbolos de tubulação dupla (||) representar o caractere concatenação operador. Este operador é
utilizado expressões
juntar-se para de caráter ou colunas em conjunto para criar uma expressão de caracteres maior.
Colunas
tabela podem
de umser ligados um ao outro ou para cadeias de caracteres correspondentes para criar uma
personagem resultante
expressão.
O operador de concatenação é flexível o suficiente para ser usado várias vezes e quase qualquer
expressão
lugar em
de um
caracteres. Considere a seguinte consulta:

Aqui, o personagem literal A é concatenado com o conteúdo da coluna REGION_NAME. este


nova cadeia de caracteres é ainda concatenado com o caractere literal região é no Planeta Terra , e
a expressão inteira é alias com o amigável indo Localização planetária .

Literais e a Tabela DUAL


Literais são comumente usados em expressões e referem-se a numérico, personagem ou data e
valores de tempo
encontrado em cláusulas SELECT que não são originárias de qualquer objeto de banco de dados.
caracteres
literais paraconcatenando
dados da coluna existente pode ser útil, mas que sobre literais de processamento que
nada têm
fazer comadados da coluna existente? Para garantir a consistência relacional, a Oracle oferece uma
solução inteligente
problema de usar o para
banco
o de dados para avaliar expressões que não têm nada a ver com nenhuma
tabela ouPara obter o banco de dados para avaliar uma expressão, uma instrução SELECT
colunas.
sintaticamente
seja submetido.legal
E se deve
você queria saber a soma de dois literais numéricos? A Oracle resolve o
de interação relacional com o banco de dados operando em expressões literais, fornecendo uma
problema
especial
single-remou, única tabela com colunas chamado DUAL.
Lembre-se que a tabela DUAL descrito anteriormente contém uma coluna chamada
TipoMANEQUIM
de dados de caracteres.
do Você pode executar a consulta SELECT * FROM DUAL, eo valor de
dados “X”como
devolvida é os conteúdos da coluna MANEQUIM. Testando expressões complexas durante o
desenvolvimento
consultando a tabela
pordupla é um método eficaz para avaliar se estas expressões estão corretas.
expressões literais podem ser consultados a partir de qualquer mesa, mas lembre-se que a expressão
processados para cada linha na tabela, ao consultar a tabela DUAL retorna apenas uma linha.
será
A primeira declaração retornará quatro linhas no conjunto de resultados desde há quatro linhas de
dados na mesa, enquanto o segundo retorna apenas uma linha.
REGIÕES

Duas aspas simples ou o Operador Citar Alternativa


As cadeias de caracteres literais concatenado até agora têm sido palavras singulares prefixado e
a expressões de coluna. Esses caracteres literais são especificados usando aspas simples. Aqui está
anexado
exemplo:
um

E sobre literais de caracteres que contêm aspas simples? Plurais representam um determinado
problema para o processamento literal personagem. Considere a seguinte declaração:

Executar essa instrução faz com que um erro do Oracle a ser gerado. Então, como são palavras
aspas
que
simples
contêmtratado? Existem essencialmente dois mecanismos disponíveis. O mais popular
destes é adicionar uma aspa simples adicional ao lado de cada ocorrência natural única citação
marcar na sequência de caracteres. A declaração a seguir demonstra como o erro anterior é evitado
substituindo o caráter literal 'Plural de com o literal 'Plural' de :

Usando duas aspas simples para lidar com cada ocorrência natural aspas simples em que um
tornar-se
personagem
confusopode
e propenso
literal a erros como o número de literais afetadas aumenta. A Oracle oferece
uma lidar
para maneira
comelegante
esse tipo de personagem literal na forma da citação operador alternativo (q). o
problema é que a Oracle escolheu o caractere de aspas simples como o símbolo especial com o qual
se encerram
ou envolva outros caracteres literais. Estes símbolos-encerrando personagem poderia ter sido outra
de aspas simples.
coisa
Tendo isso em mente, considere o operador apóstrofo alternativa (q). O operador q permite-lhe
escolher entre um conjunto de possíveis pares de símbolos de embrulho para literais de caracteres
como alternativas
símbolos de aspas para
simples.
o As opções são qualquer de byte único ou caractere de vários bytes ou os
quatroparênteses),
(entre suportes: {chaves}, [colchetes] ou <> colchetes. Usando o operador q, o

delimitador personagem pode efetivamente ser alterado a partir de uma aspa simples para qualquer
outro personagem,
mostrado aqui: como

A sintaxe do operador apóstrofo alternativa é a seguinte, onde delimitador pode ser qualquer
caractere
ou suporte:

Os primeiro e segundo exemplos mostram a utilização de ângulo e colchetes como delimitadores de


caracteres,
enquanto o terceiro exemplo demonstra como um maiúscula X tem sido usado como o caractere
símbolo delimitador através do operador apóstrofo alternativa. Note que o X personagem pode ser
especial
ele próprio
incluída na string-contanto que não é seguido por uma aspa.

NULL é nada
Nulo refere-se a uma ausência de dados. Uma fileira que contém um valor nulo não tem dados para
essa coluna. Null
formalmente é como um valor que não está disponível, não atribuído, desconhecido ou
definida
o tratamento
inaplicável.
resposta Oespecial queseção
os valores
não cumprimento
imprecisa. Esta nulos requerem
concentra-se quasecom
em interação certamente
dados dairá levar nulos
coluna a um erro
com ou,
o pior,
uma
declaração e seu impacto sobre expressões.
SELECT

Nem colunas nulos e anuláveis


Tabelas armazenar linhas de dados que são divididos em uma ou mais colunas. Estas colunas têm
nomesdee dados que lhes estão associados. Alguns deles são limitados por regras de banco de dados a
tipos
ser obrigatória
colunas. É obrigatório para alguns dados a serem armazenados nas colunas NOT NULL em cada
linha. Quando
colunas de uma tabela, no entanto, não são obrigados pelas restrições de banco de dados para
armazenar
estas colunas
dados
correr
para
o risco
uma linha,
de ser vazio.

CUIDADO Qualquer cálculo aritmético com um valor NULL sempre retorna NULL.

A Oracle oferece um mecanismo para interagir aritmeticamente com valores nulos utilizando o
funções
geraldiscutidas no Capítulo 8 . Divisão por um valor nulo resulta em nulo, ao contrário de divisão
por
o que
zero,
resulta em um erro. Quando um nulo é encontrado pelo operador de caracteres de
no entanto, ele é simplesmente ignorado. Os operadores de caracteres de concatenação ignorar nula,
concatenação,
enquanto acom
operações aritmética
valores nulos sempre resultam em nulo.

Chaves estrangeiras e colunas anuláveis


design do modelo de dados, por vezes, leva a situações problemáticas quando as tabelas são
relacionados
através de umaunsrelação
aos outros
de chave primária e externa, mas a coluna que a chave estrangeira baseia-se é
nulo.A tabela SERVIÇOS tem, como seu principal chave, a coluna DEPARTMENT_ID. o
funcionários tabela tem uma coluna DEPARTMENT_ID que é limitada por sua chave estrangeira
relação à coluna DEPARTMENT_ID na tabela SERVIÇOS. Isto significa que não
registo na tabela empregados é permitido ter na sua coluna DEPARTMENT_ID um valor que é
Não na tabela DEPARTMENTS. Esta integridade referencial constitui a base para a terceira forma
énormal
críticoepara a integridade global do banco de dados.
Mas o que acontece com valores nulos? Pode a coluna DEPARTMENT_ID na tabela
conter
DEPARTAMENTOS
nulos? A resposta é não . A Oracle insiste em que qualquer coluna que é uma chave primária
ser implicitamente
constrangido a ser obrigatória. Mas o que dizer de restrições implícitas em colunas de chave
estrangeira?
dilema para Oracle
Isto é um
desde a fim de permanecer flexível e atender ao público mais vasto, não pode
insistir
que as colunas relacionadas através de restrições de integridade referencial deve ser obrigatória.
Além disso,
situações exigem
nem todos
essa funcionalidade.
A coluna DEPARTMENT_ID na tabela empregados é efectivamente nula. Portanto, o
existe risco de que há registos com valores nulos DEPARTMENT_ID presentes nesta tabela. De
há tais registros na tabela EMPREGADOS. O modelo de dados HR permite que os funcionários,
fato,
corretamente
não, pertencerou a nenhum departamento. Quando relacional realização de junções entre tabelas, é
inteiramente
possível perder ou excluir determinados registros que contêm valores nulos na coluna de junção.
Capítulo 10
maneiras de discute
lidar com esse desafio.

Exercício 7-2: construir expressões Neste exercício, você vai construir uma consulta usando
e aliases para exibir os resultados do esquema HR de uma forma mais user-friendly.
expressões

1. consulta a tabela de HR.JOBS e retornar uma única expressão da forma A ID de trabalho


para
<job_title
o de> trabalho é : <job_id>. Tome nota que a job_title deve ter um apóstrofo e um
s adicionados a ele para ler mais naturalmente. Uma amostra deste saída para o presidente
é a seguinte: O ID de trabalho para o trabalho do presidente é: AD_PRES . Alias esta
organização
expressão: descrição do trabalho usando a palavra-chave AS. Existem várias soluções para
coluna
problema. A abordagem adoptada aqui é para lidar com a aspa que ocorre naturalmente
este
com uma cotação individual adicional. Você poderia fazer uso do operador apóstrofo
alternativaa para
delimitar citação que ocorre naturalmente com outro personagem.
2. Um único expressão alias como Descrição de trabalho é necessária; você pode construí-lo
porconcatenando o literal 'O ID de tarefa do' à JOB_TITLE coluna. Essa seqüência é seguida
concatenado com o literal '' 's trabalho é:', o que é ainda mais concatenadas para a coluna
JOB_ID.
Uma aspa simples adicional é adicionado para produzir a instrução SELECT que se segue:

Limitar as linhas recuperadas por uma consulta


Um dos princípios basilares da teoria relacional é seleção. A seleção é atualizado usando o
Cláusula WHERE da instrução SELECT, por vezes referido como o predicado . condições que

restringir o conjunto de dados retornado assumir muitas formas e operar em colunas, bem como
expressões.
linhas Somenteessas condições são devolvidos. Condições restringir linhas usando comparação
que cumprem
operadores em conjunto com colunas e os valores literal. operadores booleanos fornecer um
mecanismovárias
especificar para condições para restringir as linhas retornadas. Booleano, condicional,
concatenação,
operadores aritméticos
e são discutidas para estabelecer a sua ordem de precedência quando eles são
encontrados
em uma instrução SELECT.

A cláusula WHERE
A cláusula WHERE se estende a instrução SELECT, fornecendo a capacidade de restringir linhas
com base em uma ou mais condições. Consultando uma tabela com apenas a cláusulas SELECT e
retornadas
FROM
em cadaresultados
linha de dados armazenados na tabela que estão sendo devolvidos. Usando a palavra-chave
DISTINCT,
Os valores sãoduplicar
excluídas, e as linhas resultantes são restritas a um certo grau. E se muito específico
informação é requerida a partir de uma tabela, por exemplo, somente os dados em que uma coluna
contémComo
valor? um específico
você recuperar os países que pertencem à região da Europa dos países
mesa? O que sobre como recuperar apenas aqueles empregados que trabalham como representantes
de vendas?são
perguntas Estes
respondidas usando a cláusula WHERE para especificar exatamente quais linhas
devem
O formato
ser devolvidos.
da instrução SQL SELECT que inclui a cláusula WHERE é a seguinte:

A cláusula WHERE sempre segue a cláusula FROM. Os colchetes indicam que o


Cláusula WHERE é opcional. Uma ou mais condições podem ser aplicados simultaneamente para
restringir odefinido. Uma condição é especificado por comparação de duas condições usando um
resultados
operador condicional.
termos podem Estes
ser valores da coluna, literais, ou expressões. A igualdade operador é mais
comumente
para restringir
usado
conjuntos de resultados. Um exemplo da utilização de uma cláusula WHERE é
mostrado a seguir:

Este exemplo projecta a coluna COUNTRY_NAME da tabela de países. Ao invés de


seleccionando cada linha, a cláusula ONDE restringe as linhas devolvido para apenas aqueles que
contémREGION_ID.
coluna um 3 na

Condições numéricos baseados


Condições devem ser formuladas de forma adequada para diferentes tipos de dados de coluna. As
restringindo linhas com base em colunas numéricas pode ser especificado de várias maneiras
condições
diferentes.
coluna SALÁRIO
considere
na otabela empregados. Esta coluna tem um tipo de dados de NUMBER (8,2). o
coluna salário pode ser restringido como se segue:

Os valores LAST_NAME e salários dos empregados que ganham US $ 10.000 são recuperados
desde o dados em ambos os lados da partida operador e são compatíveis.
tipos de

Uma coluna numérica pode ser comparada com uma outra coluna numérica na mesma linha para
a construção
WHERE condiçãodecláusula,
um como a consulta a seguir demonstra:
Esta cláusula WHERE é demasiado restritiva e resulta em nenhuma linha sendo selecionados por
causa dosalário
valores intervalo
é 2100-24000,
de e a gama de valores é de 10 a DEPARTMENT_ID 110. Desde
Não existe sobreposição da gama de valores DEPARTMENT_ID e salário, não existem linhas que
satisfazer esta condição e, portanto, nada é devolvido.
ONDE condições cláusula também pode ser usado para comparar colunas e expressões
comparar
numéricas
expressões
ou a para outras expressões.

O primeiro exemplo compara a coluna SALÁRIO com DEPARTMENT_ID * 100 para cada
O segundo
linha. exemplo compara duas expressões. Note-se que as condições em ambos os exemplos são
algebricamente idênticas, e o mesmo conjunto de dados é recuperada quando ambos são executados.

Condições baseadas em caracteres


Condições que determinam quais linhas são selecionados com base em dados de caracteres são
especificados
caracteres literais
colocando
na cláusula condicional, dentro de aspas simples. A coluna no JOB_ID
funcionários tabela tem um tipo de dados de VARCHAR2 (10). Suponha que você queira uma lista
valores LAST_NAME desses funcionários atualmente empregados como representantes de vendas.
do
o JOB_ID
valor para um representante de vendas é SA_REP. A declaração a seguir produz uma lista desse tipo:

Se você tentou especificando o caráter literal sem as aspas, um erro do Oracle seriam levantadas.
Lembre-se que o caráter de dados literal é case sensitive, então o seguinte cláusulas WHERE não são
equivalente:

Cláusula 1 gera um “ORA-00904: 'SA_REP': identificador inválido” erro desde o SA_REP literal é
não envolvido em aspas simples. Cláusula 2 e 3 são cláusula sintacticamente correcta mas não
equivalente.
Além disso, nenhuma dessas cláusulas produz quaisquer dados, pois não existem linhas na tabela
tendo valores de coluna JOB_ID que são ou Sa_Rep ou sa_rep.
EMPREGADOS
condições baseados em caracteres não estão limitados a comparar os valores da coluna com
também
literais.
ser Eles
especificados
podem usando outras colunas de caracteres e expressões. expressões baseados em
caracteres
formar umapode
ou ambas as partes de uma condição separada por um operador condicional. estas
podem ser formados através do encadeamento valores literais com uma ou mais colunas de
expressões
caracteres. Os seguintes
quatro cláusulas demonstrar algumas das opções para condições baseados em caracteres:

Cláusula 1 concatena a string literal A às colunas ultimo_nome e primeiro_nome. este


expressão é comparado com o literal Um rei . Cláusula 2 demonstra que as expressões personagem
ser colocado em ambos os lados do operador condicional. Cláusula 3 ilustra que as expressões
pode
literais pode
também ser colocado à esquerda do operador condicional. É logicamente equivalente a cláusula 4,
que temos operandos na cláusula 3 ao redor. Ambas as cláusulas 3 e 4 identicamente restringir os
trocou
resultados.
Condições Baseada em Data
colunas DATE são úteis para armazenar data e hora. literais de data devem ser colocados entre
aspas simples assim como dados de caracteres. Quando usado em condicional cláusulas WHERE,
colunas pode ser comparado a outras colunas de data, literais ou expressões. Os literais são
data
automaticamente convertidos em valores de data baseada no formato de data padrão, que é DD-
Se ocorre um literal em uma expressão envolvendo uma coluna DATA, que é automaticamente
MON-RR.
valor usando
convertido a máscara
num data de formato padrão. DD representa dias, seg representa as três primeiras
mês,
letrasede
RRumrepresenta um 2000-compliant ano (isto é, se a TR for entre 50 e 99, então o
servidor Oracle retorna o século anterior, senão ele retorna do século atual). O completo de quatro
ano, AAAA, também pode ser especificado. Considere as seguintes quatro cláusulas WHERE:
dígitos

A primeira cláusula de testes de igualdade entre duas colunas data. As linhas que contêm os
suasmesmos
colunasvalores em
START_DATE e END_DATE será devolvido. Note, no entanto, que os valores DATA
são iguais a única entre si se existe uma correspondência exacta entre todos os seus componentes,
incluindo
mês, ano, os
horas,
dias,minutos e segundos. Capítulo 8 discute os detalhes de armazenar valores de data.
Até então, não se preocupe com as horas, os minutos e os componentes segundos. Na segunda
ONDE
cláusula, a coluna START_DATE é comparado a este personagem literal: '01 -Jan-2001' . a inteira
componente ano com quatro dígitos (AAAA) foi especificado. Isto é aceitável para o servidor
Oracle. ocondição é equivalente para a segunda, desde o literal '01 -Jan-01' é convertido para o valor
terceira
de data
01-JAN-2001. Isto é devido ao componente RR sendo inferior a 50, de modo que o século atual (21),
20, é prefixado para o componente ano RR para fornecer um valor século. O componente de século
para o '01 -Jan-99' torna-se o século anterior (19) e é convertido para um valor de data de 01-Jan-
literal
1999 para a quarta condição uma vez que o componente RR, 99, é maior do que 50.
Data aritmética usando os operadores de adição e subtração é suportado. Uma expressão como
END_DATE - START_DATE retorna o número de dias entre START_DATE e END_DATE.
START_DATE + 30 retorna uma data 30 dias depois de START_DATE.

EXAME TIP cláusulas condicionais comparar dois termos usando operadores de comparação.
Sabendo
tipos de termos
os dados
é importante para que eles possam ser colocados entre aspas simples, se necessário.

Operadores de comparação
A igualdade operador é geralmente usado para ilustrar o conceito de linhas restringem usando um
cláusula. Existem vários operadores alternativos que também podem ser utilizados. Os desigualdade
ONDE
operadores
“Menos do como
que” ou “maior ou igual a” pode ser usado para retornar linhas em conformidade com a
condições. O operador BETWEEN facilita a comparação à base de gama para testar se uma coluna
desigualdade
valor situa-se entre dois valores. Os testes de operação no conjunto de associação, assim que uma
linha écoluna
valor retornada
testado
se oem que a condição é um membro de um conjunto de literais. A comparação
correspondência
operador LIKE éde extremamente
padrão poderoso, permitindo que os componentes de dados da coluna de
caracteres
para literaisa ser
em correspondido
conformidade com um padrão específico. O último operador de comparação
discutido nesta
É o operador seção que
NULL, é retorna as linhas em que o valor de coluna contém um valor nulo. Estes
os operadores podem ser utilizados em qualquer combinação na cláusula WHERE.

Igualdade e Desigualdade
Limitando as linhas retornadas por uma consulta envolve especificar uma cláusula adequada
WHERE. Se
demasiado a cláusula
restritiva, emé seguida, poucos ou nenhuns linhas são retornadas. Se a cláusula
condicional
em seguida, émais
demasiado
linhas do
ampla
que são
especificado,
necessários são devolvidos. Explorando os diferentes operadores
disponíveis
equipá-lo com
devem
a língua para solicitar exatamente as linhas que você está interessado. O teste para a
numa condição é natural e intuitiva. Tal condição é formado utilizando o “é igual a” (=)
igualdade
operador. Uma linha é devolvido se a condição de igualdade é verdade para essa linha. Considere o
inquerir:
seguinte

A coluna JOB_ID de cada linha da tabela empregados é testado pela igualdade com a
caráter SA_REP literal. Para obter informações de caráter para ser igual, deve haver um caso- exata
match sensível. Quando tal correspondência é encontrada, os valores para as colunas projetadas,
LAST_NAME e salário, são retornados para essa linha. Note que, embora a cláusula condicional é
com base na coluna JOB_ID, não é necessário para esta coluna a ser projetada pela consulta.
Desigualdade baseados em condições de melhorar a especificação cláusula ONDE. Gama e
comparações
padrão correspondentes são possíveis usando operadores de desigualdade e igualdade, mas
muitas
usar os vezes é preferível
operadores ENTRE E como para essas comparações. Tabela 7-6 descreve a desigualdade
operadores.

Tabela 7-6 operadores de desigualdade

operadores de desigualdade permitem consultas à base de gama para ser cumprida. Você pode ser
um obrigado
conjunto de
a fornecer
resultados,
umaem que um valor de coluna é maior do que um outro valor. A consulta a
seguirobter
para podeuma
ser lista
emitido
de valores LAST_NAME e salário para funcionários que ganham mais de US $
5.000:

Os operadores de desigualdade compósitos (constituída por mais do que um símbolo) são


seguintes
utilizados
cláusulas:
na

Cláusula 1 retorna as linhas que contêm um valor de salário que é inferior a ou igual a 3,000.
Cláusula 2 demonstra uma das duas formas da “não é igual a” operadores. Cláusula 2 retorna as
linhas
que têm valores da coluna salário que não são iguais aos valores DEPARTMENT_ID.
desigualdade numérico é naturalmente intuitiva. A comparação dos termos de caráter e data, no
maisentanto, é desigualdade caráter de teste é interessante porque as cordas que estão sendo
complexo.
comparados
cada lado doemoperador de desigualdade são convertidas para uma representação numérica dos seus
Com base no conjunto de caracteres de banco de dados e suporte ao idioma nacional configurações
caracteres.
(NLS),é cada
string atribuído
personagem
um valor numérico. Estes valores numéricos formar a base para a avaliação da
comparação de desigualdade. Considere a seguinte declaração:

O caráter literal 'King' é convertido para uma representação numérica. Assumindo um


caracteres
US7ASCII
banco de dados definida com configurações NLS americano, o literal 'King' é convertido
em seu ordinal
valores de caracteres: K (75), i (105), N (110), e g (103). Para cada linha na tabela de funcionários, a
dados coluna LAST_NAME é similarmente convertidos em valores numéricos para cada carácter,
queseguida,
em são em comparação, por sua vez com os valores numéricos dos caracteres na literal 'King'.
Por exemplo,
linha com LAST_NAME
a = 'Kaufling' é comparada como se segue: O primeiro caracter em ambas as
cadeias
com umévalor
'K' igual ordinal de 75. Assim, o segundo carácter de (i = 105) é comparado com (a = 97).
Desde
(97 <105)
a ou (a <i), 'Kaufling' < 'rei', e a linha é seleccionada. O mesmo processo para comparar
os dados numéricos usando os operadores de desigualdade se aplica a dados de caracteres. A única
diferença é que
dados de caracteres
configurações é convertido
de banco de dados.implicitamente pelo servidor Oracle para um valor numérico com
base em determinadas
comparações de desigualdade que operam em valores de data seguir um processo semelhante ao
lojasdados de caracteres.
servidor Oracle datao em um formato numérico interno, e estes valores são comparados dentro
condições.
do

Gama Comparação com o entre o operador


O ENTRE testes operador se um valor de coluna ou expressão cai dentro de um intervalo de dois
valores de limite. O item deve ser pelo menos o mesmo que o valor limite inferior ou 'no máximo' o
mesmo que o valor limite superior ou queda dentro do intervalo para a condição para ser verdade.
Suponha que você queira os sobrenomes dos funcionários que ganham um salário na faixa de US
US $ 3.400
4.000.eUma solução possível, utilizando o operador ENTRE é como se segue:

Condições especificadas com a ENTRE operador pode ser equivalentemente denotado usando
condições
dois à base de desigualdade.

É mais curto e mais simples para especificar a condição gama usando o operador BETWEEN.

Definir Comparação com o operador em


Os testes do operador em saber se um item é um membro de um conjunto de valores de literal. O
conjuntoseparando
vírgula é indicadoaspor
literais e colocando-os entre parênteses. Se os literais são de caráter ou
valores de data, em seguida, estes devem ser delimitados por aspas simples. Você pode incluir como
muitos literaisquiser.
definir como no Considere o seguinte exemplo:

O valor do salário em cada linha é comparada para a igualdade para os literais especificados no
valor
conjunto.
do salário
Seéoigual a 1,000; 4.000; ou 6000; o valor LAST_NAME para essa linha é retornada. o
seguindo dois demonstrações demonstrar o uso do operador IN com DATA DE CARACTERES e
dados:

Comparação padrão com o operador LIKE


O operador LIKE é projetado exclusivamente para dados de caracteres e fornece um mecanismo
àpoderoso
procura para
de letras ou palavras. LIKE é acompanhado por dois caracteres curinga: a percentagem
símbolo (%) e o caractere sublinhado (_). O símbolo de porcentagem é usado para especificar zero
ou mais curinga, enquanto o caractere sublinhado especifica um carácter universal. Um curinga
caracteres
pode representar qualquer caractere.

Você pode usar a seguinte consulta para fornecer uma lista de funcionários cujos nomes
letracomeçam
A: com a

O caráter literal que a coluna FIRST_NAME é comparado com está entre aspas simples
como um personagem regular, literal. Além disso, ele tem um símbolo de percentagem, que tem um
significado
no contextoespecial
do operador LIKE. O símbolo percentual substitui zero ou mais caracteres
apenso à carta Uma . Os caracteres curinga podem aparecer no início, no meio ou no final
do caráter literal. Eles podem até mesmo aparecer sozinho, como segue:

Neste caso, cada linha contendo um valor FIRST_NAME que não é nulo será retornado.
símbolos curinga não são obrigatórias quando se utiliza o operador LIKE. Em tais casos, como se
um teste de
comporta operador de igualdade para os jogos de caracteres exatos; assim, as duas seguintes
como
equivalente:
cláusulas são ONDE

O símbolo sublinhado curinga substitui exatamente um outro personagem em um literal.


à procura
Considerar
de funcionários cujos sobrenomes são quatro letras, começa com um K , tem um
segunda letra, e no final com uma ng . Você pode emitir a seguinte declaração:
desconhecido

Como a Figura 7-9 mostra, os dois símbolos de caracteres universais pode ser usado de forma
várias
independente,
vezes num único
em conjunto,
em que aoucondição.
mesmo A primeira consulta recupera os registros onde
COUNTRY_NAME começa com a letra I seguido por um ou mais caracteres, um dos quais deve
ser uma minúscula um .

Figura 7-9 Os símbolos de caracteres universais do operador LIKE


A segunda consulta recupera os países cujos nomes contêm a letra i como seu quinto
personagem.dos valores COUNTRY_NAME ea letra que começam com não são importantes. Os
O comprimento
sublinhado símbolos curinga anteriores à minúscula i na cláusula WHERE representar exatamente
quatro
caracteres (que podem consistir em quaisquer caracteres). A quinta carta deve ser um i , eo símbolo
quatro
de porcentagem
especifica que o COUNTRY_NAME pode ter zero ou mais caracteres do sexto caractere
em diante.
E quando você estiver procurando por um literal que contém uma porcentagem ou sublinhado
personagem? Um carácter de sublinhado que ocorre naturalmente pode ser escapou (ou tratada como
um regular
símbolo nonspecial) utilizando o identificador ESCAPE em conjunto com um caractere de escape.
seguinte exemplo, quaisquer valores JOB_ID que começam com os três personagens sa_ serão
No
devolvidos:

Tradicionalmente, o caractere de escape é o símbolo de barra invertida, mas ele não tem que ser.
seguinte
o declaração é equivalente ao anterior, mas usa um símbolo do dólar como o ESCAPE

caracteres em vez disso:

O símbolo percentagem pode ser semelhante escapou quando ele ocorre naturalmente como
dados de caracteres.
Exercício 7-3: Use o operador LIKE Construir uma consulta para recuperar uma lista de nomes de
esse fim com as letras ing da tabela DEPARTMENTS.
departamento

1. Inicie o SQL * Plus e ligar para o esquema HR.


2. O WHERE deve executar uma comparação entre a department_name
valores de coluna e um padrão começando com zero ou mais caracteres, mas terminando
com três específicos, ing . O operador permitindo correspondência padrão personagem é o
caracteres
operador. O padrão da coluna department_name deve conformar-se é '% ing'.
COMO
3. Assim, a consulta correcta é a seguinte:

Comparação NULL com o NULL operador é


valores NULL inevitavelmente encontrar seu caminho em tabelas de banco de dados. às vezes é
necessárioque
registros quecontêm
apenasum
aqueles
valor NULL em uma coluna específica são procurados. O IS operador
seleciona
apenas as NULL
linhas onde um valor de coluna específica é NULL. Testando os valores da coluna de
igualdade utilizando
efectuada para NULLo éoperador nulo é, em vez de a “é igual a” operador (=).
Considere a seguinte consulta, que busca a coluna LAST_NAME dos empregados
mesa para as linhas que têm valores nulos armazenados na coluna COMMISSION_PCT:

Esta cláusula WHERE lê naturalmente e recupera apenas os registros que contêm NULL
valores COMMISSION_PCT.

Operadores booleanos
Booleanas ou lógicas operadores permitem múltiplas condições de ser especificada na cláusula
WHERE da
instrução SELECT. Isto facilita uma capacidade de extracção de dados mais refinada. Considere
isolar aqueles
registros de funcionários com valores FIRST_NAME que começam com a letra J e que ganham um
COMMISSION_PCT maior do que 10 por cento. Primeiro, os dados na tabela funcionários devem
restrita a FIRST_NAME valores como J% e, segundo, os valores para o COMMISSION_PCT
estar
registros devem ser testados para determinar se eles são maiores do que 10 por cento. Estas duas
condições
pode estar distintas
associado com o operador booleano E e são aplicadas consecutivamente num ONDE
cláusula. Um conjunto de resultados em conformidade com qualquer uma ou todas as condições ou a
negação
pode ser de
especificado
uma ou mais
usando
condições
o OR, AND e NOT operadores booleanos, respectivamente.
O operador e
O operador AND funde condições em uma grande condição a que uma linha deve estar em
conformidade para serde resultados. Se duas condições especificadas em uma cláusula WHERE são
incluído no conjunto
unidas com
operador, emum
seguida,
AND uma linha é testado consecutivamente para a conformidade com ambas as
condições, antes
recuperado. Se ele
deestá
ser em conformidade com nenhuma ou apenas uma das condições, a linha é
excluída. com
registros Empregado
valores FIRST_NAME começam com a letra J e COMMISSION_PCT maior do que
10 por cento podem ser recuperadas usando a seguinte consulta:

Observe que a cláusula WHERE tem agora duas condições, mas apenas uma palavra-chave
WHERE.
operador O eas duas condições. Para especificar outras condições obrigatórias, simplesmente
separa
adicioná-los
garantir que eles
e estão separados por adicional e operadores. Você pode especificar quantas
condições
você quer. que
Lembre-se, porém, mais e condições especificadas, a mais restritiva a consulta
torna-se.

O operador OR
O operador OU separa várias condições, pelo menos um dos quais devem ser satisfeitas pela fileira
seleccionado para justificar a inclusão no conjunto de resultados. Se duas condições especificadas
em uma cláusula
juntou-se com umWHERE
operadorsão
ou, então, uma linha é testado consecutivamente para a conformidade
com cada um
condições oude
antes ambos
ser recuperado. Em conformidade com apenas uma das condições ou é suficiente
para o a ser retornado. Se ele está em conformidade com nenhuma das condições, a linha é
registro
excluída. de
registros Recuperando
funcionários que têm valores FIRST_NAME começam com a letra B ou aqueles com
COMMISSION_PCT superior a 35 por cento pode ser escrita como segue:
um

Note-se que as duas condições estão separados pela palavra-chave OR. Todos os registros de
Valores
empregados
FIRST_NAME
com começando com uma letra maiúscula B será devolvido, independentemente
da sua COMMISSION_PCT, mesmo que sejam nulos. Registros com valores COMMISSION_PCT
valores
superior a 35 por cento (independentemente do que carta sua FIRST_NAME começa com) também
são Além
devolvidos.
disso, ou as condições podem ser especificado, separando-os com um operador ou. Quanto
condições
mais ORespecificadas, a menos restritiva sua consulta se torna.

O operador não
O operador NOT nega operadores condicionais. A linha selecionada deve estar em conformidade
com a lógica
oposto da condição, a fim de ser incluído no conjunto de resultados. operadores condicionais podem
negado pelo operador não, como mostrado pelas cláusulas quando referidas na Tabela 7-7 .
ser

Tabela 7-7 Condições negada pelo operador não


O operador NOT nega o operador de comparação em uma condição, quer se trate de uma
desigualdade,,
igualdade, correspondência de padrão, a adesão à base de gama definida, ou operador do ensaio
nulo.
regras de precedência
Aritméticas, caráter, comparação e expressões booleanas foram examinados no contexto da
Cláusula WHERE. Mas como é que esses operadores interagir uns com os outros? A Tabela 7-8
apresenta ade prioridade para os operadores anteriormente mencionados.
hierarquia

Tabela 7-8 Precedência de Operadores Hierarquia

Operadores no mesmo nível de precedência são avaliados da esquerda para a direita, se eles são
encontrados
juntos em uma expressão. Quando o operador não modifica o LIKE, é NULL, e em comparação
operadores, o seu nível de precedência é o mesmo que a forma positiva destes operadores.
Considere a seguinte instrução SELECT que demonstra a interação de vários diferente
operadores:

Os LAST_NAME, salário, DEPARTMENT_ID, JOB_ID e colunas COMMISSION_PCT


são projectadas a partir da tabela funcionários com base em duas condições distintas. A primeira
recupera os registros contendo o personagem um no campo LAST_NAME E com um salário
condição
valor superior a 200 vezes o valor DEPARTMENT_ID. O produto de DEPARTMENT_ID e
200 é processada antes de o operador a desigualdade desde a precedência de multiplicação é maior
adocomparação
que de desigualdade.
A segunda condição obtém as linhas com valores JOB_ID de qualquer MK_MAN ou em
que MK_REP
valores COMMISSION_PCT não são nulos. Para uma linha a ser devolvido por esta consulta,
sejasegunda
ou o primeiro
condições precisam ser cumpridas. Alterando a ordem das condições na cláusula
muda seu significado por causa da diferente precedência dos operadores. Considere o seguinte
WHERE
inquerir:

Existem duas condições compostas nesta consulta. A primeira condição recupera os registos com
o personagem um no campo LAST_NAME e um valor de salário maior que 100 vezes os
valor DEPARTMENT_ID e onde o valor COMMISSION_PCT não é nulo. O segundo
condição vai buscar essas linhas com valores JOB_ID de MK_MAN. A linha é retornada por esta
consulta
está de acordo
se com uma ou outra circunstância uma condição OR 2, mas não necessariamente para
ambos.

EXAME TIP Os operadores booleanos OR e E permitem múltiplas condições WHERE cláusula


para ser
especificado, enquanto que o operador não nega um operador condicional que pode ser utilizado
várias vezes
dentro da mesma condição. Os igualdade, desigualdade, entre elas, de, e operadores de comparação
Like
testar dois termos dentro de um único estado. Apenas um operador de comparação é usado por
cláusula.
condicional

Classificar as linhas recuperadas por uma consulta


A possibilidade de utilização dos conjuntos de dados obtidos pode ser significativamente aumentada
com um mecanismo
classificar as informações.
para encomendar
As informações
ou podem ser classificados em ordem alfabética, numérica e
cronologicamente
ascendente em
ou descendente. Além disso, os dados podem ser classificadas por uma ou mais colunas,
colunas que não estão listados na cláusula SELECT. A ordenação é geralmente realizada uma vez
incluindo
que os resultados de um

instrução SELECT ter sido obtida. Os parâmetros de classificação não influenciam os registros
retornados
por uma consulta, apenas a apresentação dos resultados. Exatamente as mesmas linhas são
retornadasuma
incluindo por uma
cláusula
instrução
tipo como são devolvidos por uma instrução excluindo uma cláusula tipo.
Apenas
saída pode
a ordenação
ser diferente.
do Classificando os resultados de uma consulta é realizada utilizando a
cláusula ORDER BY.
A cláusula ORDER BY
A cláusula ORDER BY é geralmente a última cláusula em uma instrução SELECT. O formato do
ORDER
BY cláusula no contexto da instrução SQL SELECT é a seguinte:

Subindo e descendo Sorting


Ascendente ordem de classificação é natural para a maioria dos tipos de dados e, portanto, a ordem
de classificação
sempre que o ORDER
padrãoBY
usado
é especificado. Uma ordem de classificação ascendente para os números
é menor
mais alto,para
embora seja mais antiga para mais recente para datas e ordem alfabética para caracteres. A
primeira forma
ORDEM domostra resultados de uma consulta podem ser classificadas por uma ou mais
BY que
colunas ou
expressões.

Suponha que um relatório é solicitado que deve conter de um funcionário LAST_NAME,


e informação
HIRE_DATE,
do salário, ordenados alfabeticamente pela coluna LAST_NAME por todas as vendas
representantes e gerentes de marketing. Este relatório pode ser extraído com o seguinte:

Os dados seleccionados podem ser ordenados por qualquer uma das colunas das tabelas na
cláusula
incluindo FROM,
aqueles que não aparecem na lista SELECT. Anexando a palavra-chave DESC ao
ORDER BY cláusula, linhas são retornadas classificados em ordem decrescente. Os NULLS
opcionais LASTespecifica que, se a coluna de classificação contém valores nulos, em seguida, essas
palavras-chave
linhasa são
após triagem
coletados
os restantes
última valores não nulos. Para especificar que linhas com valores nulos no tipo
coluna deve ser apresentado em primeiro lugar, acrescentar as palavras-chave NULLS primeiro a
cláusula ORDER
conjunto de dadosBY.
podem
UMAser classificadas com base em uma expressão da seguinte forma:
O valor menor POSSE aparece pela primeira vez na saída desde o ORDER BY especifica
que cláusula
os resultados serão ordenados pelo apelido expressão. Note-se que os resultados poderiam ser
classificadas
expressão explícita
pela eo alias pode ser omitido, mas usando aliases torna a consulta mais fácil de ler.
Várias opções padrão implícitos são selecionados quando você usa a cláusula ORDER BY. A
importante
maioriadeles é que, a menos que seja especificado DESC, a ordem de classificação é assumida
para ser ascendente. Se nulo
valores ocorrer na coluna tipo, assume-se a ordem de classificação padrão a ser NULOS durar
ascendente
tipos e NULLS primeira vez para descer os tipos. Se nenhuma cláusula ORDER BY é especificada,
a mesma consulta
executados em momentos diferentes pode retornar o mesmo conjunto de resultados na ordem de
linha diferente,
devem ser feitaspor
a respeito
isso nãodasuposições
ordem de linha padrão.

posicional Sorting
A Oracle oferece uma alternativa, mais curto maneira de especificar a coluna de classificação ou
expressão. Ao oinvés
especificando nomededa coluna, a posição da coluna, uma vez que ocorre na lista SELECT é
aacrescentada
cláusula ORDER
ao BY. Considere o seguinte exemplo:

A ORDEM BY especifica o literal 2. numérico Isto é equivalente a especificando a ordem


POR HIRE_DATE uma vez que é a segunda coluna na cláusula SELECT. Ordenação posicional
apenas para colunas na lista SELECT.
aplica

Composite Sorting
Os resultados podem ser classificados em mais de uma coluna utilizando triagem compósito . Várias
colunas podem
especificado (ouser
literalmente ou posicionalmente) como a chave de classificação composto por
vírgula separando-los
ORDER BY cláusula. noPara buscar o JOB_ID, LAST_NAME, salário e valores HIRE_DATE de
a tabela de trabalhadores, tais que os resultados têm de ser ordenados por ordem alfabética inversa
por primeiro
em JOB_ID lugar, em seguida, por ordem alfabética ascendente por LAST_NAME, e, finalmente,
em
ordem com base na descendente
numericamente coluna SALÁRIO, você pode executar a seguinte consulta:

Exercício 7-4: Use a cláusula ORDER BY tabela de tarefas contém descrições de diferentes
tipos de trabalhos de um empregado na organização podem ocupar. Ele contém o JOB_ID,
JOB_TITLE,
MIN_SALARY e MAX_SALARY colunas. Você é obrigado a escrever uma consulta que extrai o
Job_title, MIN_SALARY e MAX_SALARY colunas, bem como uma expressão chamada
VARIANCE, que é a diferença entre os valores MAX_SALARY e para MIN_SALARY
cada fila. Os resultados devem incluir apenas os valores job_title que contêm a palavra o presidente
ou
Gerente . Ordenar a lista em ordem com base na expressão VARIANCE descendente. Se mais de um
fila tem o mesmo valor de variação, em seguida, em adição, classificar essas linhas por JOB_TITLE
em sentido
ordem alfabética.
inverso

1. Inicie o SQL Developer e conectar-se ao esquema HR.


2. A classificação é realizada com a ordem BY. Classificação Composite é necessário usar
tanto a expressão de variância e a coluna JOB_TITLE em ordem decrescente.
3. A execução dessa instrução retorna um conjunto de resultados que correspondam ao pedido:

A cláusula SQL Row-Limitando


Muitas consultas analíticas exigem apenas uma parte de um conjunto de dados, tais como os três
melhores vendedores
organização em um
ou os quatro membros da equipe mais recentemente empregadas. A cláusula limitativo
linha da SELECT permite que um conjunto de dados a ser segmentados de várias maneiras. O
instrução
formato da
cláusula no linha
contexto
limitativo
da instrução SQL SELECT é a seguinte:
A cláusula OFFSET especifica o número de linhas para passar para chegar à posição inicial em
conjunto.
um resultado
OFFSET padrão para 0 na ausência de uma cláusula OFFSET ou se um valor nulo,
énegativo,
maior doouque compensar
o total deessa
linhas em um conjunto de resultados é fornecido. A linha e linhas palavras-
chave têm
formas idênticas significado, e ambos singular e plural são fornecidos para tornar a sua cláusula
OFFSET
mais naturalmente.
ler
A cláusula FETCH Especifica um exatas number_of_rows ou um percentage_of_rows para
Na ausência
retornar. desta cláusula, todo o resultado é retornado, começando a partir do número de linha
aOFFSET
última linha.
+ 1 a As palavras-chave em primeiro lugar e PRÓXIMOS também servem para esclarecer a
semântica, mas
significado. têm idêntica
Baixando as 2 linhas de PRIMEIROS OFFSET 100 num conjunto de dados recupera as
mesmasosduas
buscar 2 linhas
linhas
seguinte
como a partir compensar 100.
O number_of_rows opção dos padrões cláusula FETCH para 0 se um NULL ou contagem de
é especificado.
linhas negativo Fracções mistas fornecidos como number_of_rows são truncados, e apenas o número
porção é utilizado como este parâmetro. Se o number_of_rows valor é maior do que o número de
inteiro
de partida remanescente a partir da posição OFFSET + 1, todas as linhas de um conjunto de
linhas
resultados são devolvidos.
percentage_of_rows opção odeve ser um número, e um NULL ou valor padrão negativos a 0. Este
opção especifica a porcentagem do conjunto de resultados para recuperar.
A linha ou linhas keywords novamente tem significado idêntico, e ambas as formas singular e
são plural
fornecidos para tornar a sua cláusula FETCH ler mais naturalmente.
As palavras-chave apenas, ou com laços devem ser lidas em conjunto com a linha / linhas
Apenas
palavras-chave.
linhas recupera o número exato ou a porcentagem de linhas especificado. Recuperando
linhasobtém
TIES com todas as linhas adicionais com a mesma chave de classificação como a última linha
recuperada,
somente se uma
mas cláusula
tem qualquer
ORDER efeito
BY é especificada.
Como a Figura 7-10 mostra, a primeira consulta obtém as 7 linhas depois de ele recupera todos
FUNCIONÁRIOS
os 107 linhas a mesapartir classificados
da em ordem crescente padrão de salário, salta 100 linhas por
causa do deslocamento
cláusula, e, finalmente, retorna os últimos nomes e salários dos top 7 funcionários mais bem pagos.
O segundo
ameixas consulta esta lista obtendo o primeiro destes cinco linhas 7 a partir de linha 101 (OFFSET +
1). Nota
como a consulta final retorna uma linha adicional para a segunda consulta desde empregados De
Haan e ambos ganham o mesmo salário ($ 17.000) e são, assim, amarrado com a mesma chave de
Kochhar
classificação.
A Figura 7-10 A cláusula limitativo linha SQL

Ampersand Substituição
Como você desenvolver e instruções SQL perfeito, você pode guardá-las para uso futuro. É, por
vezes,
desejável ter uma forma genérica de uma declaração de que tem uma variável ou espaço reservado
definido queem
substituído pode
tempo
ser de execução. SQL * Plus oferece essa funcionalidade na forma de substituição
e comercial
Cada elemento
. da instrução SELECT pode ser substituído, e a redução de consultas para seu núcleo
elementos para facilitar a reutilização pode poupar horas de trabalho tedioso e repetitivo. Esta seção
examina
variáveis de substituição e os comandos definir e confirmar.

Variáveis de substituição
As variáveis de substituição podem ser considerados como espaços reservados. Uma consulta SQL é
composta de
cláusulas. Cada
doiscláusula
ou maispode ser dividida em subseções, que são por sua vez, constituídas por texto
personagem.
texto, elemento
Qualquer
subseção, ou cláusula é um candidato para substituição.

Único Ampersand Substituição

A forma mais básica e popular de elemento de SQL é a substituição comercial única . o e comercial
caracteres (&) é o símbolo escolhido para designar uma variável de substituição em um comunicado
e precede
nome da variável
o sem espaços entre eles. Quando a instrução é executada, o SQL * cliente Além
processa a instrução, percebe uma variável de substituição, e tenta resolver o valor dessa variável
disso,
em uma das duas maneiras. Primeiro, ele verifica se a variável é definida na sessão do usuário. (A
DEFINIR
comando é discutido mais adiante neste capítulo.) Se a variável não está definida, as instruções do
processo
para um valor
do usuário
que vai ser substituído no lugar da variável. Uma vez que um valor é enviado, a
afirmaçãoeéé executado pelo servidor Oracle. A substituição e comercial variável é resolvida em
completa
tempo de execução e às vezes é conhecido como o tempo de execução de ligação ou de tempo de
execução de substituição
Você pode . a procurar informações de contato como dados phone_number dadas
ser obrigado
LAST_NAME
quer ou EMPLOYEE_ID valores. Esta consulta genérico pode ser escrito como segue:

Ao executar esta consulta, SQL * Plus pede-lhe para introduzir um valor para a variável
ÚLTIMO
chamadaNOME. Você entra o sobrenome de um empregado, se você sabe que, por exemplo, o rei.
Se não
sabe o fizer nome, mas saber o número de identificação do funcionário, você pode digitar qualquer
o último
valor epara
chave pressione
enviarooENTER
valor. A Oracle, em seguida, solicita que você digite um valor para a variável
EMPNO. Depois
digitando um valor,
de por exemplo, 0, e bater ENTER , não há variáveis de substituição restantes para
Oracle para resolver, e a seguinte declaração é executado:

As variáveis podem ser atribuídas qualquer nome alfanumérico que é um nome identificador
substituir
válido.quando
O literal
solicitado
você para uma variável deve ser um tipo de dados apropriado para esse
contexto;
um de outra identificador
“ORA-00904: forma, inválido” erro é retornado. Se a variável destina-se a substituir um
ou valor de data, as necessidades literais de ser colocados entre aspas simples. Uma técnica útil
personagem
consiste em colocar
substituição e comercial
o variável entre aspas simples quando se lida com valores de caractere e data.
forma, o usuário é obrigado a apresentar um valor literal sem se preocupar com colocando-o entre
Nisso
aspas.
Duplo Ampersand Substituição
Quando uma variável de substituição é referenciada várias vezes na mesma consulta, o Oracle irá
para entrar um valor para cada ocorrência da única variável de substituição e comercial. para
pedir-lhe
scripts,
complexa este pode ser ineficiente
dados LAST_NAME e tedioso. A declaração
da tabela EMPREGADOS para as alinhas
seguirque
recupera
contêmo oFIRST_NAME e de
mesmo conjunto
caracteres em ambos os campos:

As duas condições são idênticas, mas aplicam-se a diferentes colunas. Quando essa instrução é
Primeiro
executada,
você será solicitado a digitar um valor de substituição para a variável de pesquisa usado na
com a coluna LAST_NAME. Depois disso, você será solicitado a digitar um valor de substituição
comparação
para o
PESQUISA variável utilizada na comparação com a coluna FIRST_NAME. Isto coloca dois
problemas.

Em primeiro lugar, é ineficiente para introduzir o mesmo valor duas vezes, mas segundo e mais
importante,
erros podemtipográfica
confundir a consulta desde que a Oracle não verifica se o mesmo valor literal é inserido
variáveis de substituição tempo com o mesmo nome são usados. Neste exemplo, a assunção é lógico
cada
que o conteúdo das variáveis substituídos deve ser o mesmo, mas o facto de que as variáveis têm o
mesmo nome não tem significado para o servidor Oracle, e não faz tal suposição. O primeiro
exemplo
em A Figura 7-11 mostra os resultados da execução da consulta anterior e submetendo dois valores
adistintos
variáveldePESQUISA substituição. Neste exemplo particular, os resultados são incorrecta, dado que
aexigência era para recuperar FIRST_NAME e LAST_NAME pares que continham a idêntico
cadeia de caracteres.

Figura 7-11 Duplo substituição e comercial

Quando uma variável de substituição é referenciada várias vezes na mesma consulta e sua
que intenção
a variávelé deve ter o mesmo valor em cada ocorrência na declaração, é preferível fazer
uso de dupla substituição e comercial . Isto envolve a prefixação da primeira ocorrência da
variável que ocorre várias vezes em uma consulta com dois símbolos e comercial em vez de um.
substituição
A Oracle encontra uma variável dupla substituição e comercial, um valor de sessão é definido para
Quando
que
variável, e você não será solicitado a inserir um valor a ser substituído para esta variável no posterior
referências.

O segundo exemplo na Figura 7-11 demonstra como a variável PESQUISA é precedido por dois
ampersands na condição com a coluna LAST_NAME e, posteriormente, é precedido por uma
E comercial
solicitado na condição
a introduzir umcom a coluna
valor FIRST_NAME.
a ser substituído Quando PESQUISA
para a variável a instrução éapenas
executada,
uma você está o
vez para
aestado
coluna
comLAST_NAME. Este valor é então resolvido automaticamente a partir do valor da sessão do
variável em referências subsequentes a ela, como no estado com a coluna FIRST_NAME. Para
undefine a variável de busca, você precisará usar o comando UNDEFINE descrito posteriormente
capítulo.
neste

DICA Se você trabalha como um desenvolvedor, administrador de banco de dados ou usuário final
do negócio,
consultas quetudo
você
SQL
encontra podem ser classificados como ad hoc ou consultas repetidas. consultas
ad hoc
são geralmente declarações pontuais escritos durante algum exercício investigação de dados que não
são susceptíveis
reutilizados. As consultas
de ser repetidas são aquelas que são executados com frequência ou
periodicamente,
salvos que são
como arquivos de geralmente
script e executar com pouca ou nenhuma modificação sempre que
necessário.
tempo de reconstrução
Reutilizaçãoe impede
permite dispendiosa
que essas consultas consistentes para beneficiar potencialmente
nativo daautomáticos
recursos Oracle de ajuste voltado para melhorar o desempenho da consulta.

Substituindo nomes de coluna


elementos literais da cláusula WHERE têm sido o foco da discussão sobre a substituição, até agora,
mas praticamente qualquer elemento de uma instrução SQL é um candidato para substituição. Na
seguinte
as colunasinstrução,
FIRST_NAME e JOB_ID são estáticos e irá sempre ser recuperada, mas a terceira coluna
seleccionado é variável e especificada como uma variável de substituição chamado COL. O conjunto
de resultados por
classificados é ainda
esta mais
coluna variável na ORDEM BY.

Ao contrário de caracteres e data literais, referências de nome de coluna não necessitam de aspas
quando
simples,
explicitamente
quer especificado ou quando substituído por meio de substituição e comercial.

Substituindo Expressões e Texto


Quase qualquer elemento de uma instrução SQL pode ser substituído em tempo de execução. A
restrição
requer pelo
é que
menos
a Oracle
a primeira palavra a ser estática. No caso da instrução SELECT, no mínimo, a
chave SELECT é necessário, e o restante da instrução pode ser substituído como se segue:

Quando a instrução é executada, você será solicitado a apresentar um valor para a variável
REST_OF_STATEMENT,
chamada que, quando anexado à palavra-chave SELECT, é qualquer consulta
candidatos úteis para substituição e comercial são declarações que são executados várias vezes e
legítimo.
diferem
ligeiramente um do outro.

Definir e Verificar
substituição e comercial dupla é usado para evitar a entrada repetitivo quando o mesmo ocorre
várias vezes em um comunicado. Quando uma dupla substituição ocorre e comercial, a variável é
variável
armazenada
uma variávelcomo
de sessão. Como a instrução é executada, todas as outras ocorrências da variável são
resolvidas usando a variável de sessão armazenado. Quaisquer execuções subsequentes da
automaticamente
declaração
mesma dentro
sessão do automaticamente as variáveis de substituição de valores de sessão
resolver
armazenados.
sempre desejável
Issoe,não
na verdade
é limita a utilidade de variáveis de substituição. A Oracle, no entanto,
fornecer um mecanismo para cancele estas variáveis de sessão. O comando VERIFY é específico
SQL * Plus e controla se os elementos substituídos são ecoados na tela do usuário antes de
para
executar uma instrução SQL que usa variáveis de substituição.

O DEFINE e Comandos UNDEFINE


variáveis de nível de sessão são criados implicitamente quando eles são inicialmente referenciados
utilizando a substituição
em instruções SQL dupla e comercial. Eles persistem ou permanecem disponíveis para a
ou até que
duração dasejam
sessãoexplicitamente indefinido. A sessão termina quando o usuário sai a sua ferramenta
de cliente
SQL * Plus
como
ou quando o usuário processo é encerrado.
O problema com as variáveis de sessão persistentes é que eles tendem a desvirtuar a natureza
instruções
genérica
quedeusam variáveis de substituição e comercial. Felizmente, estas variáveis de sessão
pode ser com o comando UNDEFINE. Dentro de um script ou na linha de SQL * Plus ou SQL
removido
Developer, a sintaxe indefinir variáveis de sessão é a seguinte:
comando

Considere um exemplo genérico simples que seleciona uma coluna estática e variável da
TRABALHADORES mesa e classifica o de saída com base na coluna variável.

A primeira vez que esta declaração é executado, você será solicitado a fornecer um valor para o
variável.
ColName
Suponha que você digite salário. Este valor é substituído, e a instrução é executada. UMA
posterior execução desta declaração dentro da mesma sessão não solicita qualquer ColName
valores uma vez que já é definido como SALÁRIO no contexto desta sessão e só pode ser indefinido
com o comando UNDEFINE ColName. Uma vez que a variável foi indefinido, a próxima execução
da declaração solicita ao usuário um valor para a variável ColName.
O comando DEFINE serve dois propósitos. Ele pode ser usado para recuperar uma lista de todas
atualmente
as variáveis
definido em sua sessão de SQL; ele também pode ser usado para definir explicitamente
um valor paracomo
referenciada uma uma
variável
substituição variável por uma ou mais instruções durante o tempo de vida
dessa sessão.
sintaxes para as
o duas variantes do comando DEFINE são os seguintes:

Suporte de variáveis de sessão persistente pode ser desligado e ligado conforme necessário
usando o SET
DEFINE OFF comando. O comando SET não é um comando de linguagem SQL, mas sim um SQL
comando de controle de ambiente. Ao especificar SET DEFINE OFF, a ferramenta de cliente (por
O SQL * Plus) não salvar as variáveis de sessão ou anexar um significado especial para o símbolo e
exemplo,
comercial.
permite queeste
o símbolo E comercial para ser utilizado como um carácter literal ordinária, se
necessário.
DEFINE ONO |conjunto
OFF comando, portanto, determina se a substituição comercial está disponível no seu
sessão. A consulta a seguir usa o símbolo E comercial como um valor literal. Quando é executado,
é solicitado a enviar um valor para o SID variável bind.
você

Ao desligar a funcionalidade de substituição e comercial, esta consulta pode ser executado sem
solicita.

Uma vez que a instrução é executada, você pode usar o SET DEFINE ON comando para mudar
o
funcionalidade de substituição de volta. Se DEFINE é OFF eo contexto que um e comercial é usado
em uma não pode ser resolvido, literalmente, a Oracle retorna um erro.
declaração

O Comando VERIFICAR
Duas categorias de comandos estão disponíveis quando se lida com o servidor Oracle: linguagem
SQL
comandos e os comandos de controle de cliente SQL. A instrução SELECT é um comando de
enquanto o comando SET controla o ambiente do cliente SQL. Há muitos língua diferente e
linguagem,
comandos disponíveis controle, mas o controle comandos relevantes para a substituição são definir e
VERIFICAR.
A VERIFICAR controles de comando se a variável de substituição apresentado é exibido na tela
para que você possa verificar se a substituição correta ocorreu. Uma mensagem é exibida mostrando
o
idade cláusula seguido pelo novo cláusula contendo o valor substituído. O comando VERIFY é
ligadas e desligadas com o comando SET VERIFY ON | OFF. Se Verify é primeiro desligado
e uma
é, consulta
então, que utiliza
substituído, substituição
a declaração e comercial
é executado, é executado,
e seus resultados você será solicitado
são exibidos. para introduzir
Se VERIFICAR é
um valor.
eentão O
LIGADA
a mesma valor que
consulta é executado, uma vez que você introduzir um valor, mas antes da instrução
começa
A Oraclea exibe
execução,
a cláusula contendo a referência para a variável de substituição como a idade
cláusula
seu númerocomde linha, e, imediatamente abaixo deste, a nova cláusula mostra o extrato contendo a
valor substituído.

Exercício 7-5: Usando Ampersand Substituição Você é obrigado a escrever uma consulta
reutilizável
atual taxa deusando o eo número EMPLOYEE_ID como entradas e retornar o EMPLOYEE_ID,
imposto
FIRST_NAME, salário, salário anual (SALÁRIO * 12), TAX_RATE, e fiscais
(TAX_RATE * salário anual) informações para uso pelos funcionários do departamento de RH.

1. Inicie o SQL * Plus e ligar para o esquema HR.


2. A lista de seleção deve incluir as quatro colunas especificadas, bem como duas expressões.
O primeiro
expressão, como alias salário anual, é um cálculo simples, enquanto que o segundo

expressão, alias como TAX, depende do valor TAX_RATE. Desde ALÍQUOTA pode variar,
este valor tem de ser substituído em tempo de execução.
3. Uma solução possível é a seguinte:

4. A dupla comercial anterior EMPLOYEE_ID e TAX_RATE na cláusula SELECT


estipula a Oracle que quando a instrução é executada, o usuário deve ser solicitado a enviar
um valor para cada variável de substituição que será usado onde quer que estejam,
posteriormente,
referenciado como EMPLOYEE_ID & e & TAX_RATE, respectivamente.

Broca Two-Minute
Explique as capacidades de instruções SQL SELECT
• As três operações fundamentais que instruções SELECT são capazes de se projeção,
seleção, e juntando-se.
• A projecção refere-se a restrição das colunas seleccionadas a partir de uma tabela. Usando
projeção,
obter apenas
você as colunas de interesse e não cada coluna possível.
• Seleção refere-se à extração de linhas de uma tabela. Selecção inclui o mais
restrição das linhas extraídos com base em vários critérios ou condições. Isso permite que
obter apenas as linhas que são de interesse e não a cada linha na tabela.
você
• Juntando envolve a ligação de dois ou mais tabelas com base em atributos comuns. Juntando
permite
a ser armazenada
que os dadosna terceira forma normal em tabelas discretas, em vez de em um grande
mesa.
• A DESCREVER comando lista os nomes, tipos de dados e status anulável de todas as colunas
emmesa.
uma

Executar uma instrução SELECT Básica


• A cláusula SELECT determina a projeção de colunas. Em outras palavras, o SELECT
cláusula especifica quais as colunas são incluídos nos resultados retornados.
• A palavra-chave DISTINCT precedente itens na cláusula SELECT faz com que duplicado
combinações desses itens a serem excluídos do conjunto de resultados retornados.
• Expressões e colunas regulares podem ser alias usando a palavra-chave AS, ou deixando um
espaço entre a coluna ou expressão e o alias.
• Naturalmente ocorrendo aspas simples em um caractere literal pode ser selecionada, fazendo
uso
umdeapóstrofo
qualquer adicional por citação que ocorre naturalmente ou o operador apóstrofo
alternativa.
Limitar as linhas recuperadas por uma consulta
• Uma ou mais condições constituem uma cláusula WHERE. Estas condições especificar regras
para
os as
dados
quais
em uma linha deve estar em conformidade para ser elegível para a seleção.
• Para cada linha testada em uma condição, existem termos do lado esquerdo e direito de uma
comparação
operador. Termos em uma condição pode ser valores de colunas, literais ou expressões.
• Operadores de comparação pode testar dois termos em muitas maneiras. testes de igualdade e
desigualdade
comum, massãogama, SET e padrão comparações também estão disponíveis.
• operadores booleanos incluem AND, OR e NOT operadores. A operadores AND e OR
permitir que vários cláusulas condicionais para ser especificado. Estas são algumas vezes
referidos
várias cláusulas
como WHERE.
• O operador não nega o operador de comparação envolvido em uma condição.

Classificar as linhas recuperadas por uma consulta


• Os resultados são classificados usando a cláusula ORDER BY. Linhas recuperadas podem ser
ordenada
uma ou de acordo
mais comde especificando os nomes de coluna ou a sua posição numérica na
colunas
cláusula SELECT.
• A saída classificados podem ser dispostos em ordem crescente ou decrescente utilizando o
DESC
modificador
ou ASCapós os termos de classificação na cláusula ORDER BY.
• A cláusula de limitação de linha permite que uma parte de um conjunto de dados a ser obtida.
Umseropcional
fornecida
deslocamento
para indicar pode
que a posição inicial do conjunto limitado-linha. Quer um número
absoluto ou um
porcentagem de linhas podem ser solicitados. Se a opção com laços for especificado, todas as
linhas com
mesmas chaves
o de classificação como a última linha do conjunto limitado-fila,
adicionalmente, ser buscados.
Ampersand Substituição
• substituição Ampersand facilita a instrução SQL reutilização, fornecendo um meio para
substituir
elementos de uma declaração em tempo de execução. A mesma instrução SQL pode,
portanto,
vezes comser
diferentes
executadoparâmetros
múltipla de entrada.
• As variáveis de sessão persistente pode ser definida explicitamente usando o comando
DEFINE.
comandoo UNDEFINE pode ser usado para resetar tanto implícita (dupla substituição e
e explicitamente definidas as variáveis de sessão.
comercial)
• A VERIFICAR A configuração controla ambientais se o SQL * Plus exibe o velho eo novo
versões de linhas de instrução que contêm variáveis de substituição.

Auto teste
1 . Que consulta irá criar uma projeção da department_name e LOCATION_ID
colunas da tabela de departamentos? (Escolha a melhor resposta.)
A. SELECIONE department_name DISTINCT, LOCATION_ID DE
Departamentos;
B. SELECIONAR department_name, LOCATION_ID dos departamentos;
C. SELECCIONAR DEPT_NAME, LOC_ID DE DEPT;
D. SELECIONAR department_name AS “LOCATION_ID” dos departamentos;

2 . Depois de descrever a tabela EMPREGADOS, você descobre que a coluna SALÁRIO tem
uma Tipo
dados
de NUMBER (8,2). Que valores salário não será permitido nesta coluna?
(Escolha a melhor resposta.)
A. SALÁRIO = 12345678
B. SALÁRIO = 123456.78
C. SALÁRIO = 1234567,8
D. SALÁRIO = 123456
E. SALÁRIO = 12,34
3 . Depois de descrever a mesa de JOB_HISTORY, você descobre que o START_DATE e
colunas END_DATE tem um tipo de dados DATE. Considere a END_DATE expressão -
DATA DE INÍCIO. Escolha duas afirmações corretas sobre esta expressão.
A. Um valor de tipo de dados DATA é devolvido.
B. Um valor do tipo de número é retornado.
C. Um valor de tipo VARCHAR2 é devolvido.
D. A expressão é inválido desde aritmética não pode ser realizada em colunas com DATA
tipos de dados.
E. A expressão é válido desde a aritmética pode ser realizada em colunas com dados DATE
tipos.
4 . Qual afirmação relatórios sobre valores JOB_ID exclusivas da tabela de funcionários?
(Escolher
a melhor resposta.)
A. SELECIONAR JOB_ID dos empregados;
B. SELECIONAR UNIQUE JOB_ID dos empregados;
C. SELECIONE JOB_ID DISTINCT, EMPLOYEE_ID dos empregados;
D. SELECCIONAR JOB_ID DISTINTA DE TRABALHADORES;
5 . Escolha as duas declarações ilegais. As duas afirmações corretas produzem resultados
idênticos.
duas declarações
o ilegais causará um erro a ser levantada.
A. SELECIONAR DEPARTMENT_ID || 'Representa o' || Department_name ||'
Departamento'
como "Departamento Info" dos departamentos;
B. SELECIONAR DEPARTMENT_ID || 'Representa o || Department_name ||'
Departamento'
como "Departamento Info" dos departamentos;
C. selecionar department_id || 'Representa o' || department_name || "Departamento
'Departamento'
Info" dos departamentos;
D. SELECIONAR DEPARTMENT_ID representa o Departamento department_name como
"Departamento Info" dos departamentos;
6 . Que duas cláusulas da instrução SELECT facilitar a seleção e projeção? (Escolha o
melhor resposta.)

A. SELECT, FROM
B. ORDER BY, ONDE
C. SELECT, ONDE
D. SELECT, ORDER BY
7 . Escolha a cláusula ONDE que extrai os valores department_name contendo o
caráter literal er da tabela DEPARTMENTS. As cláusulas SELECT e FROM são
Department_name SELECT FROM DEPARTAMENTOS. (Escolha a melhor resposta.)
A. ONDE department_name EM ( '% E% r');
B. ONDE department_name COMO '% er%';
C. ONDE department_name ENTRE 'E' e 'r';
D. ONDE department_name CONTÉM 'E% r'
8 . Qual das seguintes condições são equivalentes entre si? (Escolha todos os que se aplicam.)
A. WHERE SALÁRIO <= 5000 E SALÁRIO> = 2000
B. ONDE salariais em (2000,3000,4000,5000)
C. ONDE salarial entre 2000 AND 5000
D. WHERE SALÁRIO> 2000 E SALÁRIO <5000
E. WHERE SALÁRIO> = 2000 E <= 5000
9 . Escolha duas declarações falsas sobre a cláusula ORDER BY. (Escolha a melhor resposta.)
A. Ao usar a cláusula ORDER BY, deve ser sempre acompanhada por uma fileira de
limitação
cláusula.
B. A cláusula ORDER BY pode aparecer em uma instrução SELECT que não contém um
Cláusula WHERE.
C. A ORDEM BY especifica uma ou mais termos, através da qual as linhas recuperadas
sejam
classificadas. Esse termo só pode ser nomes de coluna.
D. triagem posicional é conseguido através da especificação na cláusula ORDER BY a
numérico
posição de uma coluna como ele aparece na lista SELECT.
10 . Ao usar variáveis de substituição e comercial na consulta a seguir, quantas vezes vai
você será solicitado a entrada de um valor para a variável chamada JOB a primeira vez que
esta consulta é
executado?
FIRST_NAME SELECT, '& JOB'
DE FUNCIONÁRIOS
ONDE JOB_ID LIKE '%' || & JOB || '%'
E '&& JOB' entre 'a' e 'Z';
(Escolha a melhor resposta.)
A. 0
B. 1

C. 2
D. 3
11 . Ao usar uma cláusula de limitação linha na consulta seguinte, a informação que é
empregado
devolvida?
employee_id SELECT, first_name
DE funcionários
ORDER BY employee_id
OFFSET 5 linhas FETCH próximos 5 apenas linhas;
(Escolha a melhor resposta.)
A. Os cinco funcionários com maior employee_id
B. Os cinco funcionários com o menor employee_id
C. Os cinco funcionários com a 6 ª a 10 ª menor employee_id
D. Os cinco funcionários com a 6 ª a 10 ª maior employee_id
E. Os dez funcionários com o menor employee_id
F. Nenhum dos anteriores

Respostas de auto-teste
1. B . Uma projecção é uma restrição intencional das colunas devolvidas a partir de uma
tabela.
A , C , e D estão incorrectos. Um é eliminado já que a questão não tem nada a ver com
duplicatas, distintividade, ou singularidade de dados. C incorrectamente selecciona colunas
inexistentes
chamado DEPT_NAME e LOC_ID de uma tabela inexistente chamado DEPT. D retorna
apenas
das colunas
um solicitadas: department_name. Em vez de projetar além disso, o
LOCATION_ID coluna da tabela de departamentos, ele tenta alias o
coluna department_name como LOCATION_ID.
2. A e C . Colunas com o tipo de número (8,2) de dados pode armazenar, no máximo, oito
que, dígitos, de dois desses dígitos são à direita do ponto decimal. Embora um e C são
no máximo,
as respostas corretas, note que uma vez que a questão é formulada de forma negativa, esses
valores
não sãoser armazenados numa tal coluna. A e C não são permitidas porque eles contêm
poder
oito e sete números inteiros dígitos, respectivamente, mas o tipo de dados é limitada para
seis dígitos de números inteiros e dois dígitos fracionários.
armazenar
B , D , e E são incorrectas. B , D , e E pode ser legitimamente armazenado neste tipo de
dadossão
portanto, e, as respostas incorretas para essa pergunta. D mostra que os números sem
parte são valores legítimos para esta coluna, enquanto o número de dígitos no número
fraccionada
inteiro
porção não excede seis dígitos.
3. B e E . O resultado de operações aritméticas entre dois valores de data representa um
dias.certo número de
A , C , e D estão incorrectos. É um erro comum que esperar o resultado da aritmética
entre dois valores de data para ser uma data, bem, então A pode parecer plausível, mas é
falso.

4. D . Valores JOB_ID únicas são projetados a partir da tabela EMPREGADOS, aplicando


palavra-chave
o DISTINCT apenas a coluna JOB_ID.
A , B , e C são incorrectas. A retorna uma lista irrestrita de valores JOB_ID incluindo
duplicados, B faz uso da palavra-chave únicas no sentido incorrecto, e C selecciona o
distinta combinação de valores JOB_ID e EMPLOYEE_ID. Isso tem o efeito de voltar
todas as linhas da tabela EMPREGADOS, uma vez que a coluna EMPLOYEE_ID contém
única
valores para cada registro de empregado. Além disso, C retorna duas colunas, o que não é o
queoriginalmente
foi é solicitado.
5. B e D . B e D representam as duas declarações ilegais que irá retornar erros de sintaxe
que são
se executados. Esta é uma pergunta complicada, porque ele pede para as declarações
ilegais
as e não legais. B é ilegal porque está faltando uma única citação envolvendo o
declarações
personagem
literal representa o . D é ilegal porque não fazer uso de aspas simples para delimitar a sua
literais de caracteres.
A e C são incorrectas. A e C são as declarações legais e, portanto, no contexto de
a questão, são as respostas incorretas. A e C parecem ser diferentes, uma vez que o SQL
declarações diferem no caso e um usa a palavra-chave alias como, ao passo que C só deixa
um
entreespaço
a expressão e o alias. No entanto, ambos A e C produzem resultados idênticos.
6. C . A cláusula SELECT facilita projecção especificando uma lista de colunas a ser
projetada a partir de uma tabela, enquanto a cláusula WHERE facilita a selecção, limitando
as linhas com base em suas condições.
recuperado
A , B , e D são incorrectas. A , B , e D são incorrecta porque a cláusula de Especifica
a fonte das linhas que estão sendo projetadas e a cláusula ORDER BY é usada para
classificar
linhas a
selecionadas.
7. B . O operador LIKE testa a coluna department_name de cada linha para valores
que contêm os caracteres er . Os símbolos percentuais, antes e após o caractere literal
indicam que todos os caracteres que encerram o er literal são permitidas.
A , C , e D estão incorrectos. A e C são sintacticamente correcto. A utiliza o operador
que éIN,
usado para testar a adesão set. C testa se o valor do alfabética
Coluna department_name é entre a carta de e e a letra r . Finalmente, D usa o
palavra contém , o que não pode ser usado neste contexto.
8. A e C . Cada um destes testes condições para valores salariais em faixa de US $ 2.000 a
$5,000.
B , D , e E são incorrectas. B exclui valores como US $ 2.500 de seu conjunto. D exclui
o de limite de US $ 2.000 e US $ 5.000, e E é ilegal, uma vez que está faltando o
valores
referência nome da coluna após o operador.
salário
9. A e C . A cláusula de limitação de linha é opcional e os termos especificado em uma
cláusula
ordempode
PELO
incluir nomes de colunas, ordenação posicional, valores numéricos e
expressões.
B e D estão incorretas porque elas são verdadeiras.
10. D . A primeira vez que esta instrução é executada, duas variáveis de substituição único e
são encontrados
comercial antes da terceira variável dupla substituição e comercial. Se a primeira
referência
na primeira linha da consulta continha uma dupla substituição e comercial, você seria
solicitado a entrada de um valor apenas uma vez.

A , B , e C são incorrectas. Estes são erradas, uma vez que você for solicitado três vezes
entrada
parade um valor para a variável de substituição TRABALHO. Em execuções
asubseqüentes desta
mesma sessão, declaração
você não será em
solicitado para introduzir um valor para esta variável.
11. C . Os resultados são ordenados do menor para o maior employee_id. O deslocamento 5
limita
cláusula
as linhas retornadas para o segundo conjunto de cinco registros de funcionários.
A , B , D e E estão incorrectos. As cláusulas OFFSET e order_by determinar quais
segmento do conjunto de resultados é extraído e a ordem de classificação, enquanto a
cláusulalinhas
quantas FETCH sãodetermina
finalmente recuperado.
CAPÍTULO 8

Funções de Uma Única Linha e conversão

Objetivos do exame
Neste capítulo, você vai aprender a
• 061.3.1 Descrever vários tipos de funções disponíveis em SQL
• 061.3.2 Uso de caracteres, número e Funções de data em instruções SELECT
• 061.4.1 Descrever vários tipos de funções de conversão que estão disponíveis no SQL
• 061.4.2 Use as funções de conversão TO_CHAR, to_number, e TO_DATE
• 061.4.3 Aplicar expressões condicionais em uma instrução SELECT
As funções discutidas neste capítulo são comumente usados built-in programas PL / SQL,
embaladospela
fornecido e Oracle. Alguns operam em numérico, data e dados de caracteres, enquanto outros
converter
entre os diferentes
dados tipos de dados escalar. As funções podem ser aninhadas, e algumas funções são
destinadas a interacções com NULL. As funções condicional CASE e decodificar têm a capacidade
simplificando
para exibir resultados diferentes dependendo de valores de dados, que fornecem if-then-else lógica
no uma
de contexto
consulta SQL.

Descrever e usar caracteres, número e data de


Funções em SQL
funções SQL são geralmente divididos entre aqueles que calcular e retornar um valor para cada linha
em uma de dados e aqueles que retornam um único valor agregado para todas as linhas. A
conjunto
conversão
funções serão
de maiúsculas
examinados,
e minúsculas
seguido por as funções de manipulação de caracteres, numéricos, e de
data.
Definir uma Função
Uma função é um programa escrito para aceitar, opcionalmente, os parâmetros de entrada, executar
uma operação,
retornar um únicoe valor. A função retorna apenas um valor per execução.
Três importantes componentes formam a base da definição de uma função. O primeiro é o
parâmetro
Lista. de entrada
Ele especifica zero ou mais argumentos que podem ser passados para uma função de entrada
como argumentos
Estes para o processamento.
ou parâmetros podem ser opcionais e de diferentes tipos de dados. O segundo
componente
o tipo de dados
é do valor resultante. Após a execução, somente um valor de um tipo de dados
predeterminado
retornado pela função.
é O terceiro encapsula os detalhes do processamento executadas pela
função e contém o código de programa que opcionalmente manipula os parâmetros de entrada,
cálculos e das operações, e gera um valor de retorno.
executa
Uma função é frequentemente descrita como uma caixa negra que leva uma entrada, executa um
retorna
cálculo,
um valor.
e Em vez de se concentrar em seus detalhes de implementação, é mais útil para se
concentrar
as características
em que funções embutidas fornecem.
As funções podem ser aninhados dentro de outras funções, tais como f1 (x, y, F2 (a, b), z), onde
parâmetros
F2 leva de
dois
entrada, a e b, e a terceira forma de quatro parâmetros submetidos a F1. As funções
operar em qualquer tipo de dados; os mais comuns são caracteres, data e dados numéricos. Estes
podem
operandos
ser colunaspode
ou expressões.
Como exemplo, considere uma função que calcula a idade de uma pessoa. A função AGE leva
um
parâmetro de entrada data, que é seu aniversário. O resultado retornado pela função idade é um
representando a idade de uma pessoa. O cálculo caixa-preta envolve a obtenção da diferença em
número
entre a data atual e o parâmetro de entrada aniversário.
anos

Tipos de Funções
As funções podem ser amplamente divididas em duas categorias: aquelas que operam em uma única
linha de que
aqueles cadaprocessar
vez e várias linhas. Esta distinção é vital para a compreensão do contexto mais
amplo
as funções
em utilizadas.

Funções de Uma Única Linha


Existem várias categorias de -fila única funções, incluindo caracteres, numérico, data, conversão,
e geral. Estas são funções que operam em uma linha de um conjunto de dados de cada vez. Se uma
consultaa função
linhas, seleciona
é executada
dez dez vezes, uma vez por linha com os valores a partir dessa linha como
função.
entrada para o
Esta consulta selecciona duas colunas da tabela de REGIÕES juntamente com uma expressão
função
utilizando
COMPRIMENTO
o com a coluna REGION_NAME:

O comprimento da coluna REGION_NAME é calculado para cada uma das quatro linhas no
REGIÕES mesa; a função executa quatro vezes separados, retornando um resultado por linha.
funções de uma única linha manipular os itens de dados em uma fila para extrair e formatá-los
propósitos.
para exibição
Os valores de entrada para uma função de linha única podem ser constantes especificado
pelo utilizador
dados de coluna,
ouvariáveis,
literais, ou expressões opcionalmente fornecido por outras funções de uma única
linha aninhados.
assentamento de ofunções de uma única linha é uma técnica vulgarmente usada. As funções podem
retornar
tipo um valor
de dados com um
diferente dos seus parâmetros de entrada. A consulta anterior mostra como a função
aceita parâmetro de entrada um caractere e retorna um resultado numérico.
COMPRIMENTO
Para além da sua inclusão na lista SELECT de uma consulta SQL, podem ser utilizados funções
na WHERE
de uma única
e ORDERlinha BY cláusulas.

Funções de várias linhas


Como o nome sugere, esta categoria de funções opera em mais de uma linha de cada vez. Os usos
típicos
de de várias linhas funções incluem o cálculo da soma ou média de valores numéricos ou coluna
contando o número total de registros em conjuntos. Estas são algumas vezes conhecido como
agregação
funções e são
ou explorados
grupo no Capítulo 9 .

Usando funções Caixa de Conversão


Numerosas fontes, incluindo interfaces de aplicativos e programas em lote, pode salvar dados de
caracteres
mesas. Nãoemé seguro assumir que os dados personagem foi introduzido de forma caso consistente. o
caráter de conversão de caso funções têm duas finalidades importantes. Eles podem ser usados, em
aprimeiro
aparência
lugar,
de um
paraitem
modificar
de dados de caracteres para fins de exibição e, por outro, para torná-los
para operações de comparação. É mais simples para procurar uma string usando um formato
consistentemente
consistente
testando caso,
cada em vez dede caracteres maiúsculos e minúsculos que poderia coincidir com a string.
permutação
Lembre-se que estas funções não alteram os dados armazenados em tabelas. Eles ainda fazem parte
da leitura
única consulta SQL.
Estas funções esperar parâmetros de cadeia que podem consistir em strings literais, coluna de
valores,
caracteres
expressões de caracteres ou valores numéricos e de data (que são convertidos
implicitamente em
cordas).

A função MENOR
A função MENOR substitui os caracteres maiúsculos em uma string com os seus equivalentes em
Sua sintaxe é mais baixo ( s ). A consulta a seguir ilustra o uso desta função:
minúsculas.

Suponha que a data atual do sistema é de 17-DEZ-2014. As cordas 200, SQL, e 17-Dez-2014 são
devolvida. Note que os resultados de data pode variar de acordo com os parâmetros de sessão. O
numérico e são
expressões dataavaliadas e implicitamente convertido em dados de caracteres antes da função
inferior é
executado.
A função inferior é usada na seguinte condição para localizar os registros com as letras U
e R , em qualquer caso, adjacentes uns aos outros no campo LAST_NAME:

Considere escrever uma consulta alternativa para retornar os mesmos resultados sem o uso de
umaPode
função. conversão caso
ser feito da seguinte forma:

Esta consulta funciona, mas é complicado, e o número de cláusulas OR requerida aumenta


exponencialmente à medida que o comprimento das cordas de busca aumenta.
A função UPPER
A função UPPER é o oposto lógico da função inferior e substitui o minúsculas
caracteres em uma determinada seqüência com seus equivalentes em maiúsculas. Sua sintaxe é
UPPER (ilustra
consulta s ). Ososeguintes
uso desta função:

Esta consulta extrai as linhas da tabela de países onde os valores COUNTRY_NAME


conter as letras U, S , e A (em qualquer dos casos) em que ordem.

A Função INITCAP
A função INITCAP converte uma cadeia de caracteres em caso de maiúscula. Ele é frequentemente
usado
fins depara
apresentação.
dados As primeiras letras de cada palavra da string são convertidos para suas letras
equivalentes, enquanto as restantes letras de cada palavra são convertidos nos seus equivalentes
maiúsculas
minúsculas.
palavra UMA uma cadeia de caracteres adjacentes separadas por um espaço ou sublinhado,
é geralmente
mas outras como o símbolo percentual, ponto de exclamação ou um cifrão são palavra válida
personagens
separadores. Pontuação ou caracteres especiais são considerados como separadores de palavras
válidas.
A função INITCAP pode tomar apenas um parâmetro. Sua sintaxe é INITCAP ( s ). Os seguintes
consulta ilustra o uso desta função:

A consulta retorna% Cap Init Cap Ou Init_Cap Ou Init.

Exercício 8-1: Use as funções Caixa de Conversão Construir uma consulta para recuperar uma
lista de todos
valores FIRST_NAME e LAST_NAME da tabela TRABALHADORES onde FIRST_NAME
contém o li cadeia de caracteres.

1. Inicie o SQL Developer ou SQL * Plus e ligar para o esquema HR.


2. O WHERE deve comparar os valores da coluna FIRST_NAME com um padrão de
caracteres contendo todas as combinações possíveis de caso de o li cadeia. Portanto, se o
FIRST_NAME contém as cadeias de caracteres Li, li, li, ou Li, essa linha deve ser
recuperado.
3. O operador LIKE é utilizado para a correspondência de caracteres, e quatro combinações
podem
com ser
quatro
extraídos
WHERE separadas pela palavra-chave OR. No entanto, a conversão caso
funções podem simplificar a condição. Se a função inferior é usada na FIRST_NAME
coluna, a comparação pode ser feito com uma condição WHERE cláusula. O UPPER ou
INITCAP funções também poderiam ser utilizados.
4. Executar esta instrução retorna nomes dos funcionários que contêm o li personagens:

Usando funções de manipulação de caracteres


Os manipulação de caracteres funções são, possivelmente, alguns dos recursos mais poderosos para
emergir
da Oracle. A sua utilidade na manipulação de dados é quase sem par, e muitos temperado
profissionais técnicos chicotear juntos um script rápido para massagear itens de dados usando essas
Nidificação destas funções é comum. O operador de concatenação (||) é geralmente utilizado em vez
funções.
função CONCAT. O comprimento, INSTR, SUBSTR, e substitui funções são muitas vezes utilizados
do
juntos, como são RPAD, LPAD e TRIM.

A função CONCAT
A função CONCAT junta-se dois caracteres literais, colunas ou expressões para se obter uma maior
expressão de caracteres. A função CONCAT tem dois parâmetros. Sua sintaxe é CONCAT ( S1, S2 ),
onde s1 e s2 representam strings literais, valores coluna de caracteres, ou expressões que resultam
valores de caracteres. A consulta a seguir ilustra o uso desta função:
em
O segundo parâmetro para a função CONCAT é SYSDATE, que retorna o atual sistema
encontro. Este valor é convertido implicitamente em uma string para que o literal no primeiro
parâmetro é Se a data do sistema é 17-DEC-2014, a consulta retorna a seqüência de hoje é: 17-
concatenada.
DEC-2014.
Considere usar a função CONCAT para se juntar três termos para retornar uma cadeia de
CONCAT
caracteres.
leva Desde
apenasadois parâmetros, só é possível juntar dois termos com uma instância desse
função. Uma solução é a função ninho CONCAT dentro de outra função CONCAT, como mostrado
Aqui:

A primeira função CONCAT tem dois parâmetros; a primeira é a Outer1 literal, enquanto que o
umasegundo
função CONCAT
é aninhada. A segunda função CONCAT tem dois parâmetros: o primeiro é o

literal Inner1, enquanto que o segundo é o Inner2 literal. Esta consulta resulta na seguinte seqüência:
Outer1
Inner1 Inner2. funções aninhados estão descritos numa secção posterior. O operador de
concatenação
discutido no Capítulo
|| 7 também pode ser usado para unir estes termos.

A função de duração
A função LENGTH retorna o número de caracteres que constituem uma cadeia de caracteres. Em
branco
espaços, separadores, e caracteres especiais são contados pela função COMPRIMENTO. A função
leva apenas um parâmetro string. Sua sintaxe é COMPRIMENTO ( s ). Considere a seguinte
COMPRIMENTO
consulta:

A função COMPRIMENTO é usada para extrair os valores de COUNTRY_NAME com


dez comprimentos superiores
caracteres da tabela de países.

As Funções LPAD e RPAD


As funções LPAD e RPAD, também conhecido como bloco de esquerda e funções almofada direito ,
retornar umacom
acolchoada string
um número especificado de caracteres à esquerda ou à direita de uma string dada,
respectivamente.
cadeias o utilizados para preenchimento incluem caracteres literais, os valores da coluna,
de caracteres
expressões,
espaços (o padrão),
branco tabulações e caracteres especiais.
As funções LPAD e RPAD tomar três parâmetros. Seus sintaxes são LPAD ( S, N, P ) e
RPAD ( s, n, p ), onde s representa a cadeia de origem, n representa o comprimento final da cadeia
voltou, e p especifica a cadeia de caracteres a ser usado como preenchimento. Se LPAD é usado, o
caracteres p são adicionados à esquerda da cadeia de origem s até que se atinge o comprimento de n .
estofamento
Se RPAD édeusado,
caracteres o
enchimento P são adicionados ao lado direito da cadeia de origem s até que se atinge o
comprimento
o parâmetro ndeé menor
n . Note
doque
queseou igual ao comprimento da cadeia de origem s , em seguida, sem
epreenchimento
apenas os primeiros
ocorre n caracteres de s são devolvidos. Considere as consultas mostradas na Figura
8-1 .
Figura 8-1 Usando as funções LPAD e rpad

A primeira consulta não almofada os dados, e os resultados não são tão legível como a saída do
segunda consulta. RPAD é usado para adicionar espaços onde necessário a concatenação de
first_name e que cada nome é 18 caracteres de comprimento, enquanto LPAD adiciona espaços
last_name até
para osalário
valor início até
do cada salário é de 6 caracteres.

A função TRIM
A função TRIM remove caracteres a partir do início ou final de valores de caracteres, para se obter
um
ponto potencialmente mais curto. A função TRIM tem um parâmetro composta de um componente
obrigatório
um opcional.
e Sua sintaxe é TRIM ([ arrastando | levando | tanto ] trimstring de s ). A string a ser
aparadas ( s ) é obrigatório. Os seguintes pontos listar as regras que regem o uso desta função:

• TRIM ( s ) remove espaços de ambos os lados da cadeia de entrada.


• TRIM (arrastando trimstring de s ) remove todas as ocorrências de trimstring a partir da
extremidade
s se ele estiver
da cadeia
presente.
• TRIM (levando trimstring de s ) remove todas as ocorrências de trimstring desde o início do
corda s se ele estiver presente.
• TRIM (ambos trimstring de s ) e TRIM ( trimstring de s ) remover todas as ocorrências de
trimstring desde o início e final da string s se ele estiver presente.

A consulta anterior retorna as cordas invisíveis, **** oculto e **** escondido. Note que, embora
um caractere guarnição for especificado, várias ocorrências serão cortados se forem
presente.
consecutivamente

A Função -INSTRUÇOÑES (Na-String)


A função INSTR localiza a posição de uma seqüência de pesquisa dentro de uma dada string. Ele
retorna onanumérico
posição qual o n th ocorrência da cadeia de pesquisa começa, em relação a uma posição de início
Se a cadeia de pesquisa não estiver presente, a função INSTR retorna zero.
especificada.
A função INSTR leva dois opcional e dois parâmetros obrigatórios. A sintaxe é
INSTR ( cadeia de origem, seqüência de pesquisa , [ pesquisa posição inicial ], [ ocorrência
para a posição
enésimo de
ou início
]).éO1,valor
ocorrência de pesquisa
a padrão
primeira é 1, ou
ocorrência. o início as
Considere daseguintes
seqüênciaperguntas:
de origem . O valor padrão para o
enésimo

Consulta 1 pesquisas desde o início da cadeia de origem para a primeira ocorrência do hash e
posição
retorna
2. Consulta 2 pesquisas para o hash de posição 5 e encontra a próxima ocorrência na posição
Consultar 3 pesquisas para o hash da posição 3 e encontra a quarta ocorrência na posição 10.
6.

DICA A função INSTR é frequentemente usado em combinação com a função SUBSTR em


programaspara
projetado utilitários
extrair dados codificados de fluxos de dados eletrônicos.

A função SUBSTR (subsequência)


A função SUBSTR extrai uma subsequência de um comprimento especificado da cadeia de origem
que seposição.
dada inicia num
Se a posição de início é maior do que o comprimento da cadeia de origem, será
retornado
número denulo.
caracteres
Se o para extrair a partir de uma dada posição de arranque for maior do que o
comprimento
cadeia, o segmento
da fonte
é devolvido a subsequência da posição inicial para o final da cadeia.
A função SUBSTR tem três parâmetros, com os dois primeiros sendo obrigatória. Sua sintaxe é
SUBSTR ( cadeia de origem, a posição de partida , [ número de caracteres para extrair ]). O
número padrão
caracteres para extrair
de é igual ao número de caracteres a partir da posição inicial para o final do
seqüência de origem . Considere as seguintes perguntas:

Consulta 1 extrai a subcadeia começando na posição 5. Uma vez que o terceiro parâmetro não
for especificado,
o comprimento de extracção padrão é igual ao número de caracteres a partir da posição inicial para a
extremidade de
a cadeia de origem, que é 6. Assim, para consulta 1, o substring retornado é 5 # 7 # 9 #. consulta 2
retorna os três caracteres que ocupam posições 5-7, que formam a subcadeia 5 # 7. Consulta 3
começa em
posição -3. O parâmetro posição inicial negativo instrui o Oracle para começar à procura de três
personagens do final da cadeia. Por conseguinte, a posição de início é de três caracteres a partir da
aextremidade
corda, que édea posição 8. O terceiro parâmetro é 2, o que resulta na subsequência # 9 sendo
devolvida.

A função REPLACE
A função REPLACE substitui todas as ocorrências de um item de pesquisa em uma seqüência de
origemdecom
prazo um
substituição. Se o comprimento do termo de substituição é diferente daquele do item de
pesquisa,
os comprimentos
em seguida,
das cordas e retornados de origem será diferente. Se a cadeia de pesquisa não for
encontrado,
cadeia de origem
o é devolvido inalterado. A função REPLACE tem três parâmetros, com os dois
sendo obrigatória. Sua sintaxe é REPLACE ( cadeia de origem, item de pesquisa , [ termo de
primeiros
substituição
prazo ]). Se o parâmetro for omitido, cada ocorrência do item de pesquisa é removido do
de substituição
seqüência de origem . Em outras palavras, o item de pesquisa é substituída por uma cadeia vazia.
Considere o seguinte
consultas:

O hash na consulta 1 é especificado como o carácter de pesquisa, ea cadeia de substituição é


->. O
especificada
símbolo dacomo
mistura ocorre cinco vezes na origem, e a cadeia resultante é 1-> 3-> 5-> 7-> 9->.
não Consulta 2 não especificar uma cadeia de substituição. O comportamento padrão é, portanto,
para substituir
cadeia com uma a busca
cadeia vazia; Isto, na prática, retira o carácter de pesquisa completamente a partir da
resultando na seqüência de 13579 a serem devolvidos.
fonte,

Usando funções numéricas


Há uma gama de built-in funções numéricas fornecido pela Oracle que rivaliza com a matemática
caixas de ferramentas de pacotes de planilhas populares. Um diferencial significativa entre numérico
e outros é que eles aceitam e retornar apenas os dados numéricos. A Oracle fornece funções
funções
numéricas para
resolvendo trigonométricas, exponenciação, e problemas logarítmicas, entre outros. Este guia
concentra-se
três funções de
emuma única linha numéricos : redondo, TRUNC e MOD.

A função numérica ROUND


A função ROUND executa uma operação de arredondamento em um valor numérico baseado em
precisão especificada. O valor devolvido é arredondado para cima ou para baixo, dependendo do
decimal
valor
do dígito
numérico
significativo na posição precisão decimal especificado. Se a precisão decimal especificado
é N , o número significativo para o arredondamento é encontrado ( n + 1) lugares para a direita do
éponto
negativo,
decimal.
o algarismo
E se significativo para o arredondamento é encontrado n lugares para a esquerda
do o
Se ponto
valordecimal.
numérico do dígito significativo é maior ou igual a 5, a “arredondar” ocorre;
Caso contrário, um “down round” ocorre.
A função ROUND tem dois parâmetros. Sua sintaxe é ROUND ( número de fonte, decimal
precisão ). O parâmetro número de fonte representa qualquer valor numérico. A precisão decimal

parâmetro especifica o grau de arredondamento e é opcional. Se o parâmetro de precisão decimal é


ausente, o grau padrão de arredondamento é zero, o que significa que a fonte é arredondado para o
inteiro mais próximo
número.
Considere os graus decimais listados na Tabela 8-1 para o número 1.601,916. O decimal
valores
negativo
de precisão estão localizados à esquerda do ponto decimal, enquanto os valores positivos são
encontrados ao
certo.

Tabela 8-1 Descrições decimal de precisão

Se o parâmetro de precisão decimal é um, então o número de fonte é arredondado para o décimo
Se émais
dois,próximo.
então a fonte é arredondado para o centésimo mais próximo, e assim por diante. As
seguintes
ilustrar o uso
consultas
desta função:

Consulta 1 tem um parâmetro decimal de precisão ( n ) de 1, o que implica que o número de


arredondado
fonte é para a décima mais próxima. Uma vez que os centésimos ( n + 1) é um dígito (menos
do que 5),
ocorre, e ode
número
arredondamento
retornado épara
1601,9.
baixo
O parâmetro precisão decimal na consulta 2 é 2, então a
número de fonte é arredondado para o centésimo mais próximo. Uma vez que a unidade é de 6
milésimos (maiorocorre,
arredondamento do quee5),
o número retornado é 1.601,92. O parâmetro precisão decimal do
consulta é 3 -3. Uma vez que é negativo, o dígito significativo para arredondamento é encontrado 3
lugaresdecimal,
ponto à esquerda
no dígito
do centenas, que é 6. Como a unidade de centenas é 6, arredondamento ocorre,
eo número retornado é 2000. Consulta 4 tem dispensado com o parâmetro de precisão decimal. este
implica que o arredondamento é feito para o número inteiro mais próximo. Desde a décima unidade
é 9, o númeroeé1602 é retornado.
arredondado,

A função numérica TRUNCAR (truncado)


A função TRUNCAR executa uma operação de truncagem em um valor numérico baseado em
precisão
decimal especificada. A truncagem numérico é diferente de arredondamento na medida em que
diminui os números

além da precisão decimal especificado e não tenta arredondar para cima ou para baixo se o decimal
precisão é positivo. No entanto, se a precisão decimal ( n ) for negativa, o valor de entrada é zerada
para baixo a partir do n th posição decimal.
A função TRUNC tem dois parâmetros. Sua sintaxe é TRUNC ( número de fonte, decimal
precisão ). O número de fonte representa qualquer valor numérico. A precisão decimal especifica o
grau de truncamento e é opcional. Se o parâmetro de precisão decimal é ausente, o decimal padrão
precisão é zero, o que significa que o número de fonte é truncado para um valor inteiro.
Se o parâmetro de precisão decimal é 1, então o número de fonte é truncado em sua unidade
é 2, décimos.
será truncado
Se isso
em sua unidade centésimos, e assim por diante. As consultas a seguir ilustram o
uso desta
função:

Consulta 1 tem um parâmetro de precisão decimal de 1, o que implica que o número de fonte é
truncado na sua unidade décimos, e o número retornado é 1601,9. O parâmetro precisão decimal ( n
) em
consulta 2 é 2, então o número de fonte é truncado em sua unidade centésimos, eo número retornado
é1.601,91. Note-se que este resultado seria diferente se uma operação de arredondamento foram
realizados
dígito na posição
desde o( n + 1) é de 6 (maior do que 5). Consulta 3 especifica um número negativo (-3)
sob a sua Três
precisão. formacasas
decimal
para a esquerda do ponto decimal implica que o truncamento acontece no
centenas dígitos, como mostrado anteriormente na Tabela 8-1 . Portanto, o número de fonte é zerado
para baixo
centenas dígitos
de sua(6), e o número retornado é 1000. Finalmente, a consulta 4 não tem um decimal
parâmetro de precisão, o que implica que a truncagem é feito no grau do número inteiro de precisão.
número retornado é 1,601.
o

A Função de MOD (Modulus)


A função MOD retorna o resto numérico de uma operação de divisão. Dois números, o dividendo
(Número que está sendo dividido) e o divisor (número de dividir por), são fornecidos, e uma
éoperação
desempenhado.
de divisão
Se o divisor é um fator do dividendo, MOD retorna zero, pois não há restante.
Se o divisor é zero, nenhuma divisão por zero erro é retornado, e a função MOD retorna o dividendo
em vez de. Se o divisor é maior do que o dividendo, em seguida, a função MOD retorna o dividendo
como seu Isso é porque ele divide zero vezes no divisor, deixando o restante igual ao
resultado.
dividendo.
A função MOD tem dois parâmetros. Sua sintaxe é MOD ( dividendo, divisor ). O dividendo e
divisor parâmetros representam um literal numérico, coluna, ou expressão, que pode ser negativo ou
positivo. As consultas a seguir ilustram o uso desta função:

Consulta 1 divide 6 por dois perfeitamente, obtendo-se 0, quando o restante. Consulta 2 divide 5
compor
o restante
3, obtendo-se
2. Pesquisa
um 3 tentativas para dividir 7 em 35. Uma vez que o divisor é maior do que o
dividendo ,

o número 7 é retornado como o valor do módulo. Consulta 4 possui uma fração decimal como o
dividendo .por 5,2 3 produz um com o restante 2,2.
Dividindo

DICA Qualquer número par dividido por dois naturalmente não tem restante, mas números ímpares
dividido
ter sempre
porum
dois
resto de 1. Por conseguinte, a função de MOD é muitas vezes usado para distinguir
entre mesmo
e números ímpares.
Trabalho com datas
Os data funções fornecem uma maneira conveniente para resolver problemas relacionados com a
adata
parsem
de anos
a necessidade
bissextos ou
de omanter
número de dias em determinados meses. Em primeiro lugar, descrever o
armazenamento
O formato de data
depadrão
datas emáscaras antes de examinar a função SYSDATE. Nós, então, discutir data
aritméticas e a manipulação data funções : ADD_MONTHS, MONTHS_BETWEEN,
LAST_DAY, NEXT_DAY, ROUND e TRUNC.

Data de armazenamento no banco de dados


As lojas de banco de dados data internamente em um formato numérico que suporta o
armazenamento
mês de século,
e dia detalhes, ano,informações de tempo como horas, minutos e segundos. Quando
bem como
acesso a informações de data de uma tabela, o formato padrão dos resultados é composto por dois
dígitos que o dia, uma abreviação de três letras do mês, e dois dígitos representam o ano
representam
componente. Para evitar anomalias que surgem com carcaça tipo automático, as datas literais no
seguintes consultas foram convertidos em datas por uma função de conversão TO_DATE discutido
mais tarde
neste capítulo. Resultados exactos podem variar devido a diferenças de parâmetros sessão NLS.

A função SYSDATE
A função SYSDATE não tem parâmetros e retorna o atual sistema data e hora de acordo com
o servidor de banco de dados. Se o servidor de banco de dados é instalado com AMERICAN como o
idioma SYSDATE
função padrão, o retorna os componentes DD-MON-RR da data atual do sistema do servidor. Se o
servidor de banco de dados está localizado em um fuso horário diferente de um cliente consultando o
banco de
tempo retornado
dados, apor
data
SYSDATE
e será diferente da hora local na máquina do cliente. Aqui está uma
consulta para
recuperar a data servidor de banco de dados:

data aritmética
A equação a seguir ilustra um princípio importante sobre data aritmética :
Date1 - data2 = Num1 .
A data pode ser subtraída da outra data. A diferença entre dois artigos da data representa o
número de dias entre eles. Qualquer número, incluindo as fracções, pode ser adicionado ou subtraído
de um

artigo da data. Neste contexto, o número representa um número de dias. A soma ou a diferença entre
um
número e uma data item de sempre retorna um item de data. Este princípio implica que a adição,
multiplicação,
divisão de doisou
artigos da data não é permitido.

A Função MONTHS_BETWEEN
A função MONTHS_BETWEEN retorna o número de meses entre duas data obrigatória
parâmetros. Sua sintaxe é MONTHS_BETWEEN ( date1, date2 ). A função calcula a diferença
em meses de 31 dias entre data1 e data2 . Se date1 ocorre antes date2 , um número negativo é
devolvida. A diferença entre os dois parâmetros de data pode consistir em um número inteiro que
representa o número de meses entre as duas datas e um componente fracionário que representa o
dias e tempo restante (com base em um mês de 31 dias) após a diferença entre o número inteiro e
meses é calculado. Um número inteiro com nenhuma parte fracionária é devolvido se os
anos
componentes
datas sendo comparados
dia do são os mesmos ou o último dia de suas respectivas meses.
A consulta a seguir ilustra a função MONTHS_BETWEEN:

Suponha que a data atual é de 16-APR-2009. Esta consulta retorna 1 como o número de meses
entre 16-APR-2009 e 16-MAR-2009.
EXAME TIP Um erro comum é assumir que o tipo de dados de retorno de funções de uma única
mesmo
linha é aque a categoria a função pertence. Isso só é verdade das funções numéricas. caráter e
funções de data pode retornar valores de qualquer tipo de dados. Por exemplo, a função de caráter
INSTR de
função eo data MONTHS_BETWEEN tanto retornar um número. Também é comum supor
que a diferença entre duas datas é uma data, quando na verdade ele é um número.
erroneamente

A Função ADD_MONTHS
A função ADD_MONTHS retorna um item de data calculada pela adição de um determinado
número de meses valor de data. A função ADD_MONTHS leva dois parâmetros obrigatórios. Sua
a um determinado
sintaxe é
ADD_MONTHS ( data de início, número de meses ). A função calcula a data de destino depois de
o número especificado de meses para a data de início . O número de meses pode ser negativa,
adicionar
resultando
uma data-alvo
em mais cedo do que a data de início que estão sendo devolvidos. O número de meses
pode ser fracionada,
componente fraccionada mas éo ignorado, e o componente de número inteiro é utilizado. Estes três
consultas ilustrar afuncionar:
ADD_MONTHS

Consulta 1 retornos 07-MAY-2009, uma vez que o componente dia permanece o mesmo, se
mêspossível
é incrementado
eo por um. A segunda consulta tem duas dimensões interessantes. o parâmetro

especificando o número de meses para adicionar contém um componente fracionário, que é


ignorado.
dois mesesadicionando
para a data de 31-DEC-2008 deve retornar a data 31-FEB-2009, mas não há tal data,
assim o último dia do mês, 28-FEB-2009, é devolvido. Como o número de meses adicionados no
consulta é -12, a data de 07-APR-2008 é retornado, que é de 12 meses anteriores à data de início.
terceiro

A Função NEXT_DAY
A função NEXT_DAY devolve a data em que a próxima ocorrência de um determinado dia da
ocorre. Leva dois parâmetros obrigatórios e tem a NEXT_DAY sintaxe ( data de início, dia do
semana
semana ). A função calcula a data em que o dia da semana parâmetro seguinte ocorre após a
a data de início . O dia da semana parâmetro deve ser um valor caractere válido, conforme
determinado
parâmetro depelo
sessão NLS_DATE_LANGUAGE. Para NLS_DATE_LANGUAGE = AMERICAN, o
valores padrão são pelo menos os três primeiros caracteres do nome do dia. Os valores de caracteres
quedias
os representam
da semana podem ser especificados em qualquer caso. O nome curto pode ser mais longo do
que três
personagens; por exemplo, o domingo pode ser referenciada como sol, Sund, sunda, ou domingo.
considereconsultas:
seguinte o

Aqui, 01-JAN-2009 é uma quinta-feira. Portanto, a próxima vez que uma terça-feira ocorre será
de cinco
depois, dias
em 06-JAN-2009. A segunda consulta especifica o WEDNE literal personagem, que é
interpretados como quarta-feira. A próxima quarta-feira após 01-JAN-2009 é 07-JAN-2009.

A Função LAST_DAY
A função LAST_DAY retorna a data do último dia do mês em que o dia dado pertence.
Ele usa um único parâmetro obrigatório e tem o LAST_DAY sintaxe ( data de início ). A função
extrai o mês que a data de início parâmetro pertence e calcula a data do último dia de
esse mês. A consulta a seguir retorna a data 31-JAN-2009:

A função ROUND Data


A função Data Ronda executa uma operação de arredondamento em um valor com base numa data
formato de precisão. O valor devolvido é arredondado para cima ou para baixo para a precisão da
específica
data maisEsta
formato. próxima
função tem um parâmetro obrigatório e um parâmetro opcional e tem a sintaxe
ROUND ( data source , [ formato de precisão data ]). A data source parâmetro representa qualquer
item
O data. de precisão data parâmetro especifica o grau de arredondamento e é opcional. Se ele está
formato
o grau padrão
ausente,
(AAAA), de arredondamento
trimestre (Q), mês (MM),é dia . Os formatos
semana de precisão
(W), dia (DD), data incluem
hora (HH) e minutosséculo
(MI).(CC), ano
Arredondamento para século é equivalente a adicionar um para o século atual. Arredondamento
mêspara
ocorre
o próximo
se o dia componente é superior a 16, ou então arredondando para o início do
mês atual ocorre. Se o mês cai entre um e seis, em seguida, o arredondamento para ano retorna a
data
o em do ano em curso; se não, ele retorna a data no início do ano seguinte.
início
Considere a seguinte consulta e seus resultados:

Suponha que esta consulta foi executado em 17-APR-2009 em 0:05. O primeiro item arredonda a
dia.data
Desdepara o maisépróximo
o tempo 00:05, que é depois da meia-noite, a data não é arredondado para cima. O
segundo item
arredonda a data para o mesmo dia da semana como o primeiro dia do mês. Desde 01-APR-2009 é
Quarta-feira, a data retornada é a quarta-feira da semana em que esta data ocorre. Lembrar
uma
que, por padrão, o primeiro dia da semana é domingo. Portanto, a primeira quarta-feira da semana
começando 12-APR-2009 é de 15-APR-2009. O terceiro item arredonda a data para o início do
mês seguinte vez que o componente dia é de 17 e retorna 01-MAY-2009. O quarto ponto representa
arredondado para a data no início do ano em curso desde o componente mês é 4, e 01-
JAN-2009 é retornado.

A função de data TRUNC


A função da data TRUNCAR executa uma operação de truncagem em um valor de data com base
numa data
formato deespecífica
precisão.
A função de data TRUNC leva um parâmetro obrigatório e um parâmetro opcional. sua sintaxe
é TRUNC ( actualizado recurso , [ formato de precisão data ]). A data source parâmetro representa
qualquer
item. O formato
data de precisão data parâmetro especifica o grau de truncamento e é opcional. Se for
ausente, o grau padrão de truncamento é dia . Isto significa que qualquer componente de tempo da
édata
definido
sourcecomo a meia-noite ou 00:00:00 (00 horas, 00 minutos e 00 segundos). Truncando no nível
define a data da data source para o primeiro dia do mês. Truncando no nível ano retorna a
mês
data no início do corrente ano. A seguinte consulta e os resultados mostram quatro itens na
lista SELECT, cada truncar uma data literal para um diferente grau de precisão:

Suponha que esta consulta foi executado em 17-APR-2009 às 12:05 AM O primeiro item define o
de 0:05
componente
- 00:00 ede
retorna
tempoo dia atual. O segundo item trunca a data para o mesmo dia da
a semana como o primeiro dia do mês (quarta-feira) e retorna a quarta-feira em sua semana: 15
APR-
2009. O terceiro item trunca a data para o início do mês atual e retorna 01-APR-
2009. O quarto item trunca a data para o início do ano atual e retorna 01-JAN-2009.

Exercício 8-2: Use as funções de manipulação de caracteres Conectar-se ao esquema de OE e


construir uma consulta que extrai o nome do host e-mail exclusivo do
coluna.
CUSTOMERS.CUST_EMAIL

1. Inicie o SQL Developer e conectar-se ao esquema de OE.


2. A entrada CUSTOMERS.CUST_EMAIL típico é o seguinte:
firstname.lastname@hostname.EXAMPLE.COM. O nome do host começa imediatamente
após a
@ Símbolo e termina antes do EXAMPLE.COM. A função SUBSTR podem ser usadas para
extrair este valor. No entanto, a posição de início ea duração ainda são desconhecidos. o
função
INSTR pode
characters ser utilizada para localizar a posição da primeira ocorrência do símbolo @ eo
EXAMPLE.COM.
3. Uma solução possível é a seguinte:

Descrevem vários tipos de funções de conversão


Disponível em SQL
Conversão SQL funções são funções de uma única linha destinados a alterar a natureza do tipo de
dadosde
valor decoluna,
um expressão, ou literal. TO_CHAR, TO_NUMBER , e TO_DATE são os três mais
amplamente utilizado funções de conversão. TO_CHAR converte informações numéricas e data em
enquanto TO_NUMBER e TO_DATE converter dados de caracteres em números e datas,
caracteres,
respectivamente.
Funções de conversão
Oracle permite colunas a serem definidos com ANSI, DB2 e tipos de dados SQL / DS. Estes são
internamente para tipos de dados Oracle. Cada coluna tem um tipo de dados associado que
convertidos
constrange
os dados quea natureza
ele pode de
armazenar. A coluna de número não pode armazenar informações de caráter.
Uma colunacaracteres
armazenar data não ou
podenúmeros aleatórios. No entanto, os equivalentes de caráter de número e data
informação pode ser armazenada em um campo VARCHAR2.
Se uma função que aceita um parâmetro de entrada personagem encontra um número em vez
converte-lo
disso, o em
Oracle
seu automaticamente
caráter equivalente. Se uma função que aceita um número ou um parâmetro de
encontra um valor de caractere, existem condições específicas em que tipo de dados automática
data
ocorre conversão. Embora conversões tipo de dados implícitos estão disponíveis, é geralmente mais
fiáveis para converter explicitamente valores a partir de um tipo de dados para outro utilizando a
conversão de linha única
funções.

Implícita de conversão Tipo de dados


Valores que não compartilham tipos de dados idênticos com os parâmetros de função são
convertidos
requerida formato
implicitamente
se possível.
ao tipos de dados VARCHAR2 e CHAR são colectivamente referidos
tipos de caracteres. campos de caracteres são flexíveis e permitem o armazenamento de quase
como
qualquer tipo
Portanto, os valores
de informação.
data eo número pode facilmente ser convertidos para seus equivalentes de
caracteres. Estes
conversões são conhecidos como número de caracteres e data de caráter conversões. considere o
seguinte consultas:

Ambas as consultas usar a função de comprimento, o que leva um parâmetro de cadeia de


caracteres.naOconsulta
1234567890 número1 é implicitamente convertido em uma cadeia de caracteres, '1234567890',
antes de ser
avaliada pela função de comprimento, o que devolve 10. Consulta 2 em primeiro lugar a função
o qual é assumido como sendo 07-ABR-38. Esta data é implicitamente convertido para a cadeia de
SYSDATE,
caracteres, e'07
APR-38' a função
- retorna COMPRIMENTO o número 9.
É incomum para dados de caracteres a ser convertido implicitamente em tipos de dados
única
numéricos,
condição uma sob avez
qual
que
isso
o pode ocorrer é se os dados personagem representa um número válido.
o
seqüência de caracteres '11' será convertido implicitamente a um número, mas '11 .123.456' não será,
como o seguintes demonstram:
consultas

Consulta 3 e 4 implicitamente converter as cadeias de caracteres '11' e '11 .123' para os números
11 e respectivamente, antes da função de MOD avalia-los e devolve os resultados 1 e 1.123.
11,123,
Consulta 5 retorna o erro “ORA-1722: número inválido” quando a Oracle tenta executar um
caracteres para o número de conversão porque a cadeia '11 .123.456' não é um número válido. 6
implícita
também
falha comconsulta
o erro número inválido desde o símbolo do dólar não pode ser convertido implicitamente
para uma
número.
Implícita
seguindo personagem
padrões de data: a[Ddata de separator1
| DD] conversão é[MON
possível quando
| MÊS] a cadeia [R
separator2 de caracteres
| RR | YY |está em D
AAAA].
conformidade com o
eDD representam um dígito e de dois dígitos dias do mês. MON é uma abreviatura de três caracteres,
enquanto MÊS é o nome completo de um mês. R e RR representam anos simples e de dois dígitos.
YY e representam dois e quatro dígitos anos, respectivamente. Os separator1 e separator2
AAAA
elementos
pode ser a maioria dos sinais de pontuação, espaços e tabs. Tabela 8-2 demonstra caráter implícito a
conversão, listando várias chamadas de função e os resultados SQL Developer retornos. Estes
data
resultados
que o sistema
assumem
faz uso dos padrões de sessão americanos.

Tabela 8-2 Exemplos de caráter implícito a Data de Conversão

CUIDADO Embora conversões tipo de dados implícitos estão disponíveis, é mais confiável para
valores explicitamente de um tipo de dados para outro usando funções de conversão de uma única
converter
linha. conversão
informações personagem para número e data depende de máscaras de formato.

Explícita Tipo de conversão de dados


Funções que convertem itens de um tipo de dados para outro são conhecidos como explícita
conversãoEstes
funções. tipo retornar
de dadosum valor garantido para ser o tipo necessário e oferecer um método seguro e
de conversão de itens de dados.
confiável
NUMBER e DATE itens podem ser convertidas explicitamente em itens de caracteres usando o
função.
TO_CHAR
Uma cadeia de caracteres pode ser explicitamente transformado em um número usando o
função. A função TO_DATE é usado para converter cadeias de caracteres em itens de data. oracle
TO_NUMBER
máscaras de formato permitem uma ampla gama de controle sobre personagem-a-número e as
conversões.
características-to-date

EXAME DICA Sua compreensão de modelos de formato comumente utilizados ou máscaras será
praticamente
testado com perguntas como “Prever o resultado de uma chamada de função, como TO_CHAR
(TO_DATE
JAN-00' , 'DD-MON-RR),
('01 - 'Day').”

Use o TO_CHAR, TO_NUMBER, e TO_DATE


Funções de conversão
Este objectivo certificação contém uma descrição sistemática da TO_NUMBER, TO_DATE, e
funções TO_CHAR, com exemplos. A discussão sobre TO_CHAR é dividido na conversão de
artigos da data para caracteres e números de caracteres. Esta separação é garantido pela
máscaras de formato
disponibilidade
coexistir com de diferentes
muitos para
outros, mas sãocontrolar a conversão para valores de caracteres. Estas funções
os mais utilizados.
de conversão
Usando as funções de conversão
Muitas situações exigem o uso de funções de conversão. Eles podem variar de formatação de data
campos em um relatório para garantir que os dígitos numéricos extraídos de campos de caracteres
são corretamente
convertido em números antes de aplicá-los em uma expressão aritmética.
Quadro 8-3 ilustra a sintaxe das funções de conversão de dados tipo explícito de uma única linha.

Tabela 8-3 Sintaxe de funções de conversão explícita de tipo de dados

suporte ao idioma nacional opcional (NLS) parâmetros (nls_parameters) são úteis para
a linguagem
especificar
e formato em que os nomes de data e numéricos elementos são retornados. Estes
parâmetros são geralmente ausentes, e os valores padrão para elementos tais como o dia ou mês
nomes e
abreviaturas são utilizadas. Como Figura 8-2 mostra, existe uma vista publicamente disponível
NLS_SESSION_PARAMETERS que contém os parâmetros NLS para a sua sessão atual. o
chamado
valor NLS_CURRENCY padrão é o símbolo do dólar, mas isso pode ser alterado na sessão de
usuário
nível. Por exemplo, para alterar a moeda para a cadeia GBP três caracteres, você pode emitir o
seguinte comando:
Figura 8-2 linguagem Nacional parâmetros de sessão apoio

A conversão de números de caracteres utilizando a função


A função TO_CHAR retorna um item de dados tipo VARCHAR2. Quando aplicado a itens do tipo
TO_CHAR
NÚMERO, várias opções de formatação estão disponíveis. Sua sintaxe é a seguinte:

A num parâmetro é obrigatório e deve ser um valor numérico. O opcional formato de parâmetro
pode ser usado para especificar informações de formatação numérico, tais como largura, símbolo de
moeda,decimal
ponto de umaeposição
grupo (ou milhares) separadores e devem ser colocados entre aspas simples.
Há outras opções de formatação para números que estão sendo convertidas em caracteres, alguns dos
quais são
listado na Tabela 8-4 . Considere as duas consultas a seguir:
Tabela 8-4 Máscaras formato numérico

Consulta 1 avalia o número 00001, remove os zeros, converte o número 1 para o


caráter '1', e retorna a seqüência de caracteres '1 é um número especial'. Consulta 2 aplica o
máscara de formato '0999999' para o número 00001, convertendo-o na cadeia de caracteres
numérico
'0000001'. Depois
concatenação para de
os literais de caractere, a string retornada é '0000001 é um número especial'. o
e os seis noves na máscara de formato indicam à função TO_CHAR que zeros à esquerda deve ser
zero

apresentada e que a largura do display deve ser definido para sete caracteres. Portanto, a string
aretornada por
função TO_CHAR contém sete caracteres.

TIP Convertendo números em caracteres é uma maneira confiável para garantir que as funções e
SQL geral
sintaxe, que espera que a entrada de caracteres, não retornam erros quando os números são
encontrados.
números conversão
em cadeias de caracteres é comum quando os dados numéricos devem ser formatados para
propósitos. As máscaras de formato que suportam moeda, milhares separadores, e separadores de
relatórios
ponto
são frequentemente
decimal utilizados ao apresentar dados financeiros.

Converter datas de caracteres usando a função TO_CHAR


Você pode tirar proveito de uma variedade de modelos de formato para converter artigos da data em
quase qualquerde caracteres de uma data usando TO_CHAR. Sua sintaxe é a seguinte:
representação

Apenas o date1 parâmetro é obrigatório; ele deve assumir a forma de um valor que pode ser
implicitamente
convertida para uma data. O opcional formato parâmetro é sensível a maiúsculas e devem ser
colocadosOs
citações. emespecifica
um únicomáscara de formato que os elementos de data são extraídos e se o elemento
ser descrito por uma longa ou um nome abreviado. Os nomes dos dias e meses são automaticamente
deve
preenchido com espaços. Estes podem ser removidos com um modificador para a máscara de
(formato
FM ) dochamado
operador.o modo de preenchimento
Prefixando o modelo de formato com as letras fm , você instrui o Oracle para
cortar
dos nomes
todosdos
os espaços
dias e meses. Há muitas opções de formatação para datas a ser convertidos em
caracteres, alguns dos quais estão listados na Tabela 8-5 . Considere as seguintes três consultas:
Tabela 8-5 Formato máscaras de data por dias, meses e anos

Se a data do sistema atual é 03 / JAN / 09 e o formato de exibição padrão é DD / MON / RR, em


seguida,
1 retorna consulta de caracteres '03 / JAN / 09 é a data de hoje'. Há dois componentes notáveis
a seqüência
emEm
2. consulta
primeiro lugar, apenas o componente mês da data atual do sistema é extraído de conversão
para de
tipo umapersonagem. Em segundo lugar, uma vez que a máscara de formato é sensível a maiúsculas e
aparece
string retornada
'Mês' emé caso
'Janeiro
de título,
é um momento
o especial'. Não há necessidade de adicionar um espaço em
frente
um ao literal
momento 'é
especial', já que a função TO_CHAR almofadas automaticamente o nome do mês com
umaespaço.
Se máscara de formato na consulta 2 foi 'MÊS', a string retornada seria 'Janeiro é um especial
Tempo'. A fm modificador é aplicado para consultar 3, ea cadeia resultante é 'Januaryis um momento
Note que não há espaço entre janeiro eo literal 'é um momento especial'. Na Tabela 8-5 , assumir a
especial'.
elementos estão operando na data 02-JUN-1975 eo ano atual é de 2009.
Os elementos de formato de data referentes a semanas, trimestres, séculos, e outros menos
utilizados
máscaras de formato estão listadas na Tabela 8-6 . A coluna resultado é obtido através da avaliação
da TO_CHAR
função usando a data de 24-SEP-1000 AC, com o formato da máscara a partir da coluna elemento de
formato no
mesa.
Tabela 8-6 Menos Data comumente usados Formato Máscaras

O componente de tempo de um tipo de dados de data e hora é extraído utilizando os modelos de


formato énaobtido
O resultado Tabelaatravés
8-7 . da avaliação da função TO_CHAR usando a data, incluindo seu tempo
componente 27-JUN-2010 21:35:13, com a máscara de formato em Formato Elemento coluna na
Tabela 8-7 .

Tabela 8-7 Máscara formato de data para componentes de tempo

Tabela 8-8 lista vários elementos diversos que podem ser utilizados em modelos de formato de
sinais
data
deepontuação
hora. são usados para elementos de formato separados. Existem três tipos de sufixos
para formatar de elementos de data e hora. Além disso, os literais de caracteres podem ser incluídos
componentes
em um formato
modelo se eles estão
de data
entre aspas duplas. Os resultados na Tabela 8-8 são obtidas através
aplicando a função TO_CHAR utilizando a data 12 / SEP / 08 14:31 com as máscaras de formato
listadas na e coluna Formato Mask.
Descrição

Tabela 8-8 Máscaras Data Format Diversos


A tabela JOB_HISTORY mantém o controle de postos de trabalho ocupados por funcionários da
empresa.
na Figura 8-3arecupera
consultauma frase descritiva sobre a data sair para cada funcionário com base em sua
END_DATE, EMPLOYEE_ID e JOB_ID campos. A expressão de caracteres é concatenado a um
Chamada de função TO_CHAR com um modelo de formato de 'fmDay ‘a’ ddth ‘do’ Mês AAAA'. a
modificador é usado para aparar espaços em branco que arrastam os nomes dos dias mais curtos e
fm
meses
dois mais curtos.
literais o
de caracteres entre aspas duplas são as palavras “a” e “de”. O th'
modelo de formato é aplicada ao elemento 'dd' data para criar um dia ordinal, como o 17º ou 31º. o
modelo de formato 'Mês' exibe o nome completo do elemento mês da coluna END_DATE em título
caso. Finalmente, a máscara de formato AAAA recupera o componente de ano com quatro dígitos.
Figura 8-3 função TO_CHAR com datas

Embora o componente de uma data do século não é exibida por padrão, ele é armazenado no
quando
banco
o valor
de dados
de data é inserida ou atualizada e está disponível para recuperação. O formato DD-
máscara é o padrão para exibição e de entrada. Ao inserir ou atualizar valores de data, do século
MON-RR
componente é obtido a partir da função SYSDATE se não for fornecido. A máscara RR formato de
data
difere do formato YY mascarar em que ele pode ser usado para especificar diferentes séculos com
base no
anos corrente e especificados. O componente século atribuído a um encontro com seu ano
especificado
formato de data
comRR
o pode ser melhor compreendida, considerando os seguintes princípios:

• Se os dois dígitos do ano em curso e a mentira ano especificado entre 0 e 49, a corrente
século é retornado. Suponha que a presente data é 02-JUN-2007. O século retornou para o

data de 24 JUL-04 no formato DD-MON-RR é de 20.


• Se os dois dígitos do ano em curso mentira entre 0 e 49 e o ano especificado cai entre
50 e 99, do século anterior é retornado. Suponha que a data atual é 02-JUN-2007. o
século devolvido para 24-JUL-94 é 19.
• Se os dois dígitos do ano corrente e especificados situar-se entre 50 e 99, o século atual é
retornado por padrão. Suponhamos que a data actual é 02-JUN-1975; século retornado para
JUL-94 é 19.
24
• Se os dois dígitos do ano em curso mentira entre 50 e 99 e no ano especificado cai entre
0 e 49, o próximo século é retornado. Suponhamos que a data actual é 02-JUN-1975; o século
retornado para 24 JUL-07 é de 20.

Converter caracteres a Datas Usando a função TO_DATE


A função TO_DATE retorna um item do tipo DATE. cadeias de caracteres convertidos em datas
conter todas ou apenas um subconjunto dos elementos de data e hora que compõem uma data.
podem
Quando cordas
subconjunto da com
data apenas uma de tempo são convertidos, Oracle fornece valores padrão para
de elementos
construir um
encontro. Componentes
completo de cadeias de caracteres estão associados com diferentes elementos de data e
hora usando
modelo ou máscara.
um formato
Sua sintaxe é a seguinte:

Apenas string1 é obrigatório, e se nenhuma máscara de formato é fornecido, string1 deve ser
implicitamente
conversíveis em uma data. O opcional formato parâmetro é quase sempre usado e é especificado em
aspas simples. As máscaras de formato são idênticos aos indicados nos Quadros 8-5 , 8-6 , e 8-7 . o
Função TO_DATE tem um fx modificador, que é semelhante ao fm utilizado com a função
TO_CHAR.
fx modificador
o especifica uma correspondência exata para string1 e a máscara de formato. Quando o
fx modificadoritens
especificada, é de caracteres que não correspondem exatamente a máscara de formato de
produzir
depois deum
cinco
erro.
consultas:
considere o

Consulta 1 avalia a seqüência de 25-DEZ-2010 e tem informações suficientes para convertê-lo


em um
implicitamente
artigo da data com uma máscara padrão de DD-MON-YYYY. O separador de hífen poderia
substituído por um outro caractere de pontuação. Desde há componentes de tempo são fornecidos, o
ser
tempo
esta para
data convertido é definida como a meia-noite, ou 0:00:00. Consulta 2 não pode converter
implicitamente
data, porque nãoa há
string
informação
em um suficiente e um ORA-01840: valor de entrada não é tempo suficiente
o formato de data; é devolvido um erro. Ao fornecer uma máscara de formato DD-MON para a
para
consulta 3, a Oracle
cadeia 25-DEC em pode coincidir com o número 25 a DD e o nome do mês abreviado DEC para o
componente. Ano e tempo componentes estão ausentes, assim que o ano corrente retornado pelo
MON
função é utilizada eo tempo está definido para meia-noite. Se o ano atual é 2009, consulta 3 retorna a
SYSDATE
25 / Dez / 09 00:00:00. Consulta 4 executa uma conversão completa de uma string com o tempo data
data

elementos presentes, e não valores padrão são fornecidos pela Oracle. Consulta 5 usa o fx
modificador
máscara em sua Uma vez que o componente da cadeia de ano é 10 e a máscara de formato
de formato.
correspondente
AAAA, os fx resultados
é modificadoras em um ORA-01862 erro que está sendo retornado: “o valor
numéricocom
coincidir não faz
o comprimento do item formato “.

A conversão de caracteres para números utilizando a


Função
TO_NUMBER
A função TO_NUMBER retorna um item de tipo de número. cadeias de caracteres convertida em
números devem ser adequadamente formatado de modo a que quaisquer componentes não
numéricos
embora comsão
uma
traduzidos
máscaraou
dedespojado
formato apropriado. A sintaxe é como se segue:

Apenas o string1 parâmetro é obrigatório e se nenhum formato de máscara é fornecido, ele deve
podeserserum
convertido
valor queem um número implicitamente. O opcional formato parâmetro é especificado
em única
aspas. As máscaras de formato são idênticos aos listados na Tabela 8-4 . Considere o seguinte
duas consultas:

Consulta 1 não pode executar uma conversão implícita para um número por causa do sinal de
e período;
dólar, vírgula,
ele retorna o erro ORA-1722: número inválido. Consulta 2 corresponde ao símbolo do
vírgula, eo período da corda para a máscara de formato e, embora a largura numérica é maior do que
dólar,
a largura da corda, o número 1000,55 é retornado.

EXAME TIP A função TO_NUMBER converte itens de caracteres em números. Se você converter
número usando uma máscara de formato mais curto, é devolvido um erro. Se você converter um
um
número usando
máscara de formato,
um longo
o número original é devolvido. Tenha cuidado para não confundir conversões
to_number
com TO_CHAR. Por exemplo, TO_NUMBER (123,56 '999.9') retorna um erro, enquanto
TO_CHAR (123,56 '999.9') retorna 123,6.

Aplicar expressões condicionais em uma instrução


SELECT
Funções
seção.
aninhadas foram introduzidas mais cedo, mas nós oferecemos-lhe uma discussão formal
sobre este
Descrevemos
conceito neste
também funções condicionais que trabalham com valores nulos e apoio
condicional
lógica em expressões.

Funções aninhadas
Funções aninhadas utilizar a saída a partir de uma função de como a entrada para a outra. Funções
sempre retornam

exatamente um resultado. Portanto, você pode considerar de forma confiável uma chamada de
função,
um valordaliteral
mesma formafornecendo
quando como fariaparâmetros de entrada a uma função. funções de uma única linha
podem sernível
qualquer aninhadas
de profundidade.
para A forma geral de uma função é a seguinte:

função substituindo chama como parâmetros para outras funções podem conduzir a uma
Segue:
expressão, tais como o
funções aninhados são avaliados antes de os seus valores de retorno são utilizadas como entrada
outras
para
funções.
paramétrico
Eles são avaliados a partir do interior para níveis ultraperiféricas. A expressão
é avaliada como se segue:
precedente

1. F3 ( param3.1 ) é avaliada, e o seu valor de retorno fornece o terceiro parâmetro para


funcionar
e podemF2ser chamados param2.3 .
2. F2 ( param2.1, param2.2, param2.3 ) é avaliada, e o seu valor de retorno fornece o segundo
parâmetro para funcionar F1 e é param1.2 .
3. F1 ( param1.1, param1.2, param1.3 ) é avaliada, eo resultado é retornado para a convocação
programa.
F3 função está aninhado três níveis de profundidade neste exemplo.
Considere a seguinte consulta:

Há três funções na lista SELECT, que, do interior para o exterior níveis, são SYSDATE,
LAST_DAY e NEXT_DAY. A consulta é avaliada como se segue:

1. A função mais interna é avaliada em primeiro lugar. SYSDATE retorna a data atual. Assuma
issoa data de hoje é de 28-OCT-2009.
2. A segunda função mais interna é avaliada a seguir. LAST_DAY ('28 oct-2009' ) retorna a
data do último dia de outubro, que é 31-OCT-2009.

Finalmente, o NEXT_DAY função ('24 oct-2009' , 'ter') é avaliado, e a consulta retorna o


número da última terça-feira do mês, que neste exemplo é de 27-OCT-2009.

TIP É tentador mergulhar e construir um complexo expressão que compreende muitos função
chama, mas esta abordagem evolui com prática e experiência. Conceituar uma solução para uma
aninhada
consulta eem chamadas de função de componentes. A tabela DUAL é útil para testes ad hoc e
dividi-la
depuração de chamadas de função separadas. De teste e de depuração componentes mais pequenos e
de forma
estes iterativa
até que montarfinal é formado.
a expressão

Funções condicionais
Lógica condicional, também conhecido como if-then-else lógica, refere-se a escolha de um caminho
de execução
valores comde
de dados base em determinadas condições. Funções condicionais retornar valores
reuniões
diferentes
avaliar as condições
com base emde comparação. Funções dentro desta categoria simplificar o trabalho com
evalores
incluem
nulos
o NVL, NVL2, NULLIF , e COALESCE funções. Lógica condicional genérico é
implementado pela função decodificar e a expressão CASE. A função DECODIFICAR é específico
a Oracle, enquanto a expressão CASE é ANSI SQL compatível.

A função NVL
A função NVL avalia se uma coluna ou expressão de qualquer tipo de dados é nulo. Se o termo é
null, ele retorna um valor alternativo não-nulo; caso contrário, o termo original é devolvido.
A função NVL leva dois parâmetros obrigatórios; sua sintaxe é NVL (original, IFNULL) , onde
inicial representa o termo que está sendo testada e IFNULL é o resultado devolvido se os originais
avalia nulo.
como prazoOs tipos de dados dos originais e IFNULL parâmetros devem ser sempre compatíveis.
Ou elesser do mesmo tipo ou deve ser possível converter implicitamente IFNULL para o tipo de
devem
parâmetro. A função NVL retorna um valor com o mesmo tipo de dados como o originais
originais
Considere as seguintes três consultas:
parâmetro.
Como a função NVL leva dois parâmetros obrigatórios, consulta 1 retorna o erro ORA-00909:
número inválido de argumentos. Consulta 2 retorna 1234 depois da palavra-chave nulo é testada e
verificou-se
nulo. Consultaser3 envolve uma função SUBSTR aninhada que tenta extrair o quarto carácter de um
seqüência de três caracteres que retorna nulo, deixando a NVL função externa (null, 'Não existe
substring')o para
executar, que, em seguida, retorna a string 'Não existe substring'.

TIP A função NVL é valiosa para a conversão de valores numéricos nulos para zero de modo a que
em aritmética
eles não retorna nulo.

A Função NVL2
A função NVL2 proporciona um aperfeiçoamento para NVL mas serve um propósito semelhante.
eleuma
se avalia
coluna ou expressão de qualquer tipo de dados é nulo ou não. Se o primeiro termo não é
nulo, o segundo
parâmetro é devolvido, ou então o terceiro parâmetro é retornado. Recorde-se que a função é
diferente
uma NVL
vez que retorna o termo original se não for nulo.
A função NVL2 leva três parâmetros obrigatórios com a sintaxe NVL2 ( original, ifnotnull,
IFNULL ), onde inicial representa o termo que está sendo testada. ifnotnull é devolvido se originais
enão
IFNULL
é nulo,é devolvido se originais é nulo. Os tipos de dados dos ifnotnull e IFNULL parâmetros
devem ser e eles não podem ser do tipo LONG. Ou eles devem ser do mesmo tipo ou deve ser
compatível,

possível converter IFNULL com o tipo do ifnotnull parâmetro. O tipo de dados devolvidos pela
NVL2
função é a mesma que a do ifnotnull parâmetro. Considere as seguintes perguntas:

O ifnotnull prazo na consulta 1 é um número, ea IFNULL parâmetro é uma cadeia. Desde que há
tipouma
de dados incompatibilidade entre eles, um “ORA-01722: número inválido” erro é retornado.
consultao2IFNULL parâmetro, que é 5678. Consulta 3 extrai os caracteres bc usando o SUBSTR
retorna
função eo NVL2 função ( 'bc', 'Não bc', 'Não Substring') é avaliada e o ifnotnull
parâmetro, 'Não bc', é devolvido.

A função NULLIF
A função NULLIF testa dois termos de igualdade. Se forem iguais, a função retorna um valor nulo,
ou então
ele retorna o primeiro dos dois termos testados.
A função NULLIF leva dois parâmetros obrigatórios de qualquer tipo de dados. Sua sintaxe é
NULLIF ( ifunequal, comparison_term ), onde os parâmetros ifunequal e comparison_term são
comparação. Se eles são idênticos, será retornado nulo. Se eles diferem, o ifunequal parâmetro é
devolvida. Considere as seguintes perguntas:

Consulta 1 retorna um valor nulo uma vez que os parâmetros são idênticos. Os literais de
implicitamente
caracteres naconvertidos
consulta 2 em
nãoartigos
são da data e são comparados como duas cadeias de caracteres
pelo NULLIF
função. Como as cordas são de diferentes comprimentos, a ifunequal parâmetro 24-JUL-2009 é
retornado.
A Figura 8-4 mostra como NULLIF está aninhado como um parâmetro para a função NVL2. o
NULLIF
própria função tem as funções SUBSTR e caráter UPPER incorporados na expressão usada como
sua ifunequal parâmetro. A coluna e-mail é comparado com uma expressão, formado por
concatenando o primeiro caractere do FIRST_NAME ao equivalente em maiúsculas do
coluna LAST_NAME, para empregados com quatro caracteres primeiros nomes. Quando esses
termos sãoretorna
NULLIF iguais,um valor nulo, senão ele retorna a avaliação ifunequal parâmetro. Esta é usada
como um para NVL2. A função NVL2 fornece linhas de texto de classificação descritivos como
parâmetro
combinando
padrão ou não.
o
Figura 8-4 O NVL2 e NULLIF

A função COALESCE
A função COALESCE retorna o primeiro valor não-nulo da sua lista de parâmetros. Se todos os seus
são nulos, será retornado nulo.
parâmetros
A função COALESCE leva dois parâmetros obrigatórios e qualquer número de opcional
parâmetros. A sintaxe é COALESCE ( expr1, expr2 ,.,.,. Exprn ), onde expr1 é devolvido se não for
null, outra expr2 se não é nulo, e assim por diante. COALESCE é uma forma geral da função NVL,
comoequações
duas o seguintes ilustram:

O tipo de dados devolvidos pela coalesce, se um valor não-zero seja encontrado, é a mesma que
a do primeiro
parâmetro não-nulo. Para evitar um “ORA-00932: tipos de dados inconsistentes” de erro, todos os
parâmetros
deve ter tipos
nãodenulos
dados compatíveis com o primeiro parâmetro de não-nulo. Considere o seguinte
consultas:
três
Consulta 1 retorna o quarto parâmetro, que é uma cadeia uma vez que este é o primeiro
encontrado.
parâmetroConsulta
não-nula
2 retorna NULL porque todos os seus parâmetros são nulos. Consulta 3 avalia
seu primeiroque é uma função SUBSTR aninhada, e descobre que ela é nula. O segundo parâmetro
parâmetro,
não éentão a string 'Não bc' é devolvido.
null,

EXAME TIP Os parâmetros do NVL2 função geral pode ser confuso se você já está
familiarizado com NVL. NVL ( original, IFNULL ) retorna originais se não é nulo, ou então
IFNULL
O (NVL2é,retornado.
original, ifnotnull IFNULL ) devolve ifnotnull se originais não é nulo, ou então IFNULL
édevolvida. A confusão pode surgir porque o segundo parâmetro na função NVL é IFNULL ,
o segundo parâmetro na função NVL2 é ifnotnull . Esteja consciente do significado do parâmetro
enquanto
posições em funções.

A função DECODE
A função DECODE implementa if-then-else lógica condicional, testando seus dois primeiros termos
igualdade e retorna a terceira se eles forem iguais e opcionalmente retorna outro termo, se eles não
de
são.A função DECODE leva pelo menos três parâmetros obrigatórios, mas pode levar muitos mais. o
sintaxe da função é DECODIFICAR ( expr1, comp1, iftrue1 , [ comp2, iftrue2 ... [ compN, iftrueN ]],
[ Iffalse ]). Estes parâmetros são avaliados como mostrado no exemplo em pseudocódigo seguinte:

Aqui, expr1 é comparado com comp1 . Se eles são iguais, então iftrue1 é retornado. Se expr1 não
igualé a comp1 , então o que acontece a seguir depende se os parâmetros opcionais comp2 e
iftrue2 estão presentes. Se eles são, então expr1 é comparado com comp2 . Se eles são iguais, então
iftrue2 é Se não, o que acontece a seguir depende se ainda compn, iftrueN existem pares, ea
devolvida.
ciclo continua até que não há termos de comparação permanecem. Se nenhuma correspondência
foram encontrados
parâmetro é definido,
e seentão
o iffalse
iffalse é retornado. Se o iffalse parâmetro não existe e nenhum resultado
são encontrados, um nulo é retornado.

Todos os parâmetros para a função DECODE podem ser expressões. O tipo de dados de retorno
o doé primeiro
o mesmoitem
que de comparação correspondente. A expressão expr1 é implicitamente convertidos
para do
tipo os primeiro
dados parâmetro de comparação comp1 . Como os outros parâmetros de comparação
comp2.
são avaliados,
. . compn
eles também são implicitamente convertidos para o mesmo tipo de dados como comp1
. DECODE
dois nulos para
considera
ser equivalente, por isso, se expr1 é nulo e COMP3 é o parâmetro de comparação
primeiro nulo
encontrou, em seguida, o correspondente parâmetro resultado iftrue3 é retornado. Considere o
consultas:
seguinte

Consulta 1 compara o número 1234 com o primeiro termo de comparação 123. Uma vez que eles
o primeiro
não sãotermo
iguais,resultado não pode ser devolvido. Além disso, como não há nenhum padrão iffalse
éparâmetro
devolvido.
definido,
Consultaum2 nulo
é idêntico ao primeiro excepto que uma iffalse parâmetro é definido. Assim
desde 1234 não é igual a 123, a string 'No jogo' é devolvido. Consulta 3 pesquisas por meio do
sendo,
parâmetros de comparação para uma partida. O comp1 cordas e comp2 não são iguais para
pesquisar, de
Resultados true1
modoe true2
que onão são devolvidos. A correspondência é encontrada no termo terceira
(parâmetro
comparação 6), que'true3'
COMP3
contendo a string contém a seqüênciaNote-se
é devolvido. de pesquisa. Portanto,
que uma vez queo um
termo terceira
jogo resultado procurando
foi encontrado, iftrue3
(parâmetro
mais longe
acontece 7)
em. Assim, embora o quarto termo de comparação (parâmetro 8) também é um jogo de
Expr1 , este
expressão não é avaliado porque um fósforo foi encontrado em um termo de comparação mais cedo.

A expressão CASE
Praticamente todas as linguagens de programação de terceira e quarta geração implementar um caso
construto.
Função Como o a expressão CASE facilita if-then-else lógica condicional. Há dois
DECODE,
variantes da expressão CASE. A simples expressão CASE lista o item de pesquisa condicional uma
e igualdade para o item de pesquisa é testada por cada expressão de comparação. O procurou CASE
vez,
expressão enumera uma condição separada para cada expressão de comparação.
A expressão CASE leva pelo menos três parâmetros obrigatórios, mas pode demorar muito mais.
sintaxe
Estádepende de uma simples ou uma expressão CASE pesquisada é usado. A sintaxe para o
expressão CASE simples é a seguinte:

A expressão CASE simples é fechado dentro de um caso. . . bloco END e consiste em pelo
um menos
quando. . . ENTÃO comunicado. Na sua forma mais simples, com um quando. . . ENTÃO
comunicado,éacomparado com o comparison_expr1 . Se eles são iguais, então o resultado iftrue1 é
search_expr
devolvida. Se não, um valor nulo é retornado a menos que um componente ELSE é definido, no caso
do que iffalse valor é retornado. Quando mais de um quando. . . THEN instrução existe no caso
default

expressão, procurando uma expressão de comparação correspondência continua até que seja
encontrada uma correspondência.
Os parâmetros de busca, comparação, eo resultado pode ser valores de colunas, expressões ou
todos
literais,
devemmasser do mesmo tipo de dados. Considere a seguinte consulta:

A expressão de busca derivado do SUBSTR (1234, 1, 3) é a cadeia de caracteres 123. A primeira


QUANDO . . . THEN instrução compara a string 134 com 123. Uma vez que eles não são iguais, o
expressão não é avaliada. O segundo QUANDO. . . THEN instrução compara a seqüência de 1235
resultado
123, e novamente, eles não são iguais. O terceiro QUANDO. . . THEN instrução compara os
com
resultados
derivada da CONCAT ( '1', '23') de expressão, que é de 123, para a expressão de pesquisa. Desde que
são idênticos, o terceiro expressão resultados, '123 é um jogo', é devolvido.
eles
As colunas LAST_NAME e HIRE_DATE para funcionários com valores DEPARTMENT_ID de
100 são recuperados juntamente com duas expressões numéricas e uma expressão caso, como
mostrado na Figura
8-5.
Figura 8-5 A expressão PROCESSO simples

Suponha que SYSDATE é 27-JAN-2015. A expressão numérica alias como um ANOS retorna
valor truncado obtido dividindo-se os meses de serviço por 12. Cinco categorias de lealdade
classificação com base nos anos de serviço são definidos. Esta constitui a expressão de busca no
declaração. Nenhuma das linhas no conjunto de dados coincide com a expressão de comparação no
caso
primeiro
THEN QUANDO.
instrução, mas. como
. Figura 8-5 mostra, quatro fileiras conheceu o restante quando. . . then
e duas fileiras são capturados pela instrução ELSE.
A sintaxe para a expressão CASE pesquisada é a seguinte:
A expressão CASE procurou está dentro de um caso. . . bloco END e consiste de pelo
QUANDO menos um. . . ENTÃO comunicado. Na sua forma mais simples com um quando. . .
THEN instrução,
condição1 é avaliada; se é verdade, então o resultado iftrue1 é retornado. Se não, um valor nulo é
a menos que um componente ELSE é definido, caso em que o padrão iffalse valor é retornado.
devolvido
quando
do mais
que um quando. . . THEN existe na expressão CASE, em busca de uma correspondência
expressão de comparação continua até que seja encontrado. A consulta para recuperar o conjunto
idêntico
aos obtidos
de resultados
no Figura 8-5 , usando uma expressão PROCESSO procurou, é como se segue:

Exercício 8-3: Use o DECODE Função consultar a tabela de HR.LOCATIONS para linhas com o
US Value na coluna country_id. Uma expressão como alias LOCATION_INFO é necessária para
avaliar os valores da coluna e retorna STATE_PROVINCE informações diferentes de acordo com o
seguinte tabela. Ordenar a saída com base na expressão LOCATION_INFO.

1. Inicie o SQL Developer ou SQL * Plus e ligar para o esquema HR.


2. A expressão LOCATION_INFO pode ser calculado de várias maneiras diferentes. este
inclui o uso de uma expressão ou uma função PROCESSO DECODIFICAR. Esta solução
usa um caso
expressão:

Broca Two-Minute
Descrevem vários tipos de funções de conversão disponíveis em SQL
• conversão explícita ocorre quando uma função como TO_CHAR é invocado para alterar o
tipo
dede
umdados
valor. A função TO_CHAR realiza data-to-caráter e número de caracteres de dados
conversões de tipo.
• Os itens de caracteres são explicitamente transformado em valores de data usando a conversão
função.
TO_DATE
• Os itens de caracteres são transformados em valores numéricos usando a função de conversão
TO_NUMBER.
Use as funções de conversão TO_CHAR, to_number, e TO_DATE
• A função TO_CHAR retorna um item do tipo VARCHAR2.
• modelos de formato ou máscaras prescrever padrões que cadeias de caracteres devem
corresponder
conversão precisas
para facilitar
e consistentes em número ou data itens.
• termos de caracteres, como nomes de mês e dia, extraídos de datas com a função TO_CHAR
são automaticamente preenchidos com espaços que podem ser aparadas prefixando a máscara
de formato
o fm com
modificador.
• A função TO_DATE tem um fx modificador que especifica uma correspondência exata para o
personagem
string a ser convertido ea máscara de formato de data.

Aplicar expressões condicionais em uma instrução SELECT


• Funções aninhadas utilizar a saída a partir de uma função de como a entrada para a outra.
• A função NVL retorna ou o item original inalterada ou um item alternativo se o inicial
prazo é nulo.
• A função NVL2 retorna um novo se nulo item se o item original é nulo ou uma alternativa se-
não-nula item se o termo original não é nulo.
• A função NULLIF testa dois termos de igualdade. Se forem iguais, a função retorna nulo, ou
senão ele retorna o primeiro dos dois termos testadas.
• A função COALESCE retorna o primeiro valor não-nulo da sua lista de parâmetros. Se toda a
suaparâmetros são null, em seguida, um nulo é retornado.
• A função DECODE e CASE simples e pesquisado expressões CASE são usados para
facilitar if-then-else lógica condicional.

Auto teste
1 . Que declarações sobre funções de uma única linha são verdadeiras? (Escolha todos os que
se aplicam.)
A. Eles podem retornar mais de um valor.
B. Eles executam uma vez para cada linha processada.
C. Eles podem ter zero ou mais parâmetros de entrada.
D. Eles devem ter pelo menos um parâmetro obrigatório.
2 . O valor é retornado depois de executar a seguinte declaração?

(Escolha a melhor resposta.)


A. longa
B. _long
C. anel?
D. Nenhuma das anteriores
3 . O valor é retornado depois de executar a seguinte declaração?

(Escolha a melhor resposta.)


A. 4
B. 14
C. 12
D. Nenhuma das anteriores
4 . O valor é retornado depois de executar a seguinte declaração?
(Escolha a melhor resposta.)
A. 3
B. 42
C. 2
D. Nenhuma das anteriores
5 . O valor é retornado depois de executar a seguinte declaração? Tome nota que a 01-JAN-
2009ocorreu em uma quinta-feira.

(Escolha a melhor resposta.)


A. 07-JAN-2009
B. 31-JAN-2009

C. quarta-feira
D. Nenhuma das anteriores
6 . Assumindo SYSDATE = 30-DEC-2007, o valor é retornado depois de executar o seguinte
declaração?

(Escolha a melhor resposta.)


A. 31-DEC-2007
B. 01-JAN-2008
C. 01-JAN-2007
D. Nenhuma das anteriores
7 . Escolha quaisquer declarações incorrectas sobre funções de conversão. (Escolha todos os
queA.se TO_CHAR
aplicam.) pode converter itens de data para itens de caracteres.

B. TO_DATE pode converter itens de caracteres para artigos da data.


C. TO_CHAR pode converter números de itens de caracteres.
D. TO_DATE pode converter itens de data para itens de caracteres.
8 . Se SYSDATE retorna 12-JUL-2009, o que é retornado pela seguinte declaração?

(Escolha a melhor resposta.)


A. 12 de Julho
B. 12 de julho
C. DUODÉCIMA julho
D. Nenhuma das anteriores
9 . O valor é retornado depois de executar a seguinte declaração?

(Escolha a melhor resposta.)


A. SPANIEL
B. TERRIER
C. NULL
D. Nenhuma das anteriores
10 . Se SYSDATE retorna 12-JUL-2009, o que é retornado pela seguinte declaração?

(Escolha a melhor resposta.)


A. imposto devido
B. PARTE

C. 02
D. Nenhuma das anteriores

Respostas de auto-teste
1. B e C . Funções de uma única linha executado uma vez para cada registro selecionado
podeemdemorar
um conjunto
tanto sem
de dados
parâmetros
e de entrada, como SYSDATE, ou muitos parâmetros de
entrada.
A e D são incorrectas. A está incorreta porque uma função, por definição, retorna
apenas
resultar, e Dum
é incorrecta porque há muitas funções sem parâmetros.
2. Um . A função SUBSTR extrai uma substring de quatro caracteres a partir da dada
string decom
começando entrada
e incluindo o quinto personagem. Os caracteres em posições de 1 a 4 são
Começando com o caractere na posição 5, os próximos quatro caracteres formam a palavra
How_.
longaB ., C , e D estão incorrectos. B é uma substring de cinco caracteres começando na
anel posição
?, o que4,também
enquantoé de cinco caracteres, começa cinco caracteres a partir do final da dada
corda.
3. B . A função INSTR retorna a posição de que o n º ocorrência da cadeia de pesquisa
pode ser encontrada depois de iniciar a busca de uma determinada posição inicial. A
seqüênciasublinhado,
caractere de pesquisaeéoaterceiro ocorrência desta natureza a partir da posição 5 na
cadeia de origem ocorre na posição 14.
A , C , e D estão incorrectos. Eles são incorrecta, dado que a posição 4 é a primeira
a cadeia
ocorrência
de pesquisa
de e posição 12 é a terceira ocorrência se a pesquisa começou na posição
4. 1. C . Quando 14 é dividida por 3, a resposta é de 4 com 2 restante.
A , B , e D são incorrecta porque a função MOD devolve o resto de uma divisão.
5. Um . Desde primeiro de janeiro de 2009 cai numa quinta-feira, a data da seguinte
Quarta-feira é seis dias depois.
B , C , e D estão incorrectos. B retorna o último dia do mês em que a data dada
cai, e C retorna uma cadeia de caracteres em vez de uma data.
6. C . A função de data TRUNC não executa arredondamento, e uma vez que o grau de
truncamento é ANO, os componentes dia e mês de determinada data são ignorados e o
dia do ano a que pertence é retornado.
primeiro
A , B , e D são incorrectas. A retorna o último dia do mês em que a data dada
ocorre, e B retorna um resultado obtido por arredondamento em vez de truncagem.
7. D . As datas são convertidos em cadeias de caracteres usando TO_CHAR apenas, não o
função.
TO_DATE
A , B , e C são incorrectas. A , B , e C são demonstrações correctas.
8. Um . O componente DD retorna o dia do mês em maiúsculas. Uma vez que é um
Não número,
importa, a menos que o th máscara é aplicada, caso em que esse componente é
especificadoMÊS
maiúsculas. em retorna o mês em letras em maiúsculas.
B , C , e D estão incorrectos. B seria devolvido se a máscara de formato foi 'Mês
fmddth',
e C seria devolvido se a máscara de formato foi 'fmDDspth MÊS'.

9. Um . A função NULLIF compara seus dois parâmetros, e uma vez que eles são
primeiro
diferentes,
parâmetro
o é retornado. O NVL2 ( 'CODA', 'SPANIEL', 'TERRIER') chamada de
função
retorna spaniel, desde o seu primeiro parâmetro não é nulo.
B , C , e D estão incorrectos. B seria correto se a função NULLIF retornou um NULL,
que só iria acontecer se os seus dois parâmetros eram idênticas, e eles não são. C seria
correto se o segundo parâmetro para NVL2 foi NULL, mas não é.
10. B . A função TO_CHAR mais interna (SYSDATE, 'MM') resulta na cadeia de caracteres
07 que estão sendo devolvidos. A função exterior é DECODIFICAR ('07' , '02', 'imposto
devido',
07 não é'partido').
igual a 02,Desde
o partido
a outra componente é devolvido.
A , C , e Dera
de SYSDATE estão
02. incorrectos. A seria
C e D não são opçõesdevolvido somente
para a saída se o componente
na função mês extraído
DECODIFICAR
lista de parâmetros.
CAPÍTULO 9

Funções de Grupo

Objetivos do exame
Neste capítulo, você vai aprender a

• 061.5.1 identificar as funções de Grupo disponíveis


• 061.5.2 descrever o uso de Funções de Grupo
Dados • Grupo 061.5.3 usando a cláusula GROUP BY
• 061.5.4 incluir ou excluir linhas agrupadas usando a cláusula HAVING
Funções de uma única linha, explorados no Capítulo 8 , devolva um valor único para cada linha em
um conjunto
Grupo ou agregados
de resultados.
funções operam em várias linhas. Eles são usados para contar o número de
ou para encontrar a média dos valores de coluna específicos em um conjunto de dados. Muitas
linhas
operações
cálculo de estatísticas,
desvio padrão,taismediana,
como e as médias, depender de execução de funções contra agrupados
dados e não apenas linhas simples.

Você vai examinar funções de grupo em duas etapas. Uma discussão sobre a sua finalidade e
precede
sintaxe
uma análise detalhada do AVG, SUM, MIN, MAX, COUNT, LISTAGG, STDDEV, e
funções variância. O agrupamento ou recolha de dados, com base em um ou mais valores da coluna
éexaminados antes da cláusula GROUP BY é introduzido. A cláusula WHERE restringe linhas em
um conjunto
antes de agrupamento,
de dados enquanto a cláusula HAVING restringe-los após o agrupamento. Este capítulo
termina
uma discussão
com sobre a cláusula HAVING.

Descrever as funções de agrupamento


Esta seção define SQL funções de grupo e discute as diferentes variantes. A sintaxe e
exemplos demonstram as funções grupo seleccionado são fornecidos juntamente com uma discussão
da suade dados e o efeito da palavra-chave DISTINCT e valores nulos.
tipos

Definição de Funções de Grupo


Funções de grupo operam em dados agregados e retornar um único resultado por grupo. estes grupos
consistem geralmente em uma ou mais linhas de dados. funções de uma única linha são definidos
com
z,. . .)a =fórmula
Resultado,
M (x,em
y, que x, y, z. . . são parâmetros de entrada. A função F é executado em uma
linha da de dados de cada vez e retorna um resultado para cada linha. As funções de grupo pode ser
conjunto
definida utilizando a seguinte
Fórmula:
F(g1, g2, g3, . . . , gn) = result1, result2, result2, . . . , resultn;
A função de grupo é executado uma vez para cada grupo de linhas e retorna um único resultado
As linhas
por grupo.
dentro destes grupos estão associados usando um valor comum ou atributo. Se uma tabela
é apresentada
como um grupo com a função de grupo na sua totalidade, em seguida, um resultado é retornado. Um
ou mais podem
funções grupo aparecer na lista SELECT da seguinte forma:

Considere tabela Funcionários. Existem 107 registros nesta tabela. Grupos podem ser criados
sobre
com
os base
valores comuns que partilham linhas. Por exemplo, as linhas que compartilham o mesmo
Valor DEPARTMENT_ID podem ser agrupados. Depois disso, as funções de grupo são executados
separadamente contra cada grupo original.
A Figura 9-1 mostra 12 valores distintos DEPARTMENT_ID na tabela empregados, incluindo
umnulo. As linhas são distribuídos em grupos de 12 com base em valores DEPARTMENT_ID
valor
A função COUNT executa 12 vezes, uma para cada grupo. Observe que os grupos distintos não
comuns.
contêm o mesmo número de linhas.
Figura 9-1 funções do Grupo que operam em 12 grupos

NOTA funções Grupo agregar uma série de valores de várias linhas em um único resultado. Eles
são amplamente utilizados para fins de relatórios, fornecendo somas totais, médias e contagem. Eles
também sãocomo síntese ou funções de agregação.
conhecido

Usando Funções de Grupo


AVG, SUM, MIN, MAX, COUNT, STDDEV, e a variância de demonstrar a aplicação prática
de funções de grupo . Estas funções agrupar todos retornam resultados numéricos. Além disso, o
MIN e MAX
funções podem retornar caracteres e data resultados. Estas funções operam em valores não nulos,
masoutros,
os ao contrário
a chamada de função COUNT conta também linhas com valores nulos, sob certas
condições.

A Função COUNT
A função COUNT conta o número de linhas em um grupo. Sua sintaxe é a seguinte:

Esta sintaxe pode ser desconstruída-se nas seguintes formas:

• COUNT (*)
• COUNT (DISTINCT expr )
• COUNT (ALL expr )
• COUNT ( expr )

Quando COUNT (*) é invocado, todas as linhas do grupo, incluindo aqueles com valores nulos
são ou
contadas.
valoresQuando
duplicados,
COUNT (DISTINCT expr ) é executado, apenas as ocorrências únicas de expr
contadas para cada grupo. A palavra-chave ALL é parte da sintaxe padrão, portanto COUNT (ALL
são
expr ) e ( expr ) são equivalentes. Se expr é baseada em colunas nomeadas, então nulos são
COUNT
ignorados,em
baseia-se mas se exproutra coisa, ela será avaliada para cada linha, se há valores nulos na linha
qualquer
ou não. O tipo de dados de expr pode ser o número, DATA, CHAR, ou VARCHAR2. considere estes
consultas:

Consulta uma conta as linhas da tabela de empregados e retorna o inteiro 107. consulta 2
contagens
linhas os não nulos COMMISSION_PCT e retorno 36. É também conta a expressão literal
com valores
que não se baseia em uma coluna chamada e, portanto, é avaliada para cada linha, retornando 107.
1,
3 considera as linhas 107 não nulos, determina o número de valores SALARIAIS únicas, e retorna
Consulta
Consulta 4 demonstra como a função COUNT é usado em ambos uma coluna de data e um
58.
NÚMERO
coluna. Os inteiros 107 e 106 são devolvidos, uma vez que existem 107 valores hire_date não nulos
e106 valores manager_id não nulos no grupo.

EXAME TIP a contagem de um literal, como COUNT (1), é reescrito internamente para COUNT
(*) e todas as linhas, independentemente da presença de valores nulos.
conta

A função SUM
A função soma retorna o total agregado dos valores numéricos não nulos em um grupo. Ele tem este
sintaxe:

Esta sintaxe pode ser desconstruída-se nas seguintes formas:

• SUM (DISTINCT expr )


• SUM (ALL expr )
• SUM ( expr )

SUM (DISTINTA expr ) fornece um total adicionando todos os valores originais devolvido
avaliada
depois
para
expr
cada
é linha no grupo. SUM ( expr ) e SOMA (ALL expr ) proporcionam um total pela
adição de expr
para cada linha no grupo. Os valores nulos são ignorados. O expr parâmetro deve ser um valor
Considere as seguintes perguntas:
numérico.

Existem 107 linhas na tabela EMPREGADOS. Consulta 1 adiciona o número 2 em 107 linhas e
retorna 214. Consulta 2 converte o valor da coluna de salário para cada linha no grupo, o qual neste
caso
é toda a tabela, e retorna a quantidade total de salário de 721166. Consulta 3 retorna um total de
uma vez que muitos funcionários é pago o mesmo salário, e a palavra-chave DISTINCT só
417,158,
acrescenta
na coluna com
valores
o total.
exclusivos
Consulta 4 retorna 7,9 após a adição dos valores COMMISSION_PCT não
nulos.
A função AVG
A média valor de uma coluna ou de expressão é obtido dividindo a soma pelo número de não-
linhas nulos no grupo. A função AVG tem a seguinte sintaxe:

Esta sintaxe pode ser desconstruída-se nas seguintes formas:

• AVG (DISTINCT expr )


• AVG (ALL expr )
• AVG ( expr )
Quando o AVG (DISTINTA expr ) é invocado, os valores distintos de expr são somados e
o número
divididos
de ocorrências
por únicas de expr . AVG (ALL expr ) e AVG ( expr ) adicionar os valores não
de expr para cada linha e dividir a soma pelo número de linhas não nulos no grupo. o expr
nulos
parâmetro deve ser um valor numérico. Considere estas perguntas:

Existem 107 linhas na tabela EMPREGADOS. Consulta 1 adiciona o número 2 em 107 linhas e

divide o total pelo número de linhas para retornar o número 2. literais numéricos apresentados ao
função são devolvidos inalterada. Consulta 2 adiciona o valor do salário para cada linha para obter o
AVG
total de
quantidade salário de 721.166, o qual é dividido por as linhas com valores não nulos SALARIAIS
a(107)
médiapara
6.739,86916.
retornar Existem 58 valores salariais únicas, que, quando adicionado, o rendimento de
um total de417158. 417158 por 58 retorna 7192,37931 como a média dos valores salariais distintas,
Dividindo
que é devolvido pela terceira consulta. Adicionando os valores não nulos COMMISSION_PCT
produz
total de um
7,9. Dividindo este por os registos de empregados com valores COMMISSION_PCT não
nulos (36)
produz 0,219444444, que é devolvido por consulta 4.

As Funções stdDev e variância


O desvio padrão é uma medida do espalhamento ou a distribuição dos valores de uma coluna ou
expressão. Ele é obtido calculando a raiz quadrada da variância. A variância refere-se a
soma das diferenças ao quadrado entre o valor real e o valor médio dividido por N-1 ou N
dependendo se variância está sendo estabelecido para uma amostra ou toda a população. o
função de variância estabelece variância para uma amostra e, portanto, divide a soma de quadrado
as diferenças entre os valores reais e médios por N-1. Para mais informações, procure o
funções VAR_POP e VAR_SAMP, que estão além do escopo deste exame.
A variação é calculada calculando primeiro a média dos valores no conjunto. Então, para cada
número, subtraia o valor médio e quadratura do resultado. Esta é a diferença de quadrados. a
é, em seguida, a soma de todas as diferenças quadrado dividido por N-1. O STDDEV e variância
variância
funções têm duas formas, uma forma agregada e uma forma analítica que está fora do âmbito do
exame. A forma agregada tem esta sintaxe:

Considere as consultas em Figura 9-2 .


Figura 9-2 As funções de variância e STDDEV

Existem três funcionários que pertencem ao departamento de 90 com valores salariais de 24000,
17000.
17000,
O salário
e médio é 19333,3333 como retornado por consulta 2, que mostra a variância e
desvio padrão. Para o estatisticamente inclinados, consulta 3 e 4 maneiras show de alternativas para
variância e o desvio padrão. Estes são nonexaminable e para exemplificar o
calcular
descrições destas funções. Consulta 3 usa o poder da função, o que levanta (salário - média
salário) para alimentar 2, dando-lhe as diferenças ao quadrado, que são somados usando a função
soma e por dois (N-1). Ele usa também a função sqrt para calcular o desvio padrão. Lembrar, n é 3
dividida
porque há três valores salariais no conjunto de amostra. O salário médio, 19333.3333, é hard-
codificado em consulta 3, enquanto consulta 4 usa uma subconsulta aninhada (detalhes no Capítulo
11valor
o ) paramédio
buscardodinamicamente
salário.

As funções MAX e MIN


As funções MAX e MIN devolver o máximo (maior) e mínimo (menor) expr valor em um
grupo. As funções MAX e MIN operar em número, a data, CHAR, e dados VARCHAR2
tipos. Eles retornam um valor do mesmo tipo de dados como seus argumentos de entrada, que são ou
a maior
ou menores itens no grupo. Quando aplicado a artigos da data, MAX retorna a data mais recente, e
retorna o mais antigo um. cadeias de caracteres são convertidos em representações numéricas de seu
MIN
constituinte
caracteres com base nas configurações NLS no banco de dados. Quando a função MIN é aplicada a
um grupo
cadeias dedecaracteres, a palavra que aparece em primeiro lugar em ordem alfabética é devolvido,
enquanto
que aparece
MAX passado.
retorna
Asafunções
palavra MAX e MIN tem a seguinte sintaxe:

Esta sintaxe pode ser desconstruída-se nas seguintes formas:

• MAX (DISTINCT expr ); MIN (DISTINTA expr )


• MAX (ALL expr ); MIN (ALL expr )
• MAX ( expr ); MIN ( expr );

MAX ( expr ), MAX (ALL expr ) e MAX (DISTINCT expr ) examinar os valores para expr em
grupo
uma de linhas e devolver o maior valor. Os valores nulos são ignorados. MIN ( expr ), MIN (ALL
expr ),(DISTINCT
MIN e expr ) examinar os valores para expr em um grupo de linhas e retornar o menor
valor.
Considere estas perguntas:
Consulta 1 retorna 0,1 e 0,4 para os valores mínimos e máximo COMMISSION_PCT na
tabela EMPREGADOS. Observe que os valores nulos para COMMISSION_PCT são ignorados.
Consulta
uma coluna
2 avalia
de data e indica que a primeira START_DATE na tabela JOB_HISTORY é 17-
SEP-1995 e o mais recente END_DATE é 07-JAN-2015. Consulta 3 retornos e AC_ACCOUNT
ST_MAN como os valores JOB_ID aparecendo primeiro e último em ordem alfabética na tabela
Funcionários.
The LISTAGG Function
A função LISTAGG retorna uma cadeia de agregação de valores da coluna. Se uma cláusula
ORDER BY é os valores são classificados e concatenados. Esta função opera como uma função de
Presentemente,
agregação
que single-set
opera em todas as linhas e retorna uma linha de saída único ou como uma função de agregação
set-grupouma
devolve quelinha de saída para cada grupo na cláusula GROUP BY (discutido na próxima secção).
LISTAGG function has this syntax:
o

O expr parâmetro pode ser qualquer expressão válida. Os valores nulos são ignorados. Os
delimitadores
a cadeia especifica
opcional para separar a expr . A ORDEM BY determina a ordem na qual o
valores concatenados são devolvidos. Considere as consultas em Figura 9-3 .
Figure 9-3 The LISTAGG function

Consulta 1 retorna o formato de saída familiarizado países ordenados por REGION_ID e reverso
listando
alfabeticamente pelo COUNTRY_NAME. Consulta 2 demonstra a forma de um único agregado de
definir oLISTAGG, e uma única linha que encadeia os valores COUNTRY_NAME em uma vírgula
função
lista delimitada é retornado. Consulta 3 mostra a forma agregada set-grupo, e um vírgula-delimitado
lista concatenada de valores COUNTRY_NAME são devolvidos para cada agrupamento por
REGION_ID
com junto do número de itens por grupo.
uma contagem

EXAME TIP Há duas regras fundamentais para se lembrar quando se estuda as funções de grupo.
eles sempre operam em um único grupo de linhas de cada vez. O grupo pode ser um dos muitos
Primeiro,
grupos um
conjunto de dados foi dividido em, ou pode ser uma tabela inteira. A função de grupo executa uma
vez porEm segundo lugar, as linhas com valores nulos que ocorrem em colunas de grupo ou
grupo.
expressões
funções, excepto
são ignorados
o COUNT por(*)
todo
e COUNT
o grupo ( literais formas) da função de contagem.

Exercício 9-1: Use as funções do Grupo A tabela PAÍSES armazena uma lista de
valores COUNTRY_NAME. Você é obrigado a calcular o comprimento médio de todos os nomes de
países.
Quaisquer componentes fracionários deve ser arredondado para o número inteiro mais próximo.

1. Inicie o SQL * Plus ou SQL Developer e conectar-se ao esquema HR.


2. O comprimento do valor do nome do país para cada linha deve ser calculado usando o
comprimento
função. O comprimento médio pode ser determinado usando a função AVG. Ele pode ser
arredondado
o número inteiro
paramais próximo utilizando a função ROUND. O que se segue é uma solução
possível:

3. A execução dessa declaração mostra que a duração média de todos os nomes dos países nas
mesa de países é oito caracteres.

Dados do Grupo Usando a Cláusula GROUP BY


As funções de grupo discutidos anteriormente usar grupos de linhas que compõem a tabela inteira.
esta seção
explora particionamento de um conjunto de dados em grupos que utilizam o GROUP BY cláusula.
Funções adeesses
aplicada gruposubconjuntos
pode ser ou grupos de linhas.

Criação de grupos de dados


A tabela tem pelo menos uma coluna e zero ou mais linhas de dados. Em muitas tabelas, os dados
requer
para uma análise em informação útil. É uma exigência de relatório comum para calcular
transformá-lo
a partir de um conjunto de dados dividido em grupos com diferentes atributos. exemplos anteriores
estatísticas
usando grupo
funções operado contra todas as linhas em uma tabela. A tabela inteira foi tratado como um grupo
Grupos de dados dentro de um conjunto são criadas associando linhas com atributos comuns entre si.
grande.
Depois disso, as funções de grupo pode executar contra cada um destes grupos. Grupos de dados
incluem
linhas e colunas
todo não específicas.
Considere tabela Funcionários. É composta por 11 colunas e 107 linhas. Você poderia criar
grupos de linhas que compartilham um valor DEPARTMENT_ID comum. A função de soma pode
entãocriar
para ser utilizada
totais de salários por departamento. Outra possível conjunto de grupos podem
compartilhar
valores da coluna.
JOB_IDA função
comum de grupo AVG pode então ser usado para identificar o salário médio
pago aos
empregados em trabalhos diferentes.
Um grupo é definido como um subconjunto de todo o conjunto de dados a partilhar uma ou mais
atributos
atributos são comuns. Estes
tipicamente valores da coluna, mas também podem ser expressões. O número de
grupos criado
depende dos valores distintos presentes no atributo comum.
Como a Figura 9-4 mostra, existem 12 valores DEPARTMENT_ID únicos na tabela de
Se as
PESSOAL.
linhas são agrupados usando valores DEPARTMENT_ID comuns, haverá 12 grupos. Se um
grupo
função é executado contra estes grupos, haverá 12 valores devolvidos porque ele executará
uma vez para cada grupo.

Figura 9-4 valores originais DEPARTMENT_ID na tabela TRABALHADORES

NOTA Agrupando dados e utilizando funções de resumo são amplamente utilizados para fins de
relatório.
valiosa para
Istoa éprática da segmentação de um conjunto de dados em diferentes grupos. A Oracle
fornece o analítica para desconstruir conjuntos de dados em grupos, divida-as em mais subgrupos, e
linguagem
assim por
funções dediante.
grupo agregado pode então ser executado contra esses grupos e subgrupos.

A cláusula GROUP BY
A instrução SELECT é reforçada pela adição da cláusula GROUP BY. Esta cláusula facilita
a criação de grupos. Aparece depois a cláusula WHERE, mas antes da cláusula ORDER BY, como
seguinte maneira:
A coluna ou expressão especificado na cláusula GROUP BY também é conhecido como o
atributo
agrupamento
e é o componente que as linhas são agrupadas por. O conjunto de dados são segmentados de
acordo com oatributo. Considere a seguinte consulta:
agrupamento

O atributo de agrupamento no presente exemplo é a coluna DEPARTMENT_ID. O conjunto de


as funções
dados, em
de grupo
que na lista SELECT deve operar, é dividido em 12 grupos, um para cada
departamento. Para cada grupo (departamento), o valor máximo salário e o número de linhas são
devolvida. Uma vez que os resultados são classificados por DEPARTMENT_ID, a terceira linha no
conjuntoosdevalores
contém resultados
de 11000 e 6. Isso indica que 6 funcionários têm o mesmo DEPARTMENT_ID
valor (que você já sabe é 30). Destes 6, o maior ganhador tem um valor de salário de
11000. Esta consulta demonstra que o atributo de agrupamento não tem de ser incluído na
lista SELECT.
É comum ver o atributo de agrupamento na lista SELECT junto com funções de grupo. Se um
item que não é uma função de grupo aparece na lista SELECT e não há nenhuma cláusula GROUP
BY, uma
“ORA-00937: não um grupo único grupo de funções” erro é gerado. Se um grupo BY está presente
mas esse item não é um atributo de agrupamento, em seguida, um “ORA-00979: não um GROUP
BY expressão” erro é
devolvida.

EXAME TIP Qualquer item na lista SELECT que não é uma função de grupo deve ser um atributo
adecláusula
agrupamento
GROUP
de BY.

Se uma função de grupo é colocado numa cláusula ONDE, um “ORA-00934: função de grupo
não é permitido
aqui”erro é retornado. Que impõe condições de nível de grupo é conseguida utilizando a cláusula
HAVING
discutido mais adiante neste capítulo. As funções de grupo pode, no entanto, ser utilizado como
parte do pedido pela
cláusula.
A primeira consulta na Figura 9-5 gera um erro porque a coluna END_DATE é no SELECT
lista com uma função de grupo e não há nenhuma cláusula GROUP BY. Um erro ORA-00979 é
aretornado
segunda de
consulta, uma vez que o item START_DATE está listada na cláusula SELECT, mas não é
agrupamento atributo.
um
Figura 9-5 A GROUP BY

A terceira consulta divide as linhas JOB_HISTORY em grupos com base no ano de quatro
componente
dígitos da coluna END_DATE. Quatro grupos são criados usando este atributo agrupamento.
representam diferentes anos quando os funcionários terminou seus trabalhos. A contagem mostra o
Estes
número de que abandonaram seus empregos durante cada um desses anos. Os resultados estão
empregados
listados
com baseemnoordem decrescente
“número de empregados” expressão. Note-se que a função de grupo COUNT está
apresente
cláusulaem
ORDER BY.

EXAME TIP Um conjunto de dados é dividido em grupos usando a cláusula GROUP BY. O
aatributo
chave comum
de agrupamento
compartilhada
é por membros de cada grupo. O atributo de agrupamento é usualmente
uma podem
mas única coluna,
ser colunas múltiplas ou uma expressão que não pode ser baseado em funções de grupo.
Note que de
atributos apenas
agrupamento e funções de grupo são permitidas na cláusula SELECT ao usar GROUP
BY.
O agrupamento por várias colunas
Uma poderosa extensão da cláusula GROUP BY usa vários atributos de agrupamento. licenças da
conjuntos de dados para ser dividida em grupos e permite que estes grupos ser ainda dividido em
oracle
subgrupos
utilizando um atributo agrupamento diferente. Considere as duas consultas a seguir:

Consulta 1 restringe as linhas retornados a partir da tabela que os empregados das 35 linhas com
valores
não-nulo
COMMISSION_PCT. Estas linhas são então divididos em dois grupos: 80 e NULL com
base
O agrupamento
em atributo DEPARTMENT_ID. O conjunto de resultados contém duas linhas, que
retornam
os valoresaCOMMISSION_PCT
soma de para cada grupo.
Consulta 2 é semelhante ao primeiro, exceto que tem um item adicional: JOB_ID tanto o
e GROUP
SELECT BY cláusulas. Este atributo segundo agrupamento decompõe-se os dois grupos por
DEPARTMENT_ID para os componentes JOB_ID constituintes pertencentes às linhas em cada
Os valores JOB_ID distintos para as linhas com DEPARTMENT_ID = 80 são AC_ACCOUNT,
grupo.
e SA_MAN. O valor JOB_ID distinta para linhas com um DEPARTMENT_ID nula é SA_REP.
SA_REP,
Portanto, consulta 2 retorna dois grupos: um que consiste em três subgrupos, e a outra com apenas
um, como mostrado na Figura 9-6 .
Figura 9-6 A GROUP BY com várias colunas

Exercício 9-2: Grupo de dados baseada em colunas múltipla Análise de rotatividade de pessoal é
um comum Você é obrigado a criar um relatório que contém o número de funcionários que
declaradas.
deixaram seus empregos, agrupadas por ano em que eles deixaram. Os trabalhos que realizaram
também
os resultados
é necessária.
devem ser o classificados em ordem decrescente com base no número de empregados em
cada grupo.
relatório deveo listar o ano, o JOB_ID, eo número de funcionários que deixaram um trabalho
específico em que
ano.

1. Inicie o SQL Developer e conectar-se ao esquema HR.


2. A tabela contém os JOB_HISTORY colunas END_DATE e JOB_ID, que constituem
os dados de origem para este relatório.
3. O componente ano pode ser extraído usando a função TO_CHAR. O número de
empregados que param um trabalho específico em cada ano pode ser obtida usando o
COUNT (*)
função.
4. Executar a seguinte instrução retorna o relatório rotatividade de pessoal, conforme
solicitado:

Funções grupo aninhado


Recorde-se que as funções de uma única linha podem ser encaixados ou incorporado para qualquer
nível de profundidade. funções de grupo
podem ser aninhados apenas dois níveis de profundidade. Três formatos usando funções de grupo
são G1
mostrados aqui: ) = resultado
( group_item
G1 (G2 ( group_item ) = resultado
G1 (G2 (G3 ( group_item ))) não é permitido.
Funções de grupo são representados pela letra G seguida de um número. A primeira forma
não simples
contém funções aninhadas. Exemplos incluem o somatório ( group_item ) e AVG ( group_item )
funções que retornam um único resultado por grupo. A segunda forma suporta duas funções grupo
como SUM
aninhadas,
valor do (AVG ( group_item
group_item por grupo é)). Neste caso,
calculado antesuma cláusula
de ser GROUP
agregadas pelaBY é necessário
função porque a
somatório.
média
A terceira forma é anulado pela Oracle. Considere-se uma expressão que aninha três funções de
Se agrupo.
função MAX é aplicada ao exemplo anterior, a expressão
MAX (SUM (AVG ( group_item ))) é formada. As duas funções grupo interno retornar um único
representando a soma de um conjunto de valores médios. Esta expressão torna-se MAX ( valor
valor
único
não é razoável,
), que visto que uma função de grupo não pode ser aplicado a um único valor.

EXAME TIP funções de linha única podem ser encaixados a qualquer nível, mas as funções de
grupo
no máximo,
podemdois
ser níveis
encaixados
de profundidade.
para, A contagem chamada de função aninhada (SUM (AVG
(X))) retorna
00935:. Grupoo função
erro “ORA
é demasiado aninhados”É aceitável para funções ninho de fila única dentro
funções. Considere a seguinte consulta: SELECT SUM (AVG (LENGTH (LAST_NAME))) FROM
grupo
FUNCIONÁRIOS GROUP BY DEPARTMENT_ID. Ele calcula a soma do comprimento médio de
valores LAST_NAME por departamento.

Incluir ou excluir linhas agrupadas Usando o TENDO


Cláusula
Criação de grupos de dados e aplicando funções agregadas são úteis. Um refinamento destas
acaracterísticas
capacidade deé incluir ou excluir os resultados com base em condições de nível de grupo. Esta
seção apresenta
TENDO cláusula.
a Uma clara distinção entre a cláusula WHERE e a cláusula HAVING.

Restringindo Resultados do Grupo


ONDE condições cláusula restringir linhas retornadas por uma consulta. As linhas são incluídos se
cumprir a listadas e são conhecidos como os resultados em nível de linha . Linhas de agrupamento
condições
usando
BY o GROUP
e aplicar uma função de agregação para estes grupos retorna resultados muitas vezes referida
resultados ao nível do grupo . A cláusula HAVING restringe os resultados ao nível do grupo.
como
A consulta a seguir limita as linhas recuperadas da tabela JOB_HISTORY especificando um
ONDE condição com base nos valores da coluna DEPARTMENT_ID.

Essa consulta retorna sete linhas. Se a cláusula WHERE estavam ausentes, todos os dez linhas
recuperado.
seria Suponha que você quer saber quantos funcionários já foram empregadas em cada um
dos
estes departamentos. Há sete linhas que podem ser agrupadas e contadas manualmente. No entanto,
há um grande número de linhas, podem ser utilizadas uma função agregada como COUNT, como
se
mostradoconsulta:
seguinte na

Esta consulta contribui para a afirmação anterior. A contagem de função agregada foi adicionado
à
Também foi adicionado lista SELECT, e uma cláusula GROUP BY DEPARTMENT_ID. Quatro
linhas comdesua
contagem linha agregada são devolvidos, e é claro que as sete linhas originais restringido pela
WHERE foram agrupadas em quatro grupos com base em valores DEPARTMENT_ID comuns,
mostrado na tabela seguinte:
como
Suponha que você queira restringir essa lista para apenas os departamentos com mais de um
empregado.
O TENDO limites cláusula ou restringe as linhas de nível de grupo, conforme necessário.
Esta consulta deve realizar os seguintes passos:

1. Considerar todo o conjunto de dados em nível de linha.


2. Limitar o conjunto de dados por qualquer onde as condições cláusula.
3. Segmento os dados em um ou mais grupos que utilizam os atributos de agrupamento
especificado
GROUP BY no cláusula.
4. Aplicar quaisquer funções agregadas para criar um novo conjunto de dados em nível de
grupo.
considerado
Cada linha
comopode
uma
seragregação de seus dados no nível de linha de origem com base nos
grupos criados.
5. limitar ou restringir os dados de nível de grupo com uma condição cláusula HAVING.
Apenas
resultados
em nível
correspondentes
de grupo essas condições são devolvidos.

NOTA Escolhendo o contexto apropriado para usar um WHERE ou uma cláusula HAVING depende
se as linhas reais ou linhas de nível de grupo devem ser limitadas. Quando linhas reais (físicos) são
restrito, uma ou mais condições são impostas usando uma cláusula WHERE. Quando estas linhas
são conjunto,
em agrupadosuma ou mais funções de agregação pode ser aplicada, obtendo-se uma ou mais linhas
ao nível
pode ser do
restringida
grupo queutilizando uma cláusula HAVING.

A cláusula HAVING
A forma geral da instrução SELECT é reforçada pela adição da cláusula HAVING
e torna-se o seguinte:

Uma diferença importante entre a cláusula HAVING e as demais cláusulas instrução SELECT é
que ele apenas pode ser indicada se uma cláusula GROUP BY está presente. Esta dependência é
razoável, visto que
linhas de nível de grupo deve existir antes que eles possam ser restrito. A cláusula HAVING pode
ocorrer antes
Cláusula GROUPdo BY na instrução SELECT. No entanto, é mais comum para colocar o TENDO
cláusula após cláusula GROUP BY. Todos agrupamento é realizada e funções de grupo são
executados
para avaliarantes
a cláusula HAVING.
A consulta a seguir mostra como a cláusula HAVING é usado para restringir um conjunto de
Registros
dados da
agregado.
tabela JOB_HISTORY são divididos em quatro grupos. As linhas que atendem a
TENDO condição cláusula (contribuindo com mais de uma linha para a contagem de linha de grupo)
são retornados:
Três
2, e 3,linhas com valoresrespectivamente.
são devolvidos, DEPARTMENT_ID de 50, 80, e 110, cada um com um valor de COUNT (*)
de 2,A Figura 9-7 mostra três procedimentos. Consulta 1 divide os 107 registos da tabela
em 19
TRABALHADORES
grupos com base em valores JOB_ID comuns. O salário médio para cada grupo e o JOB_ID
contagem de linha agregados são computados. Consulta 2 refina os resultados, excluindo
condicionalmente
linhas agregados onde
aqueles
o salário médio é menor ou igual a 12000, usando uma cláusula HAVING.
Consulta 3 demonstra que os operadores booleanos podem ser usados para especificar cláusula ter
condições.
várias

Figura 9-7 A cláusula HAVING


TIP EXAME
Cláusula GROUPA cláusula
BY pode HAVING pode ser sem
ser especificado especificada apenas
uma cláusula quando uma cláusula GROUP BY
HAVING.
está presente. UMA
Exercício 9-3: usar a cláusula TENDO A empresa está planejando uma campanha de recrutamento
e quer
identificar quais os dias dos membros da equipe na semana 20 ou mais foram contratados. Seu
erelatório
o númerodeve
de listar
funcionários
os dias contratados em cada um deles.

1. Inicie o SQL * Plus ou SQL Developer e conectar-se ao esquema HR.


2. TRABALHADORES Divide registos em grupos com base no componente dia do
HIRE_DATE
coluna. Você pode obter o número de funcionários por grupo usando a função COUNT. Usar
a cláusula HAVING para restringir estas linhas para apenas aqueles onde a contagem é
maior
igual aou
20.
3. Uma solução possível é a seguinte declaração, que retorna os dias da semana em que
20 ou mais empregados foram contratados:

Broca Two-Minute
Descrever as funções de agrupamento
• funções de grupo também são conhecidos como de várias linhas, agregado, ou funções de
resumo.
executado
Elesuma vez para cada grupo de dados e agregar os dados a partir de várias linhas em
uma únicapara cada grupo.
resultam
• Os grupos podem ser tabelas inteiras ou partes de uma tabela agrupados por um agrupamento
comum
atributo.
• A contagem de uma coluna ou uma expressão retorna um valor inteiro que representa o
número
linhas de
em um grupo, no qual a coluna ou expressão especificado não é nulo.
• A função soma retorna um total agregado de todos os valores numéricos não nulos em um
grupo.
• A função AVG divide a soma de uma coluna ou expressão pelo número de linhas não nulos
num grupo.
• As funções MAX e MIN operar em número, data, CHAR, e os dados VARCHAR2
tipos. Eles retornam um valor que seja o item maior ou menor no grupo.

Dados do Grupo Usando a Cláusula GROUP BY


• A cláusula GROUP BY especifica as linhas de atributos de agrupamento deve ter em comum
para eles

ser agrupados.
• A cláusula GROUP BY facilita a criação de grupos dentro de um conjunto seleccionado de
dados
aparece
e depois de a cláusula WHERE, mas antes da cláusula ORDER BY.
• Qualquer item na lista SELECT que não é uma função de grupo deve ser um atributo de
agrupamento.
• As funções de grupo não podem ser colocados em uma cláusula WHERE.
• conjuntos de dados podem ser divididos em grupos e ainda dividido em subgrupos com base
ematributos
múltiplos
agrupamento.
• A função LISTAGG retorna uma cadeia concatenada de valores coluna classificada,
classificado
ORDEM DE pelaexpressão especificado após a cláusula dentro do grupo.

Incluir ou excluir linhas agrupadas usando a cláusula HAVING


• linhas Clustering usando um agrupamento comum atribuir com a cláusula GROUP BY e
aplicando
uma função agregada a cada um destes grupos devolve os resultados ao nível do grupo .
• A cláusula HAVING fornece a linguagem para limitar os resultados a nível de grupo
devolvidos.
• A cláusula HAVING pode ser especificado somente se houver uma cláusula GROUP BY
presente.
• Todos agrupamento é realizada e funções de grupo são executados antes de avaliar o TENDO
cláusula.

Auto teste
1 . O resultado é retornado pela seguinte declaração?

(Escolha a melhor resposta.)


A. NULL
B. 0
C. 1
D. Nenhuma das anteriores
2 . Escolha uma afirmação correta sobre as funções de grupo.
A. As funções de grupo pode ser usado apenas quando um grupo BY está presente.
B. funções de grupo podem operar em várias linhas ao mesmo tempo.
C. funções Grupo operam em apenas uma única linha de cada vez.
D. Funções de grupo pode executar várias vezes dentro de um único grupo.
3 . O valor é retornado depois de executar a seguinte declaração?

Suponha que há dez registros de empregados e cada um contém um valor salário de 100,
comexemplo,
por exceção que tem um valor nulo no campo salário. (Escolha a melhor resposta.)

A. 900
B. 1000
C. NULL
D. Nenhuma das anteriores
4 . Que valores são devolvidos depois de executar a seguinte declaração?

Suponha que há dez registros de empregados e cada um contém um valor salário de 100,
comexemplo,
por exceção que tem um valor nulo no campo salário. (Escolha todos os que se aplicam.)
A. 10 e 10
B. 10 e NULL
C. 10 e 9
D. Nenhuma das anteriores
5 . O valor é retornado depois de executar a seguinte declaração?

Suponha que há dez registros de empregados e cada um contém um valor salário de 100,
com um
para exceção
empregado, que tem um valor nulo no campo salário. (Escolha a melhor resposta.)
A. NULL
B. 90
C. 100
D. Nenhuma das anteriores
6 . O valor é retornado depois de executar a seguinte declaração?

Suponha que há dez registros de empregados e cada um contém um valor salário de 100,
comexemplo,
por exceção que tem um valor nulo no campo salário. (Escolha a melhor resposta.)
A. Um erro
B. 3
C. 4
D. Nenhuma das anteriores
7 . Quantas linhas são retornadas pela seguinte consulta?

Suponha que há 11 não nulo e 1 Valores DEPARTMENT_ID nula únicas. Todos os registros
um valor do salário não nulo. (Escolha a melhor resposta.)
têm
A. 12

B. 11
C. NULL
D. Nenhuma das anteriores
8 . Que valores são devolvidos depois de executar a seguinte declaração?

Suponha que a tabela JOBS tem dez registros com o mesmo valor JOB_ID de DBA ea
mesmo valor MAX_SALARY de 100. (Escolha a melhor resposta.)
A. Uma linha de saída com o DBA valores, 100
B. Dez linhas de produção com o DBA valores, 100
C. Um erro
D. Nenhuma das anteriores
9 . Quantas linhas de dados são devolvidos depois de executar a seguinte declaração?

Suponha tabela EMP tem dez linhas e cada um contém um valor salário de 100, exceto para
um, que tem um valor nulo no campo salário. As cinco primeiras linhas têm um valor
de 10, enquanto que o segundo grupo de cinco linhas, que inclui a linha com um salário nulo
DEPT_ID
valor, tem um valor DEPT_ID de 20. (Escolha a melhor resposta.)
A. Duas fileiras
B. Uma linha
C. zero linhas
D. Nenhuma das anteriores
10 . Quantas linhas de dados são devolvidos depois de executar a seguinte declaração?

Suponha tabela EMP tem dez linhas e cada um contém um valor salário de 100, exceto para
um, que tem um valor nulo no campo salário. As cinco primeiras linhas têm um valor
de 10, enquanto que a segunda cinco linhas, que incluem a linha com um valor do salário
DEPT_ID
nulo, têm
valor um de 20. (Escolha a melhor resposta.)
DEPT_ID
A. Duas fileiras
B. Uma linha
C. zero linhas
D. Nenhuma das anteriores
11 . Escolha duas afirmações que são verdadeiras.
A. A função STDDEV retorna a raiz quadrada da variância.
B. função da variação retorna a raiz quadrada do STDDEV.
C. A função AVG funciona em data e dados numéricos.
D. A função LISTAGG retorna uma soma numérico total de uma lista de dados.
E. LISTAGG retorna os valores concatenadas da coluna medida.
12 . Quantas linhas de dados são devolvidos depois de executar a seguinte declaração?

Suponha tabela de trabalhadores tem dez valores DEPARTMENT_ID distintas e 107 linhas.
(Escolha a melhor resposta.)
A. 0
B. 1
C. 10
D. 107
E. Nenhuma das anteriores

Respostas de auto-teste
1. C . A tabela DUAL tem uma fileira e uma coluna. A função COUNT (*) retorna o
número de linhas em uma tabela ou grupo.
A , B , e D são incorrectas. A está incorreta porque uma tabela pode ter zero ou mais
mas linhas,
as linhas não nulo. B é incorrecta, uma vez a tabela DUAL tem uma linha. D é
incorrecta
porque a resposta correcta é C .
2. B . Por definição, funções de grupo podem operar em várias linhas de cada vez, ao
funções
contrário
linha.de um único
A , C , e D estão incorrectos. Um é incorrecta porque a função de grupo pode ser usado
GROUPsem um
BY cláusula. Neste caso, todo o conjunto de dados é operado como um grupo. C é
porque as funções do grupo são muitas vezes executada contra uma tabela inteira, que é
incorrecta
tratado
grupo. Dcomo um
é incorrecta porque uma vez que um conjunto de dados foi dividido em diferentes
grupos, qualquer
funções de execução de grupo uma vez por grupo.
3. Um . A função agregada SUM ignora valores nulos e adiciona valores não nulos. desde
linhas
nove
contêm o valor SALÁRIO 100, 900 é retornado.
B , C , e D estão incorrectos. B seriam devolvidas se SUM (NVL (salário, 100)) foram
executado. C é uma escolha tentadora desde aritmética regular com valores NULL retorna
um NULLNo entanto, as funções de agregação, com excepção de COUNT (*), ignorar
resultado.
valores nulos.
incorreta D éa resposta correta é A .
porque
4. C . COUNT (*) considera todas as linhas, incluindo aqueles com valores nulos,
COUNT
enquanto
(SALÁRIO) considera apenas as linhas não nulas.
A , B , e D são incorrectas.
5. C . A função NVL converte o valor um NULL em 100. Depois disso, a média

função adiciona os valores salariais e obtém 1000. Dividindo este pelo número de registros
retorna 100.
A , B , e D são incorrectas. B seria devolvido se o AVG (NVL (SALÁRIO, 0)) foram
selecionado. É interessante notar que, se foram selecionados AVG (SALÁRIO), 100 teria
sido devolvido, dado que a função do AVG se somar os valores não nulos e dividir o total
também
o número de linhas com valores SALARIAIS não nulos. Então, AVG (SALÁRIO) seria
por
calculada como 900/9 = 100.
6. C . O conjunto de dados está segmentada pela coluna de salário. Isto cria dois grupos:
valores
um salário
com de 100 e outro com um valor do salário nulo. O comprimento médio de
valor do salário 100 é de 3 para as linhas do primeiro grupo. O valor do salário NULL é
convertido para o número 0 pela função NVL, e o comprimento médio de salário é 1.
primeiro
A função somatório opera entre os dois grupos de adição os valores de 3 e 1, voltando 4.
A , B , e D são incorrectas. Um parece plausível desde funções de grupo não podem ser
mais de dois níveis são
encaixados
enquanto os outros de profundidade. Embora
funções de uma existam
única linha quatro funções,
avaliadas antes dasapenas
funçõesduas são B
de grupo.
funções
seria de grupo,
retornado se o somatório expressão (AVG (COMPRIMENTO (salário))) foram
seleccionados.
porque D écorrecta
a resposta incorrecta
éC.
7. Um . Existem 12 valores DEPARTMENT_ID distintas. Uma vez que este é o atributo
12 grupos
de agrupamento,
são criados, incluindo uma com um valor DEPARTMENT_ID nulo. Portanto, 12
são devolvidos.
linhas
B , C , e D estão incorrectos. B está incorreta porque o DEPARTMENT_ID nulo é um
valorválido
único pelo qual o grupo é repartido. C está incorreta porque 12 linhas são retornadas.
D é incorrecta porque a resposta correcta é um .
8. C . Para uma cláusula GROUP BY a ser utilizado, uma função de grupo devem aparecer
Lista.no SELECT
A , B , e D são incorrectas. Estes são incorretos desde a declaração é sintaticamente
imprecisa e não é permitido pela Oracle. Não confunda a coluna chamada MAX_SALARY
para a função MAX (salário).
9. B . Dois grupos são criados com base em seus valores Dept_ID comuns. O grupo com
Dept_ID valores de 10 é composto por cinco linhas com valores de salário de 100 em cada
um deles.
Por conseguinte, a função de soma (salário) retorna a 500 para este grupo, e satisfaz a
TENDO SUM cláusula (SALÁRIO)> 400. O grupo com valores de Dept_ID 20 tem quatro
linhas com valores de salário de 100 e uma linha com um salário nulo. SUM (salário)
retorna apenas 400, e este grupo não satisfaz a cláusula HAVING.
A , C , e D estão incorrectos. Cuidado da soma (NVL (salário, 100)) a expressão em
cláusula SELECT. Esta expressão selecciona o formato da saída. Ele não restringir ou
limitar
o conjunto de dados de qualquer forma. Um seria correto se a cláusula de ter determinado
que hajaa dois
grupos que seria aplicada a função de agregação. C é incorrecta porque existe uma
pronto para ser agregados, o que resulta em uma linha que está sendo retornado. D é
incorrectacorreta
resposta porqueé B
a .
10. Um . Dois grupos são criados com base em seus valores Dept_ID comuns. O grupo com
Dept_ID valores de 10 é composto por cinco linhas com valores de salário de 100 em cada
um deles.

Portanto, (, NVL (SALÁRIO 100)) a função somatório retorna 500 para este grupo e satisfaz
o SUM TENDO (NVL (SALÁRIO, 100))> 400 cláusula. O grupo com valores de Dept_ID
20 tem quatro linhas com valores de salário de 100 e uma linha com um salário nulo.
SUM (NVL (salário, 100)) retorna 500, e este grupo satisfaz a cláusula HAVING.
Portanto, duas linhas são retornadas.
B , C , e D estão incorrectos. Embora a cláusula SELECT contém SUM (SALÁRIO),
que retorna 500 e 400 para os dois grupos, a cláusula HAVING contém o
SUM (NVL (salário, 100)) a expressão, que especifica os critérios de inclusão ou de
exclusão
para uma linha de nível grupo. B seria correto se a cláusula de ter determinado que haja um
grupo a que seria aplicada a função de agregação. C é incorrecta porque existem dois
define a serem agregadas, o que resulta em duas fileiras que estão sendo devolvidos. D é
incorrectacorreta
resposta porqueé A
a .
11. A e E . O desvio padrão é matematicamente definida como a raiz quadrada da sua
variância. A função LISTAGG classifica a medida usando o ORDER BY na DENTRO
cláusula GROUP e retorna uma cadeia concatenada ordenada.
B , C , e D estão incorrectos. Todas essas afirmações são falsas.
12. B . O conjunto de dados não é dividida em grupos por uma cláusula GROUP BY, eo
funçãoLISTAGG
funciona, portanto, em toda a tabela como um único conjunto de dados. Uma longa
fila consistindo
uma lista concatenada
de em valores LAST_NAME é retornado.
A, C, D, e E são incorrectas. A está incorreta porque LISTAGG retorna pelo menos uma
CeD linha.
seria correcta se o conjunto de dados foi dividida em 10 e 107 grupos,
érespectivamente.
incorreta porqueEa resposta correta é B .
CAPÍTULO 10

SQL junta

Objetivos do exame
• 061.6.1 escrever instruções SELECT para acessar dados de mais de uma tabela Usando
Equijoins e Nonequijoins
• 061.6.2 unir uma tabela a si mesmo usando um auto-Junte
• 061.6.3 Visualizar dados que não atende a condição de associação Usando Junções Externas
• 061.6.4 gerar um produto cartesiano de duas ou mais tabelas

Os três pilares da teoria relacional são selecção, projecção, e juntando-se. Este capítulo enfoca
a aplicação prática de juntar . Linhas de diferentes tabelas estão associados uns com os outros
usando junta . Suporte para se juntar tem implicações para a forma como os dados são armazenados
em tabelas
modelos dede bancocomo
dados, de dados. Muitos
a terceira forma ou estrela normal esquemas surgiram para explorar esse
recurso.
As tabelas podem ser unidas de várias maneiras. A técnica mais comum é chamado de equijoin .
estáUma
associado
fila com uma ou mais linhas na outra tabela com base na igualdade de valores de coluna
expressões. As tabelas também podem ser unidos usando um nonequijoin . Neste caso, uma linha é
ou
associado a umna outra tabela se os seus valores de coluna cair numa gama determinada pelo
ou mais linhas
operadores.
desigualdade
Uma técnica menos comum é associar linhas com outras linhas na mesma tabela. esta associação
é baseada em colunas com relações lógicas e geralmente hierárquicos entre si. Isto é
chamado de auto-associação . Linhas com entradas nulas ou diferentes em comum colunas de
junção sãoe excluídos
equijoins nonequijoins
quando
colectivamente conhecidas como as junções internas são executadas. Uma
junção externa
disponíveis paraé buscar estes uma perna ou órfãs linhas, caso necessário.
A junção cruzada ou produto cartesiano é formado quando cada linha de uma tabela é unida a
todasEsta
noutro. as linhas
junção é frequentemente o resultado de falta ou inadequada condições de junção, mas é
intencional.
ocasionalmente

Escrever SELECTs para acessar dados de mais


De uma tabela Usando Equijoins e Nonequijoins
Este objectivo certificação recebe ampla cobertura neste capítulo. É crucial para a aprendizagem da
conceitos e linguagem para a realização de junta. Esta seção apresenta diferentes tipos de junções em
formas primitivas e descreve as grandes categorias que estão disponíveis. Esta seção discute então a
sua
vários juntar cláusulas. O capítulo discute moderno American National Standards Institute (ANSI) -
sintaxes da Oracle compatíveis e tradicionais, com destaque para a sintaxe moderna. esta seção
conclui com uma discussão sobre nonequijoins e adicionais condições de junção. Unir é descrito por
concentrando-se nas oito áreas seguintes:

• Tipos de junta
• Unir tabelas usando a sintaxe ANSI SQL
• nomes das colunas de qualificação ambígua
• O NATURAL JOIN cláusula
• O Cadastrar-se usando cláusula
• O JOIN ON cláusula
• N-way junta e adicionais condições de junção
• Nonequijoins

Tipos de junta

Dois básica junta são o equijoin eo nonequijoin . Equijoins são provavelmente mais frequentemente
utilizado.
Junta-se podem ser realizadas entre várias tabelas, mas grande parte da seguinte discussão vai usar
tabelas hipotéticas para ilustrar os conceitos e linguagem da junta. A primeira tabela é chamada a
dois
efonte
a segunda
, é chamada o alvo . Linhas nas tabelas de origem e de destino compreender um ou mais
colunas. Como exemplo, suponha que a fonte e alvo são os países e regiões
tabelas do esquema HR, respectivamente.
A tabela PAÍSES contém três colunas chamadas country_id, COUNTRY_NAME, e
REGION_ID. A tabela REGIÕES é composto por duas colunas chamado REGION_ID e
REGION_NAME. Os dados nestas duas tabelas é relacionados uns aos outros com base no comum
coluna REGION_ID. Considere as seguintes perguntas:

O nome da região para a qual um país pertence pode ser determinada através da obtenção de sua
valor REGION_ID. Este valor é usado para juntar-se com a linha na tabela de regiões com a mesma
REGION_ID. Consulta 1 recupera os valores das colunas associadas com a linha a partir dos países
mesa onde o country_id = 'CA'. O valor REGION_ID desta linha é 2. Consulta 2 busca o
Américas REGION_NAME da tabela de regiões para a linha com REGION_ID = 2. Equijoining
facilita a recuperação de valores de coluna de várias tabelas usando uma única consulta.
As tabelas de origem e de destino pode ser trocado, por isso a tabela de regiões poderiam ser a
PAÍSES
fontetabela
eo poderia ser o alvo. Considere as duas consultas a seguir:

Consulta 1 obtém uma linha com um valor de 2. REGION_ID Juntando desta forma invertida
a seguinte
permitepergunta a ser feita: Que países pertencem à região das Américas? As respostas de
Consulta 2 são cinco valores COUNTRY_NAME: Argentina, Brasil, Canadá, México e Estados
Unidos da América. Estes resultados podem ser obtidos a partir de uma única consulta que associa as
tabelas
A linguagem
juntos.para executar equijoins, nonequijoins, junções externas, e cruz junta é introduzido no
próximo,
com uma juntamente
discussão sobre a Oracle tradicional juntar sintaxe.

associações internas
A junção interna é implementado usando três possíveis juntar cláusulas que usam as seguintes
palavras-chave
combinações diferentes:
em NATURAL JOIN, UTILIZANDO, e ON.
Quando as tabelas de origem e de destino compartilham colunas com nomes idênticos, é possível
junção
realizar
natural
umaentre eles sem especificar uma junção da coluna. Neste cenário, colunas com o
mesmo

nomes nas tabelas de origem e de destino são automaticamente associados entre si. linhas com
valores de colunas correspondentes em ambas as tabelas são recuperados. As regiões e mesa dois
compartilhar a coluna REGION_ID. Eles podem ser, naturalmente, juntou-se sem especificar
países
colunas denas
mostrado junção,
duas primeiras
como pesquisas na Figura 10-1 .

Figura 10-1 natural junta e outro interior junta

O NATURAL JOIN palavras-chave instruir Oracle para identificar colunas com nomes idênticos
as tabelas
entre ade
consulta, origem
coluna e de destino.é Depois
REGION_ID disso,como
identificada uma ajunção
única écoluna
realizada implicitamente
comumente entre
chamado em eles.
ambas
Em
as primeiro
tabelas.
REGIÕES é a tabela de origem e aparece após a cláusula FROM. A tabela de destino é, por
Países. Para cada linha na tabela REGIÕES, um jogo para o valor REGION_ID é solicitada
conseguinte
todas as linhas na tabela de países. Um conjunto de resultados intercalar é construído contendo
alinhas
condição
correspondentes
de junção. Este conjunto é então restrita pela cláusula WHERE. Neste caso, porque o
valor COUNTRY_NAME deve ser o Canadá, um REGION_NAME of Americas é retornado.

A segunda consulta mostra uma junção natural onde os países é a tabela de origem. o
REGION_ID
valor para cada linha na tabela de países é identificado. O conjunto de linhas da tabela REGIÕES
para ser usado no exercício de correspondência com o quadro de países é primeiro podadas pela
condição para apenas aqueles com Americas como o seu valor REGION_NAME. o
ONDE
valores de linhas com Américas como sua REGION_NAME são retornados da tabela de países.
COUNTRY_NAME
Às vezes mais controle deve ser exercido sobre quais colunas usar para junta. quando há
são os nomes das colunas idênticos nas tabelas de origem e de destino que deseja excluir como
colunas
pode usardeojunção,
JOIN. .você
. Usando o formato. Lembre-se que a Oracle não impor quaisquer regras
afirmando
colunas comque
o mesmo nome em duas mesas distintas deve necessariamente ter qualquer
relacionamento
de outros. A terceira
com cada
consulta especifica explicitamente que a tabela REGIÕES ser unidas para os
tabela com base em valores comuns em suas colunas REGION_ID. Esta sintaxe permite associações
países
internas
formada para ser
em colunas específicas, em vez de em todas as colunas comumente chamados.
A quarta consulta demonstra o JOIN. . . ON formato da junção interna, que permite juntar-se
colunas a serem explicitamente declarado. Este formato não dependem das colunas na origem e no
mesas ter nomes idênticos. Esta forma é mais geral e é o mais amplamente utilizado junção interna
destino
formato.

TIP Seja cauteloso ao usar junções naturais desde os designers de banco de dados pode atribuir o
mesmo nome
colunas exclusivas.
a chave
Estas
ou colunas podem ter nomes como ID ou SEQ_NO. Se uma junção natural é
entre essas tabelas, resultados ambíguos e inesperadas podem ser devolvidos.
tentada

Junções Externas
Nem todas as tabelas compartilham um relacionamento perfeito, onde cada registro na tabela de
origem
pelo menos
podem
uma serlinha
combinadas
na tabelapara
do alvo. ocasionalmente é necessário que linhas com não correlação
juntar coluna
valores também ser recuperados por uma consulta. Isto pode parecer para derrotar o propósito de
junta mas tem
benefícios práticos.
alguma
Suponha que os funcionários e mesas departamentos estão unidas com comum
valores DEPARTMENT_ID. EMPREGADOS registros com valores nulos DEPARTMENT_ID são
excluídos juntamente com valores ausente da mesa de SERVIÇOS. Uma associação externa obtém
linhas.
estes

cruz junta
A junção cruzada ou produto cartesiano deriva seus nomes da matemática, onde também é referido
como
um produto de cruzamento entre dois conjuntos ou matrizes. Esta juntar cria uma linha de saída para
combinação de linhas da tabela de origem e destino.
cada
Se as tabelas de origem e de destino têm três e quatro linhas, respectivamente, uma junção
resulta
cruzada
em filas
entre(3eles
× 4 = 12) a ser devolvida. Considere as contagens de linha recuperados a partir
das consultas
Figura 10-2 . em
Figura 10-2 CROSS JOIN

As duas primeiras contagens de linha são realizadas nos países e regiões tabelas produzindo 25
e 4 linhas, respectivamente. Consulta 3 conta o número de linhas retornadas a partir de uma junção
cruzadae destes
mesas rendimentos 100. Consulta 4 retornaria 100 registros, se a cláusula WHERE estava ausente.
cada
as quatro
um linhas na tabela de regiões é unida à uma linha da tabela de países. Cada fila
retornado contém todas as colunas de ambas as tabelas.

A Oracle sintaxe JOIN


A sintaxe de propriedade da Oracle juntar evoluiu que é estável e compreendido por milhões de
usuários.
sintaxe tradicional
este é suportada pela Oracle e está presente em sistemas de software em todo o
,mundo. Você encontrar o Oracle tradicional juntar sintaxe que agora está abrindo caminho para a
sem dúvida,
sintaxe ANSI-compliant discutido neste capítulo.
padronização
A Oracle tradicional juntar sintaxe suporta associações internas, junções externas, e cartesiana
nas junta-se,
seguintescomo
consultas:
mostrado

Consulta 1 executa uma junção interna especificando a juntar-se como uma condição na cláusula
A diferença
WHERE.mais Istosignificativa
é entre o tradicional e ANSI SQL juntar sintaxes. Tome nota do
aliasing em coluna usando a notação TABLE.COLUMN_NAME para remover a ambiguidade da
coluna idêntica
nomes. Esta notação é discutido em detalhe mais adiante neste capítulo. Consulta 2 especifica a
junção entre o
tabelas de origem e de destino como uma condição onde. Há um sinal de mais (+) entre colchetes
a esquerda do sinal de igual que indica ao Oracle que uma junção externa direita deve ser realizada.
para
esta consulta
retorna LAST_NAME dos funcionários e seus valores department_name correspondentes. Além do
aque,
junção
alémexterna
do mais,recupera department_name das linhas com valores DEPARTMENT_ID não
atualmente atribuído a quaisquer registros de funcionários. Consulta 3 executa uma cartesiana ou
ajunção
condição
cruzada,
de junção.
excluindo
DICA A Oracle tradicional juntar-se a sintaxe é amplamente utilizado. No entanto, o exame avalia o
seu
compreensão da junta e as formas ANSI SQL de sua sintaxe. Esteja preparado, embora; algumas
pode tocar o seu conhecimento da sintaxe tradicional. Este conhecimento é útil, pois Oracle
perguntas
sintaxe está profundamente enraizado em todos os sistemas de software em todo o mundo.
tradicional

Unindo tabelas usando ANSI SQL Sintaxe


Antes do Oracle 9 i sintaxe, o tradicional juntar-se era a única língua disponível para unir tabelas.
Desde
em a
seguida, a Oracle introduziu uma nova linguagem que seja compatível com as mais recentes
normas
há benefícios
ANSI.deOferece
desempenho sobre a sintaxe tradicional. Interior, exterior, e cruz junta pode ser
escritoSQL
ANSI usando
e tradicional Oracle SQL.
A forma geral da instrução SELECT utilizando a sintaxe ANSI SQL é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
[NATURAL JOIN table2 ] |
[JOIN table2 UTILIZAÇÃO ( column_name )] |
[JOIN table2 ON ( table1.column_name = table2.column_name )] |
[Esquerda | DIREITO | EXTERIOR junção completa table2 EM ( table1.column_name =
table2.column_name
| )]
[CROSS JOIN table2 ];
As secções seguintes explicam esta sintaxe e fornecer exemplos. A forma geral do
tradicional sintaxe Oracle proprietária relevantes para une é a seguinte:

SELECIONAR tabela1.coluna, tabela2.coluna


DE table1, table2
[WHERE ( table1.column_name = table2.column_name )] |
[ONDE ( table1.column_name (+) = table2.column_name )] |
[ONDE ( table1.column_name) = table2.column_name ) (+)];
Se não se junta ou menos do que N-1 junta são especificadas nas condições onde cláusula, em
ao número
que N sederefere
tabelas na consulta, em seguida, um cartesiano ou CROSS JOIN é executada. Se uma
número de condições de junção é especificado, então a primeira cláusula condicional opcional
adequada
especificaenquanto
juntar-se, uma internoo segundo duas cláusulas opcionais especificar a sintaxe para a direita e esquerda
exterior junta.
Qualificar nomes de coluna ambíguos
Colunas com os mesmos nomes pode ocorrer em tabelas envolvidas em uma junção. As colunas
DEPARTMENT_ID e MANAGER_ID são encontrados em ambos os funcionários e departamentos
nomeadas
mesas. A coluna REGION_ID está presente em ambas as regiões e países tabelas. listagem
tais colunas em uma consulta torna-se problemática quando a Oracle não pode resolver a sua origem.
colunasexclusivos
nomes com em toda as tabelas envolvidas em uma junção causar nenhuma ambigüidade
porque aaOracle
resolver sua tabela
podedefacilmente
origem.
O problema dos nomes das colunas ambíguas são os destinatários com a notação de ponto. A
prefixado
colunapelo
podeseu
sernome de tabela e um símbolo de ponto ou período para designar a sua origem.
aIsso
partir
o diferencia
de uma coluna com o mesmo nome na outra tabela. notação de ponto pode ser usado em
consultasdeenvolvendo
número mesas. Fazendo
qualquer
referência a algumas colunas usando a notação de ponto não implica que
todas
ser as colunas desta
referenciado devemforma.
Notação de ponto é reforçada com aliases de tabela. Um nome alternativo tabela fornece uma
alternativa,
nome, por uma normalmente
mesa. A colunamais curto
pode ser referenciado como nome_da_tabela.nome_da_coluna ou
TABLE_ALIAS.COLUMN_NAME. Considere a consulta mostrada na Figura 10-3 .
Figura 10-3 notação de ponto

A tabela EMPREGADOS é alias com o nome EMP curta, enquanto a mesa de departamentos é
não. A cláusula SELECT faz referência as colunas EMPLOYEE_ID e manager_id como
EMP.EMPLOYEE_ID e EMP.MANAGER_ID. A coluna do MANAGER_ID
tabela DEPARTMENTS é referido como DEPARTMENTS.MANAGER_ID. qualificando o
coluna EMPLOYEE_ID usando a notação de ponto é desnecessário, porque há apenas uma coluna
com esteentre as duas tabelas. Portanto, não há ambigüidade.
nomear
A coluna MANAGER_ID deve ser qualificado para evitar ambigüidade, porque é destaque em
mesas.
ambos
Desde o JOIN. . . Usando o formato é aplicado apenas DEPARTMENT_ID é usado como a
coluna. Se uma junção natural foi utilizada, tanto o DEPARTMENT_ID e MANAGER_ID
junção
colunas seriam utilizados. Se a coluna MANAGER_ID não foi qualificado, um “ORA-00918:
coluna
erro ambiguamente definido”seria devolvido. Se DEPARTMENT_ID foi alias, um “ORA-25154:
parte da coluna de usar cláusula não pode ter qualificador de erro”seria levantado.
SQL Developer fornece a MANAGER_ID título para a primeira referência feita no SELECT
cláusula. O “_1” string é automaticamente acrescentado à segunda referência, criando o título
MANAGER_ID_1.

TIP referências à coluna de qualificação com a notação de ponto para indicar a tabela de uma coluna
de origemde
benefício tem
desempenho.
um Tempo é salvo porque a Oracle é dirigido instantaneamente para o
apropriado
mesa e não tem de resolver o nome da tabela.

O NATURAL JOIN Cláusula


A sintaxe geral para a cláusula NATURAL JOIN é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
NATURAL JOIN table2;
A junção natural identifica as colunas com nomes comuns em table1 e table2 e implicitamente
une as tabelas usando todas essas colunas. As colunas na cláusula SELECT pode ser qualificado
usando dot
notação a menos que eles são uma das colunas de associação. Considere as seguintes perguntas:

A junção natural identifica colunas com nomes comuns entre as duas tabelas. Em Consulta 1,
Country_id ocorre em ambas as tabelas e torna-se a coluna de junção. Consulta 2 é escrito usando
tradicional sintaxe Oracle e recupera as mesmas linhas como Consulta 1. A menos que você estiver
familiarizado
colunas nas tabelas
com ode origem e de destino, natural junta deve ser utilizado com cuidado porque se
condições são automaticamente formado entre todas as colunas com nomes comuns.
juntar
Consulta 3 executa participar de um natural entre os TRABALHOS e países tabelas. Não há
colunas com nomes idênticos, resultando em um produto cartesiano. Consulta 4 é equivalente a
consulta
uma junção3, ecartesiana é realizada usando a sintaxe tradicional Oracle.
A junção natural é simples, mas propenso a uma fraqueza fundamental. Ele sofre o risco de que
dois com o mesmo nome pode ter nenhuma relação e não pode mesmo ter tipos de dados
colunas
Na Figura 10-4 , estão descritos os países, regiões, e SALES_REGIONS tabelas. o
compatíveis.
tabela SALES_REGIONS foi construído de modo a ilustrar o seguinte ponto importante: Embora
REGION_ID em comum com a tabela de países, pode não ser, naturalmente, se juntou a ele, porque
tenha
o seu de dados são incompatíveis. Os tipos de dados do COUNTRIES.REGION_ID e
tipos
colunas SALES_REGIONS.REGION_ID são NÚMERO e VARCHAR2, respectivamente. o
dados de caracteres não pode ser implicitamente convertido em dados numéricos, e um “ORA-
01722: inválido
número de erro”é levantada. A coluna REGIONS.REGION_ID é de tipo de número, e seus dados é
relacionada com os dados na tabela de países. Portanto, a junção natural entre as regiões e
mesa PAÍSES funciona perfeitamente.
Figura 10-4 juntar o natural

Exercício 10-1: Usando o NATURAL JOIN As ações da tabela JOB_HISTORY três identicamente
colunas nomeadas com o quadro de funcionários: EMPLOYEE_ID, JOB_ID e DEPARTMENT_ID.

Você é obrigado a descrever as mesas e buscar o EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID,


LAST_NAME, HIRE_DATE e END_DATE valores para todas as linhas recuperadas usando
participar
Alias tabela
dede
umfuncionários
natural. como EMP ea tabela de JOB_HISTORY como JH e usar a notação de
sempre que possível.
ponto

1. Inicie o SQL * Plus e ligar para o esquema HR.


2. As tabelas são descritas usando os FUNCIONÁRIOS comandos DESC e DESC
JOB_HISTORY, e as colunas com nomes idênticos e seus tipos de dados podem ser
examinados.
3. A cláusula FROM é como se segue:

4. A cláusula de junção é a seguinte:

5. A cláusula SELECT é a seguinte:

6. executar essa instrução retorna uma única linha com o mesmo EMPLOYEE_ID, JOB_ID, e
valores DEPARTMENT_ID em ambas as tabelas.
O Cadastrar-se usando Cláusula
O formato da sintaxe para a cláusula JOIN usando é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
Cadastre table2 UTILIZAÇÃO ( join_column1, join_column2 ... );
Enquanto a junção natural contém a palavra-chave natural em sua sintaxe, o JOIN. . . Usando a
não.sintaxe
Um erro é gerado se as palavras-chave NATURAIS E usando ocorrem na mesma cláusula de
O JOIN. . . USANDO cláusula permite que uma ou mais colunas Equijoin ser que explicitamente
junção.
especificado
entre parênteses
em após a palavra-chave usando. Isso evita as deficiências associadas com a junção
natural.
Muitas situações exigem que tabelas ser unidos apenas em determinadas colunas, e este formato
serve para issoConsidere as seguintes perguntas:
requerimento.
Consulta 1 especifica que os locais e tabelas países devem ser unidas em comum
valores de coluna country_id. Todas as colunas dessas tabelas são recuperados para as linhas com
correspondentes juntar-se os valores da coluna. Consulta 2 mostra uma consulta tradicionalmente
especificado
linhas como Consulta
que recupera
1. Aajuntar
mesma colunas especificadas com o JOIN. . . sintaxe USANDO não pode
ser qualificado
usando nomes de tabela ou aliases quando eles são referenciados no SELECT e cláusulas JOIN.
Uma vezjuntar-se
sintaxe que estepotencialmente exclui algumas colunas com nomes idênticos a partir da cláusula de
junção,
ser qualificado,
estas devem
se eles são referenciados para evitar ambiguidades.
Como a Figura 10-5 mostra, as tabelas job_history e empregados foram unidos com base no
presença de valores iguais nas suas colunas JOB_ID e EMPLOYEE_ID. Linhas conformes com a
condição de junção são recuperados. Estas tabelas compartilham três colunas com nomes idênticos.
presente
Neste exemplo,
apenas dois deles são especificadas como colunas de junção. Observe que, embora o terceiro nome
coluna é DEPARTMENT_ID, é qualificado com um alias de tabela para evitar ambigüidade,
idêntico
enquantoespecificadas
colunas a juntar-se na cláusula SELECT não pode ser qualificado com aliases de tabela.

Figura 10-5 Natural juntar-se usando a cláusula JOIN ... Usando

O JOIN ON Cláusula
O formato da sintaxe para a cláusula JOIN ON é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna

DE table1
ADERIR table2 EM ( table1.column_name = table2.column_name );
A junção natural e JOIN. . . USANDO cláusulas dependem de colunas de junção com coluna
nomes.
idêntica
O JOIN. . . Cláusula ON permite a especificação explícita de se juntar colunas,
independentemente
os nomes das colunas.
da Esta
sua é a forma mais flexível e amplamente utilizada das cláusulas participar.
O ON e
palavras-chave natural não pode aparecer juntos em uma cláusula de junção. As colunas são
totalmente Equijoin
qualificado como table1.column1 = table2.column2 e são opcionalmente especificado entre
parênteses apósAs
palavra-chave. o NO
consultas a seguir ilustram o JOIN. . . Cláusula ON:
Consulta 1 recupera todos os valores da coluna de ambos os departamentos e funcionários mesas
as linhas
para que atendem uma condição equijoin. Esta condição é cumprida por valores
correspondentes valores DEPARTMENT_ID na tabela SERVIÇOS. A sintaxe tradicional Oracle
EMPLOYEE_ID
Consulta 2 retorna os mesmos resultados que consulta 1. Observe as semelhanças entre o tradicional
condição especificada na cláusula WHERE e a condição de junção especificada após a palavra-
juntar
chave ON. START_DATE na tabela JOB_HISTORY é unida à coluna em HIRE_DATE
A coluna
a tabela de trabalhadores em Figura 10-6 . Este equijoin recupera os detalhes dos funcionários que
para a organização e Jobs mudou.
trabalhavam

Figura 10-6 INNER JOIN usando o JOIN. . . cláusula ON


Exercício 10-2: Usando o NATURAL JOIN. . . ON Cláusula Cada registro nos departamentos
tabela tem uma coluna MANAGER_ID combinando um valor EMPLOYEE_ID na tabela
Você é obrigado a produzir um relatório com uma coluna alias como gerentes. Cada linha deve
empregados.
conterdoum
frase seguinte formato: FIRST_NAME LAST_NAME é gerente do
departamento department_name. Alias tabela de funcionários como E e os departamentos
tabela como D e utilizar a notação de ponto onde possível.

1. Inicie o SQL Developer e conectar-se ao esquema HR.


2. A coluna Gestores pode ser construído por concatenar os itens necessários e separando
-los com espaços.
3. A cláusula SELECT é a seguinte:

4. A cláusula FROM é como se segue:

5. O JOIN. . . Cláusula ON é a seguinte:

6. A execução dessa instrução retorna 11 linhas descrevendo os gestores de cada departamento,


como
mostrado na figura a seguir:

N-Way junta e Junte adicionais Condições


A junta apenas discutidos foram demonstrados usando duas tabelas. Não há nenhuma restrição no
númeroque
tabelas de podem ser unidos. forma normal terceira consiste em um conjunto de tabelas ligadas
através de uma série
relacionamentos chaves
de primárias e estrangeiras. Atravessando essas relações usando junta permite
e a recuperação fiável dos dados. No entanto, há casos em que primária e chave estrangeira
consistente
relações
beneficiarnão
desão definidasreferencial
integridade entre tabelas. Estas
sendo tabelas
aplicada também
pelo bancopodem ser unidos,
de dados. Quandomas os associações
várias resultados
não
existir em um
declaração, eles são avaliados da esquerda para a direita. Consideremos a seguinte consulta
utilizando
junções naturais
uma mistura
e Oracle
dejunta-se:

A junção natural entre departamentos e locais cria um conjunto de resultado interina


constituído por 27 linhas, uma vez que são unidas de forma implícita na coluna LOCATION_ID.
Este conjunto
Cartesiano se juntou
é, então,
à mesa de países desde uma condição de junção não é implícita ou
Especificadas. As 27 linhas intercalares são unidas aos 25 linhas na tabela dos países, produzindo
explicitamente
uma nova intermédios fixados com 675 (27 x 25) linhas e três colunas: department_name, cidade, e
resultados
NOME DO PAÍS. Este conjunto é, então, juntou-se à mesa das regiões. Mais uma vez, uma junção
ocorre porque a coluna REGION_ID está ausente de qualquer condição de junção. O conjunto
cartesiana
resultado2700
contém final(675 × 4) filas e quatro colunas. Usando junções naturais misturados com a Oracle une
é erro
propensas e não é recomendado, uma vez juntar-se condições podem às vezes ser erroneamente
omitidos.
O JOIN. . . USANDO e JOIN. . . ON sintaxes são mais adequadas para se juntar várias tabelas. o
consulta a seguir junta-se quatro tabelas usando a sintaxe junção natural:

Esta consulta produz corretamente 27 linhas nos resultados finais estabelecidos desde as colunas
listados
necessárias
na cláusula
juntar
SELECT.
são A consulta a seguir demonstra como o JOIN. . . cláusula NO é
para buscar as mesmas 27 linhas. Uma condição de junção pode fazer referência apenas colunas no
utilizada
seu âmbitoa de
exemplo, junção
aplicação.
dos departamentos
Na sequênciapara locais não pode fazer referência colunas na
Países ou regiões tabelas, mas a junção entre países e regiões podem fazer referência
qualquer coluna das quatro tabelas envolvidas na consulta.

O JOIN. . . cláusula utilizando também pode ser usado para unir estas quatro tabelas como segue:

A cláusula WHERE é usado para especificar as condições que restringem o conjunto de


resultados
contém deou
junta-se uma
não.consulta
O JOIN.se . . Cláusula ON também é usado para especificar as condições que
limitam os
conjunto criado
resultados
pela junção. Considere as duas consultas a seguir:
Consulta 1 usa uma cláusula WHERE para restringir as 27 linhas criadas por equijoining o
Departamentos e locais tabelas baseadas em seus valores location_id para os três que
conter valores DEPARTMENT_ID começando com a letra P . Consulta 2 implementa o estado
dentro dos colchetes do subitem ON e retorna as mesmas três linhas.
Cinco mesas estão unidos na Figura 10-7 , resultando em uma lista descrevendo os funcionários
top-ganhando
informações e
geográficas sobre seus departamentos.

Figura 10-7 N-maneira junta e condições de junção adicional

DICA Existem três equijoin ou junção interna formatos. A junção natural usa o NATURAL JOIN
cláusula e une duas tabelas com base em todas as colunas com nomes comuns. Os outros dois
formatos de .usar
JUNTE-SE o
. . USANDO e JOIN. . . ON cláusulas. Preste atenção à sintaxe desde uma cláusula de
junção, como
SELECT * FROM tabela1 NATURAL JOIN TABLE2 UTILIZAÇÃO (coluna) pode parecer correto,
é, de fato, sintaticamente incorreto. Lembre-se do UTILIZAR, ON, e palavras-chave natural são
mas
exclusivo no âmbito da mesma cláusula de junção.
mutuamente

Nonequijoins
Nonequijoins coincidir com os valores da coluna de diferentes tabelas com base em uma expressão
da coluna
desigualdade.
de junção
O valor
em cada
que linha da tabela a fonte é comparado com os valores correspondentes no
tabela alvo. A correspondência é encontrada, se a expressão usada na junção, com base em um
operador
avalia a verdade.
de desigualdade,
Quando tal uma junção é construída, uma nonequijoin é realizada.
Um nonequijoin é especificada utilizando o JOIN. . . ON sintaxe, mas a condição de junção
operador
contémdeum
desigualdade, em vez de um sinal de igual.
O formato da sintaxe para uma cláusula nonequijoin é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
[JOIN table2 ON ( table1.column_name < table2.column_name )] |
[JOIN table2 ON ( table1.column_name > table2.column_name )] |
[JOIN table2 ON ( table1.column_name <= table2.column_name )] |
[JOIN table2 ON ( table1.column_name > = table2.column_name )] |
[JOIN table2 ON ( tabela1.coluna ENTRE table2.col1 E table2.col2 )]
Considere as 16 linhas retornadas pela consulta na Figura 10-8 . A tabela funcionários é
nonequijoined para a mesa de trabalhos com base no desigualdade condição de junção (2 * e.salary <
J.MAX_SALARY). A tabela JOBS armazena a faixa salarial para trabalhos diferentes na
organização.
valor do salário
o para cada registro de empregado é dobrada e comparados com todos os valores
na tabela de postos de trabalho. Se a condição de junção é avaliada como verdadeira, a linha é
MAX_SALARY
retornada.

Figura 10-8 Nonequijoins

DICA Nonequijoins não são tão comumente usado como equijoins. A ENTRE operador de faixa
aparece com condições nonequijoin. É simples de usar um operador BETWEEN em uma condição
frequentemente
duas condições nonequijoin base no operador de menos do que ou igual a (<=) e maior do que ou
de
igual a (> =) operador.
Junte-se a uma tabela a si mesmo usando um auto-Junte
O armazenamento de dados hierárquicos em uma única tabela relacional pode ser conseguido através
da atribuição
colunas por fila.
de, Uma
pelo menos,
coluna armazena
dois um identificador de registro pai da fila, e as lojas de segunda
identificador da linha. Associando fileiras uns com os outros com base em uma relação hierárquica
exige
Oracle para participar de uma mesa para si. Esta auto-associação técnica é discutido na próxima
seção.
Juntando-se uma tabela a ela mesma Utilizando o JOIN. . . ON Cláusula

Suponha que você precisa para armazenar uma árvore de família em uma tabela relacional; você
poderia
opção é tomar várias
usar uma abordagens.
tabela chamada 1FAMÍLIA com colunas nomeadas ID, NOME, MOTHER_ID, e
FATHER_ID, onde cada linha armazena o nome de uma pessoa, um número de identificação único,
e os valores
seus pais. de ID para
Quando duas tabelas são unidas, cada linha da tabela de origem está sujeita à condição de junção
linhas
comda tabela de destino. Se a condição for avaliada como verdadeira, então a linha se juntou,
consistindo
colunas de ambas
de as tabelas, é devolvido.
Quando as colunas de união são originários da mesma tabela, uma auto-associação é necessária.
tabela
Conceitualmente,
de origem é duplicado
o para criar a tabela de destino. A auto-associação funciona como um
regular
essas junçãoNote-se
tabelas. entre que, internamente, a Oracle não duplica a mesa, e essa descrição é meramente
fornecidos para explicar o conceito de auto-adesão. Considere as seguintes três consultas:

Para identificar o pai de uma pessoa na mesa da família, você poderia usar Consulta 1 para obter
Nome ID edavalor
pessoa,
FATHER_ID. Em Consulta 2, o valor FATHER_ID obtido a partir da primeira
poderia ser substituído para se obter valor o nome do pai. Note que ambas as consultas fonte 1 e 2
consulta
informações da tabela de família.
Consulta 3 realiza uma auto-se juntar com o JOIN. . . Cláusula ON por aliasing tabela de família
e F2. como
A Oracle
f1 trata estas tabelas como diferentes, embora eles apontam para a mesma tabela de
física. o ocorrência de mesa da família, alias como f1, é designada como tabela de origem, enquanto
primeira
asegunda ocorrência, alias como F2, é designado como a tabela de destino. A condição de junção na
écláusula
do formato
ON source.child_id = target.parent_id . A Figura 10-9 mostra um exemplo de dados
familiares euma de três vias autojunção à mesma mesa.
demonstra
Figura 10-9 autojunção

Exercício 10-3: Realizando uma associação automática Existe uma relação hierárquica entre os
e seus gerentes. Para cada linha na tabela de funcionários, a coluna MANAGER_ID armazena o
funcionários
EMPLOYEE_ID do gerente de cada funcionário. Usando uma auto-associação na tabela
Funcionários,
necessário paravocê
recuperar
está do empregado LAST_NAME, EMPLOYEE_ID, MANAGER_ID, gerente
de LAST_NAME, e empregado DEPARTMENT_ID para as linhas com valores DEPARMENT_ID
10, 20, ou 30. Alias tabela a empregados como E e o segundo exemplo da tabela de
de
TRABALHADORES
como M. Organizar os resultados com base na coluna DEPARTMENT_ID.

1. Inicie o SQL Developer e conectar-se ao esquema HR.


2. A cláusula SELECT é a seguinte:

3. A cláusula FROM com tabela de origem e alias é a seguinte:

4. O JOIN. . . Cláusula ON com o quadro alvo alias é como se segue:

5. O WHERE é como se segue:

6. A ORDEM BY é como se segue:

7. A execução dessa instrução retorna nove linhas descrevendo os gestores de cada empregado
nestes
departamentos.
Visualizar dados que não atende a condição de
associação
Usando por Externas
Junções
linhas jogo Equijoins entre duas tabelas com base na igualdade dos dados da coluna armazenados em
mesa. Nonequijoins contar com linhas correspondentes entre tabelas com base em uma condição de
cada
junção contendo
expressão desigualdade.
um linhas da tabela alvo sem correspondência juntar coluna na tabela de origem
são geralmente
não requerido. Quando eles são necessários, no entanto, uma junção externa é usada para buscá-los.
diversas
de variações
associações externas pode ser utilizado, dependendo se se juntar dados da coluna está em falta a
partir daoufonte
tabelas ambos.
ou alvo
Estes junção externa técnicas são descritas nos seguintes tópicos:

• Inner contra junções externas


• Esquerda junções externas
• exterior direita junta
• exterior completa junta

Inner contra associações externas


Quando equijoins e nonequijoins são realizadas, as linhas das tabelas de origem e de destino são
utilizando uma condição de junção formulado com os operadores de igualdade e desigualdade,
correspondidos
respectivamente.
referido Esses são internas . Uma junção externa é executada quando linhas, que não são
como associações
recuperados
participar, são
por
retornados.
um interior
Duas mesas às vezes compartilham um mestre-detalhe ou pai-filho relacionamento. Na amostra
esquema
HR existem vários pares de tabelas com essa relação. Um par é dos departamentos
E os funcionários tabelas. A tabela DEPARTAMENTOS armazena uma lista mestra de
Department_name e DEPARTMENT_ID valores. Cada registro tem um FUNCIONÁRIOS
DEPARTMENT_ID coluna constrangido a ser um valor que existe na tabela SERVIÇOS
ou nulo. Isto leva a um dos três cenários seguintes. O quarto cenário poderia ocorrer se o
constrangimento entre as mesas foi removido.

1. Uma linha empregado tem um valor DEPARTMENT_ID que corresponde a uma linha na
tabela DEPARTMENTS.
2. Uma linha empregado tem um valor nulo em sua coluna DEPARTMENT_ID.
3. Existem linhas na tabela de departamentos com valores DEPARTMENT_ID que não são
armazenados em quaisquer registros de funcionários.
4. Uma fileira empregado tem um valor DEPARTMENT_ID que não é caracterizado no
tabela DEPARTMENTS.

O primeiro cenário descreve uma junção interna entre as duas tabelas. A segunda e terceira
causar
cenários
muitos problemas. Juntando os funcionários e departamentos tabelas no
coluna DEPARTMENT_ID pode resultar em linhas com valores nulos DEPARTMENT_ID sendo
Uma junção externa pode ser usado para incluir essas linhas órfãs em conjunto de resultados. O
excluídos.
quarto cenário
raramente deve ocorrer em um banco de dados bem concebido porque restrições de chave
estrangeira
inserção de impediria
criança grava
a sem valores pai. Uma vez que esta linha será excluído por uma junção
interna, que
podem ser recuperadas usando uma junção externa.
Um exterior esquerda junção entre as tabelas de origem e de destino devolve os resultados de
linhas
umadajunção
tabela interna,
de origem bem
excluídos
como por essa junção interna. A junção externa direita entre a fonte e
tabelas de destino retorna os resultados de uma junção interna, bem como as linhas da tabela de
destinointerna.
junção excluídos
Sepor
umaesse
junção retorna os resultados de uma junção interna, bem como linhas de
tanto a origem
tabelas excluídas
eo por
destino
essa junção interna, em seguida, uma junção externa completa tenha sido
realizada.
Left Outer Joins
O formato da sintaxe para a esquerda OUTER JOIN cláusula é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
LEFT OUTER JOIN table2
EM ( tabela1.coluna = tabela2.coluna );
Uma junção externa esquerda efectua uma junção interna da tabela 1 e tabela2 com base na
a palavra-chave
condição especificada
ON. Quaisquer
depoislinhas da tabela na esquerda da palavra-chave JOIN excluídos por
anão
condição
cumprirde junção também são devolvidos. Considere as duas consultas a seguir:

Consultas 1 e 2 são idênticos, exceto para as cláusulas, que têm as palavras-chave junção externa
JOIN esquerda
e JOIN, respectivamente. Consulta 2 executa uma junção interna, e sete linhas são retornadas.
linhas compartilham valores DEPARTMENT_ID idênticos em ambas as tabelas. Consulta 1 retorna
Estes
eosuma
mesmos
linhasete
adicional.
linhas Esta linha extra é obtida a partir da tabela à esquerda da palavra-chave JOIN,
que é a tabela SERVIÇOS. É a linha que contém detalhes do departamento de folha de pagamento. o
junção interna não inclui esta linha desde há funcionários estão atualmente atribuído ao
departamento.
A Figura 10-10 mostra uma junção externa esquerda. A junção interna produz 27 linhas com
correspondência
valores location_id em ambas as tabelas. Existem 43 linhas no total, o que implica que 16 linhas
recuperado da tabela Locais, que está na esquerda da palavra-chave JOIN. Nenhuma das linhas
foram
a partir da tabela SERVIÇOS contém qualquer um destes 16 valores location_id.
Figura 10-10 esquerda junção externa

Outer direita junta


O formato da sintaxe para o RIGHT OUTER JOIN cláusula é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
RIGHT OUTER JOIN table2

EM ( tabela1.coluna = tabela2.coluna );
Uma junção externa direita executa uma junção interna da tabela 1 e Tabela2 com base na
especificada
condição após
de junção
a palavra-chave ON. Linhas da tabela à direita da palavra-chave JOIN, excluídos
a condição de junção, também são devolvidos. Considere a seguinte consulta:
por

A junção interna produz sete linhas contendo detalhes para os funcionários com LAST_NAME
valores que começam com a letra G . A tabela EMPREGADOS é o direito da palavra-chave JOIN.
Qualquer
registros de funcionários que não estejam em conformidade com a condição de junção estão
incluídos, da
Condição desde
cláusula
que em
WHERE.
conformidade
Além disso,
com aa junção externa direita obtém um registro de
LAST_NAME
funcionário comdeumGrant. Este registro tem atualmente um valor DEPARTMENT_ID nulo. a junção
exclui
internao registro uma vez que nenhum DEPARTMENT_ID é atribuído a este funcionário.
Figura 10-11 mostra uma junção externa direita entre as tabelas JOB_HISTORY e funcionários.
tabela
o EMPREGADOS está à direita da palavra-chave JOIN. As elimina palavra-chave distinct
duplicar combinações de valores JOB_ID das tabelas. Os resultados mostram os postos de trabalho
que os funcionários
historicamente esquerda. Os trabalhos que não os funcionários deixaram também são devolvidos.
Estes
na coluna
têm “Jobs
um valor
em nulo
JOB_HISTORY”.

Figura 10-11 Direito associação externa


DICA Existem três tipos de formatos exteriores participar. Cada um deles executa uma junção
interna antes
incluindo linhas a condição de junção excluídos. Se uma junção externa esquerda é realizado, em
aseguida,
junção linhas
interna,excluídos
à esquerda
porda palavra-chave JOIN, também são devolvidos. Se uma junção externa
direita
em seguida,
é realizada,
as linhas excluídas pela junção interna, à direita da palavra-chave JOIN, são retornados
também. O externa
associação cheio executa uma junção interna, bem como a esquerda e direita junção externa.

Outer completa junta


O formato da sintaxe para o EXTERIOR CHEIO cláusula de junção é a seguinte:
SELECIONAR tabela1.coluna, tabela2.coluna
DE table1
CHEIO OUTER JOIN table2

EM ( tabela1.coluna = tabela2.coluna );
A junção externa completa retorna os resultados combinados de uma esquerda e direita junção
e table2
externa.
é realizada
Uma junção
antesinterna
linhas excluídos
de table1 pela condição de junção de ambas as tabelas são
o conjunto de resultados.
mescladas
O tradicional sintaxe do Oracle juntar não suporta uma associação externa completa, que
combinando
normalmente
os resultados
é realizada
de um externa esquerda e direita aderir utilizando o operador de conjunto
UNIÃO descrito
Capítulo 11 . Considere
em a junção externa completa mostrada na Figura 10-12 . A cláusula WHERE
restringe o para linhas com valores NULL DEPARTMENT_ID mostra as linhas órfãs em ambas as
resultados
étabelas.
uma ficha
Lá na mesa de funcionários que não tem valores DEPARTMENT_ID, e existem 16
departamentos para que nenhum funcionário pertence.

Figura 10-12 Junção externa completa


Exercício 10-4: Executar uma associação externa A tabela DEPARTAMENTOS contém detalhes
departamentos
de todos da organização. Você é obrigado a recuperar o department_name e

valores DEPARTMENT_ID para esses departamentos a que há funcionários estão atualmente


atribuídos.
1. Inicie o SQL * Plus e ligar para o esquema HR.
2. A cláusula SELECT é a seguinte:

3. A cláusula FROM com tabela de origem e alias é a seguinte:

4. A ESQUERDA EXTERIOR cláusula de junção com o quadro alvo alias é como se segue:

5. O WHERE é como se segue:

6. A execução dessa instrução retorna 16 linhas que descrevem os serviços onde há


funcionários
são atribuídos atualmente, como mostra a ilustração a seguir:

Gerar um produto cartesiano de duas ou mais tabelas


Um produto cartesiano de duas tabelas pode ser conceituada como juntar cada linha da tabela de
origem
cada comna tabela de destino. O número de linhas no conjunto de resultados criado por um produto
linha
cartesiano
igual ao número
é de linhas na tabela de origem multiplicado pelo número de linhas na tabela alvo.
produtos cartesianos podem ser formados intencionalmente usando a cruz ANSI SQL juntar sintaxe.
éesta
descrito
técnicana secção seguinte.

Criando produtos cartesianos Usando Cruz junta


Produto cartesiano
a partir de é umtabelas
duas ou mais termo matemático. EleJOIN
juntos. CROSS refere-se ao conjunto
é a sintaxe de dados
utilizada criados
para criar um por fusão das
produto
linhas várias
cartesiano
juntar portabelas. Ambos os termos são muitas vezes usados como sinônimos. O formato da
sintaxe para
CROSS JOINa cláusula é a seguinte:
SELECIONAR table1 .Column, table2 .Column
DE table1
CROSS JOIN table2 ;
É importante observar que nenhuma condição de junção é especificado usando o ON ou usando a
palavra chave.
Produto UMA
cartesiano associa livremente as linhas da tabela 1 com cada linha na table2 . condições que
limitar os resultados são permitidos na forma de restrições cláusula WHERE. Se table1 e table2
x e y número de linhas, respectivamente, o produto cartesiano conterá x vezes y número de linhas.
contêm
Os resultados de uma junção cruzada pode ser usado para identificar linhas órfãs ou gerar um grande
conjunto
testes de dados para
de aplicação. uso emas seguintes perguntas:
Considere

Consulta 1 leva as 19 linhas e colunas 4 da tabela de postos de trabalho e as 10 linhas e colunas 5


da tabela de JOB_HISTORY e gera um grande conjunto de registos 190 com 9 colunas. SQL * Plus
apresenta quaisquer colunas com nomes idênticos como títulos. SQL Developer adiciona um
sublinhado
número a cada
e nome de coluna compartilhada e usa-lo como o título. A coluna é comum a JOB_ID
ambos os trabalhos e mesas JOB_HISTORY. Os títulos em SQL Developer são rotulados JOB_ID e
JOB_ID_1, respectivamente. Consulta 2 gera o mesmo produto cartesiano como a primeira, mas as
190 limitados
são linhas pela condição cláusula WHERE, e apenas 10 linhas são retornadas.

DICA Ao usar a junção cruzada de sintaxe, um produto cartesiano é gerada intencionalmente.


produtos cartesianos são criados quando há são insuficientes condições de junção em um
inadvertido
comunicado.
especificar junta-se
menos que condições de associação ao juntar tabelas N ou que especificam inválido
de N-1
condições de junção
pode inadvertidamente criar produtos cartesianos. A natural entre duas tabelas de compartilhar não
identicamente
colunas nomeadas resulta em uma junção cartesiana desde duas tabelas são unidas, mas menos do
que uma condição é
acessível.

A Figura 10-13 mostra uma junção cruzada entre as regiões e países tabelas. Há 4
linhas em regiões e 25 linhas nos países. Desde a cláusula WHERE limita as regiões
tabela a dois de quatro linhas, o produto cartesiano produz 50 (25 × 2) registos. Os resultados são
em ordem alfabética, pela primeira vez no REGION_NAME e depois no COUNTRY_NAME. O
classificados
primeiro
o par de valores
registroda
tem
Ásia e da Argentina. Quando o REGION_NAME muda, o primeiro registro tem
seguinte par de valores: Oriente Médio e África e Argentina. Observe que o COUNTRY_NAME
o
Os valores são repetidos para cada REGION_NAME.
Figura 10-13 Os junção cruzada

Exercício 10-5: Realizando uma junção cruzada Você é obrigado a obter o número de linhas na
Funcionários e departamentos mesas, bem como o número de registros que serão criados
por um produto cartesiano das duas tabelas. Confirmar seus resultados através da contagem de forma
explícita e
multiplicando o número de linhas presentes em cada uma dessas tabelas.

1. Inicie o SQL * Plus e ligar para o esquema HR.


2. A cláusula SELECT para encontrar o número de linhas no produto cartesiano é a seguinte:

3. A cláusula FROM é como se segue:

4. O produto cartesiano é realizada utilizando o seguinte:

5. contagem explícita das linhas presentes nas tabelas de origem são realizadas utilizando o
seguinte:

6. multiplicação explícita dos valores resultantes das consultas anteriores pode ser realizado por
consultando a tabela DUAL.
7. Executar estas declarações revela que existem 107 registros na tabela EMPREGADOS, 27
registros na tabela de departamentos e 2.889 registros no produto cartesiano destes
dois conjuntos de dados, como mostrado na figura a seguir:
Broca Two-Minute
Escrever SELECTs para acessar dados de mais de uma tabela Usando
Equijoins e Nonequijoins
• Equijoining ocorre quando uma consulta obtém os valores da coluna de várias tabelas em que
o linhas cumprir uma condição de associação à base de igualdade.
• A natural união é realizada usando o NATURAL JOIN sintaxe quando a origem eo destino
mesas são implicitamente equijoined usando todas as colunas com nomes idênticos.
• O JOIN. . . Usando a sintaxe permite uma junção interna a ser formada em colunas específicas
com
nomes compartilhados.
• notação de ponto refere-se a qualificar uma coluna pré-fixando com o seu nome de tabela e
umsímbolo
ponto ou
período. Este designa a mesa uma coluna origina e diferencia de
nome idêntico colunas de outras tabelas.
• O JOIN. . . Cláusula ON permite a especificação explícita de se juntar colunas,
independentemente
os nomes das colunas.
da sua
Isto fornece um formato juntar flexível.

• ON, utilização e palavras-chave natural são mutuamente exclusivos e, portanto, não pode
aparecem juntos em uma cláusula de junção.
• A nonequijoin é realizada quando os valores nas colunas de associação cumprir a condição de
junção
em uma
comexpressão
base desigualdade.

Junte-se a uma tabela a si mesmo usando um auto-Junte


• A auto-junção é necessária quando as colunas de associação são originários da mesma tabela.
Conceitualmente,
tabela de origemoé duplicado, e uma tabela de destino é criado. A auto-se juntar, em seguida,
funciona
entre duascomo
tabelas
umdistintas.
regular
• Armazenamento de dados hierárquicos em uma tabela relacional requer um mínimo de duas
colunas
Uma coluna
por linha.
armazena um identificador de registro pai da fila, e as lojas de segunda a linha de
identificar.

Visualizar dados que não atende a condição de associação Usando Junções


Externas
• Quando equijoins e nonequijoins são realizadas, as linhas das tabelas de origem e de destino
sãocoincide. Estes são referidos como junta interior.
• Uma junção externa é executada quando linhas, que não são recuperados por uma junção
interna, estão incluídos
para recuperação, além das linhas recuperadas pela junção interna.
• A junção externa esquerda entre as tabelas de origem e de destino retorna os resultados de
uma
linhas
junção
faltando-lo
interna ea
excluído da tabela de origem.
• A junção externa direita entre as tabelas de origem e de destino retorna os resultados de uma
junção interna
as linhas e
ausentes lo excluído da tabela de destino.
• A junção externa completa retorna os resultados combinados de uma junção externa esquerda
e direita junção externa.
Gerar um produto cartesiano de duas ou mais tabelas
• Um produto cartesiano às vezes é chamado de junção cruzada. É um termo que se refere a
matemática
o conjunto de dados criados por fusão das linhas de duas ou mais tabelas.
• A contagem das linhas retornadas a partir de um produto cartesiano é igual ao número de
linhas
tabela
nade origem multiplicado pelo número de linhas na tabela alvo.
• Junta-se que especificar menos de N-1 condições de associação ao juntar tabelas N, ou que
especificam
condições inválido
de junção, inadvertidamente, criar produtos cartesianos.

Auto teste
As seguintes perguntas irá ajudá-lo a medir sua compreensão do material apresentado neste
capítulo. Leia todas as opções com cuidado porque pode haver mais de uma resposta correta.
todas as respostas corretas para cada questão.
Escolher

1 . As tabelas funcionários e departamentos têm duas colunas com nomes idênticos:


DEPARTMENT_ID e MANAGER_ID. Qual destas afirmações se junta a estas tabelas
baseadas
apenas sobre valores DEPARTMENT_ID comuns? (Escolha todos os que se aplicam.)
A. SELECT * FROM Funcionários NATURAL JOIN DEPARTAMENTOS;
B. SELECT * DE TRABALHADORES E NATURAL JOIN D departamentos NO
E.DEPARTMENT_ID = d.department_id;
C. SELECT * FROM Funcionários NATURAL JOIN DEPARTAMENTOS DE USAR
(DEPARTMENT_ID);
D. Nenhuma das anteriores
2 . As tabelas funcionários e departamentos têm duas colunas com nomes idênticos:
DEPARTMENT_ID e MANAGER_ID. Quais declarações juntar essas tabelas com base em
valores da coluna? (Escolha todos os que se aplicam.)
ambos
A. SELECT * FROM Funcionários NATURAL JOIN DEPARTAMENTOS;
B. SELECT * FROM Funcionários Cadastre DEPARTAMENTOS DE USAR
(DEPARTMENT_ID, MANAGER_ID);
C. SELECT * DE TRABALHADORES E SERVIÇOS ADERIR D NO
E.DEPARTMENT_ID = d.department_id E
E.MANAGER_ID = D.MANAGER_ID;
D. Nenhuma das anteriores
3 . Que união é realizada a consulta a seguir? (Escolha a melhor resposta.)

A. Equijoin
B. Nonequijoin
C. Cross JOIN
D. Outer join
4 . Qual das seguintes afirmações são sintaticamente correto? (Escolha todos os que se
aplicam.)
A. SELECT * DE TRABALHADORES E ADERIR D departamentos USANDO
(DEPARTMENT_ID);
B. SELECT * FROM Funcionários Cadastre DEPARTAMENTOS D UTILIZAÇÃO
(D.department_id);
C. SELECCIONAR d.department_id TRABALHADORES DE PARTICIPAR D
departamentos
USANDO (DEPARTMENT_ID);
D. Nenhuma das anteriores
5 . Qual das seguintes afirmações são sintaticamente correto? (Escolha todos os que se
aplicam.)
A. SELECIONAR E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, CURRENT_JOB
E.JOB_ID
DE JOB_HISTORY J CROSS JOIN PESSOAL E EM
(J.START_DATE = E.HIRE_DATE);
B. SELECIONAR E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, CURRENT_JOB
E.JOB_ID
DE JOB_HISTORY J ADERIR PESSOAL E EM
(J.START_DATE = E.HIRE_DATE);
C. SELECIONAR E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, CURRENT_JOB
E.JOB_ID
DE JOB_HISTORY J OUTER JOIN PESSOAL E EM
(J.START_DATE = E.HIRE_DATE);
D. Nenhuma das anteriores
6 . Escolha uma afirmação correta sobre a seguinte consulta:

A. Juntando três tabelas não é permitida.


B. Um produto cartesiano é gerado.
C. A ADERIR. . . Cláusula ON pode ser usado para junções entre várias tabelas.
D. Nenhuma das anteriores.
7 . Quantas linhas são devolvidos depois de executar a seguinte declaração? (Escolha o melhor
responda.)

A tabela REGIÕES contém os seguintes dados consecutivas:

A. 2
B. 3
C. 4
D. Nenhuma das anteriores
8 . Escolha uma afirmação correta sobre a seguinte consulta:

A. Não há linhas na tabela de locais têm os valores country_id retornado.


B. Não há linhas na tabela de países têm os valores country_id retornado.
C. As linhas retornadas representam os valores country_id para todas as linhas no
tabela LOCATIONS.

D. Nenhuma das anteriores.


9 . Qual das seguintes afirmações são sintaticamente correto? (Escolha todos os que se
A. SELECIONAR JH.JOB_ID DE JOB_HISTORY JH RIGHT OUTER JOIN JOBS J ON
aplicam.)
JH.JOB_ID = J.JOB_ID;
B. SELECIONAR JOB_ID DE JOB_HISTORY JH RIGHT OUTER JOIN JOBS J ON
(JH.JOB_ID = J.JOB_ID);
C. SELECIONAR JOB_HISTORY.JOB_ID DE JOB_HISTORY OUTER JOIN
EMPREGOS
JOB_HISTORY.JOB_ID
EM = JOBS.JOB_ID;
D. Nenhuma das anteriores
10 . Se a tabela de regiões, que contém 4 linhas, é cross juntou à mesa dos países,
que contém 25 linhas, quantas linhas aparecer nos resultados finais set? (Escolha o melhor
responda.)
A. 100 linhas
B. 4 linhas
C. 25 linhas
D. Nenhuma das anteriores

Respostas de auto-teste
1. D . Todas as consultas são incorretas, então D é a escolha correta.
A , B , e C são incorrectas. A está incorreta porque a consulta executa uma junção
natural
junta-se que
implicitamente as duas tabelas em todas as colunas com nomes idênticos, que, neste
caso, são
DEPARTMENT_ID e MANAGER_ID. B e C são incorrecta porque as consultas
incorretamente contêm a palavra-chave NATURAL. Se este for removido, eles vão se juntar
aDepartamentos e funcionários tabelas com base na coluna DEPARTMENT_ID.
2. A , B , e C . Estas cláusulas demonstrar técnicas diferentes para unir as tabelas, tanto no
DEPARTMENT_ID e manager_id colunas.
D está incorreta porque há respostas corretas dadas.
3. B . A condição de junção é uma expressão baseado no menos de operador de
desigualdade.
Portanto, esta associação é uma nonequijoin.
A , C , e D estão incorrectos. Um seria correto se o operador na condição de junção
expressão era um operador de igualdade. O CROSS JOIN palavras-chave ou a ausência de
uma junção
condição resultaria em C sendo verdadeira. D seria verdadeiro se um dos OUTER JOIN
foi usada em vez da união. . . Cláusula ON.
cláusulas
4. Um . Esta declaração demonstra o uso correto do JOIN. . . UTILIZAÇÃO cláusula.
B , C , e D estão incorrectos. B está incorreta uma vez que apenas nomes de coluna não
qualificados
permitidos são
nos suportes depois da palavra-chave usando. C é incorrecta porque a coluna em
entre parênteses após a palavra-chave usando não pode ser referenciado com um
qualificador no SELECT
cláusula. D está incorreta uma vez que há uma resposta correta.

5. B demonstra o uso correto do JOIN. . . Cláusula ON.


A , C , e D estão incorrectos. A está incorreta desde o CROSS JOIN cláusula não pode
conter
a palavra-chave ON. C está incorreta desde o OUTER JOIN palavras-chave deve ser
precedido pelaDIREITA, ou palavra-chave CHEIA. D está incorreta uma vez que há uma
ESQUERDA,
6. resposta correta.
C . JOIN ... ON cláusula e o outro se juntar cláusulas podem ser usados para junções
várias
entre
tabelas. O JOIN. . . E junte-se. . . cláusulas UTILIZANDO são mais adequados para a
N-maneira
junções de tabela.
A , B , e D são incorrectas. A está incorreta, pois você pode juntar-se como muitas
mesas
B está comouma
incorreta vocêvez
quer.
que um produto cartesiano não é criada uma vez que existem duas
condições
três tabelas.deDassociação e uma vez que há uma resposta correta.
está incorreta
7. B . Três linhas são retornadas. A tabela REGIÕES está sendo unido a si mesmo. Para a
comlinha
um valor de 2 REGION_ID na tabela alias como R1, é encontrada uma
correspondência
tabela alias comocom
R2 em
a linha
que na
o valor é REGION_NAME Ásia, porque a metade do
comprimento
valor REGION_NAME
do também é 2. Portanto, esta linha é retornada. Os mesmos resultados
lógica
as linhas com valores REGION_ID de três e quatro e valores REGION_NAME
Europa e Américas
correspondência de estão sendo devolvidos.
A , C , e D estão incorretas porque exatamente três linhas são retornadas.
8. Um . O direito de associação externa obtém as linhas países que aderirem ao interior
Locais
entre
e países
a tabelas excluiu além da junção interna resultados. o
Cláusula WHERE restringe os resultados, eliminando estes junção interna resultados. Isso
deixa
as linhas da tabela de países com os quais há registros da tabela LOCATIONS
registros estão associados.
B , C , e D estão incorrectos. B está incorreta porque é linhas da tabela PAÍSES
que são devolvidos. C está incorreta porque estas são as linhas incluídas pela junção interna,
mas
eliminado pela cláusula ONDE. D é incorrecta porque Uma é a resposta correcta.
9. Um . Esta declaração demonstra o uso correto do RIGHT OUTER JOIN. . . EM
cláusula.
B , C , e D estão incorrectos. A coluna JOB_ID na cláusula SELECT em B não é
qualificados e, por conseguinte, é ambígua desde que a tabela a partir do qual esta coluna
vem não é
Especificadas. C utiliza um OUTER JOIN sem as palavras-chave esquerda, direita, e cheio.
D é
incorrecta, uma vez que há uma resposta correta.
10. Um . Os junção cruzada associados a cada quatro linhas da tabela REGIÕES 25 vezes
as linhas
com da
o tabela PAÍSES produzindo um conjunto de resultados que contém 100 linhas.
B , C , e D estão incorrectos. B e C seria retornada se o produto do número de
linhas em cada tabela foram 4 ou 25. D é incorrecta, dado que uma é a resposta correcta.
CAPÍTULO 11

Subqueries e operadores de conjunto

Objetivos do exame
Neste capítulo, você vai aprender a

• 061.7.1 Definir Subqueries


• 061.7.2 Descrever os tipos de problemas que as subconsultas podem resolver
• 061.7.3 descrever os tipos de Subqueries
• 061.7.4 Write Single-Row e Multiple-Row Subqueries
• 061.8.1 Descreva Set Operadores
• 061.8.2 Use um operador de conjunto para combinar várias consultas em uma única consulta
• 061.8.3 controlar a ordem das linhas retornadas
Os capítulos anteriores têm lidado com a instrução SELECT em detalhe considerável, mas em todos
aosinstrução
casos SELECT tem sido um único comando, auto-suficiente. Este capítulo é o primeiro de dois
mostrar como você pode combinar duas ou mais selecionar comandos em um comunicado. A
que
primeira técnica
(abordados neste capítulo) é o uso de subconsultas . Uma subconsulta é uma instrução SELECT cuja
saída écomo entrada para outro comando SELECT (ou de facto para uma instrução de manipulação
usado
de dados [DML]
declaração, como foi feito no Capítulo 6 ). A segunda técnica é a utilização de operadores de
conjunto,
vários comandos
em que SELECT
os resultados
são combinadas
de em um único conjunto de resultados.

definir Subqueries
Uma subconsulta é uma consulta que está aninhado dentro de SELECT, INSERT, um UPDATE, ou
DELETE
dentro de outro
ou subconsulta. Uma subconsulta pode retornar um conjunto de linhas ou apenas uma
linha para
escalar subconsulta
a sua consulta
é umapai.
consulta
UMA que retorna exatamente um valor: uma única linha, com uma
única coluna.pode
subconsultas Escalar
ser usado na maioria dos lugares em uma instrução SQL onde você poderia usar
uma expressão
valor literal. ou uma
Os lugares em uma consulta, onde uma subconsulta podem ser usados são os seguintes:

• Na lista SELECT usado para projeção coluna


• Na cláusula FROM
• Na cláusula WHERE
• Na cláusula HAVING

Uma subconsulta é muitas vezes referida como um interior consulta, ea declaração em que ele
chamou
ocorreo exterior
é, então,consulta. Não há nada de errado com essa terminologia, exceto que ela pode
implicar
pode ter apenas
que vocêdois níveis, interiores e exteriores. Na verdade, a implementação do Oracle de
subconsultas
impor quaisquer
nãolimites práticos sobre o nível de aninhamento. A profundidade de aninhamento
subconsulta
ilimitada na permitido é
cláusula FROM e é limitado a 255 níveis na cláusula WHERE.

EXAME TIP Subqueries podem ser aninhadas até uma profundidade ilimitada em uma cláusula
FROM,em
níveis mas
uma“apenas”
cláusula255
WHERE. Elas podem ser usadas na lista SELECT e no FROM, WHERE, e
TENDO cláusulas de uma consulta.

Uma subconsulta pode ter qualquer uma das cláusulas usuais para a selecção e projecção. A
cláusulas
seguir,exigidas:
são

• A lista SELECT
• A cláusula FROM

A seguir, são cláusulas opcionais:

• ONDE
• POR GRUPO
• TENDO

A subconsulta (ou subqueries) dentro de uma declaração deve ser executado antes da consulta
chama-lo
pai quepara que os resultados da subconsulta pode ser passado para o pai.

Exercício 11-1: Explore Tipos de Subqueries Neste exercício, você vai escrever um código que
demonstra os lugares onde subqueries podem ser usados. Use o SQL * Plus ou SQL Developer.
as consultas deve ser executado quando conectado ao esquema HR.
Todos
1. Inicie a sessão no seu banco de dados como o usuário HR.
2. Crie uma consulta que usa subconsultas na lista de projeção coluna. A consulta apresentará
umnúmeros
relatórioatuais
sobre de
o departamentos e funcionários.

3. Crie uma consulta para identificar todos os funcionários que são gerentes. Isso vai exigir o
usosubconsulta
de um na cláusula WHERE para selecionar todos os funcionários cujo
EMPLOYEE_ID
como um MANAGER_ID.
aparece

4. Crie uma consulta para identificar o maior salário pago em cada país. Isso vai exigir o uso de
umsubconsulta na cláusula FROM.

Descrever os tipos de problemas que os Subqueries Lata


Resolver
Há muitas situações em que você terá o resultado de uma consulta como entrada para outro.

O uso de um resultado Subquery Definir para comparação Purposes


Quais os funcionários têm um salário que é menos do que o salário médio? Isto poderia ser
respondida por
declarações doisuma única declaração com uma subconsulta. O exemplo a seguir usa duas
ou por
declarações:

Alternativamente, o exemplo a seguir usa uma instrução com uma subconsulta:

Neste exemplo, o subconsulta é utilizado para substituir um valor na cláusula WHERE da mãe
inquerir; ele retorna um valor único, utilizado para comparação com as linhas recuperadas pela
consulta pai.
A subconsulta poderia retornar um conjunto de linhas. Por exemplo, você poderia usar o seguinte
departamentos
para encontrarquetudo
têm um ou mais funcionários atribuídos a eles:

No exemplo anterior, a subconsulta é usado como uma alternativa para uma junção interna. Você
obter
poderia
o mesmo resultado com a seguinte:

Se a subconsulta está indo para retornar mais de uma linha, então o operador de comparação
devevários
aceitar ser capaz de Estes operadores são IN, NOT IN, ANY e ALL. Se o operador de comparação
valores.
representa qualquer um dos operadores de igualdade ou desigualdade escalares (que cada um pode
aceitar apenas
consulta pai iráum
falhar.
valor), o

DICA Usando NOT IN é cheio de problemas por causa da maneira SQL lida com valores nulos.
Como não
regra, geraluse NOT IN, a menos que você esteja certo de que o conjunto de resultados não irá incluir
um NULL.
Transformação estrela
Uma extensão do uso de subconsultas como uma alternativa para uma junção é permitir a
transformação
muitas vezes necessários
da estrela em aplicações de data warehouse. Considere a tabela SALES grande no
esquema
usada paradegravar
demonstração
transaçõesSHde vendas. Cada linha captura de um determinado produto vendido a
umcliente
do particular,
através de um canal em particular. Estes atributos são identificados por códigos de
pesquisapara
chaves usado
dimensionar
como estrangeira
tabelas com linhas que descrevem cada produto, cliente e canal. Para
identificar
vendas de um
todos
item chamado heróis de quadrinhos para os clientes na cidade de Oxford através de
ordens
você de Internet,
pode executar a seguinte consulta:

Esta consulta utiliza a cláusula WHERE para unir as tabelas e, em seguida, para filtrar os
resultados. Os seguintes
é uma consulta alternativa que irá produzir o mesmo resultado:

A reescrita da primeira declaração para a segunda é a transformação da estrela. Além de ser um


estrutura inerentemente mais elegante (a maioria dos desenvolvedores de SQL com qualquer senso
de estética
isso), há razões
irão concordar
técnicas para
como banco de dados pode ser capaz de executá-lo de forma mais eficiente
do que a original. Além disso, consultas estrelas são mais fáceis de manter; é simples de adicionar
consulta
mais dimensões
consultar ou parapara a
substituir os literais de solteiro ( 'Livro dos heróis em quadrinhos' , 'Oxford'
e 'Internet'
listas de valores.
), com

DICA Existe um parâmetro de inicialização de instância,


STAR_TRANSFORMATION_ENABLED,
(Se que
definido como true) permitirá que o otimizador de consulta Oracle para reescrever o código em
consultas estrela.
Gerar uma tabela de qual escolher
Subqueries também pode ser usado na cláusula FROM onde são por vezes referido como linha
visualizações . Considere o seguinte problema com base no esquema HR: Os funcionários são
atribuídos a um
departamento e departamentos têm uma localização. Cada local está em um país. Como você pode
encontrar
salário o de pessoal em um país, mesmo que eles trabalham para diferentes departamentos?
médio
Aqui está o
responda:
A subconsulta conceitualmente constrói uma tabela com o salário de cada funcionário e do país
que em
seu departamento se baseia. A consulta pai, em seguida, aborda esta tabela, com média de
e agrupamento por country_id.
salário

Gerar valores para a projeção


O terceiro lugar uma subconsulta pode ser usado se encontra na lista SELECT de uma consulta.
Como salário
maior você pode identificar
e a taxa a
de comissão mais alta e, portanto, o que a comissão máxima paga seria
se o mais alto funcionário assalariado também teve a maior taxa de comissão? Aqui está a resposta,
com dois
subconsultas:

Neste uso, a lista SELECT usado para colunas projeto está sendo preenchida com os resultados
subconsultas.
da Uma subconsulta usado dessa maneira deve ser escalar ou a consulta pai vai falhar
com um erro.
Gerar linhas a serem passados para uma instrução DML
Instruções DML são abordados em detalhes no Capítulo 10 . Por enquanto, considere estes
exemplos:

O primeiro exemplo utiliza uma subconsulta para identificar um conjunto de linhas de uma
outro.
tabela
O segundo
que serão
exemplo
inseridos
usa uma subconsulta para calcular o salário médio de todos os
funcionários
passa esse valor
e (a quantidade escalar) para uma instrução de atualização. O terceiro exemplo utiliza
uma subconsulta
recuperar todos ospara
DEPARTMENT_IDs que estão em uso e passa a lista para um comando
DELETE, que
irá remover todos os departamentos que não estão em uso. Observe o uso da cláusula WHERE
adicional no para garantir que nenhum valores nulos são devolvidos pela subconsulta. Se esta
subconsulta
cláusula
linhas seriam
estavam
excluídos.
ausentes, não

EXAME TIP Uma subconsulta pode ser usado para selecionar linhas para inserção, mas não de uma
cláusula VALUES de uma
INSERT.

Note que não é legal usar uma subconsulta na cláusula VALUES de uma instrução de inserção. o
Segue-se bem:

Mas este não é:


Exercício 11-2: Explore Subqueries complexos Neste exercício, você vai escrever mais complexo
subconsultas. Use o SQL * Plus ou SQL Developer. Todas as consultas devem ser executados
quando
o esquema
conectado
HR. a

1. Inicie a sessão no seu banco de dados como o usuário HR.


2. Crie uma consulta que irá identificar todos os empregados que trabalham em departamentos
localizados
Reino. Isso
nosvai
Estados
exigir três níveis de subconsultas aninhadas.

3. Verifique se o resultado da etapa 2 está correta, executando os subqueries independente.


Primeiro,
encontrar o country_id para o Reino Unido.

O resultado será UK. Em seguida, encontrar os locais correspondentes.

Os LOCATION_IDs devolvidos será 2400, 2500, e 2600. Em seguida, localize o


DEPARTMENT_IDs de departamentos nesses locais.

O resultado será dois departamentos, 40 e 80. Finalmente, calcule a empregados relevantes.

4. Crie uma consulta para identificar todos os funcionários que ganham mais do que a média e
quequalquer
trabalham
umem
dos departamentos de TI. Isso exigirá duas subconsultas, não aninhados.

Descrever os tipos de Subqueries


Há três grandes divisões de subconsultas:

• subconsultas de uma única linha


• subconsultas Multiple-fila
• subconsultas correlacionadas

Simples e múltiplas fileiras Subqueries


A única linha subconsulta retorna uma linha. Um caso especial é a subconsulta escalar, que retorna
um
fila única com uma coluna. subconsultas escalares são aceitáveis (e muitas vezes útil) em
virtualmente
situação ondequalquer
você poderia usar um valor literal, uma constante ou uma expressão. De várias linhas
retornar conjuntos de linhas. Essas consultas são comumente usados para gerar conjuntos de
subconsultas
resultados
DML ou SELECT
que serãopara
passados
posterior
a umprocessamento. Ambos de uma única linha e de várias linhas
subqueries
ser avaliadavai
uma vez, antes da consulta pai é executado.
subconsultas única e múltipla de linha pode ser usada no ONDE e HAVING do
consulta pai, mas há restrições sobre os operadores de comparação legais. Se o operador de
é qualquer um dos queridos na tabela a seguir, a subconsulta deve ser uma subconsulta de uma única
comparação
linha:

Se qualquer um dos operadores na tabela anterior são utilizados com uma subconsulta que
retorna
fileira, mais do
a consulta iráque um Os operadores na tabela a seguir pode usar subconsultas de várias linhas:
falhar.

EXAME TIP Os operadores de comparação válidos para subconsultas de uma única linha são =,>,>
=,
Os<, <=, e <>. de comparação válidos para subconsultas de várias linhas são IN, NOT IN, ANY, e
operadores
ALL.
Subconsultas correlacionadas
A subconsulta correlacionada tem um método mais complexo de execução do que simples e
subqueries e é potencialmente muito mais poderoso. Se uma subconsulta referencia colunas no pai
múltipla-row
consulta, em seguida, seu resultado será dependente da consulta pai. Isso torna impossível avaliar a
subconsulta antes de avaliar a consulta pai. Considere esta declaração, que lista todos os
funcionários
ganham menosqueque o salário médio:

A subconsulta de fileira única precisa de ser executado apenas uma vez, e o resultado será
consulta
substituído
pai. Mas
na agora considerar uma consulta que irá listar todos os funcionários cujo salário é
inferiormédio
salário ao de seu departamento. Neste caso, a subconsulta deve ser executado para cada
funcionário
determinar o salário médio de seu departamento; é necessário passar departamento do empregado
código para a subconsulta. Isso pode ser feito da seguinte forma:
Neste exemplo, a referência a uma coluna subconsulta, p.department_id , a partir da lista de
consulta
selecção
pai. do
Este é o sinal de que em vez de avaliar a subconsulta uma vez, ele deve ser avaliado
para

cada linha da consulta pai. Para executar a consulta, a Oracle vai olhar para cada linha em
funcionários
e, como ele faz isso, execute o subconsulta usando o DEPARTMENT_ID da linha atual do
empregado.
O fluxo de execução é a seguinte:

1. Comece na primeira linha da tabela EMPLOYEES.


2. Leia os valores DEPARTMENT_ID e salário de linha atual.
3. Execute o subconsulta usando o valor DEPARTMENT_ID a partir do passo 2.
4. Compare o resultado da etapa 3 com o valor do salário a partir do passo 2, e retornar a linha
se ovalor do salário é menor do que o resultado.
5. avançar para a próxima linha na tabela EMPREGADOS.
6. repetição do passo 2.

Uma única linha ou subconsulta de várias linhas é avaliada uma vez, antes de avaliar a consulta
subconsulta
externa; uma
correlacionada deve ser avaliada uma vez para cada linha na consulta externa. A
subconsulta
pode ser umacorrelacionada
simples ou de várias linhas subconsulta, se o operador de comparação é apropriado.

TIP Correlated subconsultas pode ser uma construo ineficiente devido à necessidade de repetidas
execução da subconsulta. Sempre tentar encontrar uma abordagem alternativa.

Exercício 11-3: Investigar os diferentes tipos de Subqueries Neste exercício, você vai
demonstrar os problemas que podem ocorrer com diferentes tipos de subconsultas. Use o SQL * Plus
ou SQL
Desenvolvedor. Todas as consultas devem ser executados quando conectado ao esquema HR;
presume-se
tabela EMPREGADOS
que o tem os conjuntos padrão de linhas.

1. Inicie a sessão no seu banco de dados como o usuário HR.


2. Crie uma consulta para determinar quem ganha mais do que o Sr. Tobias.

Isso irá retornar 86 nomes, em ordem alfabética.


3. Crie uma consulta para determinar quem ganha mais do que o Sr. Taylor.

Isto irá falhar com o erro “ORA-01427: única linha subconsulta retorna mais de uma linha.”
Determinar por que a consulta na etapa 2 sucedido mas a um em etapa 3 falhou. A resposta
estádados.
os na

O uso do “maior que” operador nas consultas para as etapas 2 e 3 requer uma única linha
subconsulta, mas a subconsulta utilizada pode retornar qualquer número de linhas,
dependendo
predicado utilizado.
da pesquisa
4. Fixar o código nas
LAST_NAME etapasAqui
é usado. 2 e 3estão
para duas
que as declarações
soluções vai terum
possíveis: sucesso,
usa umanão importa o que
comparação
operador que pode lidar com uma subconsulta de várias linhas; o outro usa uma subconsulta
diferente
queum
ser serásubconsulta
sempre de fileira única.
Aqui está a primeira solução:

Aqui está a segunda solução:

Write Single-Row e Multiple-Row Subqueries


Os seguintes são exemplos de subconsultas simples e de várias linhas. Eles são baseados no HR
esquema de demonstração.
Como você descobrir quais os funcionários têm um gerente que trabalha para um departamento
No Reino
com base
Unido? Aqui está uma possível solução usando subconsultas de várias linhas:

No exemplo anterior, subqueries são aninhados três níveis de profundidade. Note-se que os
o operador
subqueries
IN, usar
porque é possível que as consultas podem retornar várias linhas.
Você foi solicitado para encontrar o emprego com o maior salário médio. Isso pode ser feito com
subconsulta
um única linha.

A subconsulta retorna um único valor: o salário médio do departamento com a maior média
salário. É seguro usar o operador de igualdade para esta subconsulta porque as garantias de função
que apenas uma linha será devolvido.
MAX
Os todas e quaisquer operadores são suportados sintaxe, mas sua função pode ser duplicado com
operadores
outros combinados com agregados mais comumente usado. Por exemplo, estas duas
que recuperar todos os funcionários cujo salário é maior do que qualquer um no departamento 80,
declarações,
conjuntos de resultados idênticos:
voltará

A tabela a seguir resume os equivalentes para todos e quaisquer:


Usando o EXISTE Condição
O EXISTE testes de condição a existência de linhas de uma subconsulta e retorna TRUE se um ou
existem linhas; caso contrário, retorna FALSE. Considere a consulta que lista apenas os
mais
departamentos que têm
funcionários.

Onze departamentos são devolvidos. Alguns departamentos momento não possuímos os


eles.funcionários
Estes 16 departamentos
que pertencem
sãoafacilmente identificados usando a NÃO EXISTE condição.

Os resultados nulos em uma subconsulta


Seja cauteloso com os operadores a ser utilizado quando se compara expressões para resultados
subconsulta.
valores Se umpor
devolvidos dosuma subconsulta é um nulo, toda a consulta pode retornar um valor nulo.
Condiçõesvalor
resultado que comparam
nulo em umumanulo que estão sendo devolvidos. Portanto, se os valores nulos são
susceptíveis
conjunto de uma
de ser
subconsulta,
parte dos resultados
evite usar o operador NOT IN vez que este é equivalente a <> ALL.
estas declarações:
Considerar

Há uma linha na tabela de empregados com MANAGER_ID nulo. A primeira declaração

compara se EMPLOYEE_ID <> ALL, e uma vez que um NULL está presente na subconsulta, a
declaração não retorna nenhuma linha. Você pode garantir que não nulos são devolvidos na
subconsulta
Cláusula WHERE,
usandocomo
um na segunda instrução que retorna os 89 funcionários que não são gestores.
EM operador é equivalente a = QUALQUER. Não há nenhum problema com valores nulos no
o
conjuntodeclaração
terceira de resultados,
retorna
eo os 18 funcionários que são gerentes.

Descrever os operadores de conjunto


Todas as instruções SELECT retornar um conjunto de linhas. Os operadores de conjunto tomam
como entrada
declarações mais
os resultados
selecionarde
e destes
dois ougerar um único conjunto de resultados. Isto é conhecido como
um composto
consulta . Oracle oferece três operadores de conjunto: UNION, INTERSECT e menos. UNION pode
qualificado com ALL. Existe um desvio significativo da Organização Internacional para
ser
Normalização (ISO) padrão para SQL aqui, em que a ISO SQL usa excepto quando utiliza o Oracle
MENOS, mas a funcionalidade seja idêntica. Os operadores de conjunto utilizados em consultas
compostas são como se segue:
• UNIÃO Retorna as linhas combinadas de duas consultas, classificando-os e removendo
duplicatas
• UNION ALL Retorna as linhas combinadas de duas consultas sem classificação ou
removendo
duplicatas
• INTERSECT retorna somente as linhas que ocorrem em conjuntos de resultados de ambas as
consultas,
removendo
classificando-os
duplicatas e
• MENOS retorna somente as linhas no primeiro conjunto de resultados que não aparecem no
segundo resultado
definido, classificando-os e removendo duplicatas

Estes comandos são equivalentes aos operadores padrão usados na matemática a teoria dos
representada
conjuntos,graficamente
muitas vezescomo diagramas de Venn.

Conjuntos e diagramas de Venn


Considere grupos de seres vivos, classificadas da seguinte forma:

• Criaturas com duas pernas Seres humanos, papagaios, morcegos


• Criaturas que podem voar papagaios, morcegos, abelhas
• Criaturas com peles ursos, morcegos

Cada classificação é conhecida como um conjunto , e cada membro do conjunto é um elemento .


três A
conjuntos
união daé seres humanos, papagaios, morcegos, abelhas e ursos. Este é todos os elementos em
todas as séries,
duplicações. A intersecção
sem a dos conjuntos é todos os elementos que são comuns a todos os três
conjuntos, mais
removendo os duplicados.
uma vez Neste exemplo simples, a interseção tem apenas um elemento: morcegos.
o
interseção do conjunto de duas pernas eo conjunto voando tem dois elementos: papagaios e
morcegos.
os conjuntosA são
menosos elementos
de de um conjunto sem os elementos de um outro, de modo que as
criaturas
menos asde
criaturas
duas pernas
voadoras
definido,
definir, menos as criaturas peludas definido, resulta em um único
elemento: os seres humanos.
Estes conjuntos podem ser representados graficamente como o diagrama de Venn mostra na
diagramas
Figura são
11-1nomeados
. (Venn após John Venn, que formalizou a teoria na Universidade de Cambridge,
século dezenove.)
no

Figura 11-1 Um diagrama de Venn mostra três conjuntos e o conjunto universal

O círculo no topo esquerdo da figura representa o conjunto de criaturas de duas pernas, o círculo
no direito consiste de criaturas que pode voar, e o círculo de fundo é animais peludos. Os
superior
intersecções, e desvantagens dos conjuntos são imediatamente evidentes através da observação dos
sindicatos,
elementos
várias partes
nados círculos que fazem ou não se sobrepõem. O diagrama na figura também inclui o
conjunto universal, representado pelo retângulo. O conjunto universal é todos os elementos que
existem,
que incluindo
não são aqueles
membros dos conjuntos definidos. Neste caso, o conjunto universal seria definido como
todos os seres
criaturas, incluindo
vivosaqueles que não desenvolveram pele, duas pernas, ou a capacidade para fazer (tal
como peixe).
Isso é matemática da escola o suficiente; agora avançar para a implementação dentro do SQL.

Definir princípios Operador Gerais


Todos os operadores estabelecidos fazer consultas compostas pela combinação dos conjuntos de
resultadosSELECT
instrução de duas ouinclui
maismais
consultas.
de um Se
operador
um de conjunto (e, portanto, mais do que duas
consultas),
será aplicadoeles
na ordem o programador especifica: de cima para baixo e da esquerda para a direita.
Apesar
melhorias para o dar padrão SQL 2011 INTERSECT uma prioridade maior do que os outros,
todos os operadores do Oracle estabelecidos têm a mesma precedência. Para substituir essa possível
atualmente
alteração futura
precedência, com base na ordem em que os operadores aparecem, você pode usar parênteses;
entre parênteses será avaliada antes de passar os resultados aos operadores fora dos colchetes.
operadores

TIP Dada a alteração pendente na prioridade operador, pode ser uma boa prática sempre usar
parênteses. Isto irá assegurar que a função do código não vai mudar quando executado contra uma
versão posterior
do banco de dados.

Cada consulta em uma consulta composto irá projectar a sua própria lista de colunas
temselecionadas.
o mesmo número
Essasdelistas
elementos,
devem ser indicado na mesma sequência, e ser de dados globalmente
tipo. Eles não precisam ter os mesmos nomes (ou aliases de coluna), nem precisam vir do
semelhante
mesmas tabelas (ou subconsultas). Se os nomes das colunas (ou aliases) são diferentes, o conjunto de
resultadoscomposto
consulta da terá colunas nomeadas como estavam na primeira consulta.

EXAME DICA As colunas nas consultas que compõem uma consulta composto pode ter nomes
mas o conjunto de resultados de saída usará os nomes das colunas na primeira consulta.
diferentes,

Enquanto as listas de colunas projetadas não tem que ser o mesmo tipo de dados, eles devem ser
grupodo de
mesmo
tipos de dados. Por exemplo, as colunas seleccionadas por uma consulta pode ser de tipos
de dados e DATA
NÚMERO, e aqueles a partir da segunda consulta poderia ser TIMESTAMP e INTEIRO. O conjunto
adeconsulta
resultadoscomposto
de terá colunas com o mais elevado nível de precisão; neste caso, eles seriam
TIMESTAMP e número. Outros que aceitar tipos de dados a partir do mesmo grupo, os operadores
de conjunto
não vai fazer qualquer conversão implícita de tipo. Se a segunda consulta recuperados colunas do
tipo VARCHAR2,
consulta composto oiria lançar um erro, mesmo que as variáveis de cadeia poderia ser resolvido para
data e valores numéricos.
legitimar

TIP EXAME As colunas correspondentes das consultas que compõem uma consulta composto deve
sermesmo
o de grupo de tipos de dados.

UNION, MINUS e INTERSECT sempre combinar os conjuntos de resultados das consultas de


entrada eclassificar os resultados para remover linhas duplicadas. A classificação é baseada em
em seguida,
todas as
certo. Secolunas,
todas as da
colunas
esquerda
em duas
para alinhas têm o mesmo valor, em seguida, apenas a primeira linha é
retornada composto
resultado na definido. Um efeito colateral disto é que a saída de uma consulta de composto
vai ser de
ordem classificados.
classificação
Se(que
o é ascendente, com base na ordem em que as colunas acontecer de
aparecer nalistas) não é a ordem que você quiser, é possível colocar uma única cláusula ORDER BY
selecionar
nocomposto
o final de de consulta. Não é possível usar ORDER BY em qualquer uma das consultas que
compõem consulta
composto o todo porque isso iria perturbar a classificação que é necessário para remover
duplicatas.

EXAME TIP Uma consulta composto, por padrão, retornar linhas classificadas em todas as colunas,
da esquerda
para a direita. A única exceção é UNION ALL, onde as linhas não serão classificados. O único lugar
onde
um ORDER BY é permitida é no final da consulta composto.

UNION ALL é a exceção à regra de ordenação-não-duplicados; os conjuntos de resultados dos


consultas
dois entrada
serão concatenados para formar o resultado da consulta composto. Mas você ainda não
podenas
BY utilizar
consultas
ORDER
individuais; ele pode aparecer apenas no final da consulta composto onde será
aplicada ao conjunto de resultados completa.

Exercício 11-4: Descrever os operadores de conjunto Neste exercício, você vai ver o efeito do
operadores. De qualquer SQL * Plus ou SQL Developer pode ser usado.
conjunto

1. Ligue para o seu banco de dados como usuário HR.


2. Execute esta consulta:
Observe o resultado, em particular a ordem das linhas. Se a tabela é como originalmente
criado,quatro
Serão há linhas retornadas. A ordem será a Europa, Américas, Ásia, Oriente Médio e
África.
3. Pesquisar Regiões tabela duas vezes, usando UNION.

As linhas retornadas será como para a etapa 1, mas em ordem alfabética.


4. Desta vez, use UNION ALL.

Não será o dobro do número de linhas, e eles não serão classificados.


5. Uma intersecção irá recuperar linhas comuns a duas consultas.

Todas as quatro linhas são comuns, e o resultado é classificado.


6. A MENOS irá remover linhas comuns.

A segunda consulta irá remover todas as linhas na primeira consulta. O resultado é que há
linhas são
esquerda.

Use um operador de conjunto para combinar várias


consultasIndividual
consulta em um
consultas compostas são duas ou mais consultas, ligados a um ou mais operadores de conjunto. O
resultado
um único final
conjunto
é de resultados.
Os exemplos que se seguem são baseadas em duas mesas, OLD_DEPT e NEW_DEPT. A mesa
OLD_DEPT pretende representar uma tabela criada com uma versão anterior do Oracle, quando a
única
tipo de dados disponíveis para a representação de data e hora de dados foi DATE, a única opção para
dados
foi número,
numéricos
e dados de caracteres de comprimento fixo foi CHAR. O NEW_DEPT tabela usa mais
INTEIRO estreitamente definido tipo de dados numéricos (que implementa a Oracle como um
númerosignificativos,
dígitos de até 38 mas sem casas decimais), a VARCHAR2 mais eficiente de espaço para dados
de caracteres,
eo tipo de dados TIMESTAMP, que pode, por padrão, loja de data e hora valores com seis casas
de precisão sobre os segundos. Há duas linhas em cada tabela.
decimais

O operador UNION ALL


A UNION ALL leva dois conjuntos de resultados e concatena-los em um único conjunto de
resultados.
vêm de duasOsconsultas
conjuntosque
dedeve
resultados
selecionar o mesmo número de colunas, e as colunas
correspondentes
das duas consultas (na ordem em que elas são especificadas) deve ser do mesmo grupo de tipos de
dados. onão precisa ter os mesmos nomes.
colunas
Figura 11-2 demonstra uma operação UNION ALL de duas tabelas. O UNION ALL dos dois
mesas converte todos os valores para o maior nível de precisão; as datas são retornados como
(As datas menos precisos preenchidos com zeros), a dados de caracteres está a VARCHAR2 mais
timestamps
com o comprimento da coluna de entrada mais tempo, e os números (embora isto não é óbvia devido
eficiente
ao
natureza
qualquer dos dados)
ordem que aceitará decimais.
eles aconteçam A ser
para ordem das linhasseguido
armazenado, é as linhas
porda
as primeira
linhas databela na tabela
segunda
em qualquer
ordem em que acontecem a ser armazenado.

Figura 11-2 UMA UNIÃO ALL com conversões de tipo de dados

O operador de união
A UNIÃO realiza uma UNION ALL e, em seguida, ordena o resultado em todas as colunas e
duplicatas. A primeira consulta na Figura 11-3 retorna todas as quatro linhas porque não há
remove
No entanto, as linhas estão agora em ordem. Pode parecer que as duas primeiras linhas não estão em
duplicatas.
ordem
os por em
valores causa de
datados, mas eles são. O DNAME nas OLD_DEPTS tabela é de 20 bytes de
comprimento
com espaços),(acolchoado
enquanto o DNAME em NEW_DEPT, onde é um VARCHAR2, é apenas enquanto o
nome próprio. Os espaços dar a linha de OLD_DEPT um valor tipo superior, mesmo que o valor de
é menos.
data
Figura 11-3 consultas compostas UNIÃO

EXAME TIP A UNION ALL retornará linhas agrupadas de cada consulta em sua ordem natural.
comportamento pode ser modificado pela colocação de uma única ordem BY no final.
este

A segunda consulta na Figura 11-3 remove quaisquer espaços esquerda ou à direita do DNAME
colunas e corta os elementos de tempo de datado e DINICIAL. Duas das linhas tornam-se assim
idêntico para que apenas um, aparece na saída.
Por causa do tipo, a ordem das consultas em uma consulta composto UNIÃO faz diferença para
a ordem das linhas retornadas.

DICA Se você sabe que não pode haver duplicatas entre duas tabelas, em seguida, use sempre
UNION
Ele salvaALL.
o banco de dados de fazer um monte de classificação. Seu DBA não vai estar satisfeito
com você, se você usar
UNIÃO desnecessariamente.

O operador de intersecção

A intersecção de dois conjuntos é as linhas que são comuns a ambos os conjuntos, como se mostra
na Figura 11-4 .
Figura 11-4 cruzam e MENOS

A primeira consulta mostrada na Figura 11-4 retorna nenhuma linha, porque cada linha nas duas
diferente.
tabelasEm
é seguida, aplicando funções para eliminar algumas das diferenças retorna a uma linha
comum.
Neste caso, apenas uma linha é retornada; se tivesse havido várias linhas comuns, eles estaria em
A ordem em que as consultas aparecem na consulta composto não tem efeito sobre isso.
ordem.

O operador MINUS
A MENOS corre ambas as consultas, classifica os resultados, e retorna somente as linhas a partir do
primeiro
não aparecer
conjunto
no segundo
de resultados
conjunto
quedefazer
resultados.
A terceira consulta na Figura 11-4 retorna todas as linhas em OLD_DEPT porque não há
linhas
correspondência
em NEW_DEPT. A última consulta força algo em comum, fazendo com que uma das linhas a
serem
removido. Por causa da ordenação, os registros estarão em ordem independentemente da ordem em
que as consultas
aparecem na consulta composto.

Exemplos mais complexos


Se duas consultas não devolver o mesmo número de colunas, pode ainda ser possível executá-los em
consulta composto através da geração de colunas adicionais com valores nulos. Por exemplo,
um
considere
sistema deum
classificação para os animais: Todos os animais têm um nome e um peso, mas as aves
têm uma
envergadura, enquanto que os gatos têm um comprimento de cauda. O seguinte é uma consulta para
listar todos os pássaros e gatos:

Observe o uso de NULL para gerar os valores em falta.


Uma consulta composto pode consistir em mais do que duas consultas, em que precedência
operador caso
ser controlada compode
parênteses. Sem parênteses, os operadores de conjunto irá ser aplicada na
em que são especificados. Considere a situação onde há uma PERMSTAFF tabela com uma lista
sequência
de todos os membros do pessoal permanente e um CONSULTORES tabela com uma lista de
éfuncionários
também uma consultor.
lista negra
Lá mesa de pessoas da lista negra, por uma razão ou outra. A consulta a
seguir
irá listar todos os funcionários permanentes e consultoria em uma determinada área geográfica,
removendo
lista negra: os do
Observe o uso de UNION ALL, pois presume-se que ninguém será tanto no PERMSTAFF
tabela e a tabela de consultores; a UNIÃO forçaria uma espécie desnecessário. A ordem de
precedência para operadores de conjunto é a ordem especificada pelo programador, de modo que a
operação de
comparar subtracção
o valor vai
BLACKLIST com o resultado da operação UNION ALL. O resultado será tudo
funcionários (permanentes e consultoria), que não aparecem na lista negra. Se a lista negra poderia
aplicada apenas a equipe de consultoria e não ao pessoal permanente, haveria duas possibilidades.
ser
Primeiro, poderiam
consultas o ser listados em uma ordem diferente.

Este voltaria consultores que não estão na lista negra e, em seguida, acrescentar todo o pessoal
Alternativamente,
permanente. os parênteses pode controlar a precedência explicitamente.

Esta consulta irá listar todos os funcionários permanentes e, em seguida, anexar todos os
na lista
funcionários
negra. consultor que não são
Estas duas consultas retornará as mesmas linhas, mas a ordem será diferente porque a União
TODAS as operações listar as tabelas PERMSTAFF e consultores em uma sequência diferente. Para
garantir
que as consultas retornam conjuntos de resultados idênticos, não seria necessário uma cláusula
ORDER
as consultas
BYcompostas.
ao pé da

CUIDADO As duas consultas anteriores irá retornar as mesmas linhas, mas a segunda versão
poderia ser melhor código porque os parênteses torná-lo mais auto-documentado. Além disso,
considerado
em precedência implícita com base na ordem das consultas funciona no momento, mas versões
baseando-se
SQL podem incluir conjunto precedência do operador.
futuras

Controlar a ordem de linhas retornadas


Por padrão, a saída de uma consulta UNION ALL composto não é classificado em tudo; as linhas
serão
em devolvidos
grupos na ordem de consulta que foi listada em primeiro lugar e dentro dos grupos, a fim de que
acontecer a ser armazenado. A saída de qualquer outro operador de conjunto serão classificados em
eles
ordem crescente
colunas, começandode toda
comaa primeira coluna chamada.
Não é sintaticamente possível usar uma cláusula ORDER BY nas consultas individuais que
um compõem
composto de consulta. Isso ocorre porque a execução da maioria das consultas compostas tem
que classificar as linhas,

que entraria em conflito com o ORDER BY. Pode parecer teoricamente possível que um UNION
ALL
(Que não classificar as linhas) pode levar uma ORDER BY para cada consulta, mas o Oráculo
implementação de UNION ALL não permite isso.
Não há qualquer problema com a colocação de um ORDER BY no final da consulta composto,
Contudo. Isto irá resolver todo o resultado da consulta composto. A ordenação padrão de linhas é
em todas as colunas na seqüência em que aparecem. A ordem especificada pelo cláusula não tem
baseado
restrições;
pode basear-se
isto em quaisquer colunas (e funções aplicadas a colunas) em qualquer ordem. Aqui está
um exemplo:

Broca Two-Minute
definir Subqueries
• Uma subquery é uma instrução SELECT incorporada dentro de outra instrução SQL.
• Subconsultas podem ser aninhados uns dentro dos outros.
• Com exceção da subconsulta correlacionada, subqueries são executados antes da consulta
externa
dentro do qual estão inseridos.

Descrever os tipos de problemas que os Subqueries pode resolver


• A seleção de linhas de uma tabela com uma condição que depende dos dados dentro da tabela
pode
implementado
ser com uma subconsulta.
• Complexo junta às vezes pode ser substituído com subconsultas.
• Subqueries pode adicionar valores para a saída da consulta externa que não estão disponíveis
nasendereços
tabelas do
de consulta externa.

Descrever os tipos de Subqueries


• subconsultas de várias linhas pode retornar várias linhas, possivelmente com várias colunas.
• subconsultas de uma única linha devolver uma linha, possivelmente com várias colunas.
• Uma subconsulta escalar retorna um único valor; é uma única linha, subconsulta única coluna.
• Uma subconsulta correlacionada é executado uma vez para cada linha na consulta externa.

Write Single-Row e Multiple-Row Subqueries

• subconsultas de uma única linha deve ser usada com operadores de comparação de uma única
linha.
• subconsultas de várias linhas devem ser usados com operadores de comparação de várias
linhas.
• A todos e quaisquer operadores podem ser alternativas para usar de agregações.

Descrever os operadores de conjunto


• UNION ALL concatena os resultados de duas consultas.
• UNIÃO classifica os resultados de duas consultas e remove duplicatas.
• INTERSECT retorna somente as linhas comuns para o resultado de duas consultas.
• MINUS retorna as linhas da primeira consulta que não existem na segunda consulta.

Use um operador de conjunto para combinar várias consultas em uma única


consulta
• As consultas na consulta composto deve devolver o mesmo número de colunas.
• As colunas correspondentes deve ser do tipo de dados compatível.
• Os operadores de conjunto têm a mesma precedência e será aplicado na ordem em que são
especificados.
Controlar a ordem de linhas retornadas
• Não é possível usar ORDER BY nas consultas individuais que fazem uma consulta composto.
• uma ordem BY especificando um número de coluna ou alias pode ser anexado ao fim de um
consulta composto.
• As linhas retornadas por uma UNION ALL será na ordem em que ocorrem nas duas consultas
de origem.
• As linhas retornadas por uma UNIÃO serão classificados em todas as suas colunas, da
esquerda para a direita.

Auto teste
1 . Considere esta descrição genérica de uma instrução SELECT:

Onde subqueries poderia ser usado? (Escolha todas as respostas corretas.)


A. select_list
B. mesa
C. condição
D. expressão_1
E. expressão_2

F. expressão_3
2 . A consulta pode ter uma subconsulta incorporado dentro dele. Em que circunstâncias
poderia
mais haver
do que uma subconsulta? (Escolha a melhor resposta.)
A. A consulta externa pode incluir uma consulta interna. Não é possível ter outra consulta
dentro da consulta interna.
B. É possível incorporar uma subconsulta única linha dentro de uma subconsulta de várias
linhas,
contrário.
mas não o
C. A consulta externa pode ter várias consultas internas, mas eles não devem ser encaixado
dentro
entre si.
D. Subqueries pode ser incorporado dentro do outro, sem limitações práticas em
profundidade.
3 . Considere a seguinte declaração:

Quando é que a subconsulta ser executado? (Escolha a melhor resposta.)


A. Ele será executado antes da consulta externa.
B. Ele será executado após a consulta externa.
C. Será executado concorrentemente com a consulta externa.
D. Ele será executada uma vez para cada linha na tabela EMPREGADOS.
4 . Considere a seguinte declaração:

Quando é que a subconsulta ser executado? (Escolha a melhor resposta.)


A. Ele será executado antes da consulta externa.
B. Ele será executado após a consulta externa.
C. Será executado concorrentemente com a consulta externa.
D. Ele será executada uma vez para cada linha na tabela EMPREGADOS.
5 . Considere a seguinte declaração:

Considere também a seguinte declaração:

O que pode ser dito sobre as duas declarações? (Escolha duas respostas corretas.)
A. As duas declarações devem gerar o mesmo resultado.
B. As duas declarações podem gerar resultados diferentes.
C. A primeira declaração sempre será executado com sucesso; a segunda instrução será erro
se houver
são dois departamentos com department_name = 'Executive'.
D. Ambos declarações sempre será executado com sucesso, mesmo se houver dois
departamentos
Department_name
com = 'Executive'.
6 . Quais são as características distintivas de uma subconsulta escalar? (Escolha duas correta
respostas.)
A. Uma subconsulta escalar retorna uma linha.
B. Uma subconsulta escalar retorna uma coluna.
C. Uma subconsulta escalar não pode ser usado na lista de seleção da consulta pai.
D. Uma subconsulta escalar não pode ser usado como um subconsulta correlacionada.
7 . Qual operador de comparação não pode ser usado com subconsultas de várias linhas?
(Escolha
responda.)
o melhor
A. ALL
B. QUALQUER
C. IN
D. NOT IN
E. Todos os acima pode ser utilizado.
8 . Considere a seguinte declaração:
O que está errado com isso? (Escolha a melhor resposta.)
A. Nada é errado, a declaração deve ser executado sem erro.
B. A declaração falhará porque a subconsulta na lista SELECT faz referência a uma tabela
quenão
é listados na cláusula FROM.
C. A declaração falhará se a segunda consulta retorna mais de uma linha.
D. A declaração será executado, mas é extremamente ineficiente por causa da necessidade
de executar
subconsulta
a segunda
uma vez para cada linha em funcionários.

9 . Qual das seguintes afirmações são equivalentes? (Escolha duas respostas.)

10 . Considere esta declaração, que se destina a solicitar um nome de um funcionário e, em


seguida,
todosencontrar
os funcionários que têm o mesmo trabalho que o primeiro empregado:

O que aconteceria se um valor foram dadas para & Nome que não corresponde com nenhuma
linha de
Empregados? (Escolha a melhor resposta.)
A. A declaração iria falhar com um erro.
B. A declaração voltaria cada linha na tabela.
C. A declaração iria retornar nenhum registro.
D. A declaração iria retornar todas as linhas onde JOB_ID é nulo.
11 . Qual destes operadores estabelecidos não vai classificar as linhas? (Escolha a melhor
resposta.)
A. INTERSECT
B. MINUS

C. UNIÃO
D. UNION ALL
12 . Qual destes operadores irá remover linhas duplicadas a partir do resultado final? (Escolha
tudoAplique.)
o que
A. INTERSECT
B. MINUS
C. UNIÃO
D. UNION ALL
13 . Se um composto de consulta contém tanto um operador MENOS e um operador de
intersecção, que em primeiro lugar? (Escolha a melhor resposta.)
será aplicado
A. O INTERSECT, porque INTERSECT tem precedência maior do que de menos.
B. A MENOS, porque MINUS tem uma precedência maior do que se cruzam.
C. A precedência é determinada pela ordem em que são especificados.
D. Não é possível para um composto de consulta para incluir tanto MENOS e cruzam.
14 . Existem quatro linhas na tabela REGIÕES. Considere as seguintes afirmações, e escolha
quantas linhas serão devolvidos para cada um: 0, 4, 8 ou 16:

15 . Considere esta consulta composto:

As colunas EMP.EMPNO e EX_EMP.EMP_ID são inteiros, a coluna é EMP.HIRED


timestamp, e as colunas EX_EMP.HIRED e EX_EMP.FIRED são data. Por que será a
declaração falhar? (Escolha a melhor resposta.)
A. Porque as colunas EMPNO e EMP_ID têm nomes diferentes.
B. Uma vez que as colunas e EMP.HIRED EX_EMP.HIRED são diferentes tipos de dados.
C. Uma vez que existem duas colunas na primeira consulta e três colunas na segunda
consulta.
D. Por todas as razões acima.
E. A consulta terá sucesso.
16 . Que linha desta declaração fará com que ele falhar? (Escolha a melhor resposta.)
A. selecione ename, contratados a partir de current_staff
B. ordem por ename
C. menos
D. selecione ename, contratado da equipe atual
E. onde deptno = 10
F. ordem por ename;
17 . Estudar esta declaração:

Em que ordem serão as linhas ser devolvido? (Escolha a melhor resposta.)


A. As linhas de cada tabela serão agrupadas e dentro de cada grupo serão classificados em
ENAME.
B. As linhas de cada tabela serão agrupadas, mas não ordenados.
C. As linhas não serão agrupadas mas todos serão classificados em ENAME.
D. As linhas serão agrupados, nem ordenados.

Respostas de auto-teste
1. A , B , C , e E . Subqueries pode ser usado em todos estes pontos.
D e F são incorrectas. Uma subconsulta não pode ser usado no GROUP BY e ORDER
BY de uma consulta.
cláusulas
2. D . Nidificação Subquery pode ser feito para muitos níveis.
A , B , e C são incorrectas. A e C são incorrecta porque subconsultas podem ser
incorreto,
aninhados.
pois oBnúmero
é de linhas retornadas não é relevante para subqueries nidificação, só
os operadores serem usadas.
para
3. Um . O conjunto de resultados da consulta interna é necessária antes da consulta externa
pode
B , C ser
,eD executado.
estão incorrectos. B e C não são possíveis porque o resultado da subconsulta
é
necessária antes da consulta pai pode começar. D está errado porque a subconsulta é
executado apenas uma vez.

4. D . Esta é uma subconsulta correlacionada que deve ser executado para cada linha na
tabela.
A , B , e C são incorrectas. O resultado da consulta interna é dependente de um valor do
consulta externa; deve, portanto, ser executado uma vez para cada linha.
5. A e D . As duas declarações irá entregar o mesmo resultado, e nem falhará se o
nome é duplicado.
B e C são incorrectas. B é incorrecta porque as declarações são funcionalmente
idênticos,
embora sintaticamente diferente. C é incorrecta porque o operador de comparação utilizado,
EM, pode
lidar com uma subconsulta de várias linhas.
6. A e B . Uma subconsulta escalar pode ser definida como uma consulta que retorna um
único
C e D valor.
são incorrectas. C é incorrecta porque uma subconsulta escalar é o único que
podesubconsulta
ser usado na lista de seleção. D é incorrecta porque subconsultas escalares podem ser
correlacionados.
7. E . ALL, ANY, IN, e não são os operadores de comparação de várias linhas.
A , B , C , e D estão incorrectos. Todos estes podem ser usados.
8. C . O operador de igualdade exige uma subconsulta de uma única linha, ea segunda
retornar
subconsulta
várias linhas.
poderia
A , B , e D são incorrectas. A está incorreta porque a instrução falhará em todos
circunstâncias, exceto no caso improvável onde há zero ou um empregado. B é incorrecta
porque este não é um problema; lá não precisa ser uma relação entre a fonte de
dados para as consultas interior e exterior. D está incorreta porque a subconsulta será
executado
não é uma apenas
subconsulta
uma vez;
correlacionada.
isto
9. A e B . Estes são idênticos.
C e D são incorrectas. C é logicamente a mesma que A e B , mas não é sintacticamente
possível; ele vai te dar um erro. D sempre retornará nenhuma linha, pois ele pede para todos
funcionários que têm um salário mais baixo do que todos os funcionários. Este não é um
erro, masquaisquer
devolver nunca pode linhas. O filtro de departamentos não é relevante.
10. C . Se uma subconsulta retorna NULL, a comparação também retornará NULL, o que
significa
linhas que não
serão recuperadas.
A , B , e D são incorrectas. A está incorreta porque isso não causaria um erro. B é
incorreta porque uma comparação com NULL retornará nada, nem tudo. D é incorrecta
porque uma comparação com NULL nunca pode retornar nada, nem mesmo outros nulos.
11. D . UNION ALL retorna linhas na ordem em que eles são entregues pelas duas
que aconsultas
consultade
composto é composta.
A , B , e C são incorrectas. INTERSECT, MINUS e UNIÃO todo o uso de ordenação
sua execução.
como parte de
12. A , B , e C . INTERSECT, MINUS e UNIÃO toda remover linhas duplicadas.
D está incorrecta. UNION ALL retorna todas as linhas, duplicações.
13. C . Todos os operadores de conjunto têm a mesma precedência, então a prioridade é
determinada
sequência em quepela
elas ocorrem.
A , B , e D são incorrectas. A e B estão incorretas porque rs conjunto operato têm igual
precedência, embora isso possa mudar em versões futuras. D é incorrecta porque muitos
conjunto
os operadores podem ser utilizados em uma consulta composto.
14. A = 4; B = 8; C = 0; D = 4.
Note-se que 16 não é usada; que seria o resultado de uma consulta produto cartesiano.
15. C . Cada consulta em uma consulta composto deve devolver o mesmo número de
colunas.
A , B , D , e E são incorrectas. A está incorreta porque as colunas podem ter diferentes
nomes. B é incorrecta porque as duas colunas são do mesmo grupo de tipos de dados, que é
tudo
o que era necessário. Resulta, assim, que D e E também são incorrectos.
16. B . Você não pode usar ORDER BY para uma consulta de uma consulta composto; você
ORDEM
pode único
colocarBYapenas
no final.
uma
A , C , D , E , e F são incorrectas. Todas essas linhas são legais.
17. B . As linhas de cada consulta estarão juntos, mas não haverá classificação.
A , C , e D estão incorrectos. A não é possível com qualquer sintaxe. C é incorrecta
seriaporque isso de uma união, não um UNION ALL. D está incorreta porque UNION ALL
o resultado
irá retornar as linhas de cada consulta agrupados.
PARTE III

DBA1
Capítulo
Capítulo 12
13 Visão Geral Arquitetural
Gerenciamento do Oracle Database 12 c
de Instância
Capítulo 14 do Oracle Networking
Capítulo 15 do Oracle Armazenamento
Capítulo 16 do Oracle Segurança
Capítulo 17 Movimentação e dados Re-organização
Capítulo 18 A AWR e do Sistema de Alerta
Capítulo 19 Ajuste de Desempenho
Capítulo 20 O Resource Manager
Capítulo 21 O Scheduler
CAPÍTULO 12

Visão geral da arquitetura do Oracle


Database
12 c

Objetivos do exame
• Lista 062.2.1 os componentes da arquitetura de um banco de dados Oracle
• 062.1.2 Explicar as estruturas de memória
• 062.1.3 descrever as estruturas de processo
• 062.1.4 explicar a relação entre estruturas de armazenamento lógicos e físicos
Um servidor Oracle consiste em duas entidades: a instância eo banco de dados. O exemplo consiste
estruturas de memória e processos, enquanto que o banco de dados é composto por arquivos no
disco. Nonão
servidor oráculo
é completa abstração de armazenamento lógico de armazenamento físico. As estruturas
lógicas
que os programadores ver (como tabelas) não estão diretamente relacionados com as estruturas
físicas (arquivos de
administradores de sistema
dados) que
ver. A relação entre os dois é mantida por estruturas dentro do
controlfile e dicionário de dados.

Listar os componentes arquitectónicos de um Oracle


Base de dados
Para a maior parte deste livro, você vai ser lidar com o ambiente de banco de dados mais simples:
instância em um computador, abrir um banco de dados armazenados em discos locais. Quanto mais
um
complexo distribuído
arquiteturas, envolvendo várias instâncias e vários bancos de dados, estão fora do escopo do Oráculo
exame Certified Professional (OCP) (embora não o Oracle Certified Mestre [OCM]
qualificação), embora você pode realisticamente esperar para ver perguntas resumo de alto nível em
arquitetura distribuída.

Arquitectura de bases de instância única


O exemplo é composto por estruturas e processos de memória. Sua existência é transitória, na sua
forma aleatória
memória de acesso (RAM) e em suas unidades de processamento central (CPUs). Quando você
desligar otodos
exemplo, funcionamento
os vestígios de sua existência vai embora ao mesmo tempo. O banco de dados
consiste
no disco.em
Se arquivos
a instância
físicos
está em execução ou parado, esses arquivos permanecem. Assim, o tempo de
vida do é somente enquanto ela existe na memória; ele pode ser iniciado e interrompido. Por outro
instância
lado, ode dados, uma vez criado, persistir indefinidamente, isto é, até que você deliberadamente
banco
excluir os com
associada arquivos que de
o banco sãodados.
Os processos que compõem a instância são conhecidos como fundo processa porque eles são
presente e funcionando em todos os momentos, enquanto o exemplo é activo. Estes processos são,
na maior parte auto-administração, embora em alguns casos, é possível que o administrador de
completamente
banco de
(DBA) para
dados
influenciar o número deles e sua operação. As estruturas de memória, que são
implementado em segmentos de memória compartilhados fornecidos pelo sistema operacional, são
conhecidos
Global Areacomo
(SGA).o Sistema
O SGA é alocada na inicialização da instância e lançado no desligamento.
de certos limites, a PIG no 12 c exemplo e os componentes no seu interior pode ser redimensionado
Dentro
enquanto está
instância o sendo executada, automaticamente ou em resposta a instruções do DBA.
sessões de usuário consistem em um processo de usuário rodando localmente na máquina do
processo
usuário
emseexecução
conectarlocalmente
a um servidor
para a instância na máquina do servidor. A técnica para o
lançamentoque
processos, do são
servidor
iniciados a pedido para cada sessão, é coberto em Capítulo 13 . A conexão
entre o processo de usuário e processo do servidor é geralmente através de uma rede local (LAN) e
protocolo proprietário Oracle Net da Oracle em camadas em cima de um protocolo padrão da
usos
indústria (geralmente
Transmission Control Protocol [TCP]). A divisão /-processo do servidor processo de usuário
implementade
arquitetura o client-
servidor; processos de usuário gerar SQL, e processos de servidor executar SQL. O
servidor
processos são muitas vezes referidos como processos de primeiro plano , em contraste com o fundo
processos que compõem a instância. Associado com cada processo do servidor é uma área de
memória, chamada de Área do Programa Global (PGA). Esta é privada para a sessão, ao contrário
nonshareable
do SGA,
que está disponível para todos os processos de primeiro e segundo plano. Note-se que os processos
de fundotêm um PGA. O tamanho da PGA de uma mesma sessão irá variar de acordo com as
também
necessidades
sessão a qualquer
de memória
momento; do o DBA pode definir um limite superior para o total de todos os PGAs, e
gerencia a alocação deste a sessões dinamicamente.
Oracle
DICA Você às vezes vai ouvir o termo processo de sombra . Seja cauteloso de usar este termo.
as pessoas usam para se referir a processos em primeiro plano; outros usam para se referir a
Alguns
processos
mente o que
emésegundo
correto-apenas
plano. Nunca
certifique-se que você sabe o que eles estão falando.

Gerenciamento de memória em 12 c pode ser totalmente automático. O DBA precisa fazer nada
umamais do que
alocação deespecificar
memória em geral, tanto para a SGA ea PGA e depois deixar a Oracle gerenciar
essa memória
como ele pensa melhor. Alternativamente, o DBA pode controlar as alocações de memória. Como
uma
o DBAtécnica
podeno
definir
meio,certos limites sobre o que a gestão automática pode fazer.

EXAME TIP memória SGA é compartilhado por todo o fundo e os processos de primeiro plano;
memória
só pode ser
PGAacessado pelo processo de primeiro plano da sessão à qual ele foi alocado. Ambos
SGA e PGA de memória podem ser gerenciados automaticamente.

As estruturas físicas que compõem um banco de dados Oracle são os arquivos de dados, o log
redo online
arquivos, e o controlfile. Dentro das estruturas físicas do banco de dados, que o sistema
administradores ver, são as estruturas lógicas que os usuários finais ver. A arquitetura do Oracle
garante abstração da lógica da física; não há nenhuma maneira um programador pode determinar
onde, fisicamente, um bit de dados está localizado. Programadores abordar apenas estruturas lógicas,
tais
mesas.como
Da mesma forma, é impossível para os administradores de sistema para saber o que bits de
dados se encontram
Estrutura física. Tudo emo nenhuma
que posso ver é os arquivos do sistema operacional, não o que está dentro
deles. oÉadministrador
você, somente de banco de dados, que é permitido (e necessário) para ver os dois lados da
história.
A abstracção de armazenamento lógico do armazenamento físico faz parte da base de dados
gestão
relacional
(RDBMS) padrão. Se fosse possível para um programador para determinar o físico
localização de uma linha, em seguida, a execução bem-sucedida do código seria totalmente
dependente
ambiente de oum
para qual ele foi escrito. Alterando a plataforma, movendo os arquivos de dados, e até
mesmo
um arquivo
renomear
iria quebrar a aplicação. É, de fato, possível determinar onde uma mesa (e até mesmo
linha dentro de uma tabela) realmente é, mas não através de SQL padrão. A linguagem não permite
um
isso.fornecidos
são Ferramentas para uso do administrador de banco de dados para fazer isso, caso venha a ser
necessário.
Os dados são armazenados em arquivos de dados. Não há limite prático para o número ou o
abstracção
tamanhodedos armazenamento
arquivos de dados,
lógicoeo
do armazenamento físico significa que os arquivos de dados
pode arquivos
mais ser movido de ou redimensionados
dados e
podem ser adicionados sem os desenvolvedores de aplicativos estar ciente
disto. as
entre O estruturas
relacionamento
físicas e lógicas é mantida e documentado no dicionário de dados, que

contém metadados que descrevem todo o banco de dados. Consultando certas visualizações do
dicionário
o DBA pode de determinar
dados, com precisão onde cada parte de cada tabela reside.
O dicionário de dados é um conjunto de tabelas armazenadas no banco de dados. Há um
problema
aqui: recursivo
A instância tem de estar ciente das estruturas física e lógica de banco de dados, mas o
informações que descrevem esta é em si dentro do banco de dados. A solução para este problema
reside no de
processo encenado
inicialização, que é detalhado no Capítulo 13 .
Um requisito da norma RDBMS é que o banco de dados não deve perder dados. Isto significa
ser apoiada;
que deveAlém disso, todas as alterações feitas aos dados entre os backups devem ser capturados
de tal
forma
forma que eles podem ser aplicados a um backup restaurado. Este é o processo de recuperação
para a frente.a Oráculo
implementa captura de mudanças através do log redo , que é um registro seqüencial de toda a
vectores aplicada aos dados. Um vetor de mudança é a alteração feita por um Data Manipulation
mudança
(DML) (tal como INSERT, UPDATE excluir ou mesclar, discutida no Capítulo 6 ).
Language
Sempre que uma sessão de usuário faz as alterações, os dados no bloco de dados é alterado, ea
mudança
vector é escrito para os lados para o log de redo, de uma forma que torna repetitivo. Então, no caso
danos a um arquivo de dados, um backup do arquivo pode ser restaurado, e Oracle irá extrair a
de
mudançadorelevante
vetores log de redo e aplicá-los para os blocos de dados dentro do arquivo. Isso garante que o
nunca será perdido, a menos que o dano ao banco de dados é tão extensa quanto a perder não só um
trabalho
ou mais de dados, mas também quer os seus backups ou o log de redo.
arquivos
O controlfile armazena os detalhes das estruturas físicas do banco de dados e é o ponto de partida
para o link para as estruturas lógicas. Quando uma instância abre um banco de dados, fá-lo por
primeira leitura,
controlfile. Dentroo do controlfile é uma informação a instância pode usar para conectar-se ao resto
banco
do de dados e dicionário
A arquitectura de dados
de uma base dentro
de dados dela. ico, representado graficamente na Figura 12-1 ,
de objecto
resumidos
pode sercomo consistindo de quatro componentes que interagem:

• Um usuário interage com um processo de usuário.


• Um processo de usuário interage com um processo do servidor.
• Um processo de servidor interage com uma instância.
• Uma instância interage com um banco de dados.

Figura 12-1 A ligação indirecta entre um utilizador e uma base de dados

O processo de usuário é o software de interface do usuário. Poderia ser uma ferramenta simples,
algocomo
mais ocomplicado,
SQL * Plus,como
ou o Microsoft Access, mais o driver ODBC, algo escrito em
C, ou um processo Java rodando em um servidor de aplicativos. Seja o que for, é a ferramenta com a
qual o interage no lado do cliente. É absolutamente impossível para qualquer processo do lado do
usuário
clienteem
entre para
contato
ter qualquer
com o banco de dados. A divisão de cliente-servidor é entre o processo do usuário
e(que
o processo
gera SQL)do servidor (que executa-lo).

Sistemas de arquiteturas distribuídas


No ambiente de instância única, uma instância abre um banco de dados. Em um ambiente
existem várias possibilidades para agrupar instâncias e bancos de dados.
distribuído,

• Real Application Clusters (RAC) Várias instâncias abertas um banco de dados.


• Streams ou GoldenGate vários servidores da Oracle propagar transações entre cada
de outros.
• Data Guard atualizações de banco de dados principal um ou mais bancos de dados de espera
para
sincronizada.
mantê-los todos

Combinações destas opções pode entregar um sistema distribuído que pode atingir a meta de 100
por cento o tempo de atividade e perda de dados zero, com escalabilidade ilimitada e desempenho.

Exercício 12-1: Identificar os componentes do servidor de banco Neste exercício, você será
consultas para determinar se o banco de dados é um sistema auto-contido ou é parte de um maior
executado
meio ambiente, e você também vai identificar os principais componentes.
distribuído
Conecte-se ao banco de dados usando SQL * Plus como usuário SYSTEM e, em seguida, siga
estes passos:
1. Determinar se o exemplo é parte de um banco de dados RAC.

Isso irá retornar NO para um banco de dados de instância única.


2. Determine se o banco de dados é protegido contra a perda de dados por um standby Data
Guard
base de dados.
Isso irá retornar desprotegidos, se o banco de dados é de fato desprotegido.
3. Determinar se o fluxo tiver sido configurado no banco de dados.

Isso irá retornar nenhuma linha se Streams nunca foi configurado.


4. Identificar as estruturas físicas do banco de dados.

você pode deduzir qualquer padrão de arquivo e de nomeação de diretório?


5. Identificar as estruturas de memória e de processo.
Para um ambiente Linux, a partir de um prompt do sistema operacional usar o comando ipcs
para exibir de memória compartilhada e o comando ps para mostrar os processos Oracle.
segmentos

A Figura 12-2 mostra um exemplo de saída. ipcs mostra dois blocos de memória compartilhada
oráculo
propriedade
que compõem
de usuário
o SGA, e ps mostra o processo de uma instância chamada orcl fundo. Seu
saída irá variar dependendo de como sua instância de banco de dados foi nomeado.

Figura 12-2 SGA e processos, como visto em Linux

Para um ambiente Windows, iniciar o Gerenciador de Tarefas do Windows. Procurar uma


oracle.exe
imageme chamada
ajustar a exibição da coluna para mostrar o número de fios dentro do processo e o
memória confirmada. Os tópicos são os processos em segundo plano, ea memória confirmada é o
total
de SGA e PGA para a instância.

Explicar as estruturas de memória


Uma instância Oracle consiste em um bloco de memória compartilhada (SGA) e uma série de fundo
processos. No mínimo, o SGA conterá três estruturas de dados:

• A piscina cache padrão de buffer de banco de dados


• O buffer de log
• A piscina comum

Pode, opcionalmente, também conter o seguinte:

• Uma grande piscina


• A piscina Java
• A córregos piscina
• piscinas buffer cache adicionais

sessões de usuário também precisa de memória no lado do servidor. Este é o PGA nonshareable.
terácada sessão PGA privada.
sua própria

EXAME TIP Que estruturas PIG são necessários, e quais são opcionais? O tampão de base de
cache, buffer de log, e piscina comum são necessários; a grande piscina, piscina Java e riachos
dados
piscina são
opcional.

O banco de dados Buffer Cache


O cache de buffer do banco de dados é a área de trabalho da Oracle para a execução de SQL. Ao
atualizarnão
sessões os dados,
fazem directamente
os usuários assim por diante disco. Os blocos de dados contendo os dados de
interesse
no cache são
buffer
primeiro
do banco.
copiados
Alterações (tais inserir novas linhas e apagar ou modificar existente
linhas) são aplicados a estas cópias dos blocos de dados na memória cache do banco de dados. Os
blocos vão no cache por algum tempo depois, até que o buffer eles estão ocupando é necessária para
permanecer
outro bloco.
cache
Ao consultar os dados, ele também vai através do cache. A sessão trabalha fora que bloqueia a
linhas
conter
de interesse
o e copia-os para o cache de buffer do banco de dados; as colunas projetadas de
linhas são então transferidos para PGA da sessão para posterior processamento. Mais uma vez, os
relevante
blocos
o cachede depermanecer no de dados durante algum tempo depois.
buffer do banco
Tome nota do termo bloco . Arquivos de dados são formatados em blocos de tamanho fixo. As
dadoslinhas da tabela
objetos comoechaves
outrosde índice são armazenados nesses blocos. A memória cache é formatado
em basede
buffers dememória,
dados cada um dimensionado para manter um bloco. Ao contrário dos blocos, as
linhas
de umasão linha
de irá
comprimento
depender dovariável;
númeroOdecomprimento
colunas definidas para a mesa, se as colunas realmente
tem alguma coisa neles, e, em caso afirmativo, quais. Dependendo do tamanho dos blocos (o qual é
escolhido
DBA) e o pela
tamanho das linhas (que é dependente da estrutura da tabela e uso), pode haver
várias linhas por bloco, ou, eventualmente, uma linha pode esticar ao longo de vários blocos. A
estrutura
bloco serádedescrita
um conjunto
na seção
de “arquivos
dados de dados”, posteriormente neste capítulo.
Idealmente, todos os blocos que contêm dados que são frequentemente acedida será no buffer do
cache,
banco
minimizando assim a necessidade para o disco de entrada / saída (I / O). Como uma utilização
típica do
cache, considere
buffer doumbanco
usuário final recuperar um registro de funcionário e atualizá-lo com estas
declarações:

O processo usuário terá solicitado ao usuário o número de funcionário e construiu o

instrução SELECT. O SELECT recupera alguns detalhes para ser enviado para o processo do
usuário,
será onde eles
formatado para exibição. Para executar esta declaração, o processo servidor da sessão irá ler o
bloco de dados que contém a linha relevante a partir de um arquivo de dados para um tampão. O
processo
um diálogode de
utilizador,
tela paraentão,
pedir iniciar
alguma mudança a ser feita e verificada; em seguida, a instrução
aUPDATE
instruçãoe COMMIT será construído e enviado para o processo do servidor para execução.
Forneceu
que um período de tempo excessivo não tiver decorrido, o bloco com a linha ainda estará disponível
cache quando a instrução UPDATE é executado. proporção Neste exemplo, a cache da memória
no
intermédia
por cento: dois
será acessos
atingidode50um bloco no cache, mas apenas uma leitura do bloco do disco. Um bem
banco de dados de cache do tampão pode resultar numa proporção de acertos cache bem mais de 90
afinado
por Um
cento.
tampão de armazenamento de um bloco cuja imagem no cache não é o mesmo que a imagem
referido
em disco
comoé um
frequentemente
sujo tampão. Um tampão será “limpo”, quando um bloco é primeiro copiados para
ele. Emoque
ponto, bloco de imagem em que o tampão é o mesmo que o bloco de imagem em disco. O tampão
sujo quando o bloco na sua actualização. Eventualmente, buffers sujos deve ser escrito de volta para
será
os arquivos
cujo ponto odetampão
dados,será
a limpa de novo. Mesmo depois de ter sido gravado no disco, o bloco
permaneceé em
memória; possível que o tampão não irá ser substituído com um outro bloco durante algum tempo.
Note-se que não há nenhuma correlação entre a frequência de alterações de um tampão (ou o
Compromete)
número de e quando ele é escrito de volta para os arquivos de dados.
EXAME TIP Mudou blocos podem ser gravados arquivos de dados antes ou depois de COMMIT.
No decorrer dasnormal, não é incomum para dados não confirmados a serem gravados para os
funcionamento
arquivos denão
alterações dados
foram
ou escritos.
para comprometida

O tamanho da memória cache base de dados é crítico para o desempenho. O cache deve ser
adequadamente
dimensionado para o cache de todos os blocos freqüentemente acessados (seja limpa ou suja), mas
nãoarmazena
ele tão grandeblocos
que que raramente são necessários. Um cache subdimensionado irá resultar em
atividade
blocos acessados
excessiva
comdofreqüência
disco, comosão continuamente lido do disco, usado, substituído por outros
blocos,
lido e depois
do disco novo. Um cache de grandes dimensões não é tão ruim (contanto que não é tão grande
que a operação
sistema tem que trocar páginas de memória virtual dentro e fora de memória real), mas pode causar
problemas;o para
exemplo, arranque de uma instância é mais lento que se envolve a formatação de um tampão de
base de dados enorme
cache.

EXAME TIP O tamanho da memória cache base de dados pode ser ajustado dinamicamente, e que
pode ser
gerenciados automaticamente.

O cache de buffer do banco de dados é alocado em tempo de inicialização de instância e pode ser
redimensionada
a qualquer momento.para
Estecima ou para baixo empode ser manual ou automática, de acordo com a
redimensionamento
carga de trabalho,
mecanismo tiver sido
se aactivado.
automática

O Log Buffer
O tampão de registo é uma pequena área de teste, a curto prazo para os vectores de mudança antes
de serem
redo escritas
log no disco.para
Um ovetor de mudança é uma modificação aplicada a algo; execução de instruções
gera vectores de alteração aplicada aos dados. O redo log é a garantia do banco de dados que dados
DML
nunca será perdido. Sempre que um bloco de dados é alterado, os vectores de alteração aplicada ao
blocoosão
para log escritos
de redo, de onde podem ser extraídos e aplicados a arquivo de dados backups se é sempre
necessário para restaurar um arquivo de dados. Assim, o arquivo de dados pode ser atualizado.
Refazer não está escrito diretamente para os arquivos de log redo por processos do servidor
sessão.
sessões teriaSeque
fosse, a para o disco I / O operações para completar sempre que executou um DML
esperar
declaração. Em vez disso, sessões de escrever refazer para o buffer de log na memória. Isto é muito
mais rápido
disco. O buffer
do que
de log
escrever
(que contêm
para vectores de mudança de muitas sessões, intercalados com cada
outro) é então escrito nos arquivos de log refazer. Uma gravação da memória intermédia de registo
em disco,
lote por conseguinte,
de muitos pode serdeum
vetores de mudança muitas transações. Mesmo assim, os vectores de mudança no
buffer
são gravados
de log em disco em quase tempo real, e quando uma sessão emite uma instrução COMMIT, o
buffer de gravação realmente acontece em tempo real. As gravações são feitas pelo fundo log
log
processo, a LGWR.
escritor

EXAME TIP O que LGWR fazer quando você cometer? Ele libera todo o buffer de log para o
disco.
faz o DBW
o quen se em cometer? Nada.

O buffer de log é pequeno (em comparação com outras estruturas de memória), porque é um
áreacurto prazo
de armazenamento. vetores de mudança são inseridos nele e são transmitidos para o disco em
tempo
não há quase
necessidade
real. Há
para
simque seja mais do que alguns megabytes no máximo, e de fato o que torna
muitopadrão
valor maior do
pode
queser
o seriamente ruim para o desempenho. O padrão é determinado pelo servidor
e baseia-se no número de CPUs no nó do servidor. O padrão é geralmente correta.
Oracle
Compreender o processamento de COMMIT é vital. Quando uma instrução COMMIT é emitida,
processamento
parte do de cometer envolve escrever o conteúdo do buffer de log nos arquivos de log redo no
disco. esteocorre em tempo real, e enquanto ela está em andamento, a sessão que emitiu o COMMIT
gravação
A garantia de que uma transação confirmada nunca será perdido se baseia em que a comprometer-
irá travar.
mensagem não é retornado para a sessão até que os blocos de dados no cache foram alterados (que
complete
significa que a transação foi concluída) e os vetores de mudança foram escritos ao redo
log no disco (e, por conseguinte, a operação pode ser recuperado, se necessário).
O buffer de log é alocada na inicialização da instância, e nunca pode ser redimensionada
posteriormente
reiniciar a instância.sem
É um tampão circular. Como processos de servidor escrever vetores de
mudança de
endereço para
gravação
ele, o atual se move ao redor. O processo de log escritor escreve os vetores em lotes,
e como
ele faz isso, o espaço que ocupavam fica disponível e pode ser substituído por mais mudanças
vetores. É possível que em períodos de pico de actividade, os vectores de mudanças serão gerados
maisprocesso
log rapidamente do pode
escritor que oescrever-los. Se isso acontecer, toda a atividade DML cessará (para
milissegundos), enquanto que o escritor de log limpa o buffer.
alguns
O processo de lavagem do tampão de log para o disco é um dos gargalos finais em Oracle

arquitetura. Você não pode fazer DML mais rápido que o LGWR pode lavar os vetores de mudança
para o on-line
refazer arquivos de log.

EXAME TIP O tamanho do buffer de log é estático, fixo na inicialização de instância. Ele não pode
ser automaticamente
gerenciou.

A piscina comum
A piscina comum é a mais complexa das estruturas PIG. Ele é dividido em centenas de
subestruturas, todos os quais são gerenciados internamente pelo servidor Oracle. Esta discussão de
arquitetura vou mencionar apenas três dos componentes piscina comum brevemente:

• O cache de biblioteca
• O cache de dicionário de dados
• A consulta SQL e PL / SQL cache de resultados de função

Algumas outras estruturas serão descritos em capítulos posteriores. Todas as estruturas dentro da
são piscina
automaticamente
comum gerenciados. O seu tamanho irá variar de acordo com o padrão de actividade
contra o dentro do tamanho total do pool compartilhado. A piscina comum em si pode ser
exemplo,
dinamicamente, quer em resposta a instruções do DBA ou através sendo gerenciado
redimensionada
automaticamente.
O Cache Biblioteca
O cache de biblioteca é uma área de memória para armazenamento de código recentemente
executado
de na sua forma
cache armazena analisado.
em cache todo oAcódigo:
biblioteca
SQL, PL / SQL e Java. Análise é a conversão de código
escrito por
programadores em algo executável, e é um processo que a Oracle faz sob demanda. Porque
código analisado é armazenada em cache no pool compartilhado de modo que ele pode ser
reutilizado
ser muito melhorada.
sem reparsing,
Análise
o desempenho
de código SQL
podeleva tempo. Considere esta instrução SQL simples:

Antes desta declaração pode ser executado, o servidor Oracle tem que descobrir o que isso
executá-lo.
significaPara
e como
começar, o que é empregados ? É uma mesa, um sinónimo, ou uma visão? Será que
ainda existe?
Depois, há o asterisco (*). Quais são as colunas que compõem a tabela de funcionários (se for um
mesa)? O usuário tem permissão para ver a tabela? As respostas a estas perguntas e muitas outras
têm de ser encontrados consultando o dicionário de dados.

DICA O algoritmo usado para encontrar SQL no cache de biblioteca é baseada na American
Standard Code
para os valores dos personagens que compõem a declaração Information Interchange (ASCII). o
menor
diferença (mesmo algo tão trivial como SELECIONAR em vez de select) significa que a declaração
não será
corresponder e, portanto, ser analisado novamente. Código que não é reutilizável é ruim para o
desempenho.
Tendo trabalhado para fora o que a afirmação realmente significa, o servidor tem de decidir a
executá-lo.
melhor forma
Existe de
um índice na coluna last_name? Se assim for, seria mais rápido para usar o índice
para
localize a linha ou para examinar a tabela inteira? Mais consultas no dicionário de dados são
necessários. Isto
perfeitamente possível
é para uma consulta de uma linha simples contra uma tabela de usuário para
gerar
o dicionário
dezenasdededados
consultas
e paracontra
a análise de uma declaração para levar muitas vezes mais do que,
executá-lo. O objetivo do cache de biblioteca do pool compartilhado é armazenar declarações em sua
eventualmente,
analisado
forma, pronto para execução. A primeira vez que uma declaração é emitida, ela tem de ser analisado
antessegunda
Pela da execução;
vez, ele pode ser executado imediatamente. Em um aplicativo bem projetado, é
possível quepodem ser analisados uma vez e executada milhões de vezes. Isso economiza uma
declarações
quantidade enorme de tempo.
O Dicionário de Dados Cache
O cache de dicionário de dados é muitas vezes referida como o cache de linha . Qualquer que seja o
termorecentemente
lojas que você preferir,
utilizado definições de objetos, incluindo descrições de tabelas, índices, usuários
e outros de metadados. Manter tais definições na memória na SGA, onde eles são imediatamente
definições
acessível a todas as sessões em vez de cada sessão de ter que lê-los repetidamente a partir dos dados
dicionário no disco, melhora o desempenho de análise. As definições de objetos em cache pode ser
usado para
muitas declarações
analisar diferentes.
O cache armazena dados dicionário definições de objetos de modo que quando as declarações
que tem
podeque
serser
analisado
analisado,
fast-sem ter que consultar o dicionário de dados. Considere o que acontece se
declarações são emitidas consecutivamente:
estes

Ambas as declarações devem ser analisados porque eles são declarações diferentes, mas
instrução
analisando
SELECT
o primeiro
terá carregado a definição da tabela Empregados e suas colunas para o
cache de dicionário de dados, de modo analisar a segunda instrução será mais rápido do que de outra
forma teria nenhum acesso dicionário de dados serão necessários.
sido porque

TIP Piscina colectiva ajuste é normalmente orientada para certificar-se de que o cache de biblioteca
é o direito Isto é porque os algoritmos Oracle usa para alocar memória no SGA são concebidos para
Tamanho.
favorecer
o cache de dicionário, por isso, se o cache de biblioteca está correta, o cache de dicionário já estará
correta.
A consulta SQL e PL / SQL resultado da função de cache
Em muitas aplicações, a mesma consulta é executado muitas vezes, por um ou outro na mesma
sessão ou muitos
diferentes sessões. Criando um cache de resultados permite que a loja servidor Oracle os resultados
de tais consultas
memória. em vez que a consulta é emitida, em vez de executar a consulta, o servidor pode
A próxima
recuperar o
resultado em cache. O mecanismo de cache de resultado é inteligente o suficiente para controlar se
as tabelas
qual contrafoi executado foram atualizados. Se isso aconteceu, os resultados da consulta será
a consulta
invalidada, e da próxima vez que é emitida a consulta, ela será repetida. Assim, não há perigo de
nunca receber um resultado em cache out-of-date.
O cache de resultados de PL / SQL utiliza um mecanismo similar. Quando uma função PL / SQL
valor
é executado,
de retorno pode
o seuser armazenado em cache, pronto para a próxima vez que a função é
executada.
para a função
Se ou
os as
parâmetros
tabelas que
passados
as consultas de função são diferentes, a função será reavaliado, mas
caso contrário, o valor em cache será devolvido.
Por padrão, o uso da consulta SQL e PL / SQL cache de resultados função é desativada, mas se
estiver ativado que muitas vezes pode melhorar drasticamente o desempenho. O cache está
programaticamente,
dentro doaocompartilhada
piscina; contrário das outras áreas de memória descrito anteriormente, ele não pagar DBAs algum
controle
eles podem
emespecificar
que um tamanho máximo.
Dimensionamento do pool compartilhado
Dimensionamento do pool compartilhado é fundamental para o desempenho. Deve ser grande o
código executado
suficiente para armazenar
e definições
em cache
de objetos
toda afrequentemente
frequência necessários (no cache de biblioteca e o
dicionário
cache), masdenão
dados
tão grande que ele armazena em cache as declarações que foram executadas apenas
uma vez.
piscina comum
um subdimensionado
aleija desempenho porque sessões de servidor de ter tido várias vezes para pegar o
espaço nele para
declarações análise, que são depois substituídas por outras declarações e, portanto, tem que ser
novamente quando eles estão reexecutado. Uma piscina comum de grandes dimensões pode
analisado
impactar
leva muitonegativamente
tempo para procurá-la.
sobre o desempenho,
Se a piscinaporque
comum é menor do que o tamanho ideal, o
degradar. No entanto, há um tamanho mínimo abaixo do qual as declarações irá falhar.
desempenho
Memória no pool compartilhado é alocado de acordo com um algoritmo menos recentemente
o espaço
usadasnecessidades
(LRU). Quandodo servidor Oracle no pool compartilhado, ele irá substituir o objeto que não
foi usada
por mais tempo. Se o objeto for mais tarde novamente necessário, terá que ser recarregado-
substituindo um outro objecto.
possivelmente
A piscina comum é alocado em tempo de inicialização de instância. Antes de liberar 9 i do banco
não de
é possível
dados, foi
redimensionar a piscina comum, posteriormente, sem reiniciar a instância de banco de
dados,
9 i prosseguimento
mas a partir deda que pode ser redimensionada para cima ou para baixo a qualquer momento.
Este redimensionamento
libertar 10 g em diante) automático,
pode ser manual
de acordo
ou (acom
partir
a carga
de de trabalho, se o mecanismo automático
foi activada.
A grande piscina
A grande piscina é uma área opcional que, se criado, será automaticamente usado por vários
que de outra forma ter memória do pool compartilhado. Um uso principal do grande piscina é por
processos
processos do servidor, descritos no Capítulo 14 na discussão do (multithreaded ou) servidor
compartilhado
arquitetura. servidores de execução paralela também vai usar a piscina grande, se houver. Na falta de
compartilhado
uma grande piscina, esses processos irão usar a memória do pool compartilhado. Isso pode causar
mau acontenção
para piscina comum. Se os servidores compartilhados ou servidores paralelos estão sendo usados,
umacriado.
ser grandeAlguns
piscinaprocessos
deve sempre
I / O também podem fazer uso da grande piscina, tais como os
processos
o Gerenciador
utilizados
de recuperação
pela quando ele é o backup em um dispositivo de fita.

A Piscina Java
A piscina Java é necessário somente se sua aplicação está indo para executar procedimentos
armazenados Java dentro do
base de dados. Ele é usado para o espaço de pilha necessário para instanciar os objetos Java. No
entanto, do
Opções uma série são
Oracle de escritos em Java, portanto, a piscina Java é considerado normal hoje em dia.
Note-senão
código queestá
Javaem cache na piscina Java; ele é armazenado em cache no pool compartilhado, da
émesma
armazenada
forma em
quecache.
o código PL / SQL

A Piscina Streams
Oracle Streams usa o pool de fluxos, que é uma ferramenta avançada que vai além do escopo do
OCP
exames ou este livro, mas para a completude uma breve descrição segue.
O mecanismo utilizado pelo Streams envolve extrair vectores de mudança de registo de refazer e
estesdereconstruir as declarações que foram executadas, ou declarações que teriam o mesmo efeito.
Estas declarações são executadas no banco de dados remoto. Os processos que extraem mudanças de
e os processos que se aplicam as mudanças precisam de memória; essa memória é a piscina
refazer
córregos. de
liberação A partir
bancode de dados 10 g em diante, é possível criar e redimensionar a piscina fluxos depois
instância
comece; esta criação e dimensionamento pode ser completamente automática. Com versões
anteriores,
definido noque
arranque
tinha que
e eraser
um tamanho fixo.

EXAME TIP O tamanho do compartilhada, grande, Java, e córregos piscinas é dinâmico e pode ser
gerenciados automaticamente.

Exercício 12-2: Investigar as estruturas de memória da instância Neste exercício, você vai correr
consultas para determinar o dimensionamento atual de várias estruturas de memória que compõem a
instância.
são os passos:
Aqui
1. Conecte-se ao banco de dados como usuário SYSTEM.
2. Use o comando SHOW SGA para exibir informações resumidas.
3. Mostrar a corrente, máximo e tamanhos mínimos dos componentes do SGA que podem ser
redimensionada dinamicamente, assim:

A Figura 12-3 mostra os resultados a partir de um banco de dados de demonstração. Note


que o cache
150MB, quede
consiste
buffer de
é uma piscina 134MB padrão mais um 16MB piscina I / O
compartilhado (esta última
componente é uma seção do cache usado para LOBs), e que nenhum componente ter sido
redimensionada desde a inicialização.

Figura 12-3 Exemplo de configuração PIG

4. Determinar quanta memória tem sido, e é, atualmente, alocado para PGAs.

Descrevem os processos de fundo


Os processos instância fundo são os processos que são lançados quando a instância é iniciada
e rodar até que esteja terminada. Cinco processos de fundo têm uma longa história com a Oracle e
são o primeiros descritos nas seções a seguir: Monitor do Sistema (SMON), Process Monitor
cinco
(PMON),
Escritor de banco de dados (DBW n ), escritor Log (LGWR), e processo de verificação (CKPT). Um
númeroforam
outros de introduzidos com os mais recentes lançamentos; notável entre estes estão
Monitor (MMON) e Gerenciador de memória (Mman). Há também alguns que não são essenciais,
Gerenciamento
vai existir na maioria dos casos. Estes incluem o arquivador (ARC n ) e processos Recoverer (Reco).
mas
Outros vão existir apenas se certas opções tenham sido habilitado. Este último grupo inclui os
necessário para RAC e Streams. Além disso, alguns processos existem que não são devidamente
processos
(Ou não estão documentados em tudo). Os processos descritos aqui são aqueles que cada candidato
documentado
OCP vaipara saber.
esperar
Primeiro,
Unix, todos osporém, umaOracle
processos variação
sãoplataforma
processos deve ser esclarecido
do sistema antes
operacional de discutir
separados, cadaprocessos.
um com Noum
Linux e
processo No
original
número. Windows, não há processo de um sistema operacional (chamado ORACLE.EXE) para o
conjunto
exemplo, e os processos Oracle executados como segmentos separados dentro desta um processo.

DICA Na versão 12 c , é de fato possível executar Oracle em um modelo de multithreaded (em vez
padrão modelo de multiprocessamento) como ele é executado no Windows. Isso é ativado com o
do
THREADED_EXECUTION parâmetro de instância, que está além do escopo do exame OCP.

SMON, o Monitor do Sistema


SMON inicialmente tem a tarefa de montagem e abrir um banco de dados. As etapas envolvidas
neste estão
descrito em detalhe no Capítulo 13 . Em breve, SMON monta um banco de dados por localizar e
validar o do banco de dados. Em seguida, ele abre um banco de dados por localizar e validar todos
controlfile
os arquivos
arquivos de de
log.dados
Umaevez
on-line
que o banco de dados é aberto e em uso, SMON é responsável por várias
tarefas domésticas
tarefas, como a recolha de espaço livre em arquivos de dados.

PMON, o Processo Monitorar


A sessão do usuário é um processo de usuário que está conectado a um processo servidor. O
processoa do
quando sessão
servidor
é criada
é lançado
e destruída quando a sessão termina. Uma saída ordenada de uma sessão
envolve o usuário fazer logoff. Quando isso ocorre, qualquer trabalho que estavam fazendo será
concluído
forma em ume seu processo servidor será encerrado. Se a sessão é encerrada em uma
ordenada,
forma desordenada (talvez porque o PC do usuário é reiniciado), a sessão será deixado em um estado
deve ser esclarecido. PMON monitora todos os processos do servidor e detecta qualquer problema
que
com o Se uma sessão terminou de forma anormal, PMON irá destruir o processo do servidor,
sessões.
voltar a sua
memória PGA para pool de memória livre do sistema operacional, e reverter qualquer transação
que pode ter sido em andamento.
incompleta

EXAME TIP Se uma sessão termina de forma anormal, o que acontecerá com uma transação ativa?
Será
ser revertida pelo processo de fundo PMON.

DBWn, o escritor de banco de dados


Lembre-se sempre que as sessões não fazer como um write regra geral para o disco. Eles escrevem
dados
de dados
(ouexistente)
alteraçõespara buffers na cache de memória intermédia de banco de dados. É o escritor
banco
os tampões
de dados
paraque
o disco.
posteriormente
É possível escreve
para uma instância ter vários escritores de banco de dados (até
um máximo de
100) que será chamado DBW0 para DBW9 e depois DBWa para DBWz; é por isso que DBW n se
refere aobanco
escritor “” de dados. Escritores além de 36 são nomeados BW36 para BW99. O número padrão é
um banco
escritor pordeoito
dados
processadores, arredondado para cima.

DICA Quantos escritores banco de dados que você precisa? O número padrão pode muito bem ser
correto.
mais podeadicionando
ajudar o desempenho, mas geralmente você deve olhar para a memória de sintonia em
primeiro disco
otimizar lugar.IComo regra geral,
/ O, perguntar porantes de há qualquer necessidade de disco I / O.
que não

DBW n escreve buffers sujos do cache de buffer do banco de dados para os arquivos de dados,
os tampões
mas nãocomo
escrever
eles se tornam sujas. Pelo contrário, ele escreve como poucos buffers, pois ele
pode
A idéia
se geral
safar.é que o disco I / O é ruim para o desempenho, por isso não fazê-lo a menos que ele
realmente
bloco em umé necessário.
tampão foiSe um por uma sessão, há uma possibilidade razoável de que será
gravado
regravados-a essa sessão ou um diferente. Por que escrever o buffer para o disco se ele pode muito
bem ser
sujou novamente no futuro próximo? O algoritmo DBW n utiliza para selecionar buffers sujos para
gravarlimpá-los)
(Que em disco irá seleccionar apenas tampões que não tenham sido usadas recentemente. Então, se
um buffer
muito é
ocupado porque as sessões são ler ou a escrever-lo repetidamente, DBW n não vai gravá-lo
emvezes.
às disco Poderia
para haver centenas ou milhares de gravações para um buffer antes DBW n limpa-lo.
Pode ser que em um cache de buffer de um milhão de buffers, cem mil deles estão sujas, mas DBW
isto
pode escrever apenas algumas centenas deles para o disco de cada vez. Estas serão as poucas
n
centenas
sessão foique nenhumaem por algum tempo.
interessado

TIP EXAME O que fará com que DBW n escrever? A resposta é não buffers livres, muitas buffers
um de três segundos de tempo limite, ou um posto de controle.
sujos,

DBW n escreve de acordo com um algoritmo muito preguiçoso: tão pouco quanto possível e tão
Quatro
raramente
circunstâncias
quanto possível.
irá causar DBW n escrever: há buffers livres, muitas buffers sujos, um de três
tempo limite, e quando há um posto de controle.
segundos
A primeira circunstância é quando não há buffers livres. Se um processo servidor precisa copiar
paraumo cache
blocode buffer do banco de dados, ele deve encontrar um tampão livre , que é um tampão
que não é nem
(Atualizado e ainda
suja não escrito de volta para o disco), nem preso (a tampão preso é aquele que está
sendo usado por
outra sessão naquele momento). Um tampão sujo não devem ser substituídas porque se fosse, o
dados seriam perdidos, e um buffer preso não pode ser substituído porque a memória do sistema
alterado
mecanismos de proteção não permitirá isso. Se um processo de servidor leva “muito longo”
operacional
(conforme
A Oracle internamente)
determinado pela
para encontrar um buffer livre, ele sinaliza DBW n escrever alguns buffers
sujos no disco. Uma vez que este
é feito, eles vão estar limpa-e, portanto, livre e disponível para uso.
A segunda circunstância é quando há muitos buffers sujos ( “muitos” ser mais
limiar interno). No processo de um servidor pode ter tido um problema encontrar um buffer livre,
mas no geral,
poderia haver um grande número de buffers sujos, o que fará com DBW n para escrever alguns deles
paraAoterceira
disco. é a circunstância de três segundos de tempo limite. A cada três segundos, DBW n vai
tampões.
limparNa alguns
prática, este evento pode não ser significativa em um sistema de produção porque os
circunstâncias descritas anteriormente serão forçando as gravações, mas o tempo de espera significa
dois
que,
o sistema
mesmo estiver
se ocioso, o cache de buffer do banco de dados acabará por ser limpo.

Em quarto lugar, pode haver um posto de controle solicitado. As três razões já expostas causará
paraDBW n um número limitado de buffers sujos para os arquivos de dados. Quando um ponto de
escrever
verificação
são escritos.ocorre, todos os buffers sujos
Escrevendo tampões para os primeiros três razões mencionadas é referido como um ponto de
ou como
verificação
o avanço
incrementais
da posição de ponto de verificação periódica . Isso é tudo o que deve acontecer
no marcha
de curso denormal e é optimizada de modo a que tampões serão disponibilizados conforme
necessário, sem
desempenho, salientando
impactar o sistema I / O.
O único momento em que um ponto de verificação completo é absolutamente necessário é
e o exemplo
quando oébanco
desligado
de dados
(a descrição
é fechado
completa desta sequência é dada no capítulo 13 ). UMA
checkpoint escreve todos os buffers sujos no disco; esta sincroniza a cache da memória intermédia
com os arquivos
sincroniza o exemplo,
de dados
comea base de dados. Durante o funcionamento normal, os arquivos de dados
estão sempre
encontro. Elesfora
podem
de estar faltando alterações (comprometidos e não comprometidos). Isso não
importa,
cópias deporque
blocosono buffer cache estão atualizados, e são estes que as sessões de trabalhar. mas em
desligamento, é necessário escrever tudo no disco. pontos de verificação automáticos ocorrer
somente
mas um posto
em desligamento,
de controle pode ser forçado a qualquer momento com esta declaração:

O ponto de verificação descrito até agora é um ponto de verificação completa. Checkpoints


escrever
parciais
todosqueosforçam
buffersDBW
sujosncontendo
a blocos de apenas um ou mais arquivos de dados, ao invés
do todode dados, ocorrem mais frequentemente, por exemplo, quando um arquivo de dados ou espaço
banco
de tabela é écolocado
tablespace colocadooffline,
em modoquando
de backup,
um ou quando a tabela é feita somente leitura. Estes são
menos
de drástica
postos de controle completos e ocorrem automaticamente sempre que o respectivo evento
acontece.
EXAME TIP Existe um posto de controle completo sobre interruptor de log? Não, não tem havido
desde oincluindo
DBAs, lançamento
alguns
8 i . que
Muitos
deveriam conhecer melhor, nunca aprenderam essa mudança de
comportamento
aconteceu que anos.
há muitos

Para concluir, DBW n escreve sobre uma muito preguiçosa algoritmo de tão pouco quanto
possível,
possível
exceto
e tãoquando
raramente
um posto
como de controle completa ocorre. Então, todos os buffers sujos são
gravados em disco tão rápido quanto
possível.

LGWR, o escritor Log


LGWR grava o conteúdo do buffer de log nos arquivos de log on-line no disco. Uma gravação da
memória
os arquivos
intermédia
de log redo
de registo
online édemuitas vezes referida como rubor o buffer de log.
Quando uma sessão faz qualquer alteração (por executar INSERT, UPDATE, ou DELETE) para
blocos no cache de buffer do banco de dados, antes de aplicar a mudança para o bloco que escreve a
vector que está prestes a aplicar para o buffer de log. De modo que nenhum trabalho é perdido, esses
mudança
vetores deem
gravados mudança
disco comdeveapenas
ser o mínimo de atraso. Para este fim, o LGWR fluxos o conteúdo da
memória
ao refazerintermédia de registo
on-line arquivos em disco de log em tempo quase real. E quando uma sessão emite um
COMMIT,
LGWR escreve
a em tempo real; a sessão trava enquanto LGWR escreve o buffer para o disco. Só
então é o
transação registrada como comprometido e, portanto, não reversível.
Três circunstâncias irá causar LGWR para liberar o buffer de log: se uma sessão emite um
o tampão
COMMIT,de registo
se é um terço completo, e se DBW n é de cerca de escrever buffers sujos.
A primeira circunstância é o write-on-commit. Para processar um commit, as inserções processo
um do cometer
servidor
ficha para o buffer de log. Será, então pendurar enquanto LGWR libera o buffer de log
para o disco.
quando Somentefoi concluída é uma mensagem de commit-complete voltou para a sessão, eo
esta gravação
processo pode então continuar a trabalhar. Esta é a garantia de que as transações nunca será perdido.
servidor
change vector para uma transação confirmada estará disponível no log de redo no disco e, portanto,
Cada
ser aplicado a DATAFILE backups. Portanto, se o banco de dados é cada vez danificado, ele pode
pode
ser restaurado
backup, e todoaopartir de feito desde o backup foi feito pode ser refeita.
trabalho
Em segundo lugar, quando o buffer de log é um terço completo, LGWR será liberado no disco.
Isso é sobre
desempenho. Se o tampão de registo é pequena (como normalmente deve ser), este disparador um
terço cheio
LGWR escrever
irá forçar
o buffer para o disco em tempo quase real, mesmo que ninguém está a cometer
transações.
tampão paraOmuitas
registro
aplicações serão de tamanho ideal em apenas alguns megabytes. O aplicativo irá
gerar refazer o suficiente para encher um terço do presente numa fracção de segundo, de modo
LGWR será
transmitir osforçado
vetores ade mudança para o disco de forma contínua, em tempo quase real. Então,
quando umahaverá
COMMIT, sessãoquase
faz nada para escrever, assim que o COMMIT irá completar quase
instantaneamente.
Em terceiro lugar, quando DBW n precisa escrever buffers sujos do cache de buffer de banco de
sinalizará
dados LGWR
para os arquivos
para liberar
de dados,
o bufferque
de log nos arquivos de log redo online. Isso é para garantir
que ele vai
sempre será possível reverter uma transação não confirmada. O mecanismo de reversão de transação
étotalmente explicado no Capítulo 6 . Por enquanto, você só precisa saber que é perfeitamente
possível para
escrever uma DBW
transação
n para
não confirmada nos arquivos de dados. Isso é bom, desde que os dados
necessários
reverter a transacção
para desfazer
é garantido para estar disponível. Geradora anular de dados também gera
vetores, e porque estas serão nos arquivos de log redo antes que os arquivos de dados são
mudança
atualizados,
necessária para os dados deuma
reverter undotransação (caso seja necessário) pode ser reconstruído se necessário.
Note que pode-se dizer que há uma de três segundos de tempo limite que faz com que LGWR
tempo escrever. Na verdade,
de espera é em DBW a n . No entanto, porque LGWR será sempre escrever pouco antes DBW
én um
, emtempo
vigor dehá espera de três segundos em LGWR bem.

EXAME DICA Quando vai LGWR liberar o buffer de log para o disco? Ele acontece no COMMIT,
quando éo um terço completo e pouco antes DBWn escreve.
tampão
CKPT, o processo de verificação
O CKPT mantém sinais de onde no fluxo de refazer a posição checkpoint incremental é e, se
necessário, instrui DBW n para escrever alguns tampões sujas, a fim de empurrar a posição do ponto
de verificaçãoA posição do ponto de verificação atual é o ponto no fluxo de redo em que a
progressivo.
recuperação
em deve
caso de um começar
acidente de instância. CKPT atualiza continuamente o controlfile com o ponto de
verificação atual
posição.

MMON, o Monitor de Gerenciamento


MMON é o processo de habilitação para muitas das capacidades de auto-monitorização e auto-ajuste
da
base de dados. A instância de banco de dados reúne um grande número de estatísticas sobre
actividade
Estas estatísticas
e desempenho.
são acumuladas na SGA e seus valores atuais podem ser interrogados por meio da
consultas SQL contra várias visões V $. Para o ajuste de desempenho e também para análise de
emissão
tendênciashistóricos,
relatórios e é necessário para salvar essas estatísticas para armazenamento a longo prazo.
MMONaregularmente
padrão, (pelo estatísticas do SGA e escreve-las ao dicionário de dados, onde
cada hora) captura
eles podem ser armazenados indefinidamente (embora, por padrão, eles são mantidos por apenas oito
dias).
Toda vez MMON reúne um conjunto de estatísticas (conhecido como um snapshot ), também
Diagnostic
lança o Monitor Automatic Database (ADDM). O ADDM é uma ferramenta que analisa banco
de dados usando um sistema especialista desenvolvido ao longo de muitos anos por muitos DBAs.
atividade
Estuda
(Por padrão,
dois instantâneos
os instantâneos atuais e anteriores) e faz observações e recomendações
em relação ao desempenho durante o período coberto. Capítulo 18 descreve o uso de ADDM (e
ferramentas) para ajuste de desempenho. Bem como a recolha instantâneos, MMON monitora
outros
continuamente
banco de dadosoe a instância para verificar se todos os alertas devem ser levantadas.

EXAME DICA Por padrão, MMON reúne um instantâneo e lança o ADDM cada hora.

MMNL, o gerenciamento luz do monitor


MMNL é um processo que auxilia o MMON. Há momentos em que atividade programada de
MMON não
suficiente. Por
é exemplo, MMON libera informação estatística acumulado no SGA ao banco de dados
de acordo com uma programação (por padrão, a cada hora). Se os buffers de memória usado para
acumular estepreencha antes MMON é devido a lavá-los, MMNL vai assumir a responsabilidade por
informações
lavagem do
dados.

Mman, o Gerenciador de Memória


Mman pode automatizar completamente o gerenciamento de memória. Todo o DBA precisa fazer é
definir
alvo para
uma
o uso
estratégia
de memória,
global e Mman vai observar a demanda por memória PGA e memória SGA
e depois alocar memória para sessões e estruturas PIG, conforme necessário, mantendo o total de
memória alocada dentro de um limite definido pelo DBA.

DICA A automação do gerenciamento de memória é um dos grandes avanços técnicos da tarde


releases, automatizar uma grande parte do trabalho do DBA e dando enormes benefícios no
desempenho
utilização dose recursos. Mman faz isso melhor do que você pode.

LREG, o Processo de Registro Listener


Uma instância de banco de dados tentará se registrar com um ouvinte de banco de dados. Isso é para
permitir
conectar que
via oosouvinte.
usuáriosNum ambiente avançado, tal como um banco de dados agrupados com várias
casos que oferecem muitos serviços, LREG também vai atualizar o ouvinte com informações sobre
carga de trabalho e desempenho. Isso permite que o ouvinte a sessões diretas de forma inteligente
instâncias. Em versões anteriores, esta função foi realizada pelo processo PMON, mas na versão 12
para apropriado
processo
c um dedicada (isto é, LREG) foi adicionado para fazer isso.

ARC n , o arquivador
Este é um processo opcional, tanto quanto o banco de dados está em causa, mas geralmente é um
processo
o negócio.necessário
Sem um ou para
mais ARC n processos (pode haver até 30, com o nome ARC0, ARC1, e
assim por diante), é possível perder dados. O processo e o propósito de lançar ARC n para criar
registro de
arquivos é descrito
arquivamento
em detalhes no Capítulo 22 . Por enquanto, é apenas necessário um resumo.
Todos os vectores de alteração aplicada a blocos de dados são escritos para a memória
as mudanças)
intermédiaede depois
registo
para(pela
o on-line
tomadaarquivos
de sessões
de log redo (pelo LGWR). Os arquivos de log redo
on-line são
tamanho dee número. Depois de terem sido preenchidos, LGWR irá substituí-los com mais dados
fixo
detempo
O redo. que deve decorrer antes que isso aconteça é dependente do tamanho e número do registro
arquivos e a quantidade de actividade DML (e, por conseguinte, a quantidade de refazer gerado)
on-line
contradeodados. Isto significa que as lojas online de redo log mudar vetores somente para atividade.
base
Para
preservar um histórico completo de todas as alterações aplicadas aos dados, os arquivos de log on-
line deve
eles estãoser
cheios
copiado
e antes
comode serem reutilizados. O ARC n é responsável por fazer isso. Providenciou
estas cópias, conhecido como arquivo de arquivos de log redo, estão disponíveis, será sempre
que
possível
de qualquer
recuperar
dano ao banco de dados, restaurando backups arquivo de dados e aplicação de vetores
de
extraídos de para
mudança todoseles
os arquivos de log arquivados gerados desde os backups foram feitas.

EXAME TIP LGWR grava os arquivos de log on-line; ARC n lê-los. Durante o funcionamento
normal, nenhum
processos de tocá-los
outroem tudo.

DICA O progresso da ARC n processos eo estado dos destinos para os quais eles estão escrevendo
deve ser monitorado. Se o arquivamento falhar, o banco de dados acabará por travar. Esse
monitoramento
através do sistema
pode
deser
alerta.
feito

RECO, o Processo Recoverer


A transação distribuída é uma transação que envolve atualizações para dois ou mais bancos de
Transações distribuídas são projetados por programadores e operar através de links de banco de
dados.
dados. Considerar

Neste exemplo:

A primeira actualização aplica-se uma linha no banco de dados local; a segunda se aplica a uma
bancolinha
de em
dados
umidentificada
controle remoto
pelo link de banco de dados DEV. O comando COMMIT instrui ambos
os bancos de
confirmar a transação,
dados paraque consiste em ambas as declarações. Transações distribuídas exigem um
fases . O comprometer em cada banco de dados deve ser coordenado; se vier a falhar eo outro
dois
eram para ter sucesso, o total de dados estaria em um estado inconsistente. A confirmação de duas
fases base
cada prepara
de dados, instruindo seus LGWRs para limpar a memória intermédia de registo para o
discoé (a
isto confirmado,
primeira fase),
a transação
e uma vez
é sinalizado como comprometida em todos os lugares (na segunda
fase).
der errado
Se alguma
em qualquer
coisa lugar entre as duas fases, reco toma medidas para cancelar a cometer e
reverter
o trabalho em todas as bases de dados.

Alguns outros processos em segundo plano


É improvável que para além dos já descritos processos serão examinados, mas para
completude
4 mostra uma esta secçãoque
consulta descreve os processos
lista todos restantes
os processos habitualmente
em execução presentes
em uma emem
instância uma
uminstância.
sistema
Figura
podem 12-
Linux. Muito
existir mais
processos, dependendo de certas opções a ser activada, mas os mostrados na figura vai
estar presente na maioria dos casos.

Figura 12-4 Os processos de fundo tipicamente presentes numa única instância

Exercício 12-3: investigar os processos em execução no seu Instância Neste exercício, você vai
correr
consultas para ver o que processos em segundo plano está em execução no seu exemplo. Você pode
usar o SQL
Desenvolvedor ou SQL * Plus. Aqui estão os passos a seguir:

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Determine quais processos estão em execução e quantos de cada um.

Essas consultas dará resultados semelhantes. Cada processo deve ter uma sessão (até mesmo
processos em segundo plano), e cada sessão deve ter um processo. Os processos que podem
o
várias vezes terá um sufixo numérico, exceto para os processos de apoio sessões de usuário,
ocorrer
que todos têm o mesmo nome.
3. Investigue quantos processos podem estar em execução.
O v $ view bgprocess tem uma linha para cada processo possível. Processos que são
running ter um endereço, que é uma junção da coluna para a visão v $ process.
realmente

4. Observe o lançamento de processos do servidor como sessões são feitas através da contagem
do processos
número deservidor (Linux ou qualquer plataforma Unix) ou o número de threads Oracle (em
Janelas). A técnica é diferente nas duas plataformas. No Linux / Unix, Oracle
processos são processos do sistema operacional separados, mas no Windows eles são tópicos
um processo do sistema operacional.
dentro
No Linux, execute este comando a partir de um prompt do sistema operacional:

Isto irá contar o número de processos em execução que têm a string LOCAL em seu nome.
Isso incluirá todos os processos do servidor sessão.

Lançar uma sessão SQL * Plus e, em seguida, execute novamente o comando anterior. Use o
lançar
comando
um shell
deoperacional
acolhimentode dentro da sessão SQL * Plus. Você vai ver que o número de
processos aumentou. Sair da sessão, e você verá que o número caiu novamente. Figura
12-5 demonstra isso.

Figura 12-5 processos do servidor sessão de Contagem

Observar na figura como o número de processos de muda de 3 para 4 e vice-versa; a


diferença é o lançamento e de terminação do processo de servidor de suporte a sessão SQL * Plus.
No Windows, abra o Gerenciador de Tarefas. Configurá-lo para mostrar o número de tópicos
dentro de cada
processo, seguindo estes passos: No menu Exibir, selecione a opção Selecionar Colunas e selecione
o
A contagem
Figura 12-6 ,da linha
este caixa de seleção.
é actualmente a 33. Olhe para o processo ORACLE.EXE, e anote o número de
threads. Dentro

Figura 12-6 Exibindo a contagem da linha dentro da imagem executável do Oracle

Inicie uma nova sessão com a instância, e você verá o incremento contagem da linha. Saia da
sessão, e ele vai diminuir.

Explicar a relação entre lógica e física


estruturas de armazenamento
O banco de dados Oracle fornece completa abstração do armazenamento lógico da física. o
armazenamento de dados lógica é em segmentos . Existem vários tipos de segmento; um segmento
típico é umasão
segmentos tabela.
armazenados
o fisicamente em arquivos de dados. A abstração do armazenamento
lógico do físico é realizado através de tabela. As relações entre a lógica e física
armazenamento
estruturas, bem como as suas definições, são mantidos no dicionário de dados.
Você pode encontrar um tratamento completo de armazenamento de dados, lógica e física, no
Capítulo 15 .

As Estruturas de banco de dados físico


Três tipos de arquivos compõem um banco de dados Oracle, além de alguns outros que existem
eexternamente ao banco
são, estritamente de dados
falando, opcional. Os arquivos necessários são o controlfile, os on-line arquivos
edeoslog
arquivos
redo, de dados. Os arquivos externos que normalmente estarão presentes (há outros,
necessários
opções) são para
o arquivo
avançado
de inicialização parâmetro, o arquivo de senhas, o arquivo de redo arquivos de
elog
arquivos
e o log de rastreamento.

TIP EXAME O que três tipos de arquivos devem estar presentes em um banco de dados? O
controlfile,e qualquer
arquivos, o redo online
número de arquivos de dados de log.
o cONTROLFILE
Primeiro, um ponto de terminologia: Alguns DBAs vai dizer que um banco de dados pode ter várias
controlfiles,
enquanto que os outros vão dizer que tem um controlfile, dos quais pode haver várias cópias. Este
seguirá o último terminologia. A documentação do Oracle é inconsistente.
livro
O controlfile é pequena, mas vital. Ele contém ponteiros para o resto do banco de dados,
locais
incluindo
da refazer
o on-line arquivos, os arquivos de dados, e mais recentemente os arquivos de log do
arquivodededados
banco log (se
está
o no modo de registro de arquivamento). Ele também armazena informações
necessárias
tais para manter
como vários númerosa integridade
de sequênciadocríticos
banco de dados de tempo, por exemplo. Se a ferramenta
e marcas
Recovery
está sendoManager
usado para backups, os detalhes desses backups também serão armazenados no
controlfile.normalmente
controlfile o haverá mais do que alguns megabytes de tamanho, mas você não pode
sobreviver sem ele.
Cada banco de dados tem um controlfile, mas um bom DBA vai sempre criar várias cópias do
controlfile de modo que se uma cópia está danificado, o banco de dados irá sobreviver. Se todas as
cópias
são perdidos,
do controlfile
é possível (embora talvez desajeitada) para se recuperar, mas você nunca deve
encontrar-se
essa situação.em Você não tem que se preocupar em manter cópias multiplexados do controlfile
sincronizada-Oracle vai cuidar disso. Sua manutenção é automática; seu único controle é como
muitas cópias de ter e onde colocá-los.
Se você receber o número de cópias ou o seu local errado no momento da criação do banco de
remover
dados, cópias
você mais
pode tarde
adicionar
ou movê-los.
ou No entanto, você deve ter em mente que qualquer
operações exigirão tempo de inatividade, por isso é uma boa idéia para obtê-lo logo no início. Não
há certo
ou resposta errada ao determinar quantas cópias de ter. O mínimo é um; o máximo
possível é oito. Todas as organizações devem ter um manual normas DBA que afirma algo como
“Todos os bancos de dados de produção terá três cópias do controlfile, em três dispositivos
separados”
sendo um número
(três escolhido apenas para fins ilustrativos, mas um número com o qual muitas
organizações
feliz). estão de tais orientações são no lugar, alguém deve escrever-los (e talvez o “alguém”
Na ausência
deveria ser você). Não há nenhuma regra que diz que duas cópias são muito poucos ou sete cópias
são normas
muitos; só há corporativos, e o trabalho do DBA é garantir que os bancos de dados estão em
conformidade com estes
padrões.
Dano a qualquer cópia controlfile fará com que a instância de banco de rescindir imediatamente.
há nenhuma
Lá maneira de evitar isso. A Oracle Corporation não permitir operar um banco de dados
com menos do que o
número de controlfiles solicitado.

O Redo Log Files on-line


A redo log armazena uma corrente contínua, em ordem cronológica de cada vector de alteração
aplicada
base de dados.
ao Este será o mínimo de informações necessárias para reconstruir ou refazer, todo o
que tem sido feito. Se um arquivo de dados (ou todo o banco de dados) está danificado ou destruído,
trabalho
estas mudanças
vetores podem ser aplicados a arquivo de dados backups para refazer o trabalho, trazendo-os para a
frente no tempo
momento em queatéocorreu
o o dano. O log redo consiste em dois tipos de arquivos: os arquivos de log
de redo
(Que sãoon-line
obrigatórios) e os arquivos de log de arquivo (que são opcionais).
Cada banco de dados tem pelo menos dois arquivos de log redo online, mas como com o
criacontrolfile,
várias cópias
umdebom
cadaDBA
arquivo de log redo online. O redo log on-line consiste em grupos de on-
redo arquivos de log, cada arquivo a ser conhecido como um membro. Um banco de dados Oracle
line
requer
de pelopelo menos
menos dois grupos
um membro de cada um a funcionar. Você pode criar mais de dois grupos de
razões e mais de um membro por grupo de segurança (como a velha piada: “Este não é apenas de
desempenho
segurança; é a segurança do emprego”). A exigência de um mínimo de dois grupos é para que um
dados
grupo pode
aceitar as mudanças
ser atuais enquanto o outro grupo está sendo feito backup (ou arquivados , para
usar a correcto).
termo

EXAME TIP Cada banco de dados deve ter pelo menos dois grupos de arquivo de log redo online
para funcionar.
grupo deve ter pelo
Cadamenos dois membros para a segurança.

Um dos grupos é o actual grupo. As alterações são gravadas no arquivo de log redo online atual
grupo por LGWR. Como as sessões do usuário atualizar dados no cache de buffer do banco de
dados, eles
alteração mínima
tambémvectores
escrever
para
o o buffer de redo log. LGWR libera continuamente esse buffer para os
arquivos que
compõem o grupo arquivo de log redo online atual. Os arquivos de log são tamanho fixo; portanto,
eventualmente,
tornando-se os arquivos
o grupo atual vai encher. LGWR, então, realizar o que é chamado de um interruptor de
faz com
log , que que a segunda corrente grupo e começa a escrever a isso. Se seu banco de dados está
configurado
o ARC n processo
adequadamente,
(s) será então de arquivo (na verdade, cópias de segurança) dos membros do
arquivoQuando
grupo. de log tornando-se
o segundo grupo
o primeiro
enche, LGWR mudará de volta para o primeiro grupo, tornando-se
atual e
substituí-lo; ARC n vai então arquivar o segundo grupo. Assim, os grupos de arquivos de log de redo
on-line (eos membros tornando-se) são usados de forma circular, e cada chave de registo irá
portanto,
gerar um arquivo de log redo arquivo.
Tal como acontece com o controlfile, se você tiver vários membros por grupo (e você deve!),
se preocupar
Você não emtemmanter-los sincronizados. LGWR irá garantir que ele escreve para todos eles, em
mantendo-os idênticos. Se você perder um membro de um grupo, desde que você tenha um
paralelo,
sobrevivente
membro, o banco vai continuar a funcionar.
O tamanho eo número dos seus grupos de arquivo de log são uma questão de sintonia. Em geral,
você vai
tamanho escolher
adequado uma quantidade de atividade que se antecipa. O tamanho mínimo é de 50MB,
para
mas alguns
bases de dados
ativos
terão de levantar esta a vários gigabytes se eles não são para preencher a cada poucos
minutos.
banco de Um
dados
ocupado
pode gerar megabytes de refazer um segundo, enquanto um banco de dados em
grande parte estática pode gerar
apenas alguns megabytes de uma hora. O número de membros por grupo será dependente de qual o
nível de a falhas é considerada adequada, e é uma questão a ser documentado em padrões
tolerância
No entanto, você não precisa se preocupar com isso no momento da criação do banco de dados. Você
corporativos.
pode mover
refazer os arquivos
o seu site
de log em volta, adicionar ou soltá-los, e criar aqueles de diferentes tamanhos
comotarde.
mais você agradar
Tais operações
a qualquer
são momento
realizadas “online” e não requerem tempo de inatividade; eles são,
portanto,
transparente para os usuários finais.

os arquivos de dados
O terceiro tipo arquivo necessário fazer-se um banco de dados é o arquivo de dados. No mínimo,
você devedeterdados
arquivos três (todos a ser criado na criação do banco de dados de tempo), um para cada espaço
de tabela SYSTEM
armazena (que
o dicionário de dados), a tabela SYSAUX (que armazena dados que é o auxiliar de dados
dicionário), ea tabela de undo (que armazena os segmentos de desfazer necessárias para proteger
transações). Você terá muito mais do que quando seu banco de dados vai viver e muitas vezes irá
um pouco mais para começar.
criar
Arquivos de dados são o repositório de dados. Seu tamanho e números são efetivamente
bancoilimitado.
de dadosUm pode
pequeno
ter apenas meia dúzia de arquivos de dados de apenas algumas centenas de
megabytes
banco cada.poderia
de dados A maiorter milhares de arquivos de dados, cujo tamanho é limitado apenas pela
capacidade
sistema operacional
do hospedeiro
e hardware.
Os arquivos de dados são as estruturas físicas visíveis para os administradores do sistema.
o repositório
Logicamente,
para eles
os segmentos
são contêm dados de utilizador que os programadores ver e também para
segmentos que compõem o dicionário de dados. Um segmento é uma estrutura de armazenamento de
o
dados;
são tabelas
segmentos
e índices.
típicos
Arquivos de dados pode ser renomeado, redimensionado, movido, adicionado,
aouvida
cairútil
emdoqualquer
banco demomento da lembre-se que algumas operações em alguns arquivos de dados
dados, mas
pode exigir
tempo de inatividade.
Ao nível do sistema operativo, um arquivo de dados é constituído por uma série de blocos de
Internamente,
sistema operativo.
arquivos de dados são formatados em blocos da Oracle . Estes blocos são numeradas
dentro de cada ficheiro de dados. O tamanho do bloco é fixada quando o arquivo de dados é criado, e
consecutivamente
na maioria
será o mesmo dasaocircunstâncias,
longo de todo o banco de dados. O tamanho do bloco é uma questão para a
sintonização
(Com limites,e dependendo
pode variar da plataforma) de 2KB até 32KB. Não há relação necessária
entre o tamanho do bloco Oracle e o tamanho do bloco sistema operacional.
A Figura 12-7 mostra o modelo de armazenamento Oracle na forma de um diagrama de
coluna
entidade-relacionamento.
da esquerda mostra as oestruturas lógicas próximos para as estruturas físicas. Para completar, o
Também mostra as entidades ASM nas duas colunas mais à direita, que são abrangidos no Capítulo 3
diagrama
. Esses
uma alternativa
são para o armazenamento do sistema de arquivos discutido aqui.
Figura 12-7 O modelo de armazenamento do Oracle

DICA Muitos DBAs gostam de combinar com o tamanho do bloco de sistema operacional para o
tamanhode
motivos dodesempenho,
bloco Oracle.osPara
blocos do sistema operacional nunca deve ser maior do que os blocos da
Oracle,
não mas
há nenhuma razão para não tê-los menores. Por exemplo, ter um tamanho de 1 KB bloco
operacional
tamanho do ebloco
uma 8KB Oracle é perfeitamente aceitável.

Dentro de um bloco é uma seção de cabeçalho, uma área de dados e, possivelmente, algum
contém
espaço
informações
livre. A secção
como de
o diretório
cabeçalhode linha, que lista a localização dentro da área de dados do
linhas no bloco (se o bloco está a ser utilizado para um segmento de mesa) e também informações da
linha
há umadetransação
bloqueio (ou
se várias transações concorrentes) que trabalham nas linhas do bloco. Os dados
área contém os dados em si, tais como linhas, se é parte de um segmento de mesa, ou chaves de
índicedeseum
parte o bloco
segmento
é de índice.

EXAME TIP processos do servidor lidos dos arquivos de dados; DBW n grava arquivos de dados.

Arquivos de outro banco de dados


Estes arquivos existem fora do banco de dados. Eles são necessários para fins práticos, mas não são,
falando, parte do banco de dados.
estritamente

• arquivo de parâmetro Instância Quando uma instância Oracle é iniciado, as estruturas PIG
construir
memória eme os processos de fundo iniciar de acordo com as configurações no arquivo de
parâmetro.
o único arquivo
Isto éque precisa existir para iniciar uma instância. Há várias centenas de
parâmetros,
apenas uma émas
necessária: o parâmetro DB_NAME. Todos os outros têm padrões. Portanto, o
arquivo de parâmetro pode ser bastante pequena, mas deve existir.
• arquivo de senhas Usuários estabelecer sessões através da apresentação de um nome de
usuário
servidor
e senha.
autentica
O oraculo
estes contra as definições do usuário armazenados no dicionário de dados.
dicionário
Os dados é um conjunto de tabelas no banco de dados; é, portanto, inacessível se o banco de
aberto.
dados nãoHá éocasiões em que um usuário precisa ser autenticado antes de o dicionário de dados
édisponíveis, como quando eles precisam para começar o banco de dados ou mesmo para criá-
lo. um link
arquivo de senhas
externoé um meio de fazer isso. Ele contém um pequeno número de (tipicamente
menos
uma dúzia)
do quenomes
metade
de usuários e senhas que existem fora do dicionário de dados que podem
ser usados
conectar para instância antes do dicionário de dados está disponível.
a uma
• Arquivo refazer arquivos de log Quando um arquivo de log redo online enche, os ARC n
processo
o bancocopia-o
de dados
para
para
fora
um arquivo de log arquivo de redo. Uma vez feito isso, o arquivo de
log
o banco
não édemais
dados.
parte
É,do
no entanto, essencial que seja sempre necessário para restaurar um
backup
A Oracledofornece
arquivoinstalações
de dados, epara gerir os arquivos de log arquivados redo.
• Registro de alertas e arquivos de rastreamento O log de alerta é um fluxo contínuo de
mensagens
operaçõesrelativas
críticos certa
que afectam o exemplo e a base de dados. Nem tudo é registrado; só
eventos que são considerados muito importantes (como inicialização e desligamento),
alterações físicas
estruturas no do banco de dados, e alterações nos parâmetros que controlam o exemplo.
arquivos de rastreamento são gerados por processos em segundo plano quando detectam
condições
às de erro
vezes para e certas ações.
relatar

As Estruturas de banco de dados lógico


As estruturas físicas que compõem um banco de dados são visíveis como arquivos do sistema
operacional para oSeus
administradores. seu usuários
sistema ver estruturas lógicas, como tabelas. Oracle usa o termo segmento de
descrever qualquer estrutura que contém dados. Um segmento típico é uma tabela, que contém as
linhas demais
existem dados,
de mas
uma dúzia de possíveis tipos de segmento em um banco de dados Oracle. De
particular
fins de exame)
interesse
são segmentos
(por de mesa, segmentos de índice, e desfazer segmentos, todos os quais
investigada em detalhe mais tarde. Por enquanto, você não precisa saber mais do que isso tabelas
são
contêm
de informação,
linhas que os índices são um mecanismo para dar acesso rápido a qualquer linha particular,
e que segmentos são estruturas de dados usadas para armazenar a informação que pode ser
desfazer
necessária
rolar para trás,
paratodas
inverter,
as transações
ou que não querem tornar permanente.
Assim, os administradores de sistema ver arquivos de dados físicos e programadores ver
abstrai
segmentos
a lógicalógicos.
de armazenamento
Oráculo a partir do armazenamento físico por meio da tabela , que é
um conjunto de um ou mais segmentos e fisicamente um conjunto de um ou mais arquivos de dados.
logicamente
Coloquedeem
termos análise relacional, há uma relação de n para n entre os segmentos e os arquivos de dados.
Uma tabela pode ser cortado em vários arquivos de dados, e um arquivo de dados pode conter
pedaços de muitas mesas. De
inserir a entidade de tabela entre os segmentos e os arquivos, a Oracle resolve este many-to-many
relação.

TIP EXAME O espaço de tabela SYSAUX deve ser criado no momento da criação do banco de
dados. Se vocêserá
especificá-lo, nãocriado por padrão.

Um segmento irá consistir de um número de blocos. Arquivos de dados são formatados em


blocos
blocos,
são atribuídos
e estes a segmentos como os segmentos de crescer. Porque o gerenciamento do espaço
de umum
seria bloco
processo
de cada
demorado,
vez blocos são agrupados em extensões. Uma medida é uma série da
blocos que são consecutivamente numeradas dentro de um arquivo de dados, e os segmentos de
Oracle
crescer por ter
adicionados novas
a eles. extensões
Estas extensões não necessitam de ser adjacentes uns aos outros ou mesmo no
mesmo
vir de qualquer
ficheiro arquivo
de dados;deeles
dados
podem
que faz parte do espaço de tabela no qual o segmento reside.
Figura 12-7 , mostrado anteriormente, mostra a hierarquia de armazenamento de dados Oracle,
lógico
comdoa armazenamento
separação de físico. A figura mostra as relações entre as estruturas de armazenamento.
Logicamente, um espaço de tabela pode conter diversos segmentos, cada um consistindo em
diversosde
arquivo graus.
dadosFisicamente,
consiste de um
muitos blocos do sistema operacional atribuídas por qualquer sistema
de arquivos
sistema está de operações
a utilizar. As duas partes do modelo são ligados pelas relações que mostram que um
tablespace pode consistir em vários arquivos de dados e no nível mais baixo que um bloco Oracle
vaivários
de consistir
blocos do sistema operacional.

O Dicionário de Dados
O dicionário de dados é metadados, que são dados sobre dados. Ele descreve o banco de dados, tanto
efísica
logicamente, e seu conteúdo. definições de usuário, informações de segurança, restrições de
integridade ede monitoramento de desempenho são todos parte do dicionário de dados. É
informações
armazenada
no sistema e como
os espaços
um conjunto
de tabela
deSYSAUX.
segmentos
De muitas maneiras, os segmentos que compõem o dicionário de dados são segmentos como
tabelas
qualquer
e índices.
outro,
A apenas
diferença fundamental é que as tabelas de dicionário de dados são gerados no
banco de
tempo de dados
criação, e você não tem permissão para acessá-los diretamente. Não há nada para parar um
curioso
DBA de investigar o dicionário de dados diretamente, mas se você fizer as suas actualizações,
poderáirreparáveis
danos provocar ao seu banco de dados e, certamente, Oracle Corporation não vai apoiá-lo.
Criar um dicionário de dados é parte do processo de criação do banco de dados. Ele é mantido em
seguida
Data Definition
por Language (DDL) comandos. Quando você emitir o comando CREATE TABLE,
você
são, de facto inserir linhas em tabelas de dicionário de dados, como você está com comandos como
USUÁRIO e GRANT.
CRIAR
Para consultar o dicionário, a Oracle fornece um conjunto de pontos de vista. Os pontos de vista
prefixado
vêm em CDB_,
quatroDBA_,
formas,ALL_, ou USER_. Qualquer vista prefixado USER_ será preenchida com
descrevendo objetos de propriedade do usuário consultando a visão. Portanto, não há duas pessoas
linhas
vão ver o mesmo
conteúdo. Se o usuário SCOTT consulta USER_TABLES, ele vai ver informações sobre suas mesas;
se vocês
consulta USER_TABLES, você verá informações sobre suas tabelas. Qualquer vista prefixado ALL_
preenchida com linhas descrevendo objetos aos quais você tem acesso. Portanto, ALL_TABLES vai
será

contêm linhas descrevendo suas próprias tabelas, além de linhas que descrevem tabelas pertencentes
a qualquer
ter outra
sido dada pessoa que
permissão paravocê
ver. Qualquer vista prefixado DBA_ terá linhas para cada objeto na
banco de dados, de modo DBA_TABLES terá uma linha para cada tabela no banco de dados, não
importa
criou. Osquem
pontos de vista CDB são idênticos aos pontos de vista de DBA, a menos que você estiver
trabalhando
base de dados.
emEstes
um multitenant
pontos de vista são criados como parte do processo de criação do banco de
dados,
de juntamente
pacotes PL / SQLcom
queum grande
são número
fornecidos pela Oracle para ajudar os administradores de banco de
dados na
banco de gestão
dados edoprogramadores em desenvolvimento de aplicações. código PL / SQL também é
armazenado nos dados
dicionário.

EXAME TIP qual visão irá mostrar-lhe todas as tabelas no banco de dados? A vista é
não ALL_TABLES.
DBA_TABLES,

A relação entre áreas de tabela e arquivos de dados é mantido na controlfile base de dados. este
lista todos os arquivos de dados, indicando que tablespace eles fazem parte. Sem o controlfile, não

forma uma instância pode localizar os arquivos de dados e, em seguida, identificar aqueles que
compõemquando
Somente o espaço
o espaço
de tabela
de SYSTEM.
tabela SYSTEM foi aberto é possível para a instância para acessar os
dicionário, em que ponto se torna possível abrir o banco de dados.
dados

Exercício 12-4: Investigar as estruturas de armazenamento no banco de dados Neste exercício,


você um
criar vai segmento de mesa e, em seguida, trabalhar para fora onde é fisicamente. Siga esses passos:

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Criar uma tabela sem nomear um tablespace-lo será criado no seu padrão
tabela, com um ponto.

3. Identificar o espaço de tabela em que reside a tabela, o tamanho da extensão, o número do


arquivo do é, e em que bloco do arquivo a extensão começa.
medida

4. Identificar o arquivo pelo nome (substitua o file_id a partir da consulta anterior, quando
solicitado).
5. Exercite-se precisamente onde no arquivo a extensão é em termos de quantos bytes para o
arquivo queIsso requer descobrir o tamanho do bloco da tabela. Digite o block_id e
começa.
tablespace_name retornado pela consulta na etapa 3 quando solicitado.
Figura 12-8 mostra estes passos, executados a partir do SQL * Plus.
A figura mostra que a tabela existe em uma extensão (medida 0) que é 64 KB. Esta medida está
em
o /u01/app/oracle/oradata/orcl/system01.dbf arquivo e começa cerca de 826MB para o arquivo.

Figura 12-8 determinar a localização física de um objecto lógico

Broca Two-Minute
Listar os componentes arquitectónicos de um banco de dados Oracle
• Um servidor Oracle é uma instância conectado a um banco de dados.
• Um exemplo é um bloco de memória compartilhada e um conjunto de processos em segundo
plano.
• Um banco de dados é um conjunto de arquivos no disco.
• Uma sessão de usuário é um processo de usuário conectado a um processo do servidor.

Explicar as estruturas de memória


• A memória da instância compartilhada é System Global Area (SGA).
• memória privada de uma sessão é a sua área do Programa Global (PGA).
• O SGA consiste em um número de subestruturas, alguns dos quais são necessários (o banco de
dados
cache de buffer, o buffer de log, ea piscina compartilhada) e alguns dos quais são opcionais (o
grande
piscina, a piscina Java, ea piscina streams).
• As estruturas PIG pode ser redimensionado dinamicamente e gerenciado automaticamente,
com
do exceção
buffer de log.

Descrevem os processos de fundo


•• processos de servidor
Alguns processos Session são
em segundo lançados
plano sob demanda
são lançados quando osdausuários
na inicialização instânciaseeconectam.
persistem até
o desligamento;
iniciar / parar, outras
conforme necessário.
• Os processos de servidor lidos do banco de dados; processos em segundo plano escrever para
o banco de
• Alguns dados. em segundo plano estará sempre presente (em particular SMON, PMON,
processos
DBW n , ckpt, e MMON); outros irão executar dependendo de que opções foram ativados.
LGWR,

Explicar a relação entre as estruturas de armazenamento lógico e físico


• Existem três tipos de arquivos necessários em um banco de dados: o controlfile, a refazer on-
line
osarquivos
arquivosde
delog
dados.
e
• O controlfile informações integridade lojas e referências para o resto do banco de dados.
• Os vetores de mudanças recentes on-line redo logs armazenar aplicadas ao banco de dados.
• Os arquivos de dados armazenar os dados.
• Os arquivos externos incluem o arquivo de parâmetro, o arquivo de senha, o arquivo de redo
logs
e arquivos
e o log de rastreamento.
• armazenamento de dados lógica (segmentos) é captada a partir de armazenamento de dados
físicos
tablespaces.
(arquivos de dados) por
• Um espaço de tabela pode consistir em vários arquivos de dados.
• Segmentos consistem em várias extensões, que consistem em vários blocos da Oracle, que
consistem
de vários blocos do sistema operacional.
• Um segmento pode ter extensões em vários arquivos de dados.

Auto teste
1 . O que declarações relativas a memória da instância e memória de sessão estão correctos?
(Escolha
respostas
tudocorretas.)
A. memória SGA é segmentos de memória privadas; Memória PGA é compartilhada
segmentos
B. Sessionsde memória.
podem escrever para o PGA, não o SGA.
C. O SGA é escrito para por todas as sessões; a PGA é escrito por uma sessão.
D. O PGA é alocada na inicialização da instância.
E. O SGA é alocada na inicialização da instância.

2 . Como sessões de comunicar com o banco de dados? (Escolha a melhor resposta.)


A. processos Server usam Oracle Net para se conectar à instância.
B. Processos em segundo plano usar o Oracle Net para se conectar ao banco de dados.
C. Processos do usuário ler a partir do banco de dados e escrever para a instância.
D. Processos de servidor executar SQL recebeu de processos do usuário.
3 . Que estruturas de memória são uma parte necessária do SGA? (Escolha todas as respostas
corretas.)
A. O cache buffer do banco
B. A piscina do Java
C. A grande piscina
D. O tampão de log
E. O Programa Global Area
F. A piscina comum
G. O córregos piscina
4 . Que estruturas de memória SGA não podem ser redimensionadas dinamicamente após a
inicialização
todas as respostas
exemplo?corretas.)
(Escolher
A. O tampão do cache de dados.
B. A piscina do Java.
C. A grande piscina.
D. O tampão de log.
E. A piscina comum.
F. O córregos piscina.
G. estruturas Todos PIG pode ser redimensionado dinamicamente após a inicialização
instância.
5 . Que estruturas de memória SGA não podem ser redimensionadas automaticamente após a
inicialização exemplo?
(Escolha todas as respostas corretas.)
A. O tampão do cache de dados.
B. A piscina do Java.
C. A grande piscina.
D. O tampão de log.
E. A piscina comum.
F. O córregos piscina.
G. estruturas Todos PIG pode ser redimensionada automaticamente após a inicialização
instância.
6 . Quando uma sessão muda de dados, onde é que a mudança são escritas? (Escolha a melhor
resposta.)
A. Ele é gravado no bloco de dados no cache eo buffer de redo log.

B. Ele é gravado no bloco de dados no disco e o arquivo de log redo online atual.
C. A sessão escreve para o buffer cache do banco de dados, eo escritor log escreve à
corrente
on-line arquivo de log refazer.
D. Não há nada escrito até que a mudança está comprometida.
7 . Qual destes processos de fundo é opcional? (Escolha a melhor resposta.)
A. ARC n , o processo de arquivo
B. CKPT, o processo de verificação
C. DBW n , a base de dados escritor
D. LGWR, o escritor de log
E. MMON, o monitor de gerenciamento
8 . O que acontece quando um usuário emite um COMMIT? (Escolha a melhor resposta.)
A. O processo de ckpt sinaliza um ponto de verificação.
B. O DBW n processo escreve buffers alterados da transação para os arquivos de dados.
C. O LGWR libera o buffer de log para log refazer o online.
D. O ARC n processo escreve os vectores de mudança para o registo de arquivo de refazer.
9 . Uma instância do Oracle pode ter apenas um dos muitos processos, mas vários dos outros.
qual dos processos podem ocorrer várias vezes? (Escolha todas as respostas corretas.)
esses
A. O processo de arquivo
B. O processo de verificação
C. O processo de gravação da base de dados
D. O processo escritor log
E. O processo do servidor sessão
10 . Um segmento pode ser transmitida através de muitos arquivos de dados. Como? (Escolha a
melhor
A. resposta.)
Ao alocar extensões com blocos em vários arquivos de dados
B. Ao espalhar o segmento em vários espaços de tabela
C. Ao atribuir vários arquivos de dados para um espaço de tabela
D. Usando um tamanho de bloco de Oracle que é maior do que o tamanho do bloco de
11 . Qual afirmação
sistema é correta a respeito de log refazer o online? (Escolha a melhor resposta.)
operativo
A. Deve haver pelo menos um grupo de arquivo de log, com pelo menos um membro.
B. Deve haver pelo menos um grupo de arquivo de log, com pelo menos dois membros.
C. Deve haver pelo menos dois grupos de arquivo de log, com pelo menos um membro de
cada um.haver pelo menos dois grupos de arquivo de log, com pelo menos dois membros
D. Deve
cada. está o endereço redo byte atual, também conhecida como a posição checkpoint
12 . Onde
incremental,
gravado? (Escolha a melhor resposta.)
A. No controlfile
B. No grupo de arquivo de log on-line atual
C. No cabeçalho de cada arquivo de dados
D. Em System Global Area

Respostas de auto-teste
1. C , E . O SGA é compartilhada memória, atualizado por todas as sessões; PGAs são
particulares
sessão. O SGA éaalocada
cada no momento da inicialização (mas ele pode ser modificado mais
tarde).
A , B , e D são incorrectas. A está incorreta porque ele inverte a situação. É o SGA
que existe na memória compartilhada, e não o PGA. B está incorreta porque as sessões
escrever tantoepara
própria PGA SGA.sua
D está incorreta porque (ao contrário do SGA) da PGA só é alocado
sob demanda.
2. D . Este é o grupo cliente-servidor. Processos de usuário gerar processos SQL, e do
execute
servidor
SQL.
A , B , e C são incorrectas. A e B estão incorretas porque recebem o uso de Oracle Net
incorreta. Oracle Net é o protocolo entre um processo do usuário e um processo do servidor.

incorreto porque ele descreve o que processos do servidor faz, não o usuário processos fazer.
3. A , D , F . Cada instância deve ter um cache de buffer do banco de dados, um buffer de
log, e uma compartilhada
piscina.
B , C , E , e G estão incorrectos. B , C e G são incorretas porque o pool de Java, a
grande
piscina, ea piscina fluxos são necessários somente para determinadas opções. E é incorrecta
porque
PGA não
a é parte do SGA em tudo.
4. D . O tampão de registo é fixo em tamanho no momento do arranque.
A , B , C , E , F , e G estão incorrectos. A , B , C , E , e F são incorrecta porque estes
são o
Componentes redimensionáveis do SGA. L é incorrecta porque a memória intermédia de
5. registo
D .éOestática.
buffer de log não pode ser redimensionada manualmente, não importa
automaticamente.
A , B , C , E , F , e G estão incorrectos. A , B , C , E , e F são incorrecta porque estes
PIG
componentes podem ser gerenciados automaticamente. L é incorrecta porque a memória
6. intermédia de registo
Um . A sessão é estática.
atualiza a cópia do bloco na memória e escreve o vetor de mudança
para o buffer de log.
B , C , e D estão incorrectos. B está incorreta porque embora isso vai acontecer, isso não
acontece
acontecer quando a alteração é feita. C está incorreta porque confunde a realização da sessão
alterações na memória com alterações LGWR propagação para o disco. D é incorrecta
porque todos
alterações nos dados ocorrem na memória como eles são feitos, o COMMIT não é relevante.
7. Um . O arquivamento não é obrigatória (embora seja geralmente uma boa idéia).
B , C , D , e E são incorrectas. CKPT, DBW n , LGWR, e MMON são todos necessários
processos.

8. C . Em COMMIT, o escritor log libera o buffer de log para o disco. Nenhum outro
processos
fundo precisam fazer nada.
A, B , e D são incorrectas. A está incorreta porque checkpoints completos ocorrer
ou em
apenas
desligamento
o algoritmo mediante ordenado;
pedidoparacheckpoints
DBW n utiliza parciaispara
selecionar buffers sãogravar
automática, conforme
os arquivos necessário.
de dados B
não está
érelacionado
incorrecta porque
commas
processamento, COMMIT
a como agitado o tampão é. D é incorrecta porque ARC n copia apenas
redo logs on-line; ele não copia os vectores de mudança em tempo real.
preenchido
9. A , C , E . Ambos A e C estão corretas porque o DBA pode optar por configurar
múltiplas
arquivo e escritor de banco de dados de processos. E é correto porque um processo do
servidor para
lançado será cada sessão simultânea.
B e D são incorrectas. Uma instância pode ter processo escritor apenas um log e apenas
processo
um de verificação.
10. C . Se uma tabela tem vários arquivos de dados, segmentos podem ter extensões em
todos
A , B ,eles.
e D são incorrectas. Um é incorrecta porque uma medida consiste em
consecutivo
blocos em qualquer arquivo de dados. B é incorrecta porque um segmento pode existir em
uma única
tabela (embora uma tabela pode conter diversos segmentos). D é incorrecta porque
embora isso certamente pode ser feito, a um quarteirão pode existir em apenas um arquivo
11. de dados.
C . Dois grupos de um membro é o mínimo necessário para a base de dados para
funcionar.
A , B , e D são incorrectas. A e B são incorrecta porque, pelo menos, dois grupos são
sempre
requeridos. D está incorreta porque, embora certamente é aconselhável multiplex os
não é um requisito técnico.
membros,
12. Um . O processo de verificação escreve o endereço redo byte (RBA) para o controlfile.
B , C , e D estão incorrectos. Os logs online, os arquivos de dados, e a SGA não têm
conhecimento de onde a RBA atual.
CAPÍTULO 13

Gestão Instância

Objetivos do exame
• Ferramentas de Gestão 062.3.1 Uso de banco de dados
• 062.3.2 Entenda Inicialização Parâmetro Arquivos
• 062.3.3 Start Up e Desligar uma instância Oracle Database
• 062.3.4 ver o registo de Alerta e acesso dinâmico Desempenho Visualizações
Após a criação de um banco de dados e um exemplo, a instância irá começar, e o banco de dados irá
ser aberto.que o banco de dados foi configurado com Enterprise Manager banco de dados Express,
Supondo
este será como uma ferramenta de gestão. O que não pode estar em execução é o ouvinte de banco
disponível
de dadosno
descrito (que é totalmente
Capítulo 14 ). Antes que um usuário pode se conectar ao banco de dados Express, o
ouvinte deve estar executando
também.

Banco de dados Express requer nenhuma configuração. Ele só tem que ser criado, e que é feito
tempo
no banco
de criação
de dados
(ou ele pode ser instalado mais tarde). No entanto, a instância de banco de dados
na maioria dossubstancial
configuração casos vai exigir
após a criação. Isto é feito ajustando os parâmetros de inicialização.
Qualquer que seja a ferramenta é usada para conectar ao banco de dados, é necessário neste
duasmomento
técnicas para compreender a
ligar a uma instância Oracle. Um normal de utilizador for autenticado,
apresentando
password cujoumhash é armazenado no dicionário de dados. Um privilegiada utilizador for
autenticado, quer
apresentando umapela
senha cujo hash é armazenado no arquivo de senhas externo ou mediante a
apresentação
identidade dodesistema
um operacional que a Oracle aceita.

Usar ferramentas de gerenciamento de banco de dados


As ferramentas utilizadas nesta secção são o utilitário de linha de comando SQL * Plus eo Banco de
Dados Expresso
utilitário gráfico. Alguns sites terão acesso a Cloud Control, bem como, que de certa forma é um
ferramenta de gestão superior, mas está além do alcance dos exames Oracle Certified Professional
(OCP).
Trabalhando com o SQL * Plus
SQL * Plus é apenas um processo elementar para a emissão ad hoc comandos SQL para um banco
de dados.Windows,
sistemas Em quer executá-lo a partir de um prompt de comando ou use o atalho para a
arquivo executável no menu Iniciar que a instalação padrão do Oracle terá criado. No Unix,
sqlplus.exe
ele é chamado sqlplus. Em qualquer sistema operacional que você vai encontrar o programa
executável em sua / bin.
ORACLE_HOME
Uma variação que você precisa para ter em conta é a chave NOLOG. Por padrão, o SQL *
imediatamente
Programa Mais
solicita um nome de usuário Oracle, senha e banco de dados conectar string. Almoçar
SQL * Plus sem um prompt de login, use o parâmetro / NOLOG.

Isto lhe dará um prompt de SQL a partir do qual você pode se conectar com uma variedade de
detalhado
sintaxes,
na para
próxima
ser seção.
Se SQL * Plus não iniciar ou gera erros quando se faz o lançamento, a razão mais provável é que
seu ambiente de sessão sistema operacional não está configurado corretamente; a variável ou
ORACLE_HOME
a variável PATH está errado ou faltando. A Figura 13-1 mostra exemplos deste problema, e como
corrigi-lo, para Linux. A mesma técnica é aplicável no Windows.
Figura 13-1 Lançamento SQL * Plus a partir de um prompt de comando do sistema operacional

DICA Muitos administradores de banco de dados (DBAs) sempre trabalhar em SQL * Plus ao tentar
problemas. É uma ferramenta simples que não esconde mensagens de erro e está sempre disponível.
resolver

Logon como um usuário normal ou privilegiadas


Capítulo 16 passa por segurança em detalhe, mas uma compreensão de como se conectar com
SYSDBA
privilégios é necessário neste momento.
Um logon de usuário normal requer apresentar um nome de usuário e uma senha. O nome de
usuário éde
o dicionário armazenado em
dados, juntamente com uma versão hash da senha. Esta técnica de logon requer
o banco de dados a ser aberto. Se o banco de dados não estavam abertos, não seria possível consultar
os dados Isso levanta a questão de como se pode fazer logon em um banco de dados que não está
dicionário.
aaberto,
uma instância
ou, de fato,
que não foi iniciado. A resposta é que a Oracle oferece duas técnicas para
autenticar a si mesmo que não exigem que o banco de dados a ser aberto: a autenticação de arquivo
de senha e do sistema operacional. Ambos lhe dão a opção de se conectar com o SYSDBA ou
autenticação
Privilégio SYSOPER. Apenas SYSDBA é discutido aqui (ver Capítulo 16 para SYSOPER).
autenticação de arquivo de senha compara um nome de usuário e o hash de uma senha
valores
apresentados
armazenados
comno arquivo de senhas externo. Este é o arquivo que foi criado com o utilitário
antes de o banco de dados foi criado (ver Capítulo 2 para detalhes). Se os valores corresponderem, o
orapwd
usuário está conectado
como usuário SYS.
delegados autenticação do sistema operacional a autenticação para o sistema operacional. Ao
instalar
tempo, um grupo OS foi nomeado como o grupo SYSDBA (ver Capítulo 12 ). Se o seu Unix ou
usuário é membro desse grupo, a Oracle irá permitir que você se conectar como SYS usuário com o
Windows
SYSDBA
privilégio sem apresentar uma senha em tudo.
A escolha do método de autenticação é feita pela sintaxe usados durante a ligação. Veja como
conecte como um usuário normal de um prompt SQL:

Isto é como se conectar como um usuário privilegiado usando a autenticação de arquivo de senha:

E é assim que se conectar como um usuário privilegiado utilizando a autenticação do sistema


operacional:

A Figura 13-2 mostra todos os três sintaxes de ligação. O primeiro exemplo liga como um
através da rede.
utilizador O banco de dados deve estar aberto (e do ouvinte de banco de dados deve estar em
normal,
suceder. O segundo exemplo de liga como o SYS utilizador privilegiado através da rede. O banco de
execução) para que isso
ouvinte deve estar em execução, mas isso teria sucesso, mesmo se o banco de dados foram fechadas.
dados
O terceirousa a autenticação do sistema operacional para obter uma conexão privilegiada. O SQL *
exemplo
sessão deve estar executando na mesma máquina que o banco de dados. Nem o banco de dados nem
Plus
o ouvinte
precisa estar em execução para a conexão com sucesso.

Figura 13-2 Sintaxe para login com o SQL * Plus

Trabalhando com Banco de Dados Expresso


Banco de dados Express é um aplicativo de servlet Java. Os usuários se comunicar com ele a partir
de um navegador
conexão Hypertextdurante
Transfer
umProtocol (HTTP) estabelecida pelo ouvinte banco de dados. A aplicação

gera páginas de Hypertext Markup Language (HTML) que são enviados para navegadores; os
usuáriospara
páginas podem usá-losinformações ou para enviar atualizações de volta. Porque consiste de código
recuperar
armazenado
banco de dados,
dentro
banco
do de dados Express não pode ser usado para iniciar ou encerrar um banco de
dados.
O Uniform Resource Locator (URL) para acessar banco de dados Express irá ter sido exibido
Assistente
pela de banco de dados de configuração (DBCA) na conclusão da criação do banco de dados.
Por padrão,
será o seguinte:
ele

Para determinar a porta de escuta HTTP se não é o padrão de 5500, fazer logon no banco de dados
com
SQL * Plus e executar esta consulta:

Neste exemplo, a porta de escuta é 5500, e o protocolo é o HTTP. Use o utilitário lsnrctl para
mostrar o status do ouvinte, como na Figura 13-3 .
Figura 13-3 O estado da base de dados ouvinte

Na figura, o utilitário lsnrctl é executado com a opção de status. Na secção de estado da saída,
você pode ver que o ouvinte foi executado por uma hora e meia e que está escutando em dois
endpoints: porta 1521 e porta 5500, tanto no endereço db121a.example.com . Porta 1521 é a
porta padrão para conexões de banco de dados mais de Oracle Net. Note-se que a porta 5500 está
escutandoesta
portanto, paraé HTTP;
a porta para o banco de dados Express, e agora é possível deduzir o que o URL para
Banco de dados Express é.

Se o comando status lsnrctl retorna qualquer tipo de erro, é provável que o ouvinte não foi
começado. Neste caso, inicie-o com este:

A janela de login de banco de dados Express solicita um nome de usuário e senha, com a opção
especificar
de que a conexão deve ser feita AS SYSDBA. Se você deseja se conectar como um usuário
dar o nome de usuário SYS e a senha e marque a caixa para AS SYSDBA. Caso contrário, dar
privilegiado,
qualquer nome de usuário e senha válidos para o banco de dados.

TIP banco de dados Express requer o plug-in Adobe Flash Player. Sem isso, não é possível
logon.

Banco de dados Express pode ser instalado em um banco de dados no momento da criação do
banco
solicita de Ele
essa. dados. A ferramenta
também pode serDBCA
instalado posteriormente, seja pela execução de scripts ou (muito
mais fácil)
usando DBCApor e selecionando a opção Configurar opções de banco de dados. Os pré-requisitos para
a utilização
Banco de dados
de expresso são as seguintes: Primeiro, um servidor HTTP ou HTTPS porta de escuta
deve confirmar
Para ter sido criado.
se isso tiver sido feito (e para corrigir a situação se ele não tem), use o
pacote DBMS_XDB_CONFIG.
Além disso, se você preferir usar o HTTPS para banco de dados Express, use o procedimento
DBMS_XDB_CONFIG.SETHTTPSPORT em vez de DBM_XDB_CONFIG.SETHTTPPORT.
Finalmente, todo o acesso ao banco de dados Express é através do mecanismo de servidor
compartilhado,
Capítulo descrito
14 . Isto requer no
a existência de um processo EXPEDIDOR; um será executado por padrão.

EXAME TIP Quais são os pré-requisitos para a utilização de banco de dados Express? O ouvinte
deve estar emdeve
despachante execução,
estar em
a execução, eo procedimento XML DB (XDB) deve ter sido usado para
permitir
porta de que um
escuta.

Exercício 13-1: usar ferramentas de gerenciamento de banco de dados Neste exercício, você se
familiarizar
técnicas paracom
a conexão
o como um usuário privilegiado, com o SQL * Plus e banco de dados Express.
o banco de dados interface de usuário expresso, seguindo estes passos:
Explorar

1. A partir de um prompt do sistema operacional, confirme que a sua conta está no grupo DBA.
Nouse
Linux,
o comando id.

Este resultado mostra que o utilizador está conectado como a Oracle utilizador e é um
membroedos
oinstall dba.grupos
Estes são os nomes padrão para os grupos que possuem o software Oracle e
tem privilégio SYSDBA no banco de dados.
No Windows, use o comando whoami.

Este resultado mostra que o utilizador é um membro do grupo ORA_DBA, que é o nome do
grupo DBA no Windows.
2. Defina as variáveis de ambiente necessárias. Este é um exemplo de Linux:

E este é um exemplo do Windows:

Substituto quaisquer valores são apropriados para a sua instalação.


3. Lançamento SQL * Plus e, em seguida, conectar como um usuário privilegiado usando o
autenticação.
sistema operacional

Isto deve mostrar que você está conectado como SYS usuário.
4. Lançamento de um navegador e, em seguida, emitir este URL:

Isto irá apresentá-lo com uma tela de logon. Digite o nome de usuário sys e senha do Oracle
seja qual for a senha que você especificou ao criar o banco de dados) e selecione a opção “as
(ou
caixa de seleção.
sysdba”
5. Explorar a interface do usuário do banco expresso. Selecione quaisquer tabs ou links que
parecem interessantes.
Você vai precisar para se familiarizar com todos eles.

Entenda Inicialização Parâmetro Arquivos


Uma instância é definida pelos parâmetros utilizados para construí-lo na memória. Ele pode ser
alteradoesses
ajustar apósparâmetros-se
a inicializaçãoos parâmetros são aqueles que podem ser alterados. Alguns são fixos na
tempo e só pode ser alterado por desligar a instância e iniciá-lo novamente.
inicialização

Estática e arquivos de parâmetros dinâmicos


arquivos de parâmetros vêm em dois sabores: o arquivo de parâmetro estático (também conhecido
ecomo
o arquivo
um arquivo
de parâmetros
de inicialização
do servidor
pfiledinâmico
ou) (também conhecido como o spfile). De qualquer
forma, aarmazena
arquivo inicialização
valores dos parâmetros para os parâmetros utilizados para construir a instância na
memória eem
processos parasegundo
iniciar plano.
o Há três nomes de arquivos padrão. No Unix eles são os seguintes:

$ ORACLE_HOME / dbs / spfile <SID> .ora


$ORACLE_HOME/dbs/spfile.ora
$ORACLE_HOME/dbs/init<SID>.ora
No Windows eles são os seguintes:

% ORACLE_HOME% \ database \ SPFILE <SID> .ora


%ORACLE_HOME%\database\SPFILE.ORA

%ORACLE_HOME%\database\INIT<SID>.ORA
Em todos os casos, <SID> refere-se ao nome da instância que o arquivo de parâmetros será
ordem
iniciado.
precedente
o é importante! A menos que um pfile é especificado no comando de inicialização, a
Oracle
bem abaixo
vai trabalhar
na lista, sua
utilizando o primeiro arquivo que encontra e ignorando o resto. Se nenhum
delesnão
pfile existe
padrão
(e umnão é especificado), o exemplo não começará.
O spfile é um arquivo do lado do servidor, e não pode ser renomeado ou realocados. A única
é quando
exceçãose autiliza
esta infra-estrutura da grade (GI), em cujo caso o nome não padrão e localização
podem ser no registro GI. Ele é lido pelo (SMON) processo em segundo plano o Monitor do sistema
registrado
quando o é iniciada. O spfile é um arquivo binário, e não pode ser editado manualmente. Qualquer
instância
tentativa de corrompê-lo
geralmente editar vai e torná-lo inutilizável. O pfile é um arquivo do lado do cliente. Ela existe
por padrão
diretório ORACLE_HOME,
no mas é de fato lido pelo processo de usuário que emite o comando para
iniciar
o exemplo. Você pode renomear ou mover o pfile como você quer, mas se você fizer isso, não será
encontrado
padrão, e você
pordeve especificar o nome eo local em seu comando de inicialização. A é um pfile
arquivo de texto ASCII; editá-lo com qualquer editor de texto você gosta (talvez com o Windows
notepad.exe
editor). O spfile
ou oéviumUnix
arquivo binário e não pode ser editada manualmente. Para alterar quaisquer
valores nele, use o
ALTER SYSTEM SET ... comandos do SQL * Plus ou as facilidades de edição de parâmetro de
banco de dados
Expressar.
Para criar um pfile, basta digitar os pares de parâmetro = valor, um por linha, e salve o arquivo
nomecomqueumestá em conformidade com o padrão. Para criar uma spfile, usar este comando SQL *
Plus:

Este comando irá ler o texto pfile nomeado e, em seguida, usar o seu conteúdo para gerar o
spfile.
binário
Por padrão, os arquivos de leitura e escrita serão aqueles com os nomes padrão no padrão
diretórios. Para converter um spfile em um arquivo de texto que pode ser editado, use o comando
inversa.

CREATE PFILE e CREATE comandos spfile pode ser executado a partir do SQL * Plus, a
qualquer
mesmo antes momento,
de a instância foi iniciada.

DICA O .ora arquivo spfile <SID> é, sem dúvida, o arquivo mais conveniente para usar como seu
arquivo de parâmetro.
Normalmente, você usará spfile.ora apenas em Clusters (RAC) ambiente Real Application, onde um
arquivo pode ser usado para iniciar várias instâncias. Você vai usar um init <SID> .ora arquivo
apenas
você precisa
se porfazer
alguma
edições
razãomanuais; spfiles são arquivos binários e não pode ser editado
manualmente.
Estáticos e dinâmicos Parâmetros e o arquivo de inicialização de parâmetros
Para visualizar os parâmetros e seus valores atuais, uma consulta, como isso vai fazer:

Esta consulta pode dar resultados ligeiramente diferentes.

A diferença é a vista a partir do qual são levados os nomes e valores de parâmetros.


V $ parâmetro mostra os valores dos parâmetros actualmente em vigor na instância de execução.
V $ SPPARAMETER mostra os valores em spfile no disco. Normalmente, estes serão os mesmos,
mas não Alguns parâmetros podem ser alterados enquanto a instância está em execução; outros,
sempre.
conhecidos como
parâmetros, são fixados
estáticaem tempo instância inicialização. Uma alteração feita aos parâmetros
mutáveis
um efeito terá
imediato e pode, opcionalmente, ser escrito para o spfile. Se isso for feito, a mudança será
permanente. A próxima vez que a instância é parado e iniciado, o novo valor será lido a partir da
spfile. Se a mudança não é salvo no spfile, a mudança irá persistir apenas até a instância é
parado. Para alterar um parâmetro estático, a mudança deve ser escrito para o spfile, e então virá
em vigor na próxima inicialização. Se a saída das duas consultas anteriores difere, este será
porque o DBA tem feito algum trabalho de afinação que ele ainda não fez permanente, ou ele tem
tipicamente
encontrado
necessário ajustar um parâmetro estático e ainda não ter reiniciado a instância.
Se a ocorrência é iniciado com um pfile em vez de um spfile, a vista V $ SPPARAMETER vai
mostram um NULL como o valor para cada parâmetro. Qualquer tentativa de alterar um parâmetro
no spfileum
retornar vaierro. Aqui está um exemplo:

Você também pode ver a vista através de banco de dados Express. Na página inicial, selecione o
guia Configuração e clique no link Parâmetros de inicialização. Na janela subsequente, mostrado nas
Figura 13-4 , estão duas sub-abas. Corrente mostra os valores actualmente em vigor no exemplo
correr, emostra os registados no spfile.
SPFile
Figura 13-4 parâmetros de inicialização, tal como mostrado através de base de dados expresso

Você pode ajustar os parâmetros alteráveis através da mesma janela. Os valores para o primeiro
parâmetro mostrado (DB_BLOCK_SIZE) não pode ser alterado; não é um parâmetro dinâmico. Mas
a próxima
três parâmetros podem ser alterados. Para alterar os parâmetros estáticos, é necessário selecionar a
subguia e fazer as mudanças lá.
SPFile

Os parâmetros básicos
Os parâmetros de instância considerados “básicos” são aqueles que devem ser considerados para
base de dados. Para visualizar os parâmetros básicos e seus valores atuais, uma consulta, como isso
cada
vai fazer:

A consulta a seguir pode dar resultados ligeiramente diferentes:

A diferença será porque algumas alterações de parâmetros podem ter sido aplicada para a
masinstância
não o spfile (ou vice-versa). A união é necessária porque não há nenhuma coluna na

V $ SPPARAMETER para mostrar se um parâmetro é básico ou avançado. Tabela 13-1 sumariza o


parâmetros básicos.
Tabela 13-1 Parâmetros básicos

Todos esses parâmetros básicos, bem como alguns dos parâmetros avançados, são discutidos no
capítulos apropriados.

Alterar parâmetros
Para alterar parâmetros com SQL * Plus, use o comando ALTER SYSTEM. A Figura 13-5 mostra
exemplos.

Figura 13-5 Alterar e consulta de parâmetros com SQL * Plus

A primeira consulta na Figura 13-5 mostra que o valor para o parâmetro


Db_file_multiblock_read_count é ativado por padrão. Ela não existe no spfile no disco.
Os próximos dois comandos ajustar o parâmetro tanto na memória eo spfile a valores diferentes,
utilizando
a palavra-chave SCOPE para determinar onde a alteração é feita. Os resultados são vistos na
segunda
O comandoconsulta.
final usa RESET para remover o valor armazenado da spfile; ele permanecerá em vigor
dentro da instância no seu valor atual até que a instância for reiniciada, momento em que ele irá
retornar Aqui
padrão. para oestá a sintaxe:
Note-se que
a atualização seráo aplicada
padrão para
paraa acláusula deem
instância escopo é ao mesmo
execução tempo,aoospfile.
e por escrito que significa que
Portanto, se você
torna-se
não especificar um
uma mudança permanente. escopo,

EXAME TIP Uma tentativa de alterar um parâmetro estático irá falhar a menos SCOPE é
especificado
SPFILE. como padrão é ambos (a instância em execução eo spfile). Se a instância é iniciada
O escopo
com um pfile, então SCOPE = SPFILE falhará.

Um exemplo de um parâmetro estático é LOG_BUFFER. Se você deseja redimensionar o buffer


de log
e emitir para 10 MB
o seguinte comando, ele irá falhar com a mensagem “ORA-02095: Inicialização
parâmetro não pode ser modificado”:
especificado

Ele deve ser alterado com a cláusula SCOPE = SPFILE, ea instância deve ser reiniciado para ter
efeito.

DICA O tamanho do buffer de log padrão é provavelmente correta. Se você levantá-lo, você pode
achar que COMMIT
processamento demora mais tempo. Se você torná-lo menor do que o padrão, ele pode de fato ser
aajustado
tudo o que
internamente
a Oracle acha
para que
cimaé necessário.

Um exemplo de um parâmetro que se aplica a toda a instância, mas pode ser ajustado para o
sessões
indivíduo
é OPTIMIZER_MODE. Isso influencia a maneira em que a Oracle vai executar instruções.
escolha comum é entre os valores ALL_ROWS e FIRST_ROWS. Os ALL_ROWS valor
UMA
instrui o otimizador a gerar planos de execução que serão executados declarações até a conclusão, o
mais rapidamente
possível, enquanto FIRST_ROWS instrui-lo para gerar planos que irão receber algo de volta para o
o mais cedo possível, mesmo se toda a declaração leva mais tempo para ser concluído. Portanto, se
usuário
éseu
geralmente
banco de usado
dados por longos consultas do tipo DSS mas alguns usuários usá-lo para o trabalho
interativo,
emitir o comando
você pode

e deixar a questão usuários individuais

Se eles querem.

TIP gatilhos de logon podem ser usados para ajustar os parâmetros de sessão para valores adequados
para diferentes
dependendo do usuários,
nome de usuário com o qual eles fazem logon.

Exercício 13-2: consulta e defina Parâmetros de inicialização Neste exercício, use um SQL *
Plus oude dados Express para gerenciar parâmetros de inicialização. Os exemplos usam SQL * Plus,
Banco
émas
mais
só clara
porquepara dar comandos exatos do que para fornecer caminhos de navegação através de uma
gráfica
de interface
de usuário
(GUI). Aqui estão os passos a seguir:

1. Conecte-se ao banco de dados (que deve estar aberto!) Como usuário SYS, com o privilégio
SYSDBA.
Use a autenticação do sistema operacional ou a autenticação de arquivo de senha.
2. Mostrar todos os parâmetros básicos, verificando se todas elas foram definir ou estão ainda
na sua
padrão e anote os valores para os processos e sessões.
Quaisquer parâmetros básicos que estão em seu padrão deve ser investigado para ver se o
default é apropriado. Na verdade, todos os parâmetros básicos devem ser considerados.
Leia-se
deles nasobre
documentação
tudo do Oracle agora. O volume que você precisa é intitulada “Banco de
Dados OracleCapítulo 1 na Parte 1 tem um parágrafo descrevendo cada parâmetro de
Referência.”
inicialização.
3. Altere o parâmetro de processos para 200. Este é um parâmetro estático. É, portanto
necessário especificar um valor SCOPE e depois saltar para o banco de dados.
A Figura 13-6 mostra a sequência de comandos. O comando de inicialização FORCE é
explicado na próxima seção.

Figura 13-6 Como mudar um parâmetro estático

4. Execute novamente a consulta a partir do passo 2. Note o novo valor para processos e
também
PROCESSOS
para as sessões.
limita o número de processos do sistema operacional permissão para se
conectar ao
exemplo, e sessões limita o número de sessões. Os números apresentados referem porque
cada sessão vai exigir um processo. O valor padrão para as sessões é derivado
PROCESSOS, por isso, se SESSIONS estava no padrão, ele terá agora um novo valor.
5. Altere o valor para o parâmetro NLS_LANGUAGE para sua sessão. Escolha o que
linguagem dominante que você quer (Oracle suporta 67 idiomas no momento da escrita),
mas o deve ser especificado em Inglês (por exemplo, você usaria alemão, não Deutsch):
idioma

6. Confirme que a mudança tem trabalhado consultando a data do sistema.

Você pode querer alterar o idioma da sessão de volta ao que era antes (como o Inglês)
com outro comando ALTER SESSION. Se você não fizer isso, estar preparado para
mensagens
na língua a sessão
de erroestá
parausando
ser agora.
7. Altere o parâmetro OPTIMIZER_MODE, mas restringir o escopo para a instância em
execução
só; não atualizar o arquivo de parâmetro. Este exercício permite que o obsoleto regra-base
otimizador, que pode ser necessária ao testar algum código antigo, mas você não gostaria
que o para ser permanente.
mudar

8. Confirme que a alteração foi feita, mas não gravada no arquivo de parâmetro.
9. Volte a OPTIMIZER_MODE
arquivo de parâmetro. ao seu valor normal, tanto na instância em execução eo

Note-se que a cláusula de escopo não é realmente necessário porque tanto é o padrão.

Iniciar e desligar uma instância Oracle Database


sequência recomendada da Oracle Corporation para iniciar um banco de dados é iniciar o ouvinte de
banco
e, de dadoso banco de dados. Iniciando o banco de dados é em si um processo faseado.
em seguida,

Iniciar o Listener de banco de dados


O ouvinte base de dados é um processo que monitoriza uma porta para os pedidos de ligação da base
de dados.(eEstes
pedidos todo o tráfego ulterior, depois de uma sessão é estabelecida) use Oracle Net, Oracle
protocolo de comunicação proprietário. Oracle Net é um protocolo de camada atropelando tudo o
que
protocolo de rede subjacente está em uso (provavelmente TCP / IP). Gerenciando o ouvinte é
totalmente
Capítulo 14descrito
, mas é no
preciso saber como começar agora.
Há duas maneiras de iniciar o ouvinte banco de dados:

• Com o utilitário lsnrctl


• Como um serviço do Windows (somente para Windows, é claro)

O utilitário lsnrctl está no diretório ORACLE_HOME / bin. Os comandos principais são os


ondeseguintes,
<listener> é o nome do ouvinte:

Isto irá não tiver cumprido a ouvinte, o que é correto na maioria dos casos. Você vai saber se você
criou um ouvinte com outro nome. Figura 13-3 , desde anteriormente no capítulo, mostra a saída do
tem

comando status lsnrctl quando o ouvinte (que é na verdade chamado LISTENER) está em execução.
Note-se que a primeira linha de descrição da saída na figura mostra o endereço do host e a porta
em que o ouvinte está ouvindo, ea terceira linha do fundo afirma que o ouvinte vai aceitar
conexões para o orcl serviço, que é oferecido por uma instância chamada orcl. Estes são o crítico
bits de informação necessária para se conectar ao banco de dados. Após uma criação de banco de
dados bem
DBCA, pode-se
sucedido
suporcom
que eles estão corretos. Se o ouvinte não está em execução, a saída do estado
vai deixar isso claro.
lsnrctl
No Windows, o ouvinte é executado como um serviço do Windows. Por conseguinte, é possível
através
controlá-la
da interface de serviços. Para identificar o nome do serviço do ouvinte, usar os Serviços
console de gerenciamento. Controlá-lo, quer através do console de serviços ou de um prompt de
comando.

Banco de dados de inicialização e desligamento


Se você está sendo preciso (sempre uma boa idéia se você quer passar os exames OCP), que não
iniciar ou parar um banco de dados. Um exemplo pode ser iniciada e interrompida; uma base de
fazer
dados está montado
e em seguida, e abriu e fechada. Isso pode ser feito com o SQL * Plus usando o STARTUP e
desmontados
comandos de desligamento. Em um sistema Windows, ele também pode ser feito por meio do
controle
sob a qual
doaWindows
instância é executado.

Ligar com um privilégio apropriado


Os usuários comuns
de autenticação não Você
externa. pode deve
iniciarserouautenticada
encerrar um banco
quer pelodesistema
dados.operacional,
Você deve, portanto, ligarum
como sendo com
alguma forma
membro do grupo que possui o software Oracle, ou dando uma combinação nome de usuário / senha
que existe em um arquivo de senha externa. Você diz a Oracle que você deseja usar a autenticação
externa,
usando a sintaxe apropriada no comando CONNECT você dá em seu processo de usuário.
Se você estiver usando SQL * Plus, a sintaxe do comando CONNECT diz a Oracle que tipo de
de autenticação que você deseja usar: o padrão de autenticação de dicionário de dados, arquivo de
autenticação, ou autenticação do sistema operacional. Aqui são as possibilidades:
senhas

• conectar user / pass [@connect_alias]


• conectar user / pass [@connect_alias] as sysdba
• conectar user / pass [@connect_alias] como sysoper
• ligar / as sysdba
• ligar / as sysoper

Nestes exemplos, o usuário é o nome de usuário e passe é a senha. Os connect_alias será


resolvido para uma seqüência de conexão, conforme descrito no Capítulo 14 . Ou SYSDBA ou
SYSOPER
executar uma é necessário
inicialização
para
ou desligamento. A Figura 13-7 mostra exemplos de ligar com estes
privilégios.

Figura 13-7 Uso de sistema operacional e autenticação de arquivo de senha

EXAME TIP SYSDBA e SYSOPER não são usuários; eles são privilégios que podem ser
concedidos
Por padrão, aos
somente
usuários.
o usuário SYS tem esses privilégios até que eles são deliberadamente
concedido a outros usuários.
Uso do privilégio SYSDBA registra-lo para a instância como usuário SYS, o usuário mais
poderoso
o banco de dados e o proprietário do dicionário de dados. Uso do privilégio SYSOPER conecta-lo
PÚBLICO usuário. PÚBLICO não é um usuário em qualquer sentido normal; eles são um utilizador
como
nocional com
privilégios, mas
administração
sem privilégios que lhes permitem ver ou manipular dados.

Startup: NOMOUNT, MOUNT e abra


Lembre-se que a instância eo banco de dados são entidades separadas; eles podem existir
independentemente
entre si. O processo de
de arranque é, portanto em estágios.
1. Você constrói a instância na memória.

2. Você permitir uma conexão com o banco de dados montando o controlfile.


3. Você abre o banco de dados para uso.

A qualquer momento, um banco de dados estará em um dos quatro estados:

• DESLIGAR
• NOMOUNT
• MOUNT
• ABERTO

Quando o banco de dados está em modo de encerramento, todos os arquivos estão fechados, ea
No modo
instânciaNOMOUNT,
não existe.a instância foi construído em memória (SGA foi criado eo
processos em segundo plano iniciada de acordo com o que está especificado em seu arquivo de
parâmetro),
conexão foi mas
feitanão
para um banco de dados. Na verdade, é possível que o banco de dados ainda não
existe.MOUNT,
modo Dentro a instância localiza e lê o controlfile do banco de dados. No modo Aberta, banco de
arquivos estão localizados e se abriu, e o banco de dados está disponível para uso pelos usuários
dados
finais. o arranque
processo é encenado. Sempre que você emitir um comando de inicialização, ele vai passar por estas
etapas. Isto
possível parar
é a parcialmente inicialização. Por exemplo, se o seu controlfile estiver danificado ou
um multiplexado
cópia está faltando, você não será capaz de montar o banco de dados, mas parando no modo
NOMOUNT,
pode ser capazvocêde reparar o dano.
Em qualquer fase, como é que a instância encontrar os arquivos necessários, e exatamente o que
NOMOUNT.
acontece? Quando
Começarvocê
comemitir um comando de arranque, o Oracle tentará localizar um arquivo de
seguir a convenção de nomenclatura dada anteriormente.
parâmetros,
Se nenhum arquivo de parâmetro existe, a instância não será iniciado. O único arquivo usado no
o arquivo
modo NOMOUNT
de parâmetro.éOs parâmetros no arquivo de parâmetros são usados para construir o SGA
na memória
iniciar os processos
e de fundo.
Onde está o log de alerta? É no local calculado a partir do parâmetro DIAGNOSTIC_DEST.
Isto irá tiver cumprido ao ORACLE_BASE (lembre-se Optimal Flexible Architecture [OFA]
do Capítulo 2 ) anuário. Dentro do DIAGNOSTIC_DEST é uma estrutura de diretório padrão. o
log de alerta serão localizados e nomeados da seguinte forma:

Para uma orcl banco de dados e instância nomeada, os valores (Windows e Linux) normalmente
seria o
Segue:

Se o registro já existir, ele será anexado. Caso contrário, ele será criado. Se quaisquer problemas
ocorrem durante esta fase, rastrear arquivos também podem ser gerados no mesmo local.
Uma vez que a instância é iniciado com êxito no modo NOMOUNT, pode ser transferida para
Modo
MOUNT
lendo o controlfile. Ele localiza o controlfile usando o parâmetro CONTROL_FILES,
que ele saiba de ter lido o arquivo de parâmetro usado quando se inicia no modo NOMOUNT. Se o

controlfile (ou qualquer cópia multiplexado dela) estiver danificado ou faltando, o banco de dados
não será
você terámontado,
que tomare as medidas necessárias antes de prosseguir. Todas as cópias do controlfile deve
disponível e idêntica se a montagem é para ser bem sucedido.
ser
Como parte do monte, os nomes e localização de todos os arquivos de dados e logs de redo on-
do controlfile,
line são lidos
mas a Oracle ainda não tentar encontrá-los. Isso acontecerá durante o
transição para o modo de abertura. Se houver arquivos faltando ou danificado, o banco de dados
permanecerá
modo e não pode
em MOUNT
ser aberto até que você tomar as medidas adequadas. Além disso, mesmo se todos
os arquivoseles
presentes, sãodevem ser sincronizados antes de o banco de dados é aberto. Se o último
desligamento
todos os buffers
foide
ordenada,
base de dados
com na memória cache do banco de dados a ser descarregado para o
disco
ser sincronizado.
por DBW nOracle
, entãovai
tudo
saber
o que
que
vaitodas as transações confirmadas são armazenados com
esegurança
que há transações
em arquivosnãode
confirmadas
dados são rondando à espera de ser revertida. No entanto, se o
última
Oracle paralisação
deve repararfoi desordenada
o dano, (como
eo banco a partir
de dados de uma perda
é considerado emdeum
energia
estadoou do servidor que
inconsistente. o está
sendo reinicializado),
mecanismo para este processo (conhecido como recuperação exemplo ) é descrito no Capítulo 22 . O
que monta e abre o banco de dados (e realiza reparos, se o desligamento anterior era desordenada)
processo
é o processo SMON. Apenas uma vez que o banco de dados foi aberto com sucesso será a Oracle
licença de
sessões de usuário
ser estabelecido com autenticação dicionário de dados normal.
Desligamento deve ser o inverso de inicialização. Durante um desligamento ordenado, o banco
fechada
de dados
e, emé seguida,
o primeiro
desmontados, e finalmente a instância estiver parado. Durante a fase de perto,
todas
são terminadas;
as sessões transações ativas são desfeitas, transações concluídas são liberadas para disco
DBW n , e os arquivos de dados e arquivos de log refazer estão fechados. Durante a desmontagem, o
controlfile
Em seguida,está fechado. foi parada desalocá o SGA e que encerra os processos em segundo plano.
a instância

DICA O STARTUP FORCE comando de inicialização você pode economizar tempo. É dois
comandos
Abortar SHUTDOWN
em um: um seguido por um arranque normal.

Desligamento: NORMAL, IMMEDIATE, transacional e


ABORT
Aqui estão as opções que podem ser usados no comando de desligamento, todos os quais requerem
tanto um ou uma conexão SYSOPER:
SYSDBA

• normal Este é o padrão. Não há novas conexões de usuários será permitido, mas todos os
actuais
conexões são autorizados a continuar. Apenas uma vez que todos os usuários têm
(voluntariamente!)
o banco de dados realmente
Desconectado
desligado.
vontade
• Transactional conexões novo usuário Não são permitidas. Existente sessões que não estão em
transação será cancelada; sessões atualmente em uma transação são permitidos para
completareaserá então encerrada. Uma vez que todas as sessões são terminadas, o banco de
transação
desligar.
dados

• Imediato Não há novas sessões são permitidas, e todas as sessões actualmente ligados são
encerrado. Quaisquer transações ativas são desfeitas, eo banco de dados será então desligado.
• Abortar Quanto Oracle está em causa, este é o equivalente a um corte de energia. a instância
termina imediatamente. Nada está escrito no disco, e não há nenhuma tentativa de encerrar
transacções em curso em qualquer forma ordenada.

DICA Normalmente, um desligamento normal é inútil, porque há sempre alguém conectado no


momento, mesmo
é apenas uma quede controle Nuvem, portanto, o comando só trava para sempre.
agente

Os modos de desligamento normais, imediatos, e transacionais são geralmente referidos como


consistentes
limpo ou paradas. Depois de todas as sessões são terminadas, PMON irá reverter qualquer
transações. Um ponto de verificação é então emitido que força o DBW n processo de escrever todos
incompleta
oscache
o dadosdeatualizados do
buffer do banco de dados para baixo para os arquivos de dados. LGWR também libera
quaisquerpara
memória vetores
os arquivos
de mudança
de log.
ainda
Ememseguida, os cabeçalhos dos arquivos são atualizados e o
arquivo
o banco lida
de dados
fechado.
estáIsso
em um
significa
estadoque
“consistente”: Todas as transações confirmadas estão nos
arquivos denão
transações dados,
confirmadas
não há hanging sobre que precisam ser revertida e todos os arquivos de dados e
arquivos de log são
sincronizada.
DICA
carregarSetabelas
alguémpara
no meio de uma instrução
um armazém de atualização
de dados quando de longa
você teve duração
de encerrar ou, por
o banco deexemplo, foram
dados, a fase
de reversão,
portanto, e
o tempo que leva o banco de dados para fechar e desligado corretamente, poderia ser um
longo, longo tempo.
O modo de abort deixa o banco de dados em um inconsistente Estado; é bem possível que
transações
cometeuforam perdidos porque eles só existia na memória e DBW n ainda não tinha escrito-los
para os arquivos de dados. Igualmente, pode haver transações não confirmadas nos arquivos de
dados queEsta
revertida. aindaé não tenham de
a definição sido
um banco de dados corrompido. Pode estar faltando transações
confirmadas
armazenar transações
ou não confirmadas. Estas corrupções deve ser reparado por recuperação de
(descrito no Capítulo 22 ). É exatamente como se o servidor de banco de dados tinha sido desligado,
instância
talvez reiniciado, enquanto o banco de dados foi executado.
ou

DICA A abortar o desligamento não irá danificar o banco de dados, mas algumas operações (como
backups)após
possível não são
um aborto.

Um encerramento ordenado é um processo por fases, e é teoricamente possível para controlar os


estágios. o

SQL * Plus comandos são as seguintes:

Estes comandos exatamente inverter a sequência de inicialização. Na prática, no entanto, não há


valor
nenhuma
para eles; um desligamento é tudo o que qualquer DBA nunca vai usar.

Exercício 13-3: Start Up e Desligar um banco de dados Oracle Instância Use SQL * Plus para
iniciar ume abrir um banco de dados. Se o banco de dados já está aberto, fazer isso na ordem inversa.
exemplo
Observe
se você estiver
que trabalhando no Windows, o serviço do Windows para o banco de dados deve estar em
execução.
nome Ela terá um
do formulário OracleService SID , onde SID é o nome do exemplo.

1. Faça logon no computador como um membro do grupo de sistema operacional que possui a
ORACLE_HOME e, em seguida, definir as variáveis do ambiente de forma adequada para
ORACLE_HOME e PATH e ORACLE_SID, como descrito anteriormente.
2. Ligar como SYS com a autenticação do sistema operacional.

3. Comece apenas a instância.

4. Monte o banco de dados.

5. Abra o banco de dados.

6. Verifique se o banco de dados é aberto.

Isso irá retornar Read Write se o banco de dados é aberto.


7. Desligue o banco de dados.

A Figura 13-8 mostra toda a sequência de etapas 2 a 7.


Figura 13-8 inicialização banco de dados e desligamento

8. reiniciar a base.

Observe que o modo de inicialização padrão está aberta.

Ver o desempenho do registro de alertas e de acesso


dinâmico
Visualizações
O log de alerta é uma fonte vital de informações sobre eventos importantes na vida do banco de
instância. É um registro histórico contínuo de eventos. Os pontos de vista de desempenho dinâmico
dados
dar real
informações de tempo, em outras palavras, o que está acontecendo agora ou no passado recente. Em
adição ao
log de alerta, há um opcionalmente habilitado Data Definition Language (DDL) log e um log de
gerado automaticamente no caso de certos erros.
depuração

O Registro de alertas
O registo de alerta é um registo contínuo das operações críticas aplicada à instância e o banco de
dados. Está é derivado da DIAGNOSTIC_DEST parâmetro de instância, e seu nome é
localização
alert_ <SID> .log, onde <SID> é o nome da instância. Os padrões DIAGNOSTIC_DEST ao
ORACLE_BASE, eo log de alerta será debaixo daquele.
TIP Os dois parâmetros de instância e BACKGROUND_DUMP_DEST USER_DUMP_DEST dar
o caminho completo para a localização do log de alerta. Estes parâmetros são oficialmente obsoleto,
mas émostrando
eles a maneira mais rápida para localizar o diretório de rastreamento.

Uma cópia do registro de alertas em formato Extensible Markup Language (XML) também é
diretório
mantido
diferente.
em um

As operações críticas gravadas no alerta incluem o seguinte:

• Todos os comandos de inicialização e desligamento, incluindo comandos intermediários,


como
DATABASE
ALTER MOUNT
• Todos os erros internos à instância (os erros ORA-600, sobre o qual o DBA não pode fazer
nada
que não investigá-los usando My Oracle Support e comunicá-las ao suporte Oracle, se eles
são novas questões)
• Quaisquer corrupções de bloco arquivo de dados detectados
• Quaisquer impasses de bloqueio de linha que possam ter ocorrido
• Todas as operações que afetam a estrutura física do banco de dados, como a criação ou
renomear
arquivos de dados e logs de redo on-line
• Todos os comandos ALTER SYSTEM que ajustam os valores de parâmetros de inicialização
• Todos os interruptores de log e log arquivos

A entrada de log de alerta para uma startup mostra todos os parâmetros de inicialização
Arquivo.
especificado
Esta informação,
no parâmetrojuntamente com o registro posterior de mudanças para a instância com
Sistema e as estruturas físicas do banco de dados com ALTER DATABASE, significa que é sempre
ALTER
possível reconstruir o histórico de alterações para o banco de dados ea instância. Isso pode ser
inestimável
quando você está tentando recuar, a fim de encontrar a fonte de um problema.

DICA Para muitos DBAs, a primeira coisa que fazem quando eles são convidados a olhar para um
banco de
tempo é localizar
dados para
o log
o primeiro
de alerta e digitalizá-lo, só para ter uma idéia do que vem acontecendo.

arquivos de rastreamento são gerados pelos vários processos em segundo plano, geralmente
Estes
quando
arquivos
elesestarão
atingiram
localizados
um erro.no diretório de rastreamento, juntamente com o log de alerta. Se
um processo
falhou devidodea um
fundo
erro,
temo arquivo de rastreamento gerado será inestimável para diagnosticar o
problema.
O Log DDL
Se o DBA optar por ativar isso, é possível gravar comandos de DDL em um arquivo de log. o
declaração utilizado (sem qualquer informação de apoio, tais como quem o emitiu) é gravada em um
arquivo deddl_
chamado texto
<instância> no seguinte diretório, com a mesma informação em um arquivo XML
chamado log.xml:

Para activar o registo DDL, o ENABLE_DDL_LOGGING parâmetro de instância deve ser


definido
(O padrão como TRUE
é FALSE).
TIP logging DDL é de valor mínimo para o DBA porque capta nada sobre quem fez isso. Isto é
de valor apenas para Suporte Oracle, como parte do Serviço de Embalagem de Incidentes. Se você
precisa controlar
fazê-lo, DDL,
permitindo auditoria de demonstrações DDL.

O desempenho Dynamic Views


Existem mais de 600 exibições dinâmicas de desempenho. Muitas vezes você vai ouvi-los referido
como vistas
dólar o vee porque seus nomes são prefixados com V $. Na verdade, os pontos de vista vee dólares
não são
todos eles
vistas
são sinónimos-a
em vista que são prefixados com V_ $, como se mostra na Figura 13-9 .

Figura 13-9 AV $ vista (ou melhor, em vista e a sua V $ sinónimos)

A figura mostra V $ exemplo, que tem uma linha com alguma informação resumida sobre a
instância. A maioria dos pontos de vista são preenchidos com informações da instância; o restante
sãocontrolfile.
do povoadas Todos eles dão informações em tempo real. visualizações de desempenho dinâmicos
que são
preenchido a partir do exemplo, tal como V $ instância ou V $ SYSSTAT, estão disponíveis em
todos osamomentos,
quando mesmo
instância estiver no modo NOMOUNT. visualizações de desempenho dinâmicas que são
preenchidostais
controlfile, a partir
comodoV $ DATABASE e V $ DATAFILE, pode não ser pesquisada a menos que a
base montado,
sido de dados tem
que é quando o controlfile é lido. Em contraste, os pontos de vista do dicionário de
dados (prefixado
DBA_, ALL_, ou USER_) pode ser consultada só depois de o banco de dados, incluindo os dados de
dicionário
foi aberto. tem-
EXAME
controlfile,TIP vistas desempenho
enquanto dinâmico
o DBA_, vistas ALL_ (V $ vista)
e user_ são estão preenchidos
preenchidos a partir
a partir do exemplo
do dicionário ou do
de dados.
Esta diferença determina o que vista pode ser consultado nas várias fases de arranque.

Os pontos de vista de desempenho dinâmico são criados na inicialização, actualizada durante a


e caiu
vida
noda
desligamento.
instância, Isso significa que eles vão conter valores que tenham sido acumulados desde
tempo de inicialização; Se seu banco de dados foi aberto para seis meses sem parar, eles terão de
dados construído
esse período. Apósaoum
longo
desligamento / partida, eles vão começar do zero novamente.

DICA Existe alguma sobreposição entre vistas $ V e vistas de dicionário de dados. Por exemplo,
V $ TABLESPACE tem uma linha para cada tabela, como faz DBA_TABLESPACES. Note-se que
como um
Regra geral, $ vistas V são singulares e dados views de dicionário são plurais. Mas há exceções.

Exercício 13-4: Use o Registro de alertas e desempenho Dynamic Views Neste exercício, você
localizar o log de alerta e encontrar as entradas para as mudanças de parâmetros feitas no Exercício
vai
13-2 eo e paralisações em Exercício 13-3 .
startups

1. Ligue para o seu banco de dados com SQL * Plus e, em seguida, exibir o valor de alguns
parâmetros.

Note-se que a maneira pela qual o nome do diretório de rastreamento é derivado.


2. Usando qualquer ferramenta do sistema operacional que você escolher (como o Windows
Explorer ou navegador que sua sessão Linux está usando) sistema de arquivos, navegue até o
qualquer
identificada no passo um.
diretório
Abra o log de alerta. Será um arquivo chamado alert_ .log <SID>, onde <SID> é o nome do
instância. Use qualquer editor que quiser (mas note que no Windows, o Bloco de notas pode
não ser uma
escolha boaà maneira como os retornos do carro são tratados).
devido
Vá para a parte inferior do arquivo. Você vai ver os comandos ALTER SYSTEM de
eExercício
os resultados
13-2 das partidas e paradas.
3. Use exibições de desempenho dinâmico para determinar o arquivo de dados e espaços de
tabela
basecompõem
de dados.a

Obter as mesmas informações de views de dicionário de dados.

4. Determine a localização de todas as cópias CONTROLFILE, de duas maneiras.

5. Determine a localização dos membros de arquivos online de redo log, bem como o seu
tamanho.
tamanho
Porque
é um oatributo do grupo, não os membros, você terá que juntar dois pontos de vista.

Broca Two-Minute
Usar ferramentas de gerenciamento de banco de dados
• SQL * Plus está sempre disponível. Banco de dados Express pode tornar a administração fácil,
emdepende
mas objetos de banco de dados subjacentes; que, portanto, não está disponível até o banco de
dados é aberto.
Entenda Inicialização Parâmetro Arquivos
• Uma instância de banco de dados pode ser iniciado a partir de um arquivo estático parâmetro
(odinâmica
arquivo de
arquivo
inicialização)
de parâmetro
ou umde servidor (o spfile). Se ambos existem, o spfile tem
precedência.
• parâmetros estáticos não pode ser alterado sem um desligamento / inicialização.
• Outros parâmetros podem ser alterados de forma dinâmica para a instância ou uma sessão.
• Os parâmetros podem ser vistos na vista dinâmico desempenho V $ PARAMETER e
V $ SPPARAMETER.

Iniciar e desligar uma instância Oracle Database


• Os estágios são NOMOUNT, MOUNT, e aberto.
• Modo NOMOUNT requer um arquivo de parâmetro.
• modo MOUNT requer a controlfile.
• Modo aberto requer os arquivos de dados e refazer on-line arquivos de log.

Ver log de alerta e acesso dinâmico Desempenho Visualizações


• O registro de alertas é um fluxo contínuo de mensagens sobre as operações críticas.
• arquivos de rastreamento são gerados por processos em segundo plano, geralmente quando
batem erros.de vista de desempenho dinâmico são preenchidos a partir da instância ou o
• Os pontos
controlfile.
• Os pontos de vista de dicionário de dados são preenchidos a partir do dicionário de dados.
• vistas desempenho dinâmico acumular valores através do tempo de vida da instância, e eles
são reinicializados na inicialização.
• views de dicionário Os dados mostram informações que persiste em toda desligamento e
inicialização.
• Ambas as visões de dicionário de dados e os pontos de vista de desempenho dinâmico são
publicados através
sinônimos.

Auto teste
1 . Você emitir o URL https://127.0.0.1:5500/em e receber um erro. O que poderia ser o
problema? (Escolha todas as respostas corretas.)
A. Você não começou o ouvinte banco de dados.
B. Banco de Dados Express está sendo executado em uma porta diferente.

C. Você não está conectado ao nó do servidor de banco de dados.


D. Você não começou o agente de controle Cloud.
E. Você não começou base de dados.
2 . O que os protocolos podem ser usados para entrar em contato com banco de dados Express?
(Escolha todas as respostas corretas.)
A. HTTP
B. HTTPS
C. Oracle Net
D. IPC
3 . Qual será a definição do parâmetro OPTIMIZER_MODE para a sua sessão após a próxima
inicialização se você emitir estes comandos:

(Escolha a melhor resposta.)


A. all_rows
B. regra
C. first_rows
4 . O parâmetro LOG_BUFFER é um parâmetro estático. Como você pode mudá-lo? (Escolha
o melhor resposta.)
A. Você não pode mudá-lo porque é estática.
B. Você pode mudá-lo apenas para sessões individuais; ele irá retornar ao valor anterior
parasessões
todos subseqüentes.
C. Você pode mudá-lo dentro da instância, mas ele irá retornar para o valor estático na
próxima
comece.
D. Você pode alterá-lo no arquivo de parâmetro, mas o novo valor entrará em vigor somente
no a próxima inicialização.
5 . Quais arquivos devem ser sincronizados para um banco de dados para abrir? (Escolha a
melhor resposta.)de dados, on-line arquivos de redo, eo controlfile log.
A. Arquivos
B. Arquivo de parâmetros e arquivo de senha.
C. Todos os multiplexados cópias CONTROLFILE.
D. Nada. SMON irá sincronizar todos os arquivos de recuperação de instância depois de
abrir o banco
6 . Durante de dados.
a transição de NOMOUNT para o modo MOUNT, quais arquivos são necessários?
(Escolher
a melhor resposta.)
A. arquivo de parâmetro
B. Controlfiles

C. redo logs on-line


D. Datafiles
E. Todas as anteriores
7 . Você encerrar sua instância com desligamento imediato. O que vai acontecer na próxima
comece? (Escolha a melhor resposta.)
A. SMON vai executar a recuperação de instância automática.
B. Você deve executar a recuperação de instância manual.
C. PMON irá reverter transações não confirmadas.
D. O banco de dados irá abrir sem recuperação.
8 . Você emite o desligamento comando, e ele parece travar. Qual seria a razão?
(Escolha a melhor resposta.)
A. Você não está conectado como SYSDBA ou SYSOPER.
B. Há outras sessões conectado.
C. Você não se conectou com o sistema operacional ou a autenticação de arquivo de senha.
D. Existem transações ativas no banco de dados; quando completar, o desligamento será
prosseguir.
9 . Que medidas você deve tomar após terminar a instância com ABORT SHUTDOWN?
(Escolha a melhor resposta.)
A. Faça backup do banco de dados imediatamente.
B. Abra o banco de dados e executar a recuperação de banco de dados.
C. Abrir a base de dados e executar a recuperação de exemplo.
D. Nenhum, mas algumas operações podem ser perdidos.
E. Nenhum. Recuperação será automática.
10 . Qual dessas ações não serão registradas no log de alerta? (Escolha todas as respostas
corretas.)
A. comandos ALTER DATABASE
B. comandos ALTER SESSION
C. comandos ALTER SYSTEM
D. Armazenando um arquivo de log redo online
E. Criação de um espaço de tabela
F. Criando um usuário
11 . Qual parâmetro controla a localização dos arquivos de rastreamento de processos de fundo?
(Escolha
responda.)
o melhor
A. BACKGROUND_DUMP_DEST.
B. BACKGROUND_TRACE_DEST.

C. DB_CREATE_FILE_DEST.
D. DIAGNOSTIC_DEST.
E. Nenhum parâmetro. A localização é plataforma específica e não pode ser alterado.
12 . Qual dessas visões pode ser consultado com êxito no modo nomount? (Escolha todos
corretos
respostas.)
A. DBA_DATA_FILES
B. DBA_TABLESPACES
C. V $ DATABASE
D. V $ DATAFILE
E. V $ INSTANCE
F. V $ SESSÃO
13 . Que vista irá listar todas as tabelas no banco de dados? (Escolha a melhor resposta.)
A. ALL_TABLES
B. DBA_TABLES
C. USER_TABLES, quando ligado como SYS
D. V $ FIXED_TABLE

Respostas de auto-teste
1. A , B , C , e E . Tanto o ouvinte banco de dados eo próprio banco de dados deve estar
Bancoemdeexecução para usar
dados Express. Também é possível o serviço de escuta HTTP pode não estar no
porto de 5500, e o endereço de auto-retorno só funcionará se você estiver executando o
padrão
anavegador
máquina doemservidor de banco de dados.
D está incorrecta. O agente de controle de nebulosidade não é necessário para usar o
2. Database Express.
A e B . Ambos HTTP e HTTPS podem ser utilizadas, desde que uma escuta apropriado
porta tenha sido configurado com XDB.
C e D são incorrectas. Oracle Net e IPC são os protocolos que podem ser usados pelo
usuário
processos entrar em contato com o servidor, não por navegadores para entrar em contato
3. banco de dados
B . O escopo Express.
padrão de ALTER SYSTEM é ao mesmo tempo, ou seja, memória e
spfile.
A e C são incorrectas. A está incorreta porque essa configuração terá sido substituído
pelo
configuração no segundo comando. C está incorreta porque a configuração de nível de
sessão perdidos
foram terá durante o reinício da instância.
4. D . Esta é a técnica para mudar um parâmetro estático.
A , B , e C são incorrectas. A está incorreta porque os parâmetros estáticos pode ser
alterado,
apenas com ummasdesligamento. B e C estão incorretas porque os parâmetros estáticos não
podesessão
uma ser alterado
em execução
para ou instância.
5. Um . Estes são os arquivos que compõem um banco de dados, e todos devem ser
sincronizados se o
banco de dados é abrir.
B , C , e D estão incorrectos. B está incorreta porque esses arquivos não são,
parteestritamente
do banco defalando,
dados. C está incorreta porque um problema com uma cópia controlfile
significaria
que o banco de dados não pôde ser montado, nunca mente aberta. D está incorreta porque
SMON
mecanismode de recuperação de instância pode corrigir problemas apenas em arquivos de
6. dados,
B .eMontagem
não qualquer outrade
da base coisa.
dados é o processo de abertura da controlfile (todas as cópias
dos mesmos).
A , C , D , e E são incorrectas. A está incorreta porque o arquivo de parâmetro é
necessárioCapenas
NOMOUNT. , D , e para
E estão incorretas porque esses tipos de arquivos são necessários
somente para aberto
modo.
7. D . Um encerramento imediato é limpo, por isso será necessário nenhuma recuperação.
A , B , e C são incorrectas. Sem recuperação ou reversão será exigido; todo o trabalho
ter sido
seráfeito como parte do encerramento.
8. B . O modo de desligamento padrão é desligamento normal, que vai pendurar até que
sessões
todos
de ter desligado voluntariamente.
A , C , e D estão incorrectos. A e C estão incorretas porque estes causaria um erro, não
a travar. D é incorrecta porque descreve TRANSACIONAL SHUTDOWN, não
Desligamento normal.
9. E . Nenhuma ação é necessária; recuperação será automática.
A , B , C , e D estão incorrectos. A está incorreta porque esta é uma coisa que você deve
nãodefazer
depois abortar. B está incorreta porque a recuperação de banco de dados não é necessário,
única instância
recuperação. C é incorrecta porque a recuperação de instância irá ocorrer automaticamente
no próxima
na modo de inicialização.
montagem D está incorreta porque nenhuma transação nunca vai ser perdido
como resultado de uma
ABORTO.
10. B e F . Nenhum destes afecta a estrutura da base de dados ou o exemplo; eles não são
importante o suficiente para gerar uma entrada de log de alerta.
A , C , D , e E são incorrectas. Todas estas são mudanças nas estruturas físicas ou de
e todas
memória,
essas alterações são registradas no log de alerta.
11. D . Este é o parâmetro utilizado para determinar a localização dos arquivos de
rastreamento
na verdade, todo odeRepositório
fundo e Automático de Diagnóstico.
A , B , C , e E são incorrectas. A está incorreta porque embora este parâmetro faz ainda
existir, ele será substituído. B está incorreta porque não existe tal parâmetro. C é incorrecta
porque este é o local padrão para arquivos de dados, não rastrear arquivos. E é incorrecta
embora haja um padrão específico da plataforma, ele pode ser substituído com um
porque
12. parâmetro.
E e F . Esses pontos de vista estão preenchido a partir do exemplo e será, portanto,
todasdisponível
as vezes. no
A , B , C , e D estão incorrectos. A e B são vistas de dados de dicionário, que apenas
podem
no modo ser vistos
aberto. C e D são vistas de desempenho dinâmico povoadas do controlfile e
são, portanto, disponível apenas no modo de montagem ou no modo aberto.
13. B . Os pontos de vista DBA listar cada objeto apropriado no banco de dados.
A , C , e D estão incorrectos. A está incorreta porque isso irá listar apenas as tabelas a
corrente
usuário tem permissões em-que pode ser todas as tabelas, mas provavelmente não é. C é
incorrecta
porque ele vai listar apenas as tabelas pertencentes a SYS. D é incorrecta porque esta é a
visãotodos
lista de que
os pontos de vista de desempenho dinâmico, nem todas as mesas.
CAPÍTULO 14

Networking da oracle

Objetivos do exame
• 062.4.1 Configurar Oracle Net Services
• 062.4.2 Usar ferramentas para configurar e gerenciar a Rede do Oracle
• 062.4.3 Configurar a Rede do lado do cliente
• 062.4.4 Entenda banco de dados Pooling Residente Connection
• 062.4.5 Configurar a comunicação entre bancos de dados
Oracle Net é a tecnologia que permite para a arquitetura cliente-servidor da Oracle. É o mecanismo
estabelecer sessões contra uma instância de banco de dados. Várias ferramentas podem ser usadas
de
para a criação ede Oracle Net, embora possa ser feito com nada mais do que um editor de texto
administração
simples. ofinal é um conjunto de arquivos que controlam um processo (o ouvinte de banco de dados)
resultado
queresposta
em inicia processos
a pedidos
dodeservidor
ligação e define o meio pelo qual um processo de utilizador irá localizar o
ouvinte.

Configurar Oracle Net Services


arquitetura cliente-servidor da Oracle usa o protocolo do Oracle Net para estabelecer e manter a
sessão
entre o cliente eo servidor. É possível usar isso com nenhuma configuração em tudo, mas todos os
vai, na prática, configurá-lo.
sites

Oracle Net e Paradigma Cliente-Servidor


Há muitas camadas entre o usuário eo banco de dados. No ambiente Oracle, nenhum usuário tem
acesso directo à base de dados nem o processo que o usuário está executando. arquitetura cliente-
sempre
servidor
garante que todo o acesso aos dados é controlado pelo servidor.
Um utilizador interage com um processo do utilizador. Este é o software em execução no
terminal
exemplo, local ser
poderia do usuário.
MicrosoftPara
Access além de um driver ODBC em um PC com Windows, que
poderia
algo escrito
ser em C e ligados com as bibliotecas Oracle Call Interface (OCI), e que poderia até mesmo
seu velho amigo SQL * Plus. Seja o que for, o objetivo do processo de usuário é solicitar que o
ser
inserir informações de que o processo pode usar para gerar instruções SQL. No caso do SQL * Plus,
usuário
o
processo apenas aguarda para você digitar algo em; um processo de usuário mais sofisticada vai
pintar
tela e de
umentrada de dados adequada validar a sua entrada e, em seguida, quando você clica no botão
Enviar, será
construir a instrução e enviá-lo para o processo do servidor.
O processo do servidor é um processo em execução na máquina do servidor de banco de dados
recebe
queaexecuta
partir doo processo
SQL-lo de utilizador. Este é o grupo cliente-servidor: a geração de SQL processo
de usuário,
processo servidor
um execução SQL.
Oracle Net fornece o mecanismo para o lançamento de um processo de servidor para executar
processo
códigodeem utilizador.
nome deEste
um é o estabelecimento de uma sessão. Então Oracle Net é responsável pela
manutenção
sessão, da a transmissão de SQL a partir do processo do usuário para o processo do servidor e
ou seja,
buscar
do processo
resultados
do servidor de volta para o processo do usuário.
A Figura 14-1 mostra os vários componentes de uma sessão. Um utilizador interage com um
processo
processo
usuário
de utilizador;
interage com
umaum processo servidor, via Oracle Net; um processo de servidor
interage com
instância; e o oexemplo, através dos seus processos de fundo, interage com a base de dados.
Figura 14-1 A base de dados é protegida do utilizador por várias camadas.

A divisão de cliente-servidor entre o processo do usuário e o processo do servidor será


bemgeralmente física
como lógico. Haverá uma rede entre as máquinas que hospedam os processos do usuário e do
máquina que hospeda o lado do servidor, implementado pela Oracle Net correndo em cima de tudo
protocolo de comunicações é compatível com o sistema operacional. Os protocolos suportados são
Transmission Control Protocol / Internet Protocol (TCP / IP), versão 4 e 6, com ou sem seguro
Sockets Layer (SSL); Janelas pipes nomeados; eo Protocolo direto Sockets (SDP) projetado para
redes InfiniBand. Todos os sistemas operacionais também têm um protocolo Inter-Process
Communication
proprietário para(IPC)
o sistema operacional. Isto, também, está disponível para Oracle Net para ligações
locais
o processo
ondedo usuário está na mesma máquina que o servidor.

Estabelecendo uma sessão


Quando um usuário, através de seu processo de usuário, quer estabelecer uma sessão contra uma
instância,
emitir um ocomando
usuário como este:

O que realmente acontece quando esse comando é processado? Em primeiro lugar, quebrar o
componentes.
comando em Háseu
um nome de usuário de banco de dados (SCOTT), seguido por uma senha de
banco
que é sensível),
de dados (TIGRE,
e as duas estão separadas por um delimitador (/). Depois, há um símbolo @,
seguido por uma string de conexão (ORCL12C). O símbolo @ indica que o processo de usuário que
uma redeé necessária. Se o símbolo @ e a seqüência de conexão são omitidos, o processo de usuário
conexão
assumir que a instância que o usuário deseja se conectar está em execução na máquina local e que o
será
sempre disponível protocolo IPC pode ser utilizado. Se o símbolo @ e uma string de conexão estão
incluídos,de
processo a usuário irá assumir que o usuário está solicitando uma conexão de rede para uma
instância em um remoto
máquina, embora, na verdade, o usuário pode ser saltando fora a placa de rede e de volta para a
máquina
sobre o qual eles são registados.

Ligar a uma instância local


Mesmo quando você se conectar a uma instância em execução na sua máquina local, você ainda usa
Oracle Net.
sessões do Oracle
Todos usar um protocolo de rede para implementar a separação de código do usuário a
partirpara
mas do código do servidor,
uma conexão local do protocolo é IPC. Este é o único tipo de conexão que não requer
um ouvinte base de dados; de fato, as ligações locais não requer qualquer configuração em tudo. O
informação necessária é dizer ao seu processo de usuário que exemplo você deseja se conectar.
único
Lembre-se
vários casosdisso
poderia ser executado em seu computador local. Você dá o processo desta informação
através de uma variável de ambiente. Figura 14-2 mostra exemplos disso no Windows.
Figura 14-2 conexões banco de dados local no Windows

resolução de nomes
Ao conectar através de uma rede, a primeira etapa é trabalhar para fora exatamente o que é que você
desejaEste
para. conectar
é o processo de resolução de nomes. Se a sua declaração de conexão inclui a seqüência de
@ Orcl12c, Oracle Net tem que trabalhar para fora o que se entende por orcl12c. Isto significa que a
conexão
corda temem
resolvido quecertas
ser partes de informação: o protocolo que pretende utilizar (assumir que este é
TCP),
o endereço IP no qual o ouvinte de banco de dados está em execução, a porta que o ouvinte está
monitorando
solicitações de entrada de ligação, e o nome do exemplo (que não necessita de ser o mesmo que o
conectar string) ao qual você deseja se conectar. Existem variações; em vez de um endereço IP, o
string de conexão pode incluir um nome de host, que então é ainda mais resolvido para um endereço
IP pelo Name System mecanismo (DNS) resolução. Você pode configurar um número de maneiras
Domain
de
Resolver conectar strings de endereço e nomes de instância, mas uma maneira ou de outra resolução
do nome dá o seu processo de usuário informação suficiente para ir através da rede para um ouvinte
processo
edesolicitar
banco de uma
dados
conexão a uma instância particular.

O lançamento de um Process Server


O ouvinte de banco de dados, em execução na máquina servidor, monitora uma ou mais portas em
um ou de
placas mais
interface de rede para solicitações de conexão de entrada. Quando se recebe uma
solicitação
ouvinte devedeprimeiro
conexão,validar
o se a instância requerida está realmente disponível. Assumindo que ele
o ouvinte vai lançar um novo processo de servidor para atender o usuário processo. Assim, se você
é,
tem um mil
usuários fazer logon simultaneamente a sua instância, você estará lançando um milhar de processos
do servidor.
No ambiente TCP, cada processo servidor dedicado lançado por um ouvinte vai adquirir uma
número de porta TCP exclusivo. Este será atribuído em tempo de inicialização do processo pelo
sistema operacional
algoritmo porta-mapeamento.
do O número de porta é passado de volta para o processo de utilizador
pelo ouvinte
Alguns sistemas
(ou operacionais,
sobre o soquete já aberto para o ouvinte é transferido para o novo porto
número), eo processo de usuário pode se comunicar diretamente com seu processo de servidor. O
ouvinte
agora tem
terminou o seu trabalho e aguarda o próximo pedido de conexão.

Criando um Listener de banco de dados


Um ouvinte é definido em um arquivo, o arquivo listener.ora, cuja localização padrão é o
ORACLE_HOME / network / admin. No mínimo, o arquivo listener.ora deve incluir um
seção para um ouvinte que afirma o seu nome, o protocolo eo endereço de escuta que vai usar. Você
pode
configurar vários ouvintes no único arquivo, mas todos eles devem ter diferentes nomes e endereços.

EXAME TIP Se o ouvinte banco de dados não está em execução ou está parado, sem novos
processos mas
-lançado, de servidor
isso nãopode
afetará
ser todas as sessões existentes que já foram estabelecidos.

Este é um exemplo de um arquivo listener.ora:


A primeira seção deste arquivo define um ouvinte chamado ouvinte, monitorando o nome da
máquina
na porta local1521. A segunda seção define outro ouvinte chamado list2. Este ouvinte é
padrão,
monitorização porta 1522 em nome de host, tanto o endereço e um endereço de auto-retorno.
Para criar um ouvinte, você não precisa fazer nada mais do que criar uma entrada no arquivo
iniciá-lo.
listener.ora
No Windows,
e depois o ouvinte será executado como um serviço do Windows, mas não há
necessidade
serviço explicitamente;
de criar o ele será criado implicitamente a primeira vez que o ouvinte é iniciado. A
partirquer,
você de então,
ele pode
se ser iniciado e interrompido como qualquer outro serviço do Windows.

DICA Você pode executar um ouvinte completamente em padrões, sem um arquivo listener.ora em
tudo. Ele endereço
qualquer irá escutarresolve hostname da máquina, na porta 1521. Evite isso para evitar confusão.
Sempre configurar o arquivo listener.ora para tornar a sua Ambiente Oracle Net auto-documentado.

Registro Dynamic Service


Para iniciar sessões contra uma instância, o ouvinte precisa saber o que instâncias são atualmente
em execução no servidor. Esta é a parte final do enigma. É possível codificar uma lista de instâncias
no arquivo listener.ora, mas isso não é considerado a melhor prática. A técnica aprovada é contar
Registro de serviço dinâmico.
com
Cada banco de dados oferece um ou mais serviços. Um serviço é um nome lógico para que as
anexar
sessões
através
podem
do exemplo. Diferentes serviços dentro do banco de dados pode ter características
diferentes
(Por exemplo, para a tolerância de falhas). Haverá sempre um serviço padrão nomeado após o banco
de dados,
que muitas vezes é o mesmo nome que a instância, que é muitas vezes o mesmo nome como o alias
líquida deem
definido serviços
um arquivo tnsnames.ora e usado em seqüências de conexão. Quando uma instância
começa,
olhar parapor
umpadrão
ouvinteelesobre
irá o endereço para o qual o nome da máquina resolve usando a porta 1521.
Se houver
é de fato um ouvinte em execução no endereço: porto, o banco de dados irá registrar seu nome de
serviço (ou
nomes) com o ouvinte, e o ouvinte, então, ser capaz de se conectar usuários. Quando o banco de
dadosbaixo,
para é fechado
ele irá cancelar o registro próprio do ouvinte. Este é o processo de registro dinâmico.

EXAME DICA É o registro de ouvinte (LREG) processo de fundo que registra serviços com
o ouvinte.
Durante o tempo de vida do exemplo, o processo LREG reregisters repetidamente com o
Assim,
ouvinte.
se o ouvinte está parado e iniciado, ele vai se tornar consciente do banco de dados da
próxima
tenta registar.
vez LREG

servidor compartilhado
A arquitetura de rede descrito até agora é o servidor dedicado arquitetura. Cada processo é utilizador
conectada a um processo de servidor, lançado pelo ouvinte para manutenção que uma sessão. Uma
é o servidor compartilhado arquitetura, onde uma relativamente pequena piscina de processos de
alternativa
servidor
maior número
de serviços
de sessões
de uma
de grande
usuário.

As Limitações de Arquitetura Servidor Dedicado


Como log mais usuários para sua instância, são lançados mais processos do servidor. Este não é um
problema
medida emcomo
que a Oracle está em causa. O ouvinte de banco de dados pode lançar tantos processos,
conforme
pode havernecessário,
limites do embora
sistema operacional sobre a velocidade com que ele pode lançá-los. Então,
uma vezsão
sessões queestabelecidas,
o não há limite para o número que o monitor do processo (PMON) pode
gerenciar
(Embora o seu sistema operacional pode ter limites para o número de processos que ele pode
suportar
para trocas
relacionado
de contexto e memória).
Um computador pode fazer apenas uma coisa de cada vez menos que seja um
máquina,
multiprocessamento
caso em que cada simétrico
unidade
(SMP)
de processamento central (CPU) pode fazer apenas uma coisa
de cada operacional
sistema vez. o simula processamento simultâneo usando um algoritmo para compartilhar ciclos
de CPU
todos os através
processos atualmente em execução. Este algoritmo, muitas vezes referida como um time-
slicing ou tempo-algoritmo , se encarrega de alocar alguns ciclos de CPU para cada processo, por sua
compartilhando
vez. O interruptor
tomando um processode fora do CPU para colocar outro processo sobre a CPU é chamado de troca de
contexto . Contexto
interruptores são caros; o sistema operacional tem que fazer um monte de trabalho para restaurar o
estado de cada
processo, uma vez que é trazido para a CPU e depois salvar seu estado quando ele é desligado da
CPU. Como
mais usuários se conectar à instância, o sistema operacional tem de contexto alternar entre mais e
processos do servidor. Dependendo do seu sistema operacional, isso pode causar uma degradação
mais
grave em
desempenho. Um sistema operacional de mainframe decente pode contexto alternar entre dezenas de
milhares desem problemas, mas mais recente (e mais simples) sistemas operacionais, como Unix e
processos
Windows
pode não ser bom em correr milhares, ou mesmo apenas centenas, de processos concorrentes.
pode degradar drasticamente porque uma grande proporção da capacidade de processamento do
atuação
computador
-se com a gestãoé levado
das trocas de contexto, deixando uma quantidade relativamente pequena de
capacidadepara
disponível de processamento
realmente fazer o trabalho.
Além disso, problemas de memória pode ocorrer como mais sessões são estabelecidas. Os
si não
processos
são um do problema
servidorporque
reais todos os sistemas operacionais modernos utilizam memória
partilhadaé quando
processo carregadoa mesma
mais do que uma vez. Assim, o lançamento de um milhar de processos do
servidor não
memória do que
deveo demorar
lançamentomaisde um. O problema surge com a Global Area o Programa (PGA). A
PGA é um
bloco de memória associado a cada processo do servidor para manter o estado da sessão, e é um
área de trabalho para operações como linhas de classificação. Claramente, os PGAs não pode estar
na memória
contêm dados compartilhada;
exclusivos para
eles
cada sessão.
Portanto, no ambiente de servidor dedicado, o desempenho pode cair se o seu funcionamento
sistema tem problemas de gestão de um grande número de processos simultâneos, e que o problema
exacerbada se a sua máquina servidor não tem memória suficiente. Note-se que ele realmente não se
será
importa
as sessões
se são realmente fazendo alguma coisa. Mesmo se as sessões são ocioso, o sistema
operacional
trazê-los devee ainda
dentro fora do CPU e possivelmente página do PGA apropriado para a memória principal
de troca de acordo com seu algoritmo de cortar o tempo. Chega um ponto em que não importa o que
arquivos
você faz
forma dena
upgrades de hardware, o desempenho começa a degradar-se por causa do sistema
ineficiências na gestão de mudanças de contexto e paginação. Estes não são problemas da Oracle,
operacional
mas para a Oracle oferece a opção da arquitetura de servidor compartilhado. Isso permite que um
superá-los,
grande
de usuário
número
processos a serem servidos por um número relativamente pequeno de processos do
servidor compartilhado,
reduzindo drasticamenteassim
o número de processos que o sistema operacional do servidor tem de gerir.
Como umadicional, o uso de memória também pode reduzir.
benefício

A Arquitetura de Servidor Compartilhado


Um ponto a destacar imediatamente é que o servidor compartilhado é implementado puramente no
lado
O processo
do servidor.
do usuário e o software de aplicação não têm nenhuma maneira de dizer que nada
processo
mudou. ode usuário emite uma seqüência de conexão que deve resolver para o endereço de um
ouvinte (ou
serviço e o nome
de umde exemplo).
um Em troca, ele receberá o endereço de um processo do lado do servidor
que ele
acho quevaié um servidor dedicado. Ele, então, avançar para enviar instruções SQL e receber
conjuntos
como o processo
de resultados;
do usuário
tão longe
está em causa, absolutamente nada mudou. Mas o lado do servidor é
diferente.

EXAME TIP servidor compartilhado estiver configurado no lado do servidor, mas o cliente pode
exigir quer
servidor ou um
um compartilhada
servidor dedicado, especificando quer SERVER = dedicado ou SERVER =
compartilhados
os TNS ligar cadeia.
em

servidor compartilhado é implementado por processos adicionais que fazem parte da instância.
Eles são
processos em segundo plano lançado em tempo de inicialização de instância. Existem dois tipos de
processos: compartilhados.
servidores despachantes e Há também algumas estruturas de memória fila extras dentro System
Global Area
(SGA), e o ouvinte de banco de dados modifica seu comportamento para servidor compartilhado.
Quando um exemplo
configurado para servidor
que écompartilhado se inicia, para além dos habituais processos em segundo
plano, um ou mais
processos expedidor começar. Os despachantes, como qualquer outro processo TCP, executados em
uma portapelo
alocados TCPmapeador
única de porta de seu sistema operacional. Eles entrar em contato com o ouvinte e
registrar
ou mais processos
com ele. 1do servidor compartilhado também começar. Estes são conceitualmente
semelhante
processo doaservidor,
um dedicado
mas eles
normais
não estão vinculados a uma sessão. Eles receberão instruções SQL,
analisar e e gerar um conjunto de resultados. No entanto, eles não receberão as instruções SQL
executá-los,
a partir de um processo de utilizador; em vez disso, eles vão lê-los a partir de uma fila que será
diretamente
apreenchida
partir de qualquer
com declarações
número de processos de utilizador. Da mesma forma, os servidores
compartilhados não buscar conjuntos de resultados para um usuário
processar directamente; em vez disso, eles colocaram os conjuntos de resultados em uma fila de
resposta.
As próximas perguntas são como é que as declarações gerado pelo usuário entrar na fila que é
processos
lido pelo
do servidor, e como resultado obter buscada para os usuários? Este é o lugar onde os
despachantes
Quando entrar. de usuário contata um ouvinte, em vez de lançar um processo servidor e
um processo
conectá-lo
o processo ao
do utilizador, o ouvinte passa de volta o endereço de um expedidor. Se houver apenas um
o ouvinte irá conectá-lo a todos os processos do usuário. Se houver vários despachantes, o ouvinte
distribuidor,
load-balance as solicitações de conexão de entrada através deles, mas o resultado final é que muitos
vai
processos
vai de usuário
ser ligado a cada distribuidor. Cada processo usuário estará sob a impressão de que é
comunicando-se com um processo de servidor dedicado, mas não é. É a partilha de um despachante
com muitos
processos deoutros
utilizador. Ao nível da rede, muitos processos usuário terá conexões multiplexados
a uma porta usada pelo distribuidor.
através

EXAME TIP conexão de uma sessão para um despachante persistir para a duração da sessão, ao
a conexão com o ouvinte, que é transitória.
contrário

Quando um processo usuário emite uma instrução SQL, ele é enviado para o despachante. O
despachanteque
as declarações coloca
recebetoda
para uma fila. Essa fila é chamado de fila comum , porque todos
despachantes compartilhá-lo. Não importa qual o Dispatcher um processo de usuário está conectado,
todas
na filaascomum.
declarações acabam
Todos os processos do servidor compartilhado monitorar a fila comum. Quando uma instrução
fila chega
comum, ao o primeiro servidor compartilhado disponível pega. A partir de então, a execução
prossegue
o habitual de através
análise-se ligam-ciclo executar, mas quando se trata da fase de esforço, é impossível
para o para buscar o resultado definido para o processo de usuário compartilhada; não existe
servidor
nenhuma eo
processo ligação
servidor
entre
compartilhado.
o utilizador Então, em vez disso, o servidor compartilhado coloca o
conjunto
que é específico
de resultados
para o em
despachante
uma fila de
que
resposta
recebeu o trabalho em primeiro lugar. Cada dispatcher
monitoriza
própria fila adesua
resposta, e sempre que qualquer resultado são colocados sobre ele, o despachante vai
buscá-las ede volta para o processo de usuário que originalmente emitiu o comunicado.
buscá-los
EXAME TIP Há uma fila de entrada comum compartilhada por todos os despachantes, mas cada
distribuidor
própria fila de
temresposta.
a sua

Um resultado do mecanismo de expedidores e filas é que qualquer instrução de qualquer


podia
processo
ser executado
de utilizador
por qualquer servidor compartilhado disponível. Isto levanta a questão de como
o estadopode
sessão da ser mantida. Seria perfeitamente possível para um processo de usuário para emitir, por
exemplo, FOR
SELECT um UPDATE, DELETE, e um COMMIT. Em uma conexão de servidor dedicado normal,
este
não é um problema porque a PGA (que está ligada ao processo de um servidor que está a gerir o
sessão) armazena informações sobre o que a sessão estava fazendo, e, portanto, o servidor dedicado
irá
sabe o que COMMIT eo que bloqueios para liberar. O PGA para uma sessão de servidor dedicado
irá armazenar
Dados da sessão de sessão, seu estado cursor, o seu espaço espécie, e seu espaço de pilha. Mas no
servidor
meio ambiente,
compartilhado
cada declaração pode ser escolhido fora a fila comum por um servidor
compartilhado
processo, que não
diferente
terá nenhuma idéia o que o estado da transação é. Para contornar este problema, a
compartilhados lojas sessão do servidor a maioria dos dados da sessão no SGA, ao invés de em um
PGA. Então,
sempre que um servidor compartilhado pega um trabalho fora da fila comum, ele irá para o SGA e se
conectar
bloco apropriado
à de memória para descobrir o estado da sessão. A memória usada no SGA para
cada sessão de servidor compartilhado é conhecido como o usuário Global Area (UGA) e inclui tudo
o que
ter sido
faria
em um PGA, com exceção do espaço de pilha da sessão. Este é o local onde salvar a
memória
virá. Oracle pode gerenciar a memória no pool compartilhado muito mais eficaz do que pode em
muitos PGAs separadas.
As seguintes estruturas de memória sessão são armazenados no SGA quando servidor
implementadas:
compartilhado é

• área de Sort
• área de Hash
• área de criação Bitmap
• área de junção de mapa de bits
• estado Cursor
• dados da sessão do usuário

As seguintes estruturas de memória sessão permanecem fora do SGA. Estes podem ser pensados
run-time
comoinformações
o para uma chamada em andamento:

• espaço de pilha
• As variáveis locais

TIP EXAME Em servidor compartilhado, o que estruturas de memória PGA não ir para o SGA?
eespaço
variáveis
de pilha
locais.

A parte do SGA usado para armazenar UGAS é a grande piscina. Este pode ser configurado
commanualmente
o parâmetro LARGE_POOL_SIZE, ou ele pode ser gerenciado automaticamente.
É impossível utilizar uma sessão do servidor compartilhado para iniciar ou encerrar o caso. Isto é
porque os processos necessários para apoiar servidor compartilhado (despachantes e processos
servidores
-se parte docompartilhados)
exemplo. são

Configurando Servidor Compartilhado


Sendo um recurso do lado do servidor, não há necessidade de configuração do cliente em tudo além
perfeitamente normal

do lado do cliente Oracle Net (o tnsnames.ora e arquivos SQLNET.ORA), conforme detalhado


anteriormente.
lado,
automaticamente Noconfigurados
servidor não
servidor compartilhado temservidor
para nada a compartilhado
ver com o banco de dados
através somente
do registo a instância.
instância O
dinâmica.
ouvinte
Segue que
servidor será
compartilhado é configurado através de parâmetros de inicialização de instância. Há uma
série de relevantes
parâmetros, mas dois são tudo o que são geralmente necessários: shared_servers e despachantes.
O primeiro parâmetro a considerar é shared_servers. Isto controla o número de servidores
serácompartilhados
lançado em tempo que de inicialização de instância. servidor compartilhado usa um mecanismo de
fila, mas
deve havero ideal
filas. éDeve
lá sempre haver um processo de servidor pronto e esperando para cada trabalho
é colocado na fila comum pelos despachantes. Portanto, shared_servers deve ser definido para o
que
número máximo de solicitações simultâneas que você espera. Mas se houver uma súbita explosão de
atividade,
não precisavocê
se preocupar muito, porque a Oracle vai lançar servidores compartilhados adicionais, até
o valor
especificado para max_shared_servers. Por padrão, shared_servers é 1 se despachantes está definido.
Se o
max_shared_servers parâmetro não for definido, o padrão é de um oitavo do parâmetro processos.
O parâmetro despachantes controla quantos processos expedidor para lançar na inicialização da
tempoinstância
e como eles irão se comportar. Este é o único parâmetro obrigatório. Há muitas opções para
parâmetro, mas geralmente dois será suficiente: quantas começar e que protocolo deve escutar.
este
Entre as opções mais avançadas são aqueles que permitem que você controle a placa de porta e de
redeoem
que despachante vai ouvir e o endereço do ouvinte (ou ouvintes) com o qual ele vai
registo. No entanto, normalmente você pode deixar mapeador de porta de seu sistema operacional
atribuir uma porta
local_listener parâmetro
e usar para
o controlar quais ouvinte os despachantes irá registar. os
parâmetro define um limite superior para o número de despachantes que você pode começar, mas ao
max_dispatchers
contrário com
servidores, compartilhada
a Oracle não vai começar despachantes extras sob demanda. Você pode, no entanto,
lançar adicional
despachantes, a qualquer momento, até esse limite.
Por exemplo, para habilitar a arquitetura de servidor compartilhado, ajustar os dois parâmetros
seguinte
críticos
maneira:
como

Ajustando o servidor compartilhado é vital. Não deve ser sempre servidores compartilhados
solicitações
suficientes
da para
fila comum
retirar da
à medida
fila que chegam, e deve sempre haver suficientes despachantes que
que pode atender as solicitações de entrada à medida que chegam e retornar resultados como eles
estãode
filas enfileirados
resposta. uso
ao de memória por sessões de servidores compartilhados no SGA deve ser
monitorado.
conversão deDepois
servidor dededicado para servidor compartilhado, o SGA terá de ser substancialmente
maior.
Quando usar servidor compartilhado
Você não vai encontrar uma grande quantidade de conselhos duro na documentação do Oracle sobre
quando usar
servidor ou quantos
compartilhada
despachantes e servidores compartilhados que você precisa. O ponto principal
para pendurar sobre
servidor compartilhadoa é éque
uma facilidade que você usar, porque você é forçado a, não algo que você
usa automaticamente.
aumenta a escalabilidade,
isto mas talvez à custa de reduzir o desempenho. É bem possível que qualquer
declaração irá demorar mais tempo para executar em um ambiente de servidor compartilhado do que
um
se fosse executado
servidor dedicado, porque
num ele tem que ir através de filas. Ele também pode levar mais recursos da
CPU por causa
enqueuing disso actividade. Mas no geral, a escalabilidade do seu sistema vai aumentar
e dequeuing
dramaticamente. Mesmo que cada pedido é marginalmente mais lento, você será capaz de realizar
muitos mais por segundo através do exemplo.
solicitações

Considere um processamento de transações online (OLTP) ambiente, com centenas de telefone


operadores em um call center. Cada operador pode passar um ou dois minutos por chamada,
coletandoe ointroduzi-los
detalhes chamador no processo de usuário. Então, quando o operador clica no botão Enviar, o
processo de usuário constrói uma instrução de inserção e envia-lo para o processo do servidor. O
processo
pode passar
do por
servidor
todo o parse / bind / executar / buscar ciclo para a declaração em apenas alguns
centésimos
de um segundo. Claramente, não importa o quão rápido os funcionários trabalham, os seus processos
do tempo.
servidorMasestão
o sistema
ociosos operacional
99,9 por cento
ainda tem de mudar todos os processos dentro e fora do CPU
de acordo com seu algoritmo de compartilhamento de tempo. Por outro lado, considere um ambiente
de usuários
os data warehouse.
enviam Aqui,
consultas que pode ser executado por um longo tempo. Os carregamentos de lote
de dadosSempre
corrida. será igualmente longo grandes trabalhos é submetido, o processo do servidor para essa
que um desses
sessão poderia
trabalhando a todo
ser vapor durante horas em apenas uma declaração.
Deve ser evidente que servidor compartilhado é ideal para o gerenciamento de muitas sessões
transações,
fazendoonde
curtaa maior parte do trabalho é no lado do cliente da divisão de cliente-servidor. Nesses
circunstâncias, um servidor compartilhado será capaz de atender dezenas de sessões. Mas para
processamento
trabalho, servidores
em lote
dedicados são muito melhores. Se você enviar uma tarefa de grande lote através
de um servidor
sessão,
duração ele
do vai compartilhado
trabalhar,
trabalho, mas ele
deixando vai amarrar
todos uma deusuários
os seus outros sua pequena piscina depara
para competir processos do servidor
os servidores
compartilhado
compartilhados
quantidade para o da rede
de tráfego
restantes. o envolvida em carregamentos de lote a partir de um processo de
utilizador
define de volta
e na busca
para umde grande
processo resultado
de usuário também fará com que a disputa por despachantes.
A segunda classe de operações que são melhor feito através de um servidor dedicado é banco de
trabalho
dadosde administração. a criação do índice, as operações de manutenção da tabela, e backup e
recuperação de trabalho
através Recovery Manager terá um desempenho muito melhor através de um servidor dedicado. E é
impossível emitir inicialização ou desligamento comandos através de um servidor compartilhado; os
logicamente
servidores
parte da instância
compartilhados
e, portanto,
sãonão está disponível no momento em que emitir um comando de
inicialização. Então
administrador deve sempre
o ter uma conexão de servidor dedicado.

O padrão de configuração Servidor Compartilhado


A 12 c instância de banco de dados irá executar o servidor por padrão compartilhado, mas apenas
para conexões
Essas consultasatravés
mostrardoa XDB.
configuração padrão, que é adequada para executar o banco de dados
(lembre-se do Capítulo 13 que banco de dados Express requer XDB a ser configurado):
Expresso

Use ferramentas para configurar e gerenciar o Oráculo


Rede
Configurando o Oracle Net não é nada mais do que criar os arquivos de configuração. Há três deles:

• O listener.ora arquivo de configuração existe no lado do servidor e define o funcionamento do


ouvinte banco de dados.
• O tnsnames.ora arquivo de configuração é um arquivo do lado do cliente usado para resolução
degeralmente
nomes. Haverá
ser uma cópia no servidor, bem como para facilitar a correr clientes na máquina
do servidor.
• O sqlnet.ora arquivo de configuração é um arquivo opcional que pode existir no cliente e
servidor
os lados. Ele define vários padrões que afetarão todos os clientes e ouvintes.

Duas ferramentas gráficas são fornecidas para criar e editar esses arquivos: o Gerenciador de
Rede eode Configuração Net.
Assistente

A Net Manager
Para iniciar o Gerenciador de Rede, executar netmgr partir de uma linha Unix; no Windows, você
vai encontrá-lo no início
cardápio.
A árvore de navegação Net Manager tem três ramos. O ramo Perfil cria ou edita o
arquivo sqlnet.ora e é usado para definir as opções que podem ser aplicados a ambos os lados cliente
e servidor
Este é o lugar
do Oracle.
onde, por exemplo, você pode configurar o rastreamento detalhado de sessões Oracle
Net ou
14-3 (como na
) permitir Figura
que certos métodos de resolução de nome. O ramo Naming serviço é usado para
resolução de nomes do lado do cliente no arquivo tnsnames.ora. O ramo Ouvintes é usado para
configurar
ouvintes de banco de dados no arquivo listener.ora.
configurar
Figura 14-3 editor Perfil de Net Gerente

O Assistente de Configuração Net


netca lançamento executando o executável $ ORACLE_HOME / bin / netca no Linux ou navegando
através do menu Iniciar no Windows. Assistente de Configuração Net é simples de usar. Ele não tem
a funcionalidade do Net Manager e pode configurar apenas ouvintes banco de dados e conectar
todos
tnsnames
cordas.

O Utilitário de Controle Listener


O utilitário de controle Listener é o executável $ ORACLE_HOME / bin / lsnrctl no Linux ou
% ORACLE_HOME% \ bin \ lsnrctl.exe no Windows. lsnrctl comandos podem ser executados
directamente
sistema operacional
a partirimediato
de um ou através de uma interface de usuário simples. Para todos os
comandos,
o você deve
nome do ouvinte, seespecificar
não é o nome padrão do ouvinte. A Figura 14-4 mostra como verificar
o status do ouvinte padrão LISTENER chamado e iniciá-lo. Note-se que o ouvinte começa escutando
o endereço jwvaio na porta 1521, mas não está oferecendo uma conexão com qualquer serviço. Isso
é porque
apenas começou,
ele e nenhuma instância de banco de dados têm registado com ele. O registro vai
acontecer
automaticamente dentro de um minuto, como instâncias descobrir que ele é iniciado.
Figura 14-4 Iniciando o ouvinte padrão

O utilitário lsnrctl tem uma interface de usuário simples. A Figura 14-5 mostra a partir da
interface,o status do ouvinte padrão, desligá-lo, e sair da ferramenta. Observe a saída
verificando
do comando STATUS. O ouvinte está escutando na porta 1521 para conexões TCP.
Estas serão as solicitações de logon. Ele também está escutando na porta 5500 para Hypertext
Transfer sobre
(HTTP) Protocol
TCPS. Isto é para conexões de navegadores ao banco de dados Express.
Figura 14-5 Usando a interface do usuário lsnrctl para verificar o status e, em seguida, parar o
ouvinte chamado
OUVINTE

A variável TNS_ADMIN Ambiente


Configurando o Oracle Net, manualmente ou através de ferramentas gráficas, consiste em nada mais
do que
criar e editar esses três arquivos de texto: tnsnames.ora, SQLNET.ORA e listener.ora. Onde é que
arquivos residem? O local padrão onde os processos da Oracle vai olhar para eles é o diretório
esses
$ ORACLE_HOME / network / admin (Linux) ou% ORACLE_HOME% \ network \ admin
(Windows).
algumas circunstâncias,
Dentro você não vai querer usar este diretório. Por exemplo, se você tem vários da
produtos instalados em uma máquina (vários lançamentos do banco de dados, o cliente Oracle, e um
Oracle
servidor de aplicativos talvez), cada um vai estar em sua própria casa Oracle, e, portanto, cada um
terá a própria
cópia sua dos arquivos.
Manter várias cópias dos arquivos (particularmente tnsnames.ora) idênticos pode ser
piordesagradável.
caso é quandoo centenas de PCs cliente têm cada um na sua cópia. Uma resposta é para
armazenar
em uma localização
os arquivos
central (que poderia ser um sistema de ficheiros montado na rede) e todos os
processos
ler os arquivos
para instruir
a partir desta localização não padrão. Fazer isso definindo o ambiente TNS_ADMIN
variável. Aqui está um exemplo em Linux:

E aqui está um exemplo no Windows:

Configurar a rede do lado do cliente


O lado do cliente do Oracle Net está configurado em um arquivo sqlnet.ora e (normalmente) um
tnsnames.ora.
arquivo sqlnet.ora o
é opcional, e muitos sites nunca vai usá-lo. A maioria dos sites, no entanto, usar
um tnsnames
Arquivo.
Para estabelecer uma sessão contra uma instância, o seu processo de usuário deve emitir uma
cordas
seqüência
resolvede
o endereço
conexão. de
queum ouvinte e o nome de uma instância ou serviço. A oracle fornece
quatro métodos de resolução de nomes: Easy Connect, nomenclatura local, de nomeação de diretório
e de
É provavelmente
nomeação externo.
verdade dizer que a maioria dos sites da Oracle usar nomenclatura local, mas não
há dúvida
que a nomeação de diretório é o melhor método para uma instalação grande e complexa.

Resolução Easy Connect Nome


O método de resolução de nomes Easy Connect é fácil de usar-lo não requer nenhuma configuração
em tudo.aMas
limitada um isso
protocolo:
é TCP. Os outros métodos de resolução de nomes pode usar qualquer um dos
outros suportado
protocolos, como TCP com secure sockets ou pipes nomeados. Outra limitação é que Easy Connect
não pode ser usado com qualquer um dos recursos mais avançados do Oracle Net, tais como
balanceamento
conecte-time failover
de carga
através
ou de diferentes rotas de rede. É justo dizer que Easy Connect é um
você como um administrador de banco de dados (DBA) vai encontrar prático de usar, mas não é um
método
método
seus usuários
de muito
finais.
usoEasy
para Connect é ativado por padrão. Você invocá-lo com a sintaxe como a
seguinte
string de conexão:

Neste exemplo, SQL * Plus usará TCP para ir para a porta 1521 no endereço IP ao qual o
hostname jwvaio resolve. Então, se há um ouvinte em execução nessa porta e endereço, ele irá pedir
ouvinte para gerar um processo servidor contra uma instância que está oferecendo um serviço
chamado
Resoluçãoorclz.
Local Naming Nome
Com nomenclatura local, o usuário fornece um nome alternativo, conhecido como um alias serviço
Oracle eo
corda, Net,
alias
para
é resolvido
a conexãopor um arquivo local para o endereço de rede completo (protocolo,
eendereço,
serviço ou
porta,
nome de instância). Este arquivo local é o arquivo tnsnames.ora infame, que causou
DBAs muito sofrimento ao longo dos anos. Considere este exemplo de um arquivo tnsnames.ora:

Este arquivo tnsnames.ora tem dois aliases Oracle Service Net definidos dentro dele: orclz e
aliases
teste.
sãoEstes
o que os usuários irão proporcionar em suas declarações de conexão. A primeira entrada,
orclz,
diz quesimplesmente
quando o @orclz seqüência de conexão é emitida, o seu processo de usuário deve usar o
protocolo
ir a jwvaioTCP para entre em contato com ele na porta 1521, e pedir o ouvinte monitorando essa
máquina,
porta para
sessão contra
estabelecer
a instância
umacom o nome do serviço orclz. A segunda entrada, teste, direciona os
usuáriosem
ouvinte a uma
uma máquina diferente, serv2.example.com , e pede uma sessão contra o instância
testdb.
chamada

DICA Não é necessário haver relação entre o alias, o nome do serviço e o nome da instância, mas
para o bem da sua sanidade normalmente você vai mantê-los o mesmo.

nomeação local suporta todos os protocolos e todos os recursos avançados do Oracle Net, mas
mantendo
arquivos tnsnames.ora em todas as suas máquinas cliente pode ser uma tarefa extremamente
demorado.
arquivo tnsnames.ora
o também é notoriamente sensível a variações aparentemente triviais em layout.
usando o gráfica do usuário (GUI), ferramentas ajudará a evitar tais problemas.
interface

Naming Directory e Naming externa


pontos de nomeação de diretório do usuário para um diretório Lightweight Directory Access
servidor para resolver aliases. LDAP é um padrão amplamente utilizado que a Oracle Corporation (e
Protocol (LDAP)
fornecedores de software tradicionais) está incentivando as organizações a adotar. Para usar
outros
nomeação
deve primeiro
de diretório,
instalar e configurar um servidor de diretório em algum lugar em sua rede. Oracle
fornece uma
servidor LDAP (Diretório do Oracle Internet) como parte do Oracle Application Server, mas você
não

tem que usar isso, se você já tem um Microsoft Active Directory, que será perfeitamente adequada.
IBM e Novell também vendem servidores de diretório em conformidade com o padrão LDAP.
Como nomenclatura local, nomeação diretório suporta todos os recursos, mas a Oracle Net, ao
usa contrário de nomenclatura
um repositório local, de diretório, por todos os seus detalhes de resolução de nomes.
central, o servidor
Isto éfácil
mais muitodemais
manter do que muitos arquivos tnsnames.ora distribuídos em toda a sua comunidade de
usuários
nomes inteiro.
externo é conceitualmente similar à nomeação de diretório, mas ele usa nomeação de
serviços
terceiros
tais como informações de Serviços de Rede da Sun (NIS +) ou os serviços de diretório
celular
que fazem
(CDS)
parte do Distributed Computing Environment (DCE).
O uso de listas e os serviços de nomes externo está fora do âmbito do Oracle Certified
Professional (OCP) syllabus.

Teste do Oracle Net Conectividade


Uma ferramenta de solução de problemas de valor inestimável é o utilitário tnsping. Este aceita uma
seqüência
se de conexão
ele funciona. Ela vaie,mostrar
em seguida, testa de resolução de nomes usado, os arquivos de configuração
o método
do Oracle
sendo lido,Net
os detalhes do que a corda resolve, e se há de fato uma escuta ouvinte
sobre esses detalhes. Não testar se o banco de dados está atualmente em execução, mas não tentar
acertar oe irá retornar uma mensagem de erro adequada se não puder.
ouvinte
Figura 14-6 mostra o uso de tnsping para testar uma seqüência de conectar pela primeira vez
semcom
sucesso.
sucesso e, em seguida,
O primeiro exemplo testa a tnsconnect orclz cadeia. O utilitário resolve o string usando arquivos
localizado no diretório C: \ app \ oracle \ product \ 12.1.0 \ dbhome_1 \ network \ admin, que dizem
que a
endereço é uma máquina chamada jwvaio e porta 1521. O serviço solicitado será orclz. O teste
sucede; há de fato um ouvinte sobre esse endereço e porta, e o ouvinte sabe de um serviço
chamado orclz. O segundo teste tenta resolver o nome orcla e falha, presumivelmente porque não
existe essa entrada no arquivo tnsnames.ora.

Figura 14-6 Usando o utilitário tnsping para testar a resolução de nome

Exercício 14-1: Configurar Oracle Net Neste exercício, você vai criar um Oracle Net completa
ambiente usando ferramentas gráficas e de linha de comando. Quaisquer diferenças entre Windows e
Linux
vai ser apontadas. Estes são os passos a seguir:

1. Crie um diretório para ser usado para os arquivos de configuração do Oracle Net e, em
seguida,
TNS_ADMIN
definir o variável para apontar para isso. Não importa onde o diretório é, desde que o
usuário Oracle tem permissão para criar, ler e escrever.
Aqui está um exemplo em Linux:

Certifique-se de que todo o trabalho a partir de agora é feito a partir de uma sessão onde a
variável
Aqui estáfoi
umdefinida.
exemplo no Windows:

Criar e definir o TNS_ADMIN chave como uma variável de cadeia no registro no Lar da
ramo. Este será tipicamente como se segue:
Oracle
HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ KEY_OraDB12Home1
Verifique se a variável está sendo lido usando o comando TNSPING de uma operação
prompt do sistema.

Isso irá retornar o erro “TNS-03505: Falha ao resolver o nome” porque não existem
arquivos
o diretórioemTNS_ADMIN. No Windows, pode ser necessário lançar uma nova linha de
comandos
pegar o novopara
valor TNS_ADMIN do registro.
2. Inicie o Gerenciador de Rede. No Linux, execute netmgr a partir de um prompt do sistema
operacional;
lançá-lo a no
partir
Windows,
do menu Iniciar. A linha superior da janela Net Manager irá mostrar o
localização dos arquivos Oracle Net. Se este não é o novo diretório, a variável
não foi definido corretamente.
TNS_ADMIN
A. Criar um novo ouvinte através da expansão da filial local da árvore de navegação,
destacando
Ouvintes e clicando em +.
B. Digite um nome ouvinte, newlist e clique em OK.
C. Clique em Adicionar endereço.
D. Para endereço 1, escolher TCP / IP como o protocolo e digite 127.0.0.1 como o anfitrião
e 2521
como a porta. A Figura 14-7 mostra este.

Figura 14-7 Criando um ouvinte com o Net Manager

3. Criar um novo nome do serviço, destacando Naming Serviço na árvore de navegação e


clicando +.
A. Digite NOVO como o nome de serviço de rede e clique em Avançar.
B. Selecione TCP / IP como protocolo e clique em Avançar.
C. Digite 127.0.0.1 como o nome do host e 2521 como a porta e clique em Avançar.
D. Digite SERV1 como o nome do serviço e clique em Avançar.
E. Clique em Concluir. Se você tentar o teste, ele irá falhar neste momento. A Figura 14-8
mostra este.

Figura 14-8 Criação de um nome de alias serviço tnsnames com a Net Manager

4. Salve a configuração clicando em Arquivo e Salvar Configurações de Rede de. Isto irá criar
a listener.ora e tnsnames.ora arquivos no diretório TNS_ADMIN.
Use um editor para verificar os dois arquivos.
LISTENER.ORA será parecido com este:

TNSNAMES.ORA será parecido com este:


5. A partir de um prompt do sistema operacional, inicie o ouvinte com newlist lsnrctl início.
6. A partir de um prompt do sistema operacional, testar a seqüência de conexão com tnsping
novo.
7. Ligue para o seu banco de dados usando a autenticação do sistema operacional, ignorando
qualquer
sqlplusouvinte,
/ sysdba.
com
8. Defina as SERVICE_NAMES e parâmetros local_listener para a instância em execução
(memória somente,

não o arquivo de parâmetro) e registrar o novo nome do serviço com o novo ouvinte, não
padrão.

9. A partir de um prompt do sistema operacional, confirmar que o novo serviço tem registado
com o novocom serviços lsnrctl newlist.
ouvinte
10. Confirme se o novo ambiente de rede é funcional, registando-se.

11. Voltar as mudanças para reverter a operação padrão.


A. Reinicie o banco de dados para retornar os parâmetros alterados na etapa 8 para seus
valores
B. Pare padrão.
o ouvinte com newlist lsnrctl stop.
C. elimina a variável TNS_ADMIN. No Linux, exportação TNS_ADMIN = ''. No
Windows,
remova a chave de registro TNS_ADMIN.

Entenda banco de dados Pooling Residente Connection


A arquitetura do Oracle Net descrito anteriormente é o servidor dedicado arquitetura, onde cada
conectar pedido de um processo usuário vai para um ouvinte, eo ouvinte gera um processo servidor.
o
processo de servidor persiste até os sessão termine, e é dedicada a servir que uma sessão. este
arquitetura é bom para um ambiente cliente-servidor, onde os usuários fazem logon e ficar conectado
por um fazendo
tempo, longo uso da sessão repetidamente.
Muitas aplicações não seguem este modelo. Eles têm um grande número de sessões que podem
muito
sercurta e não podem log on / off de forma ordenada. aplicações web tipificam essa situação.
Muitas aplicações web usam o pool de conexão para gerir esta situação. O servidor de aplicativos
software de camada intermediária estabelece um número relativamente pequeno de sessões
persistentes
uso temporário
e passes
de-los aos usuários sob demanda. Usando a conexão Residente banco de dados
Exterior
uma técnica
(DRCP)
para implementar
é uma funcionalidade semelhante para o software de camada
intermediária
pooling, tais como
que não
alguns
podeprodutos
fazer conexão
baseados em Apache. A DRCP pode escalar até dezenas de
milharessimultâneas,
sessões de o que seria além da capacidade de quase qualquer hardware se o dedicado
arquitetura de servidor está sendo usado.
A DRCP é ativado por padrão, configurado para iniciar um mínimo de 4 processos do servidor,
máximo
até umde 40. servidores inativos será encerrada após 300 segundos. Para fazer uso da piscina com
Conectar-se a resolução de nomes, basta adicionar reunidas para o fim da seqüência de conexão.
fácil
Aqui está um exemplo:

Ou você pode passar por um alias tnsnames.ora como este:


EXAME DICA Quando você usaria um DRCP? Você poderia usá-lo quando muitos servidor de
sessões de conectar-se ao mesmo esquema de banco de dados, mas usá-lo para pedidos apenas
aplicativos
curtas.
Configurar a comunicação entre bancos de dados
Até agora, temos discutido Oracle Net no contexto de usuários que se conectam a instâncias de
banco
Net de dados.
também podeOráculo
ser usado para comunicações entre bancos de dados. Em outras palavras, uma
sessão
um banco
de usuário
de dadoscontra
pode executar instruções SQL em outro banco de dados. Isto é feito através de
um banco
ligação. Existem
de dados
várias opções para a criação de links de banco de dados (tudo a ver com
segurança),
exemplo é mostrado
mas umaasimples
seguir:

Isto define um link de banco de dados do banco de dados atual para um banco de dados remoto
identificado
tnsnames.ora pelo PROD corda e tem incorporado dentro de si as credenciais de logon para ser
conectar
usado quando
invocando código através do link. O link existe no esquema do usuário atual, SCOTT, e só SCOTT
pode usá-lo. Quando uma instrução como a seguinte é emitido, a sessão será transparente lançar um
sessão no banco de dados remoto, registar-se-lo como o usuário FRED, e executar a consulta lá:

Os resultados serão enviados de volta para a sessão de banco de dados local e depois voltou para o
processo
que a resolução
do usuário.
de nomes
Nota ocorre no servidor, não o cliente. O cliente não precisa de qualquer
informação
a respeito dos detalhes de conexão do servidor remoto; estes detalhes precisam estar disponíveis em
arquivo tnsnames.ora no lado do servidor.
um

Exercício 14-2: criar e usar um banco de dados link Este exercício assume que apenas um banco
de dados é então o link será um link de auto-retorno (de um banco de dados e voltar para ele). siga
disponível,
passos:
estes

1. Conectado como SYSTEM usuário, criar um link de banco de dados.

(Substitua um tnsnames apelido trabalhando para 'orcl'. Note-se que este deve ser colocado
entre única
citações.)
2. Teste o link.

3. Resolução de problemas.
Os problemas mais comuns com links de banco de dados são de que o nome de usuário /
senha
na embutido
ligação estão errados e que o alias tnsnames não funciona. Outros problemas possíveis
que o ouvinte é baixo e que o registro dinâmico banco de dados com o ouvinte não tem
são
aconteceu ainda.

Broca Two-Minute
Configurar Oracle Net Services
• Oracle Net é configurado com um conjunto de três arquivos: tnsnames.ora no lado do cliente,
listener.ora
no lado do servidor, e (opcionalmente) sqlnet.ora em ambos os lados. O processo base de
gera
dadossessões
ouvintede servidor em resposta a pedidos de ligação de clientes.
• A arquitetura usual é de um servidor dedicado. Há um processo de servidor por usuário
processo,
a sessãoeconsiste de uma conexão persistente entre os dois. Todos os dados da sessão é
armazenado
PGA. Uma alternativa
em é a arquitetura de servidor compartilhado, onde os processos de
usuários têm
conexões compersistente
despachantes, que passam solicitações para um pool de processos do servidor
compartilhado.
arquitetura, Nisso das informações sessão é armazenado no SGA, em vez de PGA.
a maioria

Use ferramentas para configurar e gerenciar a Rede do Oracle


• Duas ferramentas de configuração são fornecidos: o Gerenciador de Rede e Configuração Net
simples
Assistente. O ouvinte é controlado com o controlo de escuta de utilidade, lsnrctl.

Configurar a rede do lado do cliente


• Os clientes precisam ser capazes de resolver nomes para detalhes de conexão. Os detalhes
consistem
ouvindo naendereço do ouvinte de banco de dados na forma de um nome de host ou endereço IP
e umacomo
bem porta,
um como
nome de serviço de banco de dados ou nome de instância. A técnica usual é a
utilização
aliás, resolvido
de uma porrede
uma entrada em um arquivo tnsnames.ora.

Entenda banco de dados Pooling Residente Connection


• A DRCP pode ser usado para gerenciar o problema de um grande número de normalmente de
curta duraçãotais como aqueles que vêm em através de um web site. Em vez de desova
conexões,
processos
cada sessão,
para
o DRCP desmaia uso temporário de um de um número fixo de servidor
processos sob demanda.
persistente

Configurar a comunicação entre bancos de dados


• ligações de banco de dados permitem uma sessão contra um banco de dados para executar
SQL contra outro banco de dados. Dentro
efeito, o primeiro banco de dados torna-se um cliente para o segundo. Quando uma consulta é
executada
sessão atravéssobre
é lançada de um link, um
Oracle Net a partir da primeira sessão para o banco de dados ligados.
O nome necessária para estabelecer a sessão remota ocorre no servidor, não o cliente.
resolução

Auto teste
1 . Quais protocolos podem Oracle Net 12 c usar? (Escolha todas as respostas corretas.)
A. TCP
B. UDP
C. SPX / IPX
D. SDP
E. TCP com Secure Sockets
F. Pipes nomeados
G. LU6.2
H. NetBIOS / NetBEUI
2 . Onde está a divisão entre o cliente eo servidor no ambiente Oracle? (Escolher
a melhor resposta.)
A. Entre a instância e o banco de dados.
B. entre o utilizador e o processo de utilizador.
C. Entre o processo do servidor ea instância.
D. Entre o processo do usuário eo processo de servidor.
E. A divisão de cliente-servidor varia, dependendo da fase do ciclo de execução.
3 . Qual das seguintes afirmações sobre os ouvintes é a correta? (Escolha a melhor resposta.)
A. Um ouvinte pode conectá-lo a uma instância única.
B. Um ouvinte pode conectá-lo a um único serviço.
C. Vários ouvintes podem compartilhar cartão de interface de rede.
D. Uma instância irá aceitar apenas ligações do ouvinte especificado na local_listener
parâmetro.
4 . Você decidiu usar nomeação local. Qual arquivo (ou arquivos) você deve criar no cliente
máquina? (Escolha a melhor resposta.)
A. tnsnames.ora and sqlnet.ora.
B. listener.ora only.
C. tnsnames.ora only.
D. listener.ora and sqlnet.ora.
E. Nenhum. Você pode confiar em padrões se você estiver usando TCP e seu ouvinte está
em execução na porta
1521.
5 . Se parar o ouvinte, o que acontecerá com sessões que conectados através dele? (Escolha o
melhor resposta.)
A. Eles vão continuar se tiver configurado failover.
B. Eles não será afetado de forma alguma.
C. Eles vão pendurar até que você reinicie o ouvinte.
D. Você não pode parar um ouvinte se ele está em uso.
E. As sessões erro fora.
6 . Estudar este arquivo tnsnames.ora:

Qual das seguintes afirmações estão corretas sobre a conexão cordas teste, prod, e dev?
(Escolha todas as respostas corretas.)
A. Todos os três são válidos.
B. Todos os três podem ter sucesso somente se as instâncias são criadas para o registo
instância
C. O testedinâmica.
de conexão falhará porque a seqüência de conexão não coincidir com o nome do
serviço.
D. Haverá um conflito de porta em Serv2 porque prod e dev tentar usar a mesma porta.
7 . Considere esta linha de um arquivo listener.ora:
O que vai acontecer se você emitir o seguinte seqüência de conexão?

(Escolha a melhor resposta.)


A. Você será conectado à instância L1.
B. Você será conectado a uma instância somente se o registro instância dinâmica está
funcionando.
C. Você não pode dizer-isso depende de como o lado do cliente está configurado.
D. Se você está conectado ao servidor, IPC vai ligar para a instância local.
E. A ligação falhará se o ouvinte não é iniciado.
8 . Qual destas ferramentas pode configurar um arquivo listener.ora? (Escolha duas respostas.)
A. O banco de dados Assistente de Configuração
B. Banco de Dados Expresso
C. O lsnrctl utilidade
D. O Assistente de Configuração Net
E. A Net Manager
9. Consider this tnsnames.ora net service name:

O que vai acontecer se o servidor compartilhado é configurado e este nome de serviço de


arede
melhor
é usada?
resposta.)
(Escolher
A. O conectar tentativa falhará.
B. A conexão será bem-sucedida com uma conexão de servidor compartilhado.
C. A conexão será bem-sucedida com uma conexão de servidor dedicado.
D. A conexão só será bem sucedida para SYSDBA ou logons SYSOPER.
10 . Em que circunstâncias uma conexão através de um pool de conexão de banco de dados
residente
(SERVIDOR = reunidos) ligação ser adequado?
A. Quando um servidor de aplicação precisa de um pool de conexões persistentes
B. Quando muitas conexões de vida curta compartilhar um esquema
C. Quando muitas conexões de vida curta se conectar a diferentes esquemas
D. Quando muitas conexões persistentes fazer pedidos raras
11 . Ao atualizar linhas localmente e através de um link de banco de dados em uma única
transação, o que você
para garantir uma deve fazer de duas fases?
confirmação
A. Nada de especial, porque de duas fases é automático.
B. Issue um COMMIT localmente em primeiro lugar e, em seguida, através do link de
banco de dados.

C. Issue um COMMIT através do link e depois localmente.


D. Não é possível intercalar atualizações locais e remotos.

Respostas de auto-teste
1. A , D , E , F . TCP, SDP, TCPS, e NMP são os protocolos suportados com a corrente
lançamento.
B , C , G , e H estão incorrectos. B e H são incorrecta porque UDP e
NetBIOS / NetBEUI nunca foram suportados. C e G são incorrecta porque SPX e
LU6.2 não são mais suportados.
2. D . A divisão de cliente-servidor é entre o processo de usuário e processo do servidor.
A , B , C , e E são incorrectas. Estes todos deturpar a arquitetura cliente-servidor.
3. C . Muitos ouvintes podem compartilhar um endereço, se eles usam portas diferentes.
A , B , e D são incorrectas. A está incorreta porque um ouvinte pode lançar sessões
muitoscontra
casos. B está incorreta porque um ouvinte pode conectá-lo a um serviço registrada. D
éincorreto, pois os controles de parâmetro local_listener que ouvinte a instância
inscrever-se de forma dinâmica; que também irá aceitar conexões de qualquer ouvinte que
estaticamente registrado.
tem
4. C . Este é o arquivo do lado do cliente necessário apenas para nomear local.
A , B , D , e E são incorrectas. A está incorreta porque SQLNET.ORA não é essencial.
B
e D estão incorretas porque se referem a arquivos do lado do servidor. E está incorreta
porque algunsé sempre necessário para nomeação local (embora não para Easy Connect).
configuração
5. B . O ouvinte estabelece conexões, mas não é necessário para a sua manutenção.
A , C , D , e E são incorrectas. Estes são todos incorreta porque eles assumem que a
ouvinte é necessário para a continuação de uma sessão estabelecida.
6. A e B . Todos os três são válidos, mas só funcionará se os serviços são registrados com
ouvintes.
o
C e D são incorrectas. C está incorreta porque não tem necessidade de ser uma conexão
entre as alias utilizado em uma string de conexão e o nome do serviço. D é incorrecta porque
serviços podem ser acessados através de uma única porta de escuta.
muitos
7. C . Alguma configuração do lado do cliente é necessário, e sem saber o que é, você tem
idéia do que vai acontecer.
A , B , D , e E são incorrectas. A está incorreta porque a seqüência de conexão pode se
conectar
qualquer a
exemplo. B está incorreta porque, embora o ouvinte L1 deve usar o registro
dinâmico,
Isso não é o suficiente. D está incorreta porque o uso do IPC para ignorar o ouvinte não é
relevante.
E é incorreta porque (embora certamente verdade) você não sabe se é relevante.
8. D , E . Ambos netca e netman oferecer uma interface gráfica para editar o arquivo
listener.ora.
A , B , e C são incorrectas. A está incorreta porque o Assistente de Configuração do
Banco
(DBCA) nãodepode
Dados
editar um ouvinte, mas vai editar o arquivo tnsnames.ora. B é incorrecta
porque banco de dados Express tem nenhuma capacidade para editar qualquer arquivo. C é
incorrecta
utility lsnrctl
porque
podeacontrolar um ouvinte, mas não configurar o arquivo listener.ora.

9. C . O servidor = directiva DEDICADO solicita um servidor dedicado, mesmo que


servidor
compartilhada
é configurada.
A , B , e D são incorrectas. A e B estão incorretas porque a configuração do cliente leva
precedência sobre a configuração do servidor. D está incorreta porque qualquer um pode
usar este
corda. Será
conectar
necessário para usá-lo em vez de uma ligação de servidor compartilhado para
SYSDBA
ligações; caso contrário, os comandos de inicialização / desligamento irá falhar.
10. B . Este é exatamente o ambiente para o qual DRCP é projetado: muitas ligações curtas
a um esquema compartilhado.
A , C , e D estão incorrectos. A está incorreta porque um servidor de aplicativos
conseguiria
a piscina em si. C está incorreta porque um DRCP vai reunir conexões com o mesmo
éesquema.
incorretaDporque conexões persistentes seria amarrar os servidores agrupados.
11. Um . Duas fases para transações distribuídas é totalmente automático.
B , C , e D estão incorrectos. B e C são incorrecta porque uma transação distribuída é,
sintaticamente, comprometida exatamente como uma transação local. D é incorrecta porque
transações não são um problema no ambiente Oracle.
distribuído
CAPÍTULO 15

A oracle Armazenamento

Objetivos do exame
• 062.5.1 Descrever o armazenamento de tabela de dados Row nos Blocos
• 062.5.2 Criar e gerenciar Tablespaces
• 062.15.1 explicar como Oracle Database Server gerencia automaticamente o espaço
• 062.15.2 Economizar espaço usando a compactação
• 062.15.3 proativamente monitorar e gerenciar Tablespace Uso de Espaço
• 062.15.4 Use o Segment Advisor
• 062.15.5 Reclaim espaço desperdiçado de tabelas e índices com o segmento Encolher
funcionalidade
• 062.15.6 Gerenciar Resumable Espaço Allocation

Os usuários nunca ver um arquivo de dados físico. Tudo o que vejo são segmentos lógicos. Os
administradores
ver um segmentodelógico.
sistema
Tudo
nunca
o que vejo são arquivos de dados físicos. O banco de dados Oracle
fornece completa
abstracção de armazenamento lógico de física. Este é um dos requisitos do banco de dados relacional
paradigma. Como um administrador de banco de dados (DBA), você deve estar ciente da relação
entre o
armazenamento lógico e físico. Monitorização e administrar estas estruturas, uma tarefa muitas
vezes descrito
gestão do espaço
como
, costumava ser uma grande parte da carga de trabalho de um DBA. As facilidades
oferecidas nodo
lançamentos recente
banco de dados pode automatizar o gerenciamento de espaço, até certo ponto, e eles
certamente
o podem odeixar
DBA configurar armazenamento de formas que irão reduzir consideravelmente a carga de
instalações
trabalho vão permitir
através dadecapacidade deoAlém
manutenção. uso mais
deeficiente
disso,
redução alguns do espaço, tais como compressão e reorganização
segmento.
segmento
Quando um usuário acessa um limite de espaço, um erro será retornado, e a afirmação de que
falhou.
atingiu
Estaosituação
limite será
deve, naturalmente, ser evitado, mas se isso não ocorrer, o usuário pode ser
protegido por
permitindo a instalação de alocação de espaço resumable.

Descrever o armazenamento de tabela de dados Row nos


Blocos
No nível mais baixo, as linhas são armazenados em blocos. Mas existem várias camadas de
dos quais deve ser
armazenamento acima
entendido
disso, antes
todos de perfurar até o nível da linha no bloco. Comece no topo
e trabalhar para baixo.

O modelo do Oracle armazenamento de dados


A separação de lógica de armazenamento físico é uma parte necessária da base de dados relacional
paradigma. Isso significa que os programadores não têm forma de referenciar fisicamente um item
de dados, assim
eliminando qualquer dependência de uma máquina específica. O paradigma relacional afirma que os
deve abordar apenas estruturas lógicas e deixar o banco de dados gerenciar o mapeamento de
programadores
estruturas
Isto significa
físicas.
que o armazenamento físico pode ser reorganizada ou todo o banco de dados pode ser
movido para diferente hardware e sistema operacional, bem como a aplicação não estará ciente de
completamente
mudança.
qualquer
A Figura 15-1 mostra o modelo de armazenamento do Oracle esboçado como um diagrama
estruturas
entidade-relação,
lógicas paracom
a esquerda
a e as estruturas físicas para a direita.

Figura 15-1 O modelo de armazenamento do Oracle

Existe uma relação, mostrado como uma linha pontilhada. Este é um de muitos para muitos
e segmentos
relação entre
de arquivos de dados. Esta relação é pontilhada porque não deveria estar lá. Tão bom
engenheiros, DBAs não permitem muitos-para-muitos relacionamentos. Resolvendo esta relação
relacional
para uma normalizada é o que o modelo de armazenamento é tudo.
estrutura
A entidade de tabela resolve a relação de n para n entre os segmentos e os arquivos de dados.
Uma tabela pode conter vários segmentos e ser composta de muitos arquivos de dados. Isto significa
que qualquer
segmento podem
um ser espalhados por vários arquivos de dados, e qualquer um arquivo de dados pode
conter toda
diversos segmentos.
ou partesIssode resolve muitos desafios de armazenamento. Alguns sistemas de
gerenciamento
uma relação de deum-para-um
banco de dados
entre os
mais
segmentos
antigos usados
e arquivos; cada tabela ou índice seria armazenado
como umseparado. Isso levantou dois problemas terríveis para grandes sistemas. Primeiro, um
arquivo
aplicativo
tem milhares
podedebem
tabelas e até mesmo mais índices; gestão de muitos milhares de arquivos foi uma
tarefa para os administradores de sistema. Em segundo lugar, o tamanho máximo de uma tabela é
terrível
limitada pela
tamanho de ummáxima
arquivo. Mesmo se os sistemas operacionais modernos não têm quaisquer limites
práticos, pode
limitações haver pelo ambiente de hardware subjacente. Uso de espaços de tabela ignora estes
impostas
problemas. Tablespaces são identificados pelo nome, único no banco de dados.
dois
A entidade segmento representa qualquer objeto de banco de dados que armazena os dados e,
um portanto,
espaço derequer
tabela.espaço
Seu segmento
em típico é uma mesa, mas existem outros tipos de segmentos,
nomeadamente
segmentos e desfazer
índicesegmentos. Qualquer um segmento pode existir em apenas um espaço de
tabela,semas
pode espalhar
a tabela
através de todos os arquivos que compõem o espaço de tabela. Isto significa que os
tamanhos
sujeito das tabelas
a quaisquer não são impostas pelo ambiente no tamanho máximo de arquivo. Porque
limitações
muitos compartilhar
podem segmentos um único espaço de tabela, torna-se possível ter muito mais segmentos do que
há arquivos
Os segmentos desão
dados.
objetos de esquema, identificados pelo nome segmento e qualificado com o
esquema
nome. Note-se
possuirque objectos de esquema programáticos (tais como procedimentos de PL / SQL,
pontos
não de vista, eles
segmentos; ou sequências) são dados, e eles existem como estruturas dentro do dicionário de
não armazenam
dados.
O bloco Oracle é a unidade de entrada / saída (I / O) para a base de dados. Arquivos de dados são
formatados
blocos em
Oracle, numeradas consecutivamente. O tamanho dos blocos da Oracle é fixo para um espaço
de tabela
(Em geral, é o mesmo para todos os espaços de tabelas no banco de dados); o padrão é 8KB. Uma
pode ser apenas um par de centenas de bytes, por isso, poderia haver muitas linhas armazenadas em
fila
um bloco.
quando umaContudo,
sessão quer uma linha, todo o bloco serão lidos do disco para o cache de buffer do
banco
Do de dados.
mesmo modo, se apenas uma coluna de uma linha foi mudado na cache de buffer do banco de
dados, a(DBW
escritor base den dados
) vai (finalmente) escrever todo o bloco de volta para o arquivo de dados de onde
ele veio,
substituindo a versão anterior. O tamanho de um bloco Oracle pode variar de 2 KB para 16 KB em
ou Windows e 32KB em alguns outros sistemas operacionais. O tamanho do bloco é controlada pela
Linux
DB_BLOCK_SIZE parâmetro. Isso nunca pode ser alterado após a criação do banco de dados
porque ele
formatar oséarquivos
usado para
de dados que compõem o espaço de tabela SYSTEM. Se torna-se aparente
depois que
tamanho nãoo bloco
é apropriado, o único curso de ação é a criação de um novo banco de dados e transferir
tudo Um
isto. em bloco é unicamente identificado pelo seu número de dentro de um ficheiro de dados; o
número do bloco por si só não é
suficiente.

TIP EXAME O DB_BLOCK_SIZE é definido no momento da criação do banco de dados e não


pode ser alterado.
Gerenciando espaço um bloco de cada vez seria uma tarefa paralisante, então blocos são
Umaagrupados
medida éem umextensões.
conjunto de blocos da Oracle numeradas consecutivamente dentro de um arquivo
de dados.de
consistir Cada
umasegmento
ou mais extensões, também numeradas consecutivamente. Estas extensões podem
estar
os arquivos
em qualquer
de dados
e todos
que compõem o espaço de tabela. Uma extensão pode ser identificado a partir
de qualquer
segmento (extensões
dimensãosão do consecutivamente numeradas por segmento, partindo de zero) ou a
dimensão
arquivo dedo
dados (cada ponto é em um arquivo, a partir de um certo número de bloco Oracle).
Um arquivo de dados está fisicamente constituída por um número de blocos do sistema
operacional.
sistema Como
operacional arquivos
blocos estãode dados ea é inteiramente dependente do sistema de arquivos do
estruturados
sistema sistemas
Alguns operacional.
de arquivos têm limitações bem conhecidas e são, portanto, não é amplamente
utilizado
(Por exemplo,
para sistemas
o antigo modernos
sistema de arquivos MS-DOS FAT poderia lidar com arquivos de até 4GB
única,
-los pore diretório).
apenas 512Ademaioria dos bancos de dados serão instalados em sistemas de arquivos sem
limites
NTFS no práticos,
Windowstaisecomo
ext3 no Linux. As alternativas para os sistemas de arquivos para
armazenamento
dispositivos ou ASM.
de arquivo
dispositivos
de dadosbrutos
são matérias-primas
não são mais suportados pela Oracle para armazenamento
de arquivo
descrito no de
Capítulo
dados. 3ASM
. é
Um bloco de sistema operacional é a unidade de I / O para o seu sistema de arquivos. Um
apenas
processo
um byte
podedoquerer
disco, ler
mas o sistema de E / S terá que ler um bloco de sistema operacional. o
tamanho
sistema dedoarquivos
bloco deNTFS,
sistema operacional
você é configurável
pode escolher entre 512para
bytesalguns sistemas
a 64KB), de arquivos (por
mas normalmente os
exemplo,
-lo ao
administradoresformatar
no padrão (512 um
de bytes
sistemas
paradeixam
NTFS, de 1 KB para ext3). É por isso que o relacionamento entre a
blocos e blocos de sistema de operação é normalmente um-para-muitos, como se mostra na Figura
Oracle
15-1 . para
razão Não não
há coincidir com o tamanho do bloco de sistema operacional para o tamanho do bloco
do Oracle
Você se oUma
faz isso. seu sistema de arquivos
configuração permite
que sempre deve ser evitado é aquele em que os blocos de sistema
são maiores do que os blocos Oracle.
operacional

Segmentos, extensões, bloqueia e linhas


Os dados são armazenados em segmentos. O DBA_SEGMENTS vista dicionário de dados descreve
cada
o segmento
banco emEsta consulta mostra os tipos de segmento em um simples banco de dados as
de dados.
contagens
não há nenhuma
são baixos
aplicação
porque
real instalado:

Em resumo, e na ordem em que são mais propensos a dizer respeito a um DBA, estes tipos de
seguinte
segmento
maneira:
são tão

• TABELA Estes são tabela estruturada-heap; eles consistem de linhas de comprimento


variável
ordem.deMesmo
forma que
aleatória
um segmento típico é um segmento de mesa, nunca se esqueça que a
tabela nãoeéque
segmento o existem organizações de mesa mais complexos que usam outros tipos de
segmento.Os índices são listas ordenadas de valores de chave, cada um com um ponteiro, o
• ÍNDICE
ROWID,
localização
ao física da linha. O ROWID especifica qual o Oracle bloco de que o arquivo de
linha se encontra, bem como o número da linha dentro do bloco.
dados
• TIPO2 DESFAZER Estes são os segmentos de desfazer (ninguém se refere a eles como
“type2
segmentos)
desfazer”
que armazenam as versões prechange de dados necessários para fornecer
transacional
integridade: reversão, consistência de leitura, e isolamento.
• tabela de partição A tabela pode ser dividido em várias partições. Se isso for feito, então o
partições será por segmentos individuais, e a tabela em si não irá ser um segmento de todo;
isso existe
apenas como o total de suas partições. Cada partição tabela de uma tabela de pilha é em si
estruturado
mesa de pilha
como
em seu
um próprio segmento. Estes segmentos podem estar em diferentes espaços
de tabela,possível
torna-se o que significa que uma tabela em vários espaços de tabela.
para espalhar
• partição de índice Um índice será em um segmento por padrão, mas os índices podem ser
Repartiu. Se está a particionar suas tabelas, normalmente você vai dividir os índices naqueles
mesas bem.
• LOBSEGMENT, LOBINDEX, PARTITION LOB Se uma coluna é definido como um
objecto
tipo dededados,
grandes
então
dimensões
somente um apontador é armazenado na tabela a si; o apontador é para
uma entrada em uma separada

segmento, onde os dados da coluna, na verdade, reside. LOBs podem ter índices construídos
neles
acessopara
rápido aos dados dentro dos objectos, e LOB também pode ser repartida.
• CLUSTER Um cluster é um segmento que pode conter várias tabelas. Em contraste com
particionamento, que permite espalhar uma tabela em muitos segmentos, clustering permite
desnormalizar muitas mesas em um segmento.
• tabela aninhada Se uma coluna de uma tabela é definido como um tipo de objecto definida
pelo
temutilizador
colunas, que
em seguida,
se a coluna pode ser armazenada no seu próprio segmento como uma
tabela aninhada.
• ROLLBACK segmentos de reversão não deve ser utilizado no funcionamento normal da
liberação 9 i Release 9 i introduziu o gerenciamento de undo automático, que é baseada em
em diante.
segmentos
Haverá sempre
de desfazer.
um segmento de rollback que protege as transações usados para criar um
base de dados (isto é necessário porque, nesse ponto, não existem segmentos de anulação),
mas não deve
utilizado subsequentemente.
ser

Cada segmento tem uma ou mais extensões. Quando um segmento é criado, a Oracle irá alocar
a eleuma
em extensão
qualquer espaço de tabela é especificado. Eventualmente, como os dados são inseridos, a
extensão
irá então atribuir
vai encher.
umaOráculo
segunda medida na mesma tabela, mas não necessariamente no mesmo
ficheiro
você sabe
deque
dados.
um Esegmento
se que vai precisar de mais espaço, você pode alocar manualmente uma
extensão. Figura 15-
2 mostra como identificar precisamente em que cada ponto de um segmento é.

Figura 15-2 determinar a localização física de extensões de uma segmento

Na figura, o primeiro comando cria o SCOTT.NEWTAB mesa, confiando completamente na


padrões para o armazenamento. Em seguida, uma consulta contra DBA_EXTENTS mostra que o
segmento
uma medida,é composto
medida 0.por
Esta
apenas
medida está em arquivo 6 e está a oito quarteirões de comprimento. O
primeiro dos
bloquear 224.oito
O tamanho
blocos éda medida é 64 KB, o que mostra que o tamanho do bloco é 8KB. O
próximo
obriga Oracle
comando
para alocar outra extensão para o segmento, mesmo que a primeira medida não será
completa.
A próxima consulta mostra que esta nova medida, medida 1, também está no arquivo 6 e começa
imediatamente
0. Note que nãoapós
é claro
medida
a partir deste exemplo, se a tabela consiste em vários arquivos de dados
porque o algoritmo Oracle usa para trabalhar fora, onde atribuir a próxima medida não basta usar
arquivos de dados, por sua vez. Se a tabela não consistir em vários arquivos de dados, você pode
substituir
com escolha da Oracle
esta sintaxe:

A última consulta na Figura 15-2 vai para os DBA_DATA_FILES vista para determinar o nome
arquivo
do no qual as extensões foram alocados e o nome da tabela para a qual o arquivo de dados
Para identificar de tabela da tabela, você também pode consultar DBA_SEGMENTS.
pertence.
DICA Você pode consultar DBA_TABLES para descobrir em que tablespace uma tabela reside, mas
isso vai apenas para não-particionados mesas-não para tabelas particionadas, onde cada partição é o
trabalhar
seu próprioe pode ser em uma tabela diferente. Partitioning permite que uma tabela (armazenado
segmento
como váriosspan.
tablespaces segmentos)

Uma medida é constituído por um conjunto de blocos consecutivamente numeradas. Cada bloco
e umateráárea
umadeárea
dados.
de cabeçalho
O cabeçalho é de tamanho variável e cresce para baixo, se necessário, a partir
do topo Entre
quadra. do outras coisas, ele contém um diretório de linha que lista onde no bloco cada linha
e linha de informação de bloqueamento. A área de dados enche de baixo para cima. Entre as duas há
começa
podepode)
não (ou ser uma área de espaço livre. Eventos que fará com que cabeçalho de um bloco de crescer
eincluem
linhas de
inserção
bloqueio. A área de dados será inicialmente vazio e vai encher como são inseridas linhas
(ou índice
São inseridos teclas, no caso de um bloco de um segmento de índice). O espaço livre que se
fragmentou
linhas são inseridas,
como excluídas, e atualizado (o que pode causar o tamanho de uma linha para mudar),
mas isso nãopois
significado, é detudo isso acontece na memória, após o bloco foi copiado em um buffer na
cache do buffer do banco de dados. O espaço livre é fundiram-se em uma área contígua, quando
necessário,
sempre antes
e da DBW n escreve o bloco de volta ao seu arquivo de dados.

Exercício 15-1: Investigar estruturas de armazenamento Neste exercício, você vai correr várias
consultas para
determinar as características de armazenamento. Siga esses passos:

1. Determinar as estruturas físicas do seu banco de dados.

2. Criar uma tabela e determinar onde ele é armazenado.

Qual é o tamanho das extensões? Por padrão, esse é o tamanho que será utilizado para os
primeiros
de 16 extensões
um segmento, depois do que as extensões de 128 blocos serão atribuídos.
3. Mover a mesa.

Onde estão as extensões agora?


4. -se Tidy.

Criar e gerenciar Tablespaces


Tablespaces são repositórios de dados do esquema, incluindo o dicionário de dados. Todos os bancos
de dados
uma tabela
deve
SYSTEM
ter e uma tabela SYSAUX, bem como (para fins práticos) um temporária
tabela e uma tabela de undo. Estes quatro normalmente irá ter sido criada quando o banco de dados
criada.
foi Posteriormente, o DBA pode criar muitos mais espaços de tabela para os dados do usuário e,
de tabela adicionais para desfazer e dados temporários.
possivelmente,

criando Tablespaces
Para criar um espaço de tabela com Banco de Dados Express, a partir da home page do banco de
dados,
em cliqueosnaTablespaces
seguida, guia e armazenamento
ligar. Figura 15-3 mostra o resultado para o banco de dados padrão.

Figura 15-3 Os espaços de tabelas no banco de dados modelo de Uso Geral padrão

Há seis espaços de tabela mostradas na figura. Para cada espaço de tabela, identificado pelo
janela
nome,
mostra
o o seguinte:

• Tamanho Este é o tamanho atual do arquivo de dados (ou arquivos de dados) atribuído ao
espaço
com base
de tabela.
no tamanho
Isto é atual, não o tamanho máximo que pode ser autorizado a se expandir.
• Espaço livre O espaço disponível dentro do espaço de tabela.
• Usado (%) Este é o espaço ocupado por segmentos no tablespace que não pode ser
recuperada.
• Auto Extender Indica se todos os arquivos do espaço de tabela tem a extensão automática
instalação habilitado (todos eles fazem).
• O tamanho máximo Se autoextensible, ao que limite? Na figura, todos são Unlimited, ou
seja,
máximo
o possível.
• status verde indica que o espaço de tabela é on-line e, portanto, que os objetos dentro dela
deve ser acessível. Um espaço de tabela off-line seria indicado em vermelho.
• Digite um ícone indicando se as lojas de espaços de tabelas objetos permanentes, temporárias
objectos, ou a desfazer segmentos.
• segmento de Auto gestão de uma marca de verificação indica que o espaço segmento
automática
gestão é utilizado pelo espaço de tabela.

Você também pode recolher esta informação consultando as visões de dicionário de dados
DBA_TABLESPACES, DBA_DATA_FILES, DBA_TEMP_FILES e DBA_FREE_SPACE.

No banco de dados Express, clique no botão Ações para um menu drop-down, incluindo Criar
para criar
tablespace. A uma
janela Criar Tablespace solicita um nome de tabela, bem como o tipo de dados
(Permanente, temporário, ou desfazer) para ser armazenado dentro dele. O diálogo continua com
instruções
arquivo de para
dadoso (ou arquivos de dados) definição e vários atributos.
Banco de dados Express tem um botão Mostrar SQL na maioria das janelas. Isto significa que
construir
você pode
declarações
usá-lo para
sintaticamente corretas que você pode salvar (e editar) para o futuro, o uso de
script.declaração
uma Isto é típica gerado pelo banco de dados Express (números de linha adicionados):

Olhe para esta linha de comando por linha.

Figura 15-4 mostra uma declaração típica criação de tabela, como executado a partir do SQL *
linha
Plus
de comando, com uma consulta confirmando o resultado.
Figura 15-4 criação Tablespace e verificação com o SQL * Plus

O GLTABS tabela consiste em dois arquivos de dados, nenhum dos quais vai autoextend. O
desvio
único
padrão foi de especificar um tamanho de extensão uniforme de 4MB. A primeira consulta na
mostra que a tabela não é uma tabela bigfile; se fosse, não teria sido possível
figura
definir dois arquivos de dados.
A segunda consulta na figura investiga a tabela TEMP, utilizada pela base de dados para
objetos
armazenar
temporários. É importante notar que a tabela temporários usar tempfiles , e não arquivos de
dados.
Tempfiles estão listados nas visualizações V $ tempfile e DBA_TEMP_FILES, enquanto arquivos
de dadosem
listados sãoV $ DATAFILE e DBA_DATA_FILES. Observe também que os US $ vistas V e as
vistas
dar informações
DBA diferentes. Como a consulta mostra, você pode consultar V $ TABLESPACE para
descobrir
espaço de se
tabela
um é um espaço de tabela bigfile, e você pode consultar V $ tempfile (ou V $
DATAFILE)
grande para saber
um arquivo como
foi no momento da criação. Esta informação não é mostrada nas vistas DBA. No
entanto, o DBA
visualizações dar o detalhe da gestão de extensão e gestão do espaço segmento. A informação
disponível nas vistas é porque há algumas informações armazenadas apenas no controlfile (e,
diferente
visíveis apenas na vista V $) e algum é armazenado apenas no dicionário de dados (e, por
portanto,
conseguinte, visíveis
visualizações apenas informações
DBA). Outras nas são duplicados.

Exercício 15-2: Criar, alterar e eliminar Tablespaces Neste exercício, você irá criar espaços de
e mudar suas características. Siga esses passos:
tabela

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Criar um espaço de tabela em um diretório de qualquer adequado diretório no qual o
proprietário
permissãoOracle
de escrita
tem vai fazer. Este é um exemplo:

Este comando especifica as opções que estão o padrão. No entanto, ele pode ser considerado
boa prática para fazer isso para fazer a declaração auto-documentado.
3. Criar uma tabela na nova tabela e determinar o tamanho da primeira medida.

4. Adicionar extensões manualmente e observar o tamanho de cada nova extensão, executando


repetidamente
comando a

seguido pela consulta a partir do passo 3. Note-o ponto em que as medida que aumenta de
tamanho.
5. Pegue a tabela desligada, observar o efeito, e trazê-lo de volta online.

6. Faça o espaço de tabela somente leitura, observar o efeito, e torná-lo ler-escrever novamente.

7. Arrume emitindo o seguinte comando:

alterando Tablespaces
Estas são as mudanças comumente feitas para espaços de tabela após a criação:

• Renomear
• Tomar online e offline
• A sinalização como leitura-gravação ou somente leitura
• redimensionamento

Renomear um Tablespace e seus arquivos de dados


A sintaxe é como se segue:

Este é simples, mas pode causar problemas mais tarde. Muitos sites contam com as convenções
espaços
de nomeação
de tabela de
para
se os
relacionar
seus arquivos de dados. Todos os exemplos neste capítulo fazer
exatamenteno
tablespace isso;
nome
elesdos
incorporar
arquivosode
nome
dados.
do A Oracle não se importa. Internamente, ele mantém as
usando o número de tabela e o número de ficheiro de dados (ou de ficheiro temporário). Estes são
relações
visíveis V
colunas como o
$ TABLESPACE.TS # e V $ DATAFILE.FILE #. Se o seu site se baseia em nomear
convenções, será necessário renomear os arquivos também.
A tabela pode ser renomeado enquanto ele estiver em uso, mas para renomear um arquivo de
dados, ele deve ser offline. Isto é
porque o arquivo deve ser renomeado no nível do sistema operacional, bem como dentro do Oráculo
meio ambiente, e isso não pode ser feito se o arquivo é aberto. Todos os identificadores de arquivo
se tornaria
No entanto,inválido.
é possível
isto
mover um arquivo de dados online.
A Figura 15-5 mostra um exemplo de todo o processo, utilizando a tabela criada na GLTBS
Figura 15-4 .

Figura 15-5 Mudar o nome de uma tabela e seus arquivos de dados

Na figura, o primeiro comando renomeia o espaço de tabela. Em seguida, a tabela é colocado


offline
descrito na (como
secção seguinte), e um comando do sistema operativo renomeia um dos arquivos de
dados node arquivo. Um comando ALTER DATABASE muda o nome do arquivo como registrado
sistema
dentro do para que a Oracle será capaz de encontrá-lo. Finalmente, o espaço de tabela é trazido de
controlfile
volta online.
último comando o mostra a abordagem alternativa; ele se move fisicamente a outro arquivo e
renomeia
no (ambos
nível do sistema de arquivos e no controlfile) em uma operação com tempo de inatividade zero.

Tomar um Tablespace online ou offline


Uma linha de tabela ou arquivo de dados está disponível para uso; um desligada tabela ou arquivo
de dados existe
definição no dicionário
como umde dados ea controlfile, mas não pode ser usado. É possível para um espaço
tabela
de ser online, mas um ou mais de seus arquivos de dados para ser offline. Esta é uma situação que
pode produzir
resultados interessantes e devem ser evitadas. Aqui está a sintaxe para a tomada de um espaço de
tabela off-line:
A desligada
arquivos de dados.NORMAL (que ésujo
Cada tampão o padrão) iráde
no cache forçar umdoposto
buffer bancodede
controle paracontém
dados que toda a tabela de
uma quadra
da tabela
será gravado em seu arquivo de dados, e então o espaço de tabela e os arquivos de dados são
tomadas offline.
No outro extremo é imediata, que offlines o espaço de tabelas e os arquivos de dados
imediatamente, sem rubor nenhum buffers sujos. Após isso, os arquivos de dados serão corrompidos
(eles
pode estar faltando alterações consolidadas) e terá de ser recuperado através da aplicação de vetores
de mudança
log de redo antes
de da tabela pode ser trazido de volta online. Claramente, esta é uma operação
drástica. isto seria feito somente se um arquivo foi danificado de forma que o ponto de verificação
normalmente
não pode serO processo de recuperação é detalhado no Capítulo 22 . Você não pode ter um espaço de
completou.
tabela off-line
usando IMEDIATA a menos que a recuperação de mídia através do log de arquivamento foi ativado.
A offline temporários será ponto de verificação de todos os arquivos que podem ser
checkpointed
e o espaço e, em
de tabela seguida,
off-line levá-los
de uma forma ordenada. Quaisquer arquivos danificados serão offlined
imediatamente.
apenas alguns dosE se
arquivos de dados do espaço de tabelas foram danificadas, isso vai limitar o
número dedearquivos
necessita ser recuperado.
que irá
Use o seguinte comando para trazer a tabela de volta on-line:

Marcar um Tablespace como somente leitura


Para ver o efeito de fazer um espaço de tabela somente leitura, estudo Figura 15-6 .

Figura 15-6 Operações em um espaço de tabela somente leitura

A sintaxe é completamente auto-explicativo.

Depois de um espaço de tabela é feita somente leitura, nenhum dos objetos dentro dele pode ser
alterado com
Manipulation dados (DML), como demonstrado na figura. Mas eles podem ser descartados.
Language
Este é um pouco desconcertante, mas faz todo o sentido quando você pensa sobre isso. Descartando
uma tabela

não realmente afetar a mesa. É uma transação contra o dicionário de dados que elimina as linhas que
descrevem a tabela e suas colunas; o dicionário de dados está no espaço de tabela SYSTEM, e que
não é leitura.
somente

TIP Fazendo uma tabela somente leitura pode ter vantagens para backup e restauração operações.
Oráculo
estará ciente de que o conteúdo do espaço de tabelas não pode mudar e que não pode, portanto, ser
o backup do espaço de tabela repetidamente.
necessário
Redimensionar um Tablespace
Você pode redimensionar uma tabela quer pela inclusão de arquivos de dados a ele ou ajustando o
tamanho
arquivos dade existente
dados. Você pode redimensionar arquivos de dados para cima automaticamente
conforme
foi utilizado
necessário
no momento
se a sintaxe
da criação
AUTOEXTEND
do arquivo. Caso contrário, você tem que fazê-lo manualmente
com um banco de dados ALTER
comando.

O M, G e T referem-se às unidades de tamanho para o arquivo (megabytes, gigabytes e terabytes,


respectivamente). Este é um exemplo:

Da sintaxe, você não sabe se o arquivo está sendo feito maior ou menor. uma cima
redimensionar só pode ter êxito se não houver espaço suficiente no sistema de arquivos, e
redimensionar
ter lata para
sucesso somente se obaixo
espaço no arquivo não estiver em uso por extensões alocadas a um
segmento.
Para adicionar outro arquivo de dados de 2GB em tamanho a um espaço de tabela, use o seguinte
comando:

Você pode incluir cláusulas de extensão automática ao criar o arquivo. Para habilitar automática
extensão posterior, utilize um comando como este:

Isso permitirá que o arquivo para dobrar de tamanho, aumentando 100MB de cada vez.
Um espaço de tabela bigfile pode ser redimensionado no nível de tabela, em vez do nível de
porque
arquivo
a Oracle
de dados.
sabe que
Istoaétabela pode ter apenas um arquivo de dados, e, portanto, não existe
ambigüidade sobre qual arquivo de dados deve ser redimensionada. Figura 15-7 mostra como criar e
redimensionar
tabela bigfile. uma

Figura 15-7 Trabalhando com espaços de tabela bigfile

Você pode pensar que a limitação de uma tabela para um arquivo só iria limitar a capacidade de
tabela,
armazenamento
mas isso não do
é o caso. Um espaço de tabela smallfile pode consistir de até 1.022 arquivos de
dados,
que podecada
serum
de dos
até 4 milhões de blocos. Um espaço de tabela bigfile pode ser um arquivo de dados
de até 4então
blocos, bilhões
não há realmente nenhuma diferença.

Dropping Tablespaces
Para retirar um espaço de tabela, use o comando DROP TABLESPACE. A sintaxe é como se segue:
Se as palavras-chave, incluindo os conteúdos não são especificados, a queda irá falhar se houver
objetos
algumno espaço de tabela. Usando essas palavras-chave instrui o Oracle a cair os objetos em
primeiro lugar e,deem
soltar o espaço seguida,
tabela. paraeste irá falhar em algumas circunstâncias, como quando a tabela
Mesmo
uma tabela que é a mãe numa relação de chave estrangeira com uma tabela na outra tabela.
contém
Se os arquivos de dados e palavras-chave não são especificados, o espaço de tabela e seu
caiu,conteúdo
mas os arquivos
será de dados continuará a existir no disco. A Oracle vai saber nada sobre eles
mais, e eles terão de ser eliminados com comandos do sistema operacional.

Gestão de extensão
O método de gestão de medida é definido por tabela e aplica-se a todos os segmentos no espaço de
tabela.
Existem duas técnicas para gerenciar o uso de medida: Gestão de dicionário e gestão local.
A diferença é clara: A gestão local devem ser sempre utilizadas; gestão dicionário deve
nunca será usado. -Dictionary conseguiu gerenciamento medida ainda é suportado, mas é apenas um
resquícioanteriores.
versões de
Dicionário gerenciamento medida utiliza duas tabelas no dicionário de dados. SYS.UET $ tem
descrevendo
linhas extensões usadas e SYS.FET $ tem linhas que descrevem extensões livres. Toda vez
que o banco
precisa alocardeuma
dadosextensão de um segmento, ele deve procurar FET $ para encontrar um bit
apropriado
e, em seguida,de espaço
realizarlivre
operações DML contra FET $ e UET $ alocá-lo para o segmento. este
mecanismo de causa problemas com o desempenho, porque todas as operações de gerenciamento de
espaço no
banco de dados (muitas das quais poderiam ser iniciada concorrentemente) deve serializar no código
que constrói a
transações.
Gestão de extensão local foi introduzido com o lançamento 8 i e tornou-se o padrão com a
Ele liberação
usa bitmaps 9 i armazenados
. em cada arquivo de dados. Cada bit no bitmap abrange uma série de
blocos, ée alocado,
espaço quando os bits apropriados são alteradas de zero a um. Este mecanismo é muito mais
eficiente do que o mecanismo baseado em transação de gestão dicionário. O custo de atribuir
extensões é amortizado através bitmaps em cada arquivo de dados que pode ser atualizado
simultaneamente,
sendo concentradaem vezsérie)
(e em de nas duas tabelas.
Ao criar um espaço de tabela gerenciado localmente, uma opção importante é tamanho uniforme
. Se uniforme
especificada, entãoé cada medida já alocados no espaço de tabela será que tamanho. Isso pode tornar
o espaço
gestão altamente eficiente, porque os intervalos de blocos abrangidos por cada bit pode ser maior, ou
seja,bit
um única
por medida. Considere a seguinte declaração:

Cada extensão alocada nesse espaço de tabela será 160MB, por isso, haverá cerca de 64 deles. o
bitmap precisa de apenas 64 bits, e 160 MB de espaço pode ser alocado, atualizando apenas um
pouco.
vai ser muito
Isto é eficiente em termos desde que os segmentos no espaço de tabela são grandes. Se um
segmento
criado queeram
precisava de espaço para apenas algumas linhas, ele ainda teria uma extensão de 160 MB.
pequenos de
precisam objetos
seu próprio espaço de tabela.

Aqui é a alternativa (e padrão) sintaxe:

Quando os segmentos são criadas nesta tabela, Oracle irá alocar uma extensão de oito bloco (64
ComoKB).
um segmento cresce e requer mais extensões, a Oracle irá alocar extensões deste tamanho até
extensão, após o qual ele vai alocar 128-bloco extensões (1MB). Assim, os segmentos de rápido
16
crescimento
para ser dadotenderá
espaço em pedaços maiores.

TIP Oracle Corporation recomenda autoallocate, mas se você sabe como segmentos grandes são
susceptível de ser e pode colocá-los em conformidade, tamanho uniforme pode muito bem ser a
aplicações são Muitos
melhor opção. projetadas dessa maneira.

É possível que, se um banco de dados foi atualizado a partir de versões anteriores, ele irá incluir
tablespaces gerenciados por dicionário. Verifique isso com a seguinte consulta:

Quaisquer espaços de tabela gerenciados por dicionário devem ser convertidos para a gestão
chamada
local com
de procedimento:
este PL / SQL

Gerenciamento do Espaço segmento


O método de gestão de espaço segmento é definida por tabela e aplica-se a todos os segmentos no
tablespace. Existem duas técnicas para gerenciar o uso do espaço segmento: manual e automático. o
diferença é clara: Gestão automática deve sempre ser usado; gerenciamento manual não deve nunca
ser usado. Manual de gestão do espaço segmento ainda é suportado, mas nunca recomendado. É um
a partir de versões anteriores.
remanescente
Gestão automática do espaço segmento foi introduzido com o lançamento 9 i e se tornou o
libertar
padrão
11 gem. Cada segmento criado em uma tabela gerenciamento automático tem um conjunto de
bitmaps que
descrever como completamente cada bloco é. Há cinco bitmaps para cada segmento, e cada bloco irá
em exatamente um bitmap. Os mapas de bits controlar o espaço usado em bandas; há um bitmap
aparecer
epara
há mapas
blocos de
completos,
bits para os blocos que são de 75 por cento a 100 por cento, 50 por cento usada a 75
por cento 25 por cento a 50 por cento utilizado, e 0 por cento a 25 por cento usada. Ao procurar por
utilizado,
um que
em bloco
para inserir uma linha, o processo do servidor sessão irá olhar para o tamanho da fila para
que bitmap de pesquisa. Por exemplo, se o tamanho do bloco é 4KB e a linha a ser inserida é 1500
determinar
bytes, um bloco apropriado irá ser encontrada pesquisando o mapa de bits “de 25 por cento a 50 por
cento”.neste
bloco Cadabitmap é a garantia de ter pelo menos 2 KB de espaço livre. Como linhas são inseridas,
são
excluídos ou tamanho da mudança através de atualizações, os bitmaps se actualizado em
conformidade.
O método manual antiga gestão do espaço utilizado uma lista simples, conhecida como a freelist
que ,bloqueia
que afirmou
estavam disponíveis para inserção, mas sem qualquer informação sobre como completo
que eram.
método poderia
este causar actividade excessiva porque blocos tinha a ser testado para o espaço no
tempo de
muitas vezes
inserção,
resultou
e ele
em uma grande proporção de espaço desperdiçado.
Para ver se quaisquer espaços de tabela estão usando o gerenciamento manual, executar esta
consulta:

Os únicos espaços de tabelas que devem ser retornados por essa consulta são o sistema, desfazer
tabela
espaços
temporários.
de tabela,
Osesegmentos nestes espaços de tabela são geridos pela Oracle, que não faz
requerem assistência de qualquer mecanismo automático. Não é possível converter espaços de tabela
de
manual para o gerenciamento automático do espaço segmento. A única maneira é criar um novo
espaço automática
gestão de tabela usando
espaço segmento, mover os segmentos em que (no ponto em que o mapa de bits
gerados), e solte os antigos espaços de tabela.
será

A Oracle Managed Files


Usando Oracle Managed Files (OMF) pretende remover a necessidade para o DBA para ter qualquer
conhecimento dos sistemas de arquivos. A criação de arquivos de banco de dados pode ser
totalmente
definir alguns
automatizada.
ou todos esses
Paraparâmetros
habilitar OMF,
de instância:

O parâmetro DB_CREATE_FILE_DEST especifica um local padrão para todos os arquivos de


refazer arquivos
dados e onlinede log. Os DB_CREATE_ONLINE_LOG_DEST_ n parâmetros especificar um
arquivos de log
local padrão pararedo online, tendo precedência sobre DB_CREATE_FILE_DEST.
DB_RECOVERY_FILE_DEST configura um local padrão para arquivos de log arquivados redo e
Recuperação
Manager (RMAN) arquivos de backup; isso será discutido em capítulos posteriores sobre backup e
recuperação.
bem como a definição
Como de locais de arquivo padrão, OMF irá gerar nomes de arquivos e (por padrão)
definir os tamanhos
Configurar esses parâmetros
dos arquivos.
pode simplificar as operações relacionadas a arquivos. Uma vez OMF
foi ativada,
sempre podeela
ser substituído, especificando um nome de arquivo de dados no comando CREATE
TABLESPACE.
A Figura 15-8 mostra um exemplo de permitir e usando OMF.

Figura 15-8 Usando o Oracle Managed Files

Na figura, primeiro o parâmetro é definido. Note que o parâmetro é dinâmico; você pode alterá-
tempo,
lo aequalquer
todos os arquivos OMF criados posteriormente será no novo local. arquivos OMF
existentespor
afectada nãoqualquer
são mudança. Em seguida, os OMFTS tablespace é criado, confiando
completamente
defaults. A consulta
na OMF
mostra que estes são.

• O nome do arquivo gerado com uma corda principal (o1_mf), seguido do nome do espaço de
tabela,
seguido por oito caracteres aleatórios (para gerar um nome único), e, em seguida, um sufixo
(dbf)
• Tamanho do
100MB
arquivo

• Autoestender Ativado em unidades de 12.800 blocos (100MB), até 32GB

O último exemplo na figura mostra a adição de um ficheiro OMF a uma tabela existente,
substituindo
o padrão OMF para o tamanho do arquivo.
A combinação de OMF, espaços de tabela bigfile, e autoextend pode fazer gestão de espaço em
umde dados Oracle extremamente fácil e completamente automático.
banco

Exercício 15-3: Mudança Tablespace Características Neste exercício, você vai criar um espaço de
usando o gerenciamento de espaço manual de não padrão para simular a necessidade de converter-se
tabela
ao segmento automática
gerenciamento de espaço após uma atualização. Ativar OMF primeiro a facilitar o processo. Siga
esses passos:
1. Ative OMF para a criação de arquivo de dados. Escolha qualquer directório que existe e em
queusuário
o Oráculo
tem permissões de leitura e escrita. Este é um exemplo em Linux e, em seguida, o
Windows:

2. Criar um espaço de tabela, usando a sintaxe mínima agora possível.

3. Determinar as características do arquivo OMF.

Observe o arquivo é inicialmente 100MB, autoextensible, sem limite superior.


4. Ajuste o arquivo OMF ter características mais sensíveis. Use o que gerou sistema de
nome do ficheiro foi devolvido pelo passo 3.

5. Solte a tabela e usar um comando do sistema operacional para confirmar que o arquivo tem
de fato
foi.

6. Criar um espaço de tabela usando o gerenciamento de espaço de segmento manual. Porque


OMFnãoestá
há necessidade
habilitado, de qualquer cláusula de arquivo de dados.

7. Confirmar que o novo espaço de tabela é de fato usando a técnica manual.

8. Criar uma tabela e um dice na tabela.

9. Estes segmentos vai ser criado com freelists, não bitmaps. Criar uma nova tabela que será
(Por padrão) usam o gerenciamento de espaço de segmento automático.

10. Mova os objectos para a nova tabela.

11. Confirme se os objetos estão na tabela correta.

12. Solte a tabela originais.

13. Renomeie a nova tabela para o nome original. Isso é muitas vezes necessário porque alguns
software aplicativo verifica os nomes de tablespace.

14. Arrumar por deixar cair a tabela, primeiro com este comando:

15. Nota o erro causado pela tabela não estar vazio e corrigi-lo.

Explique como o Oracle Database Server


automaticamente
gerencia espaço
Espaço é gerido em três níveis: o espaço de tabelas, o segmento, eo bloco. Uma vez que estes física
estruturas estão no lugar, a gestão se move para o nível lógico: como o espaço é atribuído aos
e como o espaço é utilizado dentro dos segmentos.
segmentos

Segmento cessão de espaço


Espaço é alocado a um segmento na forma de uma extensão, que é um conjunto de blocos do Oracle
Cada arquivo de dados tem um bitmap que descreve o estado do bloco no arquivo, se é livre ou parte
consecutivos.
uma medida que foi atribuído a um segmento. Quando um segmento enche e precisa estender, a
de
irá procurar os bitmaps dos arquivos da tabela de espaço livre, selecione um arquivo e criar um novo
Oracle
medida de um tamanho apropriado através da modificação do mapa de bits. A medida pode, então,
ser atribuído ao segmento.
Um segmento é um recipiente para um objecto, mas os dois não são a mesma coisa. É possível
paradeoexistir sem um segmento. Quando um segmento é criado, ele terá pelo menos um ponto,
objeto
é possível que alguns objetos de existir sem um segmento. Estudar o código na Figura 15-9 . Os dois
mas
consultas mostram as tabelas (quatro) e índices (dois) no esquema conectado no momento, com a
primeiros
mostra
bandeiraseque
um segmento foi criado para eles. O terceiro consulta mostra os segmentos. A mesa
BÔNUS existe logicamente, mas não tem segmento dentro do qual pode ser contida.

Figura 15-9 Objectos e segmentos

TIP criação segmento diferidos pode ter alguns efeitos estranhos. Por exemplo, problemas com uma
não vai aparecer ao criar uma tabela somente ao inserir nele.
quota

A chave para entender esta situação é o parâmetro de instância


DEFERRED_SEGMENT_CREATION, cujo padrão é TRUE. Se for definido como TRUE, este
instrui o Oracle para não criar um segmento até que o objeto realmente contém alguns dados. Na
parâmetro
criação édacriada
tempo, tabelaapenas a estrutura dicionário de dados descreve a tabela. Só posteriormente, quando
tentativa é feita para inserir uma linha na tabela, o segmento é criado. É possível controlar esta
um
comportamento e para substituir a configuração de parâmetros, com a cláusula SEGMENTO criação
CREATE TABLE. Figura 15-10 demonstra isso, mostrando que um segmento é criado
do
que consiste de uma medida quando uma linha é inserida dentro de uma mesa.
Figura 15-10 diferida criação segmento

EXAME TIP criação do segmento é sempre imediata de objetos criados por usuários internos, tais
SYS ou SYSTEM, não importa o que a definição do parâmetro. A tentativa de usar o segmento
como
CRIAÇÃO DIFERIDOS cláusula como SYS retorna um erro.

Exercício 15-4: Manage Space Segment Neste exercício, você observar a alocação de extensões
para
segmentos.

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Criar um esquema para trabalhar em para este exercício e, em seguida, conectar a ele.

3. Verifique se o parâmetro DEFERRED_SEGMENT_CREATION é definido como TRUE,


quepadrão,
éa e configurá-lo se ele não é.

4. Criar tabelas e índices como segue:

5. Determine quais segmentos foram criados.

6. Insira uma linha em EX7A e EX7B.


7. Execute as consultas a partir da etapa 5 novamente.

Gestão automática do espaço Segmento


Um
umasegmento tabela aconsiste
linha na tabela, em vários
Oracle deve tomarblocos em umaEm
uma decisão: ou mais extensões.
qual bloco deve Quando é feita
a linha ser uma
colocado?
tentativa
este para inserir
é determinada por um bitmap que reflete o quão cheio cada bloco no segmento é. Ao inspecionar o
bitmap, a Oracle pode determinar se um bloco tem espaço suficiente para aceitar a nova linha. o
mapeamento não é preciso, mas sim funciona em 25 faixas por cento: entre 0 e 25 por cento de
espaço
25 a 50livre,
por cento de espaço livre, de 50 a 75 por cento de espaço livre, e o espaço livre 75 a 100 por
cento. Dentro o bitmap mostra se o bloco não é realmente formatado em tudo (ou seja, ele é
Adicionalmente,
atribuído
o segmento a mas que ainda não tenha sido usado) ou é classificada como completa e, portanto, não
está disponível
importa quão pequena
para inserções
a nova linha
não é. Como linhas são inseridas em blocos e excluído dos blocos, o
do bloco (em termos de qual das bandas 25 por cento a que pertence) é ajustado no mapa de bits.
estado
Um problema relacionado com a seleção de um bloco para uma inserção é como gerenciar a
tamanho
situação
alterações
em quedeumlinha. Alguns tipos-principalmente de dados Oracle, os dados VARCHAR2
tipo são de variável
comprimento. Se uma coluna VARCHAR2 é atualizado de tal forma que se torna mais longo, a linha
será maior.
Além disso, se as colunas são NULL quando uma linha é inserida, eles vão ter nenhum espaço em
Portanto, quando instruções UPDATE são executados que expandir um VARCHAR2 ou preencher
tudo.
anteriormente coluna NULL, a linha se tornará maior. Será, portanto, exigem mais espaço no
um
quadra.
Por padrão, a Oracle reserva-se 10 por cento de um bloco para a expansão da linha. Esta é a
PCTFREE
(Cento livre) definindo para o segmento, definido no momento da criação do segmento (embora ele
pode ser
bloco cujo
modificado
uso excedeu mais
a configuração
tarde). UMA PCTFREE para o segmento é classificado pela Automatic
Segment Space Management (ASSM) bitmap que FULL, e, portanto, o bloco não está disponível
inserir, mesmo que possa, de facto, ainda tem algum espaço livre. Assim, se, em média, as linhas em
para
um bloco em não mais do que 10 por cento durante a sua vida útil, não há qualquer problema; espaço
aumentar
suficiente será
disponível para as novas versões das linhas. Se uma linha se expande de tal forma que não há espaço
suficiente
o bloco, ele emdeve ser movido para um bloco com espaço suficiente. Esta é conhecida como migração
de linha .

EXAME TIP migração Row é causada por instruções UPDATE. Inserir e excluir não pode nunca
resultar em migração de linha.

Quando uma linha é migrado, ele é removido a partir do bloco no qual ele reside e inserido numa
bloco diferente com espaço suficiente. O novo bloco será localizado através de pesquisa na bitmap
Então, na verdade, quando um usuário executa um UPDATE, isso se torna um INSERT e DELETE,
ASSM.
que é um mais caro. Além disso, o ROWID da linha (o localizador física da fileira) é
operação
Não mudou. O ROWID ainda aponta para o bloco original, que agora armazena mais do que um
“Endereço de encaminhamento” para a linha; o endereço de encaminhamento é o endereço do bloco
para ofoi
linha qual
movido.
o O fato de que o ROWID permanece inalterado é bom e ruim. É bom
porque não há necessidade de ajustar os índices; eles ainda vão apontar para o local original. Isso é
ruim
porque quando a linha é recuperada através de uma pesquisa de índice, uma operação de E / S
adicional
leia a linhaI serão
da suanecessários
nova localização.
para Isto é, claro, transparente para SQL, mas pode, em extrema
circunstâncias, provocar a degradação do desempenho.
Intimamente relacionada com a linha de migração é a questão do encadeamento de linha. A linha
maioracorrentado
do que o bloco.
é umaClaramente,
linha que é se o tamanho do bloco é 8K ea linha é 20K, em seguida, a linha
deve ser através de três blocos. Em tempo de inserção, todos os três blocos serão localizados
distribuído
através ASSM
bitmap de pesquisa
para na
blocos disponíveis para inserção e ao recuperar a linha mais tarde, todos os três
pode ser lido (dependendo de qual colunas são projectadas pela consulta). O ROWID de uma linha
blocos
aponta para o primeiro bloco de linha, como também é o caso com uma fileira migrado.
acorrentado

Economizar espaço usando a compactação


Compressão vem em várias formas, algumas das quais requerem uma licença separada: Avançado
opção de compactação. O objetivo principal da compressão é para reduzir os requisitos de espaço em
disco,
às vezes
mas
há um benefício adicional em melhor desempenho para consultas posteriores. Compressão
pode, no entanto, provocar a degradação do desempenho em certas circunstâncias e, por conseguinte,
deve ser com cautela. Uma capacidade de consultor irá estimar a economia de espaço que a
abordada
compressão
alcançar parapode
uma mesa.
Compressão vem em três formas:

• compressão tabela básica comprime os dados dentro de um bloco quando linhas são inseridas
através
operação
de um
de carregamento direto. operações DML posteriores fará com que as linhas de ser
(E possivelmente migrou como um resultado desta).
descomprimido
• compactação de linha avançada irá comprimir linhas não importa como eles são inseridos e
manter
a compressão por meio de DML. A compressão é ainda numa base de bloco-por-bloco.
• Híbrido Columnar Compression (HCC) reestrutura dados em unidades de compressão de
vários
megabytes e está disponível apenas em determinadas plataformas de armazenamento.

compactação de base (que é o tipo padrão) é, na verdade, de-duplicação. Se um padrão de


repetição
caracteres de dentro de um bloco, o padrão é armazenado apenas uma vez em uma tabela de
ocorre
símbolos, com uma referência a
tabela de símbolos armazenados em cada linha onde ocorre o padrão. compactação de linha
avançada
mesma usa a
tecnologia de deduplicação. De qualquer maneira, a compressão é por bloco; as tabelas de
símbolos
fora utilizável
não são
do bloco no qual eles existem. HCC é verdade compressão, na medida em que utiliza
a compressão
algoritmos para reduzir o espaço necessário para armazenar dados. HCC não é aplicada por bloco,
masblocos,
de em todos
o que
os aumenta
grupos ainda mais as relações de compressão realizáveis.
O tipo de compressão é determinado no momento da criação da tabela. A compressão pode ser
removidos
adicionado
apósoua criação, mas qualquer mudança não afetará as linhas existentes. Para trazer a
mudança
efeito, para deve ser reorganizada. Tipicamente, esta seria conseguido com um ALTER TABLE
a tabela
. . . declaração MOVE.
A sintaxe para criar uma tabela com compressão básico ou avançado é uma declaração criação
comnormal,
um sufixo que especifica o tipo de compressão.

Proativamente monitorar e gerenciar Tablespace Espaço


Uso
O banco de dados irá monitorar automaticamente o uso de tabelas através do sistema de alerta do
servidor.
11 mostraFigura 15- consulta contra o DBA_THRESHOLDS.
uma vista

Figura 15-11 limiares Tablespace e uso

As primeiras duas linhas de saída para a Figura 15-11 mostram os limiares gerados pelo sistema
para
tabela uma
temporário e a tabela de undo; tablespaces desses tipos não são monitorados. Isto é
porque uma simples verificação de espaço livre é inútil para tablespaces destes tipos, porque eles são
geralmente totalmente ocupada por segmentos temporários ou desfazer. O que importa é se a
temporária dentro
segmentos ou desfazer
deles estão cheios; esta é uma métrica mais complexa que não está configurado
A terceira linha de saída da consulta mostra os alertas padrão de todo o banco de dados para
não todos os alerta
tem um espaços de tabela queconfigurado. O alerta de aviso é fixado em maior ou igual a 85
explicitamente
por cento, e o alerta crítico é definido como maior ou igual a 97 por cento.
Além do sistema de alerta, que irá informá-lo sobre questões de acordo com pré-configurado
limiares, a Oracle mantém um histórico de uso de espaço de tabela. Esta é armazenado no Workload
Repository (AWR), a informação a ser recolhida como parte dos snapshots AWR criadas pelo
automática
monitor de gerenciamento processo (MMON). Você pode ver esta informação no
Vista DBA_HIST_TBSPC_SPACE_USAGE. A segunda consulta na Figura 15-11 junta-se este
ponto V
visão de$vista
TABLESPACE
para o (a união é necessária para recuperar o nome de tabela) e mostra a história
de uso do espaço para cada tabela. Observe que há uma linha por tabela por snapshot. Você pode
ver que a frequência instantâneo foi definido como a cada 15 minutos, e que (nas poucas linhas
exibido)
não houve alteração no uso dentro do espaço de tabela EXEMPLO.

DICA Você pode querer escrever seu próprio código de relatórios que consulta
DBA_HIST_TBSPC_SPACE_USAGE para obter uma imagem de como o espaço está sendo usado
no modo
de banco que
de dados
você pode adicionar espaço para espaços de tabela antes que os alertas são levantadas.

Use o Segment Advisor


As tentativas para gerar Segmento Advisor recomendações relativas a reorganizar os segmentos
recuperar espaço. O problema é que ao longo do tempo, em algumas circunstâncias, tabelas e índices
segmentosmaior
tornar-se podemdo que o necessário para a quantidade de dados contidos dentro deles.
Um exemplo óbvio é muitas linhas de ter sido excluído. Eliminação libera espaço dentro do
segmento, mas o próprio segmento permanece o mesmo tamanho. Isso vai afetar o segmento de
mesa e todos
segmentos de índice associados. Na maioria dos casos, se o espaço já foi atribuído a um segmento,
entãoé mesmo
Não necessário
queagora, será necessário novamente. Por exemplo, o processo de carregamento de
dados em
tabelas de dados
armazém muitas vezes envolve a inserção de muitas linhas em uma tabela de teste,
processá-los,
excluí-los. Mas
e mesmo que a tabela pode estar vazia no final do dia de prazo, todo o espaço será
necessário novamente no dia seguinte.
Portanto, não é suficiente para examinar o estado atual de uma tabela para determinar se é
excessivamente grande; você também deve considerar a história do uso do espaço. O Segment
Advisor
esta. Ele pode
considera
fazer dados da AWR, bem como o estado atual dos objetos. as recomendações
são baseados em uma análise de amostra do objeto e informações históricas usadas para prever o
crescimento futuro
tendências.
O segmento Advisor é executado, por padrão, todas as noites como um trabalho Autotask
não programado.
tenta analisarocada
Autotask
segmento. É selecciona segmentos sobre estes critérios:

• Segmentos em espaços de tabela que cruzaram um limiar a utilização do espaço


• Os segmentos que tiveram a maior parte da atividade
• Os segmentos que têm a maior taxa de crescimento

Para ver os resultados da Autotask, use os DBMS_SPACE.ASA_RECOMMENDATIONS


função. Esta função retorna uma tabela com os resultados da última execução. A Figura 15-12
mostra
de consultar
um exemplo
o resultado do segmento Advisor Autotask, seguido pelos comandos que implementam
a sua
recomendações.
Figura 15-12 Recuperação e implementação de conselhos Autotask o Segmento de Advisor

DICA O segmento Advisor Autotask executado por padrão. Muitos DBAs não olhar para o seu
conselho.
deve Vocêpara os resultados ou desativar a tarefa.
ou olhar

Recuperar espaço desperdiçado a partir de tabelas e


índices pela
Usando a funcionalidade Segmento Shrink
Quando uma linha é excluída, o espaço que ele ocupava em seu bloco se torna disponível para
reutilização
outra linha équando
inserida. No entanto, a natureza da actividade contra uma tabela pode resultar em uma
significativa
quantidade de espaço desperdiçado dentro da tabela. Isto poderia ser recuperado com uma operação
de movimentação.
Após uma jogada, todos os blocos será consecutivamente cheio de linhas recém-reinseridas. Mas
duranteaotabela está bloqueada, e seguintes, todos os índices deve ser reconstruída. Para muitos
mover,
isso faz usando MOVE para reorganizar tabelas impossível. O comando SHRINK evita estes
ambientes,
problemas. Ele pode ser executado sem qualquer impacto nos usuários finais. A limitação é que de
tabelater
deve dasido
tabela
criado para usar o gerenciamento de espaço de segmento automático. Tabelas de tabela
aemtécnica
que usam
freelist mais velho para gerenciar o uso do espaço segmento não pode ser reduzido porque
(ao contrário do
novo método de bitmap) a freelist não inclui informações suficientes para Oracle para trabalhar
como
completo cada bloco é realmente.
A implementação subjacente de um psiquiatra tabela é para mudar linhas a partir da extremidade
da mesa
blocos em ao início da tabela, por meio de INSERÇÃO combinado e excluir as operações, e
em direção
então, quando todos os movimentos possíveis foram feitas, para trazer a marca de água de alta da
tabela para
último blocobaixo
usado para
atualmente
o e liberar todo o espaço acima deste ponto. Existem duas fases
A fase compacto move as linhas em uma série de pequenas transações, através DML normal que
distintas.
gera tanto desfazer e refazer e usa bloqueios de linha. A segunda fase é a Data Definition Language
(DDL) de comando. Tal como acontece com qualquer comando DDL, esta é uma transação contra o
dicionárioquase
executar de dados;
instantaneamente,
será mas vai exigir um curto bloqueio de tabela. Este último passo é
muitas vezes
“Tanto a marca referida
de água
como
elevado (HWM) do segmento.”

EXAME TIP Uma operação de redução tabela gera desfazer e refazer. Os índices são mantidos
porque o é implementado como um conjunto de transações DML. Não há bloqueio de tabela durante
encolher
a compactação,
linhas individuais
masserá bloqueado enquanto eles estão sendo movidos.

A sintaxe do comando SHRINK ESPAÇO é a seguinte:

Usando a palavra-chave COMPACT realiza a primeira fase mas não o segundo; em outras
linhas
palavras,
são realocados,
o mas o espaço não é realmente liberado do segmento. A razão para usar este
é que, enquanto a compactação pode ocorrer durante as horas normais de funcionamento (embora
possa demorar
completas sobremuitas
uma grande
horas para
mesa), é possível que o DDL no final vai travar por causa da
concorrência
com outras transacções, e que também irá invalidar SQL analisado no cache de biblioteca. Assim,
necessário
pode ser para encolher a mesa com a palavra chave COMPACT em primeiro lugar e, em seguida,
novamente
durante um sem
período
COMPACT
de manutenção. Vai ser rápido porque a compactação já terá sido feito. o
CASCATA chave instrui Oracle também a encolher objetos dependentes, tais como os índices.

EXAME TIP O comando SHRINK espaço compacto reorganiza o conteúdo do segmento


mas não retorna espaço para o espaço de tabela.

Antes de uma tabela pode ser reduzido, você deve permitir o movimento da linha para a mesa.

Permitindo o movimento de linha é necessária porque a natureza da operação significa que IDs
estardemudando.
linha seráA mesma linha (sem alteração para a chave primária) será em um local físico
diferente e
terá, portanto, um ID de linha diferente. Isso é algo que a Oracle não permitirá a menos fileira
movimento foi ativado.

EXAME TIP A tabela deve estar em um espaço de tabela com gerenciamento automático do espaço
segmento e linha
movimento deve ter sido habilitado; caso contrário, não pode ser reduzido. Se estas condições não
foram
conheceu, um movimento pode ser a única maneira de reorganizar a tabela.

A Figura 15-12 mostra permitindo o movimento de linhas de uma tabela, seguido por um espaço
recupera
reduzir
o espaço
esse a partir tanto da mesa e o seu índice.

TIP compressão é incompatível com ESPAÇO encolher. Você vai precisar para descomprimir antes
encolhendo. Para fazer isso, use ALTER TABLE. . . Nocompress e ALTER TABLE. . . MOVER.

Gerenciar Resumable Espaço Allocation


Muitas operações podem falhar por razões de espaço insuficiente. Esta tipicamente mostra-se como
a incapacidade
adicionar uma outra
de medida a um segmento, que em si pode ter várias causas. Um arquivo de dados
poderia ser
arquivo completo,
de dados auto-extensível ou tempfile poderia estar em um disco que está cheio, um
segmentotabela
desfazer desfazer
quepoderia
está cheio,
estaruma
em operação
uma que exige espaço temporário pode ser utilizando um
tablespace que está cheio, ou um usuário poderia ter atingido o seu limite de cota em um espaço de
temporária
tabela. Seja
motivo, os erros
qual relacionados
for o com o espaço tendem a ser tempo terrivelmente demorado.
Considere um exercício para carregar dados em um data warehouse. A primeira vez que você
porque
tentar
a tabela
isso, ele
de falhar
destino ficar sem espaço. Os dados que se ir deve ser revertida
(O qual pode demorar tanto tempo como a inserção), o espaço de tabela estendida, e a carga feito de
novo.
por causa
Em de
seguida,
espaçoele
insuficiente
falhar desfazer; portanto, você reverter, aumentar a tabela de undo, e
novamente. Em seguida, ele falhar durante índice de reconstrução por causa de uma falta de espaço
tentar
temporário.como
Exercícios E assim
essepor
sãodiante.
a perdição da vida de muitos DBAs. O recurso alocação de espaço
resumable
ser pode
a solução.
Se você ativar a alocação de espaço resumable, quando uma operação atinge um problema de
espaço (qualquer
problema), ao invés de espaço
falhar com um erro (e em muitos casos, reverter o que conseguiu
fazer), a operação será suspensa. Para o usuário, isso vai mostrar como o enforcamento sessão.
Quando ode erro for resolvido, ele vai continuar. Todas as sessões suspensas (actualmente suspenso
condição
eanteriormente suspensa, mas agora funcionar novamente) estão listados na DBA_RESUMABLE
vista.
Para habilitar a alocação de espaço resumable no nível da sessão, o comando é o seguinte:
A opção de tempo limite permite especificar por quanto tempo a declaração deve pendurar. Se
esse tempo é
alcançado sem o problema a ser resolvido, o erro é retornado, e a declaração falhar. Se não houver
Sem tempo limite especificado, a sessão irá travar indefinidamente.

DICA É possível para um processo a ser suspensa e retomada muitas vezes sem o seu conhecimento.
A visão DBA_RESUMABLE vai mostrar detalhes de somente a suspensão atual ou passado.

Também é possível habilitar espaço resumable para todas as sessões, definindo um parâmetro de
Esteinstância.
é um parâmetro dinâmico. Por exemplo, aqui é como definir um tempo limite de um minuto:

Isso fará com que todas as sessões que atingiram um problema de espaço a ser suspenso por até um
minuto.

TIP O expdb e impdp utilidades da bomba de dados tem a opção de linha de comando Y =
(O padrão é N), o que permitirá que os trabalhos de bombagem de dados para suspender se bater
RESUMABLE
problemas de espaço.
extremamente útil. Isto é

Há pouco ponto em permitir a alocação de espaço resumable para uma sessão ou a instância se
não você
fazer nada sobre o problema que causou a sessão ser suspensa. sessões suspensas vontade,
por padrão, ser comunicados através do sistema de alerta do servidor, será exibido pelo controle de
banco de
listado nadados,
vista dicionário
e ser de dados DBA_RESUMABLE. Tendo descoberto um problema, você
pode corrigi-lo
interativa a partir de outra sessão. Ou você pode criar um após suspender ON gatilho DATABASE,
que será executado sempre que a sessão está suspensa. Esse gatilho poderia relatar o problema
(talvez por
gerando um e-mail), ou poderia incluir código para investigar o problema e corrigi-lo
automaticamente.

Broca Two-Minute
Descrever o armazenamento de tabela de dados Row nos Blocos
• Um espaço de tabela pode se estender por muitos arquivos de dados.
• Uma tabela pode ter vários segmentos.
• Um segmento é um ou mais extensões.
• Uma medida é muitas blocos consecutivos em um arquivo de dados.
• Um bloco do Oracle deve ser um ou mais blocos do sistema operacional.
• O bloco Oracle é a granularidade do banco de dados de I / O.
• Um espaço de tabela smallfile pode ter muitos arquivos de dados, mas um espaço de tabela
bigfile só pode ter
1.
• padrão Tablespaces à gestão extensão local e gerenciamento de espaço de segmento
automático,
não para um
mastamanho uniforme medida.
• arquivos de dados OMF são automaticamente nomeado, são inicialmente 100 MB, e pode
autoextend
limite. sem
• Um espaço de tabela que contém segmentos não pode ser descartado, a menos que um
DATAFILES
cláusula é especificado.
INCLUINDO
• Espaços de tabela pode ser on-line ou off-line e leitura-gravação ou somente leitura.
• Qualquer um espaço de tabela pode armazenar apenas um tipo de objeto: objetos permanentes,
objetos temporários,
ou desfazer segmentos.

Criar e gerenciar Tablespaces


• Espaços de tabela pode ser redimensionada, adicionando arquivos de dados ou arquivos de
dados,
• gestãoestendendo existentes.
da extensão local rastreia alocação de extensão com bitmaps em cada arquivo de dados.
• A cláusula de tamanho uniforme ao criar um espaço de tabela obriga todas as extensões para
ser
• A ocláusula
mesmo autoallocate
tamanho. permite que a Oracle determinar o próximo tamanho de extensão, que
sequantas
baseia na
extensões estão sendo alocados a um segmento.
• Gestão automática do espaço segmento rastreia o espaço livre em cada bloco de uma medida
usando
bitmaps.
• É possível converter uma tabela do dicionário de gestão de extensão a extensão local
gestão, mas não de gestão do segmento freelist a gestão automática.

Explicar como Oracle Database Server gerencia automaticamente o espaço


• O espaço é alocado aos segmentos sob demanda na forma de extensões. o uso de medida é
rastreado
bitmaps.por
• Uso do espaço dentro de um segmento é controlado em 25 por cento bandas por bitmaps.

Economizar espaço usando a compactação


• compressão de-duplicados Dados básicos quando inserida através de uma carga direta.
• compactação de linha avançada pode manter a compressão de duplicação através
DML convencional.

Proativamente monitorar e gerenciar Tablespace Uso de Espaço


• O sistema de alerta servidor é pré-configurado para elevar alertas quando um espaço de tabela
é de
(Aviso)
85 pore cento
97 porcheio
cento completa (crítica).
• Os alertas não são criados para espaços de tabela temporários ou desfazer.
• limiares de alerta pode ser configurado para qualquer valor para qualquer espaço de tabela
individualmente.

Use o Segment Advisor


• O Segment Advisor é executado a cada noite como um Autotask.
• O conselho será a encolher uma mesa se isso iria liberar uma quantidade significativa de
espaço.
• O Segment Advisor considera uso histórico, bem como o uso atual.

Recuperar espaço desperdiçado a partir de tabelas e índices usando o Segmento


funcionalidade
Shrink
• A operação de redução da tabela muda linhas em direção à frente do segmento e (por padrão)
libera espaço livre no final.
• Um psiquiatra é uma operação on-line e no local; não requer espaço adicional durante a
execução,
a tabela não
e está bloqueado contra a outra DML.

Gerenciar Resumable Espaço Allocation


• alocação de espaço Resumable pode ser habilitado para uma sessão ou para a instância.
• Se uma sessão atinge um erro de espaço, ele vai pendurar até que o problema seja corrigido,
ouexpirar.
até um tempo limite
• Um gatilho base de dados pode ser configurado para disparar sempre que a sessão está
suspensa.
Auto teste a exposição:
1 . Examinar

A exposição mostra o modelo de armazenamento Oracle, com quatro entidades tendo letras
para nomes.

Combinar quatro dos seguintes entidades para as letras A, B, C , e D :


A. Datafile
B. Extensão
C. bloco do Oracle
D. Row
E. Segment
F. Tabela
2 . Que afirmações são corretas sobre extensões? (Escolha todas as respostas corretas.)
A. Uma extensão é um agrupamento de vários blocos Oracle.
B. Uma extensão é um agrupamento de vários blocos do sistema operacional.
C. Uma extensão pode ser distribuído através de um ou mais arquivos de dados.
D. Uma extensão pode conter blocos de um ou mais segmentos.
E. Uma extensão pode ser atribuído a apenas um segmento.
3 . Quais destes são tipos de segmentos? (Escolha todas as respostas corretas.)
A. Sequence
B. Procedimento armazenado
C. Tabela
D. partição Tabela
E. Ver
4 . Se um espaço de tabela é criado com a sintaxe

qual destas características que terá? (Escolha todas as respostas corretas.)


A. O arquivo de dados irá autoextend, mas apenas para dobrar seu tamanho inicial.
B. O arquivo de dados irá autoextend com MAXSIZE ilimitado.
C. gerenciamento A extensão será local.
D. gerenciamento de espaço de segmento será com bitmaps.
E. O arquivo será criado no diretório DB_CREATE_FILE_DEST.
5 . Como pode um espaço de tabela ser feita maior? (Escolha todas as respostas corretas.)
A. convertê-lo de um espaço de tabela smallfile a um espaço de tabela bigfile.
B. Se for um espaço de tabela smallfile, adicionar arquivos.
C. Se é um espaço de tabela bigfile, adicionar mais arquivos.
D. Redimensionar o arquivo existente (ou arquivos).
6 . Qual destes comandos podem ser executados contra uma tabela em um espaço de tabela
somente leitura?
(Escolha a melhor resposta.)
A. APAGAR
B. GOTA
C. INSERIR
D. TRUNCATE
E. UPDATE
7 . O que a operação não pode ser aplicado a uma tabela após a criação? (Escolha a melhor
resposta.)
A. Converter de dicionário medida de gestão para gestão de extensão local.
B. Converta de gerenciamento de espaço de segmento de manual para o espaço segmento
automática
gestão.
C. Alterar o nome do espaço de tabela.
D. Reduzir o tamanho do arquivo de dados (ou arquivos de dados) atribuído à tabela.
E. Todas as operações acima descritas podem ser aplicadas.
8 . Quando o banco de dados está no modo de montagem, o que vista pode ser consultado para
verificar
tablespaces
qual arquivos
compõem deodados
bancoe de dados? (Escolha todas as respostas corretas.)
A. DBA_DATA_FILES
B. DBA_TABLESPACES
C. DBA_TEMP_FILES
D. V $ DATABASE
E. V $ DATAFILE
F. V $ TABLESPACE
9 . Que vistas você pode consultar para saber mais sobre os espaços de tabela temporários e os
arquivos
torná-los
queup? (Escolha todas as respostas corretas.)
A. DBA_DATA_FILES
B. DBA_TABLESPACES
C. DBA_TEMP_TABLESPACES
D. DBA_TEMP_FILES
E. V $ DATAFILE
F. V $ TABLESPACE
G. V $ TEMPTABLESPACE
H. V $ Tempfile
10 . Quais afirmações são corretas sobre extensões? (Escolha todas as respostas corretas.)
A. Uma extensão é um agrupamento consecutivo de blocos Oracle.

B. Uma extensão é um agrupamento aleatório de blocos Oracle.


C. Uma extensão pode ser distribuído através de um ou mais arquivos de dados.
D. Uma extensão pode conter blocos de um ou mais segmentos.
E. Uma extensão pode ser atribuído a apenas um segmento.
11 . Quais destes são tipos de segmentos? (Escolha todas as respostas corretas.)
A. Sequence
B. Procedimento armazenado
C. Tabela
D. partição Tabela
E. Ver
12 . Que forma de compressão utiliza algoritmos de compressão em vez de de-duplicação
algoritmos? (Escolha a melhor resposta.)
A. Compressão implementado com COMPRESS BASIC.
B. Compression implementado com STORE ROW COMPRESS ADVANCED.
C. compressão colunar híbrido.
D. métodos de compressão All da Oracle usa algoritmos de compressão.
E. Todos os métodos de compressão da Oracle usam algoritmos de eliminação de
duplicação.
13 . Você recebe um alerta avisando que a tabela está quase cheio. Que medidas você pode tomar
para evitar que isso se tornar um problema, sem qualquer impacto para os usuários?
(Escolha duas correta
respostas.)
A. Purge todos reciclar objetos bin no espaço de tabela.
B. Encolher as tabelas no espaço de tabelas.
C. Diminuir os índices na tabela.
D. Mover uma ou mais tabelas para um espaço de tabela diferente.
E. Mover um ou mais índices de uma tabela diferente.
14 . Qual processo é responsável por enviar o alerta quando um tablespace uso limiar crítico
é atingido? (Escolha a melhor resposta.)
A. Database Control
B. O pacote DBMS_SERVER_ALERT
C. MMON, o processo do monitor de gerenciamento
D. O processo servidor da sessão que detectou o problema
E. DBW n , o escritor de banco de dados, quando detecta o problema
15 . Quando é que o segmento Advisor correr? (Escolha duas respostas corretas.)
A. Todas as noites, como um Autotask

B. On Demand
C. automaticamente quando uma tabela cruza um limite para a utilização do espaço
D. automaticamente quando uma sessão é suspensa pela alocação de espaço resumable
mecanismo
16 . Qual dos seguintes comandos irá encolher o espaço em um segmento de tabela ou índice e
mudaro HWM? (Escolha a melhor resposta.)
A. ALTER tabela Empregados ENCOLHA espaço compacto HWM;
B. ALTER TABLE TRABALHADORES ENCOLHA ESPAÇO HWM;
C. ALTER TABLE TRABALHADORES ENCOLHA espaço compacto;
D. ALTER TABLE TRABALHADORES ENCOLHA ESPAÇO CASCATA;
E. ALTER TABLE TRABALHADORES ENCOLHA ESPAÇO;
17 . O que é necessário antes de encolher a mesa? (Escolha todos os que se aplicam.)
A. Triggers deve ser desativado.
B. Os índices devem ser descartados.
C. movimento Row deve estar habilitado.
D. gerenciamento de espaço de segmento automático deve ser ativado.
E. colunas LOB deve ser descartado.
18 . Como você pode permitir a suspensão e retomada das declarações que atingiram erros de
espaço?
(Escolha todas as respostas corretas.)
A. Issue um ALTER SESSION comando ENABLE RESUMABLE.
B. Issue um sistema ALTER comando ENABLE RESUMABLE.
C. Defina as RESUMABLE_STATEMENTS parâmetro de instância.
D. Defina a RESUMABLE_TIMEOUT parâmetro de instância.
E. Use o procedimento DBMS_RESUMABLE.ENABLE.
19 . Se uma declaração é suspenso por causa de um erro de espaço, o que vai acontecer quando o
problema
fixo? (Escolha
é a melhor resposta.)
A. Após o tempo limite resumable expirou, a declaração vai continuar a execução do
apontar que tinha alcançado.
B. Após o tempo limite resumable expirou, a instrução irá iniciar a execução do
começando novamente.
C. A declaração vai começar a executar desde o início imediatamente após o problema é
fixo.
D. A declaração vai continuar a executar a partir do ponto em que havia atingido
imediatamente
problema seja
após
corrigido.
a

Respostas de auto-teste
1. Um é SEGMENTO, B é medida, C é ORACLE BLOCO, e D é DATAFILE.
Nem ROW nem TABLE está incluído no modelo.
2. A e E . Uma medida é de vários blocos consecutivos da Oracle, e um segmento consiste
uma ou mais extensões.
B , C , e D estão incorrectos. Eles interpretam mal o modelo de armazenamento Oracle.
3. C e D . Uma tabela pode ser um tipo de segmento, como pode uma partição tabela (caso
própria
em tabela
que o não será um segmento).
A , B , e E são incorrectas. Eles só existem como objetos definidos dentro do dicionário
O próprio
de dados.
dicionário de dados é um conjunto de segmentos.
4. C e D. extensão local de gestão e gestão automática espaço segmento são
ativado por padrão.
A , B , e E são incorrectas. A e B estão incorretas porque, por padrão, autoextension é
Desativado. E é incorrecta porque fornecer um nome de ficheiro irá substituir o mecanismo
5. OMF. B e D . Um espaço de tabela smallfile pode ter muitos arquivos e todos os arquivos de
paradados
cima. podem ser redimensionadas
A e C são incorrectas. A está incorreta porque você não pode converter entre smallfile
e BIGFILE. C está incorreta porque um espaço de tabela bigfile pode ter apenas um arquivo.
6. B . Os objetos podem ser caiu de espaços de tabela somente leitura.
A , C , D , e E são incorrectas. Todos estes comandos irá falhar porque eles exigem
paraescrita
a mesa, ao contrário de uma gota, que escreve apenas para o dicionário de dados.
7. B . Não é possível alterar o método de gerenciamento de espaço de segmento após a
criação.
A , C , D , e E são incorrectas. A e C são incorrecta porque uma tabela pode ser
convertidos em gestão extensão local ou renomeado a qualquer momento. D é incorrecta
porque um
arquivo de dados pode ser redimensionada para baixo, embora apenas se o espaço a ser
liberado
sido nãoEtem
usado. estájáincorreta porque você não pode mudar a gestão do espaço segmento sem
recriar a tabela.
8. E e F . Juntando esses pontos de vista vai dar as informações necessárias.
A , B , C , e D estão incorrectos. A , B , e C são vistas incorrecta porque estes não será
disponível no modo de montagem. D está incorreta porque não há nenhuma informação
V $ DATABASE.
relevante
9. B , D , F , e H . V $ TABLESPACE e DBA_TABLESPACE irá listar o temporário
tablespaces e V $ tempfile e DBA_TEMP_FILES irá listar seus arquivos.
A , C , E , e G estão incorrectos. A e E são incorrecta porque V $ DATAFILE e
DBA_DATA_FILES não incluem tempfiles. C e G são incorrecto porque não existem
pontos de vista com esses nomes.
10. A e E . Uma medida é de vários blocos consecutivos da Oracle, e um segmento consiste
uma ou mais extensões.
B , C , e D estão incorrectos. Eles interpretam mal o modelo de armazenamento Oracle.

11. C e D. A tabela pode ser um tipo de segmento, e pode assim uma partição tabela.
A , B , e E são incorrectas. Estes existem apenas como objectos definidos no dicionário
O próprio
de dados.
dicionário de dados é um conjunto de segmentos.
12. C . Compressão colunar híbrido é verdade compressão.
A , B , D , e E são incorrectas. A e B são ambos incorrecta porque BASIC e
Compressão avançada são, de fato, com base em de-duplicação. D e E são incorrectos
porque a Oracle pode usar qualquer técnica.
13. A e B . Ambos purga caiu objetos e tabelas encolhendo vai liberar espaço
imediatamente, sem tempo de inatividade.
C , D , e E são incorrectas. Um índice pode ser reduzido, mas isso vai liberar espaço
índice,
dentro
não do
o envie para o espaço de tabela. Deslocalização tanto índices ou tabelas tem
aimplicações
disponibilidade
para dos dados.
14. C . O processo de fundo MMON levanta alertas.
A , B , D , e E são incorrectas. A está incorreta porque, apesar de relatórios de controle
de banco
alertas, de dados
não criá-los. B está incorreta porque a API DBMS_SERVER_ALERT é
usado para configurar o sistema de alerta-lo não implementá-lo. D e E são incorrecta porque
processos de primeiro e segundo plano vai encontrar problemas, não avisar de sua
15. iminência.
A e B . A menos que o Autotask foi desativado, ele será executado em todos os
janela.
manutenção
Ele também pode ser invocada sob demanda.
C e D são incorrectas. C está incorreta porque, apesar de um alerta uso de tabela será
fazer com que o Autotask para analisar todos os objetos no espaço de tabela na janela de
manutenção
isso seguinte,
não acontece quando o alerta é gerado. D está incorreta porque a única ação
por suspensão de uma sessão está executando o após suspender ON gatilho DATABASE.
desencadeada
16. D . PSIQUIATRA ESPAÇO ambos os pactos os dados e move o HWM. Enquanto o
HWM
sendo é operações DML em cima da mesa estão bloqueadas.
movido,
A , B , C , e E são incorrectas. A , B , e E são sintacticamente incorrecta. C é incorrecta
porque COMPACT só executa a operação de redução, mas não move o HWM depois
encolhendo o segmento.
17. C e D . Movimento Row é necessário porque um psiquiatra vai mudar IDs de linha.
necessário
ASSMparaé dar as informações necessárias sobre como completo um bloco é.
A , B , e E são incorrectas. A está incorreta porque gatilhos não dispara para a operação;
eles vão continuar a disparar para qualquer outro DML. B é incorrecta porque os índices são
mantidas
durante um psiquiatra. E é incorrecta porque segmentos LOB não bloqueará uma retracção
tabela.
ser Elas vão
reduzido a si mesmos se CASCADE for especificado.
18. A e D . Estes são os dois únicos métodos que permitam a alocação de espaço resumable.
B , C , e E são incorrectas. B e C são incorrecta porque a alocação de espaço é
recuperável
habilitado no nível do sistema com o RESUMABLE_TIMEOUT parâmetro de instância. E
éincorreto porque embora haja um pacote chamado DBMS_RESUMABLE, isso não
(Em vez irritante) incluir um procedimento para permitir a alocação de espaço recuperável.
acontece
19. D . Como “suspenso” implica, a declaração continuará a partir do ponto em que
parado.

A , B , e C são incorrectas. Os controles de tempo de espera quanto tempo a suspensão


retornando um erro;
pode durar antesé o período durante o qual o problema pode ser corrigido.
CAPÍTULO 16

A oracle Segurança

Objetivos do exame
• 062.6.1 criar e gerenciar contas de banco de dados de usuários
• Grant 062.6.2 e revogar privilégios
• 062.6.3 criar e gerenciar funções
• 062.6.4 Criar e gerenciar perfis
• 062.9.1 Explique Responsabilidades DBA para a Segurança e Auditoria
• 062.9.2 Habilitar Auditoria Database Standard e Unified Auditoria
segurança de banco de dados tem vários aspectos. Primeiro, há a autenticação: Quem pode se
conectar? Como
identificá-los? Em é que
segundo
um lugar, não há autorização: O que são os usuários autorizados a fazer?
Comoações?
Suas é que Finalmente,
se restrinja há a auditoria: Dado que os usuários podem se conectar e executar
determinadas
você acompanharações, como
o que eles estão fazendo? Estes aspectos são abordados neste capítulo.

Quando um usuário fizer logon no banco de dados, seguindo alguns meios de identificação, eles
conta
se de
conectam
usuárioa, umque define suas permissões de acesso iniciais e os atributos da sessão.
Associado a uma conta de usuário é um esquema. Os termos do usuário, conta de usuário , e
esquema
usados muitas vezes pode
alternadamente ser
no ambiente Oracle, mas eles nem sempre são a mesma coisa. Um utilizador
é um que se conecta a uma conta de usuário ao estabelecer uma sessão com a instância eo logon
pessoa
com o nome da conta do usuário. Um esquema é um conjunto de objetos pertencentes a uma conta
de usuário.
A conta de usuário deve ser concedido privilégios antes de uma sessão (ou sessões) conectado à
podeconta
fazer nada. Muitos privilégios diferentes podem ser concedidos para muitos objetos e ações
diferentes, e de privilégios, individualmente, não é prático para qualquer mas os sistemas mais
gerenciamento
simples. privilégios
geralmente agrupados sãoem papéis, que fazem administração de privilégios muito mais fácil.
Você pode usar perfis para gerenciar senhas e (de forma limitada) controlar os recursos que um
usuárioconsumir
permitido está dentro da instância e o banco de dados.
Em muitos ambientes, os usuários terão permissão para fazer certas coisas, mas isso não
devesignifica que
ser capaz deeles
fazê-las sem um registro que está sendo mantido. Por exemplo, um administrador
da base de dados
(geralmente) ser capaz
(DBA)de ler e escrever qualquer linha em qualquer tabela no banco de dados. Esta é
parteexemplo,
Por de seu trabalho.
se a corrupção de dados de negócios ocorre (talvez por erro do usuário ou através da
problemas de software), a DBA precisará usar SQL * Plus ou alguma outra ferramenta que pode
aplicação
ignorar todo
segurança deoaplicativos e regras e editar os dados para corrigi-lo. Mas isso não significa que o DBA
deve ser em tabelas de dados sensíveis, sem uma boa razão. Ações como esta não pode ser evitado,
mergulho
eles podem, e devem, ser rastreado. Este é o propósito da auditoria: para gravar ações que são
mas
permitidas, masprejudiciais.
potencialmente

Criar e gerenciar contas de banco de dados de usuários


Para estabelecer uma sessão contra uma instância e um banco de dados, o usuário deve se conectar a
uma conta
conta deve de
serusuário.
especificado
o pelo nome e autenticado por alguns meios. A forma como a conta era
criado criará uma variedade de atributos para a sessão, alguns dos quais podem ser alteradas
posteriormente
sessão está em andamento.
enquanto o

Atributos de Conta de Usuário


Uma conta de usuário tem uma série de atributos definidos no momento da criação da conta. Estes
atributos aserão
aplicado sessões que se conectam à conta, embora alguns possam ser modificados pela sessão ou o
DBA enquanto a sessão está em execução. Estes atributos são os seguintes:

• Nome de usuário
• Método de autenticação
• espaço de tabela padrão

• quotas Tablespace
• tabela temporário
• Perfil de usuário
• Status da Conta

Todos estes devem ser especificado ao criar o usuário, embora apenas usuário e autenticação
métodos são obrigatórios; os outros têm padrões.

Nome de Usuário
O nome de usuário deve ser exclusivo no banco de dados e deve obedecer a certas regras. Um nome
de usuário
começar com
deve
uma letra, não devem ter mais de 30 caracteres, e pode consistir apenas de letras,
algarismos,
cifrão ea
($) e caracteres de sublinhado (_). Um nome de usuário não pode ser uma palavra reservada.
As letras sãoe minúsculas, mas será convertido automaticamente para maiúsculas. Todas estas regras
maiúsculas
(com
o comprimento)
a exceção depode ser interrompida se o nome de utilizador é especificada dentro de aspas, como
se mostra na Figura 16-1 .

Figura 16-1 Como criar usuários com nomes diferentes do padrão

No primeiro exemplo, na figura, o nome de utilizador JOÃO é criado. Este foi inscrito em letras
masminúsculas
terá sido convertido para maiúsculas, como mostrado na primeira consulta. O segundo exemplo
aspas duplas para criar o usuário com um nome em letras minúsculas. Os terceiro e quarto exemplos
utiliza
usampara
cita duplo
ignorar as regras de caracteres e palavras reservadas; ambos falharia sem a
aspas duplas. Se um nome de usuário inclui letras minúsculas ou caracteres ilegais ou é uma palavra
em seguida, aspas duplas devem ser usadas para se conectar à conta posteriormente.
reservada,

DICA É possível usar nomes de usuários fora do padrão, mas isso pode causar confusão terrível.
aplicações contam com a conversão caso; outros sempre usar aspas duplas. Pode ser considerado
Alguns
bom
prática sempre usar letras maiúsculas e apenas os caracteres padrão; isto significa que as aspas
duplas
ser usado
pode
ou não.

Tablespace padrão e Quotas


Cada conta de usuário tem uma tabela padrão , que é o espaço de tabela em que todos os objetos de
esquema
como
tablespace(tais
tabelas
emeque
índices) criados
lhes tenha pordada
sido um usuário irá residir.
uma quota, É possível
mas a menos para os
que outro usuários
espaço de possuir
de tabela é
objetos
criar em qualquer
especificado
o objeto,
quando
ele vai entrar em espaço de tabela padrão do usuário.
Um espaço de tabela padrão para todo o banco de dados será aplicada a todas as contas de
não usuário
especificado
se umaoespaço
criar odeusuário.
tabela padrão
O padrão
é pode ser definido ao criar o banco de dados e, em
mudado mais tarde com o seguinte:
seguida,

Se um espaço de tabela padrão não é especificado quando o banco de dados é criado, ele será
tablespace.
ajustado para o sistema

CUIDADO Depois de criar um banco de dados, não deixe o espaço de tabela padrão como sistema;
isto é mau
prática. Quer mudá-lo, logo que tiver criado um outro espaço de tabela ou usar uma forma do
Comando CREATE DATABASE que cria um espaço de tabela padrão.

Uma quota é a quantidade de espaço de uma tabela que um utilizador está autorizado a ocupar. O
criarusuário
objetospode
e alocar extensões para eles até que a cota seja atingido. Se o usuário não tem cota em
tabela, o usuário não pode criar quaisquer objetos em tudo. As quotas podem ser alteradas a qualquer
uma
momento.
quota é reduzida
Se um ausuário
menos do que o tamanho dos objetos que o usuário já possui (ou mesmo reduzido
a zero),
os objetos vão sobreviver e ainda será utilizável, mas eles não serão autorizados a ficar maior.
Figura 16-2 mostra como para investigar e definir quotas.

Figura 16-2 quotas do usuário Gerenciando

A primeira consulta na figura é contra DBA_USERS e determina o padrão e temporário


de tabela para o utilizador JOÃO, criado na Figura 16-1 . DBA_USERS tem uma linha para cada
conta no banco de dados. Usuário JOHN pegou os padrões de banco de dados para o padrão e
usuário
tablespaces, que são mostrados na última consulta contra DATABASE_PROPERTIES.
temporário
NOTA A maioria dos usuários não vai precisar de quotas, porque eles nunca vão criar objetos. Eles
só vai
ter permissões contra objetos pertencentes a outros esquemas. Os poucos schemas-possuir objeto irá
provavelmente tem cota ilimitada sobre os espaços de tabela onde seus objetos residem.

Os dois comandos alter user na Figura 16-2 dar JOÃO a capacidade de levar até 10MB
de espaço na tabela USERS e ter uma quantidade ilimitada de espaço no EXEMPLO
tablespace. A consulta contra DBA_TS_QUOTAS confirma isso; o número -1 é como “ilimitado” é
representados. Na época, a consulta foi executada, João não tinha criado qualquer objeto, de modo
que ossão
Bytes números
zeros, para
indicando que ele não está usando todo o espaço em qualquer espaço de tabela.

EXAME DICA Antes de criar um segmento, você deve ter tanto permissão para executar CRIAR
TABLE e uma cota em uma tabela em que para criá-lo.

tabela temporário
objetos permanentes (como tabelas) são armazenados em tablespaces permanentes; objetos
temporários
na tabela temporários.
são armazenados
A sessão terá espaço em um espaço de tabela temporário se ele precisa de
espaçooperações
certas para que excedem o espaço disponível no Programa Global Area da sessão (PGA).
Cada conta de usuário é atribuído um espaço de tabela temporário, e todas as sessões de usuário se
conectar
conta irá àcompartilhar este espaço de tabela temporário.
A consulta contra DBA_USERS na Figura 16-2 mostra tabela temporário utilizador de JOÃO,
nesteque
caso, é o espaço de tabela temporário padrão de banco de dados porque uma tabela temporário
Não foi especificado quando o usuário foi criado. Isso é mostrado pela última consulta na Figura 16-
alternativa
2 , contra
DATABASE_PROPERTIES.
Um usuário não precisa de ser concedida uma cota em sua tabela temporário. Isso ocorre porque
objetos
o não são realmente de propriedade do usuário; são de propriedade do usuário SYS, que tem
uma
cota ilimitada em todos os espaços de tabela.

EXAME DICA Os usuários não precisam de uma quota em seus espaços de tabela temporários.

Para alterar tabela temporário do usuário (o que afetará todas as sessões futuras que se conectam
à use um usuário comando ALTER.
conta),

DICA Se muitos usuários estão se conectando à mesma conta de usuário, eles irão compartilhar o
uso de um temporário
tablespace. Isso pode ser um gargalo de desempenho, que pode ser evitado pelo uso temporário
grupos tabela.

Status da Conta
Cada conta de utilizador tem um certo status, conforme listado na coluna ACCOUNT_STATUS de
DBA_USERS. Há cinco possibilidades:
• ABRIR A conta está disponível para uso.
• BLOQUEADO Isso indica que o DBA deliberadamente bloqueado a conta. Nenhum usuário
pode
paraseuma
conectar
conta bloqueada.
• EXPIRADA Isso indica que o tempo de vida expirou. As senhas podem ter um limitado

tempo de vida. Nenhum usuário pode se conectar a uma conta expirada até que a senha é
redefinida.
• expirado (GRACE) Isso indica que o período de carência está em vigor. Uma senha não
precisa
expiram imediatamente quando termina a sua vida útil; ele pode ser configurado com um
período
quais de carência
usuários durante
que ligam para a conta tem a oportunidade de alterar a senha.
• bloqueado (TIMED) Isto indica que a conta está bloqueada por causa de login falhou
tentativas. Uma conta pode ser configurado para bloquear automaticamente durante um
período após
password é apresentado
uma incorrecta
um determinado número de vezes.

Para bloquear e desbloquear uma conta, use estes comandos:

Para forçar um usuário a alterar sua senha, utilize este comando:

Isto irá iniciar imediatamente o período de carência, forçando o usuário a alterar sua senha em
próxima
seu tentativa de login. Não existe tal comando como ALTER ... cancelar o vencimento. A única
maneira
conta totalmente
de fazer funcional
a novamente é para redefinir a senha.

Métodos de autenticação
Uma conta de utilizador tem de ter um método de autenticação, em outras palavras, alguns meios
pelos quais
banco de dados
o pode determinar se o usuário tentar criar uma sessão de conexão com a conta é
permissão para fazê-lo. A técnica mais simples é através da apresentação de uma senha que será
comparado
senha armazenada
com umno banco de dados, mas existem alternativas. Estas são as possibilidades:

• autenticação do sistema operacional


• autenticação de arquivo de senha
• autenticação de senha
• A autenticação externa
• autenticação global

As duas primeiras técnicas são utilizadas apenas para os administradores; o último requer um
Directory
leve Access Protocol (LDAP) servidor de diretório. O servidor de diretório LDAP é o Oráculo
Internet Directory, enviado como parte do Oracle Fusion Middleware Suite.

Sistema Operacional e autenticação de senha de arquivo


Para habilitar o sistema operacional e autenticação de arquivo de senha (os dois vão juntos) para
uma conta,
deve conceder
vocêao usuário uma função de administração. Há seis deles:
Conceder os papéis da seguinte forma:

Concessão de qualquer (ou todos) desses privilégios irá copiar a senha do usuário do dicionário
paradeo dados
arquivo de senhas externo, onde pode ser lido pelo exemplo, mesmo que o banco de dados
não está
Após a criação
aberto.do banco de dados, o único usuário com esses privilégios é SYS. Ele também permite
que a instância
autenticar os usuários,
para verificando se o usuário do sistema operacional tentando a conexão é um
membro do grupo de sistema operacional mapeado para o nome do grupo Oracle. No Linux, o
operacional
grupos de sistemas deve ser especificado durante a instalação do Oracle Home. No Windows, não há
Os grupos são criados implicitamente com esses nomes:
escolha.

Para usar a autenticação de arquivo de senha, o usuário pode se conectar com esta sintaxe com o
SQL * Plus:

Note que você pode usar a autenticação do arquivo de senha para uma conexão com um banco de
Oracle
dados
Net.
remoto
Esta éatravés
uma impossibilidade lógica com a autenticação do sistema operacional porque ao
utilizar um

banco de dados remoto, nunca fizer logon no sistema operacional remoto.


Para usar a autenticação do sistema operacional, o usuário pode se conectar com esta sintaxe
com o SQL * Plus:

A senha do sistema operacional não é armazenado pelo Oracle, e, portanto, não há problemas
alteração
com de senhas.
O equivalente dessas sintaxes também está disponível quando se conectar com banco de dados
a caixa
Express,
de seleção
por AS SYSDBA na janela de login Expresso banco de dados. Para determinar a
quem
os privilégios SYSDBA e SYSOPER foram concedidos, consultar os $ PWFILE_USERS vista V.
conexão com o sistema operacional ou a autenticação de arquivo de senha é sempre possível, não
UMA
importaa oinstância
estado que e banco de dados estão em, e é necessário para a emissão de inicialização e
comandos.
desligamento

TIP EXAME Todas as sessões de usuário deve ser autenticado. Não existe tal coisa como um
login, e alguns método de autenticação deve ser usado. Há, no entanto, um usuário anônimo,
“anônimo”
que é a conta utilizada pelas aplicações Oracle Application Express (APEX).
autenticação de senha
A sintaxe para uma conexão com autenticação de senha usando SQL * Plus é a seguinte:

Quando o usuário se conecta com autenticação de senha, a instância irá validar a senha
dada contra o hash de senha armazenada com a conta de usuário no dicionário de dados. Para que
isso
o banco
funcione,
de dados deve ser aberto; é logicamente impossível a emissão de inicialização e
desligamento
comandos quando conectado com autenticação de senha. O SYS usuário não tem permissão para se
com autenticação de senha; único arquivo senha, sistema operacional e autenticação LDAP são
conectar
possível para SYS.
Nomes de usuários são sensíveis, mas são convertidos automaticamente para maiúsculas a menos
dentro
quedeespecificado
aspas duplas. As senhas são caso sensível, e não há nenhuma conversão caso automático.
Isto é necessário usar aspas duplas; a senha será sempre ler exatamente como entrou.
não
Qualquer usuário pode alterar a senha da conta de usuário, a qualquer momento, ou um usuário
SYSTEM)
altamente
pode
privilegiado
alterar qualquer
(comosenha da conta do usuário. A sintaxe (se você está mudando o seu
próprio
senha ou outra) é a seguinte:

Autenticação externa
Se uma conta de usuário é criada com autenticação externa, a Oracle vai delegar a autenticação para
serviço externo; ele não vai pedir uma senha. Se a opção de segurança avançada tem sido
um

licenciado, então o serviço externo pode ser um número de serviços de terceiros, tais como um
servidor
ou um servidor
Kerberos
RADIUS. Quando um usuário tenta se conectar à conta de usuário, em vez de
autenticação
o próprio utilizador, o banco de dados irá aceitar exemplo (ou rejeitar) a autenticação de acordo com
se o
serviço de autenticação externo autenticou o usuário. Por exemplo, se o Kerberos está a ser utilizado,
banco de dados irá verificar se o usuário tem um token Kerberos válido.
o
Sem a opção de segurança avançada, a única forma de autenticação externo que pode ser
autenticação
utilizado do
é sistema operacional. Este é um requisito para contas SYSDBA e SYSOPER (como
já discutido), mas também pode ser usado para usuários normais. A técnica é criar um usuário do
Oracle
conta com o mesmo nome da conta de usuário do sistema operacional, mas prefixado com uma
cadeia
pela OS_AUTHENT_PREFIX
especificada parâmetro de instância. Este parâmetro padrão para a OPS string $.
verificar o seu valor, use uma consulta como esta:
Para

No Linux ou Unix, a autenticação do sistema operacional externo é simples. Assumindo que


OS_AUTHENT_PREFIX está definido para o padrão e que não é um usuário do sistema operacional
jwatson, se você criar um usuário oracle e dá-lhe o privilégio CREATE SESSION, ele será capaz
chamado
para efetuar login sem senha e será conectado para o usuário do banco de dados conta ops $ jwatson.

No Windows, quando a Oracle consulta o sistema operacional para encontrar a identidade do


Windows
usuário,
irá normalmente (dependendo dos detalhes de configuração de segurança Windows)
devolver oprefixado com o domínio do Windows. Supondo que o ID de logon do Windows é John
username
(Incluindo um espaço), que o domínio do Windows é JWACER (que passa a ser o nome da
Watson
máquina),
e que o OS_AUTHENT_PREFIX está definido para o padrão, o comando será o seguinte:

Note que o nome de usuário deve ser em letras maiúsculas, e por causa dos caracteres ilegais
e um(uma
espaço),
barraele
invertida
deve ser colocado entre aspas duplas.
DICA Usando autenticação externa pode ser útil, mas apenas se os usuários realmente fazer logon
hospeda
na máquinao banco de dados. Os usuários raramente vai fazer isso, então a técnica é mais provável que
seja de usadas
contas valor para
para executar manutenção ou de lote empregos.

criando contas
O comando CREATE USER tem apenas dois argumentos necessários: um nome de usuário e um
método de Opcionalmente, ele pode aceitar uma cláusula para especificar um espaço de tabela
autenticação.
padrão ede
espaços uma
tabelas,
temporária
uma ou mais cotas cláusulas, um perfil com o nome, e comandos para bloquear a
aconta
senha.
e expiram
Este é um exemplo típico (com os números de linha adicionados):

Apenas a primeira linha é necessária; existem padrões para tudo o resto. Aqui está o que o
faz,comando
dividido linha por linha:

1. Fornecer o nome de usuário e uma senha para autenticação de senha


2. Fornecer os espaços de tabela padrão e temporários
3. Configure quotas sobre o padrão e outra tabela
4. Nomear um perfil para senha e gestão de recursos
5. forçar o usuário a alterar a senha imediatamente
6. Faça a conta disponível para uso (o que teria sido o padrão)

Todos os atributos de uma conta pode ser ajustado posteriormente com comandos alter user, com
exceção
o do nome. Isto é como mudar os atributos:

Depois de criar uma conta de utilizador, pode ser necessário para soltá-lo.

Este comando só terá sucesso se o usuário não possuir quaisquer objetos-se o esquema está
vocêvazio.
não quer
E seidentificar todos os objetos pertencentes e soltá-los em primeiro lugar, eles podem ser
descartados
usuário especificando
com o CASCADE.

Exercício 16-1: Criar usuários Neste exercício, você irá criar alguns usuários a serem utilizados
para a exercícios neste capítulo. Supõe-se que há um espaço de tabela permanente chamada
restantes
EXEMPLO e uma tabela temporário chamado TEMP. Se estes não existirem, crie-los ou uso
quaisquer outros espaços de tabela apropriadas. Aqui estão os passos a seguir:

1. Conecte-se ao seu banco de dados com SQL * Plus como um usuário altamente privilegiado,
como o sistema ou
SYS.
2. Crie três utilizadores.
3. Confirme se os usuários foram criados com Banco de Dados expresso. A partir da página de
banco
página,
de dados
o caminho de navegação é a guia Segurança | Link Usuários. Os usuários deve ser
algo
os mostrados
como na Figura 16-3 .

Figura 16-3 Os usuários exibidos no banco de dados Expresso

4. A partir do SQL * Plus, tentativa de conectar-se como usuário ALOIS.

5. Quando solicitado, selecione uma nova senha (como o Oracle). Isso não vai chegar a
qualquer
porquelugar
ALOIS não tem o privilégio CREATE SESSION.
6. Atualize a janela Expresso do banco de dados e observe que o status da conta ALOIS há
já expirado (indicado com o símbolo do relógio), mas sim ABERTO (indicado com um
porque a sua senha foi alterada.
carrapato)

Conceder e revogar privilégios


Por padrão, ninguém pode fazer nada em um banco de dados Oracle. Um usuário não pode até
mesmo se conectar
concedido sem ser
um privilégio. E uma vez que este tem sido feito, eles ainda não pode fazer nada de útil
(ou perigosa)
sem ser dada mais privilégios. Os privilégios são atribuídos a contas de usuário com um GRANT
comando e retirado com uma renúncia. sintaxe adicional pode dar a um usuário a capacidade de
conceder qualquer
privilégios que têm a outros usuários. Por padrão, apenas o DBAs (SYS e SYSTEM) têm o direito
de
conceder qualquer mas os privilégios mais limitados.
Privilégios vêm em dois grupos: os privilégios do sistema, que (em geral) permitem aos usuários
executar
ações que afetam o dicionário de dados e privilégios de objeto, que permitem aos usuários executar
açõesos
afeta que
dados.

privilégios de sistema
Existem mais de 200 privilégios de sistema. A maioria aplicam-se a ações que afetam o dicionário
de dados,
como a criação
tais de tabelas ou usuários. Outros afetam o banco de dados ou a instância, como a
criação deos
ajustando espaços
valoresdedos
tabela,
parâmetros de instância e estabelecer uma sessão. Estes são alguns dos mais
privilégios comumente usados:
• CRIAR
logon noSESSÃO
banco deEste privilégio permite que o usuário se conectar. Sem ele, o usuário não
dados.
pode sequer
• RESTRICTED SESSION Se o banco de dados é iniciado com a inicialização RESTRINGIR
oucom
ajustado
ALTER SYSTEM ATIVAR RESTRICTED SESSION, somente os usuários com esse
privilégio
será capaz de se conectar.
• ALTER DATABASE Isto dá acesso a muitos comandos necessários para modificar
estruturas físicas.
• ALTER SYSTEM Isto dá controle sobre os parâmetros de instância e estruturas de memória.
• CREATE TABLESPACE Isto é usado junto com o ALTER TABLESPACE e soltar
privilégios TABLESPACE; esses privilégios permitirá que um usuário gerenciar tablespaces.
• CREATE TABLE Isso permite que o beneficiário criar tabelas no seu próprio esquema; que
inclui
capacidade
o de alterar e soltá-los, para executar SELECT e Data Manipulation Language
(DML)
comandos sobre eles, e de criar, modificar, ou eliminar índices sobre eles.
• conceder qualquer privilégio de objeto Deixa as permissões de objeto de concessão
outorgado
objetos, incluindo
em todos aqueles que não possuem, para os outros (mas não para si mesmo).
• CRIAR QUALQUER TABELA O beneficiário pode criar tabelas que pertencem a outros
usuários.
• soltar qualquer TABLE O beneficiário pode descartar tabelas pertencentes a quaisquer
outros usuários.
• inserir qualquer TABLE, atualizar qualquer TABLE, DELETE ANY TABLE O
beneficiário
executar estes
podecomandos DML contra tabelas de propriedade de todos os outros usuários.
• SELECT ANY TABLE O beneficiário pode selecionar qualquer tabela no banco de dados,
com
prestação:
um Tabelas de propriedade de SYS, incluindo as tabelas de dicionário de dados, não
são visíveis.
A sintaxe para a concessão de privilégios do sistema é o seguinte:

Depois de criar uma conta de usuário, um comando como o seguinte irá conceder os privilégios
de sistema
comumente atribuídas aos usuários que estarão envolvidos no desenvolvimento de aplicações:

Estes privilégios permitem que o usuário se conectar e configurar uma sessão e, em seguida,
e objetos
criar objetos
PL / SQL.
paraEsses
armazenar
objetosdados
podem existir apenas em seu próprio esquema; eles não terão
contra qualquer outro esquema. A criação do objeto também será limitada pelas quotas que pode (ou
privilégios
não pode)
foram atribuídos em vários espaços de tabela.
Uma variação na sintaxe permite que o beneficiário passar seu privilégio para um terceiro. Isto é
um
exemplo:

Isto dá SCOTT a capacidade de criar tabelas em seu próprio esquema e também para emitir o
CREATE
GRANT TABLE para comandar a si mesmo.

EXAME TIP revogação de um privilégio de sistema não serão em cascata (ao contrário de
revogação de um objeto
privilégio).

Se um privilégio é revogada a partir de um usuário, quaisquer ações que o usuário realizada


Criando
utilizando
tabelas)
esse
permanecem
privilégio (como
intactos. Além disso, se o usuário foi concedido e tem usado a
OPÇÃO ADMIN,
quaisquer usuários para os quais o usuário repassados pelo privilégio irá retê-lo. Não há registro
outorgante
mantido dode um privilégio de sistema, por isso não é possível para um REVOKE em cascata.
esta.
Figura 16-4 ilustra

Figura 16-4 GRANT e REVOKE de SQL * Plus

Os quaisquer privilégios dar permissões contra todos os objetos relevantes na base de dados.
seguinte
Assim,vaiodeixar SCOTT consultar cada mesa em cada esquema no banco de dados:

É frequentemente considerado má prática para conceder os privilégios para qualquer usuário que
equipe
nãode
seja
administração.
o sistema

CUIDADO Na verdade, qualquer não é tão perigoso agora como era em versões anteriores. Já não
inclui
tabelas no esquema SYS, então o dicionário de dados ainda está protegida. No entanto, qualquer
ainda deve
usado com ser
extrema cautela porque remove toda a proteção de tabelas de usuário.

Privilégios de objeto
privilégios de objeto dar a capacidade de executar SELECT, INSERT, UPDATE e DELETE
contra tabelas e objetos relacionados, bem como para executar objetos PL / SQL. não existem esses
privilégios
para objetos em próprios esquemas dos usuários; se um usuário tiver o privilégio de sistema
CREATEoperações
executar TABLE, eles
SELECT
podeme DML contra tabelas que eles criam com mais necessidade de
permissões.
EXAME TIP O quaisquer privilégios, que concedem permissões contra objetos em cada conta de
usuário
o banco no
de dados, não são objeto de privilégios; eles são privilégios de sistema.

Os privilégios de objeto aplicam-se a diferentes tipos de objetos, listados aqui:

A sintaxe é como se segue:

Aqui está um exemplo:

Variações incluem o uso de todos, que irá aplicar todas as permissões relevantes para o tipo de
objeto, ea capacidade de nomear colunas específicas de vistas ou tabelas.

Este código vai deixar SCOTT consultar todas as colunas da tabela funcionários da HR, mas
escrever
coluna para salário.
indicado, apenas umEntão SCOTT é dado todos os privilégios de objeto (SELECT e DML)
mesa regiões da HR.
sobre

TIP Conceder privilégios no nível da coluna é frequentemente dito ser má prática por causa da
maciça
carga de trabalho envolvida. Se for necessário restringir o acesso das pessoas para determinadas
colunas,
que mostra
criando
apenas
uma
as colunas,
visão muitas vezes, ser uma alternativa melhor.

Usando COM OPÇÃO GRANT (ou com Banco de Dados Express, navegue para Segurança |
Privilégios
Usuáriose Funções
| | Edit) permite que um usuário passar o privilégio de objeto para um terceiro.
Oracle manterá
registro de quemum concedeu privilégios de objeto para quem; isto permite uma renúncia de um
objecto
todos aqueles
para a na
cascata
cadeia. Considere esta seqüência de comandos:

Na conclusão desses comandos, nem SCOTT nem JON nem SUE tem o SELECT
privilégio contra a HR.EMPLOYEES.
EXAME TIP A revogação de um privilégio de objeto serão em cascata (ao contrário de revogação
de um sistema
privilégio).

Exercício 16-2: Conceder privilégios diretos Neste exercício, você irá conceder alguns privilégios
para o criado em Exercício 16-1 e provar que eles funcionam. Siga esses passos:
usuários

1. Ligue para o seu banco de dados como usuário SYSTEM com o SQL * Plus e conceder
CRIAR
SESSÃO ao usuário ALOIS.

2. Abra outra sessão SQL * Plus e conectar como ALOIS. Desta vez, o login será bem
sucedida.
3. Como ALOIS, tentar criar uma tabela.

Isto irá falhar com a mensagem “ORA-01031:. Privilégios insuficientes”


4. Na sessão SYSTEM, grant ALOIS o privilégio CREATE TABLE.

5. Na sessão ALOIS, tente novamente.

Isto irá falhar com a mensagem “ORA-01950:. Nenhum privilégio na tabela 'exemplo'”
6. Na sessão SYSTEM, dar ALOIS uma quota na tabela EXEMPLO.

7. Na sessão ALOIS, tente novamente. Desta vez, a criação será bem sucedida.
8. Como ALOIS, conceder privilégios de objeto na nova tabela.

9. Para recuperar informações sobre estes subsídios, como SYSTEM, execute essas consultas:

10. Revogar os privilégios concedidos a AFRA e ANJA.

11. Confirmar da revogação, executando novamente a primeira consulta a partir do passo 9.

Criar e gerenciar funções


Gerenciamento de segurança com privilégios diretamente concedidos funciona, mas tem dois
problemas.
enorme cargaPrimeiro,
de trabalho;
ele pode
umaser
aplicação
um com milhares de tabelas e os usuários podem precisar
milhões desesubvenções.
Segundo, um privilégio foi concedido a um usuário, esse usuário tem em todas as circunstâncias;
não é fazer um privilégio ativo somente em determinadas circunstâncias. Ambos estes problemas
possível
são resolvidos
usando papéis. por
Um papel é um conjunto de sistema e / ou privilégios de objeto que podem ser
concedidos
unidade e, tendo
e revogados
sido concedido,
como umpode ser temporariamente activada ou desactivada dentro de uma
sessão.
Criando e Concedendo Roles
Papéis não são objetos de esquema; eles não são propriedade de ninguém e, portanto, não pode ser
prefixado com
username. um
No entanto, eles compartilham o mesmo espaço de nomes como usuários. Não é possível
criar oum
com mesmo
papel nome que um usuário já existente ou para criar um usuário com o mesmo nome de um
função existente.
já-
Criar um papel com o comando CREATE ROLE.

Em seguida, conceder privilégios para o papel com a sintaxe de costume, incluindo COM
GRANT opção, como
administração
Por exemplo, ou com
suponhadesejado.
que o esquema HR está a ser usado como um repositório para os dados a
grupos
ser utilizada
de pessoal:porostrês
quadros tenham pleno acesso, pessoal administrativo sênior têm acesso
limitado,administrativo
pessoal e júnior ter acesso restrito. Em primeiro lugar, criar uma função que pode ser
adequado
eles podempara os éfuncionários
fazer responder a júnior; todos
perguntas por execução de consultas.

Qualquer concedido esse papel será capaz de fazer logon no banco de dados e executar
contra
instruções
as tabelas
SELECT
de RH. Em seguida, crie um papel para os funcionários seniores, que também pode
gravar dados no
Funcionários e mesas JOB_HISTORY.

Este papel é primeiramente concedida a função HR_JUNIOR (não há nenhum problema


comconcedendo umpermitirá
a sintaxe que papel para
queoutro)
os usuários seniores atribuir a função júnior para outros. Em
seguida, eleem
privilégios é concedido
apenas duas
DMLmesas. Agora, crie o papel dos gestores, que pode atualizar todas as
outras mesas.

Este terceiro papel é dado o papel HR_SENIOR com a capacidade de transmiti-la e, em seguida,
controle
fica cheia
sobre o conteúdo de todas as tabelas. Mas note que o único privilégio de sistema este papel
tem é
CREATE_SESSION, adquirido através HR_SENIOR, que adquiriu através HR_JUNIOR. Não
mesmo esse papel pode criar ou excluir tabelas; que deve ser feito pelo usuário de RH ou um
administrador
CRIAR QUALQUER
com TABLE e soltar qualquer privilégios de sistema TABLE.
Observe a sintaxe COM OPÇÃO ADMIN, que é a mesma que para a concessão de privilégios de
Tal sistema.
como acontece com privilégios de sistema, a revogação de um papel não serão em cascata; não
há nenhumum
concedeu registro
papel amantido
quem. de quem
Finalmente, conceda as funções ao pessoal relevante. Se Scott é um gerente, SUE é um
Jon funcionário
e ROOP sãosênior,
pequenos
e funcionários, o fluxo seria como se mostra na Figura 16-5 .
Figura 16-5 Concessão de papéis com SQL * Plus

funções predefinidas
Existem dezenas de funções pré-definidas em um banco de dados Oracle. Aqui estão alguns que
cada DBA
ciente de: deve ser

• CONECTAR existe Este papel apenas para compatibilidade com versões anteriores. Nas
versões
os privilégios
anteriores,
de ele
sistema
tinhanecessários para criar objetos de armazenamento de dados, como
tabelas; com
liberação, eleasócorrente
tem CREATE SESSION.
• RECURSOS Também para compatibilidade com versões anteriores, esse papel pode criar
ambos
comoostabelas)
objetosede
objetos
dadosprocessuais
(tais (tais como procedimentos PL / SQL).
• DBA Este tem a maioria dos privilégios de sistema, bem como vários privilégios de objeto e
papéis.
Qualquer concedido usuário DBA pode gerenciar virtualmente todos os aspectos do banco de
dados, com exceção de inicialização e
desligar.
• SELECT_CATALOG_ROLE Isto tem milhares de privilégios de objeto em relação aos
dados
objetos do dicionário, mas não privilégios de sistema ou privilégios em relação aos dados do
usuário.administrativo
pessoal Isso é útil parajúnior que deve monitorar e informar sobre o banco de dados, mas não
ser capaz
dados de ver
do usuário.
• SCHEDULER_ADMIN Isto tem os privilégios de sistema necessários para a gestão do
Scheduler serviço de agendamento de tarefas.

Além disso, a função predefinida público é sempre concedido a cada conta de usuário do banco
que de
se dados.
um privilégio
Segue-se
é concedido para PUBLIC, ele estará disponível para todos os usuários.
Portanto, após o
comando seguinte, todos os usuários serão capazes de consultar a tabela de HR.REGIONS:

NOTA o papel público é tratado de forma diferente de qualquer outro papel. Não se trata, por
exemplo,
nas DBA_ROLES
aparecemvista. Isso ocorre porque o código fonte para DBA_ROLES, que pode ser visto
o script cdsec.sql chamado pelo script catalog.sql, exclui especificamente.
em

permitindo Roles
Por padrão, se um usuário tiver sido concedido um papel, o papel será ativado. Isto significa que
momento
sessão a um
é estabelecida a conexão com a conta de usuário, todos os privilégios (e outras funções)
concedidos
papel será ativo.
ao Este comportamento pode ser modificado, tornando o não padrão papel. Seguindo o
exemplo dado na seção anterior, esta consulta mostra o que os papéis tenham sido concedidos para
JON:

JON foi concedida HR_JUNIOR. Ele não tem administração sobre o papel (para que ele não
pode para qualquer outra pessoa), mas é um padrão role-ele vai ter esse papel, sempre que ele se
passá-lo
conecta. pode
situação este muito bem não ser o que quiser. Por exemplo, JON tem que ser capaz de ver as tabelas
de RH
seu trabalho),
(é mas isso não significa que você quer que ele seja capaz de discar de casa, à meia-
noite,ase tabelas
para cortar com SQL * Plus. Você quer organizar as coisas de tal forma que ele pode ver as
tabelas
está emsó umquando eleno escritório pessoal, executando o aplicativo de RH durante o expediente.
terminal
Aqui é como mudar o comportamento padrão:
Agora, quando JON faz logon, ele não terá quaisquer funções ativado. Infelizmente, isso
logon
significa
em tudo,
queporque
ele nãoé pode
apenas HR_JUNIOR que lhe dá o sistema CREATE SESSION
privilégio. Isto é facilmente corrigido.

Agora, quando JON liga, apenas o seu papel CONNECT está habilitado, e a versão atual do
CONNECT não é perigoso em tudo. Dentro do aplicativo, comandos de software pode ser
incorporado
habilitar a função
para HR_JUNIOR. O comando básico para permitir um papel dentro de uma sessão,
que podepelo
emitido ser usuário a qualquer momento, é a seguinte:

Assim, não há nenhuma segurança ainda. Mas se o papel é criado com a seguinte sintaxe, em
ativado
seguida,
somente
o papel
através
podedaser
execução do procedimento PL / SQL nomeado pelo procedure_name :

Este procedimento pode fazer qualquer número de controlos: a de que o usuário está trabalhando
sub-rede
em umaquerede
o usuário
TCP / está
IP específico
executando um processo de usuário particular (provavelmente não SQL
* Plus), que ointervalo,
determinado tempo está em um
e assim por diante. Incorporação chamadas para os procedimentos que
permitem pode
aplicação em pontos
trocarapropriados
de papéis dentro
em um e fora, conforme necessário, deixando-os com deficiência em
todos os momentos
conexão é feita comemumaqueferramenta
um SQL ad hoc, como o SQL * Plus.

Análise Privilege
Às vezes é difícil identificar o que os privilégios de um usuário tem e quais privilégios o usuário
realmente
usa, particularmente quando os papéis estão envolvidos. Por esta razão, a Oracle oferece a Análise
mecanismo. O fluxo é como se segue:
Privilege

1. Definir o escopo do que deveria ser analisado, como o uso de privilégio ao longo do todo
banco de dados, privilégios usadas que foram acessados através de determinadas funções e
privilégios usado por
aplicações particulares.
2. atividade de monitoramento em Iniciar, permitem aos usuários trabalhar por um período, e
parar a atividade
3. Gerar relatóriosdesobre
monitoramento.
o que foram usados privilégios, e quais privilégios não foram
utilizados,
durante o período de análise.

O seguinte são os procedimentos críticos:

• dbms_privilege_capture.create_capture
• dbms_privilege_capture.enable_capture
• dbms_privilege_capture.disable_capture
• dbms_privilege_capture.generate_result

A seguir estão os pontos de vista críticos:

• dba_used_privs
• dba_unused_privs

Exercício 16-3: criar e conceder Roles Neste exercício, você criará alguns papéis, conceder-lhes a
os usuários, e demonstrar a sua eficácia. Siga esses passos:

1. Conecte-se ao seu banco de dados com SQL * Plus como usuário SYSTEM.
2. Criar dois papéis, como segue:

3. Conceda alguns privilégios para os papéis e, em seguida, conceder USR_ROLE para


MGR_ROLE.

4. Como o sistema do usuário, conceda as funções a AFRA e ANJA.

5. Conecte-se ao banco de dados como usuário AFRA.

6. Conceder o USR_ROLE para ANJA e, em seguida, inserir uma linha na ALOIS.T1.

7. Confirmar que ANJA pode se conectar e consultar ALOIS.T1 mas fazer mais nada.

8. Como o sistema do usuário, ajustar ANJA de modo que, por padrão, ela pode fazer logon,
mas fazer mais nada.

9. Demonstrar como activar e desactivar de papéis.

10. Consulta o dicionário de dados para identificar o seu uso papel.

Criar e gerenciar perfis


Você pode usar um perfil para aplicar uma senha. Perfis são sempre utilizados, mas o perfil padrão
(Aplicado por padrão para todos os usuários, incluindo SYS e SYSTEM) faz muito pouco.

Limites senha Perfil


Estes são os limites que podem ser aplicadas às senhas:

• FAILED_LOGIN_ATTEMPTS Especifica o número de erros consecutivos em uma senha


antes que a conta está bloqueada. Se a senha correta é dada antes este limite for atingido, o
contador é reposto a zero.
• PASSWORD_LOCK_TIME Especifica o número de dias para bloquear uma conta após
FAILED_LOGIN_ATTEMPTS é atingido.
• PASSWORD_LIFE_TIME Especifica o número de dias antes da senha expirar. Pode
ainda ser utilizável por um tempo após este tempo, dependendo
PASSWORD_GRACE_TIME. Especifica o número de dias após o primeiro sucesso
• PASSWORD_GRACE_TIME
sessão após a senha expirou durante o qual a senha pode ser alterada. O velho
senha ainda é utilizável durante este tempo.
• password_reuse_time
reutilizados. Especifica o número de dias antes de uma senha pode ser

• PASSWORD_REUSE_MAX Especifica o número de alterações de senha antes de um


senha pode ser reutilizada.
• PASSWORD_VERIFY_FUNCTION Especifica o nome de uma função para executar
sempre
senhaque um
for alterada. O objetivo da função é assumida estar verificando a nova senha
para um necessário grau de complexidade, mas ele pode fazer praticamente qualquer coisa
que você quiser.

DICA Você também pode usar perfis para limitar o uso de recursos, mas uma ferramenta muito mais
sofisticada
alcançar este
para
objetivo é Gerenciador de recursos.

Para ver qual perfil está atribuído a cada usuário, execute esta consulta:

Por padrão, todos os usuários será atribuído o perfil chamado DEFAULT. Em seguida, a visão de
exibir
queosvai
perfis de si mesmos é DBA_PROFILES.

O perfil padrão tem essas limitações de senhas:

Estas restrições não são muito rigorosos; uma senha pode ser inserido incorretamente dez vezes
antes
consecutivas
de a conta é bloqueada por um dia, e uma senha expira após cerca de seis meses, com um
período de carência de uma semana para mudá-lo depois disso. Não há nenhuma verificação de
complexidade de senha.
Criação e atribuição de Perfis
A maneira mais simples para permitir o gerenciamento de senhas mais sofisticado é executar código
fornecido
roteiro fornecido.
em um No Unix ou Linux, é como segue:

No Windows, é como segue:

Em qualquer plataforma, o script cria um conjunto de funções que oferece vários graus de senha
complexidade verificação.
Para criar um perfil com o SQL * Plus, use o comando CREATE PROFILE, estabelecendo
quaisquer limites

é requerido. Quaisquer limites não especificados serão apanhados a partir da versão atual do
PADRÃO
perfil. Por exemplo, pode ser que as regras do estado organização que contas devem ser bloqueadas
depois de cinco tentativas de login falhas consecutivas por uma hora, exceto para os
administradores,
trancado depois de
que
duas
deve
tentativas
ser para um dia inteiro, e que todas as senhas devem ser sujeitos ao
algoritmo de verificação de complexidade de senha padrão.
previsto
Exercício 16-4: Criar e usar perfis Neste exercício, você vai criar, atribuir e testar um perfil
que obriga algum controle senha. Aqui estão os passos a seguir:

1. Conecte-se ao seu banco de dados com SQL * Plus como usuário SYS.
2. Execute o script que irá criar as funções de verificação fornecidos e depois aplicar um para
o perfil padrão. Confirmar que a função foi criada e aplicada.

3. Criar um perfil que vai bloquear contas após duas senhas erradas para 10 minutos.

4. Atribuir este novo perfil para ALOIS.

5. Deliberadamente digitar a senha errada para ALOIS algumas vezes.

6. Como o sistema do usuário, verifique o status da conta de Alois e desbloqueá-lo.

7. Verifique se ALOIS podem agora ligar.

8. Teste a função de verificação ao tentar alterar a senha algumas vezes.

9. Arrumar soltando o perfil, as funções e os usuários. Observe o uso de CASCATA quando


largando o perfil para removê-lo ALOIS, bem como sobre o comando DROP USER para
cair sua mesa. As funções podem ser descartados mesmo que sejam atribuídas aos usuários.
os privilégios
concedido sobre a mesa será revogada como a tabela é descartado.

Explique Responsabilidades DBA para a Segurança e


Auditoria
A auditoria é necessária para detectar atividade suspeita ou mesmo francamente ilegal. Auditoria não
é uma área
onde o DBA toma todas as decisões; eles fazem o que lhes é dito. Se o negócio afirma que todos
acesso a determinadas tabelas devem ser rastreadas, o DBA deve providenciar isso. Em algumas
jurisdições,fazer
requisitos regulamentar
auditoria certas ações obrigatória. Além de essas necessidades de negócios, dois
dos usuários requerem uma atenção especial: os desenvolvedores e DBAs. Os desenvolvedores têm
grupos
grande
base depoder
dados;dentro
DBAsdotêm ainda mais. Monitorar a atividade por esses grupos para assegurar que eles
não sãode seus poderes levanta a questão de como auditar os usuários que podem ser capazes de
abusar
modificar
(Ou “Quem a trilha
guardará
de auditoria
os guardas si mesmos?”, Como Juvenal colocá-lo (em latim) cerca de 2.000
anos atrás).
Motivos para Auditoria
Por que é considerada necessária uma auditoria em praticamente todos os bancos de dados? A
seguir, são motivos típicos:
• Para permitir a responsabilização para ações . Para manter os usuários responsáveis por suas
ações,
necessária
é para acompanhar o que eles têm feito.
• Para impedir os usuários de atividade imprópria . Muitos usuários terão a capacidade de
executar
ações que são prejudiciais ou fraudulenta. Sabendo que eles são monitorados vai dissuadi-los
de fazer isso.
• Para investigar a atividade suspeita . Segurança pode ser configurado corretamente, mas
ainda
saber
é útil
se as pessoas estão tentando acessar dados ou executar comandos que estão além de sua
autorização.
• Para notificar um auditor de atividade não autorizada . Em alguns casos, os usuários podem
tercapacidades
mais que eles precisam. Auditoria pode acompanhar o uso de quaisquer privilégios
econsiderados
acesso a dados
perigosos
sensíveis.
• questões de conformidade . Muitas aplicações têm requisitos quasi-legal para a auditoria.
Tipicamente,
estes são baseados em torno de acesso a informações pessoais ou financeiras.

técnicas de auditoria
Várias técnicas de auditoria estão disponíveis em um ambiente Oracle. O mais poderoso é o de
Cofre. Este é um produto instalado separadamente e licenciado que está muito além do alcance da
Auditoria
Certified Professional (OCP) syllabus. A maioria dos ambientes não vai precisar deste; as técnicas
Oracle
internas
descrito nesta seção será suficiente para a maioria das necessidades de negócios. introduz liberação
um novo método de auditoria: auditoria unificada . É esta técnica que é testada.
12c

Auditoria Database Standard


auditoria de banco de dados padrão é ativado com um parâmetro: AUDIT_TRAIL. O padrão para
essa
parâmetro é NULL, o que significa que a auditoria padrão é desativado. No entanto, se o banco de
dados
o Assistente
é criado
decom
Configuração de banco de dados (DBCA), uma auditoria de padrão terá que ser
ativado definindo
parâmetro para DB.
essa
auditoria padrão é configurado com os comandos de auditoria e NOAUDIT. lata de auditoria
controlar
padrãoo acesso aos objetos, uso de privilégios, e execução de certas declarações. registros de
auditoria pode ser
reuniram-se para todos os usuários ou apenas algumas, reuniu uma vez por sessão ou uma vez por
acção na sempre
reunidos sessão, que foi feita a tentativa, ou filtrado por tentativas bem sucedidas ou mal sucedidas.
A auditoria
registros são escritos a uma tabela de banco de dados (que é SYS.AUD $) e visível através de um
conjunto ou
opiniões de escritos para o sistema operacional onde são armazenados como arquivos externos ao
banco de dados. de auditoria é totalmente suportado, mas na versão 12.1, Oracle Corporation
Esta técnica
recomenda que a auditoria unificada deve ser usado em seu lugar.

Grão fino Auditoria


Grão fino Auditoria (FGA) pode ser configurado para se concentrar em áreas específicas de
interesse.
Acesso auditoria
Ao invésnode
nível do objeto, FGA pode controlar o acesso a determinadas linhas e colunas.
Sem auditoria
uma FGA, tende a produzir um grande número de “falsos positivos”, isto é, registros de auditoria
quenenhuma
de relatam problemas
preocupação. Os seguintes são exemplos:

• O acesso a uma tabela de dados dos funcionários é bom em geral, mas se uma coluna
SALÁRIO
que deve éser
acessado,
gravado.
• Talvez um usuário tem direitos para ler uma tabela ao executar um aplicativo aprovado. Mas
seconsultar
eles a tabela de SQL * Plus, que deve ser conhecido.
• Pode não ser necessário o registro de acesso que ocorre através de meios normais no dia de
trabalho,
mas fora-de-horas de acesso de um dispositivo fora da rede corporativa deve ser rastreado.

FGA irá gerar um registro de auditoria quando estiverem reunidas determinadas condições. A
em um
condição
predicado
podeeser
também
baseado
em uma lista de colunas. Bem como a auditoria do evento, FGA pode
executar um user-
procedimento definido. Esta é uma instalação poderosa. Com efeito, é um gatilho em SELECT. É
definir políticas de auditoria diferentes para declarações diferentes. Por exemplo, você pode querer
possível
gravar
de dados,
mudanças
mas não lê.
A interface para FGA é uma interface de programação de aplicativo-to simples de usar (API) -a
DBMS_FGA Package, com quatro procedimentos:

• DBMS_FGA.ADD_POLICY Criar uma política para uma mesa.


• DBMS_FGA.DROP_POLICY Largar uma política criada anteriormente.
• DBMS_FGA.DISABLE_POLICY Desabilite a política. As políticas são por padrão
•habilitado.
DBMS_FGA.ENABLE_POLICY Ativar uma política que tinha sido anteriormente
desativado.
A API é razoavelmente auto-explicativo. Considere estes exemplos:

O código anterior define três políticas sobre uma mesa, SCOTT.EMP. A primeira política,
EMP_D10_POL, irá gerar um registro de auditoria sempre que qualquer instrução é executada que
acessa um no Departamento 10. Note que a política não inclui MERGE. Um MERGE é capturado
empregado
segundo o comunicado subjacente DML que os implementos MERGE. Usando o padrão de NULL
para AUDIT_COLUMNS significa que não há nenhuma restrição em coluna; não importa o que
colunas sãoa declaração será auditada.
projetada,
A segunda política irá capturar todas as instruções SELECT (SELECIONAR é o padrão para o
argumento statement_type) que leia a coluna SAL. O padrão de NULL para
AUDIT_CONDITION significa que a auditoria será feita para qualquer linha.
A terceira política irá gerar um registro de auditoria e também irá executar um procedimento,
sempre
SEC.EMPDEL,
que uma linha é excluída. O procedimento deve obedecer a uma interface definida. Deve
aceitar três VARCHAR2, que será preenchido com o esquema do objeto (neste caso, Scott), o
argumentos
nome de objeto (neste caso, EMP), e o nome da política (neste caso, EMP_DEL_POL).
Os registros de auditoria são visíveis no dicionário de dados vista DBA_FGA_AUDIT_TRAIL.
inclui
este
a instrução SQL real, junto com detalhes como quem executou e quando. o
armazenamento subjacente para a vista é a tabela SYS.FGA_LOG $, que por padrão reside no
tablespace SYSTEM.

Auditoria Value-Based
As técnicas declarativas para auditoria (auditoria padrão, FGA e auditoria unificada) não capturam
os próprios dados. Eles capturar a ação: quem, o quê, quando e com que privilégio. Isso significa
a instrução executada, e não os valores que foram realmente visto ou atualizados. Se for necessário
para ver você
valores, o deve recorrer a auditoria valor-base, que é implementado com gatilhos.
Um gatilho DML projetado para disparar sempre que qualquer instrução DML é executado pode
capturar
valores a linha a uma tabela de auditoria definido pelo usuário. Veja este exemplo:
e escrevê-los
Dependendo da natureza do DML, o gatilho irá capturar valores apropriados em uma madeireira
mesa. O disparador dispara como parte do LMG, e a inserção será comprometida (ou revertida) com
a transação chamada. Portanto, é possível que o desempenho pode degradar. Este não deve ser o
caso com padrão ou FGA auditoria, onde a captura é realizado por rotinas que são internas
para a instância, não pelo código PL / SQL definida pelo usuário.

Unified Auditoria
Unified auditoria é uma nova técnica que substitui a auditoria padrão, embora os dois podem
trabalhar
ao mesmo tempo. Unified auditoria declara políticas, que são habilitados para particulares (ou todos)
os usuários.
Cinco políticas pré-configuradas estão disponíveis a serem implementadas:

• ORA_SECURECONFIG declara auditorias semelhantes à auditoria padrão padrão.


• ORA_DATABASE_PARAMETER captura mudanças implementadas com ALTER
DATABASE
e comandos ALTER SYSTEM.
• ORA_ACCOUNT_MGMT capta as alterações feitas com ALTER, DROP e criar funções
e os usuários, bem como conceder e revogar.
• ORA_RAS_POLICY_MANAGEMENT e ORA_RAS_SESSION_MANAGEMENT tem que
fazer com Real Application Security, que está além do alcance dos exames OCP.

Para confirmar se a auditoria unificada está habilitado, consultar a V $ OPÇÃO desempenho


Visão.
dinâmico
Neste exemplo, ele não está habilitado:

O mecanismo de auditoria unificada é eficiente. Por padrão, os registros de auditoria não são
mesaescritos
de pista
para
(noaesquema
auditoriaAUDSYS) em tempo real, mas através de uma fila de buffer. Assim, as
sessões estão escrevendo

apenas para uma estrutura de memória em System Global Area (SGA). Um processo em segundo
plano, o Gen0
processo genérico, leva a tensão de escrever os registros da fila para a mesa de forma assíncrona.
Esta gravação atrasada levanta a possibilidade de perder registros de auditoria em caso de um
acidente ativado
Embora de instância.
por padrão, isso pode ser mudado. Para alternar do modo de gravação atrasada de
modo de escrever, usar um procedimento no pacote DBMS_AUDIT_MGMT. Este exemplo permite
imediato
gravação imediata e, em seguida, muda novamente o padrão na fila de gravação:
registros de auditoria unificadas são gravados em uma tabela no esquema AUDSYS. A tabela
nome
temgerado
um sistema-
que pode ser diferente em cada banco de dados e é só de leitura a qualquer regular de
dados
Definição DML Language (DDL) ou. Ele pode ser gerenciado somente através
DBMS_AUDIT_MGMT.

Auditoria obrigatória
Um pequeno número de operações são sempre auditadas, se configurada ou não:

• Execução dos comandos unificados auditoria CRIAR POLÍTICA FISCAL / ALTER / GOTA
• Execução da auditoria comandos padrão AUDITORIA / NOAUDIT
• Execução do FGA Package DBMS_FGA
• A execução do pacote de gestão DBMS_AUDIT_MGMT

Além disso, todas as declarações de nível superior executados por usuários administrativos
SYSDBA,
(sessõesSYSOPER,
ligada comoSYSBACKUP, SYSDG, SYSKM, ou SYSASM), enquanto a base de dados
modo MOUNT NOMOUNT ou são auditados para a trilha de auditoria do sistema operacional. No
está
Unix ou Linux,
registros são gravados
o em arquivos no diretório especificado pelo parâmetro AUDIT_FILE_DEST;
em
Janelas, eles são escritos no registo de aplicações do Windows. Estas declarações incluem conectar
tentativas, inicialização ou desligamento, e qualquer sistema ALTER e comandos ALTER
DATABASE.
Habilitar Auditoria Database Standard e Unified

Auditoria
auditoria padrão é possível (embora não pode ser activada ou configurado) apenas se o banco de
dados
foi convertido
não possui
para auditoria unificada. Unified auditoria requer uma biblioteca dinâmica adequada
para ser
disponível, o que não é o caso após a instalação do Oracle Home.

Activar a auditoria Padrão


A Figura 16-6 mostra uma consulta que apresenta os valores actuais dos parâmetros de auditoria
padrãodois
como bemcomandos para activar a auditoria.
Os parâmetros são os seguintes:
Figura 16-6 configuração auditoria Padrão

Os valores apresentados na Figura 16-6 são típicos de muitas instalações. Uma vez que os
(Todos
parâmetros
os quaisforam
são estáticos),
definidoso comando AUDIT ativa a auditoria da execução de certas
declarações,
o uso de certos privilégios, ou o acesso a determinados objetos.

Habilitar Unificação de Auditoria


Se a auditoria unificada não está habilitado (o que não é, seguindo uma instalação padrão), é
necessário
habilitá-lo dentro do código executável do Oracle; você vincular novamente os executáveis Oracle
para Linuxde
biblioteca ouvínculo
copiar em
dinâmico
um para Windows.
Aqui é como vincular novamente os executáveis:

No Windows, interrompa os serviços do Windows para o banco de dados e o ouvinte e, em


apropriado
seguida,biblioteca
copiar nade vínculo dinâmico.

Reinicie o ouvinte e instância de banco de dados e, em seguida, confirmar em V $ OPÇÃO que a


auditoria
agora unificada é
habilitado.
Para configurar a auditoria unificada, primeiro conceder os papéis necessários para um usuário.
Estes papéis são
AUDIT_ADMIN para administrar auditoria unificada e AUDIT_VIEWER para visualizar e analisar
dados de
Então, como
auditoria.
um usuário AUDIT_ADMIN, ativar as diretivas fornecidos ou criar o seu próprio. Uma
política
de especificar
consiste
um (ou mais) das três categorias para auditoria.

A Figura 16-7 mostra a criação de políticas de cada tipo, seguido por uma política mista que
três combina
tipos. Finalmente,
o ele mostra um exemplo de uma política de ação que será aplicado a apenas
uma mesa.
Figura 16-7 Definindo unificada políticas de auditoria

Tendo criado a política, ele deve ser ativado, globalmente ou para usuários individuais. Por
um padrão,
registo de auditoria é gerado sempre que o estado de auditoria é satisfeita, se o resultado foi bem
sucedido ou16-8 mostra as políticas de ativação de várias maneiras.
não. Figura

Figura 16-8 Ativação e desativação políticas

O primeiro exemplo na figura permite a política privpol para todos os usuários. Toda tentativa de
dos usar
privilégios, se bem sucedido ou não, será gravado. O exemplo seguinte permite a actpol
política, mas vai gravar apenas as tentativas bem sucedidas de executar as instruções. O terceiro
exemplo
ativar a política
vai rolepol por apenas dois usuários, registrando cada vez que usar um privilégio
através do papel nomeado. Então mixedpol está habilitado para todos os usuários quando tentativas
adquirido
falharem. A sintaxe para
desativar uma política é a política NOAUDIT < nome da política >.
O último exemplo na Figura 16-8 usa o
procedimento DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL para limpar todos os
registros
tamponado atualmente
na PIG para a pista de controlo na base de dados.

Exercício 16-5: Use Unified Auditoria Neste exercício, você vai ativar a auditoria unificada. O
difere entre Linux e Windows. Então você vai criar e configurar políticas de auditoria, bem como
método
consultar os resultados. Conectar como SYSDBA salvo indicado. Aqui estão os passos a seguir:

1. Determinar se a auditoria unificada é ativado por executar esta consulta:


Após instalar um padrão, isso irá retornar FALSE.
2. Desligue os serviços Oracle.
Encerre todas as instâncias de banco de dados e ouvintes. No Windows, também parar tudo
relacionada
serviços do Windows.
com a Oracle
3. Habilite a auditoria unificada.
No Linux, vincular novamente os executáveis para incluir as bibliotecas de auditoria
unificados.

No Windows, copie na auditoria unificada biblioteca de vínculo dinâmico:

4. Confirmar que unificou a auditoria está agora habilitada.


Inicie a instância eo ouvinte (no Windows, inicie os serviços relevantes) e execute
anovamente
partir do passo
a consulta
1. Isso irá retornar TRUE.
5. Habilitar uma política de auditoria presupplied e, em seguida, criar e ativar o seu próprio.

uma. Confirmar o que foi configurado:

b. Nota para quem as políticas têm sido habilitado. São quaisquer diretivas habilitadas por
padrão? se os registros de auditoria unificadas são gerados.
6. Verifique
uma. Conectar como usuário SYSTEM e executar algumas ações. Aqui está um exemplo:

b. Consultar a trilha de auditoria unificada.

7. tentativa de violação com a pista de controlo.

Conectado como SYSDBA, identificar o nome da tabela de trilha de auditoria, e tentar


excluí-lo.

8. Limpe a trilha de auditoria.


Executar um procedimento para limpar a trilha de auditoria unificada. Este pode lançar uma
mensagem
relacionadasdeàerro
inicialização, mas vai funcionar, no entanto.

Broca Two-Minute
Criar e gerenciar contas de banco de dados de usuários
• Os usuários se conectam a uma conta de usuário, que é conectado a um esquema.
• Alguma forma de autenticação é sempre necessária.
• Um usuário deve ter uma cota em uma tabela antes que eles possam criar quaisquer objetos.
• Um usuário que possui objetos não pode ser descartado, a menos que a palavra-chave
CASCADE é usado.
Conceder e revogar privilégios
• Privilégios são de dois tipos: privilégios de objeto e privilégios de sistema.
• Por padrão, um usuário não pode fazer nada. Eles não podem sequer fazer logon.
• A revogação de um privilégio de sistema não cascata; a revogação de um privilégio de objeto
faz.
Criar e gerenciar funções
• Funções não são objetos de esquema.
• As funções podem conter tanto o sistema e privilégios de objeto, bem como outros papéis.
• Uma função pode ser ativada ou desativada para uma sessão.

Criar e gerenciar perfis


• Os perfis podem aplicar políticas de senha.
• Cada usuário sempre tem um perfil (por padrão, o perfil padrão).

Explique Responsabilidades DBA para a Segurança e Auditoria


• O DBA deve configurar a auditoria de acordo com os requisitos da organização.
• Unified auditoria é a abordagem recomendada.
• auditoria baseada em valor também pode ser usado, com base em gatilhos DML.

Habilitar Auditoria Database Standard e Unified Auditoria


• auditoria padrão ainda é suportado e é ativado com parâmetros de instância.
• Configurar auditoria padrão com os comandos de auditoria e NOAUDIT.
• Unified auditoria requer que liga módulos apropriados para os executáveis Oracle.
• Unified auditoria está configurado declarando políticas de auditoria.
• Não é possível editar a trilha de auditoria unificada com os comandos SQL.

Auto teste
1 . Como você pode permitir que os usuários se conectem sem exigir que eles para autenticar a
si mesmos?
(Escolha a melhor resposta.)
A. Grant CRIAR sessão para PUBLIC.
B. Criar um usuário como esta, sem uma senha:

C. Criar um perfil que desativa autenticação de senha e atribuí-lo aos usuários.


D. Você não pode fazer isso porque todos os usuários devem ser autenticados.
2 . Você cria um usuário com esta declaração:

O que mais precisa ser feito antes que o usuário pode criar uma tabela no espaço de tabela
(Escolha todas as respostas corretas.)
EXEMPLO?
A. Nada mais é necessário.
B. Dê-lhe uma quota no EXEMPLO.
C. Grant-lhe o privilégio CREATE TABLE.
D. Grant-lhe o privilégio CREATE SESSION.
E. Grant-lhe o privilégio TABLESPACE GERIR.
3 . Se um usuário possui mesas em um espaço de tabela, qual será o efeito de tentar reduzir o
A cota do usuário na tabela a zero? (Escolha a melhor resposta.)
A. As tabelas vão sobreviver, mas INSERTS irá falhar.
B. As tabelas vão sobreviver, mas não pode ficar maior.
C. A tentativa irá falhar a menos que as tabelas sejam eliminadas em primeiro lugar.
D. As tabelas serão removidas automaticamente se a palavra-chave CASCADE é usado.
4 . Se você criar um usuário sem especificar um espaço de tabela temporário, o espaço de
tabela
serátemporário
atribuído? (Escolha a melhor resposta.)
A. Você deve especificar um espaço de tabela temporário.
B. SISTEMA.

C. TEMP.
D. O banco de dados padrão de tabela temporário.
E. O usuário não terá um espaço de tabela temporário.
5 . Você emitir estes comandos:

Que as subvenções devem ser revogado para evitar JON de ver o conteúdo do
(Escolha a melhor resposta.)
HR.REGIONS?
A. a, b, c, e d
B. a, c, e d
C. a e b
D. c e d
E. a, b, e c
6 . Qual destas declarações sobre privilégios de sistema estão corretas? (Escolha todas as
respostas corretas.)
A. Apenas os usuários SYS e sistema pode conceder privilégios de sistema.
B. Se um privilégio sistema é revogada a partir de um usuário, ele também será revogada a
partir
quemde todos
o usuário
os usuários
concedeu.
para
C. Se um privilégio sistema é revogada a partir de um usuário, ele não será revogada a
partir
quemde todos
o usuário
os usuários
concedeu.
para
D. CREATE TABLE é um privilégio de sistema.
E. QUALQUER TABELA é um privilégio de sistema.
7 . Estudar esse roteiro (números de linha foram adicionadas):

Que linha causará um erro? (Escolha a melhor resposta.)


A. Linha 1, porque os usuários apenas, não papéis, têm senhas.
B. Linha 2, porque os usuários apenas, não papéis, pode criar e próprios quadros.
C. Linha 3, porque Select TABLE não é um privilégio.
D. Linha 4, porque um papel não pode ter um privilégio de sistema, além de privilégios de
tabela.
8 . Qual destas afirmações é incorreta sobre papéis? (Escolha a melhor resposta.)
A. Você pode conceder privilégios de objeto e privilégios de sistema, bem como papéis para
um papel.
B. Uma função não pode ter o mesmo nome de uma tabela.

C. Uma função não pode ter o mesmo nome de um usuário.


D. As funções podem ser ativadas ou desativadas dentro de uma sessão.
9 . Se um perfil de senha é descartado, qual será o efeito sobre os usuários a quem é atribuído?
(Escolha a melhor resposta.)
A. Você não pode soltar o perfil até que seja não atribuído dos usuários.
B. O perfil será removido se você usar a palavra-chave em cascata.
C. Os usuários irão reverter para o perfil padrão.
D. Os usuários a quem é atribuído continuará a usá-lo, mas ele já não pode ser atribuído a
alguém mais.
10 . Qual destes pode ser controlado por um perfil senha? (Escolha todas as respostas corretas.)
A. Dois ou mais usuários escolhem a mesma senha
B. Prevenir a reutilização de uma senha pelo mesmo usuário
C. Forçando um usuário para alterar a senha
D. Ativar ou desativar a autenticação de arquivo de senha
11 . Você quer usar a auditoria unificada, e você executar esta consulta:

O que você deve fazer para ativar a auditoria unificada? (Escolha a melhor resposta.)
A. Run ALTER SYSTEM SET AUDIT_TRAIL = DB, âmbito alargado = SPFILE; e
reinicie o banco de dados.
B. Revincular os executáveis Oracle com as bibliotecas de auditoria unificados.
C. Criar e habilitar uma ou mais políticas de auditoria unificados.
D. desativar a auditoria padrão.
12 . É necessário controlar todas as execuções do SELECT por quaisquer usuários contra uma
tabela
Qual
específica.
ferramenta de auditoria vai fazer isso? (Escolha a melhor resposta.)
A. auditoria Padrão
B. grão fino Auditoria
C. Unified auditoria
D. Tudo o que precede
13 . Que tipos de atividade são obrigatoriamente auditadas? (Escolha três respostas.)
A. Criando, alterando, ou deixar cair uma política de auditoria
B. Criando, alterando, ou deixar cair um usuário

C. A execução dos comandos de auditoria e NOAUDIT


D. Todos os comandos executados enquanto estiver conectado como SYSDBA
E. SYSDBA declarações de nível superior em Mount ou NOMOUNT
F. DDL against the data dictionary
14 . É possível que a trilha de auditoria unificada a perder registros de auditoria? (Escolha a
melhor resposta.)
A. A trilha de auditoria unificada é sempre protegidos em todas as circunstâncias.
B. Os registros não pode ser perdido, mas eles podem ser apagados ou modificados com
comandos
C. A pista DML.
de auditoria está protegido contra DML, mas DDL (tais como truncado) pode
perder
registros.
D. É possível que os registros sejam perdidos no caso de uma falha da instância.

Respostas de auto-teste
1. D . Todos os usuários devem ser autenticados.
A , B , e C são incorrectas. A está incorreta porque embora isso vai dar a todos os
usuários
permissão para se conectar, eles ainda terão que autenticar. B é incorrecta porque um NULL
énão é aceitável como uma senha. C está incorreta porque um perfil só pode gerenciar
senhas,
não desativá-los.
2. C e D . Todas essas ações são necessárias.
A , B , e E são incorrectas. A está incorreta porque sem privilégios e uma quota, JON
Não é possível conectar e criar uma tabela. B não é necessário porque uma cota ilimitada é
implicitamente
concedida na tabela exemplo para usuário JON. E é incorreto porque este privilégio permite
você gerencia um espaço de tabela, não criar objetos nele.
3. B . Não será possível alocar mais extensões para as mesas.
A , C , e D estão incorrectos. A está incorreta porque inserções terá sucesso enquanto há
espaço nas extensões já alocados. C está incorreta porque não há nenhuma necessidade para
soltar aD é incorrecta porque CASCATA não pode ser aplicado a um comando de cota.
mesas.
4. D . Há sempre um padrão de todo o banco de dados, que (por padrão) é SYSTEM. Em
casos,
muitos
terão sido definida para TEMP.
A , B , C , e E são incorrectas. A está incorreta porque há um padrão. B é incorrecta
porque a tabela temporário padrão pode ter sido alterado. C é incorrecta porque
embora TEMP é frequentemente usado por padrão, pode não ser. E é incorreto porque todos
os usuários
contas devem ter um espaço de tabela temporário.
5. B . A concessão do papel DBA ea concessão para PUBLIC deve ser removido, bem
como adirectamente privilégio SELECT.
concedido
A , C , D , e E são incorrectas. C , D , e E estão incorretas porque todos saem de uma
Bolsaque deve ser revogada. A está incorreta porque não é necessário revogar a ALL
no lugar
bem como selecionar; quer seria suficiente.
como

6. C , D , e E . Resposta C está correta porque a revogação de um privilégio de sistema


não D e E estão corretas, pois qualquer ação que atualiza o dicionário de dados é um
cascata.
privilégio.
sistema
A e B são incorrectas. A está incorreta porque privilégios de sistema podem ser
concedidos
usuário que tenhaporsido
qualquer
concedido o privilégio COM OPÇÃO ADMIN. B é incorrecta porque
arevogação de um privilégio de sistema não cascata.
7. C . Não existe tal privilégio, como TABLE SELECIONAR; é concedida implicitamente
MESA.com CREATE
A , B , e D são incorrectas. A está incorreta porque as funções podem ser protegidos por
incorreto
senha.porque
B é mesmo que as tabelas devem ser de propriedade de usuários, a permissão
para
ser concedidapode
criá-los a uma função. D é incorrecta porque um papel pode ter qualquer combinação
de objecto ede sistema.
privilégios
8. B . Papéis não são objetos de esquema e, portanto, pode ter os mesmos nomes de
tabelas.
A , C , e D estão incorrectos. A está incorreta porque as funções podem ter qualquer
combinação
privilégios de
do sistema, objetos e funções. C está incorreta porque os papéis não podem ter os
mesmos
como nomes D está incorreta porque papéis pode ser ativado e desativado a qualquer
usuários.
9. momento.
C . Soltando um perfil reatribui implicitamente todos os usuários relevantes para o
perfil
A , B ,padrão.
e D são incorrectas. A está incorreta por causa da mudança de implícita dos
está incorreta B
usuários. porque não há nenhuma palavra-chave CASCATA no comando DROP perfil;
isto
não é necessário. D é incorrecta porque o efeito de deixar cair um perfil é imediata.
10. B e C . Estes são os dois limites de senha.
A e D são incorrectas. A está incorreta porque não é possível controlar isso. Oráculo
não tem conhecimento da senha real, só o conhecimento do hash da senha. D é
incorrecta porque isso é controlado através do REMOTE_LOGIN_PASSWORDFILE
parâmetro de instância, não através de perfis.
11. B . É necessário ligar nas bibliotecas auditoria unificadas aos binários Oracle.
A , C , e D estão incorrectos. A está incorreta porque o parâmetro AUDIT_TRAIL
permite
auditoria padrão, não unificado de auditoria. C é necessária, mas não suficiente. D é
porque auditoria padrão e unificada podem coexistir.
incorrecta
12. D . Qualquer um dos métodos de auditoria pode fazer isso.
A , B , e C são incorrectas. Cada um destes métodos pode acompanhar esse acesso,
tem embora cada
meios diferentes para configuração e diferentes destinos para os registros de auditoria.
13. A , C , e E . Comandos que configuram auditoria são eles próprios objecto de auditoria,
declarações
bem como de nível
todossuperior
os executado antes de o banco de dados é aberto.
B , D , e F são incorrectas. Essas classes de comandos não são obrigatoriamente
DBAsauditadas.
vai querer
A maioria
auditar-los, mas isso deve ser explicitamente configurado.
14. D . Por padrão, os registros podem ser tamponado no SGA antes de ser escrita para a
Portanto,
trilhauma
de auditoria.
falha da instância poderia perder registros.
A , B , e C são incorrectas. A está incorreta porque a trilha de auditoria pode, de facto,
perder
-Se não registros para escrevê-los em tempo real. B e C são incorrecta porque a pista de
configurado
auditoria está
protegido contra ambos DML e DDL.

CAPÍTULO 17
Movendo e Re-organização de dados

Objetivos do exame
• 062.17.1 descrevem formas de se mover dados
• 062.17.2 criar e usar objetos de diretório
• 062.17.3 Use SQL * Loader para carregar dados de um banco de dados não-Oracle
• 062.17.4 Tabelas uso externo para mover dados através de arquivos Platform-Independent
• 062.17.5 Explicar a Arquitetura Geral do Oracle Data Pump
• 062.17.6 Use Data Pump Export e Import para mover dados entre bancos de dados Oracle
• 063.15.1 Use Bomba dados em um ambiente multitenant
• 063.15.2 Use SQL * Loader em um ambiente multitenant

Uma necessidade comum em um ambiente de base de dados é para mover os dados de um banco de
dados para
fornece outro.
duas Oráculopara isso: Bomba de Dados e SQL * Loader. Bomba de dados pode
instalações
transferir
bancos dedados
dadosentre
Oracle (em todas as versões e plataformas), ao passo que o SQL * Loader pode ler
conjuntos
por sistemas
de não-Oracle.
dados gerados
O capítulo termina com uma discussão sobre usar essas duas instalações
em um multitenant. Recipiente multitenant e bases de dados passíveis de ligação são discutidos no
ambiente
Capítuloo32
Usando . Pump e SQL * Loader em um ambiente multitenant são medidos no Avançada
Data
exame de administração.

Descreva maneiras de mover dados


Há muitas situações em que transferências em massa de dados em um banco de dados ou entre
bancos de dados
necessário. Casossão
comuns incluem a preencher um data warehouse com dados extraídos de transação
sistemas de processamento e copiar dados de sistemas vivos para testar ou ambientes de
desenvolvimento.
inserção de dados Porque
com instruções INSERT padrão nem sempre é a melhor maneira de fazer em larga
operações, o banco de dados Oracle vem com instalações projetadas para operações em massa. Esses
escala
SQL
nunca*realmente
são Loader e Data Pump.
inseri-lo no administradores
banco de dados; de
Istobanco de dadosatravés
é conseguido tambémdotem
usoade
opção de leitura
tabelas de
externas.
dados sem

Criar e usar objetos de diretório


objetos de diretório da Oracle permitem que as sessões no banco de dados para ler e escrever
arquivosutilitários
Alguns do sistemaOracle
operacional.
(tais como Data Pump) requerem diretórios.
diretórios Oracle oferecem uma camada de abstração entre o usuário eo sistema operacional.
comoVocê
o administrador de banco de dados (DBA) criar um objeto de diretório no banco de dados, o
que aponta
caminho físico
parano
uma
sistema de arquivos. Permissões nesses diretórios Oracle podem então ser
concedido
usuários deabanco de dados individuais. Ao nível do sistema operacional, o usuário Oracle (o sistema
conta na qual a instância Oracle está sendo executado) precisará de permissões contra o operacional
operacional
diretórios do sistema para que os diretórios do Oracle referem.
Os diretórios podem ser criados a partir de um SQL * Plus tempo com o comando create
Paradirectory.
ver informações sobre diretórios, consultar os DBA_DIRECTORIES vista. Cada diretório tem
nome e o caminho físico ao qual se refere. Note-se que a Oracle não verificar se o caminho existe
um
quando você criar o diretório; se ele não existe ou se o usuário do sistema operacional que possui o
software não tem permissão para ler e escrever para ela, haverá um erro apenas quando uma
Oráculo
é feito para usar o diretório. Tendo criado um diretório, você deve dar aos usuários banco de dados
tentativa
Oraclefazendo
estará que uso da permissão de diretório para ler e escrever para ele, assim como o seu sistema
os administradores devem dar aos usuários do sistema de autorização de exploração de ler e escrever
para o físico
caminho.

EXAME TIP Diretórios são sempre propriedade do usuário SYS, mas qualquer usuário a quem
você concedeu o
CRIAR QUALQUER privilégio diretório pode criá-los.

Figura 17-1 demonstra como criar diretórios usando SQL * Plus. Na figura, o utilizador SCOTT
tenta criar um apontador diretório para seu diretório home sistema operacional no servidor de banco
de dados Esta falha porque, por padrão, os usuários não têm permissão para fazer isso. Depois de ter
máquina.
sido concedido
permissão, ele tenta novamente. Ele, então, concede permissão de leitura no diretório (e, portanto,
todos os
dentro arquivos
dela) a todos os utilizadores e subvenções ler e escrever permissão para um usuário.
Figura 17-1 Gerenciamento de diretórios com SQL * Plus

A consulta de ALL_DIRECTORIES na figura mostra que o diretório (como todos os diretórios)


possuído
é por SYS; diretórios não são objetos de esquema. É por isso que Scott não pode deixar cair
o diretório
mesmo que ele criou. Soltando um diretório requer outro privilégio: soltar qualquer
DIRETÓRIO.

TIP diretório um oráculo sempre aponta para um diretório do sistema operacional no servidor de
bancohádemaneira
Não dados. de escrever para um diretório no cliente.

Use SQL * Loader para carregar dados de um não-


Oracle
Base de dados
Em muitos casos, você será confrontado com a necessidade de fazer um upload em massa de
conjuntos
sistema dede
terceiros.
dados gerados
Este é oa propósito
partir de alguns
do SQL * Loader. Os arquivos de entrada pode ser gerado
por qualquer
mas enquantocoisa,
o layout está de acordo com algo que SQL * Loader pode entender, ele vai carregar o
dados com êxito. Sua tarefa como a DBA é configurar um carregador controlfile SQL * que pode
o conteúdo dos arquivos de dados de entrada; SQL * Loader irá inserir os dados.
interpretar

Usando o SQL * Loader


Arquitetonicamente, o SQL * Loader é um processo de usuário como qualquer outro. Ele se conecta
ao banco de
processo, a emissão
dados através
de umadeseqüência
um servidorde conexão que identifica um ouvinte de banco de dados, ou
se SQL *do
máquina Loader estáde
servidor embanco
execução no ele pode se conectar usando a variável de ambiente
de dados,
ORACLE_SID.
linhas, ele pode usar
Inserir
uma das duas técnicas: caminho convencional ou direta. A utilização de
pastilhas convencionais
absolutamente instruções INSERT comuns. O processo de usuário SQL * Loader constrói um
declaração com variáveis de ligação na cláusula VALUES e, em seguida, lê o arquivo de dados de
INSERT
origem para
INSERIR umaexecutar
vez paraa cada linha a ser inserido. Este método utiliza a memória cache do banco de
dados e gera
desfazer e refazer dados; estas são instruções INSERT como quaisquer outros, e processamento
normal
torna permanente.
de commit
A carga caminho directo ignora a cache da memória intermédia de banco de dados. SQL *
e envia
Loader
seu lê
conteúdo
o arquivopara
deodados
processo
fontedo servidor. O processo do servidor, em seguida, reúne blocos
de dados
seu Programa
de mesa
Global
em Area (PGA) e escreve-los diretamente para os arquivos de dados. A gravação
está
marcaacima da alta
de água da tabela e é conhecido como um dos dados de economia . A marca de água alta é um
marcador
do segmentona tabela
acima do qual nenhum dado nunca foi escrito; o espaço acima da marca de água alta é
alocado para a tabela que ainda não foi utilizado. Uma vez que a carga está completa, o SQL *
espaço
Loaderd'água
marca deslocaalta
a para incluir os blocos recém-escritos, e as linhas dentro deles são, então,
imediatamente visível para outros usuários. Isto é o equivalente de uma confirmação. Sem desfazer é
gerado,
você quiser,
e se você pode desligar a geração de redo também. Por estas razões, o caminho directo de
carregamento érápido e, além disso, não deve afetar os usuários finais porque interação com o
extremamente
System Global Area (SGA) é mantido a um mínimo.
cargas caminho direto são rápidos, mas têm desvantagens:

• restrições de integridade referencial deve ser descartado ou desativado para a duração da


operação.
• gatilhos de inserção não disparam.
• A tabela será bloqueada contra DML de outras sessões.
• Não é possível usar o caminho direto para as tabelas em cluster.
Estas limitações são o resultado da falta de interação com o SGA enquanto a carga está em
andamento.

TIP EXAME Só UNIQUE, PRIMARY KEY, e NOT NULL são aplicadas durante uma
carga caminho direto. acionadores INSERT não disparam, e a tabela está bloqueada para o DML.

SQL * Loader utiliza um número de arquivos. Os arquivos de dados de entrada são os dados de
origem
o banco de que eleOvai
dados. carregar em
controlfile é um arquivo de texto com as directivas dizendo SQL * Loader
como interpretar
conteúdo dos arquivos
o de entrada e o que fazer com as linhas extrai deles. arquivos de log resumir o
sucesso (ou não) do trabalho, com detalhes de quaisquer erros. Fileiras extraídos a partir dos
ficheiros
ser rejeitado
de entrada
pelo SQL pode
* Loader (talvez porque eles não se conformam com o formato esperado pelo
controlfile) ou pela base de dados (por exemplo, a inserção pode violar uma restrição de
integridade);
caso, eles sãoemgravados
ambos em um arquivo ruim. Se as linhas são extraídos com êxito a partir da entrada,
mas rejeitou
porque eles não se encontraram algum critério recorde de seleção, eles são gravados em um arquivo
de rejeitar.
O controlfile é um arquivo de texto instruindo SQL * Loader sobre como processar os arquivos
possível
de dados
incluir
de os
entrada.
dados Isto
reaisé a serem carregados no controlfile, mas você normalmente não faria
Geralmente, você irá criar um controlfile e reutilizá-lo, numa base regular, com diferentes arquivos
isso;
devariedade
A dados de entrada.
de formatos de entrada que o SQL * Loader pode entender é limitado apenas pela sua
acriatividade
construçãoem de um controlfile.

EXAME TIP Todos os arquivos relacionados a SQL * Loader são arquivos do lado do cliente, não
os arquivos do lado do servidor.
Considere esta tabela:

Em seguida, considere este arquivo de dados de origem, chamado DEPT.DAT:

Um carregador controlfile SQL * (com os números de linha adicionado) que poderia carregar
mostrado
esses dados
aqui: é DEPTS.CTL,

Para executar a carga, executar este comando a partir de um prompt do sistema operacional:
Este comando inicia o processo de usuário SQL * Loader, se conecta ao banco de dados local
SCOTT
comosenha tigre, e em seguida, executa as ações especificadas na DEPTS.CTL controlfile.
usuário
Adicionando um argumento = TRUE DIRECT iria instruir SQL * Loader para usar o caminho direto
em vez de
pastilha convencional
um (que é o padrão). A seguir explica a linha controlfile por linha:

Este é um exemplo simples. A sintaxe do controlfile pode lidar com uma ampla gama de
análise
formatos
inteligente
com para corrigir quaisquer desvios em formato, tais como tipos de comprimento e
dados. Em
assumir quegeral,
é possível
você pode
construir um controlfile que vai entender praticamente qualquer arquivo de
dados
No de entrada.
entanto, não acho que é sempre fácil.

DICA Pode ser difícil de obter um direito controlfile, mas uma vez que você tem, você pode usá-lo
repetidamente,
diferentes ficheiros
com de dados de entrada para cada passagem. É, em seguida, a responsabilidade do
sistema dedealimentação
arquivos de entrada para
dados que correspondem produzir
à sua controlfile, ao invés do contrário.

Modo SQL * Loader Expresso


Há uma maneira simples de usar SQL * Loader que não requer nenhum controlfile. Este é o modo
expresso,
demonstrado (no Windows) na Figura 17-2 .
Figura 17-2 SQL * Loader em execução no modo expresso

A listagem de diretório em Figura 17-2 mostra que há um arquivo presente: dept.dat. Isto tem
criada
sidode acordo com a descrição dada anteriormente. Em seguida, o executável sqlldr.exe é lançado,
conectando como usuário SCOTT com o orclz seqüência de conexão e nomeando tabela DEPT e
outro. O resultado mostra que duas linhas foram carregadas, embora existam três no arquivo de
nada
dados. o lista de diretórios mostra que um arquivo sufixo BAD foi gerada que, quando digitado,
próxima
uma linha a partir do ficheiro de dados de entrada. Esta é a terceira fila, que estava incompleta
contém
porquepara
valor nãoahá
coluna da tabela LOC.
Modo Express é fácil de usar, mas é exigente em suas exigências:

• Deve haver um arquivo de dados com o mesmo nome que a tabela a ser carregado, o sufixo
.DAT.
• As colunas deve ser um tipo de dados escalar: caráter, número ou data.
• Os campos no arquivo deve ser delimitado por vírgulas e não entre aspas.
• As linhas de entrada devem ter valores para cada coluna da tabela.
• O usuário deve ter o CRIAR QUALQUER privilégio DIRECTORY.

Os arquivos de log gerados pelo modo expresso pode ser instrutivo. Entre outras coisas, eles
SQLincluem
* definição
uma carregador controlfile, que pode ser usado (ou editado) para trabalhos posteriores.

Utilizar tabelas externas para mover os dados através de


plataforma
Arquivos Independent
Uma tabela externa é visível para SELECT declarações como qualquer outra tabela, mas você não
pode executar Language
Manipulation dados (DML) declarações contra ele. Isso é porque ele não existe como um
segmento
o banco deem dados. Ele existe apenas como uma construção de dicionário de dados, que aponta para
uma ou mais
arquivos do sistema.
de operação
Os arquivos do sistema operacional de mesas externas estão localizados através
diretório do Oracle
objetos.
Um uso comum de mesas externas é evitar a necessidade de usar SQL * Loader para ler dados
basenode dados. Isto pode fornecer grandes economias no ciclo de extracto-transformar-carga (ETL)
tipicamente
atualizar umusada para
sistema de apoio à decisão (DSS) com dados de um sistema de alimentação. Considere
o caso em
sistema de que
alimentação
um gera regularmente um conjunto de dados como um Código American
Standard plana
Intercâmbio de de
arquivos
Informação
(ASCII), que deve ser mesclados em tabelas de banco de dados existentes.
Uma
ser a utilização
abordagemdeseria
SQL * Loader para carregar os dados em uma tabela de teste e, em seguida, usar
uma
linhasrotina separada
da tabela para mesclar
de preparação parao as tabelas DSS. Esta segunda rotina não pode começar até que a
carga é Usando tabelas externas, a rotina merge pode ler os dados de origem do sistema
acabado.
arquivos sem ter que esperar por ele para ser carregado.
operacional
Para criar uma tabela externa, use o comando CREATE TABLE com as palavras-chave
Organização externa. Isto diz a Oracle que a tabela não existe como um segmento. Então
especificar o layout e localização do arquivo do sistema operacional. Aqui está um exemplo:
Este comando cria uma tabela externa que será preenchida pelo arquivo DEPTS.DAT mostrado
na “Usando o SQL * Loader”, anteriormente neste capítulo. A sintaxe para parâmetros de
a seção
acesso é
praticamente idêntico ao do SQL * sintaxe carregador controlfile e é utilizado porque TIPO foi
definido para
ORACLE_LOADER. A especificação para diretório padrão dá o diretório do Oracle
onde o Oracle irá procurar o arquivo de dados de origem e onde ele vai escrever o log e outros
arquivos.
As tabelas externas podem ser consultados na mesma maneira que as tabelas internas. Qualquer
vai funcionar
SQL envolvendo
contra uma
um SELECT
tabela externa; tabelas externas podem ser usados em junções,
visualizações,
Eles não podem e subconsultas.
ter índices, restrições, ou gatilhos.

Exercício 17-1: Use Diretórios, SQL * Loader, e tabelas externas Neste exercício, você vai
instalar e usar o SQL * Loader para inserir dados em uma tabela e também para gerar o CREATE
roteiro para uma tabela externa.
TABLE

1. Ligue para o seu banco de dados como usuário SYSTEM (nos exemplos, a senha do sistema
é Oracle) com SQL * Plus.
2. Criar uma tabela a ser usada para o exercício.

3. O uso de qualquer editor que irá criar arquivos de texto simples, crie um arquivo chamado
names.txt
valorescom
(ou semelhante):
estes

4. Usando o editor, criar um controlfile chamado names.ctl com essas configurações:

Note que este controlfile irá truncar a tabela de destino antes de realizar a inserção.
5. A partir de um prompt do sistema operacional, execute o SQL * Loader da seguinte forma:

6. Estudar o names.log arquivo de log que é gerado.


7. Com o SQL * Plus, confirmar que as linhas foram inseridas.

8. Para gerar uma declaração de que irá criar uma tabela externa, você pode usar SQL * Loader
e um
controlfile existente.

9. Este terá gerado uma instrução CREATE TABLE na names.log arquivo de log, que será
algo parecido com isto:
10. A partir da sua sessão SQL * Plus, criar um diretório do Oracle apontando para o sistema
operacional
diretório onde o arquivo names.txt é. Aqui está um exemplo:

11. Faça as edições que você quer o comando mostrado na etapa 9. Por exemplo, você pode
querer
mudar o nome da tabela que está sendo criado (SYS_SQLLDR_X_EXT_NAMES não é
útil) para algo mais significativo. Você vai precisar para mudar tanto o PADRÃO
muito
Configurações do diretório e BADFILE para apontar para o diretório criado na etapa 10.
12. Executar a declaração criou na etapa 11 do seu sessão SQL * Plus.
13. Consulta a tabela com algumas instruções SELECT e DML. Você vai descobrir que um
arquivo de log
gerado paraé cada SELECT e que a DML não é permitido.
14. Arrumar apagando os arquivos Nomes.txt e names.ctl, deixando cair as tabelas e, como SYS,
largando o diretório.

Explicar a arquitetura geral do Oracle Data Pump


Data Pump é um utilitário do lado do servidor. Você iniciar trabalhos de bombagem de dados de um
éprocesso
feito pordeprocessos
usuário, mas
do servidor.
todo o trabalho
Isso melhora o desempenho dramaticamente ao longo da antiga
Export / Import
utilitários porque os processos de bomba de dados em execução no servidor tem acesso direto aos
arquivos
eo SGA; de elesdados
não tem que ir através de uma sessão. Além disso, é possível iniciar um trabalho de
bomba
em seguida,
de dados
destacar
e a partir dele, deixando-o em execução em segundo plano. Você pode
reconectar-se
progresso a qualquer
ao trabalho
momento.
para acompanhar a sua
Envolvido em um trabalho Data Pump uma série de processos, duas filas, uma série de arquivos,
mesa.e um
Os processos de utilizador são expdp e impdp (para Unix) ou expdp.exe e impdp.exe (por
Janelas). Estes são usados para lançar, controlar e monitorar os trabalhos de bombagem de dados. O
usuário expdp
processo estabelece
ou impdp
uma sessão no banco de dados através de um processo de servidor normal,
localmente
através de umou ouvinte. Esta sessão, em seguida, emite comandos para controlar e monitorar os
trabalhos de bombagem de dados. Quando um
trabalho de bomba de dados é lançado, pelo menos, dois processos foram iniciados: um processo
mestre
DM nn Data
) e um Pump (o processos de trabalho (chamado DW nn ). Se vários trabalhos de bombagem
ou mais
de dados estão emcada
simultaneamente, execução
uma delas tem o seu próprio DM nn processo e o seu próprio conjunto de
DW nnoprocessos.
indica, processo mestre
Como ocontrola
nome os trabalhadores.
Duas filas são criadas para cada trabalho Data Pump: a fila de controle e uma fila de status. O
divide-se
DM nno trabalho a ser feito e coloca tarefas individuais que compõem o trabalho na fila de
Os processos de trabalho pegar essas tarefas e executá-los, talvez fazendo uso de paralelo
controle.
servidores de execução. Esta fila opera em um modelo de entregar-exatamente-uma vez: As
mensagens
o DM nn e dequeued
são enfileirado
pelo trabalhador
por que lhes pega. A fila de estado é para monitorização
propósitos; o DM nn coloca mensagens em que descrevem o estado do trabalho. Esta fila opera em
publicar e assinatura modelo; qualquer sessão (com privilégios apropriados) podem consultar a fila
uma
de
monitorar o progresso do trabalho.
Os arquivos gerados pelo Data Pump vêm em três formas: arquivos SQL, arquivos de despejo, e
arquivos
arquivos são de log.Definition
Data SQL Language (DDL) que descrevem os objetos incluídos no trabalho. Você
pode escolher para gerá-los (sem dados) como uma maneira fácil de obter esta informação para fora
banco de dados, talvez para fins de documentação ou como um conjunto de scripts para recriar o
do
banco de contêm
arquivos dados. lixeira
os dados exportados. Esta é formatado de forma semelhante a Extensible Markup
Language
(XML) etiquetas. Isto significa que há uma sobrecarga considerável em arquivos de despejo para
descrevermesa
pequena os dados.
comoUMAa mesa de regiões do esquema de exemplo HR irá gerar um arquivo de despejo
94KB, mas
embora essa sobrecarga pode parecer desproporcionalmente grande para uma pequena mesa assim,
torna-se
para tabelas
trivial
maiores. Os arquivos de log descrever a história da execução da tarefa.
EXAME TIP Data Pump pode ser invocado por um cliente, mas é executado no servidor. Todos os
arquivos secundários,
são servidor- com nada no lado do cliente.

Finalmente, há a mesa de controle. Isto é criado para você pelo DM nn quando você iniciar um
trabalho
é usado tantoe para gravar o progresso do trabalho e para descrevê-lo. Ele está incluído no arquivo de
despejodocomo
artigo trabalho.
a final
Bomba de dados tem dois métodos para o carregamento e descarregamento de dados: o caminho
caminho.
directoOecaminho
a tabela externa
directo ignora a cache da memória intermédia de banco de dados. Para uma
exportação
os blocos dedearquivo
caminho de direto,
dados diretamente
o Data Pumpdolêdisco, extratos e formata o conteúdo, e escreve-lo
como um Para
Arquivo. despejo
uma importação de caminho direto, o Data Pump lê o arquivo de despejo, usa o seu
conteúdo
os dados da para montar
tabela blocos de diretamente para os arquivos de dados. A gravação está acima da
e escreve-los
marca com
mesa, de água
os mesmos
alta do benefícios como as descritas anteriormente para um SQL * Loader carga
direta.
O caminho tabela externa utiliza a memória cache do banco de dados. Mesmo que o Data Pump
arquivos
está manipulando
que são externos ao banco de dados, ele usa o cache de buffer do banco de dados como se
estivesse lendo
escrevendo umaetabela interna. Para uma exportação, o Data Pump lê blocos de arquivos de dados
no cachede um processo de comando SELECT normal. A partir daí, formata os dados para a saída
através
para um arquivo
importação, de Pump
o Data despejo. durante
constrói uma
instruções INSERT padrão a partir do conteúdo do arquivo de
despejo
os executa
e através da leitura quarteirões dos arquivos de dados no cache, em que a inserção é feita
a forma normal. Na medida em que o banco de dados está em causa, os trabalhos de bombagem
em
Tabela de dados externos parecer
absolutamente comum (embora talvez um pouco grande) SELECT ou operações INSERT. Ambos
desfazer
redo são egerados, como seria para qualquer instrução normal de DML. Os usuários finais podem
muito bem
reclamar enquanto estes trabalhos estão em andamento. O processamento de consolidação é
absolutamente
Então, o quenormal.
determina se o Data Pump usa o caminho direto ou o caminho tabela externa? Você
DBA como
não tem controle; Data Pump em si toma a decisão com base na complexidade dos objetos.
Únicas estruturas simples, como tabelas de heap sem gatilhos ativos, podem ser processadas através
caminho direto; objetos mais complexos, tais como mesas de cluster forçar Data Pump para usar a
do
tabela externa
caminho porque requer interação com o SGA, a fim de resolver as complexidades. Em ambos os
o arquivo de despejo gerado é idêntico.
casos,

Use Data Pump Export e Import para mover dados


Entre bancos de dados Oracle
Bomba de dados é utilizada para a extracção de grandes quantidades de dados a partir de uma base
de dados
em outro,emas
inseri-lo
também pode ser usado para extrair outras informações, como o código PL / SQL ou
definições de objetos. Existem várias interfaces: utilitários de linha de comando, Enterprise Manager
vários
Controle, e um PL / SQL interface de programação de aplicativo (API). Seja qual for o propósito e
nuvem
são utilizados, os arquivos são sempre no formato proprietário Data Pump. Não é possível ler um
técnica
Data
Bombear arquivo com qualquer ferramenta que não seja o Data Pump.

capacidades
Seja qual for a interface é usada, o Data Pump tem esses recursos:

• refinadas objeto e seleção de dados instalações significa que o Data Pump pode exportar tanto
o banco de dados completo ou qualquer parte dele. É possível exportar as definições da tabela
(com ou semobjectos PL / SQL, pontos de vista, as sequências, ou qualquer outro tipo de
suas linhas),
objecto.
• Se exportar uma tabela, é possível aplicar uma cláusula WHERE para restringir as linhas
exportados
(Embora isso possa fazer o caminho direto impossível) ou para instruir o Data Pump para
exportar aleatória
amostra um da tabela expressa como uma percentagem.
• O processamento paralelo pode acelerar as operações de bombagem de dados. Paralelismo
pode
o número
vir em de
dois
processos
níveis: de trabalho da bomba de dados e o número de servidores de execução
paralela cada
processo de trabalho usa.
• Uma facilidade estimativa pode calcular o espaço necessário para uma exportação de bomba
deexecução
dados, sem
do realmente
trabalho.
• O Modo de Rede permite a transferência de um conjunto de dados Bomba dados de um banco
semoutro
para nunca encenando-lo em disco. Isso é implementado por um trabalho de exportação de
bombade
banco dedados
dadosgravar
na fonte
os dados em um link de banco de dados para o banco de dados de
destino, onde
trabalho uma bomba
de importação de dados
lê os dados do link de banco de dados e insere-lo.
• Instalações de remapeamento significa que os objetos podem ser renomeados ou transferidos
deoutro
um esquema
e, no caso
para
de objectos de dados, a partir de uma tabela movido para outro à medida que
importado.
são
• Quando os dados está sendo exportado, os arquivos de saída podem ser compactados e
criptografados.
Usando o Data Pump com os utilitários de linha de comando
O expdb executáveis e impdp são instalados no diretório / bin ORACLE_HOME. o
Seguem-se alguns exemplos de utilização. Note-se que em todos os casos o comando deve ser um
comando de uma linha; as quebras de linha são puramente para legibilidade.
único
Aqui é como exportar todo o banco de dados:

Este comando irá se conectar ao banco de dados como usuário SYSTEM e lançar uma
utilizando
exportação
dois completa
processosData
de trabalho
Pump, que trabalham em paralelo. Cada trabalhador irá gerar seu
próprio conjuntonomeados
exclusivamente de arquivos
de de despejo,
acordo com o modelo U%, o que gera cadeias únicas de oito
Cada trabalhador vai quebrar a sua saída em arquivos de 2 GB (talvez por causa do sistema de
caracteres.
arquivos subjacente
restrições) de dados compactados.
A tarefa de importação correspondente (que assume que os arquivos gerados pela exportação
colocado
foramemtodos
um diretório) seria a seguinte:

Este comando faz uma exportação seletiva dos objetos PL / SQL pertencentes a dois esquemas.

Este comando irá extrair tudo de uma exportação de bomba de dados que estava no esquema HR
e
importá-lo para o esquema DEV.

Tablespace Exportação e Importação


Uma variação no Data Pump exportação / importação é a capacidade de transporte de tabela. Esta é
umaque
em instalação
os espaços de tabela inteiras e os seus conteúdos podem ser copiados a partir de um banco de
dados para outro. Isto é o
rotina:

1. Faça os espaços de tabelas de origem somente leitura.


2. Use o Data Pump para exportar os metadados descrevendo os espaços de tabela e os
conteúdos.
3. Copie os arquivos de dados e arquivo de exportação de bomba de dados para o sistema de
destino.
4. Use o Data Pump para importar os metadados.
5. Faça os espaços de tabela de leitura e escrita, tanto a origem eo destino.

Um passo adicional que pode ser necessário quando o transporte de tabela de uma plataforma
para
outra é para converter o formato endian dos dados. Uma plataforma de big-endian (como Solaris em
chips) armazena um valor de vários bytes, tal como um inteiro de 16-bit com o byte mais
SPARC
significativoendian
plataforma em primeiro
(como olugar.
Windows
Um pouco-
em chips Intel) armazena o byte menos significativo primeiro.
tablespaces em várias plataformas com um formato endian diferente requer converter os arquivos de
transporte
dados.
isto comVocê faz
o comando Converter Recovery Manager (RMAN).
Para determinar a plataforma na qual um banco de dados está em execução, consultar o
em VPLATFORM_NAME
$ DATABASE. Então, coluna
para ver a lista de plataformas suportadas atualmente (que irá variar de
em seu lançamento exata) e sua ordenação, consultar a visão V $ TRANSPORTABLE_PLATFORM.
acordo

Ao transportar espaços de tabela, existem algumas restrições:

• Os espaços de tabela deve ser auto-suficiente. Isso significa que os objetos dentro dos espaços
dedeve
tabela
ser completa, em outras palavras, que não depende de quaisquer outros objetos. Por
exemplo,
estão em umse tabelas
espaço de tabelas e índices nas tabelas em outra, ambos os espaços de tabela
deve
no conjunto
ser incluído
para ser transportado.
• O banco de dados de destino deve usar o mesmo (ou um compatível) conjunto de caracteres
como a fonte
base de dados.
• Os esquemas que possuem os objetos nos espaços de tabela deve existir no banco de dados de
destino,
a operação
ou irá falhar.
• Todos os objetos no banco de dados de destino com o mesmo proprietário e nome do objeto
como
conjunto
objetos
de no
tabela transportáveis não serão perdidas; eles serão ignorados durante a
importação.
• Um espaço de tabela com o mesmo nome não deve existir. Lembre-se de que é possível mudar
o nome
tablespaces.

A Figura 17-3 mostra os passos para gerar um conjunto de transporte. Na Figura 17-3 , o
PL chamada
primeiro comando
procedimento
é a / SQL para confirmar que um conjunto de espaços de tabela (no exemplo,
éapenas um espaçoEm
auto-suficiente. de tabela:
seguida,TS1)
a tabela é feita só de leitura. O trabalho de Data Pump, lançado com o
expdp utilitário de linha de comando, liga como SISTEMA utilizador e, em seguida, especifica a
tabela a ser Isso irá gerar um arquivo de despejo com metadados que descrevem o conteúdo da
transportado.
espaço de tabelas no diretório DP_OUT Oracle. Então, enquanto a tabela ainda é somente leitura,
TS1
copie a sua
arquivos de dados e o arquivo de despejo Data Pump para um local adequado no servidor de banco
de dados de destino.
Figura 17-3 Usando utilitários de linha de comando para criar um conjunto de tabela transportável

Se o banco de dados de destino estiver em uma plataforma com um endianness diferente da


devefonte,
ser convertido.
os arquivosPara fazer isso na fonte, se conectar ao banco de dados de fonte com o RMAN e
executar um
comando como este:

Este comando irá escrever uma cópia do arquivo com o endianness alterado. Como alternativa,
o arquivo
copie inalterado ao banco de dados de destino, conecte com o RMAN e executar um comando
como este:

Este comando irá ler o arquivo de dados nomeado e convertê-lo do formato plataforma nomeado
novo
para
arquivo
um no formato que é necessário para o banco de dados de destino.
Para importar os espaços de tabela no sistema de destino, usar um comando, tal como o mostrado
17-4.
na figura

Figura 17-4 Usando o utilitário impdp para importar um espaço de tabela transportado
O comando impdp na Figura 17-4 lê um arquivo de despejo para determinar o nome e conteúdo
da que consiste no ficheiro de dados indicado (previamente convertido, se necessário).
tabela

CUIDADO Não se esqueça a etapa final! Faça a tabela de leitura e escrita, tanto a origem eo
bancos de dados de destino.

A generalização do recurso de tabela transportável torna possível transportar todo um

base de dados a partir de uma máquina para outra.

Exercício 17-2: Use Data Pump Export / Import Neste exercício, utilize a linha de comando Data
Pump
utilitários para copiar uma tabela de um esquema para outro.

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Criar dois esquemas para usar para este exercício.

3. Criar uma tabela e do índice em um esquema.

4. Existe um diretório criado por padrão para o uso de bomba de dados, chamado
DATA_PUMP_DIR,
que os clientes da bomba de dados usará se nenhum outro diretório é especificado.
Confirmar
com a sua existência
esta consulta e criá-lo (usando qualquer caminho sistema operacional adequado) se ele
não existe.

5. Exporte o esquema ARTEM com este comando:

6. Importe o esquema ARTEM no esquema IVANA:

7. Confirmar que os objetos foram importados.

Use Bomba dados em um ambiente multitenant


No Oracle Database 12 c , Data Pump apoia plenamente importação e exportação de versões
anteriores
Base de dados
do Oracle (aqueles que não são bases de dados recipiente [CDB]) e base de dados Oracle
e12bases
c não-CDB
de dados passíveis de ligação (PDBs). Desde o Data Pump é uma ferramenta de exportação e
importaçãonão
Operação lógico, a única
suportada em um ambiente multitenant é importação ou exportação de um contentor
banco de dados (CDB $ ROOT).
A chave para usar o Data Pump em um ambiente multitenant é usar o nome do serviço PDB
origem
comoouode destino da operação de Data Pump. Desta forma, o tipo de base de dados (não-CDB ou
PDB)
não é um
é fator na operação. A Figura 17-5 mostra vários cenários usando a bomba de dados em um
de vários
meio Ambiente.
usuários
Figura 17-5 cenários Bomba de dados Oracle em um ambiente multitenant

Exportação de Não-CDB e Importação para PDB


Usando o Data Pump exportação a partir de um não-CDB para um APO é uma maneira fácil para
converter
Banco de dados
um não-CDB
de 11 g da
ou Oracle
mais cedo a um PDB no Oracle Database 12 c sem atualizar o não-CDB
para o Oracle
Banco de dados de 12 c e, em seguida, converter o banco de dados para um APO. Se o alvo PDB
não existe,
criá-lo você deve
primeiro. Neste exemplo, você tem um não-CDB chamado HR, e você deseja migrar os
usuários
de tabelaepara uma APO no CDB01 recipiente.
Os passos básicos são os seguintes:

1. Crie o diretório Oracle e sistema operacional para o arquivo de despejo Data Pump.
2. Exporte o banco de dados.
3. Criar o PDB alvo se ainda não existir.
4. Importe o banco de dados do arquivo de dump no PDB.
Durante a importação, quaisquer espaços de tabela que já existem não será recriada. No APO-
usuários
alvo, do
todos
não-CDB são recriados como usuários locais dos novos PDB.

Exportação e importação entre PDBs


Exportar a partir de um APO existente para uma nova APO, quer no mesmo recipiente ou num novo
recipiente,
segue a maioria das etapas como na seção anterior. Se o alvo PDB não existe, criá-la
antes do tempo no destino CDB. Para PDBs tanto a origem e de destino, você precisa criar um
objeto para o arquivo de despejo. O objeto de diretório deve estar no PDB, não CDB, o nível porque
diretório
o novo
PDB não terá visibilidade a esse objeto de diretório; como seria de esperar, o mesmo nome do
diretórioapode
existem nível CDB e em cada APO.
Ao exportar a partir de um APO já existente, você pode ter usuários comuns que possuem
PDBobjetos
fonte. no
Esse usuário e seus objetos não será importado com êxito para um novo PDB-alvo
porque a importação Data Pump está no nível PDB e você não pode criar usuários locais em um
PDB
C ## prefixo
com o como parte da importação da bomba de dados. Por exemplo, se o usuário comum RJB
C ## deobjetos,
possui um APO a importação
já existentepara um novo PDB em um CDB diferente sem que o usuário comum C
## RJB
com estairá
mensagem
falhar de erro:

Para corrigir esse problema, você pode fazer uma de duas coisas. A primeira opção é criar o
no alvo
mesmo
CDB usuário
antes comum
de iniciar a importação Data Pump. Se você não quer ter o mesmo comum
usuário no alvo CDB, use a opção REMAP_SCHEMA na linha de comando impdp para criar uma
usuário local que será o proprietário dos objetos do usuário comum no APO fonte.

Em uma nota similar, se você tem conflitos de nomes de espaços de tabelas e você não quer que
objetos
a fonte
paraPDB
acabar
de na tabela com o mesmo nome, use a opção REMAP_TABLESPACE.

Exportação de PDB e Importação para não-CDB


Importação de uma exportação a partir de um PDB em uma não-PDB é suportado para todos os tipos
de exportações:esquema
convencional, completo,
e transportável. A única exceção é que você não pode importar um comum
objetos do usuário em um não-CDB. Você teria a mesma mensagem de erro, como se estivesse
tentando comuns
usuários importarde outra PDB em um novo PDB. A solução é a mesma: Use o
opção REMAP_SCHEMA.
Se você estiver importando uma exportação PDB em um Oracle 11 g não-CDB, no entanto, você
esquemas
vai obter
e objetos
o dos usuários comuns importados com sucesso. O caractere # é válido em nomes
de esquema;
portanto, você pode criar o usuário C ## RJB em uma Oracle 11 g de banco de dados, e ele será
tratado não
diferentemente do que qualquer outro usuário no banco de dados desde a opção multitenant só existe
a partirde
Banco dodados
Oraclede 12 c diante.

Completa Transportável Exportação e Importação


Como você se lembra, um dos novos recursos do Oracle Database 12 c é a exportação transportável
completo
Esta operação
e importação.
é mais como uma operação de tabela transportável do que uma operação de Data
Pump. o expdp cria apenas os metadados para o banco de dados e os arquivos de dados reais são
comando
copiados ou
mudou-se tal como está para o destino alvo.
Em um ambiente multitenant, você pode aproveitar completa transportável exportação /
tablespaces
importação
rapidamente
tanto paraemover
evitar a atualização de um banco de dados existente no local; em vez
APO
disso,ou criar
você usauma
umanova APO e transportar os arquivos de dados de um 11 g de base de dados (ou
já existente
maisClaro, desde
recente) que
para completa transportável exportação / importação normalmente incluem o
a APO.
sistema e
espaços de tabela SYSAUX, aqueles que não estão incluídos em uma operação de importação
transportável se o destino for um
PDB.

Transportar um banco de dados sobre a rede


Ao usar transportável exportação / importação através da rede para o transporte de um banco de
dadosesses
Siga em umpassos:
PDB, você

1. Crie o novo PDB no recipiente alvo.


2. Crie um link de banco de dados no APO-alvo para o banco de dados de origem com o
apropriado
permissões concedidas ao usuário definida no link de banco de dados.
3. Altere o status dos espaços de tabela não são do sistema (SYSTEM e SYSAUX) na fonte
banco de dados para somente leitura.
4. Copie os arquivos de dados a partir do local de origem para o local de destino acessível para
o
5.novo PDB. os arquivos de dados, se necessário (para a conversão endian).
Converter
6. A importação para o banco de dados de alvo.

Alterar espaços de tabela do banco de dados fonte de volta para ler WRITE.
Sua operação impdp será algo parecido com isto:

No banco de dados Oracle 11 g Data Pump, você poderia executar importação / exportação
atravésse
eo mesmo daaplica
rede, bem
para como,
o Oracle Database 12 c Data Pump em um cenário multitenant. Nenhum
arquivo de despejo
necessário, economizando
é tempo e espaço em disco. Apenas o arquivo de metadados para o banco
desistema
o dados de
deorigem
arquivos.
é criado no

Use o SQL * Loader em um ambiente multitenant


Usando o SQL * Loader em um ambiente multitenant é tão fácil quanto usar SQL * Loader em um
não-CDB
meio Ambiente. A chave para garantir o sucesso é para especificar o nome do PDB serviço nova ou
ao carregar dados em uma ou mais tabelas.
existente

Broca Two-Minute
Descreva maneiras de mover dados
• Bomba de dados pode transferir dados entre bancos de dados Oracle.
• SQL * Loader pode ler arquivos gerados por produtos de terceiros.

Criar e usar objetos de diretório


• Um diretório do Oracle mapeia um objeto de banco de dados para um caminho de sistema
operacional.
• The Oracle OS user must have permissions on the OS directory.
• Os usuários de banco de dados deve ser concedido permissões no diretório Oracle.

Use SQL * Loader para carregar dados de um banco de dados não-Oracle


• SQL * Loader lê arquivos de texto do sistema operacional gerados por qualquer sistema de
terceiros.
Modo • Expresso simplifica o uso.

Use tabelas externas para mover dados através de arquivos Platform-Independent


• As tabelas externas estão operando arquivos de texto do sistema definidos com SQL * sintaxe
Loader.
• Não existe nenhum segmento para uma tabela externa.
• As tabelas externas podem ser consultados, mas DML ou índices não são possíveis.

Explicar a arquitetura geral do Oracle Data Pump


• processos de bomba de dados executado no exemplo, não o cliente.
• Todos os arquivos são acessados por meio de objetos de diretório Oracle.
• caminho direto ignora o cache de buffer; caminho tabela externa passa pelo cache.

Use Data Pump Export e Import para mover dados entre bancos de dados Oracle
• arquivos de despejo Data Pump são compatíveis entre as versões e plataformas.
• Modo de rede evita a necessidade de organizar os dados no disco.
• modo de transporte Tablespace permite a cópia de arquivos de dados entre bancos de dados.

Use Bomba dados em um ambiente multitenant


• Usar nome do serviço da instância de banco de dados é a chave para proteger o processo de
exportação
a partir dos
/ importação
detalhes da CDB.
• exportação Data Pump e importação são suportadas a partir de não-CDB para PDB, PDB para
PDB,
não-CDB
e 11g de
ou PDB, respectivamente.
• exportação completa transportável e importação a partir de um não-CDB para um cópias PDB
todos
paraosSYSTEM
espaços de
e SYSAUX.
tabela, exceto
• Para usuários comuns com os objetos em uma exportação de bomba de dados de um não-CDB
ou12c
PDB banco
no Oracle
de dados, a linha de comando impdp deve incluir uma cláusula
REMAP_SCHEMA
que para garantir
os esquemas de partida com C ## vai ser importados para o banco de dados de alvo.

Use o SQL * Loader em um ambiente multitenant


• SQL * Loader funciona como nas versões anteriores, quando você usa o nome do serviço do
banco de dados.

Auto teste
1 . Qual destes métodos de movimentação de dados pode transferir dados a partir de uma
plataforma
(Escolhapara outra?
todas as respostas corretas.)
A. Usando CREATE TABLE AS com uma instrução SELECT que lê a partir de um link de
banco
B. umadebomba
dadosde dados modo de rede de exportação / importação

C. transporte tabela uma bomba de dados


D. Usando o exp legado e exportação utilitários IMP / importação
E. Usando de backup RMAN e restaurar com conjuntos de backup, e não cópias de imagens
2 . Você cria um diretório com a declaração

mas quando você tentar usá-lo com bomba de dados, há um erro. Qual das seguintes poderia
verdade? (Escolha três respostas.)
ser
A. proprietário do software Oracle não tem permissões em c: \ tmp.
B. usuário de banco de dados Oracle não tem permissões em dp_dir.
C. O caminho c: \ tmp não existe.
D. O caminho c: \ tmp deve existir ou então a declaração Directory Crie teria
falhou.
E. Se você usar o Data Pump no modo de rede, não haverá necessidade de um diretório.
F. A emissão da concessão comando em 'c: \ tmp' para público; pode resolver alguma
permissão
problemas.
3 . O que é uma condição necessária para importar um arquivo Data Pump de um cliente?
(Escolha
responda.)
o melhor
A. Um objeto de diretório deve ser criado apontando para o diretório do sistema operacional
onde
o arquivo
o existe.
B. A controlfile deve existir que descreve com precisão o formato do arquivo.
C. Os sistemas operacionais cliente e servidor devem utilizar o mesmo formato endian.
D. Não é possível importar um arquivo de um cliente.
4 . Qual dos seguintes não é um arquivo * Loader SQL? (Escolha a melhor resposta.)
A. arquivo de Bad
B. cONTROLFILE
C. arquivo de Descarte
D. Boa arquivo
E. arquivo de log
5 . Você executar o SQL * Loader no seu PC para inserir dados em um banco de dados remoto.
Qual dos
seguinte é verdadeiro? (Escolha a resposta correta.)
A. Os arquivos de dados de entrada devem estar no seu PC.
B. Os arquivos de dados de entrada devem estar no servidor.
C. carga direto só é possível se os arquivos de dados de entrada estão no servidor.
D. carga direto só é possível se você executar o SQL * Loader no servidor, não no PC.
6 . Estudar este comando SQL * Loader:

Qual será o resultado? (Escolha a melhor resposta.)


A. A carga irá falhar a menos que haja um controlfile presente chamado EMP.CTL.
B. A carga será bem sucedida se houver um arquivo chamado presente EMP.DAT.
C. tabela EMP será criado se ele não existe ou anexado ao se ele faz.
D. O usuário será solicitado para argumentos ausentes, como o nome arquivo de dados.
7 . Qual destes comandos SQL pode fazer referência a uma tabela externa? (Escolha duas
respostas.)
A. SELECIONAR
B. INSERT, UPDATE, DELETE
C. CREATE VIEW
D. CREATE INDEX
8 . Qual dos seguintes não é um tipo de arquivo Data Pump? (Escolha a melhor resposta.)
A. arquivo de despejo
B. arquivo de log
C. cONTROLFILE
D. arquivo SQL
9 . Você está usando bomba de dados para fazer upload de linhas em uma tabela, e você quiser
usarQual
o caminho
das seguintes
direto.afirmações é correta? (Escolha duas respostas.)
A. Você deve incluir a palavra-chave DIRECT no controlfile Data Pump.
B. Isto não é possível se a tabela está em um cluster.
C. Você não tem controle sobre isso; Bomba de dados irá utilizar o caminho direto
automaticamente
D. caminho diretoseé ele
maispuder.
lento do que o caminho tabela externa, porque ele não cache de
dados
memória.
em
10 . Você pretende transportar um espaço de tabelas do banco de dados A no Windows ao banco
EstesBsão
de dados noos passos:
AIX.
uma. Converter os arquivos de little endian para big endian.
b. Copie os arquivos de A para B.
c. Exportar os metadados que descrevem a tabela.

d. Importar os metadados que descrevem a tabela.


e. Faça o espaço de tabela somente leitura no A.
f. Faça a tabela de leitura e escrita em B.
Em que ordem poderia os passos ser realizado?
A. c, e, b, f, a, d
B. E, C, b, a, d, f
C. e, c, d, a, b, f
D. C, e, b, a, d, f
11 . Qual das seguintes operações são suportadas com o Oracle Database 12 c Data Pump
exportação e importação em um ambiente multitenant? (Escolha todos os que se aplicam.)
A. Você deve sempre atualizar um banco de dados pré-12c para a versão 12-C antes de
realizar uma exportação
e importando a um 12c não CDB.
B. banco de dados 11g um oráculo podem ser exportados e importados para um 12c PDB
Oracle
operação
como de
umbanco
completo
de dados transportável.
C. Somente PDBs podem ser exportados e importados para outro PDB.
D. Somente PDBs podem ser exportados e importados para o recipiente raiz (CDB $
ROOT).
E. Só não CDBs pode ser importado para outro não-CDB.
F. Você pode exportar um PDB e importá-lo para um APO diferente dentro da mesma CDB.

Respostas de auto-teste
1. A , B , C , e D . Todas estas técnicas têm uma capacidade multi-plataforma. C (tabela
transporte) pode requerer a conversão dos arquivos, se a plataforma de destino é um endian
diferente do
fonte.
E é incorrecta. Isso é incorreto porque os conjuntos de backup são plataformas todo não
portáteis,
embora cópias de imagem pode ser.
2. A , B , e C . Estas condições poderiam causar problemas ao usar o diretório, mas não
quando criá-la.
D , E , e F são incorrectas. D está incorreta porque a existência do diretório não é
verificadas no momento da criação. E está incorreta porque embora o modo de rede não
precisa
diretóriodepara
um os arquivos de despejo, ele vai precisar de um diretório para os arquivos de
log. F estáaincorreta
confunde questão de
porque
permissões Oracle em diretórios com permissões do sistema
operacional
caminhos físicos.
no
3. D . Não é possível importar um arquivo do cliente; o despejo deve existir no servidor.
A , B , e C são incorrectas. A está incorreta porque um objeto de diretório pode apontar
apenas
diretório nopara um B está incorreta porque um controlfile é usado pelo SQL * Loader, e
servidor.
não por
Data Pump. C está incorreta porque endianness é relevante para espaços de tabela
transportáveis,
importação não
de dados.

4. D . Não há “boas” file-as linhas aceitáveis são inseridos na mesa e não são
registrado pelo SQL * Loader.
A , B , C , e E são incorrectas. Estes são os tipos de arquivo que o SQL * Loader pode
5. gerar.
Um . SQL * Loader é um processo cliente-servidor; os arquivos de entrada deve ser
local para o usuário
processo.
B , C , e D estão incorrectos. B está incorreta porque os arquivos de entrada devem estar
acessível
no PC,
relevante para
para oa localização
processo dodosladoarquivos.
do cliente. C e D são incorrecta porque a carga não é
directa
6. B . Modo expresso depende de muitos padrões, um dos quais é que o nome do arquivo
o nome
de dados
da tabela
devecom
ser o sufixo .DAT.
A , C , e D estão incorrectos. A está incorreta porque o modo expresso não usa um
controlfile. C é incorrecta porque modo expresso não é possível criar uma tabela; ela só
podetabela
uma anexarexistente. D está incorreta porque o modo expresso não solicita.
7. A e C . Qualquer coisa relacionada para SELECT, incluindo a criação de um ponto de
contra
vista,
umapode
tabela
serexterna.
executado
B e D são incorrectas. DML é impossível contra uma tabela externa, como é a
8. indexação.
C . SQL * Loader pode usar um controlfile; Data Pump não.
A , B , e D são incorrectas. Data Pump exportação gera um arquivo de despejo, uma
gerarimportação
um arquivopode
de SQL, e ambos exportação e importação gerar arquivos de log.
9. B e C . Os agrupamentos são estruturas complexas que não podem ser carregados
determina
directamente.
se uma carga
Data Pump
direta é possível automaticamente.
A e D são incorrectas. Não há nenhuma palavra-chave DIRECT porque a escolha é
Direct
automática.
é mais rápido porque ele ignora o SGA.
10. B . Esta é a sequência correcta.
A , C , e D estão incorrectos. Todas essas sequências estão errados. A única aceitável
alternativa teria sido para converter o endianness no passo a antes de copiar para a etapa b.
11. B e F . Você pode executar uma exportação de qualquer tipo (esquema, tabela, cheio
transportável)
do banco de dados versão 11 g e importá-lo para um APO. Além disso, você pode usar o
Data Pump / importação com a opção transportável completa para copiar um PDB dentro do
exportação
mesmo
A , CDB.
C , D , e E são incorrectas. A está incorreta porque você não precisa atualizar a
banco de dados antes de usar o Data Pump exportação / importação, desde que a versão do
Oracle
11 g ouDatabase é C está incorreta porque você sempre pode importar um não-CDB em
mais recente.
um novo
desde quePDB
vocêcomo
use o nome do serviço ao conectar ao APO. D está incorreta porque você
não pode usar dados de importação da bomba no recipiente raiz de um CDB. E é incorrecta
porquepode
CDBs não- ser importado para outro não-CDB ou um APO, desde que o banco de dados de
fonte
versão é de 11 g ou mais recente.
CAPÍTULO 18

A AWR e do Sistema de Alerta

Objetivos do exame
• 062.10.1 Gerenciar o Automatic Workload Repository (AWR)
• 062.10.2 usar o monitor de diagnóstico Automatic Database (ADDM)
• 062.10.3 Descrever e usar o Quadro Consultivo
• 062.10.4 Set limiares de alerta
• 062.10.5 Tarefas Use Automated
A 12 c banco de dados é amplamente auto-gestão. As tarefas de manutenção executado
automaticamente
informações de diagnóstico
(a não ser desativado),
são coletadaseem intervalos regulares. Com versões anteriores,
monitorando
para pegar desenvolver
o banco deproblemas
dados antes que eles se tornem críticos levou muito tempo. identificar e
diagnosticar problemas de desempenho não foi apenas demorado, mas também exigiu muita
habilidade.
Sistema de alerta
O uso edoos assessores de diagnóstico, instalado como padrão em todos os 12 c banco de
dados, libera ode banco de dados (DBA) a partir da necessidade de dedicar uma grande quantidade
administrador
de esforço para este trabalho.
Gerenciar o Automatic Workload Repository
A Oracle recolhe uma vasta quantidade de informação estatística em relação ao desempenho e
atividade. este
informação é acumulada na memória e periodicamente gravados em disco, especificamente, para as
tabelas queo Automatic Workload Repository (AWR). A AWR existe como um conjunto de tabelas e
compõem
objetos no espaço de tabela SYSAUX. A AWR está relacionado com o dicionário de dados, mas ao
outros
contrário dos
dicionário, a AWR
dadosnão é essencial para o banco de dados para funcionar (embora possa ser
necessário
para parabem).
funcionar ele Os dados são gravados no AWR, armazenados por um tempo, e eventualmente
substituído com
informações mais recentes.

Gathering HORA Estatísticas


O nível de estatísticas recolhidas é controlado pelo STATISTICS_LEVEL parâmetro de instância.
pode ser definido como BASIC, TYPICAL (que é o padrão) ou ALL. O nível típico irá forçar o
este
coleção de todas as estatísticas necessárias para o ajuste normal, sem recolher qualquer que
desempenho de impacto. O nível básico irá desativar praticamente todas as estatísticas, todo o
adversamente
desempenho edeoajuste
conselheiros gerado pelo servidor do sistema-sem benefício de desempenho de tempo de
execução
O nível ALL
apreciável
irá recolher
alerta.
estatísticas extremamente detalhados sobre a execução da instrução SQL;
estas podem
ocasionalmente ser necessário se você está fazendo avançado instrução SQL tuning, mas eles podem
causar de
queda umadesempenho ligeiro enquanto está a ser recolhido.

EXAME TIP Ajuste STATISTICS_LEVEL = BASIC irá desativar todos os conselheiros e o


servidor-
Sistema de alerta gerado.

Estatísticas são acumulados na memória em estruturas de dados dentro System Global Area
Isso(SGA).
não causa nenhum impacto no desempenho porque as estatísticas refletem apenas o que o
exemplo
de qualquer
estáforma.
fazendo
Periodicamente (por padrão, uma vez por hora) são liberadas para o disco,
especificamente,
Isto é conhecido comoaum
para AWR.
instantâneo AWR . O rubor no disco é feito pelo Monitor de
(MMON) Processo de fundo. Este uso de um processo de fundo é a chave para a eficiência do
Gerenciamento
processo de coleta de estatísticas. Em versões anteriores do banco de dados, acessando o
desempenhosódefoiajuste
estatísticas possível através da execução consultas em vários pontos de vista-o desempenho
dinâmico V $
pontos de vista. Preenchendo esses pontos de vista é um processo caro. O DBA deve iniciar uma
sessão de
banco contra
dadoso e, em seguida, emitir uma consulta. Executar esta consulta força Oracle para extrair
dados do SGA e

apresentá-lo à sessão em uma exibição. Esta abordagem ainda é possível-todos os antigos pontos de
vista, eestão
ainda muitos mais,
disponíveis, mas a abordagem AWR é muito mais eficiente.
DICA Nenhuma ferramenta de terceiros pode nunca ter o acesso direto à memória para a instância
que instância
sua MMON tem. é altamente
E se estressado, você deve pensar cuidadosamente antes de usar quaisquer
outros do
aqueles que os produtos
fornecidos de tuning
pela Oracle.

MMON tem acesso direto às estruturas de memória que compõem o SGA e, portanto, o
estatísticas dentro deles. Ele pode extrair dados do SGA, sem a necessidade de ir através de uma
sessão ouSQL.
executar para A única sobrecarga envolvida é escrever o instantâneo dos dados do AWR. Por
padrão,
isso ocorre apenas uma vez por hora e, portanto, não deve ter um efeito perceptível sobre o tempo de
desempenho.
execução

EXAME TIP estatísticas AWR são salvos como um instantâneo à AWR pelo processo MMON (por
padrão,
a cada 60 minutos). Por padrão, os instantâneos são armazenados por oito dias, antes de ser
substituído.
A AWR é um conjunto de tabelas, de propriedade de SYS e localizados no espaço de tabela
não SYSAUX.
podem ser estas
realocados.
tabelasOracle Corporation suporta acesso às tabelas AWR apenas através dos
interfaces de programação de aplicações (API) fornecida sob a forma de sistema de gestão de base
diversos
de dados pacotes ou através de vários pontos de vista.
(DBMS)
Você pode pensar de um instantâneo AWR como uma cópia do conteúdo de muitos pontos de
vista V $foi
instantâneo notirado.
momento da
No entanto, nunca se esqueça de que o mecanismo para copiar a informação
não é
consultar as visões V $; a informação é extraída diretamente das estruturas de dados que compõem o
instância. O processo que faz com que a cópia é MMON. Além de informações da dinâmica
desempenho (ou V $) vistas, a informação lojas AWR das vistas DBA, povoada do
dicionário de dados. Esta categoria de informações inclui uma história de estatísticas objeto. Sem o
o banco de dados que não têm registro de longo prazo de como os objetos estavam mudando. As
AWR,
estatísticas
com DBMS_STATS
reunidas dar informações atuais, mas também pode ser necessário ter um histórico
imagem do estado dos objetos de banco de dados. A AWR pode proporcionar isso.

Gerenciando o AWR
Instantâneos de dados de estatísticas são mantidos no AWR, por padrão, por oito dias. Este período é
configurável, e é também possível marcar um par de instantâneos como uma linha de base, para ser
mantido indefinidamente.
instantâneos de base não são eliminados automaticamente. Como um guia para o dimensionamento,
se o instantâneo
coleção é deixada em cada hora e o tempo de retenção é deixada em oito dias, então o AWR pode
muito bementre 200 MB e 300 MB de espaço no espaço de tabela SYSAUX. Mas este número é
requerem
variável e vontade, em grande medida, dependem do número de sessões. Ajustando as configurações
altamente
do AWR para
salvar instantâneos com mais freqüência vai fazer o diagnóstico de problemas mais precisos. Se os
instantâneos
várias sãointervalo, você pode perder picos de actividade (e consequentes quedas na
horas de
performance).
coleta de snapshots
Mas com muita freqüência irá aumentar o tamanho da AWR e poderia impacto
desempenho devido ao aumento da carga de trabalho de coletar e guardar a informação.

DICA É importante monitorar o tamanho e crescimento do espaço de tabela SYSAUX eo AWR


isto. O sistema de alerta vai ajudar com a primeira tarefa, e os US $ SYSAUX_OCCUPANTS vista
dentro
V devem
ser utilizados para a segunda.

Ajustar a frequência AWR instantâneo e retenção é feito com a API PL / SQL chamada
Dbms_workload_repository. A Figura 18-1 mostra exemplos de como utilizar este pacote. Primeiro
consulta contra o ponto de vista dba_hist_wr_control mostra os valores actuais para a retenção
um
e frequência. Os valores (que são de tipo de dados INTERVALO) são os valores padrão. Em seguida,
instantâneo
uma chamada para
o procedimento
são MODIFY_SNAPSHOT_SETTINGS
minutos. Finalmente, muda-os
o procedimento create_snapshot a 30
obriga dias e de meia
o instantâneo, hora;
o que as feito
será unidades
Além das coleções regulares. Forçando um instantâneo normalmente seria feito
imediatamente antes e depois de lançar um trabalho de algum tipo de modo que os relatórios podem
ser gerados
em um determinado
com focoperíodo de tempo.

Figura 18-1 Como exibir e ajustar as configurações AWR instantâneo

EXAME DICA Por padrão, snapshots AWR são tomadas a cada hora e salvo por oito dias. A AWR
élocalizado no espaço de tabela SYSAUX e não pode ser transferida para outros espaços de tabela.

Exercício 18-1: Monitorar o Automatic Workload Repository Neste exercício, você irá
determinar
o tamanho da AWR e monitorar o seu crescimento como ele armazena mais instantâneos. Siga esses
passos:
1. Conecte-se ao seu banco de dados com SQL * Plus como usuário SYSTEM.
2. A vista V $ SYSAUX_OCCUPANTS mostra todos os componentes instalados na SYSAUX
tablespace. Saiba quanto espaço o AWR está ocupando.

Observe o tamanho retornado.


3. Tome um instantâneo AWR.

4. Execute novamente a consulta a partir do passo 2 e, em seguida, calcular o aumento em


tamanho
snapshot
provocada
manual.pela administração da
5. Descubra quantos instantâneos existem, bem como o intervalo de datas que eles cobrem.

Use o Automatic Database Diagnostic Monitor


O banco de dados vem pré-configurado com um conjunto de conselheiros. A primeira delas é a
Diagnostic Monitor de banco de dados (ADDM). Estudar relatórios ADDM, que são gerados
automática
sempre que um instantâneo AWR é tomada, geralmente vai ser uma parte regular da rotina do DBA.
automaticamente
o ADDM são de grande valor em si mesmos e irá destacar problemas no banco de dados e sugerir
relatórios
soluções, mas em muitos casos, as recomendações incluirão sugerindo que você executar um ou
outros conselheiros. Estes conselheiros podem dar informações de diagnóstico muito mais preciso e
mais
aconselhamento
o ADDM. de
O ADDM
actividade analisa
durante os dados
o período armazenados
entre em dois snapshots
esses instantâneos e gerar umAWR. Comparando-os,
relatório. podedetectar
O relatório tenta resumir
o
quaisquer questões e desempenho possível fazer recomendações que irá aliviar-los. As questões que
o ADDM pode identificar incluem o seguinte:

• gargalos de CPU
• problemas de contenção, tais como bloqueio de linha
• Stress on the I/O system
• SQL de alta carga

O ADDM é executado automaticamente sempre que um instantâneo AWR é gerado, e vai


actividade
analisarentre esse instantâneo e o instantâneo anterior. Portanto, por padrão, os relatórios são
disponíveis por hora. Também é possível gerar um relatório sobre a demanda cobrindo o tempo entre
qualquer
dois instantâneos. relatórios ADDM pode ser recuperada ou gerada ou usando banco de dados
Express (clique
o link Hub Desempenho na guia Desempenho e, em seguida, selecione a subguia ADDM) ou
executando
roteiro o
addmrpt.sql. Este script reside no / rdbms / diretório ORACLE_HOME administrador. Ele
apresenta tudo
instantâneos disponíveis e instruções para os dois períodos de instantâneos sobre as quais o relatório
deve ser
gerado.

TIP EXAME relatórios ADDM são gerados sob demanda, bem como sempre que um snapshot é
Um relatório requer dois instantâneos.
recolhida.

relatórios ADDM, às vezes, dar conselhos precisos (como para alterar um parâmetro), mas vai
frequentemente
mais identificam declarações particulares e aconselhar executando outro conselheiro
contra eles.
sugerir ADDM
objetos também podepor exemplo, talvez implementar o particionamento. Ele vai
de reestruturação,
sempre dar as suas recomendações, que podem ser instrutiva, mesmo se você decidir não aplicar o
fundamentar
conselhos.

CUIDADO ADDM, muitas vezes, recomendamos o uso de instalações para as quais você pode não
estar licenciados,
como o SQL TuningtaisAdvisor ou de particionamento. Isso pode ser um pouco irritante e em violação
do seu de licença de software.
contrato

Exercício 18-2: Gerar um relatório ADDM Neste exercício, você irá gerar um relatório ADDM.
Siga esses passos:

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Gerar o relatório executando este comando em um prompt SQL:

Quando solicitado, selecione quaisquer dois instantâneos.


3. Estude o relatório. Note que é possível que o prazo não inclui atividade suficiente
para executar qualquer análise-se significativa assim, tente novamente com um período
diferente.
Descrever e usar o Quadro Consultivo
Os conselheiros contar com estatísticas de atividades acumuladas pela instância na memória e
escritascomo
AWR ao instantâneos. Você pode acessar ADDM eo SQL Tuning Advisor através do banco de
dados
(Vá para
Expresso
a guia Desempenho da página inicial do banco de dados). Os outros conselheiros têm
interfaces
são visíveisPLcomo
/ SQLviews
ou de dicionário de dados. Todos os conselheiros são detalhados no Capítulo
19 . Pora enquanto,
seções seguir resumem-los.
o
Os Advisors memória
Os assessores de memória prever o efeito da variação do tamanho das estruturas de memória,
relatando
estima ematermos de tempo de processamento salvo (a piscina comum, Java Pool, e Streams Piscina
Advisors), redução de atividade do disco (o banco de dados Buffer Cache Advisor), ou ambos (o
PGAhá
Não Advisor).
conselheiro para a grande piscina. Há, no entanto, um conselheiro SGA, que apresentará um
relatório
efeito da sobre
variação
o do tamanho de todo o SGA. Se o gerenciamento de memória foi automatizado
através da MEMORY_TARGET e todos os outros parâmetros de memória foram deixados em seus
parâmetro
padrões, umageral da memória dá um único ponto a partir do qual avaliar se alocar mais memória
conselheiro
a instância iria melhorar o desempenho.
para
Os assessores de memória são expostos através destes pontos de vista:

• V $ DB_CACHE_ADVICE conselheiro O DB Cache


• V $ JAVA_POOL_ADVICE conselheiro O Java Piscina
• V $ MEMORY_TARGET_ADVICE conselheiro O Gerenciamento Automático da Memória
• V $ PGA_TARGET_ADVICE conselheiro O PGA
• V $ SGA_TARGET_ADVICE conselheiro A Gestão de Memória Compartilhada
• V $ SHARED_POOL_ADVICE conselheiro do pool compartilhado
• V $ STREAMS_POOL_ADVICE conselheiro Os Streams Piscina

Os Advisors SQL
Há dois assessores SQL: o SQL Access Advisor eo SQL Tuning Advisor. o SQL
Access Advisor vai observar uma carga de trabalho de instruções SQL e fazer recomendações sobre
segmentos de forma que a carga de trabalho será executado mais rapidamente. A carga de trabalho
pode
ou pode
ser ser
umaderivada
carga dea trabalho
partir do hipotético,
SQL realmente executado durante um determinado período de
tempo. o
recomendações pode ser para criar ou eliminar índices e visualizações materializadas e de fazer uso
particionamento segmento. O SQL Tuning Advisor pode analisar as demonstrações individuais, bem
de
como
recomendar alterações de esquema (como o SQL Access Advisor faz). Ele pode recomendar geração
estatísticas adicionais sobre a execução da instrução que ajudarão o otimizador na escolha do melhor
plano de execução e recomendar reescrever a declaração de eliminar algumas ineficiências inerentes
algumas estruturas SQL.
Você pode acessar os consultores SQL através das APIs PL / SQL chamados DBMS_ADVISOR
DBMS_SQLTUNE.
e O SQL Tuning Advisor também é acessível através de banco de dados Express.

O Undo Advisor automático


Como discutido no Capítulo 6 , o Anular Advisor (exposta através da visão V $ UNDOSTAT) vai
observar a taxa de geração de dados undo ea duração das consultas que está sendo executado, e ele
irá recomendar
tamanho mínimoumpara a tabela de undo, o que irá garantir que as consultas não falhar com um
“instantâneo
velho erro”e que
muito
Data Manipulation Language (DML) não falham por causa da insuficiente
desfazer espaço.

O tempo médio para recuperar Advisor

O mecanismo de recuperação após uma falha de exemplo é detalhado no Capítulo 22 . Em resumo,


se o
instância termina de forma desordenada (como um reboot corte de energia ou servidor, enquanto o
banco
está aberto
de dados
ou apenas um ABORT SHUTDOWN), em seguida, na próxima inicialização é necessário
paraandamento
em restabelecer todos
que não os trabalhos
tinha sido escrito para os arquivos de dados no momento do acidente. Isso
vai acontecer
automaticamente, mas até que seja feito, os usuários não podem fazer logon. O tempo médio de
recuperação
(Exposta na V
(MTTR)
$ view Advisor
INSTANCE_RECOVERY) estima quanto tempo esse período de tempo de
inatividade para
recuperação de falhas será, dada a carga de trabalho atual.

A Data Recovery Advisor


Se o banco de dados foi danificado de alguma maneira (como arquivos apagados ou blocos de dados
corrompidos),
levar algum tempo
podepara identificar o problema. Em seguida, haverá frequentemente várias maneiras
de recuperar
situação. Por aexemplo,
partir do se uma série de arquivos de dados foram danificados por corrupções
disco, seránuma
incluídas necessário descobrir quais arquivos, bem como que bloqueia a exigir a recuperação. em
decisão
seguida,deve
um ser tomada quanto à possibilidade de restaurar os arquivos inteiros ou apenas os blocos
danificados.
banco de dados
Se oé protegido por um standby físico, mudar para o que também seria uma
possibilidade.
Após uma falha, qualquer DBA (não importa o quão experiente) vai precisar de tempo para
e extensão
determinar
do problema
a naturezae, em seguida, precisam de mais tempo para decidir sobre o curso de ação
que
o dano
irá com
reparar
o mínimo de interrupção para trabalhar. A Data Recovery Advisor segue um especialista
sistema para aconselhar o DBA sobre este assunto. O sistema especialista é essencialmente o que o
DBA seguiria
de qualquer maneira, mas o conselheiro pode fazê-lo muito mais rápido. Ele é acessado com o
pacote DBMS_SQLDIAG,
invocada seja através de SQL * Plus ou a partir da ferramenta Recovery Manager RMAN.

O Segment Advisor
Segmentos crescer automaticamente. Como são inseridos em segmentos de mesa e chaves de índice
linhas
em segmentos
são inseridas
de índice, os segmentos encher-e, em seguida, Oracle irá alocar mais extensões como
necessário. não
segmentos Masencolhem como automaticamente dados é removida ou modificada com DELETE e
comandos; isso só acontece quando o segmento é deliberadamente reorganizada. O Segment Advisor
UPDATE
observa tabelas e índices, tanto seu estado atual e seus padrões históricos de uso e
recomenda reorganização apropriada quando necessário. Invocar o Segment Advisor com o
pacote DBMS_ADVISOR.

O Advisor SQL Repair


Ocasionalmente, uma instrução SQL pode falhar devido a um erro interno Oracle. Este será relatado
com a mensagem de erro ORA-600. Se a condição de erro (que é um nome educado para um bug) é
encontrou apenas por um plano de execução particular, segue-se que o uso de um plano de execução
diferente
evitar poderia O Advisor SQL Repair pode investigar esta e gerar um patch para a declaração
o fracasso.
que irá forçar o otimizador a escolher um plano de seguro, em vez de um plano que atinge o
problema.
Definir Limites de alerta
O sistema de alerta é por isso que o banco de dados Oracle pode agora ser descrito como auto-
gestão. em mais
lançamentos, o DBA
cedo teve que gastar uma grande quantidade de esforço no trabalho monótono que
era essencial,
sempre mas não Eles também tiveram que inventar métodos de pegar condições
que interessante.
excepcionais como eles
ocorreu. O sistema de alerta pode automatizar uma grande quantidade de trabalho que anteriormente
caiu no DBA
domínio.

Alerta Monitoramento de condições e Notificações


Um exemplo típico do trabalho monótono é o gerenciamento de espaço, o que, em sua forma mais
básica, envolve de espaços de tabela para ver quando eles estão prestes a encher-se. Isso poderia ser
monitoramento
feito com scripts, tais como
este:

Mas esses scripts são propensos ao erro, ou pelo menos, má interpretação. Por exemplo, a vista
DBA_FREE_SPACE tem uma linha para cada bit de espaço livre em cada tabela. Mas se um espaço
de tabelacheios, não haveria filas em tudo. É por isso que você precisa OUTER JOIN, sem a qual o
estavam
tablespace pequenas não seria listada, mesmo que ele está em um estado crítico. Então, considere o
de permitir AUTOEXTEND sobre os arquivos de dados. Além disso, uma tabela de undo será
efeito
geralmentemas
completo, 100isso
por não
cento
é um problema, porque uma grande parte dos dados de desfazer ficará
inativa e pode
sobrescrito. E oser
que dizer de tabela temporários? A consulta teria que estar em uma união com
outra consulta contra DBA_TEMP_FILES. Esta segunda consulta teria de descobrir se o
espaço ocupado por segmentos temporários está em uso ou simplesmente esperando para ser usado.
Muitos DBAs ter escrito suites de código SQL para informar sobre o uso do espaço e aumentar
condições
avisos de
antes
erro ocorrer. Isso é bom, mas os scripts devem ser escritos, eles têm que ser executado
e eles têm de ser actualizados para ter em conta a evolução da tecnologia. Muitas empresas têm
regularmente,
escrito
e ferramentas para fazer a mesma coisa comercializado. O sistema de alerta substitui uma grande
quantidadeEle
trabalhos. desta
irá monotonia
acompanhar muitas condições que podem causar problemas e vai enviar
notificações
variedade depor
métodos.
um No que diz respeito à gestão do espaço, é por padrão configurado para emitir
um aviso
alertar quando uma tabela atinge 85 por cento completo e um alerta crítico quando um espaço de
tabela
completo,é decom
97 por cento
tendo em conta autoextension ea natureza do conteúdo.
Alertas vem em duas formas. Stateful alertas são baseados em condições que persistem e podem
ser corrigidos.
Exemplos incluem o uso de tabela espaço, o número de sessões de suspensão, e o tempo médio
leva para completar a execução da instrução SQL. Apátridas alertas são baseados em eventos; eles
acontecem
foi. A consulta
e sãofalha com “instantâneo muito antigo” e duas transações deadlocking são exemplos.
Para configurar o sistema de alerta, você definir limites. Os limiares são armazenados no AWR.
processo
Entãode o fundo MMON irá monitorar o banco de dados ea instância, em tempo quase real, e
comparar o estado atual com os limiares. Se um limite é ultrapassado, que irá aumentar o alerta. o
mecanismo pelo qual um alerta é levantada é simplesmente colocar uma entrada na fila de alerta.
Uma
de mensagens
fila é umaque mesa
outros processos podem ler. O que acontece com a mensagem de alerta ao lado é
um assunto para
configuração adicional. O comportamento padrão é que o Enterprise Manager Cloud Control vai (se
um instalado)
foi agente desenfileirar a mensagem e exibi-lo na página inicial do banco de dados, mas Empresa
Manager pode ser configurado para enviar e-mails ou mensagens SMS quando se descobre que um
alerta foi
levantadas.
Você pode ver os alertas consultando os DBA_OUTSTANDING_ALERTS vista, e é
possível escrever um manipulador de alerta em PL / SQL que irá retirar da fila as mensagens e tomar
qualquer ação
desejado.

EXAME TIP Alertas são gerados pelo processo MMON, não pelo Enterprise Manager.
Manager lê alertas, como se outros manipuladores de eventos escritos por você ou por terceiros.
Empreendimento

definindo limites
Você pode definir mais de 200 métricas para limiares. Eles são documentados na visão
V $ METRICNAME, que dá o nome da métrica, as unidades em que é medido, ea ID
número pelo qual é identificado.
Há uma API (o pacote DBMS_SERVER_ALERT) para definição de limites. Aqui está um
exemplo:

Tomando esta / SQL linha chamada execução PL por linha, aqui é o que acontece:

1. O procedimento SET_THRESHOLD irá criar ou atualizar um limiar de alerta.


2. Em PL / SQL que você pode passar tanto literais ou resultado retornado por uma função
usando o => parâmetros nomeados (argumentos). Aqui, o conjunto estar métrica é a taxa de
operador
geração, medido em bytes por segundo. Isso é especificado, passando o valor retornado por
redo
a função dbms_server_alert.redo_generated_sec ao parâmetro metrics_id usando os =>
operador.
3. O operador de comparação para o nível de aviso, o qual é “maior ou igual a” é passado
ao parâmetro warning_operator.
4. O valor para um alerta de aviso, que é de 1 MB por segundo, é passado para o
warning_value

parâmetro.
5. O operador de comparação para o nível crítico, que é “maior ou igual a” é passado
ao parâmetro critical_operator.
6. O valor para um alerta crítico, que é 2MB por segundo, é passado para o critical_value
parâmetro.
7. O período de observação, em minutos, é passado para o parâmetro observation_period.
8. O número de ocorrências consecutivas antes de o alerta é levantada. O literal 5 é passado
para
o parâmetro consecutive_occurrences.
9. O exemplo para o qual a indicação está a ser configurado, ORCLZ, é passado para o
nome_instância
parâmetro.
10. O tipo de objecto ao qual o alerta se refere. O resultado da função
dbms_server_alert.object_type_system é passado para o parâmetro object_type.
11. O nome do objecto para o qual o alerta se refere. Neste caso, um NULL é fornecido uma vez
que um
nome do objeto não é significativo para uma métrica que mede a taxa de geração de redo.

Note que nem todos os argumentos são relevantes para todos os alertas.
O exemplo anterior configura um alerta para a taxa de geração de redo; um aviso será
levantada, se este exceder 1MB por segundo, e um aviso crítica será aumentada se ele passa sobre
por 2MB O período de observação é definido como um minuto e ocorrências consecutivas a cinco;
segundo.
Isso
se significade
a geração que
refazer acontece para bater um alto nível apenas um par de vezes, não será relatado,
maspermanece
ele se a um nível elevado constante (durante cinco minutos consecutivos), ele será relatado.
porque este
métrica é aquele que pode variar entre instâncias de Clusters ambiente RAC (Real Application),
o nome da instância deve ser especificado, mas o nome do objeto não é relevante. Se o alerta fosse
por
uso de tabela, o nome da ocorrência não seria especificado, o tipo de objecto seria de tabela, e
o nome do objeto seria definida como o nome do espaço de tabela.
Quando alertas com estado são levantadas, eles são visíveis como linhas nas
Visão.
DBA_OUTSTANDING_ALERTS
Eles vão permanecer visível até que sejam apuradas. Eles podem ser apagados porque o DBA
resolveu o problema, ou, em alguns casos, o problema vai desaparecer no curso natural dos
tem
acontecimentos.
exemplo, um alerta
Para
tablespace-uso seria normalmente requerem ação DBA (como a adição de outro
arquivo de dados), ao passo que um alerta relacionada com a actividade, tal como a taxa de geração
de refazer, pode limpar
automaticamente quando a actividade diminui. Quando um alerta é limpo, ele é removido do
DBA_OUTSTANDING_ALERTS visualizar e escrita para a exibição DBA_ALERT_HISTORY.
alertas de ir direto para o ponto de vista histórico.
stateless
Limiares são configurados por padrão para o uso de tabelas e sessões de bloqueio. Um uso do
aviso
espaço
será levantada quando um espaço de tabela é de 85 por cento cheio e uma advertência crítica
quando
por centoé 97
completo. Os valores de aviso e críticos para sessões bloqueados são 2 e 4.

Exercício 18-3: Configurar Alertas Neste exercício, você vai ativar um alerta para a taxa de
cometer e a sua utilização. Siga esses passos:
demonstrar

1. Ligue para o seu banco de dados com o Database Control como SYSTEM usuário.
2. Crie um pequeno espaço de tabela, como segue:

Dado que o arquivo de dados (por padrão) não autoextend e que cada ponto é um tamanho
fixo,
É impossível para este espaço de tabela para conter mais de oito extensões.
3. Defina um alerta a utilização do espaço que irá emitir um aviso quando a tabela está meio
cheio
aviso
e uma
crítico quando três quartos cheio. Confirmar que o limite foi definido.
4. Criar uma tabela e preencher o espaço de tabela.

5. Encha o espaço de tabela alocando extensões repetidamente até que você receber o erro
“ORA-01653:
incapaz de estender SYSTEM.BIG tabela 16 em SMALL tabela.”

6. consultar o DBA_OUTSTANDING_ALERTS visualizar. Observe que pode levar até 10


minutos
o alerta
para
a ser levantada. Isso ocorre porque o momento do alerta gerenciamento de espaço é
programado internamente e não pode ser alterado.

7. Resolver o problema adicionando mais espaço para o espaço de tabela.

8. Verifique se o alerta é limpo, consultando os DBA_OUTSTANDING_ALERTS e


visualizações DBA_ALERT_HISTORY. Mais uma vez, pode demorar até 10 minutos para
que isso aconteça.
Utilize Tarefas Automatizadas
O sistema Autotask é um mecanismo através do qual certos trabalhos de manutenção executa
automaticamente.
empregos que a Oracle
Essesrecomenda
são deve ser executado regularmente em todos os bancos de dados.

os Autotasks
Há três autotasks:

• estatísticas Gathering otimizador


• Executar o SQL Tuning Advisor
• Executar o Segment Advisor

estatísticas do otimizador são necessários se o otimizador é gerar planos eficientes para a


execuçãoEssas
afirmações. de SQL
estatísticas incluem informações como o quão grande mesas são eo número de
Os valores nas colunas. Se estas estatísticas estão ausentes ou imprecisas, código irá certamente
distintos
correr,
o desempenho
mas pode cair porque os planos de execução não será apropriado ao estado dos dados.
Por exemplo, usando um índice para recuperar linhas em vez de digitalizar uma tabela inteira pode
aoumelhor
não sermaneira de executar uma consulta, dependendo do tamanho da mesa e o predicado;
estatísticas vai
otimizador de tomar
deixaraomelhor decisão. Estatísticas como estas não são estáticos. Dado que o pedido
é utilizado,
eles vão se tornar desatualizado e deve ser atualizado. O Autotask que reúne estatísticas vai fazer
Por padrão, todas as estatísticas frescos são disponibilizados para uso imediatamente.
isso.
O Autotask SQL Tuning Advisor identifica SQLs de alta carga que foram executados, com base
escrito
em para
informações
o AWR por instantâneos, e tenta ajustá-los. Os resultados do ajuste são armazenados em
um
perfil , que é obter informações adicionais sobre a melhor forma de executar a instrução que pode ser
usado peloda próxima vez que a instrução é executada. Por padrão, os perfis são gerados, mas não
Optimizer
realmente colocado em uso. Se esse padrão não é alterado, o DBA deve verificar se há quaisquer
são
perfis
tem sido
quegerado e decidir se a implementá-las. Para ver os perfis, consultar o
vista DBA_SQL_PROFILES.
O Segment Advisor identifica segmentos de tabelas e índices que contêm uma grande quantidade
de não
espaço, queutilizada
pode ser libertado a partir do segmento e devolvido para a tabela através da
reorganização
segmento. As suas
do recomendações não podem ser implementadas automaticamente.
Interpretar e implementar o resultado dos assessores é coberto em capítulos posteriores sobre o
banco
ajuste
de dados
da e SQL.
Controlando
Um pré-requisitoaspara
Autotasks
a execução dos autotasks é que o parâmetro STATISTICS_LEVEL deve ser
típica ou como
definido ALL. Os autotasks são lançadas por um processo de fundo, ou seja, a ABP0
processo. As tarefas, se habilitado, executado dentro de janelas definidas. O timing das janelas é
abrir adurante a semana e permanecerá aberta durante quatro horas e abrir às 06:00 em dias de
22:00
semana
abrir durante
e permanecer
20 horas. Estas janelas são geridas pelo Scheduler, conforme descrito no Capítulo 21 .
intenção é que os autotasks deve executar nos momentos em que o banco de dados é menos provável
o
de estar
Para em uso
limitar pormais
ainda usuários.
o impacto sobre os usuários, os recursos utilizados pelos autotasks são
restritas pela
Manager (detalhado
Resource
no Capítulo 20 ) de tal forma que se o sistema está estressado, eles vão ocupar
maiscento
por de 25da capacidade da CPU.

DICA As janelas padrão para os autotasks supor que seus usuários são americanos e não pode ser
apropriada em um ambiente multinacional. Só porque é noite no fuso horário do banco de dados faz
não significa que é noite em outro lugar. dias Além disso, sábado e domingo estão trabalhando em
partes do mundo.
alguns

A visão DBA_AUTOTASK_CLIENT mostrará se as tarefas estão habilitados, eo


DBMS_AUTO_TASK_ADMIN pacote tem procedimentos para activar e desactivar-los, como
mostrado
Figura 18-2
na.

Figura 18-2 Controlando as autotasks

A primeira consulta na figura mostra que todos os três autotasks estão habilitados. Em seguida,
run os
do resultados
SQL Tuningda Advisor
última são mostrados. O consultor identificou oito instruções SQL como sendo
digno de atenção, mas decidiu não fazer quaisquer recomendações. Finalmente, a tarefa é
desabilitada.

CUIDADO Muitos bancos de dados está executando a Autotask SQL Sintonia todas as noites para
nenhumninguém
porque propósitonunca olha para os resultados.
Broca
GerenciarTwo-Minute
o Automatic Workload Repository
• Por padrão, os instantâneos são tomadas a cada hora e armazenadas por oito dias.
• instantâneos adicionais podem ser tomadas sob demanda.
• MMON é responsável por criar snapshots e lançamento do ADDM.
• A AWR consiste em tabelas (e objetos relacionados) no esquema SYS, na SYSAUX

tablespace.
• O parâmetro STATISTICS_LEVEL deve ser definido como ALL TÍPICA ou; caso contrário,
o snapshots não será feita.

Use o Automatic Database Diagnostic Monitor


• O ADDM é executado automaticamente sempre que um snapshot é tomada e manualmente
sob demanda.
• relatórios ADDM irá dar conselhos diretamente e pode também recomendar a execução de
outros assessores.
• O ADDM requer dois instantâneos, gerando relatórios sobre a actividade entre eles.

Descrever e usar o Quadro Consultivo


• Um conjunto de assessores é fornecido para fins de ajuste.
• Os conselheiros depender de estatísticas armazenadas como snapshots do AWR.
• O acesso a alguns assessores é através de Enterprise Manager, e todos são acessíveis através
deepontos de /vista
APIs PL SQL. Por padrão, o SQL Tuning Advisor eo Segment Advisor será executado
automaticamente nas janelas de manutenção.

Definir Limites de alerta


• alertas Stateful deve ser configurado com limites.
• Se um alerta stateful é levantada, ele permanecerá até que a situação é apagada; alertas
apátridas sãoe não precisam ser apuradas.
relatados
• Limiares são armazenados no AWR.
• É o processo de fundo MMON que gera um alerta.
• Definir STATISTICS_LEVEL para BASIC irá desativar alertas do servidor.

Utilize Tarefas Automatizadas


• O quadro Autotask automatiza a execução de trabalhos de manutenção críticos.
• Os três autotasks estão se reunindo estatísticas do otimizador, executando o SQL Tuning
Advisor,
executare o Segment Advisor.
• Por padrão, novas estatísticas são publicadas, mas as recomendações das tarefas conselheiro
não são
implementadas.
• O funcionamento dos autotasks é controlada pelo Scheduler e o Gerenciador de recursos.

Auto teste
1 . A AWR está localizado no espaço de tabela SYSAUX. Se você suspeitar que ele está
crescendo
tamanhoa que
tal ele vai encher o espaço de tabela SYSAUX, quais ações você pode tomar para
reduzir o
probabilidade de isso acontecer? (Escolha todas as respostas corretas.)

A. Reloque AWR para uma tabela criada especificamente para guardá-lo.


B. Redução do tempo entre instantâneos de modo a que menos de dados vai ser gerado por
cada um.
C. Aumentar o tempo entre instantâneos de modo que menos instantâneos serão gerados.
D. Ajuste o agendamento das tarefas de manutenção automática para que eles vão correr
freqüentemente.
menos
2 . Por padrão, os instantâneos são removidos da AWR em uma base regular, fazendo
comparações
actividade de
durante um longo período de tempo (como contraste processamento de fim de
anoano
do deste
passado)
ano comimpossível. O que você deve fazer para tornar isso possível? (Escolha a
melhor
A. Salveresposta.)
os instantâneos de fim de ano como uma linha de base.
B. Ajuste o período instantâneo de retenção para todo o período: um pouco mais de um ano.
C. Definir os arquivos de dados que compõem o espaço de tabela SYSAUX para
autoextend
snapshotspara
nãoque
será purgado.
D. Disable purga de instantâneos, definindo STATISTICS_LEVEL a ALL.
3 . Quando é que o ADDM correr? (Escolha a melhor resposta.)
A. Sempre que um alerta é gerado pelo sistema de alerta servidor
B. Durante as janelas de manutenção que são executados os autotasks
C. Após a recolha de um instantâneo AWR
D. Somente quando explicitamente solicitado
4 . No que diz respeito à coleta de informações de monitoramento, colocar essas etapas na
ordem correta:acumula no SGA.
A. Dados
B. MMON gera um relatório ADDM.
C. MMON writes data to the AWR.
D. Os relatórios são expurgados.
E. Os instantâneos são eliminados.
5 . Que conselheiros são geridos pelo sistema Autotask nas janelas de manutenção? (Escolha
tudorespostas corretas.)
A. O ADDM
B. Os assessores de memória
C. O Segment Advisor
D. O SQL Access Advisor
E. O SQL Tuning Advisor
F. O Undo Advisor
6 . Sob quais circunstâncias os conselheiros não estar disponível? (Escolha a melhor resposta.)
A. Se o Autotask otimizador de elaboração de estatísticas foi desactivada

B. Se o parâmetro STATISTICS_LEVEL está definido como BASIC


C. Se os snapshots AWR foram purgados
D. Se o Enterprise Manager não foi configurado
7 . Qual processo levanta alertas? (Escolha a melhor resposta.)
A. MMON, o Monitor de Gerenciamento
B. Enterprise Manager (banco de dados Express ou Cloud Control)
C. O processo do servidor que detecta o problema
D. SMON, o Monitor do Sistema
8 . Os usuários finais estão reclamando que eles recebem “muito velhos instantâneo”
mensagens
consultasdelongas.
erro quando
Você olha
executando
para a vista DBA_OUTSTANDING_ALERTS e não ver
qualquer.
pode Por quê
ser isso? (Escolha a melhor resposta.)
A. O parâmetro STATISTICS_LEVEL está definido como BASIC.
B. Os instantâneos para os períodos em que os erros ocorridos foram purgados.
C. Nenhum alerta foi configurado para “instantâneo muito antigo.”
D. “Snapshot muito velho” é relatada em DBA_ALERT_HISTORY.
9 . Como você pode melhor automatizar a coleta de estatísticas do otimizador? (Escolha a
melhor
A. Oresposta.)
processo de MMON irá recolher-los se STATISTICS_LEVEL está definido para
TÍPICA
TODOS.
ou para
B. Um trabalho de manutenção automática irá recolher-los se STATISTICS_LEVEL está
definido
TÍPICOparaou ALL.
C. Enterprise Manager Cloud Control irá recolher-los se o agente está em execução.
D. agendar um trabalho para executar o
DBMS_STATS.GATHER_DATABASE_STATISTICS
procedimento.
10 . Onde estão as estatísticas de objetos usados pelo otimizador de consulta armazenada?
(Escolha a melhor
A. Com resposta.)
os objetos em si.
B. no dicionário de dados.
C. No AWR.
D. Eles são acumulados na piscina comum do SGA.
11 . Você percebe que as autotasks não parecem estar em execução. Por que isso pode ser?
(Escolha tudo corretas.)
respostas
A. O parâmetro STATISTICS_LEVEL está definido como BASIC.
B. As tarefas foram desabilitadas explicitamente.
C. O Enterprise Manager Agent não está em execução.
D. As tarefas não foram agendadas com o pacote DBMS_SCHEDULER.

E. As tarefas não foram agendadas com o pacote DBMS_JOB.

Respostas de auto-teste
1. C . O aumento do tempo entre snapshots irá reduzir o número armazenado e, portanto, o
espaço necessário.
A , B , e D são incorrectas. A está incorreta porque não é possível mudar o local da
AWR.
B está incorreta porque o espaço necessário para armazenar um instantâneo não está
relacionado este
freqüência; comseria
o instantâneo
realmente ter o efeito oposto ao desejado. D é incorrecta porque
as tarefas de manutenção automática não controlam instantâneos, e é instantâneos que
ocupam quantidades
grandes o do espaço no AWR.
2. Um . Este é exatamente o tipo de situação para a qual linhas de base se destinam.
B , C , e D estão incorrectos. B iria funcionar, mas você precisaria de um espaço de
tabeladeSYSAUX
tamanho o é uma boa solução. C está incorreta porque o espaço disponível não
Júpiter; não
tem
efeito sobre o tempo de retenção. D está incorreta porque STATISTICS_LEVEL controla
a informação é recolhida, não por quanto tempo ele é mantido.
quanto
3. C . O ADDM é executado automaticamente sempre que um instantâneo é gerado, que
snapshot
contrastante
com o instantâneo anterior.
A , B , e D são incorrectas. A está incorreta porque não há integração entre o alerta
sistema e ADDM. B está incorreta porque ADDM não é uma Autotask. D é incorrecta
porque
embora você possa solicitar relatórios ADDM explicitamente, eles também são gerados
4. automaticamente.
A , C , B , E , D é a sequência correcta.
Todas as outras seqüências estão errados.
5. C e E . Estes funcionam em cada janela de manutenção, mas a implementação do
recomendações é até o DBA.
A , B , D , e F são incorrectas. A está incorreta porque MMON invoca o ADDM. B , D ,
e F estão incorretas porque são conselheiros que devem ser invocadas manualmente.
6. B . Os conselheiros são dependentes da STATISTICS_LEVEL.
A , C , e D estão incorrectos. A está incorreta porque as estatísticas do otimizador não
são requeridas
os assessores, pelas
embora possam recomendar coletá-los. C é incorrecta porque a
assessores sempre pode ser invocado usando a informação actualmente disponível na
incorreto
instância. porque
D é embora Enterprise Manager pode invocar os assessores, não há nenhuma
dependência entre eles.
7. Um . MMON levanta alertas por escrever uma mensagem para a fila de alerta.
B , C , e D estão incorrectos. B está incorreta porque Enterprise Manager não levanta
alertas; os divulga. C e D estão incorretas porque nem sessões de servidor nem o SMON
fazem parte do sistema de alerta.
8. D . “Snapshot muito velho” é um alerta sem estado e, portanto, vai diretamente para o
histórico
A ,B,eC desão
alertas.
incorrectas. Um é incorrecta porque a STATISTICS_LEVEL refere-se a
estatísticas, não alerta. B está incorreta porque alertas pendentes não se purgado em qualquer
cronograma, apenas por ser resolvido. C está incorreta porque “instantâneo muito antigo” é
um apátrida
alerta, e os limites podem ser aplicados apenas aos alertas com estado.
9. B. A trabalho será executado nas janelas de manutenção a menos STATISICS_LEVEL
está definido para
BASIC.
A , C , e D estão incorrectos. A e C estão incorretas porque eles especificar o errado
componente para realizar a tarefa. D está incorreta porque embora você pode agendar um
-se, deixando a instalação Autotask fazer isso é a melhor opção.
trabalho
10. B. O otimizador utiliza as mais recentes estatísticas publicadas, que são armazenados
dicionário.
nos dados
A , C , e D estão incorrectos. A está incorreta porque as estatísticas são armazenados de
forma independente
dos segmentos reais. C está incorreta porque os valores históricos armazena AWR, que são
não utilizado para análise em tempo real. D está incorreta porque as lojas PIG o plano de
em si, não a informação usada para gerá-la.
execução
11. A e B. Ajuste STATISTICS_LEVEL = BASIC irá desativar as autotasks (e alguns
outras coisas). As tarefas também pode ser desativado com o
procedimento DBMS_AUTO_TASK_ADMIN.DISABLE.
C , D , e E são incorrectas. C está incorreta porque Enterprise Manager não é obrigado a
autotasks executados. D e E são incorrecta porque, embora o Scheduler e o Recurso
Gerente de Controle de quando e como autotasks será executado, eles não ativar ou
desativá-los.
CAPÍTULO 19

Performance tuning

Objetivos do exame
• 062.11.1 Use Enterprise Manager para monitorar o desempenho
• 062.11.2 gestão do uso de memória automática
• 062.11.3 Use o Memory Advisor para buffers de memória Tamanho
• 062.12.1 Gerenciar Optimizer Estatísticas
• 062.12.2 Use o SQL Tuning Advisor
• 062.12.3 Use o SQL Access Advisor para Tune Workload

ajuste de desempenho é um assunto enorme. O tratamento dado no núcleo Oracle Certified


(OCP) syllabus é pouco mais que uma introdução. Como um administrador de banco de dados
Professional
Oracle
vai estudar
(DBA),
técnicas
vocêde aprimoramento de monitoramento de desempenho e ao longo de toda sua
carreira.
você podeDequerer
fato, “Não se preocupe, eu vou encontrar o problema em breve” inscrito na sua lápide.
Os Tópicos
discutido aqui incluem o uso de Enterprise Manager para monitorar o desempenho, seguido de uma
profundidade
discussão de gerenciamento
em de memória. Classificando para fora gerenciamento de memória vai
resolver muitos
questões, e é umdesempenho
passo pré-requisito para ajustar instruções SQL.

De um modo geral, a abordagem a tomar em direção ajuste de SQL é confiar o otimizador. oracle
Custo Optimizer base (CBO) pode muito bem ser a parte mais complexa de software com o qual
sempre trabalhar. Muitos DBAs passaram anos estudando o funcionamento do CBO. Claramente,
você
conhecimento abrangente do CBO está fora do âmbito da OCP-e o Oracle Certified
um
Master (OCM) -da análise. Mas um aspecto é discutido: a necessidade de abastecer o CBO com o
informação estatística de que necessita para tomar decisões. Estas decisões são sobre a melhor forma
de executar SQL
declarações, e se esta informação estiver ausente ou inexata, o desempenho pode cair drasticamente.
Desenvolvimento de planos de execução com base em estatísticas é conhecido como otimização
baseada
temas emquentes
mais custo e em
é um dos da computação.
ciência
Dois assessores são relevantes para o desempenho do SQL: o SQL Tuning Advisor, que analisa a
dadaforma como aé executado, eo SQL Access Advisor, que olha para as estruturas do segmento
declaração
que a declaração é executado. Ambos estes conselheiros são licenciados como parte do ajuste Pack,
contra
disponível para
instalações Enterprise Edition.

Use Enterprise Manager para monitorar o desempenho


Enterprise Manager tem algumas instalações agradáveis para exibir os resultados de monitoramento
de consultas,
antes mas
de investigá-los, é necessário apreciar o gerenciamento de desempenho é sobre tudo e
como deve ser abordado.
A metodologia de ajuste de desempenho
Sintonia tem apenas um propósito: para reduzir o tempo de resposta para os usuários finais. Ou, dito
de outra
ajuste deve
maneira,
ser orientada
todos para a fixação de um problema de negócios. Por exemplo, nenhum usuário
final tem sempre
telefonou para o help desk para reclamar que “a piscina comum é muito pequeno” ou que “a
estratégia
não é correto.”Eles
de indexação
telefonar com reclamações como“tela de entrada de pedidos não atualiza
rápido o suficiente”ou‘os trabalhos em lote durante a noite não terminou até o almoço.’É fácil para
um DBA desviado para ajuste de aspectos particulares da operação de banco de dados, sem
tornar-se
considerar
eles se importa. Pode muito bem ser que as estruturas de memória ou os índices não são
realmente
ideais para uma
determinada carga de trabalho, mas se os usuários finais não estão enfrentando problemas
quantificáveis
razão para gastar
relacionados
esforço nacom
tentativa
esta, de
nãomelhorá-los.

Depois de aceitar que ajuste deve ser focada nas necessidades do negócio, torna-se evidente que
abordagem
uma top-para baixo é necessária. Comece por analisar e, se necessário re-engenharia, o negócio
processos. A metodologia de ajuste de desempenho deve concentrar-se nas necessidades dos
negócios e deve ser considerada em todas as fases. Considere isso como um desenvolvimento de
desempenho
aplicações
ciclo da vida:
possível

• Análise de negócios definir os processos de negócio da organização, em outras palavras, o


que
precisa fazer.
• Análise de sistemas modelo de processos de negócio como um sistema ideal, usando técnicas
como
modelagem e dados entidade-relação de fluxo de diagramas.
• O projeto do sistema adaptar o sistema ideal para a realidade. Considere o ambiente dentro
doaplicativo
qual o será executado (incluindo o fato de que é um banco de dados Oracle).
• projeto Aplicação Escreva o SQL.
• Implementação Criar o banco de dados e implementar o aplicativo.
• Manutenção do monitor e fazer ajustes durante o uso.

Um erro cometido no início pode ser difícil de corrigir posteriormente. Por exemplo, se a análise
assume
de negócios
que um nome de cliente é único e, portanto, em sistemas de tempo de análise “nome do
cliente”
usado como é uma chave primária, será difícil ajustar a aplicação quando em tempo de
Acontece que vários clientes podem ter o mesmo nome. Da mesma forma, o desempenho deve ser
implementação,
direito ponderada no início. Por exemplo, os analistas de sistemas irão modelar as estruturas de
(Tipicamente) para a terceira forma normal. Mas, embora a terceira forma normal pode ser ideal,
dados
teoricamente,
óptima para o édesempenho.
raramente desnormalização seletiva deve ocorrer na fase de concepção do sistema.
Se isso
não for éfeito, os problemas de gestão mais normalizada de dados vai ser difícil de corrigir mais tarde.
A metodologia de ajuste deve, portanto, ter duas características principais. Primeiro, ele deve ser
de cima
aplicado
para baixo. Em segundo lugar, deve concentrar-se nas necessidades dos negócios.

NOTA Para dizer que ajuste deve ser de cima para baixo é tudo muito bem, mas em muitos casos, o
DBA é
presenteado com um produto acabado e é forçado a ajustá-lo de baixo para cima, reagindo a
problemas
ocorre que como
talvezeles
não foram devidamente considerados anteriormente.

Dados Performance Monitoring


A Oracle recolhe uma grande quantidade de informações sobre a atividade e desempenho. Esta
informaçãoao
acumulada é longo do tempo de vida do exemplo em um conjunto de v $ vistas e periodicamente
descarregado
o para o Repository (AWR) pelo (MMON) Fundo de gerenciamento monitor
Automatic Workload
processo (tal como descrito no Capítulo 18 ). Dois termos devem ser definidos: estatísticas e
métricas
A Oracle .mundo,
No uma estatística é uma figura que não tem sentido por si só, ao passo que uma
métrica é dois
estatísticas correlacionados
ou mais juntos, e muitas vezes correlacionada com o tempo. Por exemplo, o
énúmero de leiturasVamos
uma estatística. de disco
dizer que esta estatística é de 100.000.000. E daí? Isso é inútil. O que você
saber é leituras de disco por segundo, disco leituras por execução de uma instrução, ou leituras de
precisa
discosemana
esta por transação
em comparação com leituras de disco por transação na semana passada. A conversão de
éestatísticas
em grandedeparte feito pela Oracle em nome do DBA, e os resultados são expostos através de um
métricas
pontos de vista.
conjunto de

Execução de uma instrução SQL raramente é um processo contínuo. Normalmente, é um


conjunto
eventos. de stop-start
Por exemplo, uma declaração como SELECT COUNT (*) FROM EMP pode exigir leitura
cada bloco do segmento que contém a tabela de EMP. Esta poderia ser muitos milhares de blocos.
alcançar este objetivo, processo do servidor da sessão deve pedir ao sistema operacional para
Para
fornecer
-mas nãoum
todos
conjunto
eles dedeuma
blocos
vez. A sessão será então pendurar enquanto input / output do sistema
operacional
(I / O) subsistema localiza e fornece os blocos. Em seguida, a sessão pode acordar, processar as
linhas
os blocos,
em e emitir outra solicitação de leitura. Ele vai travar até o próximo conjunto de blocos é
entregue.
razões sãoMuitos
possíveis para uma sessão para pendurar durante a execução de uma instrução. As razões
paraconhecidos
são pendurar como eventos de espera .
Nunca é possível eliminar eventos de espera completamente (eles são parte do SQL normais
ciclo de execução), mas se determinados eventos de espera estão consumindo uma quantidade
excessiva
o evento dedeespera
tempo,deve
a causa da
ser investigada e, se possível, removido (ou pelo menos reduzido). No
da consulta acabado de dar, o mais significativo evento espera provavelmente seria db arquivo
exemplo
éespalhadas
o evento queler ocorre
. este durante uma verificação completa da tabela como grupos de blocos são lidos
para inserção
tampão de cache.
no Outros eventos de espera também pode ocorrer: tampão sem esperar que as
pesquisasnoProcess
tampões cache emServer
quepara
para colocar os blocos, ou tampão de espera ocupada , o que significa que
o bloco
já no cache,
está mas temporariamente inacessível porque outra sessão está trabalhando nisso.
A monitorização do desempenho de dados é acumulado e métricas calculado em várias
são dimensões.
alguns dos pontos
Aqui de vista críticos:

• V $ unchangeIndex Uma visão documentação, listando cada estatística recolhida, agrupando-


osaulas
em
• V $ SYSSTAT O valor atual de cada estatística para toda a instância, acumulado desde
a instância foi iniciada
• V $ sesstat O valor atual de cada estatística para cada sessão iniciada sessão atualmente,
acumulado desde a sessão começou
• V $ MYSTAT As estatísticas para o seu conectado no momento da sessão
• V $ EVENT_NAME Uma visão documentação, listando todos os eventos de espera,
agrupando-os
aulas em
• V $ SYSTEM_EVENT O número de vezes que cada evento espera ocorreu eo tempo total
gasto esperando no evento para toda a instância, acumulado desde a instância foi iniciada
• V $ Session_event O número de vezes que cada evento espera ocorreu para cada momento
sessão iniciada sessão e o tempo total gasto por essa sessão esperando no evento, acumulada
desde que a sessão começou

O banco de dados Expresso Desempenho Páginas


Enterprise Manager banco de dados Express oferece acesso limitado ao monitoramento de
em formação. Na página inicial do banco de dados, as ligações guia Desempenho para o que é
desempenho
chamado
Cubo. Quando
de Desempenho
você está navegando em torno do Hub de Desempenho, o primeiro passo é escolher o
intervalo
Por de isso
padrão, tempo.
é em tempo real, mostrando os dados para a última hora. A visão histórica permite
escolher
tempo atéqualquer
o limite de dados dentro da AWR.
Os seguintes guias da página Hub Desempenho dar acesso a esta informação:

• Resumo Esta guia mostra uma visão geral da atividade do sistema sobre o desempenho
período de tempo seleccionado.
• Atividade Essa guia exibe sessões ativas, mostrando o SQL que estão em execução e
os eventos de espera que estão experimentando.
• Carga de trabalho Esta guia exibe gráficos mostrando o padrão de chamadas do usuário, a
taxa
geração,
de início
eo de
SQLsessão,
sendooexecutado.
redo
• SQL monitorado Todas as declarações que consomem mais de cinco segundos de
processamento
unidade (CPU)central
ou o tempo de I / O são monitorados, com dados sobre I / O, eventos de
espera, ea execução
plano.
• ADDM Este guia dá acesso a ADDM relatórios sobre qualquer período de tempo tem sido
selecionado.

Exercício 19-1: Use Enterprise Manager para monitorar a atividade Neste exercício, você gerar
carga de trabalho e fiscalizar a atividade no Enterprise Manager. Siga esses passos:
um

1. Conecte-se ao banco de dados como usuário SYSTEM com o SQL * Plus.


2. Determinar o Hypertext Transfer Protocol (HTTP) ou HTTP (HTTPS) porta de escuta
e definir, se necessário. Os dois seguintes chamadas de função irá listar a porta (de retornar
zerofoi
não se definido). Pelo menos um, HTTP ou HTTPS, é necessário. Estes dois exemplos
chamadas de procedimento irá criar um ponto de extremidade de escuta e registrá-lo com o
ouvinte. Utilize
protocolo em qualquer
um porta livre que você deseja. Confirmar que a porta está activa por
executar
chama e verificar
novamente o status
a função
do banco de dados ouvinte-que exibe a escuta
endereço e o protocolo (Transmission Control Protocol [TCP] ou TCP segura
[TCPS]).

3. Conecte-se ao banco de dados Express, logon como usuário SYSTEM, com o URL
apropriado.
são dois exemplos:
Aqui
http://127.0.0.1:5500/em
https://127.0.0.0:5501/em
4. Na sessão SQL * Plus, lançar uma consulta de longa duração que deve colocar algum stress
no sistema.

5. No banco de dados Express, observar a atividade construir na home do banco de dados


página. EmPerformance,
ao Hub seguida, navegue
na guia Desempenho, e investigar todas as sub-seções.

Use Gerenciamento automático de memória

uso de memória na instância Oracle cai em duas categorias: Programa Global Áreas (PGAs) que
são particulares para cada sessão e área do sistema global (SGA) que é compartilhado por todos
processos. De liberação 9 i tem sido possível para automatizar a gestão da PGA. A partir de
Oracle
liberar 10 g , tem sido possível para automatizar a gestão do SGA. Liberta 11 g e 12 c pode
gerenciar tanto o PGA e SGA em conjunto, de forma totalmente automática.

CUIDADO Todos uso de memória do Oracle é a memória virtual. Os processos Oracle não têm
formase
saber dea memória para o qual eles estão se conectando está na memória de acesso aleatório (RAM)
foi trocado (ou paginado) para o disco. No entanto, a troca vai paralisar o desempenho e deve ser
ou
evitado.

Gerenciamento de memória PGA


A sessão do usuário contra uma instância do Oracle consiste em um processo de usuário conectado a
umprocesso
O processodedousuário
servidor.
gera instruções SQL e as envia para o processo do servidor para execução.
é a separação cliente-servidor. Associado ao processo de servidor é um bloco de memória
este
nonsharable: o
PGA. Ao executar SQL, o processo do servidor faz uso da PGA a dados específicos da sessão de
incluindo o seguinte:
loja,

• linhas Classificando
• bitmaps Mesclando
• Variáveis
• A pilha de chamadas

Para alguns dados na PGA, o uso de memória não é negociável. Por exemplo, se as necessidades
memória
de sessão
para a sua pilha de chamadas, que a memória deve ser disponibilizado. Para outras
estruturasuso
espaço), (tais
decomo
PGA tipo
é preferível, mas não essencial, porque se necessário, os dados podem ser
gravados
uma estrutura-embora
para armazenamento baseado em disco isso vai impactar negativamente no
desempenho.
Cada instrução SQL usa memória na SGA (especificamente, a área SQL compartilhada no
piscina)
compartilhada
e também irá exigir uma quantidade mínima de memória PGA (por vezes referido como o
área de SQL), sem o qual não pode executar. Tornando mais memória PGA disponível, muitas vezes,
privado
tempo de execução, mas a redução não é linear. Tipicamente, haverá três fases de memória
reduzir
alocação: estes são conhecidos como óptimo, de uma passagem, e de passagem múltipla. A alocação
de memória
permitir que ideal
a instrução
será seja executada puramente na memória, sem necessidade de fazer uso de
armazenamento em disco. A atribuição de memória óptima é suficiente para acomodar todos os
temporários
dados de entrada
quaisquer estruturas
e de dados auxiliares que a declaração deve criar. A alocação de memória de uma
passagem é para execução ideal e, portanto, força uma passagem extra sobre os dados. o Multipass
insuficiente
alocação de memória é ainda menor e significa que várias passagens sobre os dados serão
necessários.
Como exemplo, considere uma operação de classificação. A situação ideal é que todas as linhas
ser lido
de ser
noresolvido
PGA e ordenados
pode lá. A memória necessária para isso é a memória ideal

alocação. Se a alocação de memória ideal não está disponível, em seguida, as linhas devem ser
separadas
lotes. Cadaem lote será lido na memória, classificadas e escrita para o disco. Isso resulta em um
conjunto
lotes ordenados
de no disco, que deve, então, ser lido de volta para a memória e se fundiram em uma
listatodas
de ordenada
as linhas.
final,A memória PGA necessária para isso é a alocação de uma passagem; a operação
de classificação
tinha de se tornartem
vários tipos seguido por uma fusão. Se a alocação de memória de uma passagem
não é
disponível, então a fase de fusão, bem como a fase de sorte vai exigir o uso de armazenamento em
discoétemporário.
Esta uma execução multipass.

EXAME TIP área SQL compartilhada de uma declaração está na piscina comum do SGA; sua área
SQLna
está privada
PGA da sessão.

A situação ideal é que todas as instruções SQL deve ser executado da melhor maneira, mas essa
impossível
meta pode
de alcançar.
ser Nas operações de armazenamento de dados, a alocação de memória ideal
podem serse
gigabytes muitos
as consultas estão abordando grandes mesas. Nesses ambientes, as execuções de uma
passagem
o pode
melhor que ser ser alcançado. execuções Multipass deve ser evitado, se possível. Por exemplo,
pode
classificação 10GB de dados pode exigir mais de 10GB de memória para executar de forma
otimizada
com uma passagem.
mas apenasSó40MB
se menos
parade
executar
40MB está disponível será o tipo tornar multipass, e execução
vezes, então, aumentar substancialmente.
Gerir a memória PGA pode ser automática, e Oracle Corporation recomenda vivamente que
deveria estar. As técnicas de gerenciamento manuais mais velhos são suportados apenas para
ecompatibilidade comaqui.
não será discutido versões
Paraanteriores
implementar o gerenciamento de memória PGA automática, você
definir
para a alocação
uma metade memória total de PGA, resumiu para todas as sessões. A instância Oracle passará
memória fora deste total para sessões sob demanda. Quando uma sessão terminar a execução sua
então
comunicado, a PGA foi usando podem ser alocados para outra sessão. Este sistema baseia-se no fato
adequalquer
que momento, apenas algumas das sessões conectadas terá qualquer memória PGA
negociável.
todos precisarão
Eles de uma certa quantidade de memória PGA para manter o estado da sessão, mesmo
quandoestá
sessão a ocioso, mas isso vai deixar o suficiente, do total de modo que as sessões realmente
declarações podem ter o que precisam. Pelo menos, isso é o que se espera.
funcionando
NOTA Àspodem
requisitos vezes éser
impossível
enormes.de alcançar de
execuções alocações de memória
uma passagem ideal mas
são ruins, porque a memória
pode ser inevitável.
execuções
são desastrosas,
multipass
e se estes estão ocorrendo, você deve conversar com os administradores de sistema
sobre disponíveis
hardware e aos programadores sobre a optimização do seu SQL.

gerenciamento automático de memória PGA é ativado com três parâmetros de instância:

• WORKAREA_SIZE_POLICY
• PGA_AGGREGATE_TARGET
• PGA_AGGREGATE_LIMIT

O parâmetro WORKAREA_SIZE_POLICY será o padrão para AUTO, o que significa que a


atribuir
Oracle
PGApode
para sessões sob demanda, durante a tentativa de manter o total atribuído PGA dentro
do
parâmetro PGA_AGGREGATE_TARGET. Este parâmetro padrão para o maior de 10 MB, ou 20
por cento do tamanho da PIG, e deve ser ajustada para cima, até uma proporção satisfatória de
declarações está executando da melhor maneira, mas não deve ser tão alto que a memória é sobre-
alocadosoperacional
sistema eo tem de paginação de memória virtual em disco. Note-se que esta é apenas uma
uma um
para meta-limite
valor quesuave. Se baixo
é muito definido
para sessões de funcionar (talvez porque o total de memória
requisitos excede a meta), o alvo será quebrado e mais memória será alocada.
inegociável

TIP EXAME O que acontece com sessões se o valor PGA_AGGREGATE_TARGET é excedido?


Nada, isto é, até que o valor PGA_AGGREGATE_LIMIT também é excedido, em que ponto
declarações irá falhar.

O valor PGA_AGGREGATE_LIMIT é um limite rígido no PGA total que pode ser usado. o
padrão é o maior de 2 GB, ou o dobro do PGA_AGGREGATE_TARGET, ou 3MB multiplicado por
o parâmetro de processos. Ele não pode ser definida para menos de 2 GB. Se este limite for
ultrapassado,
terminar chamadas
a Oracle
em curso, a fim de trazer o uso PGA abaixo do limite.

CUIDADO Se o seu PGA_AGGREGATE_TARGET não é suficiente para óptimo e uma passagem


operações, o banco de dados estará realizando mal. Se o PGA_AGGREGATE_LIMIT está sempre
alcançado, a situação é desastrosa. Por uma questão de urgência, sintonizar o SQL para exigir menos
memória,
se possível,
e adicionar mais memória ao sistema.

Gerenciamento de memória SGA


O SGA contém várias estruturas de memória que podem ser dimensionadas de forma independente:

• A piscina comum
• O cache de buffer do banco de dados (conjunto padrão)
• A grande piscina
• A piscina streams

• A piscina Java
• O buffer de log

Como regra geral, a alocação de memória para o grande piscina, a piscina Java, e os fluxos
não piscina
é uma questão
é de negociação, seja a memória é necessário ou não é. Se estas estruturas são
subdimensionado, não haverá erros; se eles são grandes, não haverá melhoria de desempenho.
A
se alocação
é inferiorde memória
a ideal, não para a piscina
haverá comum,
erros, mas o cache deirá
o desempenho buffer do banco
degradar. de dados,é ae o buffer de
A excepção
log é negociável;
piscina comum; se este é cronicamente subdimensionado, ocorrerão erros.

DICA Não jogue memória na Oracle desnecessariamente. Uma piscina comum de grandes
dimensões
ruim para oou
desempenho.
buffer de log
Um pode
buffer
ser cache de grandes dimensões é menos provável de ser um
problema,
de grandesadimensões
menos quequesejao assim
sistema está tendo que trocar.

gerenciamento de memória SGA pode ser automática (e Oracle Corporation informa que deveria
comser),
a excepção do tampão de registo e os invulgares piscinas cache da memória intermédia. O DBA
define
para o PIG,
um tamanho
e a instância
total irá distribuir esse total para as várias estruturas, garantindo assim que
não há erros de componentes do SGA sendo subdimensionadas e que a memória acima deste mínimo
éalocados onde ele vai fazer o melhor. Os componentes serão redimensionadas na demanda, por isso,
se um
componente precisa de mais memória, ele vai ser tirado de um componente que pode poupar-lo. O
tampão
o componente
é de logde um SGA cujo tamanho é fixo na inicialização da instância e que não podem ser
gerenciou.
automaticamente

EXAME TIP O tampão de registo é a única estrutura PIG que não pode ser ajustado
dinamicamente.
portanto, ser gerenciado
Eu não posso
automaticamente.

Os parâmetros para o gerenciamento manual do SGA são as seguintes:

• SHARED_POOL_SIZE
• DB_CACHE_SIZE
• LARGE_POOL_SIZE
• STREAMS_POOL_SIZE
• JAVA_POOL_SIZE

Para habilitar o gerenciamento de memória compartilhada automática (ASMM), deixe tudo isso
definido
definido
parapara
zero)o padrão
e definir(ou
um parâmetro em vez disso: SGA_TARGET. Opcionalmente, definido
como SGA_MAX_SIZE

bem.
Quando ASMM é usado, a instância irá monitorar a demanda por memória nos vários SGA
componentes e passar para fora memória para os componentes, conforme exigido, downsizing
componentes
necessário semanter
para isso é a memória total alocada dentro da meta. Também incluídos dentro do alvo é
alog buffer. Esta é dimensionada com o parâmetro LOG_BUFFER, que é estático; o tampão de
registo
na inicialização
é criado da instância e não pode ser redimensionada posteriormente.

DICA O padrão para LOG_BUFFER é provavelmente correta. Você pode definir o parâmetro a mais
elevada
o padrão,domas
queisso pode causar uma degradação no desempenho. Se você configurá-lo para menos
do que
sua definição,
o padrão,
muitas vezes, ser ignorado.

Se você definir qualquer um dos parâmetros que controlam os componentes gerenciados


dadoautomaticamente PIG,o os
valor irá agir como tamanho mínimo abaixo do qual ASMM nunca reduzir esse componente.
Dependendo da atividade, o tamanho, a qualquer momento pode ser superior ao solicitado pelo
parâmetro.
EXAME TIP O DBA pode definir valores mínimos para as estruturas de memória gerenciados
automaticamente,
valores mas
máximos não.

O parâmetro SGA_TARGET é dinâmico; ele pode ser ajustado para um valor mais baixo, e a
irá redimensionar
instância os componentes variáveis para baixo para atender o novo alvo. Ele também pode
ser levantada,
não é levantadadesde
acima do valor do parâmetro SGA_MAX_SIZE. O parâmetro SGA_MAX_SIZE
Por padrão o valor SGA_TARGET e é um parâmetro estático. Portanto, por padrão, você nunca pode
fazer o SGA total maior do que era no tempo de inicialização de instância.

Gerenciamento automático de memória


O mecanismo de gerenciamento de memória automático (AMM) permite que a instância do Oracle
gerenciar
uso da memória
servidor
como um todo através de um parâmetro: MEMORY_TARGET. Opcionalmente,
pode definir
MEMORY_MAX_TARGET também. Isso leva a gestão PGA automático (habilitado com
PGA_AGGREGATE_TARGET) e do Gerenciamento Automático de Memória Compartilhada
(ASMM)
com SGA_TARGET)
(ativado um passo adiante, permitindo memória transferência do Oracle entre PGAs e
SGA em
exigem.

DICA Para tornar a sua vida mais fácil, definir apenas o MEMORY_TARGET parâmetro e não
defina qualquer um dos

outros parâmetros listados anteriormente. Definir MEMORY_MAX_TARGET para, talvez, 20 por


cento superior
dar-se que de manobra se você precisa ajustar mais tarde.
algum espaço

AMM não é apenas uma ferramenta para tornar a administração de banco de dados fácil. É,
benefícios
muitas de
vezes,
desempenho
fornecer perceptível
também. Muitos bancos de dados irá experimentar diferentes padrões de
atividade nodiferentes, que poderiam se beneficiar de configurações de memória diferentes. Por
momentos
exemplo, não
incomum paraéum banco de dados usado para o processamento de fim de experimentar um
processamento
carga de trabalhodedurante
alta transação
a maior parte do mês e, em seguida, um processamento de carga de
trabalho deé executado.
relatórios consulta pesado
processamento
durante o final
de transações
do mês normalmente não irá ser exigente na memória
PGA, masum
requerem vaigrande cache buffer do banco. processamento de consultas, muitas vezes, requerem
grandes
não alocações
muito PGA, mas
buffer cache.

EXAME TIP O parâmetro MEMORY_TARGET é dinâmico-lo pode ser ajustado sem desligar
para baixo a instância, mas apenas dentro de um limite fixado por outro parâmetro:
MEMORY_MAX_TARGET.
Esta é estático, para que possa ser gerado apenas ajustando com o escopo = cláusula SPFILE e
reiniciar o
instância.

transferir manualmente memória entre SGA e PGA em resposta a mudanças nos padrões de
não atividade
é uma opção prática e muitos sistemas não será capaz de alocar memória suficiente para ambos
simultaneamente para satisfazer suas demandas de pico. Gerenciamento automático de memória é
capaz de transferir
memória entre SGA e PGA conforme necessário para otimizar o desempenho dentro de uma
memória global
limitação. Esta restrição global deve ser determinada pelo DBA e o administrador do sistema
juntos. Há pouco ponto na DBA definir um limite superior que é tão grande que a operação
sistema tem a página SGA e PGA para um dispositivo móvel; o administrador do sistema será capaz
de aconselhá
em um valor máximo apropriado.

EXAME TIP Se você definir o PGA_AGGREGATE_TARGET parâmetros e SGA_TARGET


quando
AMM está habilitado, os valores especificados são um tamanho mínimo abaixo do qual AMM nunca
o PGA ou SGA.
reduzirá
De um modo geral, as alocações de memória vai se estabilizar dentro de uma instância após um
foi executado
aplicativo por
tem um tempo, até que haja alguma mudança dramática no padrão de atividade. dois
pontos
será útildepara
vista
monitorar o seguinte:

• V $ MEMORY_DYNAMIC_COMPONENTS mostra os tamanhos atuais das estruturas.


• V $ MEMORY_RESIZE_OPS mostra a história das operações de redimensionamento última
800.

AMM é implementado pelo corretor de memória , que consiste em dois processos em segundo
MMONplano.atividade
o monitores de processos e, quando aconselhável, instrui o Gerenciador de memória
processo para realocar memória entre componentes. transferências de memória deve ocorrer, no
(Mman)
máximo,
alguns minutos
apenaspara
a cada
fins de ajuste e geralmente ocorrem com muito menos frequência, talvez nunca
uma
o sistema
vez tenha se estabilizado. Haverá, no entanto, ser uma transferência imediata em caso de um
erro
condição a ser levantada por uma sessão. Em vez da falha declaração, a sessão irá travar enquanto
memória é disponibilizado e, em seguida, retomar.

NOTA AMM tem variações de plataforma. Por exemplo, no Linux, não é possível habilitar
AMM se Hugepages está em uso. No Solaris, segmentos íntimos dinâmicos adequados de memória
compartilhada
ser configuradodeve
para o projecto em que a instância estiver em execução.

Exercício 19-2: Defina os parâmetros de gestão de memória Neste exercício, você irá desativar
Gerenciamento automático de memória (se estiver ativado) e definir as metas do SGA e PGA de
formatodas
Faça independente.
as alterações usando a sintaxe que afetarão somente a instância em execução; não
propagar ono spfile, a menos que você está preparado para revertê-las mais tarde. Aqui estão os
alterações
passos a seguir:
1. Conecte-se ao seu banco de dados com SQL * Plus como usuário SYSTEM.
2. Certifique-se de que nenhum dos parâmetros para gerenciar as estruturas de memória SGA
dinâmicos
manualmente estão definidas.

3. Gerenciamento automático de memória Desativar.

4. definir os parâmetros para o tamanho de PGA e PIG independentemente, usando valores


muito baixos.

O segundo comando pode demorar alguns minutos para ser concluído, e pode falhar se a
Oracle não
reduzir o SGA
podeao mínimo. Neste caso, tente um valor maior.
5. Determine o tamanho real dos PGAs actualmente afectados pela soma-se o valor para a
estatística “sessão memória pga” em todas as sessões.

A figura será significativamente superior ao 10MB solicitado no passo 4. Isso ocorre porque
10MB é um valor que é tão baixo que a Oracle não pode manter a ele. O alvo PGA é de
apenas
não umumlimite
alvo,
rígido.

6. Determine o tamanho real do SGA.


Esta figura, também, pode ser maior do que o solicitado no passo 4.

Use o Memory Advisor para o tamanho da memória


buffers
A instância Oracle recolhe uma grande quantidade de informações sobre a atividade e desempenho.
estatísticas permitem que os assessores de memória, que são ferramentas que calculam o efeito da
Estes
variação
as dos de
estruturas tamanhos
memóriadeSGA e PGA. A facilidade de gerenciamento de memória automático utiliza
os assessores
para tomar decisões sobre alocação de memória, e eles também são visíveis para o DBA através de
visualizações e através de Enterprise Manager. Figura 19-1 mostra três consultas que mostrar
várias
conselheiro
em formação.memória

Figura 19-1 Três assessores de memória consultados com o SQL * Plus

A primeira consulta na Figura 19-1 mostra o assessor PGA. A terceira coluna mostra um
seleccionado

estimativa para a quantidade de disco de I / O que seria necessária se o alvo PGA foram definidas
para a figura
mostrado na primeira coluna. A segunda coluna nesta figura expressa como uma proporção da real
configuração. A quinta linha da saída é o cenário atual: a PGA_TARGET_FACTOR de 1. Como
vocêsepode
ver, outro 30MB de memória foram adicionados ao alvo, seriam necessários menos I / O, mas
acrescentando
do que isso daria
mais
nenhum benefício adicional.
A segunda consulta na Figura 19-1 mostra o assessor PIG. Isto relaciona-se o tamanho da PIG
valorpara
previsto
uma para DB_TIME, que é um valor global para a quantidade de tempo gasto pela base de
dados
para executar SQL; minimizando DB_TIME é o objectivo global de todos tuning. Como você pode
ver, seforam
SGA o levantados a partir de seu valor atual de 196MB para 294MB, DB_TIME reduziria, mas
haveria nenhum ponto em ir mais longe.

A terceira consulta é contra o conselheiro alvo de memória, que dá conselhos sobre o total (SGA
PGA) mais
alocação de memória. Isto mostra que o valor ideal é de 450 MB, ao contrário do actual
valor de 300MB. Se Gerenciamento automático de memória está em uso (ativado com a
MEMORY_TARGET
parâmetro), então esta última consulta é tudo o que seria necessário. Como você pode ver,
praticamente
DB_TIME poupança
toda a poderia ser alcançado através do aumento da meta de 375 MB, e se os
administradores
dizem memória suficiente
de sistemanão está disponível para alocar a quantidade ideal, então este é o que o
deve pedir.
DBA
EXAME TIP Os assessores não será habilitado a menos que o parâmetro STATISTICS_LEVEL
está definido
TÍPICO ou ALL.
para

Ao todo, existem sete assessores de memória. Cada um deles é exposta através de um


desempenho
visualizar dinâmico
preenchida com (ou V $)
informações atuais no SGA, bem como uma visão DBA preenchida com
dados históricos de tabelas no AWR.

Exercício 19-3: Use o Advisors Memória Neste exercício, você irá reunir conselhos sobre memória
alocação consultando os pontos de vista relevantes. Este exercício assume que Exercício 19-2 foi
completou. Aqui estão os passos a seguir:

1. Conecte-se ao seu banco de dados como SYSTEM usuário com SQL * Plus.
2. Executar esta consulta para ver os resultados do conselheiro SGA:

O valor para SGA_SIZE_FACTOR = 1 será o especificado no Exercício 19-2 , etapa 6. Nota


o ponto em que não há nenhum benefício antecipado significativo para adicionar mais
memória.
3. Execute esta consulta para ver os resultados do conselheiro PGA:

Esta consulta irá mostrar o efeito esperado de vários valores para


PGA_AGGREGATE_TARGET. À medida que aumenta alvo, ESTD_EXTRA_BYTES_RW
reduzir. Esta é a quantidade de E / S físico necessário porque as áreas de trabalho SQL não
vai
ser escrita para armazenamento temporário. O valor
precisa
ESTD_PGA_CACHE_HIT_PERCENTAGE
tenderá a 100 por cento, porque as consultas podem executar de forma otimizada em vez de
uma passagem
multipass. ESTD_OVERALLOC_COUNT
ou é o número de vezes que a Oracle não seria
para manter ao alvo PGA; este tenderá a zero se PGA está disponível.
capaz
4. Volte a instância ao estado em que estava antes Exercício 19-2 reiniciando-lo.

Gerenciar Optimizer Estatísticas


Qualquer uma instrução SQL pode ser executado em um número de maneiras. Por exemplo, pode ser
possível
mesas empara se juntar
ordens diferentes, pode haver uma escolha de se usar índices ou varreduras de tabela, ou
métodos de execução pode ser mais intensivo no uso dos recursos disco I / O e CPU. O método de
algum
executar uma instrução é conhecido como o plano de execução , e a escolha do plano de execução é
fundamental para
desempenho. Em um banco de dados Oracle, planos de execução são desenvolvidos de forma
dinâmica pelo
otimizador otimizador.
depende o
fortemente de estatísticas para avaliar a eficácia de muitos planos de execução
e escolher qual planeja usar. Para um bom desempenho, é vital que estas estatísticas são precisas.
possíveis
Existem muitos tipos de estatísticas, mas o principal deles são as estatísticas de objetos que dão
as tabelasdeque as instruções SQL endereço.
detalhes

DICA As estatísticas não são relevantes para PL / SQL, apenas para SQL tão estatísticas coleta não
vai performance
PL melhorar / SQL. Mas o código mais PL / SQL irá incluir chamadas para instruções SQL;
estatísticas são
importante paratão
estas declarações como para quaisquer outros.

objeto Estatísticas
Analisando uma mesa reúne estatísticas sobre a tabela que vai ser de utilidade para o otimizador.
Alguns dos são visíveis na vista DBA_TABLES; eles incluem o seguinte:
estatísticas

• O número de linhas na tabela


• O número de blocos (utilizado e ainda não utilizados) alocada para a mesa
• A quantidade de espaço livre nos blocos que estão sendo usados
• A duração média de cada linha
• O número de linhas-fileiras “acorrentados” que atravessam dois ou mais blocos, seja porque
são muito longas ou por causa de configurações de armazenamento pobres

Para além das estatísticas sobre a mesa como um todo, cada coluna da tabela é também
estatísticas
analisada.
de coluna são visíveis na vista DBA_TAB_COLUMNS; eles incluem o seguinte:

• O número de valores distintos


• Os e maiores valores mais baixos
• O número de nulos
• A duração média da coluna

Quando uma tabela é analisada, seus índices são analisados implicitamente. Também é possível
reunir índiceexplicitamente. As estatísticas sobre os índices são mostrados na vista DBA_INDEXES;
estatísticas
elesseguintes:
Os incluem

• A profundidade da árvore de índice


• O número de valores de chaves distintas
• O agrupamento fator-how de perto a ordem natural das linhas segue a ordem das chaves

Estas estatísticas, que são armazenados dentro do dicionário de dados, dar o otimizador as
informações
precisa tomarque
decisões vitais sobre a melhor forma de executar instruções. Se as estatísticas estão
ausentes ou
incorreto, o desempenho pode cair drasticamente.
estatísticas de objetos são muitas vezes imperfeita, em primeiro lugar, porque eles são estática
Issoaté
significa
que sejam
que reunidos
eles se tornam
novamente.
obsoletos ou fora da data, como resultado de Data Manipulation
Language
contra (DML) Em segundo lugar, as estatísticas de objetos são muitas vezes imperfeita, porque,
os objetos.
como
são recolhidos
regra geral,
através
as estatísticas
de um processo de amostragem. Se um objeto é muitos gigabytes grande, uma
análise
leva muito
completa
temposerá
e recursos e, possivelmente, ter um impacto sobre outros trabalhos. Análise de
uma amostra
objeto irá normalmente
do dar estatísticas que são representativos do conjunto a um custo muito menor.
Em muitos
casos, as estatísticas obsoletos ou amostrados são perfeitamente adequada. Por exemplo, se uma
tabelapode
você tem ser
um capaz
bilhãodedeadicionar
linhas, milhões mais sem perturbar a eficiência dos planos de execução,
que os valores da coluna nas novas linhas caber dentro das distribuições de freqüência já descoberto.
desde
em outros casos, uma quantidade relativamente pequena de DML pode ter um efeito significativo.
Mas

EXAME TIP estatísticas de objetos são estáticos. Eles devem ser regenerado regularmente para
pegar mudanças no
o estado dos dados.

Como o otimizador utiliza estatísticas


É comum para que haja várias formas de executar qualquer declaração. Considere esta trivial
exemplo: Há uma EMP tabela com uma linha para cada funcionário que inclui uma coluna de SAL
salário do empregado, e esta coluna é indexada. A consulta recupera o nome de cada funcionário
com
cujo salário é maior do que um determinado valor. Para executar esta declaração, a Oracle pode
verificar a tabela
verificação inteira,
de cada linha contra o critério, ou Oracle poderia procurar o índice para identificar os
que cumprem o critério e, em seguida, usar o índice para recuperar exatamente as linhas dos
funcionários
funcionários. considere estes
consultas:

A primeira consulta (quase certamente) ser mais rápido se executado usando o método do índice.
que assumindo
há poucos funcionários que atendem o critério, não há nenhum ponto em ler a tabela inteira para
encontrá-los. Pesquisar o índice para encontrar os empregados relevantes será mais rápido. A
segunda
no entanto,
consulta,
vai ser mais rápido (assumindo que todo mundo tem um salário positivo) se a tabela
inteira é
digitalizada. Todos os funcionários vão ser recuperada, e não há nenhum ponto em usar o índice.
Ao fazer esta escolha de método de acesso, você está usando estatísticas de objetos . Estatísticas
A Oracle
objetoquantas
contar linhas estão em cima da mesa, quantos blocos de segmento tabela está ocupando, o
valores máximos e mínimos das colunas, a profundidade dos índices, e muito mais. Se o objeto
estatísticas estão ausentes ou imprecisas, o otimizador irá desenvolver um plano inadequada. Para
levar pouco
(Um isso artificial) exemplo um passo adiante, considere a situação em que as estatísticas de
objetos
que a tabela
dizemé muito pequena que contém apenas uma linha e ocupa apenas um quarteirão. Nesse
não existe um ponto no meio do índice. toda a tabela pode ser lido por uma única leitura bloco.
caso,
acessando
índice o
significaria, pelo menos, uma leitura do índice, possivelmente seguido por uma outra leitura
da tabela.
nunca poderia
este ser mais rápido, para que o otimizador sempre optar por digitalizar a tabela não
importafoi.
critério o que
Masa se as estatísticas eram, na verdade, errado ea tabela consiste em vários milhões de
ocupando muitos megabytes de espaço, esta decisão seria desastroso para alguns critérios. Se torna
linhas
evidente que as estatísticas devem estar ambos presentes e precisas se o otimizador é desenvolver
planos de execução.
eficiente
O otimizador baseia suas decisões em estimativas de cardinalidade . Usando as estatísticas
faz suposições
disponíveis,sobre quantas linhas e blocos serão acessados por vários métodos de execução. o
precisão dessas suposições é fundamental para o desempenho e é geralmente dependente da
frequência
coleta de estatísticas
de e do tamanho da amostra. Em alguns casos, essas estimativas venham a ser
errado. Por quê? Tipicamente, porque as estatísticas são ou envelhecer ou com base em uma amostra
Oracle tem duas instalações que lhe permitem corrigir este: directivas do Plano de SQL e execução
insuficiente.
planos.
adaptativa
Durante a execução de uma instrução, o CBO monitora quantas linhas são retornadas em cada
e compara
etapa esse valor para cardinalidade real para a cardinalidade estimada utilizado para derivar a
plano de execução. Se os números desviar suficientemente, o CBO irá gerar uma directiva plano de
SQL para A directiva é uma instrução para o otimizador para reunir informações adicionais sobre o
uso futuro.
objectos através de um mecanismo conhecido como amostragem dinâmica . Um exemplo simples
seria que costumava
anteriormente: As estatísticas dizem que a tabela EMP tem uma linha, mas ao consultar-se o
otimizador encontra
que, na verdade, ele tem milhões de linhas. Neste caso, a Oracle irá gerar uma directiva que, no
futuro,
instruirá o otimizador para verificar o tamanho da tabela ao decidir sobre um plano de execução.
Exemplo mais complexo pode ser recuperando empregados por cidade, estado e país. Os seres
UMA
humanos ésabem
Munique a capital
que da Baviera e que a Baviera é na Alemanha. Mas a Oracle não. Isso vai
distorcer suas suposições sobre o número de linhas retornado se um predicado especifica valores
para os três
colunas. A directiva iria instruir o CBO para gerar estatísticas adicionais sobre o
correlação dos valores entre colunas. As directivas são salvos no AWR na SYSAUX
tabela e associada com a tabela a que se referem e, assim, ser um benefício para qualquer
declarações que atingiram a mesa a partir de então.
TIP EXAME directivas do Plano de SQL estão vinculados às tabelas, não para declarações. Eles
são persistentes no
AGORA.

A facilidade de plano de execução adaptativa afeta apenas uma declaração em tempo de


feitaexecução. Se uma
entre planos escolha tem
de execução que que ser mais ou menos eficiente, dependendo do número de linhas
seriam
recuperado, o CBO irá determinar um ponto de crossover. Se houver menos de linhas X, use o plano
A; mais
há E se de linhas X, plano de uso B. A Oracle vai começar a executar a instrução usando o plano
determinado pelas estatísticas de objeto para ser o ideal, mas se este acaba por ser incorreto, ele vai
mudar
o planopara
alternativo durante a corrida. Por exemplo, se o ponto de cruzamento foram 100 linhas ea
estimativa de cardinalidade é de 1.000, a declaração iria começar com o plano B e depois mudar para
planejar
50 linhasum
foram
que devolvidas
apenas pelo primeiro passo do plano. execução Adaptive só é possível se os
têm as mesmas, ou semelhantes, as operações iniciais. Os dados são tamponadas até que o ponto de
planos
cruzamento
alcançou, emé seguida,
(ou não é)
a escolha final do plano é feito.

TIP O plano de execução adaptativa permite a comutação entre os modos de associação: quer
aninhada
juntar ou hash.
circuito
Ambos podem começar a digitalização, e contando, as linhas de uma tabela. Ele
também opode
alternar método de distribuição de linha para uma consulta paralela.

Gathering Estatísticas manualmente


estatísticas de objetos são tempo não real; eles são estáticos, o que significa que eles se tornam
desatualizados
operações são aplicadas
como DML às tabelas. É, portanto, necessário para reunir estatísticas regularmente para
que o otimizador tem sempre acesso a estatísticas que refletem razoavelmente com precisão o estado
garantir
atual da de dados. As estatísticas podem ser recolhidos manualmente executando procedimentos nas
o banco
pacote, como na Figura 19-2 .
DBMS_STATS

Figura 19-2 estatísticas Gathering do SQL * Plus alerta

Na Figura 19-2 , primeiro as regiões de mesa é analisado, utilizando o pacote de DBMS_STATS.


Configuração
o ESTIMATE_PERCENT argumento para 100 instrui o Oracle a analisar a tabela inteira, não apenas
amostra do mesmo. A consulta a seguir mostra que existem quatro linhas na tabela. Em seguida, uma
um
linhaasé inserida,
mas estatísticas não foram atualizados, de modo que o número de linhas é incorreta até que a
tabela
de novo,é analisada
desta vez com o conjunto ESTIMATE_PERCENT para permitir amostragem com recurso
padrão da da
dimensão Oracle
amostra. Numerosos argumentos podem ser fornecidos para o procedimento
controlar o que ele faz; esta para
GATHER_TABLE_STATS é a forma mais simples de seu uso.
recolher estatísticas vai melhorar o desempenho, mas o encontro real pode impor uma pressão
bancosobre
de dados
o que terá um efeito notável no desempenho enquanto a análise está em andamento.
situação paradoxal levanta duas questões. Primeiro, com que frequência deve estatísticas ser
este
recolhidas?
mais freqüentemente
o isso é feito, o melhor desempenho pode ser; No entanto, se for feito com mais
freqüência
do que o necessário, o desempenho irá sofrer desnecessariamente. Em segundo lugar, qual a
proporção de
analisados para
umobter
objeto
umaprecisa
imagemser precisa dele? Analisando uma enorme mesa será uma longa e
utilizaçãointensivo;
processo de recursosele pode muito bem ser que a análise de uma amostra representativa do objeto
o suficiente para o otimizador e não impor essa pressão sobre o banco de dados.
seria

EXAME TIP estatísticas de objeto são o tempo não real; eles são estáticos até refrescado por uma
novanão
isso análise.
é feito
E com
se frequência suficiente, eles serão seriamente fora da data, e o otimizador pode
consequentemente, desenvolver planos de execução inadequados.

estatísticas de objetos podem ser recolhidas em vários níveis. Estes são os procedimentos
pertinentes,
pacote no
DBMS_STATS:

• gather_database_stats Analisa todo o banco de dados


• gather_schema_stats analisa todos os objetos em um esquema
• gather_table_stats Analisa uma tabela
• gather_index_stats Analisa um índice

Quando as estatísticas são recolhidas em qualquer nível, uma série de argumentos podem ser
especificado
passados.naEstes
chamada
podemdeser
procedimento ou definir como preferências salvas em cada nível.
Consideredeo procedimento,
chamada seguinte que especifica os argumentos comumente usados dando o valor padrão:

Tendo estes argumentos, por sua vez, aqui está o que acontece:

• CASCADE irá analisar índices, bem como mesas. A definição dada permite que o Oracle
decidir
índices
qual
(se houver) deve ser analisado.
• controles ESTIMATE_PERCENT quanto de cada tabela para analisar. A definição dada
instrui Oracle para fazer uma suposição inteligente na quantidade necessária para uma
amostraespecifica
• GRAU significativa.
se realizar a análise com o processamento paralelo. A definição dada
deixa a Oracle decidir o número de processos paralelos de acordo com o ambiente e o
de cada mesa.
tamanho
• controles NO_INVALIDATE se reanalisar qualquer SQL com dependências nos objetos
analisado imediatamente. A definição dada permite que o Oracle decidir.
• GRANULARITY refere-se a melhor forma de analisar objetos constituídos por um número de
sub-objetos,
tais como uma tabela que é dividido em partições. A definição dada permite que o Oracle
decidir. METHOD_OPT para as quais colunas para construir histogramas e quantos baldes
• controles
Eles deveriam ter. A definição dada permite que o Oracle decidir, de acordo com a natureza
do SQL
sendo executado e a distribuição de valores dos dados.
• OPÇÕES determina quais objetos de analisar. A definição dada instrui o Oracle para analisar
todos os objetos.
O ponto restante a considerar é como frequentemente para executar o comando. Um Estatísticas-
reunindo
automática
tarefa vai fazer isso todos os dias durante a janela de manutenção. A janela de manutenção
é executado
por quatro horas todos os dias úteis noite (a partir de 2200) e por 20 horas no sábado e domingo

(A partir de 0600), embora normalmente apenas uma pequena proporção deste intervalo de tempo
serácorrer
vai necessário.
bem commuitos bancos de
estatísticas dados pela tarefa automática, eliminando qualquer necessidade
recolhidas
de reunir estatísticas
manualmente.

Use o SQL Tuning Advisor


O SQL Tuning Advisor analisa uma ou mais instruções SQL e, potencialmente, recomenda encontro
estatísticas objeto frescas, criando um perfil de SQL, criação de índices adicionais, ou criar um SQL
revisto
declaração. Você pode executar o SQL Tuning Advisor manualmente; no entanto, ele é executado
automaticamente
cada janela de manutenção
durante nas instruções SQL intensivo de recursos a maioria dos identificados no
carga de trabalho de produção. Opcionalmente, você pode especificar que a análise realizada durante
a manutenção
janela implementa automaticamente perfis SQL recomendados.

As capacidades do SQL Tuning Advisor


Se o SQL Tuning Advisor é executado automaticamente ou você executá-lo em um ou mais
instruções
executa os SQL,
mesmos
ele tipos de análises:

• análise estatística Verifica estatísticas obsoletos ou desaparecidos e recomenda refrescante ou


criá-los
• perfis SQL coleta estatísticas auxiliares em uma instrução SQL, juntamente com execução
parcial
estatísticas e os armazena em um perfil de SQL
• caminhos de acesso Analisa o impacto da criação de novos índices
• Análise da estrutura Reestrutura as instruções SQL para ver se melhores planos de execução
são gerados

Ao traçar o perfil de uma instrução SQL, o otimizador funciona parcialmente a declaração,


vários
experimentando
planos de execução. As estatísticas de execução gerados durante esse processo atualizar o
Informações sobre como a declaração realmente funcionou pode ser usado pelo otimizador
perfil.
posteriormente,
declaração quando adurante a operação de banco de dados normal. Note que o SQL Tuning
é encontrado
considera cada instrução SQL individualmente. Se ele recomenda um índice para uma instrução
Advisor
SELECT,
pode ajudar
que
o desempenho da consulta, mas pode reduzir o desempenho da atividade DML contra a
mesa em um ambiente pesado on-line processamento de transações (OLTP). Assim, o SQL Access
Advisor,
discutido mais adiante neste capítulo, pode ser uma ferramenta melhor para analisar todas as
operações
tabelas emcontra
uma carga
um ou
demais
trabalho.
O SQL Tuning Advisor pode usar um número de fontes para a sua análise:

• As instruções SQL atualmente em cache no cache de biblioteca do pool compartilhado


• Um conjunto precreated de declarações
• Demonstrações recuperados do AWR
• Uma declaração ad hoc individuais

Há uma interface gráfica para o SQL Tuning Advisor e também um conjunto de APIs PL / SQL.

TIP EXAME conselho segmento de The Tuning Advisor é limitado a criação do índice.

A API SQL Tuning Advisor: O Pacote DBMS_SQLTUNE


Banco de dados Express tem uma interface para os resultados do Advisor SQL Ajuste. Navegue para
Ajustando
o SQL ligação Advisor na guia Desempenho para chegar a este.
Se você precisa ter mais controle sobre suas tarefas de ajuste ou deseja executar um conjunto
repetidamente,
específico de
você
tarefas
podedeusar
ajuste
o pacote DBMS_SQLTUNE PL / SQL para criar, executar e
monitorar um
Ajustando trabalho
SQL Advisor.
Para uma análise básica de uma instrução SQL, você irá utilizar os seguintes procedimentos
DBMS_SQLTUNE:
dentro

• CREATE_TUNING_TASK Cria uma tarefa de ajuste para uma instrução SQL ou SQL
Ajuste de Sincronização
• EXECUTE_TUNING_TASK Executa uma tarefa de sintonia criada com
CREATE_TUNING_TASK
• REPORT_TUNING_TASK Mostra os resultados e recomendações do ajuste de SQL
Orientador

Além disso, você pode usar as seguintes visualizações de dicionário de dados para consultar o nome
eo status de ajuste
empregos:

• DBA_ADVISOR_LOG nomes de tarefas, status e estatísticas de execução de todas as tarefas


• DBA_ADVISOR_TASKS Informações mais detalhadas sobre as tarefas de conselheiro,
como
nome,
conselheiro
descrição especificada pelo usuário, eo tipo de execução para o usuário atual
• V $ ADVISOR_PROGRESS Informações mais detalhadas sobre o status de conclusão e
tempo restante para uma tarefa conselheiro

Exercício 19-4: Execute o SQL Tuning Advisor para uma instrução SQL Neste exercício, você
vai usar
DBMS_SQLTUNE para gerar recomendações para uma instrução SQL.

1. Conecte-se ao banco de dados com SQL * Plus como usuário SYSTEM.


2. Criar o esquema e tabela a ser usada neste exercício.

3. Estes comandos, executados no prompt do SQL, irá criar uma variável para armazenar o
nome
tarefa,
do criar uma tarefa para sintonizar uma instrução, e em seguida, executar a tarefa.

A ilustração mostra as etapas 2 e 3.

4. Recuperar as recomendações da tarefa tuning, primeiro configurar SQL * Plus para exibi-los.

5. Estudar a saída da tarefa tuning, como recuperado na etapa 4. Após o detalhe da tarefa,
haverá umacriação.
declaração recomendação
Note-separa
que criar umpara
a razão índice e um exemplo
a criação de índicedeirá
um adequado
incluir index-
esta frase
(Que, na versão atual, inclui um erro de digitação menor):

6. Tidy como segue:

Use o SQL Access Advisor para Tune Workload


O SQL Access Advisor realiza uma análise do desempenho global SQL usando uma carga de
especificação, concentrando-se nas estruturas do segmento. A Tuning Advisor pode dar conselhos
trabalho
básicos
índices, sobre
mas o conselho Access Advisor é muito mais abrangente.

As capacidades do SQL Access Advisor


A especificação de carga de trabalho pode ser um dos seguintes:

• Uma única instrução SQL


• A SQL set declaração de ajuste
• conteúdo do cache SQL atual
• A carga de trabalho hipotético imputada a partir da Data Definition Language (DDL) de um
conjunto de objetos
Um conjunto SQL declaração de ajuste é um conjunto armazenado de declarações. Este conjunto
pode ser
de fontes, taispreenchida a partir de
como declarações uma variedade
captadas por um instantâneo AWR ou o código recentemente
executado
no cache deatualmente
biblioteca do pool compartilhado. Demonstrações são olhados individualmente, mas
relatórios
todo o conjunto.
cobriráRecomendações do SQL Access Advisor incluem o seguinte:

• Índices (B * Árvore, bitmap, e função com base)


• As visões materializadas e logs de visão materializada
• estratégias de particionamento

É sempre possível que as recomendações que melhoram algum aspecto da carga de trabalho pode ter
impacto negativo sobre o outro. Isso deve ser destacado nos relatórios.
um

DICA Um conselheiro nunca vai dar conselhos que é definitivamente errado, mas muitas vezes você
pode
os conselheiros,
fazer melhor.
e ao
Corre
olhar para os relatórios, sempre considerar se as recomendações poderia
ser ainda melhorada.

A Tuning Advisor tem sua própria API: DBMS_SQLTUNE. O Assessor de acesso não. Para
invocar o Advisor Access, usar a interface do Enterprise Manager ou o DBMS_ADVISOR
API. O pacote DBMS_ADVISOR é uma API genérica para executar qualquer um dos conselheiros.

Usando o Advisor acesso SQL com DBMS_ADVISOR


Usando o SQL Access Advisor através do pacote DBMS_ADVISOR pode ficar bastante complexo.
Há entanto,
no sim, um procedimento destinado a tornar o trabalho mais fácil.
DBMS_ADVISOR.QUICK_TUNE é simples e toma como entrada uma única instrução SQL
para Como resultado, ele executa muito parecido com o SQL Tuning Advisor, mas pode
afinação.
executarem
análise uma
profundidade,
muito mais produzindo
in- mais recomendações do que o SQL Tuning Advisor, como se
vista recomendações. O procedimento exige (no mínimo) três argumentos: o nome do
materializou
conselheiro, o nome da tarefa a ser executada, e o comunicado. Aqui está um exemplo:

Os resultados do esforço de ajuste residem no dicionário de dados vista


masUSER_ADVISOR_ACTIONS,
a saída não é muito legível. Portanto, você pode usar o procedimento CREATE_FILE para criar
script que você usar para implementar as recomendações geradas pelo procedimento
o
QUICK_TUNE.
criar um objeto dePrimeiro,
diretório para apontar para um diretório de sistema de arquivos para manter o
script.

Em seguida, use CREATE_FILE para criar o script que contém as recomendações de


implementação.

Neste exemplo, o tune_fts.sql arquivo parecido com este:


As recomendações incluem a criação de um registo de visão materializada, criando uma vista
podeque
sermaterializado
usado para reescrita de consulta e recolha de estatísticas sobre a visão materializada. Este
conselho daquele
diferente é muito gerado pelo SQL Tuning Advisor para o mesmo comunicado. Ambos os conjuntos
de aconselhamento
teriam de ser testado para determinar se é óptima.

CUIDADO Você não pode executar o Conselheiro Acesso contra objetos pertencentes a usuários
internos, taisSecomo
SISTEMA. você tentar fazer isso, você receberá o erro “QSM-00794: a declaração não pode ser
armazenado devido a uma violação do filtro de referência de tabela inválido.”

Broca Two-Minute
Use Enterprise Manager para monitorar o desempenho
• As estatísticas são acumulado na memória e métricas são calculadas a partir destes.
• Banco de Dados Expresso expõe determinadas estatísticas e métricas-chave, representados
graficamente.
Use Gerenciamento automático de memória
• Todas as estruturas PIG, exceto o buffer de log podem ser redimensionadas dinamicamente.
• PGA é passado para fora, sob demanda, a sessões.

• AMM pode transferir memória entre SGA e PGA, dentro de um objectivo global.
• estruturas individuais podem ser dadas tamanhos mínimos com seus próprios parâmetros.

Use o Memory Advisor para o tamanho da memória buffers


• Há sete assessores de memória.
• Os conselheiros serão ativados se STATISTICS_LEVEL é definido como TYPICAL ou ALL.
• O corretor de memória utiliza os conselheiros para alocações de memória sintonia.

Gerenciar Optimizer Estatísticas


• estatísticas de objetos são estáticos até que se reuniram novamente.
• Um Autotask reúne estatísticas necessárias todas as noites.
• As estatísticas podem ser recolhidos manualmente para o banco de dados, um esquema, uma
tabela ou um índice.
Use o SQL Tuning Advisor
• O Tuning Advisor recomenda a reestruturação do SQL, reunindo estatísticas, ou B * Árvore
a criação do índice.
• O Tuning Advisor é executado todas as noites por uma Autotask contra detectado SQL de alta
carga.
• Chame o Tuning Advisor com o Enterprise Manager ou o pacote DBMS_SQLTUNE.
• O Tuning Advisor considera declarações individualmente, e não como um conjunto.

Use o SQL Access Advisor para Tune Workload


• O Assessor acesso pode recomendar todos os tipos de índices, visualizações materializadas, e
particionamento.
• Chame o Advisor Access com Enterprise Manager ou o pacote DBMS_ADVISOR.
• O Advisor O acesso pode considerar um conjunto de instruções SQL juntos.

Auto teste
1 . Que os assessores pode ser invocado através de banco de dados Express? (Escolha duas
respostas.)
A. O SQL Access Advisor
B. O SQL Tuning Advisor
C. O Undo Advisor
D. Os assessores de memória
2 . Onde estão as áreas SQL privadas armazenadas? (Escolha a melhor resposta.)
A. Em PGA de cada sessão, sempre
B. Em PGA de cada sessão, a menos que um valor PGA agregada alvo foi definido

C. No PGA, a menos Gerenciamento automático de memória foi habilitado


D. Na piscina comum do SGA, sempre
3 . Qual estrutura de memória é fixo em tamanho na inicialização da instância? (Escolha a
melhor
A. Oresposta.)
pool compartilhado.
B. A grande piscina.
C. piscina O Java.
D. O tampão de log.
E. Nenhum são fixos se Gerenciamento automático de memória foi ativado.
4 . Quando Gerenciamento automático de memória é ativada, o que não é possível? (Escolha o
melhor
responda.)
A. Transferência de memória entre PGAs das sessões.
B. Transferência de memória entre as estruturas dentro do SGA.
C. Transferência de memória de SGA a PGA, e vice-versa.
D. Aumentar o uso de memória total após inicialização da instância.
E. Todas as anteriores são possíveis.
5 . Armazenamento do que as estruturas podem existir no PGA? (Escolha todas as respostas
corretas.)
A. áreas Shared SQL
B. áreas SQL Privado
C. globais tabelas temporárias
D. Classificar áreas
E. Bitmap fundir áreas
F. definições em cache de objetos
6 . Qual parâmetro de instância pode desativar os assessores de memória? (Escolha a melhor
resposta.)
A. DB_CACHE_ADVICE
B. MEMORY_TARGET
C. STATISTICS_LEVEL
D. TIMED_STATISTICS
7 . Identificar a verdadeira declaração sobre Gerenciamento automático de memória. (Escolha a
melhor resposta.)
A. MEMORY_TARGET e MEMORY_MAX_TARGET devem ser definidos para permitir
AMM.
B. MEMORY_TARGET permite AMM, e é um parâmetro estático.
C. MEMORY_MAX_TARGET permite AMM, e é um parâmetro estático.
D. MEMORY_TARGET permite AMM, e é um parâmetro dinâmico.

8 . Como você pode melhor automatizar a coleta de estatísticas do otimizador? (Escolha a


melhor
A. Oresposta.)
processo de MMON irá recolher-los se STATISTICS_LEVEL está definido para
TÍPICA
TODOS.
ou
B. Um trabalho de manutenção automática irá recolher-los se STATISTICS_LEVEL está
definido
TÍPICOparaou ALL.
C. Enterprise Manager (banco de dados Express ou Cloud Control) irá recolher-los se
STATISTICS_LEVEL é definido como TYPICAL ou ALL.
D. executar o procedimento com DBMS_STATS.GATHER_DATABASE_STATISTICS
OPÇÕES => 'REUNIR AUTO'.
9 . Você percebe que as estatísticas sobre uma mesa não estão corretas. A figura NUM_ROWS
nãoincluir quaisquer linhas inseridas no dia até agora. Por que isso pode ser? (Escolha a melhor
resposta.)
A. O parâmetro STATISTICS_LEVEL não está definido como TYPICAL ou ALL.
B. As estatísticas foram bloqueados pela DBMS_STATS.LOCK_TABLE_STATS
procedimento.
C. As estatísticas não vai mudar até que a tabela está próxima analisados.
D. As tarefas de manutenção automática não estão em execução.
10 . Onde estão as estatísticas de objetos usados pelo otimizador de consulta armazenada?
(Escolha a melhor
A. Com resposta.)
os objetos em si.
B. no dicionário de dados.
C. No AWR.
D. Eles são acumulados na piscina comum do SGA.
11 . O SQL Tuning Advisor executa todos, mas qual das seguintes análises? (Escolha o melhor
responda.)
A. Análise Estrutura
B. análise Perfil SQL
C. Os caminhos de acesso
D. Alterações às vistas materializadas
E. A análise estatística
12 . Qual das seguintes você pode usar como entrada para o SQL Tuning Advisor? (Escolha tudo
o queAplique.)
A. A única instrução SQL fornecido por um utilizador
B. Um SQL existente Sintonia Set (STS)
C. Um banco de dados pré-processado carga de trabalho de Repetição
D. Um nome de esquema
E. Uma declaração SQL identificados na EM como a utilização de recursos excessivos
13 . Aplique.)
Qual das seguintes você pode usar como entrada para o SQL Access Advisor? (Escolha tudo
o que
A. A única instrução SQL fornecido por um utilizador
B. Um SQL existente Sintonia Set (STS)
C. Um banco de dados pré-processado carga de trabalho de Repetição
D. Um nome de esquema
E. conteúdo do cache SQL atual
14 . Qual das seguintes mudanças podem o SQL Access Advisor recomenda? (Escolha dois
respostas.)
A. Reestruturação uma ou mais instruções SQL
B. estatísticas de encontro para instruções SQL selecionadas
C. A adição de um log de visão materializada
D. Ativando reescrita de consulta

Respostas de auto-teste
1. B e C . A Tuning Advisor está disponível na guia Desempenho, e o Undo Advisor
está disponível na guia Armazenamento.
A e D são incorrectas. O Assessor de acesso e os vários assessores de memória pode ser
alcançado através de Cloud Control mas não através de banco de dados Express.
2. Um . Áreas SQL privadas são privadas para cada sessão no PGA da sessão.
B , C , e D estão incorrectos. B está incorreta porque o gerenciamento automático PGA
não é para onde a área SQL privada é armazenada, só para como ele é gerenciado. C e
relevantes
D sãoSQL incorreta porque privados estão sempre no PGA.
áreas
3. D . O buffer de log não pode ser alterado após a inicialização.
A , B , C , e E são incorrectas. A , B , e C são incorrecta porque todas estas estruturas
pode
ser redimensionada. E é incorreto, pois nem mesmo Gerenciamento automático de memória
faz comredimensionável.
tampão que o log
4. E . A memória pode ser transferido entre todas as estruturas (excepto o tampão de log),
podeeser
o total
aumentada.
de
A , B , C , e D estão incorrectos. Estes são incorrecta porque todos são possíveis,
(O aumento
embora D do uso de memória total) só é possível até ao valor especificado pela
parâmetro MEMORY_MAX_TARGET.
5. B , C , D , e E . Estas são todas as estruturas de memória PGA, embora possam
derramar
segmento a um na tabela temporário dos usuários.
temporário
A e F são incorrectas. Estas estruturas ambos existem na piscina comum do SGA.
6. C . STATISTICS_LEVEL deve ser em TÍPICA ou total; caso contrário, os conselheiros
não correr.
irão

A , B , e D são incorrectas. A e D são incorrecta porque estes parâmetros (que ainda


existem apenas para compatibilidade) são controlados por STATISTICS_LEVEL. B é
incorreto porque MEMORY_TARGET determina se implementar o conselho é
automático ou manual.
7. D . MEMORY_TARGET permite MVA; é um parâmetro dinâmico e não pode ter mais
que MEMORY_MAX_TARGET.
A , B , e C são incorrectas. A está incorreta porque o MEMORY_MAX_TARGET pode
ser deixado no padrão. B é incorrecta porque MEMORY_TARGET é dinâmico. C é
porque embora MEMORY_MAX_TARGET fornece um limite para AMM, que não permite
incorrecta
isto.
8. B . Um trabalho será executado nas janelas de manutenção a menos
STATISICS_LEVEL está definido para
BASIC.
A e C estão incorretas porque eles especificam o componente incorreta para realizar a
tarefa.
D está incorreta porque a opção 'REUNIR AUTO' controla quais objetos para analisar, não
se analisar em tudo.
9. C . Estatísticas do otimizador não são mantidos em tempo real, somente atualizada
analisados.
quando o objeto é
A , B , e D são incorrectas. A e D são incorretas porque afetaria a nightly
atualizar as estatísticas, não uma atualização durante o dia. B está incorreta porque iria
as estatísticas de forma permanente, não apenas para o dia.
congelar
10. B . O otimizador utiliza as estatísticas mais recentes, que são armazenados no dicionário
de,dados.
A C , e D estão incorrectos. A está incorreta porque as estatísticas são armazenados de
forma independente
dos segmentos reais. C está incorreta porque os valores históricos armazena AWR, que são
não utilizado para análise em tempo real. D está incorreta porque as lojas PIG o plano de
execução
em si, não a informação usada para gerá-la.
11. D . Apenas o SQL Access Advisor recomenda alterações nas visualizações
criação
materializadas,
materializadaincluindo
Ver registos.
A , B , C , e E são incorrectas. O SQL Tuning Advisor realiza análise estatística, SQL
perfilamento, caminhos de acesso e análise de estrutura.
12. A , B , e E . O SQL Tuning Advisor pode usar atualmente em execução de instruções
declaração
SQL, um fornecida
único por qualquer usuário, um SQL existente Sintonia Set, ou instruções
SQL
A históricos
partir de agora instantâneos.
C e D são incorrectas. C está incorreta porque você não pode usar o Database Replay
cargas de trabalho para especificar SQL para o SQL Tuning Advisor. D está incorreta
porque vocêum
especifique nãoesquema
pode ou tabela nomes; Você pode especificar apenas instruções SQL.
13. A , B , D , e E . Além de uma única instrução SQL (usando QUICK_TUNE), um já
STS,existente
o nome do esquema, e o conteúdo do cache SQL atual, os usos SQL Access Advisor
estatísticas para analisar o desempenho geral do SQL.
C é incorrecta. Você não pode usar as informações Database Replay capturado como
uma fonte acesso
o Conselheiro para SQL.
14. C e D . O SQL Access Advisor recomenda visualizações materializadas, visão
materializada
logs e permitindo reescrita de consulta. Além disso, o SQL Access Advisor irá recomendar
nova
índices ou partições.
A e B são incorrectas. O SQL Tuning Advisor recomenda instrução SQL
reestruturação e estatísticas encontro, não o Advisor acesso SQL.
CAPÍTULO 20

O Gerenciador de recursos

Objetivos do exame
• 062.13.1 Configurar o Database Resource Manager
• Acesso 062.13.2 e criar planos de recursos
• 062.13.3 Monitorar o Gerenciador de recursos

Muitos sistemas de computador terá vários grupos de usuários, cada um com diferentes padrões para
o nível
de serviço que requer. Se o sistema como um todo é altamente estressado, pode ser impossível para
entregar
nível desejado
o de serviço para todos os grupos. Mas se uma estrutura de prioridade pode ser
negociado,
possível garantir ser
deve um certo nível de serviço para determinados grupos, talvez à custa de outros
grupos.

Configurar o Database Resource Manager


Em um ambiente de mainframe, o sistema operacional lida com a alocação de recursos a tarefas. mas
mais simples
sistemas operacionais, como Unix e Windows pode não ter capacidades de recursos de programação
adequadas.
Resource Manager da Oracle traz recursos de gerenciamento de recursos de estilo de mainframe para
plataformas
todos suportadas da Oracle, o que significa que você como administrador de banco de dados
(DBA)grupos
certos pode garantir
de usuários
que de banco de dados receberá sempre um certo nível de serviço, não importa
o que de
carga a trabalho global sobre o banco de dados pode ser. Configurando o Gerenciador de recursos é
muitas
seu vezes
efeito fácil, masotestes
e monitorar que está fazendo pode ser difícil.

A necessidade de Gestão de Recursos


sistemas operacionais, como Linux e Windows usam um algoritmo simples para atribuir recursos
para diferentes
processos: round-robin tempo de cortar. Para o sistema operacional, não há realmente nenhuma
diferençaum
qualquer entre
dos processos de fundo que compõem a instância Oracle e qualquer um dos muitos
servidor
processos que suportam as sessões de usuário. Na medida em que o sistema operacional está em
causa, umele
processo; processo
será levado
é um para a unidade de processamento central (CPU), dado a alguns ciclos de
etempo
depoisdedesligou
CPU, o CPU para que o próximo processo pode ser provocada. O sistema operacional
não tem
como saber que um processo do servidor está apoiando uma sessão fazendo enquanto trabalho
completamente
outro trivial está apoiando uma sessão fazendo um trabalho fundamental para a
processo servidor
sobrevivência
O Gerenciadorda deorganização.
recursos fornece um mecanismo pelo qual algoritmo de time-slicing do sistema
pode ser ajustado para assegurar que alguns usuários recebem mais capacidade de processamento do
operacional
que outros,
garantir queequalquer consulta única não destrói o desempenho de todos os outros. o subjacente
mecanismo é o de colocar uma camada de multitarefa cooperativa controlada pela Oracle no topo do
sistema multitarefa preemptiva do sistema.
operacional
Ao longo deste capítulo, o ambiente é assumido como sendo o de uma organização de
vários
televendas.
grupos deLáusuários, e de particular interesse são os funcionários de entrada de dados ea gestão
contabilistas. Pode haver 200 funcionários de entrada de dados no call center receber ordens por
telefone.
suas sessões
E sede banco de dados estão funcionando lentamente, isso é desastroso para a empresa. Os
clientespara
apenas irão ser
discar
informado “, Você é o número 964 na fila. Sua ligação é importante para nós. Por
favor, nãoestá
-se.”Isso desligue
acontecendo porque os funcionários de entrada de dados não pode processo chama
rápido oclique
ordem, suficiente.
no botão
ElesEnviar,
tomameumdepois esperar ... e esperar ... e esperar ... para que o sistema
responder. Isto está a custar dinheiro.
Por outro lado, o trabalho dos contabilistas de gestão não é tão urgente. Talvez um anúncio
foi executado
publicitárioem uma estação de rádio local, e a resposta em termos de vendas inquéritos precisa ser
avaliadas antes de executar o anúncio todo o país. Este é um trabalho importante, mas não tem que
ser em tempo real. Se os relatórios demorar 10 minutos para executar em vez de 5, isso realmente
importa?

CUIDADO Não ajustar as prioridades de processos Oracle usando o comando renice Unix ou
o equivalente do Windows. A Oracle assume que o sistema operativo é o tratamento de todos os
eprocessos igualmente,
se você interferir com isso, pode haver inesperados (e desastrosas) efeitos colaterais.

O que é necessário é uma técnica para garantir que se as sessões de banco de dados de suporte de
funcionários
entrada deprecisam
dados de recursos de computação, eles obtê-los, não importa o quê. Isto poderia
significar
do dia em que
que em
o call
determinados
center é muito
momentos
ocupado, os funcionários precisam de 100 por cento dos recursos
de computação.
Resource Manager pode lidar com isso, e durante esse tempo de uso máximo as sessões de apoio ao
contadores de gestão pode travar completamente. Mas durante outros momentos do dia, quando o
call center
Não ocupado,
é abundância de recursos estará disponível para ser direcionado para o trabalho dos
contabilistas
No final do mês,
de gestão.
uma outra tarefa se tornará prioridade, especificamente, os de faturamento de fim
aderolagem
mês é executado
dos livrosepara o próximo exercício. Resource Manager precisa ser versátil
o suficiente para gerenciar isso também.
Claramente, Resource Manager é necessário somente em sistemas altamente estressados, mas
não quando
há alternativa.
você precisar
Na verdade,
dele, você está usando o Gerenciador de Recursos se você sabe ou não;
isto é
configurado por padrão em todas as bases de dados para controlar os recursos utilizados pelo sistema
Autotask, maspadrão
configuração o tem um efeito mínimo sobre o trabalho normal.

O Gerente de Arquitetura de Recursos


Os usuários são colocados em grupos de consumidores gerenciador de recursos, e planos Resource
um conjunto
Manager,
grupo, quede directivas,
consiste
dependendo em controlar
de atributos a alocação
definidos quandodearecursos entre
sessão foi os grupos.e Cada
estabelecida sessão é atribuída
possivelmente
amodificados
um
subseqüentemente. A arquitectura subjacente coloca uma camada de multitarefa cooperativa no topo
do
multitarefa preemptiva fornecido pelo sistema operacional. O processo do servidor de uma sessão
em uma
grupo prioritário
baixa vai, quando trouxe para a CPU por um interruptor contexto, abandonar
voluntariamente
mais cedo do queoteria
CPUfeito se confiar exclusivamente em multitarefa preemptiva do sistema
algoritmo.
operacional

Grupos de consumo
Um grupo de consumidores Resource Manager é um conjunto de usuários com necessidades de
recursos
pode conter
semelhantes.
muitos utilizadores,
um grupo e um utilizador pode ser um membro de diversos grupos, mas em
qualquer
cada sessão
dado
terámomento,
um grupo como o seu grupo eficaz. Quando um usuário cria primeiro uma sessão, o
seu
associação de grupo consumidor padrão será ativo, mas se ele é um membro de vários grupos, ele
alternar para outro grupo, ativando sua participação desse grupo. O interruptor pode ser manual ou
pode
automática, dependendo de uma série de fatores.
No exemplo televendas, os funcionários 200 de entrada de dados pode ser em um grupo
contadores
chamado deOLTP,
gestãoedúzia
a meiapoderia estar em um grupo chamado DSS. Alguns usuários poderia ser
em ambos osdo
dependendo grupos;
que o trabalho que estão fazendo, eles vão ativar a participação no grupo apropriado.
De outros
grupos podem ser LOTE, a ser dada prioridade para o processamento do final do mês, e LOW, para
as pessoas
que acontecer de ter contas no sistema, mas não são de grande importância.

Dezoito grupos são criados por padrão quando um banco de dados é criado:

• SYS_GROUP Este grupo é destinado a administradores de banco de dados. Por padrão,


apenas o SYS e SYSTEM estão neste grupo.
usuários
• DEFAULT_CONSUMER_GROUP Este grupo é para todos os usuários que não tenham sido
especificamente atribuído a qualquer outro grupo. Por padrão, todos os outros do que SYS e
SYSTEM
estão nestesessões
grupo, e essa associação é ativa quando eles primeiro criar uma sessão.
• OTHER_GROUPS Todos os usuários são membros deste grupo. Ele é usado como um
genérico
sessõespara
que qualquer
estão em grupos não explicitamente mencionados no plano Resource Manager
ativo.
• Grupos de demonstração Os grupos seguintes destinam-se a separação de diferentes tipos de
trabalho: BATCH_GROUP, DSS_CRITICAL_GROUP, DSS_GROUP, ETL_GROUP,
INTERACTIVE_GROUP e LOW_GROUP.
• ORA $ Autotask As sessões em execução as autotasks será executado sob este grupo.
• ORA $ APPQOS_0 através ORA $ APPQOS_7 Estes oito grupos são usados se Qualidade
deServiço foi habilitado; isto é aplicável somente aos sistemas em cluster.

Para ver os grupos em seu banco de dados, consultar os pontos de vista


DBA_RSRC_CONSUMER_GROUPS
DBA_USERS. e de consumidores inicial definido para cada sessão no
Este último mostra o grupo
momento
Figura 20-1
da).conexão (ver
Figura 20-1 grupos de consumidores o Gestor de Recursos

Planos gerenciador de recursos

Um plano Resource Manager é de um certo tipo. O tipo mais básico (e mais comumente usada) de
plano
é aquele que aloca recursos da CPU, mas existem outros métodos de alocação de recursos. Muitos
planos pode
existem no banco de dados, mas apenas um plano está ativo a qualquer momento. Este plano se
aplica a toda
instância; todas as sessões são controladas por ele.
A seguir estão os recursos que podem ser controlados por um plano:

• O uso total da CPU para todas as sessões em um grupo


• Grau de paralelismo disponível para cada sessão em um grupo
• Número de sessões ativas permitidas por grupo
• Volume de espaço de undo permitido por grupo
• Tempo antes de terminar as sessões ociosas
• A duração máxima do tempo de execução de uma chamada em uma sessão, que também pode
acionar o interruptor
uma sessão de grupo
em outro

No exemplo de televendas, poderia haver três planos com base no uso da CPU. Um plano de dia
dar faria
prioridade ao grupo OLTP. Em momentos de pico de atividade, com o sistema funcionando à
capacidade, é possível que as sessões de usuários em outros grupos iria pendurar. À noite, um plano
plena
diferente
seria ativado que garante os empregos DSS será executado, embora talvez ainda não com a
prioridade
o grupo OLTP.
de Um plano de final de mês daria 100 por cento dos recursos para o grupo LOTE, se
exige isso.
Um plano é constituído por um número de directivas. Cada directiva atribui recursos a um
em um
determinado
nível de prioridade
grupo particular. Onze planos são configurados no momento da criação do
banco de dados:
• O INTERNAL_PLAN não é para uso normal; ele desabilita o Gerenciador de recursos.
• O DEFAULT_PLAN tem três directivas (ver Figura 20-2 ). A primeira afirma que a prioridade
nível 1, a mais alta prioridade, todas as sessões ligada ao grupo SYS_GROUP consumidor
tomar 90 por cento dos recursos da CPU. sessões OTHER_GROUPS são garantidos pelo
pode
menos
por cento,
9 eo ORA $ Autotask grupo 1 por cento.
• A DEFAULT_MAINTENANCE_PLAN (mostrado na Figura 20-2 ) aumenta a percentagem
derecursos garantidos para tarefas de manutenção e outros usuários a 25 por cento.
• O plano INTERNAL_QUIESCE tem uma finalidade específica coberto mais tarde neste
capítulo;
congelarserá
todas as sessões, exceto aquelas dos membros SYS_GROUP.
• A MIXED_WORKLOAD_PLAN (também mostrado na Figura 20-2 ) dá prioridade ao
SYS_GROUP, então o INTERACTIVE_GROUP, e então o BATCH_GROUP. De outros
planos de demonstração são DSS_PLAN e ETL_CRITICAL_PLAN.
• A ORA $ AUTOTASK_PLAN é usado pelo sistema Autotask e não pode ser ajustado.
• A ORA $ ROOT_PLAN é relevante apenas para o banco de dados recipiente multitenant.
• A ORA $ QOS_PLAN é usado pela qualidade do sistema de serviço.

Para ativar um plano, definir o parâmetro de instância RESOURCE_MANAGER_PLAN. Isso


automaticamente
pode ser definido
pelo Escalonador (descrito no Capítulo 21 ), manualmente com uma ALTER
SYSTEM
comando, ou através de programação com o DBMS_RESOURCE_MANAGER.SWITCH_PLAN
procedimento. Após a criação de um banco de dados com o banco de dados de configuração
Assistant (DBCA),
Scheduler será configurado
o para activar o DEFAULT_PLAN durante as horas normais de trabalho e
DEFAULT_MAINTENANCE_PLAN à noite e fins de semana. Supõe-se que esses planos será
o
apropriada para a maioria dos sites. Eles dão a prioridade DBA funcionários de topo, seguido pelos
usuários,que
recursos e restringir
podem sera tomadas pelos trabalhos de manutenção.
Figura 20-2 As directivas do DEFAULT_PLAN, o DEFAULT_MAINTENANCE_PLAN,
eo MIXED_WORKLOAD_PLAN

EXAME TIP Os RESOURCE_LIMITS parâmetro de instância não tem nada a ver com Resource
Gerente. Ele pertence ao antigo método de controlar os recursos através de perfis de banco de dados.

Resource Manager funciona em um modelo “trickle-down”. Todos os recursos não utilizados em


nível
umaestão
prioridade
disponíveis para o nível inferior para baixo, e dentro de um nível de quaisquer recursos
não sãoestão
grupo necessários por um
disponíveis para os outros grupos. Assim, se o DEFAULT_PLAN está habilitado e
nenhum membro
SYS_GROUP estádafazendo nada, toda a máquina está disponível para as sessões OTHER_GROUPS,
exceto para 1 por cento, o que pode ser usado pelo grupo ORA $ Autotask se precisa dele.

Configuration Manager Resource


A PL / SQL API pode ser usado para administrar Resource Manager. Essa interface de programação
de aplicações

(API) consiste em dois pacotes: DBMS_RESOURCE_MANAGER_PRIVS e


DBMS_RESOURCE_MANAGER. DBMS_RESOURCE_MANAGER_PRIVS é usado para
colocar
em grupos
os usuários
de consumidores e também para conceder o privilégio de sistema necessário administrar
Manager (ver Figura 20-3 ).
recursos
Figura 20-3 pacote O DBMS_RESOURCE_MANAGER_PRIVS

Aqui é como dar usuário JOHN a capacidade de administrar Resource Manager, com o
capacidade de repassar o privilégio de outros usuários:

Esta chamada de procedimento concede o privilégio de sistema ADMINISTER Resource Manager.


Vocêesta
veja podeconcessão consultando a visão DBA_SYS_PRIVS. Para adicionar um usuário a um grupo,
use uma chamada, como
esta:

Esta chamada acrescenta Roopesh ao OLTP grupo, mas sem dar-lhe a capacidade de adicionar outros
usuários
o grupo. Se
a Roopesh é agora um membro de vários grupos, você deve nomear um como seu padrão

grupo. Isso requer um procedimento em um pacote diferente.

O pacote DBMS_RESOURCE_MANAGER é usado para criar grupos de consumidores, planos


directivas.
e Ele também é usado para criar a “área pendente.” Antes de qualquer trabalho pode ser
feito com
objetos recurso você deve criar uma área pendente, que é uma área de memória no Sistema Global
Manager,
Área (SGA) usado para armazenar os objectos enquanto estão a ser configurado. Um plano pode
de
consistir eme cada
directivas, muitos
directiva é criada de forma independente; portanto, seria possível criar um
plano totalmente impossível, que pode, por exemplo, alocar 500 por cento da CPU. A área pendente
éfornecidas para evitar esta possibilidade. O plano é criado na área pendente, e em seguida, quando
ele é validado para verificar se ele faz sentido. Só então é que o plano de ser salvo para os dados
completo,
dicionário.
No momento da conexão, a sessão vai pegar o grupo de consumidores inicial atribuído a esse
é umusuário.
membro Sede
o usuário
vários grupos de consumidores, a sessão pode ser ligado a um grupo diferente do
mais tarde. Isso pode ser feito manualmente ou usando técnicas mais avançadas automaticamente,
consumidor
de acordo com o trabalho que a sessão está fazendo.
Qualquer usuário pode alternar seu grupo consumidor ativo para qualquer um dos grupos dos
quais fazem
utilizando um membro
o procedimento SWITCH_CURRENT_CONSUMER_GROUP no DBMS_SESSION
pacote. Alternativamente, um usuário com o privilégio de administrar Resource Manager pode
mudar outra
sessão sobre usando um dos dois procedimentos no pacote DBMS_RESOURCE_MANAGER. o
SWITCH_CONSUMER_GROUP_FOR_USER procedimento irá mudar todas as sessões de logon
com um
determinado nome de usuário, ou SWITCH_CONSUMER_GROUP_FOR_SESS vai mudar um
sessão, identificado por SID e SERIAL #.
particular

Acesso e criar planos de recursos


Um plano consiste em um conjunto de directivas que dividem os recursos entre grupos de
consumidores.
princípios podem
Os ser
seguintes
usados para controlar o seguinte:

• método de CPU
• Número de sessões ativas
• Grau de paralelismo
• tempo de execução da operação
• Tempo ocioso
• Volume de dados undo

Método CPU
Continuando o exemplo de televendas, o plano de dia daria o máximo de recursos para o OLTP
grupo. Todas as outras sessões irá travar se os usuários OLTP realmente precisa fazer toda a
máquina. O único
excepção é o SYS_GROUP. Você deve sempre dar a prioridade SYS_GROUP sobre qualquer outra
coisa.
Se você, o DBA, precisa fazer algo no sistema de produção (como reconstruir um índice quebrado
Fazendo uma restauração e recuperação), você deve ser capaz de fazê-lo o mais rápido possível. O
ou
plano poderia ser semelhante
esta:

Há oito possíveis níveis de prioridade; este plano utiliza quatro deles. Todos os recursos da CPU
Umnãonívelutilizado
escorremnapara o próximo nível. Quando este plano estiver ativa, o SYS_GROUP no nível
1 pode, se assumir toda a máquina; todas as outras sessões irá travar. Mas isso não deve acontecer;
necessário,
funcionamento normal, há ciclos de CPU será tomada pelo SYS_GROUP, por isso toda a máquina
dentro
disponível no nível 2, onde os usuários OLTP pode usar tudo. Quaisquer recursos da CPU eles não
será
precisam
para baixodepara
queda
o nível 3, onde são divididos 50/50 entre o DSS e as sessões de lote. Se, após
os OLTP, DSS e usuários LOTE ter tomado o que eles precisam, alguma capacidade ainda resta, será
disponível para membros de outros grupos. É possível, nos momentos em que os usuários OLTP
estãosem
uso trabalhando
parar e CPU atingiu 100 por cento, que as sessões DSS e batch irá travar.

EXAME TIP A CPU total atribuído em cada nível não pode exceder 100 por cento. Se isso
acontecer,
área pendente
o irá falhar para validar, e o plano não serão salvas no dicionário de dados. É possível
ter um plano que aloca menos de 100 por cento em um nível, mas há pouca finalidade em fazer isto.

O plano noturno terá configurações diferentes.

Tal como acontece com o plano durante o dia, se o SYS_GROUP precisa fazer algo, ele vai ter
no nível
prioridade.
2, os usuários
Mas DSS e batch são garantidos o tempo de processamento. Eles ainda não têm
tão alto umque o grupo OLTP, mas suas sessões não irá travar. O plano final do mês pode mudar esta
prioridade

mais distante.
Quando este plano está ativo, os trabalhos em lote terá prioridade sobre todos os outros, levando
máquina,
a todase necessário. Este seria aconselhável se o processamento do final do mês significa
realmente
sistema não
que
é utilizável,
o por isso é vital para fazê-lo o mais rápido possível.

DICA Se a CPU não está funcionando a utilização de 100 por cento, estes planos não terá nenhum
efeito. Eles
impactar somente
têm uma
se a capacidade da CPU não pode satisfazer as exigências sobre ele.

Uma variação do método de CPU é que o “grupo” em si pode ser um plano. É possível por este
método para configurar uma hierarquia, onde um plano de nível superior aloca recursos entre
subplanos.pode
subplanos Estesentão alocar recursos entre grupos de consumidores. Um caso em que isso pode ser
aplicável seria um provedor de serviços de aplicação. Talvez você tenha instalado um aplicativo,
como um conjunto de contabilidade, e você aluga tempo com ele para vários clientes. Cada cliente
terá a sua
grupos próprios de usuários. Seu plano de alto nível vai dividir recursos entre subplanos para cada
cliente,
talvez de acordo com a quantidade que eles estão pagando para o acesso ao serviço. Então, dentro
dessa
os clientes
divisão,
podem cada alocar recursos entre os grupos de consumidores.

EXAME TIP Cada plano deve incluir uma directiva para os OTHER_GROUPS grupo; caso
contrário, falhará,
validação o e você não pode salvar o plano da área pendente para o dicionário de dados.

Criação de um plano como o plano durante o dia que acabamos de descrever requer uma série de
através
chamadas
da API.deOprocedimento
primeiro passo é criar a área pendente.

Você, então, criar o plano.

Em seguida, você cria as directivas dentro dele.

Finalmente, validar a área pendentes e (se a validação retorna com êxito) salvar o plano para o
dicionário de dados.
Aqui está como ativar o plano:

A utilização do Método do Ratio CPU


Há uma técnica alternativa para alocar recursos de CPU. Ao invés de codificação de uso de CPU
como um
porcentagem, você pode especificar relações-e deixar a Oracle trabalhar as porcentagens. No
exemplo televendas
na seção anterior, os recursos da CPU no nível 2 para o plano de noite foram as seguintes:

• OLTP 50%
• DSS 25%
• LOTE 25%

Se você decidir adicionar um quarto grupo (chamemos-lhe WEB) e quer torná-lo igual em
e DSS
prioridade
casal e de
à OLTP
lote, você vai ter que mudar todas as directivas para alcançar este objectivo.

• OLTP 33%
• WEB 33%
• DSS 17%
• LOTE 17%

O método da razão permite especificar proporções. Os valores absolutos não têm nenhum
exemplo,
significado.
as proporções
Para originais poderia ter sido como segue:

• OLTP 20
• DSS 10
• LOTE 10

Agora, para adicionar o grupo WEB com uma prioridade igual a OLTP, você tem que adicionar
directiva-WEB
apenas um novo
20 e deixar os outros inalterados.

A sessão ativa Método Piscina


Pode ser que a investigação tem demonstrado que um determinado número de postos de trabalho
podemde
grupo serusuários
executadas
sem simultaneamente
problemas, mas que,
por um
se este número for excedido, outros grupos terão
dificuldades. Por exemplo, pode ser que a empresa de televendas tem seis contadores de gestão,
logon com nomes de usuários Oracle no grupo DSS. Se um, dois, ou mesmo três deles gerar
relatórios ao mesmo tempo, está tudo bem, mas se quatro ou mais tentativa de executar relatórios
simultaneamente,
usuários OLTP começam
o a sofrer.
O método piscina sessão ativa do Gerenciador de Recursos permite que o limite DBA o número
que de
será
declarações
executado simultaneamente para um grupo, sem restringir o número real de logins.
o exemplo, todos os seis contadores podem ser conectados, e se três deles apresentar relatórios,
Continuar
todos elesmas
executar, vão se uma quarta submete um trabalho, ele será fila até que um dos outros três
acabamentos.
plano a noite
iria remover todas as restrições dessa natureza.
Uma sessão ativa é definida como uma sessão que está executando uma consulta ou como uma
sessãonão
transação queconfirmada.
está em um Se o processamento paralelo tenha sido activado, os processadores
paralelos
não contam individuais
contra o pool de sessão; em vez disso, toda a operação paralela conta como um activa
sessão. Por padrão, a sessão será na fila indefinidamente, mas se você quiser, você pode definir um
limitesessão
uma de tempo.
da piscina
E se não se torna disponível dentro deste limite, a instrução é abortada, e um
erro é retornado para a sessão que emitiu. Esta chamada vai ajustar o plano DIA para limitar a DSS
grupo para três sessões ativas, filas pedidos de um minuto antes de retornar um erro.
EXAME TIP Uma sessão que não está realmente fazendo alguma coisa ainda vai contar contra a
sessão ativa
piscina para o grupo se ele fez uma mudança e não cometeu.

Para acompanhar o efeito da piscina sessão ativa, o CURRENT_QUEUE_DURATION coluna


V $ SESSION vai mostrar para cada sessão na fila o número de segundos que tem estado à espera. o
visão V $ RSRC_CONSUMER_GROUP dá uma imagem global, mostrando quantas sessões para
grupo são enfileiradas em qualquer dado momento.
cada
E se a piscina sessão ativa foram fixados em zero para todos os grupos? O resultado seria que
todos
sessões iria pendurar. Esta é, de fato, um recurso útil, e é usado pelo comando ALTER
SISTEMA QUIESCE restrito. Este comando ativa o plano Resource Manager
INTERNAL_QUIESCE, que define o pool de sessão ativa para todos os outros que o SYS_GROUP
para zero. O efeito é que as declarações em andamento continuará até que terminem mas que
grupos
ninguém
de membros(além
da SYS_GROUP) pode emitir quaisquer mais declarações. Se o fizerem, a sessão irá
travar.
Com efeito, o banco de dados é congelado para todos, mas os administradores. Isso pode ser
inestimável
sistema parapara
um momento
obter um estábulo
de trabalhos de manutenção.
Para cancelar o quiesce, assuntos ALTER SYSTEM UNQUIESCE.

TIP Quiesce é inestimável para operações DDL que requerem um curto bloqueio objeto exclusivo,
como um
índice online reconstruir: imobilizar o banco de dados, lançar a operação, e depois unquiesce. a
reconstrução
operação continuará, e os usuários podem não ter notado que eles nunca foram bloqueados.

Limitando o grau de paralelismo


processamento paralelo, tanto para as instruções SELECT e para DML, pode melhorar muito o
das demonstrações individuais, mas o preço que você paga pode ser um impacto em outros usuários.
desempenho
Pode ser que
contadores deogestão
seu descobriram que, se executar uma consulta com o grau de set paralelismo
50 (e você não pode controlar este-é feito por dicas no código que escrever), o relatório gera mais
Mas você realmente quer uma sessão para tomar 50 servidores de execução paralela da piscina? Isso
rápido.
não pode
deixar o suficiente para outros trabalhos. Além disso, a consulta pode agora correr mais rápido, mas
prejudicar
do resto doobanco
desempenho
de dados. Resource Manager pode controlar isso definindo um limite rígido sobre
o número de
processos paralelos que cada sessão de qualquer um grupo está autorizado a usar. No plano de dia,
exemplo, você pode limitar os grupos DSS e lote para não mais do que 4 por sessão, mesmo se eles
para
para 50, e não permitir sessões OTHER_GROUPS para usar o processamento paralelo em tudo. a
pedirem
plano poderia eliminar essas restrições. Aqui está um exemplo:
noite

Controle de trabalhos de Tempo de Execução


O problema de um grande desempenho matando trabalho para toda a gente é bem conhecido no
banco deGestor
mundo. dadosde Recursos resolve este problema proporcionando um mecanismo através do qual
grandes trabalhos
completamente eliminados
podem serdo sistema em determinados momentos. Alternativamente, uma sessão
pode ser
lançar permitidomas se for superior (ou seja susceptível de exceder) um limite de tempo, a sessão
o trabalho,
podeum
para ser grupo
comutada
de prioridade mais baixa. Isso permitirá que a declaração para executar, mas com
impacto
A seguir reduzido
estão os argumentos
sobre outrosrelevantes
usuários. para o DBMS_RESOURCE_MANAGER.CREATE_PLAN
procedimento DIRECTIVA:
• Switch_Group
• Switch_Time (medida como tempo de CPU)
• SWITCH_ELAPSED_TIME (medida como tempo de execução relógio de parede)
• SWITCH_ESTIMATE
• MAX_EST_EXEC_TIME

O Switch_Group nomeia um grupo de consumidores, provavelmente um com prioridade mais


plano,
baixa
ao na
qual a sessão será comutada se uma chamada demora mais do que o número de segundos
pela Switch_Time ou SWITCH_ELAPSED_TIME para ser concluído. Se SWITCH_ESTIMATE é
especificado
TRUE, a sessão será trocado antes da instrução começa a ser executado se o otimizador acha que
pode
demorar mais do que esse número de segundos. O argumento MAX_EST_EXEC_TIME irá
bloquear todos
declarações que o otimizador acredita que levaria mais tempo do que o número de segundos.

Terminar sessões de tempo ocioso


As sessões que não estão fazendo recursos da máquina desperdiçar nada. Cada sessão consiste, no
lado, de um processo de servidor e uma Área do Programa Global (PGA). Mesmo se a sessão não
servidor
está executando
declaração, um operacional ainda deve trazê-lo para a CPU de acordo com seu tempo-round-
o sistema
algoritmo de corte. Isso é conhecido como uma mudança de contexto . Cada mudança de contexto
robin
força
um monte
o computador
de trabalhoa fazer
como registros são carregados da memória principal, o estado da sessão está
marcada
os registros
e, em
sãoseguida,
zerados novamente. Se a PGA tem sido paginada para disco, que, também, deve ser
recarregado em
memória principal. O mecanismo servidor compartilhado, detalhado no Capítulo 14 , vai ajudar a
reduzir ocioso
processos, mas não pode fazer nada sobre o número de sessões. O Usuário áreas globais (UGAS) -in
o SGA, lembre-ainda serão ocupando memória, e Oracle ainda tem de verificar o estado do
sessão em uma base regular.
Resource Manager pode desconectar sessões que não estão funcionando, de acordo com dois
primeiro
critérios.
é simplesmente
o com base no tempo ocioso: Quanto tempo se passou desde que a sessão
executado
segunda uma declaração?
é mais o verifica não apenas quanto tempo desde uma sessão executado uma
sofisticado: Ele
declaração,
Também se mas
a sessão está segurando qualquer linha ou tabela bloqueios que estão bloqueando outras
sessões, que
problema muito
é ummais grave. Lembre-se de Capítulo 6 que uma enqueue bloqueio de linha realizada
por uma
fará outrasessão
sessão que precisa trancar a mesma linha para pendurar indefinidamente; isso pode causar
o
banco de dados inteiro para parar de funcionar se o problema se agrava de sessão para sessão. É
possível
DBA parapara
detectar
o este problema, identificar a sessão que está mantendo o bloqueio, e matá-lo, mas
este é um complicado
procedimento. Ao usar o Gerenciador de Recursos, você pode configurar assassinato automática de
todas as
outras sessões
sessõespara
quemais
bloqueiam
do que um determinado período de tempo.
Um ponto importante é que o “tempo ocioso” é o tempo que o processo do servidor tem sido
o usuário
ocioso,processo
não o tempo
tem sido
que ocioso. Por exemplo, o contador de gestão pode estar usando um
planilha como seu processo de usuário. Ele vai ter baixado algumas informações para que ele
funcione
antes de salvá-lo
localmentede volta para o banco de dados. Enquanto isso está acontecendo, o processo do
servidorpoderia
usuário é realmente
estar ocioso,
trabalhando
mas oflat out na planilha. Ele não ficará satisfeito se, quando ele tenta
passar a
informações de volta, ele descobre que você tê-lo desconectado e talvez perdido todo o seu trabalho
em andamento.
A seguir estão os argumentos para o DBMS_RESOURCE_MANAGER.CREATE_PLAN
procedimento de directiva que permitirá rescisão sessão ociosa:

• MAX_IDLE_TIME
• MAX_IDLE_BLOCKER_TIME

DICA Também é possível desconectar sessões usando perfis atribuídos a usuários nomeados, o que
deve habilitar com as RESOURCE_LIMITS parâmetro de instância. No entanto, o Gerenciador de
você
Recursos
melhor é uma para isso.
ferramenta

Restringindo Geração de Undo Dados


Gestão de dados
declarações devemde gerar
desfazer estava
dados coberto de
de desfazer, Capítulo
e esses 6 .devem
dados Todos ser
Data Manipulation
armazenados atéLanguage
que a
(DML)
transação foiou revertida. A Oracle não tem escolha sobre isso; É de acordo com as regras de um
confirmada
relacional
base de dados. Se você tiver configurado o parâmetro de instância UNDO_RETENTION e definir o
RETENÇÃO atributo garantia para a sua tabela de undo, os dados de desfazer pode muito bem ser
mantidos
um tempopor considerável após a transação tenha cometido.
Todos os seus dados de desfazer será gravado em uma única tabela de undo. Um problema
malpotencial
transaçãoéprojetado
que um poderia preencher esta área de armazenamento, a tabela de undo. Os
programadores
projetar transações
não grandes,
deve de longa duração. Em termos de negócios, no entanto, grandes
transações
para podem
preservar ser necessárias
a integridade do sistema. Por exemplo, contabilidade nominal de um pacote de
contabilidade
em parte, em um nãoperíodo
pode serde contabilidade e em parte no próximo, o que é uma impossibilidade em
acontabilidade.
rolagem de um Assim,
período para o próximo poderia significar atualizando milhões de linhas em
milharesmuitas
durante de mesashoras e, em seguida, cometer. Isso vai exigir uma tabela de undo o tamanho de
Júpiter e causará problemas de bloqueio de recordes como os blocos de grandes transações outro
também
trabalho.aA
quebrar transação
respostaum é negócio em muitas transações de banco de dados pequenas
éprogramaticamente.
um problema, volteSepara esteos desenvolvedores; não há nada que você como DBA pode fazer para
corrigi-lo.
Como DBA, no entanto, você pode evitar grandes transações por um grupo de usuários de encher
undo o tablespace. Se suas rotinas de lote não cometem regularmente, eles vão escrever um monte de
dados
não pode
de desfazer
ser substituído.
que Se muitos desses trabalhos em lote são executados simultaneamente, a
tabela de undo
encher-se pode ativo. Isso fará com que todas as transações de cessar, e não mais as transações
de desfazer
podem
até que começar
um deles comete. Gestor de Recursos fornece um mecanismo pelo qual a tabela de undo
pode com efeito ser dividida em áreas reservadas para diferentes grupos de consumidores.
Seus cálculos em desfazer gerados por segundo e sua retenção de undo desejado (como derivado
a visão V $ UNDOSTAT e suas exigências para consultas de longa duração e a consulta de flashback
capacidade) pode mostrar que a tabela de undo deve ser, por exemplo, 8GB. Para ser seguro, você
dimensionar-lo
a 12GB. Mas para garantir que as pequenas transações OLTP sempre terá espaço para os seus dados
de desfazer,
você pode limitar o espaço usado pelo grupo lote para, digamos, 6GB durante o horário normal de
atrabalho
atribuição
por de uma piscina de desfazer em um plano de Gerenciador de recursos. Para calcular o
espaço necessário
transações individuais,
para ovocê
undo pode consultar a visão V $ TRANSACTION enquanto a transação está
em
progresso. O USED_UBLK coluna mostra a quantidade de desfazer está a ser utilizado por cada
transacção activa.

EXAME TIP A piscina desfazer por grupo não tem nada a ver com quotas de espaços de tabelas,
que utilizador.
por são atribuídas
Você não pode sequer conceder quotas em espaços de tabela de undo.

Quando a quantidade de dados de desfazer ativa gerada por todas as sessões de um determinado
limite
grupo
de piscina,
de consumidores
ele não será
atinge
maisopossível
seu para os membros desse grupo para adicionar mais
desfazer a atual
transações ou para iniciar novas transações. Eles vão pendurar até que uma transação seja
confirmada,
espaço dentroliberando
da piscina. Enquanto isso, outros grupos podem continuar a trabalhar no restante do
undo
tablespace. Isto restringe o efeito de gerar muito desfazer a um grupo, em vez de ter ele
afetar todos os usuários. O argumento para o DBMS_RESOURCE_MANAGER.CREATE_PLAN
procedimento directiva que definirá uma piscina de desfazer é UNDO_POOL.

Exercício 20-1: Criar e implementar um plano Gestor de Recursos Não é um atalho para a
criação
um planodeResource Manager: uma única chamada de procedimento, CREATE_SIMPLE_PLAN.
Utilize de
gestão este para permitir
recursos em seu banco de dados.

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Criar alguns usuários e conceder-lhes o papel CONNECT.

3. Criar dois grupos de consumidores. É necessário criar uma área pendente em primeiro lugar.
4. Atribua os usuários a grupos e definir seu grupo de consumidores inicial.

5. Criar o plano.

6. Ative o plano.

Monitorar o Gerenciador de recursos


A configuração Resource Manager é documentado em um conjunto de pontos de vista DBA,
principalmente o
Segue:

• DBA_RSRC_PLANS Planos e status


• DBA_RSRC_PLAN_DIRECTIVES directivas do Plano
• DBA_RSRC_CONSUMER_GROUPS Os grupos de consumidores

A situação atual é documentado em $ vistas V:

• V $ SESSION O grupo de consumidores ativos de cada sessão


• V $ RSRC_PLAN O plano actualmente activa
• V $ RSRC_CONSUMER_GROUP Estatísticas para os grupos
Se a sessão foi impactado pelo Gerenciador de Recursos, este mostra-se como o resmgr evento
quantum, que será visível na coluna V $ SESSION.EVENT enquanto a sessão é na verdade
espera: cpu
esperando, assim como na visão V $ Session_event para o tempo acumulado esperou desde o
sessão começou.

NOTA É difícil testar o efeito de uma configuração Resource Manager, porque até que o sistema
torna-se estressado, ele não terá nenhum efeito. Isso pode significar que você não vê nenhuma
ocorrênciaevento
quantum do resmgr:
esperacpu
por meses, e então um dia todo mundo recebe-lo.

Exercício 20-2: testar e monitorar um Plano Gestor de Recursos Este exercício continua a partir
Exercício 20-1 , testando o efeito do plano.

1. Conecte-se ao banco de dados como usuário SYSTEM.


2. Restringir a instância de banco de dados usando núcleo apenas uma CPU para garantir a
contenção
sessões quando múltipla
de trabalhar simultaneamente.

3. Em mais dois SQL sessões * Plus, faça login como os usuários ACCT e balconista.

4. Na sessão SISTEMA, executar esta consulta para confirmar as associações de grupo de suas
sessões:

5. Na sessão SISTEMA, executar esta consulta para mostrar o uso da CPU por cada grupo até
agora:

Os valores para os grupos de DSS e OLTP será baixa e quase idêntica.


6. Em ambas as sessões funcionário e ACCT, executar esta consulta simultaneamente, e deixá-
lo correr por um
enquanto:

7. Repetir a consulta do passo 5. Note-se que o grupo OLTP usou aproximadamente quatro
vezes
tanto
mais
CPU como o grupo DSS.
8. Executar esta consulta para ver o tempo de espera em sessões causadas pelo Gerenciador de
Recursos:

A Figura 20-4 mostra os resultados típicos de etapas 7 e 8, especificamente, um muito maior


tempo
para o usuário
de espera
ACCT que o usuário balconista.
Figura 20-4 Acompanhamento do efeito de um plano Resource Manager

9. Arrumar soltando os usuários e, em seguida, retornar o banco de dados ao seu recurso padrão
Manager e configuração de CPU, reiniciando o exemplo.

Broca Two-Minute
Configurar o Database Resource Manager
• Gerente de Configuração dos Recursos com duas APIs: DBMS_RESOURCE_MANAGER e
DBMS_RESOURCE_MANAGER_PRIVS.
• Habilitar Resource Manager, definindo a instância RESOURCE_MANAGER_PLAN
parâmetro, de forma interativa ou através do Scheduler.
• Um plano é um conjunto de directivas alocação de recursos para grupos de consumidores.
• Para configurar o Gerenciador de recursos, faça o seguinte: Em primeiro lugar, criar grupos de
consumidores;
criar um plano;
segundo,
Em terceiro lugar, criar as directivas do Plano que alocam recursos para
grupos.
Acesso e criar planos de recursos
• Um plano pode limitar vários recursos: CPU, sessões ativas, o tempo de execução de instrução
SQL, o uso paralela, e desfazer espaço.
de consulta
• O plano padrão (chamado DEFAULT_PLAN) dá prioridade à SYS_GROUP e menor
prioridade ao grupo ORA $ Autotask.

Monitorar o Gerenciador de recursos


• A configuração Resource Manager é documentado em um conjunto de views de dicionário de
dados,
DBA_RSRC_%. Para monitorar Resource Manager, consultar os pontos de vista de
desempenho dinâmico.

• Resource Manager não parece ter qualquer efeito até que o sistema está sob stress.

Auto teste
1 . Há várias etapas envolvidas na configuração do Gestor de Recursos:
uma. Atribuir usuários a grupos de consumidores.
b. Criar grupos de consumidores.
c. Criar directivas.
d. Criar a área pendente.
e. Criar o plano.
f. Submeter a área pendente.
g. Validar a área pendente.
Qual é a ordem correta para realizar estes passos? (Escolha a melhor resposta.)
A. d, e, g, f, c, b, um
B. d, b, A, E, C, G, F
C. d, b, a, c, e, g, f
D. e, c, d, b, a, f, g
E. b, a, d, e, c, f, g
2 . Qual das seguintes afirmações estão corretas sobre os usuários e grupos de consumidores?
(Escolha tudocorretas.)
respostas
A. Um usuário pode ser um membro de apenas um grupo de consumidores.
B. Um usuário pode ser um membro de vários grupos de consumidores.
C. O SYS_GROUP é reservado para o utilizador SYS.
D. Por padrão, o grupo inicial para todos os usuários é DEFAULT_CONSUMER_GROUP.
3 . Algumas ações na API do Gestor de recursos são feitas com os procedimentos no pacote
DBMS_RESOURCE_MANAGER_PRIVS, e outros são feitos com procedimentos no
pacote DBMS_RESOURCE_MANAGER. Qual pacote é necessário para cada uma delas
ações? (Escolha a melhor resposta.)
A. Conceder o privilégio de administrar Resource Manager
B. Colocar usuários em grupos
C. Remoção de grupos de utilizadores
D. comutação grupo efetivo de uma sessão
E. Criação de grupos de consumidores
F. Configurando como mapear sessões para grupos
4 . Planos gerenciador de recursos pode usar uma série de métodos para controlar recursos.
Qual dos
seguinte são possíveis? (Escolha três respostas corretas.)
A. uso da CPU
B. uso da cota Tablespace
C. Número de sessões ativas
D. Número de sessões ociosas
E. O volume de dados de redo gerado
F. volume de dados de desfazer gerado
5 . Um plano método CPU aloca recursos em dois níveis, como segue:
Nível 1: SYS_GROUP, 50% OLTP, 50%
Nível 2: DSS, 50% LOTE, 50%
Se os únicos usuários conectados são do grupo LOTE, qual a percentagem de CPU que
usar? (Escolha a melhor resposta.)
podem
A. Eles podem usar de 12,5 por cento.
B. Eles podem usar 25 por cento.
C. Eles podem usar 50 por cento.
D. Eles podem usar 100 por cento.
E. O plano não irá validar porque ele tenta alocar 200 por cento de recursos da CPU.
6 . Você cria um plano Resource Manager limitando a piscina sessão ativa para o DSS grupo 3.
O que acontecerá se três membros do grupo está conectado e uma quarta tentativa membros
conectar? (Escolha a melhor resposta.)
A. A nova sessão não será capaz de conectar até que um desconecta sessão existentes.
B. A nova sessão será capaz de se conectar, mas irá travar imediatamente.
C. A nova sessão será capaz de se conectar, mas será capaz de executar apenas consultas,
nãoafirmações.
DML
D. Quaisquer declarações as novas questões de sessão pode travar, dependendo de outra
atividade.
7 . Se o plano Resource Manager ativa especifica que as sessões pertencentes a um
determinado
pode ter apenas
grupo quatro servidores de execução paralela, o que acontecerá se uma sessão
nesse grupo
emite uma declaração que pede seis servidores de execução paralela? (Escolha a melhor
resposta.)
A. A declaração não será executado.
B. A declaração será executado com quatro servidores paralelos.
C. Ele vai depender da configuração do parâmetro instância PARALLEL_MIN_PERCENT.
D. Ela dependerá da configuração do exemplo PARALLEL_AUTOMATIC_TUNING
parâmetro.
8 . Ao usar o Gerenciador de recursos para definir uma piscina desfazer, o que acontece?
(Escolha
responda.)
o melhor

A. Se um usuário excede sua cota na tabela de undo, sua sessão irá travar.
B. Se um usuário excede sua cota na tabela de undo, a declaração corrida vai ser rolada
para trás, mas o resto da declaração permanecerá intacto.
C. Se um grupo preenche a sua piscina desfazer, todas as operações do grupo irá travar até
quecompromete,
uma sessão rola para trás, ou é encerrado.
D. O efeito depende se retenção de garantia está habilitado para o undo
tablespace.
9 . Como você pode determinar qual é o plano Resource Manager ativo? (Escolha duas
respostas.)
A. Use parâmetro show RESOURCE_LIMIT.
B. Use parâmetro show RESOURCE_MANAGER_PLAN.
C. Pesquisa da vista DBA_RSRC_PLANS.
D. Pesquisa a vista V $ RSRC_PLAN.
10 . Você percebe que as sessões foram esperando na resmgr: cpu quantum esperar evento. o que
isso pode indicar? (Escolha a melhor resposta.)
A. Que nenhum plano Resource Manager foi habilitado
B. Que o sistema atingiu a utilização da CPU de 100 por cento
C. Que o número de sessões atingiu o limite imposto pelo parâmetro SESSIONS
D. Que o cpu_count foi excedido

Respostas de auto-teste
1. C . Esta é a sequência correcta, apesar d, b, e, c, g, f, a, também irá funcionar.
A , B , D , e E são incorrectas. Nenhuma dessas seqüências vai funcionar porque o
área pendente
deve estar ativo quando se trabalha com grupos e planos e não pode ser validada após
ele submetido.
foi tem
2. B . Um utilizador pode ser um membro de diversos grupos, embora apenas uma adesão
a qualquer
é activamomento.
em
A , C , e D estão incorrectos. A está incorreta porque pode haver uma relação muitos-
para-muitos
relação entre os utilizadores e os grupos. C está incorreta porque é possível colocar outros
usuários
no grupo SYS. D está incorreta porque SYS e SYSTEM são, por padrão, na
grupo SYS_GROUP.
3. A , B , e C : DBMS_RESOURCE_MANAGER_PRIVS; D , E , e F :
DBMS_RESOURCE_MANAGER. O pacote DBMS_RESOURCE_MANAGER_PRIVS
trabalha com a segurança, enquanto o pacote DBMS_RESOURCE_MANAGER administra
todo o resto.
Todas as outras possibilidades estão incorretas.
4. A , C , e M . O método ênfase controla o uso da CPU. Sessões ativas e o volume
de desfazer os dados são dois dos métodos absolutos.

B , D , e E são incorrectas. Uso de espaço de tabela pode ser limitada por quotas, e não
Gerente.
por recurso
sessões ociosas podem ser cronometrado para fora, mas não em número limitado.
volumepossível.
limite de Refazer não é um
5. D . Se não houver outras sessões estão conectados, todos os recursos da CPU estará
sessões conectados.
disponível para o
A , B , C , e E são incorrectas. A , B , e C são incorrecta porque a interpretar mal
“Trickle-down” natureza da alocação de recursos. E é incorrecta porque ele não tem em
consideração
CPU é alocadaque
em cada nível de prioridade, não entre níveis de prioridade.
6. D . O pool de sessão não limita o número de sessões, apenas o número de ativo
sessões.
A , B , e C são incorrectas. A está incorreta porque ele descreve o efeito de limites de
sessõesnão Resource Manager. B está incorreta porque este resultado poderia ocorrer
em perfis,
apenas se
piscina o ativa estavam cheios. C está incorreta porque Resource Manager não faz
sessão
distinção
entre os tipos de instruções SQL.
7. B . O limite substituirá o pedido.
A , C , e D estão incorrectos. A está incorreta porque a intenção do Gestor de recursos
paranão é
bloquear declarações, mas para controlá-los. C e D são incorrecta porque eles referem-
se a
parâmetros de instância que impulsionam o otimizador, não Resource Manager.
8. C . Desfazer piscinas referem-se a grupos inteiros, e não a usuários individuais ou
a suasessões.
piscina,Setodas
um as
grupo
sessões
preenche
que fazem parte do grupo irá travar até que um emite um
COMMIT ou um
ROLLBACK.
A , B , e D são incorrectas. Quotas de espaços de tabelas são relevantes para não
desfazer
Gerente em geral,Retenção
de Recursos. nem de garantia não se aplica qualquer um.
9. B e C . O plano ativo é definido com o parâmetro RESOURCE_MANAGER_PLAN e
exibidas na vista de desempenho dinâmico V $ RSRC_PLAN.
A e D são incorrectas. A está incorreta porque o parâmetro RESOURCE_LIMIT é
relevantes para os perfis, não para Resource Manager. D é incorrecta porque a
DBA_RSRC_PLANS vista dicionário de dados mostra a configuração do Gestor de
não seu estado atual.
Recursos,
10. B . Uma vez que um sistema atinge a utilização da CPU de 100 por cento, um plano de
CPUaentrará
começar limitarem vigor
o uso de esessões.
A , C , e D estão incorrectos. A está incorreta porque se nenhum plano está activada,
nãosobre
espera podeeste
haver
evento. C e D são incorrecta porque, embora estes parâmetros do controlo
o uso de recursos, eles não fazem isso através do plano de Gerenciador de recursos.
CAPÍTULO 21

o Scheduler

Objetivos do exame
• 062.14.1 usar o Oracle Scheduler para simplificar as tarefas de gerenciamento
• 062.14.2 Chains Use trabalho para executar uma série de tarefas relacionadas
• 062.14.3 Use Scheduler Jobs em sistemas remotos
• 062.14.4 Uso avançado Scheduler recursos para Priorizar Jobs
Este capítulo introduz o Scheduler, que é uma facilidade para automatizar a execução dos trabalhos.
estes postos
podem ser procedimentos
de trabalho que são executados dentro do banco de dados, ou podem ser os comandos
do sistema
scripts. Elesoperativo
podem ser
e executados localmente ou em máquinas remotas e bases de dados. Eles
podem ser executados
programação, decom
de acordo acordo com um de um trabalho anterior, ou em resposta a eventos. O
os resultados
Schedulercom
integrado é o Gerenciador de recursos.

Uma alternativa (ou mais) mecanismo de escalonamento é DBMS_JOB. No entanto, o Scheduler


maisestá
capaz
longe
(e complexo). Uma instalação de trabalho de agendamento também é fornecido pelo
éEnterprise
claro queManager, e operacional terá um agendador de tarefas. O Scheduler é provavelmente
o seu sistema
sofisticado do que qualquer solução alternativa.
mais

Usar o Oracle Scheduler para simplificar as tarefas de


gerenciamento
Você pode configurar o Scheduler através da criação de vários objetos. No mínimo, um trabalho é
tudo o que éMas, geralmente, mais objetos estarão envolvidos, pelo menos, programas e horários.
necessário.
Em muitos classes de trabalho, janelas e cadeias também são úteis. E no nível da instância, o
ambientes,
processos em segundo plano controlar o ambiente e executar os trabalhos.

A Arquitetura Scheduler
O dicionário de dados inclui uma tabela que é o ponto de armazenamento para todos os trabalhos
Scheduler.
tabela através
Você
dapode
vista consultar
DBA_SCHEDULER_JOBS.
este O processo de fundo fila de trabalho do
coordenador
(o processo CJQ0) monitora esta tabela e, quando necessário, inicia os processos de fila de trabalho
(o J nnn para executar os trabalhos. O processo CJQ0 é iniciado automaticamente se houver
processos)
algum definido
trabalhos do Agendador
e de ativos. Os J nnn processos são lançados sob demanda, embora o número
máximo pelo
limitada é parâmetro job_queue_processes exemplo, que pode ter qualquer valor de 0 a
1000 (o padrão). Se definido como zero, o Scheduler não funcionará.
O coordenador fila de trabalhos pega empregos da tabela de fila de trabalhos e os passa para a
fila de para
processos trabalho
execução. Ele também lança e finaliza os processos de fila de trabalhos na demanda.
os processos em execução, consultar a visão V $ PROCESS.
Ver

Esta consulta mostra que o coordenador fila de trabalhos e dois processos de fila de trabalho
Unixestão em execução.
exemplo, Em um
os processos serão os processos do sistema operativo separadas (como neste
consulta);do
instância emWindows,
um eles são executados como threads dentro do processo ORACLE.EXE.
EXAME TIP O parâmetro exemplo job_queue_processes deve ser maior que zero ou o
Scheduler não pode ser executado. Ele é 1000 por padrão. O coordenador fila de trabalhos será
sempre correndo,
nenhum definidosse houverempregos.
e ativos

Jobs definidos como procedimentos executados dentro do banco de dados. Jobs também pode ser
Comandos
definidaoucomo
shellsistema
scripts operacional
de; estes irão executar como tarefas do sistema operacional externas. O
fatoremprego
um desencadeante
pode serpara
um tempo ou um evento. empregos baseados no tempo pode executar uma ou
várias vezes
empregos de acordo
baseados em com um cronograma.
eventos executar quando surgem determinadas condições. Há alguns eventos
pré-configurados,
usar eventos definidos
ou você
pelopode
usuário. Jobs pode ser conectado em uma cadeia usando regras simples
para a ramificação
dependendo o sucesso ou fracasso de um trabalho.
Um recurso avançado do Scheduler é associá-lo com o Gestor de Recursos. Pode ser que
determinados postos de trabalho deve ser executado com certas prioridades, e isto pode ser
conseguido
grupo de consumidores
ligando um Resource
trabalho para
Manager
um via uma classe trabalho. Também é possível usar o
Scheduler
um para ativar
plano Resource Manager, ao invés de ter de ativar um plano manualmente, alterando o
parâmetro de instância RESOURCE_MANAGER_PLAN ou usando o
DBMS_RESOURCE_MANAGER.SWITCH_PLAN chamada de procedimento.
A interface de programação de aplicações (API) para administrar o Scheduler é o
pacote DBMS_SCHEDULER. Além disso, Enterprise Manager fornece uma interface gráfica.

Scheduler Objects
O objeto mais básico no ambiente Scheduler é um trabalho. Um trabalho pode ser completamente
auto-suficiente,
definir a ação a ser tomada e quando a tomá-lo. Em uma configuração mais avançada, o trabalho é
parte da estrutura que consiste de uma série de objectos de vários tipos Scheduler.
apenas

Empregos
Um trabalho especifica o que fazer e quando fazê-lo. “O que” pode ser um bloco PL anônima / SQL
(que
poderia consistir em apenas uma única instrução SQL), a / procedimento armazenado SQL PL (que
poderia invocararmazenado
procedimento um Java ou um procedimento externo), ou qualquer arquivo executável
armazenado
(Seja um binário
no sistema
executável
de arquivos
ou um script
do servidor
shell). Uma capacidade particularmente forte (para além do
âmbito
o OracledoCertified Professional [OCP] currículo) é o trabalho remoto externo, que é executado em
um
máquina separada. O “quando” especifica o timestamp em que para lançar o trabalho e uma
intervalo para corridas futuras ou o fato gerador.
repetição
Você tem várias opções ao criar um trabalho, como mostra de olhar para o
procedimento DBMS_SCHEDULER.CREATE_JOB. Este procedimento está sobrecarregado; ele
tem nada
seis formas.
menos
A Figura
que 21-1 mostra parte da saída a partir de um DESCREVER do
embalagem, com as duas primeiras formas de CREATE_JOB.
DBMS_SCHEDULER
Figura 21-1 A especificação do procedimento CREATE_JOB

Todas as formas do procedimento CREATE_JOB deve especificar um JOB_NAME. Este deve


dentro
ser do
exclusivo
esquema onde o trabalho é criado. Note-se que os trabalhos são objetos de esquema. Em
seguida,
forma dotomar
procedimento,
o primeiroo JOB_TYPE deve ser um dos seguintes:

• PLSQL_BLOCK Um anónimo PL / SQL bloco


• STORED_PROCEDURE Um chamado procedimento PL / SQL
• EXECUTABLE Qualquer coisa executável a partir de um sistema operacional (OS) alerta
• CADEIA Um objeto de cadeia chamado trabalho
• EXTERNAL_SCRIPT Um script lançado pelo interpretador de comandos do OS
• SQL_SCRIPT A SQL * Plus roteiro
• BACKUP_SCRIPT roteiro Uma RMAN

O JOB_ACTION é o comando ou script ou cadeia para ser executado. o


estados de parâmetro numerador quantos argumentos a JOB_ACTION deve tomar.
Os argumentos restantes da primeira forma do processo mostrado na Figura 21-1 são detalhes de
quando e com que frequência para executar o trabalho. A primeira execução será no START_DATE;
aREPEAT_INTERVAL define uma frequência de repetição, tal como diariamente, até END_DATE.
aJOB_CLASS
ver com as prioridades
tem e integração do Scheduler com Resource Manager. o HABILITADO
argumento determina se o trabalho pode realmente ser executado. Talvez surpreendentemente, o
padrão é Se um trabalho não é criado com este argumento na verdade, não pode ser executado
FALSO.
(manualmente
por meio de umaouprogramação) sem ser activada em primeiro lugar. Finalmente, AUTO_DROP
controla se para soltar o

definição de trabalho após a END_TIME. O padrão é verdadeiro. Se um trabalho é criado sem


agendamento
informações, será executada assim que ele estiver habilitado e, em seguida, caiu imediatamente se
AUTO_DROP
em TRUE, que é o padrão.
A segunda forma de CREATE_JOB mostrado na Figura 21-1 cria um trabalho baseada em
EVENT_CONDITION
eventos. o é uma expressão com base na definição das mensagens enfileirado para a fila
mesa nomeado pelo argumento QUEUE_SPEC. Entre as datas de início e fim, a Oracle
monitorar a fila e lançar o trabalho sempre que chega uma mensagem que está de acordo com a
condição.
programas
Programas fornecem uma camada de abstração entre o trabalho e as medidas que irá executar. Eles
criado com o procedimento DBMS_SCHEDULER.CREATE_PROGRAM.
são

Ao puxar o “quê” de um trabalho fora da definição do trabalho em si e defini-lo em um


referenciar
programa,o mesmo
você pode
programa em diferentes postos de trabalho e, portanto, associá-lo com
diferentes
aulas, semhorários e trabalho
ter que defini-lo muitas vezes. Note-se que (como para um emprego) um programa deve
ser habilitado
antes que possa ser utilizado; o padrão para isso é falso.

horários
A programação é uma especificação para quando e com que frequência a tarefa deve ser executada.
O princípio
programação
com básico
é paradepuxar
o procedimento um a parte “quando” fora de um trabalho, associando-se assim com trabalhos
DBMS_SCHEDULER.CREATE_SCHEDULE.
diferentes. Ele é criado

Os padrões START_DATE até a data e hora atual. Este é o momento que todos os trabalhos
comassociados
este cronograma será executado. O REPEAT_INTERVAL especifica com que frequência o
trabalho
até a END_DATE.
deve ser executado
Horários sem END_DATE especificado será executado para sempre.
O argumento REPEAT_INTERVAL pode tomar uma grande variedade de expressões de
consistem
calendário.
em até
Estes
três elementos: uma frequência, um intervalo (em falta para 1), e, possivelmente,
especificadores. A frequência pode ser um dos seguintes valores:
várias

• ANUAL
• POR MÊS
• SEMANAL
• DIARIAMENTE
• HOURLY
• minuciosamente
• SEGUNDO LUGAR

Os especificadores pode ser um destes:

• POR MÊS
• byweekno
• BYYEARDAY
• BYMONTHDAY
• BYHOUR
• BYMINUTE
• BYSECOND

Usando estes elementos de uma REPEAT_INTERVAL torna possível a criação de horários que
satisfazer
deveriam
qualquer exigência. Por exemplo, o seguinte irá executar o trabalho a cada 12 horas, a
partir da
DATA DE INÍCIO:

O próximo exemplo será executado o trabalho no segundo dia de cada um dos nomeados três meses,
começando
no início docomo
dia como os recursos permitirem:

O último exemplo será executado o trabalho em 6:10 às segundas-feiras alternadas:

Utilizando programas e horários normaliza a estrutura do emprego, permitindo a reutilização de


programas
predefinida
e horários para muitos postos de trabalho, como mostrado na Figura 21-2 . Note que o
valor inclui
objetos outra e também se refere a Resource Manager objetos Grupos, diretrizes e planos.
Scheduler
Figura 21-2 Uma vista normalizado dos objectos Scheduler e Resource Manager

A Job Auto-Contido
Para criar e programar um trabalho com uma chamada de procedimento, utilize o procedimento
CREATE_JOB.
exemplo, Paraserá criar um trabalho permitiu que chama o procedimento
o seguinte
HR.REFRESH_SUMMARIES em 11 PM . às segundas-feiras e sextas-feiras, a partir de hoje:

O trabalho é criada no esquema HR.

Exercício 21-1: criar um trabalho com a API Scheduler Use o pacote DBMS_SCHEDULER para
criar um trabalho e confirmar que ele está trabalhando.

1. Ligue para o seu banco de dados como usuário SYSTEM usando SQL * Plus.
2. Criar uma tabela para armazenar vezes e definir o formato de data para mostrar a data e hora.

3. Criar um trabalho para inserir o horário atual na tabela a cada minuto.

4. Consulta tabela de trabalho algumas vezes para ver que o trabalho está programado e
executado.
Consultar a tabela de tempos para demonstrar que as inserções estão a ocorrer.

5. Desative o trabalho.

6. Volte a executar as consultas a partir do passo 4 para confirmar que o trabalho está
desativado
ocorrendo.
e que não mais inserções são
7. Solte o trabalho.

Use Chains trabalho para executar uma série de tarefas


relacionadas
A cadeia representa um conjunto de programas ligados com dependências de execução. A lógica de
passos
ligar o em uma cadeia está ramificando com base em um teste de sucesso / fracasso.
Aqui estão os passos a seguir para utilizar cadeias de trabalho:

1. Criar um objecto de cadeia.


2. Definir os passos (os programas individuais) da cadeia.
3. Defina as regras que ligam os passos.
4. Ative a cadeia.
5. Criar um trabalho para lançar a cadeia.

Este fragmento de código demonstra os primeiros quatro passos:

Estes comandos criar e ativar uma cadeia simples de três passos. A execução, quer do
segundo ou terceiro passo é dependente do resultado do primeiro passo. A sintaxe para a criação de
permite o uso de palavras-chave como prosperou e fracassou, que irá testar o resultado do
regras
outro passo. Neste exemplo, assume-se que os programas já foram criados com
procedimento CREATE_PROGRAM chama.
Para iniciar a cadeia, você deve criar um trabalho. Isto pode ser baseado em uma agenda ou um
trabalho
evento.
seráeste
executado a cadeia na última terça-feira de meses alternados:
Use Scheduler Jobs em sistemas remotos
É possível programar e executar trabalhos em sistemas remotos. Estes trabalhos podem ser postos de
trabalhoum
chamar de banco
procedimento
de dadosPL
(tipicamente
/ SQL) ou empregos externos (tipicamente roteiros shell). A definição
de trabalhobanco
chamando existedenadados, mas o script procedimento ou shell devem residir no local remoto.
Cada máquina na qual um trabalho remoto é executar requer um agente Scheduler. Instalar este
o CD agente
Oraclea partir
Client,
deselecionando a opção Instalação personalizada. O processo agente irá, por
padrão,
porta escutar
1500, embora qualquer porta pode ser seleccionado no momento da instalação. O protocolo
éentre
Hypertext
o agenteTransfer
e base Protocol
de dados (HTTP). A base de dados e ouvinte já será configurado para
aceitar HTTP se banco de dados Express foi configurado. Para confirmar a porta de escuta e
não foi configurado, utilizar procedimentos no pacote DBMS_XDB_CONFIG.
colocou-se

Uma vez que as comunicações foram estabelecidas entre o banco de dados e agente, criar postos
o argumento
de trabalho
DESTINATION_NAME
que especificam do procedimento CREATE_JOB, dando o nome de rede
a máquina remota.

Use Scheduler recursos avançados para Priorizar Jobs


Os recursos mais avançados do Scheduler permitem integrá-lo com Gerenciador de recursos para
controlar e priorizar trabalhos. Estes são os componentes relevantes:

• classes de trabalho Jobs pode ser atribuída uma classe, e uma classe pode ser ligado a um
gerenciador
grupo de consumidores.
de recursos Classes também controlar o nível de registo para os seus empregos.
• Grupos do Consumidor Recursos grupos de consumidores Manager são restrita nos recursos
que
pode usar, sendo limitado em, por exemplo, a unidade de processamento central (CPU) ou o
número de
Sessões ativas.
• Resource planeja um plano Resource Manager define como repartir os recursos para grupos.
Apenas um plano está ativo na instância a qualquer momento.
• o Windows Uma janela é um período definido (provavelmente recorrentes) de tempo durante
o qual
trabalhos
certa serão executados e um determinado plano estará ativo.
• grupos de janela É possível combinar janelas em grupos de janelas para facilitar a
administração.
Priorizando trabalhos dentro de uma janela é feito em dois níveis. Dentro de uma classe, os
trabalhos
diferentes podem ser
prioridades pordadas
parte do Scheduler, mas porque todos os postos de trabalho em uma classe
estão no mesmo
Resource Managergrupo
não de
fará
consumidores,
distinção entre eles. Mas se postos de trabalho em diferentes classes são
dentro da mesma janela, Resource Manager irá atribuir recursos para cada classe de acordo com o
programadas
grupos de consumidores para essa classe.

Usando classes de emprego


Crie uma classe com a API DBMS_SCHEDULER. Aqui está um exemplo:
Em seguida, atribuir as tarefas para a classe, tanto em tempo de criação de emprego,
atribuir
especificando
ou modificando
o JOB_CLASS
o trabalho mais tarde. Para atribuir um trabalho a uma classe após a criação,
você deve usarSET_ATTRIBUTE.
procedimento o Aqui é como criar um trabalho chamado REPORTS_JOB e
colocá-lo na
classe recém-criado:

Se houver vários empregos no uma classe, priorizá-los com mais chamadas SET_ATTRIBUTE.

Se vários trabalhos na mesma classe estão programadas para serem executadas ao mesmo tempo,
determina
a prioridade
a ordem
da tarefa
em que os postos de trabalho a partir dessa classe são apanhados para execução
pelo coordenador
processo. Pode sertrabalho
um valor de 1 a 5, sendo 1 o primeiro a ser pego para execução do trabalho. o
padrão para todos os trabalhos é 3. Isso pode ser crítico se, por exemplo, grupo de consumidores da
classe tem
piscina umaativa que é menor do que o número de postos de trabalho; esses trabalhos com a
sessão
maior vontade
executado primeiro,
prioridade
enquanto os outros estão na fila.

TIP EXAME Não é possível atribuir prioridades ao criar empregos com o CREATE_JOB
procedimentos; você deve usar o procedimento SET_ATTRIBUTE da API posteriormente.

Os níveis de log também são controlados por classe do trabalho. Há três opções:

• DBMS_SCHEDULER.LOGGING_OFF nenhum registro será feito para todos os trabalhos


nesta classe.
• DBMS_SCHEDULER.LOGGING_RUNS A informação é gravada no log de trabalho sobre
cada execução de cada trabalho na classe, incluindo quando a corrida foi iniciado e se o
trabalho
com sucesso.
foi executado
• DBMS_SCHEDULER.LOGGING_FULL Além de registrar informações sobre o trabalho
runs, o log irá gravar as operações de gestão da classe, como a criação de novos postos de
trabalho.
Para visualizar o registro de informações, consultar a exibição DBA_SCHEDULER_JOB_LOG.
Informações mais detalhadas é escrito para a vista DBA_SCHEDULER_JOB_RUN_DETAILS,
incluindo a duração de execução do trabalho e qualquer código de erro retornou. Registrando
informações
criado automaticamente
é apagada pela
trabalho PURGE_LOG. Por padrão, esse é executado diariamente de acordo
com o pré-configurado
agendar DAILY_PURGE_SCHEDULE e irá remover todas as informações registrando mais de 30
dias
velho.

usando o Windows
Criar janelas com o procedimento CREATE_WINDOW. Aqui está um exemplo:

Esta janela ativa um plano de Gestor de Recursos chamado NIGHT_PLAN. Isso pode ser um
plano que aos grupos de consumidores DSS sobre o grupo OLTP. Ele abre acordo com o
dá prioridade
WEEKDAY_NIGHTS, que podem ser de segunda a sexta às 20:00. A janela permanecerá
cronograma
abrir durante quatro horas; o argumento DURAÇÃO aceita um INTERVAL DAY TO valor segundo,
faz o REPEAT_INTERVAL para uma programação. Definir a prioridade para LOW significa que se
como
esta janela
sobreposições com outra janela, a outra janela será autorizado a impor o seu Gestor de Recursos
plano. Este seria o caso se você criou uma janela diferente para o processamento de fim de mês e
o mês fim-de-passou a ser em um dia útil. Você poderia dar a janela de alta final do mês
prioridade para garantir que o plano de Gestor de Recursos do fim-de-mês, o que poderia dar
prioridade
grupo LOTE,à se entrar em vigor.

EXAME TIP Mesmo se um trabalho tem prioridade 1 dentro de sua classe, ele ainda pode ser
executado apenas
prioridade 5 em outra
depois
classe-se
de um atrabalho
classe do
com
segundo trabalho está em um grupo de consumidores
com um recurso
prioridade maior
Manager.

Se duas janelas com igual sobreposição prioridade, a janela com a duração mais longa irá abrir
permanecer
(ou aberto). Se ambas as janelas têm o mesmo tempo para ser executado, a janela aberta no
momento permanecerá
aberto.

CUIDADO Oracle Corporation informa que você deve evitar o uso de janelas sobrepostas.

Exercício 21-2: Use Scheduler Windows para controlar o Gerenciador de Recursos Neste
exercício,
usar o Scheduler
você vai
para automatizar a ativação do MY_PLAN plano Resource Manager criado em
20-1 exercício .

1. Conecte-se ao seu banco de dados como SYSTEM usuário com SQL * Plus.
2. Execute esta consulta para determinar se uma janela é aberta no momento:

3. Execute esta consulta para determinar qual plano Resource Manager está ativa:

4. plano Temporariamente claro o que quer Resource Manager pode ser ativo no momento.

5. Verifique se não há nenhum plano Resource Manager ativo.


Execute novamente
o plano utilizado a consulta
quando nenhuma partir
outrodofoipasso 3. Isto irá mostrar que o INTERNAL_PLAN
definido.
está ativo, o que é
6. Executar esta chamada de procedimento para criar uma janela chamada my_window que irá
ativar
plano
o MY_PLAN:

Isto irá abrir a janela de agora em diante todos os dias às 6 AM por 12 horas.
7. Forçar o banco de dados para abrir a nova janela imediatamente.

Esta chamada de procedimento irá abrir a janela imediatamente e ativar seu plano, mas
apenas por cinco
minutos.
8. Execute novamente as consultas de etapas 2 e 3 para confirmar que a janela durante o dia é
aberto ea MY_PLAN está ativo.
plano
9. Depois de cinco minutos, repita o passo 8. Você vai ver que a janela foi fechada e que
nenhum
ativo.plano
Esta situação
é vai persistir até a próxima abertura programada de uma janela.
10. Arrumar.

Broca Two-Minute
Usar o Oracle Scheduler para simplificar as tarefas de gerenciamento
• Um trabalho pode especificar o que fazer e quando fazê-lo, ou pode apontar para um
programa ou uma
• Um trabalho (ou agenda.
seu programa) pode ser um bloco PL anônima / SQL, um procedimento
armazenado
comando do
ousistema
um linkoperacional
externo ou script.
• Os trabalhos são lançada pelo processo de fundo CJQ0 e executado por J nnn processos.
• J nnn processos são lançados sob demanda, até o limite estabelecido pelas
job_queue_processes
parâmetro. Definir como zero desativa o sistema de trabalho.

Use Chains trabalho para executar uma série de tarefas relacionadas


• Um objecto cadeia consiste de um número de etapas.
• Cada passo pode lançar um programa.
• A lógica simples (como o sucesso ou fracasso de uma etapa anterior) pode controlar o fluxo
deexecução através de uma cadeia de trabalho com passos de ramificação.
• A cadeia em si é lançado por um emprego, desencadeada por qualquer um evento ou uma
agenda.
Use Scheduler Jobs em sistemas remotos
• postos de trabalho remoto pode ser executado em bancos de dados remotos ou em máquinas
remotas.
• Cada sistema onde um trabalho remoto pode ser executado deve executar um agente
Scheduler.
• postos de trabalho remotos são definidos no banco de dados origem e enviado para o agente
remoto com
• Crie um credenciais.
trabalho remota especificando o argumento de destino dos CREATE_JOB.

Use Scheduler recursos avançados para Priorizar Jobs


• Os trabalhos podem ser priorizados em dois níveis: Resource Manager irá alocar recursos via
consumidor
grupos para todos os postos de trabalho em uma classe ea classe vai priorizar os trabalhos
dentro delede
prioridade detrabalho
acordo com
definido
o pelo Scheduler.
• prioridade Scheduler varia entre 1 e 5 níveis (mais alto para mais baixo).
Auto teste
1 . Quando um trabalho é devido a executar, o processo irá executá-lo? (Escolha a melhor
resposta.)
A. Um CJQ n processo
B. AJ nnn processo
C. Process Server A
D. Processo de fundo
2 . Qual das seguintes é uma exigência se o Scheduler é trabalhar? (Escolha o melhor

responda.)
A. Os job_queue_processes parâmetros da instância deve ser definido.
B. plano de Gerente Um recurso deve ser ativado.
C. Um cronograma deve ter sido criado.
D. Todas as anteriores.
E. Nenhuma das anteriores.
3 . Um trabalho Scheduler pode ser de vários tipos. (Escolha todos os que se aplicam.)
A. Um anónimo PL / SQL bloco
B. Um arquivo executável do sistema operacional
C. Uma PL / SQL procedimento armazenado
D. A Java procedimento armazenado
E. Um comando do sistema operacional
F. Um script shell sistema operacional (Unix) ou arquivo de lote (Windows)
4 . Como pode empregos melhor ser encadeados? (Escolha a melhor resposta.)
A. Coloque-os na mesma classe e usar prioridades para controlar a ordem de execução.
B. Criar-los como programas, ligados em uma cadeia.
C. atribuir-lhes diferentes horários, cronometrado para começar consecutivamente.
D. Execute-os dentro de uma janela, dando-lhes as prioridades da janela.
5 . Qual processo executa um trabalho de banco de dados remoto? (Escolha a melhor resposta.)
A. Um processo de fila de trabalho na máquina originário
B. Um processo de fila de trabalhos na máquina de destino
C. O Agente Scheduler na máquina de destino
D. agente O Enterprise Manager na máquina de destino
6 . Você criar um trabalho com a sintaxe

e descobrir que ele não está sendo executado quando esperado. O que poderia ser uma razão
para isso?
melhor resposta.)
(Escolha o
A. A programação está associada a uma janela, o que não foi aberto.
B. O trabalho não foi ativado.
C. A classe é parte de um grupo de consumidores Resource Manager com baixa prioridade.
D. As permissões no trabalho não estão corretas.

7 . Quais são os possíveis níveis de prioridade de um trabalho dentro de uma classe? (Escolha a
melhor resposta.)
A. 1-5.
B. 1 a 999.
C. alto ou baixo.
D. Depende do plano de Gestor de Recursos em vigor.
8 . Você quer um trabalho para ser executado a cada 30 minutos. Qual das seguintes
possibilidades
argumento REPEAT_INTERVAL
para o estão corretas sintaticamente e irá alcançar este resultado?
(Escolha três respostas.)
A. 'freq = minuciosamente; intervalo = 30'
B. 'freq = hora; intervalo = 1/2'
C. '0 00:30:00'
D. 'freq = minuciosamente; byminute = 30'
E. 'freq = byminute; intervalo = 30'
9 . Você cria uma classe trabalho, e você definir o argumento logging_level para
LOGGING_RUNS.
Qual será o resultado? (Escolha a melhor resposta.)
A. Haverá uma entrada de registro para cada execução de cada trabalho na classe, mas
nenhuma
se o trabalho
informação
foi bem
sobre
sucedida.
B. Haverá uma entrada de registro para cada execução de cada trabalho na classe e
informações
o trabalhosobre
foi bem
se sucedida.
C. Haverá uma entrada de registro único para a classe sempre que ele é executado.
D. Você não pode definir o registo por classes, apenas por trabalho.

Respostas de auto-teste
1. B . Os trabalhos são executados por processos de fila de trabalho.
A , C , e D estão incorrectos. O coordenador da fila de tarefas não executa trabalhos; ele
atribui-losde fila de tarefas. Estes são processos efêmeras, e não os processos de fundo
aos processos
que funcionam e eles não são processos do servidor.
continuamente,
2. E . A Agenda estará disponível por padrão, sem etapas de pré-configuração necessários.
A , B , C , e D estão incorrectos. A está incorreta porque as job_queue_processes
padrões de parâmetros exemplo a 1000; portanto, não precisa ser definido. B e C são
incorreto porque Resource Manager não é necessário, e nem são horários. Portanto, D
está incorreta também.
3. A , B , C , D , E , e F . O JOB_TYPE pode ser PLSQL_BLOCK,
STORED_PROCEDURE (que pode ser PL / SQL ou Java), executável (que inclui
arquivos e comandos do sistema operacional executável) ou EXTERNAL_SCRIPT (seja um
shell script
SQL * Plusou
script).
um
Todas as respostas estão corretas.

4. B . Esta é a melhor maneira, conectando-os com ramos com base no sucesso ou


fracasso.
A , C , e D estão incorrectos. A e C estão incorretas porque embora possam trabalhar,

há garantia disso. D é incorrecta porque o controle de prioridades de janela que a janela irá
aberto, não que trabalho é executado dentro de uma janela.
5. B . PL / SQL empregos são sempre executados por processos de fila de trabalho no caso
em que o trabalho
corre.
A , C , e D estão incorrectos. A está incorreta porque um processo de fila trabalho pode
serde
dentro executado apenas
sua instância empregos
local. C está incorreta porque, embora o agente inicia o trabalho, ele
faz
na verdade não executá-lo. D está incorreta porque o sistema de trabalho Enterprise
Managerdenão
sistema trabalho
é parteScheduler.
do
6. B . O trabalho será, por padrão, não ser habilitado e, portanto, não pode ser executado.
A , C , e D estão incorrectos. A está incorreta porque o trabalho não é controlado por
mas uma janela
por uma programação. C está incorreta porque embora Resource Manager pode
controlar trabalho
prioridade, não seria na maioria das circunstâncias bloquear um trabalho completamente. D
é incorrecta
embora permissões
porque pode causar um trabalho a falhar, eles não iria impedi-lo de correr.
7. Um . Prioridades de trabalho são de 1 a 5 (mais alto para mais baixo).
B , C , e D estão incorrectos. B está incorreta porque ele é o intervalo errado. C é a
paraescolha
a prioridade da janela, não prioridade da tarefa. D está incorreta porque os controles do
Gerenciadorentre
prioridades de Recursos
as classes, não dentro deles.
8. A , B , e D . Estes irão fornecer um intervalo de repetição de meia hora.
C e E estão incorrectos. C está incorreta porque é a sintaxe para a duração de uma
janela,
não um intervalo de repetição. E é sintacticamente incorrecta.
9. B . Com o conjunto de registro para LOGGING_RUNS, você receberá registros de cada
execução
incluindo de cada
o sucesso outrabalho,
fracasso.
A , C , e D estão incorrectos. A está incorreta porque LOGGING_RUNS incluirá o
sucesso ou fracasso. C e D são incorrecta porque, mesmo que o registo está definido na
nível, ela é aplicada no nível de emprego. Observe que o log também pode ser definida no
classe
nível de emprego.
PARTE IV

DBA2

Capítulo 22 Configurando o banco de dados para backup e recuperação


Capítulo 23 Back Up com o RMAN
Capítulo 24 Restaurar e recuperar com o RMAN
Capítulo 25 Falhas Diagnosticar
Capítulo 26 Flashback
Capítulo 27 Duplicando um banco de dados
Capítulo 28 Encrypting, garantindo, Monitoramento e Ajuste RMAN Backups
CAPÍTULO 22

Configurando o banco de dados para backup


eRecuperação
Objetivos do exame
• 62.1.16.1 identificar os tipos de falhas que podem ocorrer em um banco de dados Oracle
• 62.1.16.2 Recuperação Instância Tune
• 62.1.16.3 Identificar a importância de checkpoints, Redo Log Files, e Arquivo Log Files
• 62.1.16.5 Configurar o Modo ARCHIVELOG
• 62.1.16.4,
63.1.3.2 Configurar a Área de Recuperação Rápida
• 63.1.3.3 Configurar arquivos de controle e Redo Log Files para recuperação
Este capítulo resume o que pode dar errado em um banco de dados Oracle e as medidas necessárias
paraos
que garantir
dados não serão perdidos. Isso requer uma compreensão do mecanismo de recuperação de
instância
o uso de certos
e arquivos.

Possíveis Falhas e sua resolução


Eventualmente seu banco de dados terá algum tipo de falha seja uma falha de rede, erro do usuário,
falha no disco rígido, ou problema de corrupção de memória causando uma falha da instância. Para
se preparar inevitável,
ocorrência para esta quase
é necessário ter um plano de backup e recuperação no lugar. Esse backup e
plano de recuperação deve ser testado em uma base regular para se certificar de que as técnicas de
recuperação
bem sucedidaserá
se eles estão sempre precisei.
Para criar um backup bem-sucedido e estratégia de recuperação, você deve primeiro entender os
falhas
tipos
e como
de o Oracle responde a cada um deles. Alguns exigem nenhum usuário ou administrador
de banco
(DBA) intervenção,
de dados e outros fazem. Que backup e recuperação soluções que dependem de
alavancagem
muitos fatores, incluindo o quão rápido você precisa para se recuperar de uma falha e como muitos
recursos
quero dedicar
que você
à solução. Seu investimento em infra-estrutura de recuperação é proporcional ao custo
da perda de produtividade ou de negócios renda, se o banco de dados não está disponível para um
dia, uma hora, ou um minuto.
falha Categorias
Os tipos de falhas ou erros que podem ocorrer se dividem em duas categorias gerais: física e
lógico. erros físicos são geralmente erros de hardware ou software erros nas aplicações que utilizam
banco de dados, enquanto os erros lógicos são tipicamente no nível do usuário final (usuários do
o
banco de dados ou administradores).
As categorias de falhas são as seguintes:

• Declaração de falha de um usuário SELECT ou Data Manipulation Language (DML)


falhou por causa de permissões, sintaxe, ou limites de recursos.
• Erro do usuário O usuário erroneamente caiu uma tabela ou excluído as linhas erradas em
uma tabela.
• falha no processo de Usuário A conexão com o banco de dados falhou devido a uma
desconexão
desligamento
cliente
inesperado.
ou
• Falha na rede Como o nome indica, a conexão de rede entre o cliente eo
servidor (banco de dados) falhou por causa de hardware de rede ou erros de protocolo.
• falha Instância A instância de banco de dados caiu por causa de um erro, o sistema
operacional
erros, corrupção
(OS) de memória, ou mesmo de perda de poder para o servidor.
• falha de mídia Havia unidade de disco erros físicos ou uma falha de hardware controlador.

Estas categorias de falhas estão na ordem de menos grave e mais fácil de recuperar-se de que o
gravemais
e mais difícil de recuperar. Especificamente, as falhas de declaração são os mais fáceis de se
recuperar
uma vez que
de são quase sempre gerenciados pelo usuário: você reescrever a instrução SELECT ou
INSERIR
não gerar um
paraerro
quedeelesintaxe.
faz Acidentalmente cair uma tabela importante pode ser recuperado pelo
utilizador ou
pelo administrador de banco de dados, dependendo se a tabela eliminada ainda está na lixeira ou
se o DBA tem dado os privilégios de usuário para usar vários recursos de flashback. A recuperação
rede, instância ou mídia falha exigirá acções diferentes, a escolha de qual dependerá
de
na importância e gravidade de quaisquer dados perdidos.
Sua estratégia de backup e recuperação será necessário ter em conta todas estas falhas, embora
algumas dessas falhas são mais fáceis de recuperar do que outros. Por exemplo, uma falha da
instância
por causapode
de umaser queda de energia. A recuperação de transações confirmadas é relativamente
indolor e desde que seus arquivos de log de redo on-line estão intactos e multiplexado.
automática,
A Oracle Backup and Recovery Solutions
Seu objetivo de tempo de recuperação (RTO) é o alvo no qual uma operação de recuperação deve ser
preenchido
conhecer o seu
paracliente ou acordo de nível de serviço do cliente (SLA). Várias ferramentas da Oracle
etecnologias serão aplicadas dependendo da RTO:

• dias ou horas Recovery Manager (RMAN) e, opcionalmente, Oracle Secure Backup, pode
recuperar a sua base de dados em dias ou horas, se toda a base de dados é perdido por causa
de desastres
ou falhas de naturais
disco.
• horas ou minutos Várias tecnologias de flashback, seja iniciado pelo usuário ou DBA
iniciado,
pode recuperar objetos de banco de dados normalmente enquanto o banco de dados ainda está
disponível
Embora para outros
o banco usuários.
de dados precisa ser temporariamente desligado, usando um banco de dados
de flashback
DBA pode reverter
do todo o banco de dados para um ponto no tempo no início do dia ou
mesmo semanas
dependendo do armazenamento
atrás disponível na Área de Recuperação Rápida e os pontos de
restauração
• minutos definidas. Se o banco de dados devem estar disponíveis de forma contínua com
ou segundos
períodos
mais dodeque
inatividade
alguns minutos,
não as soluções Oracle, como Data Guard ou cluster Real
Application
(RAC) pode falhar ao longo de um banco de dados de cópia de segurança ou uma execução
alternativa exemplo com mínima ou
nenhuma intervenção do DBA.
• análise de Recuperação Independentemente do tipo de falha ou RTO, o Oracle Data Recover
Advisor facilita para determinar rapidamente o tipo de falha eo caminho mais rápido para se
a partir de um tipo específico de falha.
recuperar

Recovery Manager
O Recovery Manager é a principal ferramenta que você usa para fazer backup, restaurar e recuperar
objetos
o de tabela
nível de banco (novo
de para Oracle Database 12 c ) para o arquivo de dados, tabela, e, claro, banco
de dados
nível. RMAN tem muitos usos fora de backup e recuperação, incluindo a clonagem ou a duplicação
de um de dados para outro local.
banco
Um componente chave do RMAN é um local especial para objetos de backup e recuperação
Áreachamado
de Recuperação
Rápido (FRA). Embora esta área é idealmente um grupo de discos no ASM, ele
tambémoperacional
sistema pode ser localizado
do sistema
emde
umarquivos (OS). Independentemente da localização, é um lugar
centralizado
objetos para todas backup
de recuperação. O FRAeé gerido com base no tamanho e seus objetivos de recuperação, se
isso ébase na janela de recuperação ou sobre o número de backups que você precisa para manter.
com
Usando um
opcional, masFRA
é considerada
está a melhor prática.

O Oracle Secure Backup


Em conjunto com o RMAN, o Oracle Secure Backup (OSB) terá backups RMAN e copiá-los para
um dispositivo de fita ou para armazenamento em nuvem para evitar perda de dados a partir de uma
falha também
OSB catastrófica
fornece
em um
umacentro
extensão
de dados.
para RMAN no nível OS para fazer backup de servidores Linux,
bem como
ligado de armazenamento,
qualquer tais como num aparelho de armazenamento ligado rede (NAS).

Oracle Data Guard


O Oracle Data Guard é uma das de alta disponibilidade da Oracle soluções (HA) para assegurar
quase em tempodevido
disponibilidade real a uma falha do banco de dados principal ou para evitar corrupções de banco
de dados.
banco de dados
UMA de espera (vários dos quais pode ser criado) é instanciado a partir de uma cópia do
primário
banco de dados e recebe refazer a partir do banco de dados principal e aplica este redo para atualizar
seus arquivos
Assim, o mododededados.
espera é mantido sincronizado com o primário. Um banco de dados standby
também
papel temporário
pode jogardeauma cópia somente leitura do banco de dados para fins de relatório e, portanto,
recursos no banco de dados principal para um melhor tempo de resposta em um processamento de
liberar
transações
(OLTP) online
ambiente.
Outro tipo de banco de dados standby é chamado de banco de dados standby lógico . Em vez de
continuamente
aplicação de redo para uma cópia física do banco de dados principal, um banco de dados standby
lógico converte
refazer em SQL aDML equivalente. Portanto, o banco de dados standby é logicamente equivalente à
banco de dados, mas quase certamente não terá a idêntico física estrutura do banco de dados
espera
principal.lógico
standby UMAnão é realmente parte de um ambiente tolerante a falhas; que é uma base de dados
separada
um armazémotimizado quanto
de dados que passa a conter os mesmos dados que o primário.
Recuperação Instância ea impossibilidade de corrupção de dados
Uma falha de instância pode ser causado por uma falha de energia, a reinicialização do servidor,
emitindo um
comando, ou desligamento
qualquer coisa que faz com que os processos instância fundo para terminar e abortar a

System Global Area (SGA) para ser destruído, tudo isso sem qualquer tentativa de liberar buffers
alterados em os arquivos de dados ou para reverter as transações em voo. Em princípio, recuperação
o cache para
de instância
nada mais doé que usando o conteúdo dos arquivos de log on-line para reconstruir o cache de buffer
do banco
estado emdeque
dados
estava
paraantes
o do acidente. Isto irá reproduzir todas as alterações extraídos dos arquivos
de log
que se de
referem
redo on-line
a blocos que não tinham sido gravados no disco no momento do acidente. Uma vez
que isso de
o banco tenha sidopode
dados feito,
ser aberto. Esta fase de recuperação, conhecido como o rolo para a frente ,
retoma todaspara
-Mudanças as alterações
blocos de dados e mudanças para desfazer blocos-para ambos comprometidos e não
transações. Cada registro de redo tem o mínimo de informações necessárias para reconstruir uma
comprometidos
o endereço do bloco e os novos valores. Durante um rolo para a frente, cada refazer registro é lido, o
mudança:
bloco apropriado é carregado a partir dos arquivos de dados para o tampão de cache do banco de
dados, e aEm
aplicada. mudança
seguida,é o bloco é escrito de volta para o disco.
Uma vez que a frente do rolo é completa, é como se o acidente nunca tivesse ocorrido. Mas
haverá
nesse
transações
ponto, não confirmadas no banco de dados; estes devem ser revertidas, e Oracle irá fazer
que automaticamente na fase de reversão de recuperação de instância. No entanto, o que acontece
após a de dados foi aberto para uso. Se um usuário se conecta e atinge alguns dados que precisa ser
banco
revertida
e ainda assim não foi, este não é um problema; a fase de avanço terá povoaram o undo
segmento que estava protegendo a transação não confirmada, de modo que o servidor pode reverter a
mudançanormal
maneira no para ler consistência.
recuperação de instância é automático e inevitável, assim como você chamá-lo? Emitindo um
comando de inicialização. Ao iniciar um exemplo, após a montagem do controlfile e antes de abrir o
banco de dados, o processo Monitor do Sistema (SMON) verifica os cabeçalhos de todos os arquivos
de dados
refazer e on-line
arquivos dede arquivos
log. Neste ponto, se não tivesse havido uma falha da instância, é evidente porque
o arquivo são todos fora de sincronia. Então, SMON entra na rotina de recuperação de instância eo
cabeçalhos
banco de
aberto somente
dados após
é a fase de roll-forward foi concluída.
Ajustando o processo de recuperação de exemplo pode (teoricamente) ser realizado por ajuste do
parâmetro de instância RECOVERY_PARALLELISM para especificar o número de processos que
participar na operação de recuperação de exemplo. A definição dessa explicitamente a 0 ou 1 irá
irão
desativar paralelo
recuperação. No entanto, do lançamento 10.1, deixando este parâmetro sobre o padrão permitirá que
a Oracle
lançar qualquer número de processos são adequados. Esse número real usado é escrito para o
log de alerta. Este é um trecho de um log de alerta após um comando SHUTDOWN ABORT:

DICA Você nunca tem nada a perder emitindo um comando de inicialização. Depois de qualquer
tipo de
Uma startup
acidente,
e vertente
até onde ele fica. Pode ficar todo o caminho.

Agora deve ser evidente que há sempre informações suficientes no fluxo de logs refazer a
reconstruir todo o trabalho feito até o ponto em que o acidente ocorreu e, além disso, que este
inclui reconstruir as informações de desfazer necessária para reverter transações que estavam em
curso
o momento
no do acidente. Mas para a prova final, considere o seguinte cenário.
Usuário JOHN iniciou uma transação. Ele actualiza uma linha de uma tabela com alguns novos
e seuvalores,
processo de servidor tenha copiado os valores antigos para um segmento de desfazer. Mas
antes que
feito, estas alterações
o processo foram
do servidor escreveu as alterações no buffer de log. Roopesh usuário também
iniciou umNem se comprometeu; nada foi gravado no disco. Se a instância caiu agora,
transação.
não haveria nenhum registro que seja de qualquer transação, nem mesmo nos redo logs. Então, nem
transação seria recuperado, mas isso não é um problema. Nem foi comprometida, então eles devem
não ser recuperado; trabalho não confirmadas não deve nunca ser salvo.
Então o usuário JOHN compromete sua transação. Isso desencadeia LGWR para liberar o buffer
de log
refazer para o on-line
os arquivos de log, o que significa que as alterações tanto na mesa e os segmentos de
desfazer tanto
transação e transação
para JOHNde Roopesh
de estão agora nos arquivos de log redo, bem como um relatório
para a transação de John. Somente quando a gravação foi concluída é a mensagem “completa
cometer
voltou ao processo de usuário de John. Mas ainda não há nada nos arquivos de dados. Se a instância
cometer”
falhar neste
ponto, a fase de avanço irá reconstruir ambas as transações, mas quando toda a refazer tem sido
processado, não haverá ser cometer registro para atualização do Roopesh; que sinaliza SMON para
mudança de Roopesh mas deixar João no lugar.
reverter
Mas o que se DBWR tem escrito alguns blocos para o disco antes do acidente? Pode ser que
outroJOHN
usuário)
(ou foi continuamente requerying seus dados, mas que Roopesh tinha feito sua
mudar e não olhou para os dados novamente. DBW n , portanto, decidir escrever alterações de
descompromissada
Roopesh
para o disco de preferência a João; DBW n será sempre tendem a escrever blocos inativos em vez de
blocos. Então, agora, os arquivos de dados estão armazenando transação não confirmada de Roopesh
ativo
mas faltando JOHN
comprometidos transação.
de Isso é tão ruim a corrupção como você pode ter. Mas pensar sobre isso. Se
a instância
trava agora um corte de energia, talvez, ou um shutdown abort-o rolo para a frente ainda será capaz
para resolver a confusão. Sempre haverá informações suficientes no fluxo de redo para reconstruir
mudanças cometido; isso é óbvio, porque a cometer não está concluído até que a gravação é feita.
porque LGWR libera todas as alterações em todos os blocos para os arquivos de log, também haverá
Mas
informações
para reconstruir
suficientes
o segmento desfazer necessária para reverter transação não confirmada de Roopesh.
Para resumir, porque LGWR escreve sempre à frente de DBW n e porque escreve em tempo real
em cometer, sempre haverá informação suficiente no fluxo de redo para reconstruir qualquer
comprometida
mudanças que não tinham sido escritos para os arquivos de dados e reverter as alterações não
confirmadas
foi escrito paraqueostiveram
arquivos de dados. Este mecanismo de recuperação de exemplo de refazer e
reversão torna impossível de corromper um banco de dados Oracle-contanto que não houve nenhum
absolutamente
dano
no logfísico
de redo.

EXAME DICA Pode um shutdown abort corromper o banco de dados? Absolutamente não! É
corromper o banco de dados. O mecanismo de recuperação instância irá sempre reparar quaisquer
impossível
danos, desde
arquivos queon-line
de log o estão disponíveis.

Postos de controle e o Redo Log


Blocos no buffer cache que foram alterados são checkpointed no disco pelo escritor de banco de
(DBW n ) processo (ou processos). Os vetores de alteração que foram aplicadas a estes blocos terão
dados
já sido escrito para o fluxo de redo pelo processo LGWR. O DBW n escreve de acordo com uma
preguiçoso
algoritmo, eo LGWR escreve de acordo com um algoritmo agressiva que é quase em tempo real e é
tempo real sobre COMMIT.

O Mecanismo Checkpointing
A posição do ponto de verificação (o ponto no fluxo de refazer a partir da qual a recuperação
exemplo
após um acidente)
deve começar
é avançada automaticamente pelo DBW n . Este processo é conhecido como
incrementais
checkpointing . Além disso, pode haver pontos de verificação completos e parciais pontos de
verificação.
Um ponto de verificação incrementais faz parte da atividade de banco de dados normal. Os
DBWblocos
existem n processos decidir
suficientes no cache que foram actualizadas (estes são conhecidos como buffers sujos
que
e é tempo
)baseado para escrever
em quanto algunsa deles
tempo atrás, parafoi
alteração o disco.
feita eOcomo
algoritmo
ativo para selecionar
o buffer que mudou
é. Em geral, buffers
um tampão
para escrever é
escrita somente se ele foi alterado (não há nenhum ponto em escrever um tampão que não tenha sido
será
alterado)
idle e nenhum ponto em escrever um buffer se ele está continuamente a ser utilizado). Nunca
(não há
se esqueça entre
correlação de quea cometer
não há mudanças e escrita dos blocos para disco e que DBW n escreve apenas o
número mínimo de blocos necessários.
Um ponto de verificação completa ocorre quando todos os buffers sujos são gravados no disco.
ser 100.000
Em funcionamento
buffers sujos
normal,
no cache,
podemas o DBW n iria escrever apenas algumas centenas deles para o
checkpoint incremental. Para um posto de controle completo, ele vai escrever o lote. Isto implica
uma grande
incluindo quantidade
alta CPU e usodedetrabalho,
disco, enquanto o ponto de verificação está em andamento e
desempenho
sessões de usuário.
reduzido
checkpoints
para completos são ruins para os negócios. Devido a isso, nunca haverá
uma completa
checkpoint, exceto em duas circunstâncias: um desligamento ordenado e, a pedido do DBA.

TIP manualmente checkpoints iniciadas nunca deve ser necessário em funcionamento normal,
embora
ser útil quando
possamvocê quiser testar o efeito do ajuste. Não há ponto de verificação completo seguir um
interruptor. Este tem sido o caso desde o lançamento 8 i , embora até hoje muitos DBAs não
registo
percebem isso.
Quando o banco de dados é desligado com o NORMAL, imediato ou TRANSACTIONAL
opção, há um posto de controle; todos os buffers sujos são liberadas para o disco pelo DBW n antes
de a base de dados está
fechada e desmontada. Isto significa que quando o banco de dados é aberto novamente, nenhuma
recuperação serádesligamento normal é sempre desejável e é necessário antes de algumas operações
necessário. Um
(tais como archivelog modo). Um ponto de verificação completa pode ser sinalizado a qualquer
permitindo
momento com este comando:

Um ponto de verificação parcial é necessário e ocorre automaticamente, como parte de certas


Dependendo
operações.da operação, o posto de controle parcial irá afectar diferentes tampões. Estas operações
detalhado aqui:
são

EXAME TIP checkpoints completa ocorrer apenas com um desligamento ordenado ou por
solicitação. Parcial
checkpoints ocorrer automaticamente, conforme necessário.

Proteger o Redo Log Files on-line


Lembre-se que um banco de dados Oracle requer pelo menos dois grupos de arquivo de log on-line
para
podefuncionar paraeles.
alternar entre que ele
Você pode precisar adicionar mais grupos por motivos de desempenho, mas
dois são Cada grupo é composto por um ou mais membros, que são os arquivos físicos. Apenas
requeridos.
membro por grupo é necessário para a função do Oracle, mas, pelo menos, dois membros de cada
um
grupo
por segurança.
são necessários
DICA Sempre tem pelo menos dois membros em cada grupo de arquivo de log para a segurança.
Este não é de
segurança apenas
que édea segurança
dados do emprego também.

A única coisa que um DBA não é permitido fazer é perder todas as cópias do arquivo de log on-
lineSe
grupo. atual
isso acontecer, você perderá os dados. A única maneira de proteger contra a perda de
dados quando
membros do grupo
você atual
perdeétudo
para configurar um ambiente de Data Guard para perda de dados zero, o
que um
não é exercício trivial. Por que é tão importante que você não perca todos os membros do grupo
atual? Pensar
sobre a recuperação de exemplo. Depois de um acidente, SMON vai usar o conteúdo do arquivo de
log on-line
grupo atual
para recuperação de avanço para reparar quaisquer corrupção na base de dados. Se o arquivo
de log não
grupo on-line
estáatual
disponível, talvez porque não foi multiplexados e danos na mídia destruiu a
um membro, em seguida, SMON não pode fazer isso. E se SMON não pode corrigir corrupções com
rolo para
você não pode
a frente,
abrir o banco de dados.
Se um membro de um grupo de arquivo de log redo estiver danificado ou faltando, o banco de
é umdados
membro permanecerá
de sobrevivência.
aberto se Isto
houver
contrasta com a controlfile, onde os danos a qualquer cópia irá
falhar ode dados imediatamente. Da mesma forma, os grupos podem ser adicionados ou removidos e
banco
os membrosou
adicionado dos
movido
gruposenquanto
podem sera base de dados está aberto, enquanto há sempre, pelo menos, dois
grupostem
grupo e cada
pelo menos um membro válido.

TIP EXAME O redo log on-line pode ser reconfigurado enquanto o banco de dados é aberto sem
tempo de inatividade,
Considerando as operações no controlfile pode ser realizada somente quando o banco de dados está
no desligar
ou modo nomount
completamente.

Se você criar um banco de dados com o banco de dados Assistente de Configuração (DBCA),
tempor
trêspadrão
grupos,você
masvai
a menos que você instruído DBCA para usar o Oracle Managed Files e uma
recuperação
Área, eles terão
rápida
apenas um membro cada. Duas visões irá dizer-lhe o estado de seus redo logs:
V $ LOG terá uma linha por grupo e V $ LOGFILE terá uma linha por membro do arquivo de log.
A Figura 22-1 mostra um exemplo de configuração de redo log on-line.

Figura 22-1 configuração arquivo de redo log on-line

A primeira consulta mostra que esta base de dados tem três grupos de arquivo de log. O grupo-a
LGWR
corrente
está gravando
de um no momento, é o grupo 2; os outros grupos são inactivas, o que significa que o
primeiro
LGWR não está escrevendo para eles e segunda que, no caso de um SMON falha da instância não
obrigá-los
faria para recuperação de instância. Em outras palavras, a posição checkpoint tem avançado em
2. A seqüência # coluna diz que houve 497 interruptores de registro uma vez que o banco de dados
grupo
criado (ou uma vez que a sequência de registo foi reajustado utilizando ALTER DATABASE
foi
Resetlogs
número abertos). este com cada switch log. A coluna MEMBROS mostra que cada grupo consiste
é incrementado
de apenas um membro, e isso é sério má notícia e deve ser corrigido o mais rápido possível.
A segunda consulta mostra os arquivos de log redo online individuais. Cada arquivo é parte de
(Identificado
um dos grupos
pelo GRUPO #, que é a junção da coluna volta a V $ LOG) e tem um nome exclusivo.
coluna STATUS deve ser sempre nula, como mostrado. Se o membro ainda não foi utilizado,
o
porque o banco de dados só agora foi aberto e ter ocorrido sem opções de log, o status será
tipicamente
INVÁLIDO; este vai estar lá apenas até o interruptor de log primeiro. Se o status for
persistentemente
ter um problema. inválido,

DICA Como com o controlfile e arquivos de dados, a Oracle não aplicar qualquer convenção de
nomenclatura
arquivos, mas para o log das organizações têm normas para isso.
a maioria

Depois, há um comando de sistema de comutação LOGFILE ALTER para forçar uma mudança
interruptor
de diário.
queOaconteceria
registro automaticamente, finalmente, se houvesse quaisquer declarações DML
em andamento.
consulta anterioro mostra que, após o interruptor de log, o grupo 3 é agora o grupo atual que LGWR
está escrevendo
para, pelo registo sequência de mudança 498. O grupo anteriormente corrente, grupo 2, tem estado
ACTIVO.que
significa esteainda seriam necessários pelo SMON para recuperação de instância se a instância não
agora.espaço
curto Em umde tempo, como a posição do ponto de verificação avança, torna-se inativo. Emitir um
comando CHECKPOINT SISTEMA forçaria a posição do ponto de verificação para vir até à data, e
ALTER
grupo 2, então, tornar-se inativo imediatamente.
Para proteger o banco de dados contra a perda de dados em caso de danos a um arquivo de log
redomultiplex-lo.
grupo, online Seguindo o exemplo na Figura 22-1 , para adicionar cópias multiplexados para
o on-line
log, você usaria um comando como este para cada grupo de arquivo de log:

Modo Archivelog e os Processos Archiver


A Oracle garante que seu banco de dados nunca é corrompido por meio do uso dos arquivos de log
redo online
reparar quaisquer
para corrupções causadas por uma falha da instância. Isso é automático e inevitável.
Mas paranenhuma perda de dados após uma falha de mídia, é necessário ter um registro de todas as
garantir
alterações
aplicado ao banco de dados desde o último backup do banco de dados; isto não é ativado por padrão.
o on-line
redo log arquivos são substituídos como ocorrem chaves de registro, de modo a história de vetores
de mudança é, por padrão,
não manteve, mas a transição para o modo archivelog garante que nenhum arquivo de log redo
aonline
menosé substituído
que tenha sido copiado para um arquivo de log arquivo primeiro. Assim, haverá uma série
de arquivos de
representam umlog
histórico
de arquivo
completo
que de todas as alterações já aplicadas ao banco de dados. Se um
arquivo de
qualquer momento,
dados estáentão
danificado
será possível
pelo restaurar um backup do arquivo de dados e aplicar as
alterações
arquivo dedo
log fluxo de redo para trazê-lo até à data.

EXAME TIP Um arquivo de log redo online pode ser substituído somente se ele está inativo e (se o
banco
no modo
de archivelog)
dados é se tiver sido arquivado.

Por padrão, um banco de dados é criado no modo NOARCHIVELOG . Isto significa que os
arquivos por
substituídos de log de redo on-line
interruptores de logsão
com nenhuma cópia que está sendo feita pela primeira vez.
Ainda de
banco é impossível
dados, mascorromper
os dados seriam
o perdidos se os arquivos de dados foram danificados por falha
adetransição
mídia. Uma
paravez
o modo
que oarchivelog
banco de dados
, é impossível
é perder-forneceu dados que todos os arquivos de
log arquivados
gerados desde o último backup estão disponíveis.
Uma vez que um
automaticamente. Estebanco de dadosdeé convertido
é o processo arquivador,para
ARCo nmodo
. Porarchivelog, um vai
padrão Oracle novo processo
começar de
a quatro
fundo
destes começará
processos, mas você pode ter até 30. Em versões anteriores do banco de dados, foi necessário para
iniciar esteou usando um comando SQL * Plus ou definindo o parâmetro de inicialização
processar
LOG_ARCHIVE_START, mas de liberação 10 g em diante a Oracle inicia automaticamente o
processa, se o banco de dados estiver no modo archivelog.
arquivador

DICA No modo archivelog, a recuperação é possível, sem perda de dados de até e incluindo o
cometer. Como regra geral, todos os bancos de dados onde você não pode dar ao luxo de perder
último
dados archivelog.
modo deve ser executado
Não excluem
em sistemas de teste e desenvolvimento a esta regra; eles também são
importantes.
Os processos de archiver irá copiar o arquivo de log redo online atual para um arquivo de log
log arquivo
interruptor,
apósgerando,
cada assim, uma corrente contínua de ficheiros de registo que pode ser utilizado
para
O nome
a recuperação
ea localização
de uma
desses
cópia
arquivos
de segurança.
de log arquivados são controlados por parâmetros de
inicialização.
segurança, os Para
arquivos de log arquivados podem ser multiplexados, assim como os arquivos de log
on-line podem ser
eventualmente, elesmultiplexados, mas para o armazenamento offline, como uma biblioteca de
devem ser migrados
fitas. Adeinstância
cuidar criar os Oracle
logs deleva
arquivo com o ARC n processo, mas a migração para a fita deve ser
pelo DBA, usando os comandos do sistema operativo ou utilizando o utilitário Gestor de
controlado
RMAN.
recuperação

EXAME TIP processos Archiver iniciar automaticamente se o banco de dados estiver no modo
archivelog.
A transição para o modo archivelog só pode ser feito enquanto o banco de dados está no modo
de montagem
desligamento depois
normal, de um
e deve, portanto, ser feito por um usuário com uma conexão SYSDBA. Isso é
necessário definir os parâmetros de inicialização que controlam os nomes e localizações dos logs de
também
gerado. Claramente, esses nomes devem ser exclusivos ou logs de arquivo pode ser substituído por
arquivo
outro arquivo
toras. Para assegurar nomes de ficheiros originais, é possível incorporar variáveis, tais como a
sequência
número denomes
nos mudança de registode log de arquivamento. Estas variáveis podem ser usados para
de arquivos
incorporar
nomes de arquivos
valores exclusivos
de log: em arquivo

O arquivamento mínimo necessário para garantir que a recuperação de um backup restaurado


será possível
é definir um destino de arquivo. Mas para a segurança, que geralmente será um requisito para
multiplexar
arquivo de arquivos
o de log, especificando dois ou mais destinos, de preferência em diferentes discos
servidos por diferentes
controladores. É possível especificar até 31 destinos de arquivo, dando-lhe que muitas cópias de
cheio arquivo de log redo online. Esta é talvez excessivo para a segurança.
cada
Um destino do arquivo? Boa ideia. Dois destinos? Claro, por que não? Mas 30?
A razão para tantos destinos possíveis é distribuído sistemas. Para os propósitos deste livro
e o exame OCP, um destino de registro de arquivamento será sempre um diretório na máquina que
hospeda
de bancoode dados e dois destinos em discos locais geralmente será suficiente. Mas o destino pode
serOracle
A uma alias net, especificando o endereço de um ouvinte em um computador remoto. Esta é a
chave de
perda para
dados:
zero O fluxo de redo podem ser enviados através da rede para um banco de dados
aplicado para ele
remoto, onde dar pode
um backup
ser em tempo real. Este é o mecanismo Data Guard.

Backup e Recuperação: Configuração


Configurando um banco de dados para recuperação significa garantir que determinados arquivos
críticos são multiplexados.
Esses arquivos são os arquivos de log redo on-line e o controlfile. Ajustar o arquivo de log redo
configuração é uma operação online, enquanto ajustando a configuração controlfile requer um
online
shutdown / inicialização.

DICA Um ponto de terminologia: alguns DBAs dizer que um banco de dados deve ter várias
enquanto outros vão dizer que ele deve ter várias cópias do controlfile. Este livro usa o último
controlfiles,
terminologia. A documentação do Oracle é inconsistente.

Para determinar os nomes e localizações dos CONTROLFILE cópias, consultar uma visão ou
parâmetro.
um

As consultas anteriores mostram que esta base de dados está sendo executado com duas cópias
do controlfile.
Exercício 22-1: Investigar e ajustar a configuração de Redo Log Neste exercício, você vai
investigar a configuração do log de redo.

1. Ligue para o seu banco de dados como usuário SYSTEM usando SQL * Plus.
2. Documento a configuração de log redo com esta consulta:

Isto irá mostrar os membros de arquivo de log, o seu estatuto, o seu tamanho, e o grupo a
pertencem. Se o seu banco de dados é o banco de dados padrão, ele terá três grupos, cada
que
um de umcom um tamanho de 50 MB.
membro,
3. Determinar o modo archivelog da base de dados e se ARC n estiver em execução com estes
comandos:

Observe que o modo é um atributo do banco de dados, mas o arquivamento é um atributo da


instância. outro membro para cada um dos grupos de arquivo de log on-line. Escolha
4. Adicionar
qualquer
adequado
diretório
para oe seu
nomesistema
do arquivo
operacional. Por exemplo, após a situação descrita na figura
22-1 , os comandos podem ser como se segue:

5. Execute esta consulta para verificar o status de seus membros de arquivo de log:
Note-se que os novos membros será inválido.
6. Ciclo através dos grupos de arquivo de log executando este comando algumas vezes:

7. Execute novamente a consulta a partir do passo 5. O status de cada membro deve agora ter
limpado. Se algo
inválida, aindaestá
é errado. Olhe para log de alerta a instância de banco de dados para
diagnosticar
problema pode
o que
ser.a

Configurar a Área de Recuperação Rápida


A área de recuperação rápida é um destino de disco usado como o local padrão para arquivos
érelacionados
controlada com
com dois
a recuperação.
parâmetrosisto
de instância:

• db_recovery_file_dest
• DB_RECOVERY_FILE_DEST_SIZE

O primeiro desses parâmetros nomeia o local. Isso pode ser um diretório de sistema de arquivos
Automatic
ou um Storage Management (ASM) grupo de discos. É possível que várias bases de dados para
compartilhar
destino comum;umacada banco de dados terá a sua própria estrutura de diretório (criado
automaticamente)
o destino. O segundo
em parâmetro limita a quantidade de espaço no destino que o banco de dados
ocupará; não diz nada sobre quanto espaço está realmente disponível no destino. o
configuração e uso da Área de Recuperação Rápida são mostrados em dois pontos de vista:

• v $ recovery_file_dest
• v $ recovery_area_usage

TIP lançamento 10. x introduziu o flash Área de Recuperação. Em libertação 11,2. x , foi renomeado
para
Área ode Recuperação Rápida (uma grande atualização). Alguns pontos de vista antigos (e alguns
DBAs de idade) ainda usam o original
nome.

Os arquivos que serão gravados para a área de recuperação rápida (salvo indicação em contrário)
Segue:
incluem o

• backups Recovery Manager


• arquivos de log redo Arquivo
• logs de flashback de banco de dados

RMAN, o Gerenciador de recuperação, pode gerenciar o espaço dentro da área de recuperação


flash;que
arquivos ele pode apagar
não são mais necessários de acordo com as suas políticas configuradas para reter cópias
e backup Em uma situação ideal, a Área de Recuperação rápida será grande o suficiente para
arquivos.
armazenar uma cópia completa do
o banco de dados, mais qualquer arquivo de logs e backups incrementais que seriam necessárias para
recuperar
cópia maisocópias multiplexados dos arquivos de log redo on-line e o controlfile.
As rotinas de backup de banco de dados também deve incluir o backup da Área rápida
recuperação de
implementação emuma
fita,estratégia
assim de armazenamento primário, secundário e terciário.

• armazenamento primário é o banco de dados ao vivo, no disco.


• O armazenamento secundário é uma cópia baseada em disco do banco de dados mais arquivos
necessários para uma
• Armazenamento rápidaérecuperação.
terciário backups de longo prazo, geralmente em uma biblioteca de fitas.

RMAN pode gerenciar todo o ciclo, ou seja, backup do banco de dados do primário para o
e migração
secundário
de cópias de segurança do armazenamento secundário para terciária. Esse sistema pode
ser implementado
moda que vai permitir
em uma recuperação quase instantânea após uma falha, combinada com a capacidade
de tomar
banco de adados de volta no tempo, se isso é sempre necessário.
A área de recuperação rápida pode ser reconfigurado a qualquer momento, sem afetar qualquer
Alterações
arquivoserão
dentroaplicadas
dele. apenas para arquivos criados posteriormente. Figura 22-2 mostra como
configuração da área de recuperação, seguido de declarações para ajustar tanto a sua localização e
determinar o rápido
seu tamanho.

Figura 22-2 Determinando a configuração Área de recuperação rápida

Configurar o modo ARCHIVELOG


Um banco de dados é, por padrão, criado no modo noarchivelog. A transição para o modo
simples,
archivelog
mas requer
é tempo de inatividade. O processo é o seguinte:

1. Desligue o banco de dados de forma limpa.


2. Comece-se no modo de montagem.
3. Edição o comando ALTER DATABASE ARCHIVELOG ;.
4. Abra o banco de dados.
5. Faça um backup completo.

Após uma instalação padrão, os logs de arquivo será gravado em apenas um destino, que
será a Área de Recuperação rápida. Isso é especificado por uma definição implícita para o
parâmetro LOG_ARCHIVE_DEST_1, visível na vista V $ ARCHIVE_DEST. Se os parâmetros que
habilitar a Área de Recuperação Rápida não foram definidos, eles vão para um destino específico da
plataforma$ (o
Diretório ORACLE_HOME / dbs para sistemas Unix). O comando final na Figura 22-3 ,
ARQUIVO
LOG LIST, mostra informações resumidas sobre a configuração de arquivamento, incluindo o banco
de dados
está em execução no modo archivelog, que o ARC n processo está em execução, e que os arquivos
de log escrito
sendo arquivados
para são
a área de recuperação rápida.
Figura 22-3 Ativação e verificação archivelog modo com o SQL * Plus

TIP EXAME A mudança para o modo archivelog pode ser feito apenas no modo de montagem
depois de uma limpa
desligar.

Um backup completo é um passo essencial para a transição para o modo archivelog. Após a
transição,
todos os backups feitos anteriormente são inúteis. O backup pode ser feito enquanto o banco de
dadosatéé que
mas aberto
eleou fechado,
é feito, o banco de dados não está protegido em tudo.

TIP Se o encerramento não é limpo (por exemplo, shutdown abort), a transição irá falhar.
Isso não é um problema a abrir o banco de dados e desligá-lo novamente, desta vez de forma limpa.

Exercício 22-2: Ativar o modo ARCHIVELOG Neste exercício, você fará a transição seu banco
de dados
modo em
archivelog. Este é um procedimento essencial para completar capítulos posteriores no apoio e
recuperação.

1. Ligue para o seu banco de dados com o Database Control como usuário SYS. (Por SYS?
Porque
tem que
vocêparar
vai e iniciar a instância.)
2. Seguir os passos mostrados na Figura 22-3 para activar o modo archivelog.
3. Confirme se o arquivamento estiver trabalhando, forçando uma mudança de diário e um
arquivo.
4. Confirme se o arquivo de log acumulativo foi gerado na área de recuperação rápida.

Broca Two-Minute
Possíveis Falhas e sua resolução
• falhas de SQL normalmente irá ser reparado pelos usuários e desenvolvedores.
• falha Instância pode resultar em corrupção de dados, mas o processo de recuperação de
instância
sempre automática
reparar estes, contanto que os arquivos de log redo online estão disponíveis.
• danos aos arquivos exige ação DBA para reparar. Esta normalmente será restaurar o banco de
dados
a partir de backup e aplicar refazer.
• Recuperação de falha da instância é automática e imparável. Se ele falhar (normalmente por
causa
problema
de uma
com os arquivos de log on-line), então o banco de dados não pode ser aberto.

Postos de controle e o Redo Log


• Checkpointing refere-se à escrita de tampões de memória cache para arquivos de dados pelo
DBWproesses.
n Um ponto de verificação completo escreve todos os buffers alterados (aka sujo)
para o disco.
• checkpoints completa ocorrer somente sob demanda ou como parte de um desligamento
ordenado.
(todos oscheckpoints
buffers sujos
parciais
de um arquivo de dados ou um segmento) ocorrer automaticamente,
em resposta a vários acontecimentos.
• checkpoints incrementais
disco para fazer os bufferssão parte da operação
disponíveis de banco usando
para reutilização, de dados
umnormal. O DBW
algoritmo n escreve
otimizado para
buffers para
minimizar
escrever o de trabalho.
carga

• Os arquivos de log redo online conter vetores alteração aplicada recentemente para buffers em
cache. Eles são
necessária para a recuperação de instância. Quando um grupo de arquivo de log on-line é
preenchido,
arquivo de log
eleacumulativo.
será copiado Nesse
para um
ponto, ele se torna disponível para reutilização.
• arquivos de log arquivados não são reutilizados. Eles são um registro ininterrupto de todas as
alterações
blocos e aplicadas
utilizado para
aos dados
a recuperação do banco de dados após uma operação de restauração.

Configurar a Área de Recuperação Rápida


• A Área de Recuperação Rápida é um destino rígido opcional usado para armazenar arquivos
relacionados
Estes incluem
comcópias
a recuperação.
multiplexados de arquivos de log on-line e o controlfile, arquivos de log
arquivados
backups RMAN.
e
• espaço dentro da FRA é (até certo ponto), gerido automaticamente. É geralmente vai
estabilizar numa
quase pleno estado, e Oracle, em seguida, quando necessário, excluir arquivos mais antigos
que não sãopara
necessário maisa recuperação como for necessário mais espaço para os arquivos mais
• Arecentes.
FRA está configurado com dois parâmetros de instância.
DB_RECOVERY_FILE_DEST_SIZE
define um orçamento espaço, e DBA_RECOVERY_FILE_DEST especifica a raiz do FRA
diretório. Os parâmetros devem ser definidos nesta ordem.
• Dentro da FRA, nenhum manual de gestão é possível. A Oracle assume o controle completo
deremovendo
criar e arquivos e diretórios.
• Os parâmetros são dinâmicos, o que significa que a FRA pode ser redimensionada ou
realocados a qualquer momento.
Configurar o modo ARCHIVELOG
• A transição para o modo archivelog deve ser feito enquanto o banco de dados é montado, após
uma
desligamento normal.
• No modo de registro de arquivamento, quando o banco de dados é aberto, os processos de
arquivamento
arquivos de log
irá copiar
para arquivar
preenchido
arquivos
on-line
de log.

Configurar arquivos de controle e Redo Log Files para recuperação


• O controlfile é pequena, mas vital. Ele contém ponteiros para todos os outros arquivos de
banco
arquivos,
de dados
bemecomo
o arquivo
informações importantes sobre o estado do banco de dados de log.
• A localização é especificado pelo parâmetro de instância CONTROL_FILES. O parâmetro é
estática e, portanto, pode ser alterado com um ÂMBITO = cláusula SPFILE; a mudança virá
em vigor após a próxima parada / inicialização.
• Para adicionar uma cópia controlfile, o banco de dados deve ser desligado. Não é possível
copiar
CONTROLFILE
o enquanto ele estiver em uso.
• Se o log redo online está danificado depois de um fracasso exemplo, não será possível abrir
o banco de dados. Isso ocorre porque o redo log on-line é usado para reparar uma falha da
• Éinstância.
de vital importância para multiplexar o log on-line, em outras palavras, para criar várias
cópias
os membros
de que compõem os grupos de arquivo de log on-line.
• Os membros podem ser adicionados a um grupo de arquivo de log on-line a qualquer
momento enquanto o banco de dados é aberto.

Os membros podem ser removidos, como desde que haja sempre pelo menos um membro de
cada grupo.

Auto teste
1 . Quando é que um posto de controle completo ocorrer? (Escolha todas as respostas corretas.)
A. Como parte de um desligamento normal
B. Como parte de um encerramento imediato
C. Quando a tabela for colocado offline
D. Quando um interruptor de registo ocorre
2 . Qual destas operações não pode ser realizado enquanto o banco de dados é aberto? (Escolha
tudorespostas corretas.)
A. Adicionando uma cópia controlfile
B. Adição de um membro do arquivo de log on-line
C. A alteração do local da área de recuperação flash
D. Mudar o modo archivelog da base de dados
3 . Qual destes arquivos é não necessário para recuperação de instância? (Escolha a melhor
resposta.)
A. arquivos de log Arquivo
B. cONTROLFILE
C. Datafiles
D. arquivos de log on-line
4 . Se o banco de dados estiver no modo archivelog, o que acontecerá se o arquivamento falhar
por(Escolha
qualqueramotivo?
melhor resposta.)
A. A instância será interrompida.
B. Todas as sessões não-SYSDBA irá travar.
C. operações DML irá travar.
D. O banco de dados irá reverter modo a noarchivelog.
5 . Para configurar o banco de dados para recuperação, que tipos de arquivos pode (e deve) ser
multiplexado? (Escolha três respostas.)
A. arquivo de log redo Arquivo
B. cONTROLFILE
C. arquivo de redo log on-line
D. arquivo de parâmetro de servidor
E. Sistema de arquivo de dados de tabela
F. Anular arquivo de dados de tabela

6 . Que tipos de arquivo, por padrão, ser armazenados em área de recuperação flash se tiver
sido(Escolha
definido?
todas as respostas corretas.)
A. arquivos de log redo Arquivo
B. arquivos de rastreamento processo em segundo plano
C. conjuntos de backup do RMAN
D. RMAN cópias de imagem
E. dados Anular
7 . Vários passos estão envolvidos na transição para o modo archivelog. Coloque-as na ordem
correta:
Uma base de dados alterar archivelog
2 alter database aberto
3 sistema alter de início de registo de arquivo
4 backup completo
5 desligamento imediato
6 startup mount
A. 5, 6, 1, 2, 4; 3 não necessário
B. 5, 4, 6, 1, 2, 3
C. 6, 1, 3, 5, 4, 2
D. 1, 5, 4, 6, 2; 3 não necessário
E. 5, 6, 1, 2, 3; 4 não necessário
8 . Que condições devem realizar antes de um membro do arquivo de log on-line pode ser
reutilizado
operandosenoo banco
modo archivelog?
de dados é (Escolha todas as respostas corretas.)
A. Deve ser inativo.
B. Deve ser multiplexados.
C. Deve ser arquivado.
D. O arquivo deve ser multiplexados.
9 . Qual dos seguintes espaços de tabela são necessários em uma instalação do Oracle Database
12 (Escolha
c? todos os que se aplicam.)
A. USUÁRIOS
B. SISTEMA
C. SYSAUX
D. TEMP
E. UNDOTBS1
F. RMAN

10 . Qual é o número máximo de processos de gravação de banco de dados (DBW n ) em um


bancoinstância?
de dados Oracle
A. 1.
B. 100.
C. 20.
D. Nenhum; Os processos de gravação de banco de dados existem apenas em uma instância
do ASM.
11 . Quais das seguintes falhas seriam considerados erros de usuário? (Escolha todos os que se
aplicam).
A. O estagiário só recebeu uma conta de usuário no banco de dados e tenta atualizar seu
próprio salário
a tabela em
HR.EMPLOYEES.
B. Por causa de uma interrupção de energia, o servidor de relatórios diminui durante o
relatório
lote e overnight
não é capaz de gerar a maioria dos relatórios diários.
C. Vários usuários acham que o banco de dados foi atualizado para o Oracle Database 12 c
e tenta
crie uma tabela com uma coluna VARCHAR2 de mais de 4.000 caracteres.
D. O administrador do Linux acidentalmente mata um processo do sistema operacional
pertencente
quem estáa um
tentando
usuário
executar
do banco
umadeinstrução
dados SELECT contra o data warehouse.
E. Um programador de data warehouse entra na sala do servidor e remove uma placa de
redeo de
servidor de banco de dados primário.
12 . Qual tecnologia Oracle HA seria mais adequada para failover quase em tempo real no caso
de uma completa falha na mídia de todos os discos no banco de dados primário?
A. Banco de dados de espera lógica
B. Acesso somente leitura do Oracle Active Data Guard
C. banco de dados da Oracle backback
D. Espera física do Oracle Active Data Guard

Respostas de teste automático


1. A e B . Qualquer desligamento ordenado provocará um ponto de verificação completo.
C e D estão incorretos. C está incorreto porque isso desencadeia apenas um parcial
ponto de controle. D está incorreto porque as chaves de log não acionam pontos de
2 . verificação.
A e D . Qualquer coisa a fazer com o arquivo de controle pode ser feita somente em
modo.
nomount
Alterarou
o modo
shutdown
de archivelog só pode ser feito no modo de montagem.
B e C estão incorretos. B está incorreto porque o log de retomada on-line pode ser
enquanto
configurado
o banco de dados está aberto. C está incorreto porque
parâmetro dinâmico.
DB_RECOVERY_FILE_DEST é um
3. Um . Os arquivos de log de arquivos são usados para recuperação de mídia e não
recuperação
B de instância.
, C e D estão incorretos. B está incorreto porque o arquivo de controle armazena os
valoresdeterminar
necessário críticos a posição do ponto de controle e controlar a recuperação. C e D estão
incorretos

porque durante os vetores de alteração de recuperação de instância dos arquivos de log


online sãoa usados
bloqueia paraarquivos
leitura dos atualizarde dados.
4. C . Uma vez que todos os arquivos de log online precisam ser arquivados, os comandos
DML
A , B eserão bloqueados.
D estão incorretos. A está incorreto porque a instância permanecerá aberta. B é
incorreto porque apenas as sessões que tentam o DML serão penduradas; aqueles que
executam SELECTs
continuar. podemporque isso não pode acontecer automaticamente.
D está incorreto
5. A , B , e C . Esses tipos de arquivo podem ser multiplexados, com o Oracle garantindo
são idênticos.
que as cópias
D , E e F estão incorretos. Esses arquivos não podem ser multiplexados pela Oracle
Claro,
(embora
espelhe-os
vocêcom
possa,
instalações do sistema operacional ou com ASM).
6. A , C , e D . Estes irão para a área de recuperação instantânea, a menos que seja
indicado
B emincorretos.
e E estão outro lugar.B está incorreto porque os arquivos de rastreamento de fundo
irão paraDIAGNOSTIC_DEST.
no diretório um E está incorreto porque os dados de desfazer são
armazenados
no espaço de tabelas de desfazer.
7. Um . Esta é a sequência correta.
B , C , D e E estão incorretos. B , C e E estão incorretos porque permitir o
arquivamento
necessário não
(ocorrerá é
automaticamente). D está incorreto porque o banco de dados deve estar
no suporte
modo de emitir a instrução ALTER DATABASE ARCHIVELOG.
8. A e C . Estas são as duas condições.
B e D estão incorretos. Embora estas sejam certamente boas práticas, elas não são
requisitos.
9. B e C . Ambos os espaços de tabela SYSTEM e SYSAUX são necessários.
A , D , E e F estão incorretos. Embora o espaço de tabela USERS seja altamente
tabelas
desejável
de aplicativos
para colocar
em seu próprio tablespace, não é necessário; TEMP, USUÁRIOS e
UNDOTBS1
são criados em uma instalação padrão do Oracle Database 12 c . Nenhum espaço de tabela
RMANnem
criado, é é necessário em uma instalação do Oracle Database 12 c .
10 . B . Os processos do escritor de banco de dados são DBW0 através de DBW9 e, se
através
necessário,
de DBWz DBWa
e BW36 através de BW99 (para um total de 100) na maioria dos sistemas
plataformas.
operacionais
A , C e D estão incorretos. Os escritores de banco de dados existem apenas em uma
11 . instância
A e C . OsRDBMS.
erros do usuário geralmente são erros lógicos com sintaxe SQL, permissões
em de banco de dados ou tentando usar recursos não disponíveis na versão atual do
objetos
banco
B ,deDdados.
e E estão incorretos. B é uma falha do processo desde que o cliente (neste caso, o
lote de relatórios) falhou e desconectou do banco de dados. D é uma falha no processo
gerador
do usuário
exceto que o processo do usuário falha porque um administrador de sistema operacional
matou
Se o administrador
o processo incorreto.
do sistema operacional tivesse matado um processo de banco de dados
global, a falha provavelmente
considerou uma falha de instânciaseriaem vez disso. E é uma falha de hardware ou rede, não
uma
O usuário
falha provavelmente
de usuário. estará procurando um emprego em outro lugar.
12 . D . O modo de espera física do Oracle Active Data Guard aplica continuamente o
registro
arquivos em redo arquivado
um ou mais (até 30) locais remotos (locais de espera) e pode ser configurado
quase instantaneamente assumir o papel do banco de dados principal em caso de catástrofe
para

falha do banco de dados principal. Qualquer local de espera pode ser configurado para
aplicar ologs
refazer arquivados
após um atraso predefinido para evitar corrupções lógicas potenciais para o
banco
se não de
houver
dados,
uma
mesmo
falha catastrófica do banco de dados principal.
A , B , e C são incorrectas. Um é adequado para acesso de leitura e escrita para relatar
escritores ou mas não será uma cópia física exata do banco de dados principal. B é
desenvolvedores,
porque usar um banco de dados Active Data Guard para consultas somente leitura não está
incorrecta
failover depois
fornecendo de umaoufalha
umalguns
descarregando catastrófica,
todos a carga de mas complementa
trabalho o banco
de relatórios. de dados
C é uma opçãoprimário para
viável para
a recuperação
banco detabela
de dados, um ou objeto de banco de dados individuais para um estado anterior, mas
não fornece
failover em tempo real a partir de uma falha do banco de dados principal.
CAPÍTULO 23

Back Up com o RMAN

Objetivos do exame
• 63.1.1.1 Explicar o Oracle Backup e Recuperação Solutions
• 63.1.2.1 backup e recuperar um banco de dados NOARCHIVELOG
• Definições 63.1.3.1 configurar e gerenciar RMAN
• 63.1.4.1 criar e usar um Catálogo de Recuperação RMAN
• 63.1.5.1 usar vários tipos de backup do RMAN e Estratégias
• 63.1.6.1 executar backups completos e incrementais
• 63.1.6.2 gerenciar backups
• 63.1.7.1 Usar técnicas para melhorar Backups

Mesmo que a lista de objetivos do exame para este capítulo é longo, a maioria dos objectivos
envolver
apenas uma
adicionar
ou duas palavras-chave para o seu comando BACKUP. Usando o Recovery Manager
(RMAN)eferramenta
simples, com um pouco
é de prática você vai se familiarizar com todas as suas funções.

Teoria de backup e sintaxe básica


Há algumas escolhas simples a serem feitas ao executar um backup de banco de dados, incluindo o
que você
deseja fazer o backup e como você vai fazê-lo. Em seguida, para executar o backup, você deve
executar o RMAN.
comandos apropriado
É possível executar backups sem usar RMAN. Tais técnicas são
conhecido como gerenciados pelo usuário backups ao contrário de backups gerenciados pelo
servidor são
backups do RMAN.
perfeitamente
Gerenciado
válidos
pelo
e totalmente
usuário suportado, mas não são cobertas nos exames porque
ferramenta aprovado da Oracle para backup e recuperação é RMAN.
Usando RMAN pode ser simples ou um pouco complexo. Para reduzir a complexidade, a
administradores (DBAs)
maioria da base fará uso de parâmetros de configuração armazenados. Esses padrões
de dados
estabelecidos
operações e significa
para todos
que os trabalhos complexos podem ser realizados com comandos simples.

Conceitos de backup
A base de dados em que backup ou restaurar operações devem ser realizadas é conhecido como o
alvo . Dentro
alguns ambientes haverá muitos bancos de dados e, portanto, muitos alvos RMAN. Você irá
conectar a cada banco de dados, por sua vez. Cada cópia de segurança de um alvo terão certos
atributos:
• Aberto ou fechado

• Whole ou parcial
• completa ou incremental
• Para disco ou para a fita
• Copiar ou backupset

Qualquer combinação desses atributos é possível, mas, dependendo do ambiente e


configuração, você pode ser limitada a apenas um subconjunto desses atributos. Em todos os casos,
o backup através
realizada é de processos servidor Oracle lançados em resposta a comandos emitidos dentro do
RMAN usuário processo executável.

RMAN Arquitetura
O executável RMAN é um processo de usuário como qualquer outro. Ele faz logon em um banco de
dados Oracle
banco de dados),
(o alvo
quer localmente usando comunicação entre processos (IPC) ou remotamente
utilizando
Control Protocol
a Transmissão
(TCP) e um ouvinte de banco de dados. Uma vez conectado, o usuário pode emitir
comandos
realizar operações
para de backup e restauração. Estas operações são realizadas por servidor adicional do
Oracle
processos lançado como necessário, conhecidos como canais . Um canal é um processo do servidor
comosua
mas qualquer
função outro,
é restrita a copiar os arquivos.
Uma característica importante do RMAN é o uso de um repositório . O repositório RMAN
sobreconsiste
backups.de metadados
Isso inclui detalhes do que foi feito backup, onde os arquivos de backup são,
que existem arquivos de log de arquivo, quais configurações persistente foram feitas, e tudo
RMAN vai precisar para compreender o banco de dados e os backups tais que restauram e
recuperação
as operações podem ser completamente automatizadas. O repositório existir em um ou dois locais.
Uma cópia édosempre armazenado no controlfile do banco de dados alvo. Baseando-se
repositório
exclusivamente
tem dois problemas.
sobrePrimeiro,
este podea potencialmente
informação pode ser armazenada por um período limitado.
Especificamente,
número de dias especificados
este é o pelo parâmetro exemplo CONTROLFILE_RECORD_KEEP_TIME,
que
defaults a sete dias. Se você estiver usando apenas o repositório baseado em controlfile, você
provavelmente
para ajustar issovai
para
querer
permitir RMAN para “lembrar” informações por um período mais longo. Por
exemplo,
este período
para
deelevar
um mês, você usaria o seguinte:

RMAN também pode utilizar um local de armazenamento secundário para o repositório sob a
baseforma
de dados.
de umIsso
Oracle
requer a criação de um esquema no banco de dados conhecido como o RMAN
catálogo
deve ser criado
. o catálogo
em um banco de dados utilizado exclusivamente para esta finalidade. O catálogo
pode
muitasgravar
metasmetadados
e age como para
um repositório central de todas as informações de backup. Ao usar um
catálogo,limite
nenhum há eficaz para o período de tempo para o qual as informações de backup podem ser
armazenados.
permite que algumas
Usandodasumfuncionalidades
catálogo também do RMAN mais avançados.

Um backup RMAN pode ser dirigido para um local disco ou para um local fita. Backup em disco
é disponível e não requer nenhuma configuração. Para usar um dispositivo de fita, RMAN
sempre
o fabricante
necessitar
certamente dedo hardware.
auxílio
cobrado) de Este é na forma
pelo fornecedor de uma biblioteca
do hardware. ligada
Por exemplo, se dinamicamente,
você estiver indodesde
para (e quase
usar uma
fita automatizado
biblioteca fabricado pela IBM, você vai precisar comprar agente do Tivoli Storage Manager da IBM
para Oracle.
Este código permitirá RMAN para dirigir a biblioteca de fitas. Dentro do ambiente RMAN, há
diferença mínima ao utilizar dispositivos de fita. RMAN oculta toda a complexidade do
gerenciamento
hardware partido
dedo
terceira
DBA.
RMAN pode criar dois tipos de backup: cópias de imagens e conjuntos de backup . Um backup
geracópia
um ficheiro
de imagem
de saída que é byte-por-byte idêntico ao ficheiro de entrada. A backupset é uma
estrutura inteligente. Pode combinar vários arquivos de entrada em um arquivo de saída, não vai
mais
incluir
dos blocosde entrada que nunca foram usados, pode ser compactados e criptografados, e pode ser
arquivos
em vários pedaços . As peças são os arquivos físicos que compõem o backupset.
dividido

Fazendo backup em uma página


An (aka aberta quente ou inconsistente backup) é realizada enquanto o banco de dados está em uso.
É impossível
para executar um backup aberta, a menos que o banco de dados estiver no modo archivelog. Isso
ocorre
um arquivo
porque aberto
qualquer
serãobackup
inconsistentes.
de Vai demorar um período considerável de tempo para ler o
aarquivo
cópia, e escrever
durante este tempo o arquivo está sendo atualizado. Portanto, a cópia não irá representar
um estábulo
versão do arquivo. No modo de registro de arquivamento, isso não é um problema porque o fluxo de
log redode
registro terá um as alterações aplicadas ao arquivo na forma de vetores de alteração que foram
todas
aplicadas
blocos do àOracle enquanto o backup estava em andamento. Se é sempre necessário para restaurar o
arquivo da
backup, as informações no fluxo de redo pode ser usado para fazer o backup inconsistente utilizável
aplicar essas mudanças. Se o banco de dados não estava no modo archivelog, a refazer a partir do
por
momento
backup foidafeito não estaria disponível. Um fechado (aka frio ou consistente de backup) é realizada
enquanto o banco de dados está no modo de montagem. O controlfile deve ser montado para RMAN
pararepositório.
seu ter acesso abackups fechados são consistentes; os arquivos de dados são estáveis. cópia de
segurança
de apoio possível
fechadoseé o banco
único tipo
de dados está no modo noarchivelog.
Um backup de todo é todo o conjunto de arquivos de dados e o controlfile. Uma cópia de
o banco
segurança
de dados.
parcial
backup
é umde subconjunto
todo é o único
de tipo de backup possível no modo noarchivelog. Isto é
porque para abrir um banco de dados, todos os arquivos de dados deve ser consistente até o mesmo
número Se
(SCN). de aalteração
cópia dedo segurança
sistema é composto por várias cópias de segurança parciais, cada cópia de
segurança
SCN, e seguindo
parcial umaserá restauração,
a uma diferente
refazer os dados são obrigados a trazer todos os backups até o
mesmo os
refazer SCN.
dados estenão estejam disponíveis no modo noarchivelog.
Um backup completo contém todos os blocos utilizados de cada arquivo. Um backup
blocos
incremental
que foramtem alterados
apenas desde
aqueles
o último backup. Uma estratégia de backup incremental deve
começarcompleto,
backup com umaseguido por tantos incrementais como você gosta, mas uma restauração exigirá
sempre primeiro
restaurar o backup completo (conhecido como o nível 0 backup) e, em seguida, aplicando os backups
incrementais
trazer os arquivos
para atualizados. Só depois de um novo nível 0 backup é feito pode qualquer um dos
backups anteriores ser
descartado.

RMAN sintaxe básica


O executável RMAN liga à base de dados de alvo e (opcionalmente) a um banco de dados de
catálogo, se ele tiver

sido configurado. Considere estes comandos, executados a partir de um prompt do sistema


operacional:

Todos os três vão fazer logon em um banco de dados destino como SYS usuário com o privilégio
caso,SYSDBA. Emuma
o alvo será primeiro
ocorrência de banco de dados local correndo na mesma máquina, identificada
ORACLE_SID variável de ambiente, e o usuário é autenticado pela sua conta do sistema
pela
O segundo exemplo também se conecta a um exemplo da base de dados local, mas autentica usando
operacional.
a base dededados
arquivo senha. O terceiro exemplo se conecta a um banco de dados remoto através de uma rede
usandodoum
nome tnsnames
serviço e também vai usar a autenticação de arquivo de senha.
Uma vez conectado, você pode emitir comandos ad hoc SQL contra o banco de dados destino,
seriaassim como
dentro vocêsessão SQL * Plus (embora a exibição de resultados podem não ser os mesmos,
de uma
e alguns SQL * Plus, tais como aqueles para a formatação de colunas, não estão disponíveis) ou
Comandos
emissão RMAN
comandos para operações de backup e restauração.
Fazendo backup no modo NOARCHIVELOG
Fazendo-se no modo noarchivelog só pode ser realizado no modo de montagem. Considere o
exemplo
Figura 23-1
na .
Figura 23-1 Um fechado, inteiro, backup completo com o RMAN

Na figura, a partir de um sistema operacional Windows solicitará que o usuário inicia o


conectando
executável
a um
RMAN,
banco de dados local usando a autenticação do sistema operacional. Uma vez
ligado e no
RMAN> prompt, o usuário fecha o banco de dados com a opção imediata e reinicia no monte
modo. Em seguida, o comando BACKUP DATABASE (que é executado inteiramente em padrões)
inicia um processo canal chamado ORA_DISK_1 que irá gerar conjuntos de backup em disco,
automaticamente
identifica
cinco arquivos
o de dados que compõem o banco de dados, faz-los em uma única peça localizada no
rápido
Área de Recuperação, e faz o backup do controlfile eo spfile em um segundo backupset. Em seguida,
o usuário
abre o banco de dados e saídas da ferramenta. Este é um exemplo de um backup completo de todo o
backup incremental é uma possibilidade, mas todos os backups modo NOARCHIVELOG deve ser
fechado.
inteiro e fechado.
Possibilidades de backup no modo ARCHIVELOG
A seguir estão alguns comandos de backup simples:

Uma especificação de backup parcial pode ser uma lista de um ou mais arquivos de dados
ou pelo
(identificado
número do pelo
arquivo),
nome deumarquivo
ou mais espaços de tabela, ou o controlfile. Um backup de todo é
todo o banco
arquivos de log
de de
dados.
arquivo pode (e deve) ser também apoiada, ou seja, ou todos os arquivos de log
de arquivamento
subconjunto ou de umde registo de arquivo. É também possível (como no exemplo a seguir)
dos ficheiros
para remover
arquivos de log
o arquivo
como eles são apoiados. O destino de backup padrão é para o disco, especificamente,
aos arquivos
peças de backup
(o de conjuntos de backup) na Área de Recuperação rápida.
Normalmente comandos de linha única não será suficiente. Para encadear vários comandos
devejuntos,
agrupá-los
você em um bloco. Um bloco é precedida por RUN e fechado com {}. considere o
exemplo na Figura 23-2 .
Figura 23-2 Uma aberta, toda, backup, incluindo backup completo do arquivo do arquivo de log e
exclusão
Os dois primeiros comandos no bloco prazo são ALLOCATE CHANNEL. Atribuir um canal de
inicia um processo servidor. Cada canal tem um nome (apenas uma seqüência arbitrária, neste
exemplo D1 especificar se ele vai estar usando fita ou disco como destino de backup (na
e D2) e deve
exemplo, disco). O lançamento de múltiplos canais permite paralelismo para o backup. vontade
distribuir a carga de trabalho entre os canais, como mostrado mais adiante na saída: Datafiles 3, 1 e 6
RMAN
sendo apoiada por canal D1, enquanto o canal D2 faz-se arquivos de dados 7 e 5. A terceira linha na
são
corrida
bloco especifica um backup de banco de dados inteiro, usando o formato de indicar o nome pedaço
de saída.
quarta linha
o especifica que todos os arquivos de log de arquivo deve ser apoiado e excluídos. O
especificação inclui% L. Esta é uma variável que será expandido para um nome que inclui um
formato
oito caracteres seqüência aleatória para garantir que se o bloco é executado muitas vezes, diferentes
nomes peça
sempre vai
ser gerado. O tipo de backup é comprimido Backupset. compressão vai
em geral, não só reduzir o tamanho dos pedaços de backup, mas também melhorar a velocidade da
operação.
maioria das
Dentro
circunstâncias, o gargalo no backup é escrever as peças de backup, e meios de
que há muito menos dados para escrever.
compressão
O tipo de backup padrão é um backupset. A alternativa é a cópia da imagem. Para criar cópias,
comandos,
utilize tais como: estes

O primeiro comando cópias mostrado um arquivo de dados para um destino nomeado. O


cópias
segundo
de todo
comando
o banco de dados para o destino padrão, que é a Área de Recuperação rápida.
Qualquer comando de backup (se a criação de conjuntos de backup ou cópias de imagem) pode
executado
ser paralelizado
dentro dese
umé bloco de execução que lança vários canais. Note-se que o paralelismo é
somente dentro
comando de backup,
de umnão entre comandos de backup. Então, na Figura 23-2 , o backup do banco de
dados é
parallelized, e só quando isso for concluído irá arquivar os arquivos de log ser apoiado, novamente
por dois em paralelo. Se vários arquivos são especificados para um canal, os arquivos são lidos
processos
e intercalado no backupset, mas não há nenhum paralelismo ao mesmo nível; os ciclos do processo
simultaneamente
através de sua lista de arquivos, leitura de blocos de um de cada vez.
canal
Fazer o backup em fita, em vez de um destino de disco requer a configuração do Media
Camada
Management
(MML). Esta é a biblioteca de vínculo dinâmico fornecido pelo fabricante do hardware e
produto específico. Então, dentro RMAN, você deve lançar canais de fita. Por exemplo:
será

Este bloco vai lançar dois canais de fita (a palavra-chave SBT significa Backup System para fita
epara
instrui RMAN para
a biblioteca vincular
de fitas. Vocêanormalmente
biblioteca MML no processo
relacionam de canal)
o número que irá
de canais fazer
para o backup
o número de do
banco de
aunidades dados
biblioteca.
de fita
Na maioria
em dos casos, o uso de dispositivos de fita é consideravelmente mais
complicado
opções específicas
do que da
isso,
plataforma
com muitos
que devem ser especificados.

Configurações RMAN persistentes


blocos RMAN prazo (e scripts armazenados) pode ficar muito longa e difícil, se os padrões não são
adequado. A capacidade de armazenar definições de configuração persistentes permite que o DBA
modificar
pode, então,
os executar
padrões. comandos
Eles simples, que RMAN irá modificar automaticamente em tempo de
execução.
Definindo e Eliminação de Valores padrão
Para ver as configurações padrão, use o comando show all. Por exemplo:

Considere esses padrões em ordem:

• política de retenção especifica o que backups RMAN deve tentar criar e quando eles
pode ser excluído. O padrão é uma cópia de cada arquivo.
• OTIMIZAÇÃO determina se RMAN deve fazer backup de arquivos, a pedido, mesmo se
backups suficientes já existem. O padrão é para apoiá-los de qualquer maneira.
• padrão do dispositivo TIPO DE DISCO significa que a menos que dirigido de outra forma, o
RMAN
lançar apenas os canais de disco e não vai escrever para a fita.
• CONTROLFILE AUTOBACKUP OFF impede RMAN de backup automático do
controlfile como parte de qualquer outra operação de backup.
• AUTOBACKUP FORMATO gera um nome e local para os autobackups CONTROLFILE, se
eles foram ativados.
• tipo de dispositivo DISK PARALLELISM 1 BACKUP TIPO DE Backupset significa que,
default apenas um canal será lançado ao executar um backup em disco e que o
backup será a um backupset descompactado.
• CÓPIAS DE SEGURANÇA especifica quantas cópias de conjuntos de backup deve ser
gerado
backup
quando
de arquivos de dados e arquivos de log de arquivo.
• MAXSETSIZE pode restringir o tamanho de cada backupset. Se este tamanho é atingido, o
backupset
peça (s) irá ser fechada, e a cópia de segurança irá continuar para um novo backupset.
• criptografia dos conjuntos de backup está desativado por padrão.
• Compressão (se solicitado) vai usar o algoritmo básico, que é livre de licença.
• RMAN controles de saída quanto tempo manter os resultados de um trabalho RMAN em
tabelas
repositório
no RMAN.
• ARCHIVELOG política de exclusão permite RMAN para apagar automaticamente
archivelogs
não são mais
quenecessários, de acordo com vários critérios.
• INSTANTÂNEO CONTROLFILE especifica um nome e local para ser usado para uma cópia
temporária
do controlfile criado como parte do mecanismo de backup controlfile.

Ao projetar uma estratégia de backup, um exemplo dos requisitos poderia ser a seguinte: deve
sempre será possível restaurar o banco de dados a qualquer momento nas últimas duas semanas; não
criar maisdo que o necessário para atingir esse objetivo; backups vai para o disco, utilizando grau de
backups
paralelismo
quatro canais;
deo controlfile sempre deve ser incluído com qualquer backup; backups será tão
conjuntos de backup compactados, armazenados no diretório C: \ db_backups; peças Backupset será
de acordo com o nome do banco de dados, a data do backup, e uma cadeia exclusiva; e archivelogs
nomeado
serão eliminados quando eles foram copiados para o disco duas vezes. Para configurar esse requisito,
estes
os comandos
são para executar:

Usando MOSTRAR TODOS irá exibir os novos valores. Estes dois comandos simples agora
estão
o que todos
é necessário para cumprir a exigência:

definições de configuração persistentes são configuradas para cada base de dados de alvo e
repositório,
armazenado
especificamente,
no RMAN no controlfile do banco de dados de destino eo catálogo de recuperação
caso tenha
criada. Parasido
devolvê-los aos padrões, conectar-se ao alvo e emitir comandos clara.

Usando uma Política de Retenção


Os backups podem ser automaticamente mantido e gerido através de uma janela de recuperação ou
usando redundância
Usando uma janela de . recuperação, o RMAN reterá como muitos backups como necessário para
trazer o banco
qualquer pontodenodados
tempo dentro da janela de recuperação. Por exemplo, com uma janela de
recuperação
RMAN manterá
de sete
suficientes
dias, cópias de imagens, backups incrementais e redo logs para garantir
que o banco de dados pode ser restaurado e recuperado para qualquer ponto no tempo nos últimos
sete dias.que
backups Qualquer
não são necessários para apoiar esta janela de recuperação são marcados como
obsoletos eautomaticamente
removidos são pelo RMAN se você estiver usando uma Área de recuperação rápida e
espaçobackups.
novos em disco é necessário para
Em contraste, uma política de retenção de redundância dirige RMAN para reter o número
backups.
especificado
Todas asdecópias extras ou backups além do número especificado na política de redundância
são
marcado como obsoleto. Tal como acontece com uma janela de recuperação, backups obsoletos são
automaticamente
espaço em disco éremovidos
necessáriasee da Área de Recuperação Rápida é usada. Caso contrário, você pode
usar o delete
comando OBSOLETE remover manualmente os arquivos de backup e atualizar o catálogo.
Se a política de retenção é definida para NONE, nenhum backup ou cópias são sempre
DBA considerados
deve remover obsoletos,
manualmente
eo backups desnecessários do catálogo e do disco. Por padrão, o
política de retenção é uma cópia única (com a política de retenção definido como 1). Você pode
adefinir a política
duas cópias de retenção
usando o seguinte comando RMAN:

O exemplo a seguir define a política de retenção a uma janela de recuperação de quatro dias:
Da Oracle melhores práticas recomendo usar uma janela de recuperação (um período de tempo
em que é
possível descobrir qualquer problema com o banco de dados, como uma tabela inadvertidamente cair
ou
linhas excluídas em uma tabela) e realizar uma recuperação point-in-time em apenas antes que o erro
ocorreu.
Em alguns ambientes, você pode querer desativar a política de retenção completamente. Isso é
um útil em onde um sistema de backup fora do RMAN armazena os backups em disco para fita e
ambiente
eles. Como resultado, o RMAN não precisa decidir quando um backup é obsoleto, e, portanto, não
exclusões
política de retenção é necessária. Como resultado, os detalhes de backups do RMAN são mantidas
até o momento
especificada pelo CONTROL_FILE_RECORD_KEEP_TIME parâmetro de inicialização. Aqui está
como
você pode desativar a política de retenção:

especificadores de formato
Geralmente, você vai querer automatizar a nomeação de peças Backupset. Isso permitirá que você
para executar
mesmos scripts
o repetidamente, gerando nomes de arquivos diferentes de cada vez. Você não vai
saber o(embora você possa decodificá-los), mas RMAN. Esta é uma parte importante da
nomes
automatização
processo de backup.
do Para gerar nomes, configurar especificadores de formato persistentes, usando
uma combinação
literais (como nomesde de diretório) e variáveis. As variáveis são as seguintes:

• % d nome de banco de dados.


• % e arquivados número de sequência de registo.
• % f número de arquivo absoluto.
• % F Combina o identificador de banco de dados (DBID), dias, meses, anos, e número de
sequência,
separados por hífens.
• % c Copiar número de cópias múltiplas em um backup frente e verso.
• % I DBID.
• % N nome de Tabela acolchoado para oito caracteres.
• % t Backupset timestamp.
• % p de número da peça no interior da backupset.
• % s número Backupset.
• % t Backupset timestamp.
• % u Com efeito, oito caracteres aleatórios. Isto é derivado a partir do número e a backupset
Tempo.
• % U Sistema gerado nome de arquivo único (o padrão). Para uma backupset, é equivalente a
% U_% p_% C; para uma cópia de imagem de arquivo de dados, é-dados D-% d_id-%
I_TS-%
para umaN_FNO-% F_% u; archivelog, é arqui-D_% d-ID-% I_S-% e_T-% h_A-% a_%
cópia de imagem
u; e cópia
um para da imagem controlfile, é cf-D_% d-ID-% I_% u.

Exercício 23-1: Configurar RMAN e execute um backup Para este exercício, presume-se que o
banco de dados está no modo archivelog. Caso não seja, completar os exercícios no capítulo 22 .

1. Conecte-se ao banco de dados utilizando o cliente executável RMAN, a partir do sistema


operacional
linha de comando.

2. Mostrar os parâmetros configurados. Todos eles devem estar em seus padrões.

3. No prompt do RMAN, definir alguns parâmetros como você pode em um sistema de


produção.
nomearQuando
o diretório para o destino de backup padrão, certifique-se de nomear um diretório
em
qual o usuário Oracle tem privilégios totais.

4. Faça backup do banco de dados e archivelogs.

Observe a alocação automática de canais e a maneira pela qual os arquivos são distribuídos
para
canais, os nomes dos ficheiros de peças de saída, e o backup automático do controlfile e
Note-se que a exclusão de arquivos de log de arquivo não ocorrer até que você execute o
spfile.
arquivo dedelog
comando backup
de arquivo
mais algumas vezes.
5. substituir os padrões configurados.
Executar um backup que não permite RMAN para usar os padrões configurados
eespecificando alguns um bloco de processamento.
os valores utilizando

Observe os nomes dos arquivos de saída e comparar os seus tamanhos entre si e com a fonte
arquivo de dados.

Alguns Recursos avançados do RMAN


Para tirar o melhor proveito do RMAN, a maioria dos sites vai querer usar um catálogo de
recuperaçãoEmbora
repositório. para o RMAN
não seja essencial, um catálogo aumenta significativamente as capacidades do
RMAN.outros
muitos RMAN recursos
tem de backup além da funcionalidade básica descrito até agora.

O Catálogo de Recuperação
Se você gerenciar mais de um banco de dados em seu ambiente e você quer manter sua recuperação
informações por mais tempo do que CONTROLFILE_RECORD_KEEP_TIME, então você precisa
de um
catálogo de recuperação para armazenar o repositório RMAN. Um catálogo de recuperação única
pode armazenar
informações paraRMAN
um número virtualmente ilimitado de bancos de dados de destino.
Usando scripts armazenados é outra razão para usar um catálogo de recuperação; você não pode
alvoarmazenar
controlfilescripts no de dados. Você pode salvar uma seqüência de comandos como um único
do banco
scriptexecutar
para para tornar
a seqüência
mais fácil
de comandos sob demanda ou talvez em um horário específico. Um script
podebanco
um ser vinculada
de dados aespecífico alvo (um script local), ou pode estar disponível para todos os bancos
de dados de destino (a global
roteiro).
Porque você pode colocar os metadados de várias bases de dados em um único catálogo de
visualizações,
recuperação, como
o RC_
RC_ARCHIVED_LOG, RC_BACKUP_FILES e RC_DATABASE, são criados
em
o banco de dados do catálogo de recuperação para recuperar metadados para todos os bancos de
dados deo destino.
usando controlfileCaso
do contrário,
banco de dados
quandodevocê
destino,
está você deve se conectar a cada banco de dados alvo
separadamente
os $ vistas V baseado
e consulta
em controlfile do banco de dados alvo.
Finalmente, usando um catálogo de recuperação permite que você use os seguintes comandos do
RMAN:
• BACKUP ... MANTENHA até o tempo de manter um backup por um período de tempo que
difere
política
do de retenção configurado.
• BACKUP ... manter para sempre manter um backup indefinidamente ou até que você
remover
isto. manualmente
• ESQUEMA RELATÓRIO ... AT mostram a estrutura do banco de dados em um momento
específico
passado. na
Configurar o Recovery
Conecte-se ao banco Catalog
de dados repositório (nesteDatabase
caso, o banco de dados RCAT) com privilégios
SYSDBA
criar o catálogo
e de recuperação na tabela RMAN da seguinte forma:

Criar o proprietário Recovery Catalog


Criando o proprietário catálogo de recuperação é tão fácil quanto criar qualquer usuário de banco de
dados.
criar o RMAN
Neste exemplo,
usuário gerenciar
você o catálogo de recuperação. Você poderia facilmente criar um
usuáriopara
FRED chamado
o próprio catálogo de recuperação. Usando RMAN como o proprietário do catálogo faz
com que seja
propósito mais fácil identificar a
da conta.

O papel recovery_catalog_owner predefinido inclui estes privilégios do sistema:

• ALTER SESSION
• CRIAR CLUSTER
• CRIAR BANCO DE DADOS LIGAÇÃO
• CRIAR PROCEDIMENTO
• CREATE SEQUENCE
• CRIAR SESSÃO
• CREATE SYNONYM
• CRIAR A TABELA
• CREATE TRIGGER
• CREATE TYPE
• CREATE VIEW

Criar o Catálogo de Recuperação


Agora que existe a conta de usuário RMAN no banco de dados do repositório, você pode iniciar o
RMAN,
o catálogo,
conecte-se
e inicializar o repositório com o comando Criar Catálogo.

Deste ponto em diante, usando um repositório é tão fácil quanto especificar o nome de usuário e
senha na linha
repositório
comando de comando
CATALOG do sessão
em uma RMANRMAN.
com o parâmetro CATÁLOGO ou usando o CONNECT

Sincronizar o Catálogo de Recuperação


Agora que você configurou o seu catálogo de recuperação, você pode registrar um ou mais de seus
bancos
o catálogo
de dados
de recuperação.
com O processo de registro propaga informações de backup e banco de dados
estrutura para o catálogo de recuperação. Em geral, o RMAN economiza mais informações do
destino
controlfile
catálogo deao
recuperação; no entanto, algumas operações exigem que você atualizar os metadados
manualmente no
catálogo de recuperação.
Para cada banco de dados para que RMAN executará um backup ou recuperação, você deve
baseregistrar
de dadoso no repositório RMAN; esta operação registra informações como o banco de dados
destino
esquema e o DBID única do banco de dados alvo. O banco de dados destino só precisa ser registrado
uma vez; sessões RMAN subseqüentes que se conectam ao banco de dados alvo fará referência
automaticamente
metadados corretos
o no repositório. O banco de dados deve estar no MOUNT ou estado aberto para
registrado com sucesso.
ser
O exemplo a seguir liga-se o banco de dados de alvo usando autenticação do sistema operacional
conecta
e ao repositório com autenticação de senha:

Todos os bancos de dados registrados com o repositório deve ter dbids únicas; tentando registrar
banco
o de dados novamente produz a seguinte mensagem de erro:

Em algumas situações, você precisa sincronizar novamente os metadados no controlfile do banco


o catálogo
de dados
dealvo
recuperação.
com Por exemplo, o banco de dados de catálogo de recuperação pode não
estar disponível
mais de seus backups
para um
porou
causa de um problema de rede ou porque o banco de dados de catálogo de
recuperação
baixa. Nesta ésituação, o RMAN grava as informações de backup apenas no controlfile do banco de
dados alvo.
RMAN sempre registra informações de backup no controlfile mesmo quando o catálogo de
recuperação é
indisponível!

EXAME TIP O RMAN catálogo de recuperação registros de informações sobre estruturas de banco
de dados deredo
arquivados destino,
logs e backups quando você executar um comando RMAN BACKUP ou executar
um manual
ressincronização.

Além disso, você pode executar backups freqüentes e confiar em arquivos de log redo
arquivados
cenário. para
Este não uma
é um recuperação
problema em si, mas a lista de recentes arquivos de log redo arquivados não é
automaticamente no catálogo de recuperação.
registrada
Finalmente, você pode, ocasionalmente, fazer alterações na estrutura física do banco de dados
informação
alvo. esteé automaticamente gravado no controlfile dados de destino, mas não na recuperação
Catálogo.
Manualmente resynchronizing o catálogo de recuperação é um processo simples. Depois de
RMANiniciar
(e se conectar a um catálogo de recuperação, é claro), execute o comando RESYNC
CATÁLOGO,
Neste exemplo:como em

Criar e utilizar RMAN Scripts armazenados


Scripts armazenados ajudar a automatizar grupos repetitivos de comandos do RMAN. Os scripts são
armazenados
catálogo de recuperação.
no Um script armazenado pode ser vinculado a um único banco de dados de
destinodeou
bases dados
ser visível
registadas
a todos
no catálogo
alvo de recuperação.
Você criar um script RMAN com o CRIAR SCRIPT ou CREATE GLOBAL SCRIPT
comando. O parâmetro GLOBAL especifica que o script está disponível para todos alvo RMAN
bancos de dados que partilham este catálogo de recuperação. Para criar um script (global ou local),
você deve
ligado à base
serde dados de alvo e o catálogo de recuperação.
Este exemplo cria um roteiro global chamado GLOBAL_BACKUP_DB que cria um backup
incluindo
completo
arquivos de log arquivados:

Se você queria o script para estar disponível para apenas um banco de dados alvo específico,
palavra-chave
você omitirGLOBAL.
o Se você já tem um script RMAN em um arquivo de texto em um sistema
descript
o arquivos, você
em um pode
script importar
global ou local RMAN usando a seguinte sintaxe:

Executar um script armazenado RMAN global ou local é simples; no entanto, você deve executar
o dentro de um bloco prazo. A sintaxe é como se segue:
roteiro

Aqui é como executar o script global, você criou na seção anterior:

Você também pode usar os parâmetros dentro de um script do RMAN armazenados. Em outras
palavras,
mudará dentrosede
umumouscript,
dois valores
tal como o valor para um canal particular ou o valor de um objecto para
-se, em seguida, você pode usar o & personagem como um indicador de substituição, assim como
trás
você faria em um SQL * Plus
roteiro.
É possível recuperar o conteúdo de roteiros armazenados RMAN usando os comandos de
comando
impressão
PRINTe Lista.
mostra
o o conteúdo de um script individual e o comando LIST mostra os nomes
de roteiros globais ou ambos os scripts globais e locais.
Este exemplo usa o script de lista de nomes de comando para mostrar ambos os scripts locais e
globais:
Lista global SCRIPT NOMES retorna apenas os nomes de script globais.
Para mostrar o conteúdo real de um script, use o comando de impressão. Porque um script global
e uma
script local pode ter o mesmo nome, você qualifica o comando de impressão com a opção global se
que pretende imprimir a versão global em vez da versão local. Este exemplo recupera o conteúdo
do script global_backup_db:

Você pode enrolar o conteúdo de um roteiro global ou local para um arquivo usando a opção do
comando
TO FILE
de impressão.

É também fácil de apagar ou substituir roteiros armazenados. Para substituir um script


comando
armazenados,
[global] utilize
SCRIPT. o REPLACE
Neste exemplo, você deseja modificar as backup_ts de script globais
para
o backup do espaço de tabela SYSTEM, além do espaço de tabela desejado:

Como você poderia esperar, você usa o comando DELETE script para excluir um script global
ou local.

backups incrementais
Um backup incremental pode ser um dos dois tipos: nível 0 ou nível 1. A nível 0 de backup
incrementais
inclui todos os blocos em arquivos de dados especificadas, excepto para os blocos que nunca foram
usados. éAfisicamente
backup nível 0 idêntico a um backup completo dos mesmos arquivos de dados, exceto que um
backup
ser usadocompleto
em um backup
não podeincremental de estratégia em que fica sozinho. Uma cópia de segurança de
nívelbackup
um 1 podediferencial
ser um dosque
dois
faztipos:
o backup de blocos alterados desde o último backup no nível 0 nível 1
ou
uma cópia de segurança cumulativa que faz o backup de todos os blocos alterados desde o último
pode
nível ser um
usa backupset
0 backup.
Você as A nívelou uma
0 de
seguintes cópia de imagem;
backup
palavras-chave um nível
no comando 1 podeBACKUP
do RMAN ser apenaspara
umaespecificar
backupset.um
nível
incremental
0 nível 1 backup:

Você vai aprender como configurar uma estratégia de backup incremental para a tabela USERS
seguinte
na seções.

Nível 0 backups incrementais


A nível 0 backup inclui todos os blocos em um objeto de banco de dados, exceto para os blocos que
nunca da
acima foram
marca
usados
de água alta (HWM). nível subseqüente 1 backups usar o mais recente nível 0
backup como

a base para comparação, quando a identificação de blocos alterados.


Quantas vezes você executar um nível 0 de backup depende de quanto o objeto de banco de
tabela,
dados,
mudanças
tais como
entre
umbackups. Um espaço de tabela que contém tabelas que são completamente
substituído
uma em
base semanal provavelmente teria mais frequentes nível 0 backups do que um espaço de tabela
tabelas que suas aplicações mudam com pouca freqüência, por exemplo, apenas 5 por cento das
contendo
linhasas
todas dasemanas,
tabela mas as mudanças podem depender da distribuição bloco dessas linhas.
Neste exemplo, você executar o primeiro nível 0 backup do tablespace usuários em sua
estratégia
incrementais
de backup:

Subsequentes nível 1 backups vai usar esse backup como o ponto de partida para identificar
blocos.
mudou

Diferencial backups incrementais


Um diferencial de backup é o tipo padrão de backup incremental que faz o backup de todos os
blocos
o último
alterados
nível 0 nível
desde1 backup incremental. Novamente usando a tabela USERS, aqui está como
executar um backup incremental:
você
TIP diferencial é o tipo de backup incremental padrão. Diferentemente da maioria dos comandos do
Oracle
você use
que
uma
permitem
palavra-chave que é o padrão, DIFERENCIAL não pode ser especificado para o
comando BACKUP.
RMAN

Cumulativa backups incrementais


Cumulativos backups incrementais backup de todos os blocos alterados desde o último nível 0
cópia de segurança. Você executar um incremental de nível 1 backup cumulativo da mesma maneira
incrementais
que você executar
diferencial de níveluma
1 backup, exceto que você especificar a palavra-chave cumulativa, como neste
exemplo:
A decisão de usar um backup cumulativo ou diferencial é baseado, em parte, de onde você
quero passar a unidade de processamento central (CPU) ciclos e quanto espaço em disco está
disponível.
backups cumulativos
utilização significa que cada backup incremental vai se tornar progressivamente maior e
mais até que seja realizada outra backup incremental nível 0. Isto pode ser benéfico em que apenas
tomar
conjuntos de backup será necessária durante uma operação de restauração e recuperação. Por outro
dois
lado, diferencial
backups registro apenas as alterações desde o último backup, de modo que cada backupset pode ser
menor
do que ou
a anterior,
maior sem sobreposição em blocos de dados copiados. No entanto, a restauração e
operação pode demorar mais tempo se você tem que restaurar a partir de vários conjuntos de backup
recuperação
em vez de apenas dois.
Exercício 23-2: Tome um backup incremental Neste exercício, você vai investigar o uso de
backups incrementais.

1. Conecte-se ao banco de dados utilizando o cliente executável RMAN, a partir do sistema


operacional
linha de comando.

2. Não é possível realizar um backup de nível 1 se não há nenhum nível 0. Até agora, tudo que
você
backup
tem écompleto.
um Tentar executar um backup de nível 1.

3. Estude a saída da etapa 2. Que tipo de backup foi realizado?


4. Repita o comando da etapa 2. Que tipo de backup que você ganha desta vez?

outros Recursos
RMAN oferece uma série de opções para fazer várias cópias de backup simultaneamente,
criar backups de seus conjuntos de backup existentes e para pular backups desnecessários de
somente leitura
tablespaces. Como o banco de dados cresce em tamanho, você inevitavelmente tem alguns realmente
grandes
levar umarquivos
longo tempo
de dados
para que
fazerirábackup como parte de um backup de banco de dados completo se
apoiado suporta
RMAN como um backups
todo. Assim
multisection
sendo, modo que um grande arquivo de dados podem ser copiados em
pedaços em
backups paralelo.
de arquivamento dar-lhe a flexibilidade para tirar um instantâneo de banco de dados e
mantê-la
ou por umindefinidamente
período específico de tempo. Por último, somente leitura de tabela pode exigir atenção
especial.
Criando Duplexada conjuntos de backup
Para fazer várias cópias de segurança do mesmo backupset simultaneamente, você pode configurar o
RMAN
até para
quatro fazerfrente e verso de cada peça backup. Tal como acontece com a maioria dos
cópias
comandos
valor padrão
dopara
RMAN,o parâmetro
você podede especificar
cópias utilizando
um o comando configure, como neste exemplo:

Duplex tem algumas restrições. Você não pode duplex backups para a área de recuperação
não rápida,
pode duplex
e vocêimagem cópias só de conjuntos de backup. Para backups em disco em dúplex, você
localizações para um backup usando a cláusula de formato. Você pode especificar vários locais, quer
especifica múltipla
comando BACKUP ou ao definir os valores padrão para o tipo de dispositivo de disco no
na
comando.
CONFIGURAR
Neste exemplo, você fazer backup do espaço de tabela USERS para dois locais diferentes de
simultaneamente:
disco

Note-se que mesmo que você tenha o mesmo formato para cada cópia do backupset, formato do
especificador%
RMAN U irá gerar nomes únicos para cada peça.

Criação de backups de conjuntos de backup

Uma opção para a criação de uma segunda cópia de um backup é criar uma cópia de segurança de
existentes.
conjuntos de backup estão Se seu
no disco (você não pode fazer backup de conjuntos de backup existentes
que estãoDE
CÓPIA naSEGURANÇA
fita), você pode. usar
. . comandar
o Backupset para copiar todos os conjuntos de backup em
um disco
Este comando
para outro
copia disco
todos ou
os para
conjuntos
a fita.de backup baseado em disco existentes para o dispositivo de
fita padrão e canal:

Se você quiser manter conjuntos de backup recentes no disco e conjuntos de backup mais antigos
CONCLUÍDA
em fita, você
e DELETE
pode usar opções
o de entrada. No exemplo a seguir, todos os conjuntos de backup
com maissão
semanas de copiados
dois para fita e excluído do disco:

Fazendo backup somente leitura Tablespaces


Como você poderia esperar, o backup de um espaço de tabela somente leitura precisa acontecer com
frequência
período de suficiente
retenção configurado
para satisfazer
no RMAN.
a Você pode forçar o RMAN para pular um read-only
atabela
opçãousando
SKIP READONLY do comando BACKUP. Se tiver configurado o RMAN para backup
otimização, RMAN faz backup somente de leitura de tabela somente quando não há backups
suficientes para
tablespace do satisfazer a política de retenção.
Uso de espaços de tabela somente leitura pode ser particularmente importante em um ambiente
ondedeuma
dataalta
warehouse,
proporção dos dados é estática. O uso cuidadoso de particionamento (tipicamente
variarbase
com de particionamento
na data) pode significar que muitos segmentos de tabela (e segmentos de índice, se os
índices são localmente
particionado) pode ser movido para ler-apenas de tabela, reduzindo enormemente o tempo e o
espaçodenecessário
cópia segurança.para

Criação de arquivo Backups


Por padrão, o RMAN mantém seus backups e arquivos de log arquivados não só para satisfazer o
política de retenção, mas também para fornecer um mecanismo para restaurar o banco de dados para
configurado
qualquer
entre ponto
o apoio e onopresente.
tempo RMAN utiliza uma combinação de backups completos, backups
e arquivados arquivos de log redo.
incrementais,
Em certas situações, você pode querer apenas um instantâneo do banco de dados em um
arquivo
determinado
ou regulatórias.
ponto noIsso
tempo
faz com
para que duas complicações com o RMAN padrão
configuração. Em primeiro lugar, a sua imagem será mais provável cair fora de sua política de
retenção, e você
certamente não quer que seu instantâneo do banco anual a desaparecer antes do final da semana.
Segundo,
você não quer RMAN para manter a pena um, dois ou mais anos de arquivos de log redo arquivados,
se você
não vai restaurar
estiver o banco de dados para um ponto no tempo entre o instantâneo eo tempo atual.
RMAN aborda a necessidade de um instantâneo de banco de dados, apoiando uma cópia de
um segurança
backup como de arquivo
um backup,
. Se ovocê
RMANrotular
não considera o backup para ser obsoleto usando o
configurado política de retenção; em vez disso, RMAN marca um backup de arquivo como obsoleto
após que
hora a quantidade
você especificar.
de Alternativamente, você pode especificar que o RMAN manter o backup
de arquivo por tempo indeterminado.

DICA Você pode usar um backup de arquivo para migrar uma cópia do banco de dados para outro
sistema
fins sempara
afetar
testes
a política de retenção do banco de dados original. Depois de ter criado o
banco de dados no sistema de teste, você pode apagar o backup de arquivo.

A restrição para backups de arquivamento é que você não pode usar a área de recuperação rápida
cópia
para
de armazenar
segurança.um
Se você
arquivo
tem uma área de recuperação rápida configurado, você terá que usar o
parâmetro de
especificar umformato
local alternativo
para do disco para o backup. Além disso, um dispositivo de fita pode ser
o melhor
opção para o armazenamento de longo prazo de backups de arquivamento.
Este exemplo cria um backup de arquivo a ser retido por um ano usando o MANTER ATÉ
cláusula:

Desde que o banco de dados RPT12C tem uma área de recuperação rápida definido, você usar a
especifique
cláusulaumFORMATO
local no qual
paraarmazenar a cópia de segurança de arquivo. Note-se também que o
RMAN
logs, quefaz
seriam
o backup
necessários
de qualquer
para usar
arquivado
o backup em um possível cenário de recuperação futura.

Alternativamente, você pode executar o mesmo backup, mas mantê-la indefinidamente.


paraEm algumas
alterar situações,
o período você pode
de retenção querer
de um alterar
backup o status de
de arquivo, um backup.
mudar Por de
um backup exemplo,
arquivovocê pode
de um
querer
backupum
mudar padrão
backup
ou consistente para um backup de arquivo. Como você poderia esperar, você pode
usar a MUDANÇA
comando para realizar essa tarefa. Embora o comando CHANGE tem muitos outros usos (como a
alterar a disponibilidade de um backup ou para alterar a prioridade de falhas no banco de dados), a
mudança
comando em relação aos backups de arquivamento é coberto aqui.
Este exemplo altera o backup criado anteriormente com o SAVEFOREVER tag cair sob o
política de retenção existente em vez disso:

Dependendo da política de retenção e os outros backups mais antigos ou mais recentes para esta
de backup
base depode
dados,
seroexcluído da próxima vez RMAN começa. O backup pode ser retida por mais
tempo sedeo retenção configurado precisa deste apoio para cumprir a política de retenção.
política
Você também pode usar o comando CHANGE para mudar todos os backups de um certo tipo.
que Por
deseja
exemplo,
remover
se a bandeira de arquivo de todas as cópias de imagens do banco de dados, você
usa o nokeep
parâmetro.

Criando um backup multisection


Criando um backup multisection é fácil, mas você deve especificar o tamanho seção com cada
BACKUP
comando. Além disso, você pode executar o comando RMAN VALIDATE por seção. dicionário
novos
As visualizações,
dados ambas as visualizações V $ e RC_, ajudam você a identificar quais backups são
multidimensionais e como

muitos blocos estão em cada seção de um backup de múltiplas secções.


Para criar um backup de multisecções, você adiciona o parâmetro SECTION SIZE ao BACKUP
comando. O tamanho da seção pode ser especificado em kilobytes, megabytes ou gigabytes. Aqui
está o general
sintaxe para especificar um backup de múltiplas secções

Neste exemplo, o banco de dados HR, o espaço de tabela USERS é de aproximadamente 250MB
façaebackup
você quer
com um tamanho de seção de 100MB:
Este backup criou três peças de backup; os dois primeiros eram 100 MB cada, e a terceira peça
aproximadamente
era 50 MB, que é o restante do arquivo de dados. Os backups multisecção permitem o
para o backup de um único arquivo de dados. Se a operação for realizada por vários canais (como no
paralelismo
exemplo anterior), as seções serão lidas e escritas simultaneamente.

DICA Não use um alto valor para o paralelismo em seus backups multisection para fazer backup de
um arquivo
pequeno número
grande
deem
discos.
um A contenção de entrada / saída (I / O) de vários canais RMAN atingindo
o mesmo
O arquivo no mesmo disco pode apagar qualquer economia de tempo obtida usando um alto valor
para o paralelismo.
Compressão de backups
Além de ignorar blocos não utilizados durante um backup, o RMAN também pode aplicar um
método
para os blocos
de compressão
usados em um backup quando você especifica o parâmetro COMPRESSED com um
dos quatro
valores:
• BASIC Similar à compressão MEDIUM mas usa mais CPU
• BAIXO Razões de compressão mais rápidas mas baixas
• Uso médio moderado da CPU; bom para restrições de largura de banda de rede
• ALTO Mais uso da CPU; ideal para restrições de largura de banda de rede

O nível de compressão padrão é definido como BASIC.

Todos os métodos de compressão, exceto o BASIC, exigem a opção Advanced Compression.


O algoritmo HIGH, como você pode esperar, cria backups muito menores, mas requer mais CPU
Tempo para comprimir os blocos. Se não muitos outros processos do servidor exigem recursos da
CPU
Quando os backups são executados, use MEDIUM ou HIGH. Por outro lado, se houver muito
eespaço
o caminho
em disco
da rede do banco de dados para o seu local de backup não está congestionado, pode
demorar
tempo emmenos
geral para não usar a compressão.
Independentemente do método de compressão que você usa, restaurar um backup comprimido
conhecimento
não requer do método de compressão usado durante o backup original. O RMAN detecta
o método de compressão utilizado e descompacta em conformidade.
automaticamente

Verificando se o repositório está atualizado


O repositório RMAN é crucial para a automação das operações de backup e restauração. É, portanto
importante que seja preciso: que os backupsets e arquivos de log de arquivamento que estão
registrados
O repositório
norealmente existe. Quando um backup é feito ou um arquivo de registro de arquivo é
criado após
mudar, um log
esta informação é, obviamente, registrada automaticamente. Se uma peça de backup ou um
éarquivo
posteriormente
de registro
removido
de arquivopor um utilitário do sistema operacional em vez de por uma operação
RMAN,
o repositório
o não estará mais correto. Uma razão típica para esse tipo de evento é que os arquivos
são um
em armazenados
dispositivo como uma biblioteca de fita que tenha sua própria política de exclusão automática
de arquivos.
realize Este script de
uma verificação serárealidade
primeirocom comandos CROSSCHECK e, em seguida, exclua
referências
existe mais acom
arquivos
o comando
que não DELETE EXPIRED:

Os comandos CROSSCHECK passam pelo repositório, verificando se os arquivos foram


registrados
dentro dele existe de fato. Se algum arquivo estiver faltando, eles são marcados como EXPIRADOS.
O comando DELETE EXPIRED remove o detalhe de todos os arquivos expirados do repositório. Se
o
qualquer possibilidade de que os arquivos possam ser removidos sem o conhecimento do RMAN, é
houver
importante
script de manutenção,
executar umcomo aquele acima, regularmente para atualizar o repositório.

Broca de dois minutos


Crie backups consistentes de banco de dados
• Os backups consistentes (aka fechados ou frios) são tomados pelo RMAN quando no modo de
montagem.
• Um backup fechado completo é o conjunto completo de arquivos de dados mais o arquivo de
controle.

Faça backup do banco de dados sem desligá-lo


• Os backups abertos (aka hot) são tirados pelo RMAN enquanto o banco de dados está em uso.
• Os backups abertos só são possíveis se o banco de dados estiver sendo executado no modo
archivelog.
• Os arquivos de log de arquivos também devem ser copiados ou um backup aberto do banco de
dados será inútil.
Criar backups incrementais
• Um backup incremental de nível 0 consiste em todo o arquivo de dados e pode ser usado
como
subsequentes
base para backups de nível 1.
• Um backup incremental de nível 1 consiste em todos os blocos alterados desde o último
backup
o backup
de nível
de nível
1 ou0 se nenhum nível 1 ainda tiver sido realizado.
• Um backup cumulativo de nível 1 consiste em todos os blocos alterados desde o último nível
0 de backup.
Automatize backups de banco de dados
• O Enterprise Manager pode agendar backups automáticos.
• Os backups agendados utilizam o RMAN, invocado pelo agente do Enterprise Manager.

Gerenciar backups e o repositório RMAN


• RMAN usa um repositório. Este é armazenado na base de dados controlfile alvo e
(opcionalmente)
banco de dadosnuma
de catálogo de recuperação.
• O repositório armazena informação sobre todos os backups que foram feitas e é vital para
automatizando restauração e recuperação de operações.
• O repositório pode ser gravado em um banco de dados de catálogo, que permite o
armazenamento
metadados backup.
a longo prazo de
• O esquema do catálogo é criado e possuído por um dono catálogo que deve ser concedido o
Recuperação do catálogo função de proprietário.

Usar vários tipos de backup do RMAN e Estratégias


• backups RMAN pode estar cheio ou incremental.
• backups incrementais podem ser de nível 0 ou 1. Nível 0 backups são backups completos que
podem
parte ser
de uma
usados
estratégia
como gradual diferencial, incremental, ou cumulativo backup de nível 1.
• RMAN cópias de imagem são cópias exatas dos arquivos de dados. Usando RMAN para fazer
cópias
tem adevantagem
arquivosadicional
de dados de verificação de corrupção em cada leitura bloco.
• RMAN pode usar compactação de backup para economizar espaço no dispositivo de destino,
e RMAN
descompacta automaticamente o backup durante uma operação de recuperação.
• Usando uma área de recuperação rápida para RMAN tem duas vantagens: Rman
automaticamente
arquivos de backup
nomes
na área de recuperação rápida, e que exclui automaticamente os arquivos
de uma
há backup
pressão
obsoletos
espaço
quando
na área de recuperação rápida.

• Mais de um banco de dados pode usar a área de recuperação rápida.


• O comando RMAN mostrar todas as listas de todas as configurações RMAN persistentes.
• Use CONFIGURAR CONTROLFILE AUTOBACKUP ON para garantir que uma cópia de
segurança
controlfile
dobase de dados alvo existe depois de cada cópia de segurança.

Executar backups completos e incrementais


• RMAN backups são ou conjuntos de backup ou backups de imagem.
• conjuntos de backup podem ser criados apenas por RMAN e pode ser lido apenas pelo
RMAN.
• A cláusula formato do comando BACKUP especifica as variáveis de substituição para o
destino nome de arquivo de backup.
• Você pode criar cópias de imagens de arquivos de dados, arquivos de log redo arquivados, e
controlfiles.
• Cópias de imagem podem ser escritos apenas para o disco.
• Você pode usar o comando Alternar para alternar rápida e facilmente entre um arquivo de
dados
cópiae de
suaimagem durante uma operação de recuperação.
• Um backup de todo o banco de dados inclui todos os arquivos de dados mais o controlfile.
• Um backup completo de um arquivo de dados é um subconjunto lógico de um backup de todo
o banco de dados.
• Um backup completo não pode ser usada como base para uma estratégia de backup
•incremental.
Um backup incremental é o nível 0 nível 1.
• Um nível 0 backup incremental pode ser usada como base para uma estratégia de backup
incremental.
• Os backups diferenciais backup de todos os blocos alterados desde o último nível 0 nível 1
incrementais
cópia de segurança.
• backups incrementais cumulativos backup de todos os blocos alterados desde o último backup
de nível
• Um 0. de arquivo é um instantâneo do banco de dados em um determinado ponto no
backup
tempo criado
arquivo para satisfazer
ou regulatórias.
• backups de arquivo se torna mais fácil para migrar uma cópia do banco de dados para outro
sistema
afetando
sema política de retenção do banco de dados original.
• Para criar um backup de arquivo, você especificar o MANTER até a hora ou manter para
sempre
opção no comando BACKUP.
• Um backup de arquivo RMAN também inclui quaisquer logs arquivados necessários para usar
o backup
cenário em
de recuperação.
um
• Você pode usar o comando CHANGE para mudar o status de um backup de arquivo.
• backups multisection RMAN pode reduzir significativamente o tempo que leva para fazer
backup
arquivos
de grande
de dados para vários destinos.
• Você pode executar o comando VALIDATE no modo multisection.
• O parâmetro Tamanho da seção determina o tamanho de cada seção de um arquivo para ser
lido
deem uma multisection. As secções podem ser lidos em paralelo.
backup

• RMAN pode compactar backups de blocos usados usando quatro níveis de compressão:
básico,
Médiabaixa,
e alta.
• Todos os métodos de compressão, exceto para o BASIC exigem a opção Advanced
Compression.
Use Técnicas para melhorar Backups
• Os canais podem ser persistentes com o comando configurar ou atribuído dentro do bloco
prazo
usando o comando ALLOCATE CHANNEL.
• usando o disco como o tipo de dispositivo padrão não requer qualquer alocação de canal.
• RMAN usa otimização de backup para pular backups de um ou mais arquivos se arquivos
idênticos
Já foi feito
têmbackup em disco ou fita.
• otimização de backup leva em conta políticas duplex e retenção antes de pular uma
arquivo fonte.
• Você define otimização de backup no RMAN com o backup comando configure
OTIMIZAÇÃO ON.

Auto teste
1 . Quais tipos de arquivos podem ser copiados pelo RMAN? (Escolha todas as respostas
corretas.)
A. arquivos de log Arquivo
B. cONTROLFILE
C. arquivos de log on-line
D. arquivos senha
E. datafiles tablespace Permanente
F. arquivos de parâmetros do Servidor
G. arquivos de parâmetros estáticos
H. tempfiles tabela temporário
2 . Por que são conjuntos de backup do RMAN menores do que cópias de imagens do RMAN?
(Escolha a melhor
A. Eles sempre resposta.)
usar compressão.
B. Eles sempre ignorar blocos não utilizados.
C. Eles nunca incluem tempfiles.
D. Eles podem ser escritos diretamente em fita.
3 . Qual das seguintes afirmações está correta sobre o backup RMAN offline? (Escolha tudo
respostas corretas.)
A. O banco de dados deve estar no modo NOMOUNT.
B. O banco de dados deve estar no modo MOUNT.

C. O backup falhará se o modo de desligamento foi desligamento imediato.


D. bancos de dados noarchivelog podem ser copiados única offline.
E. bancos de dados Archivelog não pode ser feito backup offline.
F. backups off-line podem ser incremental.
4 . Você precisa fazer o backup do controlfile enquanto o banco de dados é aberto. O que vai
funcionar?
melhor resposta.)
(Escolha o
A. O controlfile pode ser incluído em um backupset RMAN, mas não o backup como uma
imagem
cópia de.
B. O ALTER DATABASE BACKUP CONTROLFILE traçar comando fará
uma cópia da imagem do controlfile.
C. Você não pode fazer o backup do controlfile enquanto ele está em uso-it é protegido por
multiplexação.
D. Nenhuma das anteriores.
5 . Você está a criação de uma estratégia de backup incremental. Qual destas afirmações é
correta?
(Escolha a melhor resposta.)
A. Antes de executar um nível 1 backup incremental, você deve executar um incremental
nível
cópia
0 de segurança.
B. Qualquer um backup completo ou um nível 0 backup incremental pode ser a base para
um nível
incremental
1 backup.
C. Ao restaurar e recuperar com backups incrementais, arquivos de log de arquivo não são
necessário.
D. Você não pode fazer um backup incremental de um banco de dados no modo
NOARCHIVELOG.
E. Executando um nível 1 backup incremental executará automaticamente um nível
incrementais
se não existir
0 nenhum.
6 . Que processos devem estar em execução, se um backup RMAN programada dentro do
Oráculo
meio ambiente é para ser executado? (Escolha todas as respostas corretas.)
A. A instância de banco de dados deve ser iniciado.
B. servidor de gerenciamento O Cloud Control deve estar em execução.
C. agente O Enterprise Manager deve estar em execução.
D. O programador do sistema operacional deve estar em execução.
7 . O que é verdade sobre o comando crosscheck? (Escolha a melhor resposta.)
A. Crosscheck irá verificar a validade das peças de backup.
B. Crosscheck irá eliminar referências a arquivos que não existem mais.
C. Crosscheck irá verificar a existência de peças Backupset.
D. Crosscheck funciona apenas com conjuntos de backup, não de imagem copia.
8 . Se o volume de dados na área de recuperação rápida atingiu o limite definido pela

DB_RECOVERY_FILE_DEST_SIZE, o que acontecerá quando RMAN tenta escrever


mais dados para ele? (Escolha a melhor resposta.)
A. Se AUTOEXTEND foi habilitada eo valor MAXSIZE não tenha sido atingido, o
área de recuperação rápida irá prolongar, se necessário.
B. A operação irá falhar.
C. Isso vai depender se os alertas de aviso e críticos foram habilitados para o rápido
área de recuperação.
D. RMAN irá apagar automaticamente backups obsoletos.
E. RMAN irá apagar automaticamente backups expirados.
9 . Você execute o seguinte comando RMAN:
RMAN> configure controlfile autobackup diante;
Em que condições é que RMAN backup do controlfile eo spfile? (Escolha tudo o que
Aplique.)
A. Quando um backup RMAN completa
B. Quando você iniciar o RMAN
C. Quando você conectar a um banco de dados alvo
D. Quando o backup do espaço de tabela SYSTEM
E. Quando você executa o comando backup atual CONTROLFILE;
F. Quando alguma da mudança senhas DBA
G. Quando você altera o tamanho da área de recuperação rápida
H. Quando você adiciona um espaço de tabela
10 . Qual dos seguintes objetos não podem ser apoiados por RMAN usando o backup RMAN
comando? (Escolha todos os que se aplicam.)
A. DATAFILE
B. BASE DE DADOS
C. INSTÂNCIA
D. CORRENTE CONTROLFILE
E. SPFILE
F. TABLESPACE
G. ARCHIVELOG
H. CONTROLFILE
I. REDOLOG
11 . Identificar as demonstrações na lista a seguir que são verdadeiras sobre o gerenciamento
RMAN configurações.
persistentes(Escolha todos os que se aplicam.)

A. ver todas as listas todas as configurações atuais para o banco de dados destino conectado.
B. Você pode usar a configurar. . . Comando CLEAR para definir um valor de configuração
parastring
um vazia.
C. MOSTRAR TODOS mostra os valores de configuração que se aplicam a todos os
bancos
D. Vocêde dados
pode deadestino.
usar configurar. . . Comando CLEAR para definir um valor de configuração
paravalor
a suapadrão.
E. ver todas as listas todas as configurações RMAN que são diferentes do valor padrão.
12 . Qual das seguintes é a variável de substituição padrão para a cláusula de formato do
comando BACKUP? (Escolha a melhor resposta.)
A. % T
B. % d
C. % u
D. % U
E. %I
13 . Qual das seguintes são candidatos para cópias de imagens RMAN? (Escolha duas
respostas.)
A. Datafiles
B. arquivados refazer os arquivos de log
C. arquivos de log redo online
D. arquivos senha
14 . Você execute o seguinte comando para criar um backup de todo o banco de dados: RMAN>
backup
spfile
como
banco de dados de cópia mais archivelog excluir a entrada; O que a cláusula
ENTRADA
(Escolha a melhor
APAGARresposta.)
fazer?
A. Após a conclusão do backup, o RMAN exclui os arquivos de log arquivados de todo
arquivados
destinos de arquivo de log, exceto para a área de recuperação rápida.
B. Após a conclusão do backup, o RMAN exclui os arquivos de log arquivados a partir da
recuperação
área só. rápida
C. Após a conclusão do backup, o RMAN exclui os arquivos de log arquivados a partir da
recuperação
área e quaisquer
rápida outros destinos de arquivo de log arquivados.
D. RMAN exclui todas as cópias obsoletas de backups de banco de dados após a conclusão
do backup.
15 . Qual é a diferença entre um backup completo e um backup de todo o banco de dados?
(Escolha
responda.)
o melhor
A. Um backup de todo o banco de dados pode ser usada como base para uma estratégia de
backup
mas incremental,
um backup completo não pode.
B. Um backup completo pode ser usada como base para uma estratégia de backup
incremental,
backup demas
todoum
o banco de dados não pode.
C. Um backup de todo o banco de dados pode ser apenas uma cópia de imagem. Um
backup completo pode ser uma imagem
cópia ou uma backupset.
D. Uma cópia de segurança completa consiste de uma cópia de segurança de um ou mais
arquivos
backupdede
dados
todoouo banco
de tabela,
de dados
enquanto
contém
quetodos
um os arquivos de dados para todos os
espaços de tabela mais o controlfile.
16 . O que é verdade sobre um backup incremental nível 0? (Escolha todas as respostas
corretas.)
A. A nível 0 backup inclui todos os blocos em um arquivo de dados, incluindo blocos que
nunca foram
usava.
B. A nível 0 backup inclui todos os blocos em um arquivo de dados, exceto para os blocos
queusava.
nunca foram
C. Um backup de nível 0 pode ser usado com um backup cumulativo nível 1.
D. Uma cópia de segurança de nível 0 pode ser utilizado com uma cópia de segurança
diferencial
E. A nível 0nível 1. de um arquivo de dados tem informações adicionais que o diferencia de
backup
um backup
completo
do mesmo arquivo de dados.
17 . Identificar a verdadeira declaração sobre backups incrementais e diferenciais. (Escolha o
melhor
responda.)
A. Um backup diferencial é o tipo padrão de backup incremental e faz o backup de tudo
mudou
blocos desde o último nível 0 nível 1 backup incremental.
B. Um backup cumulativo é o tipo padrão de backup incremental e faz o backup de tudo
mudou
blocos desde o último nível 0 nível 1 backup incremental.
C. Um backup diferencial é o tipo padrão de backup incremental e faz o backup de tudo
mudou
blocos desde o último nível 0 backup incremental.
D. Um backup cumulativo é o tipo padrão de backup incremental e faz o backup de tudo
mudou
blocos desde o último nível 1 backup incremental.
18 . Quando você quiser criar um backupset frente e verso, o que é o número máximo de cópias
de cada peça de backup que você pode criar com um comando BACKUP? (Escolha a melhor
resposta.)
A. Dois para locais de disco e quatro para destinos de fita.
B. Um máximo de quatro.
C. Dois para locais de fita e quatro para locais de disco.
D. O máximo é limitado apenas pelo número de discos de destino ou unidades de fita.
19 . Identificar as verdadeiras declarações sobre backups de arquivamento. (Escolha todas as
respostas corretas.)
A. backups de arquivo pode ser mantido indefinidamente.
B. Você pode deixar uma cópia de segurança de arquivo usando a mudança. . . CAIR
comando.
C. backups de arquivo incluem todos os logs redo arquivados a partir da data de arquivo
para o presente.
D. Depois de criar um backup de arquivo, você deve mantê-lo para o período de retenção
especificado ou soltá-lo.
E. Você pode usar um backup de arquivo para migrar uma cópia do banco de dados sem
afetar
política
o de retenção.

F. Você pode alterar o período de retenção de um backup de arquivo, uma vez que foi
criado.
20 . Você tem um arquivo de dados por parte dos utilizadores do espaço de tabelas smallfile que
tem execute
um tamanho
o seguinte
de 90MB,
comando
e você
RMAN:
RMAN> tablespace usuários de backup dimensão da secção de 40m;
Quantas seções que esta cópia de segurança criar? (Escolha a melhor resposta.)
A. O comando não é executado porque backups multisection se aplicam apenas a BIGFILE
tablespaces.
B. Duas seções de 45MB cada.
C. Duas seções de 40MB cada e uma seção de 10MB.
D. O comando não é executado porque você pode fazer backup de todo o banco de dados
apenas
de backup
como um
multisection.
21 . O que acontece quando você execute os seguintes comandos do RMAN?
RMAN> executar
{Configurar disco CH2 tipo de dispositivo de canal;
banco de dados de backup; }
(Escolha a melhor resposta.)
A. Um backup completo é criado na Área de Recuperação rápida.
B. A base de dados é apoiada a todos os canais padrão configurados do lado de fora do
bloco de processamento
o canal mais
adicional dentro do bloco de processamento.
C. O comando falha porque você não pode usar CONFIGURAR dentro de um bloco prazo.
D. O comando falha porque você não pode usar o backup dentro de um bloco prazo.
22 . Você configurou otimização de backup para o seu banco de dados usando configurar o
backup
OTIMIZAÇÃO ON. Para qual dos seguintes comandos RMAN não pular um backup
se os arquivos são idênticos?
A. DATABASE BACKUP;
B. UTILIZADORES DE BACKUP TABLESPACE;
C. BACKUP ARCHIVELOG ALL;
D. BACKUP Backupset ALL;

Respostas de auto-teste
1. A , B , E , e F . Estes são os tipos de arquivo de banco de dados que o Recovery
e restaurar.
Manager pode fazer backup
C , D , G , e H estão incorrectos. RMAN nunca vai fazer o backup on-line redo logs ou
tempfiles
porque não é necessária para apoiá-los, e não pode fazer backup de um arquivo de parâmetro
estático
o arquivooude senhas externo.
2. B . A backupset nunca vai incluir blocos que nunca foram usados.
A , C , e D estão incorrectos. A está incorreta porque a compressão é uma opção, não
habilitado
por padrão. C é incorrecta porque isso aplica-se a cópias de imagem, assim como conjuntos
de backup.
incorreta porque
D é não é relevante; uma cópia de imagem não pode ir para a fita; se o fizesse,
não seria um
imagem.
3. B , D , e F . Backups off-line deve ser feito no modo de montagem. Este é o único tipo
parade
umbackup
banco de dados de modo noarchivelog, mas pode ser incremental.
A , C , e E são incorrectas. Um é incorrecta porque a base de dados deve ser montado;
caso contrário, o RMAN não será capaz de se conectar ao seu repositório ou encontrar a
localização
arquivos de do
dados. C é incorrecta porque um encerramento imediato é limpa-lo é apenas um
abortar
que poderia causar problemas. E é incorreta porque um banco de dados modo archivelog
pode
o backup
certamente
off-line não é apenas necessário.
4. D . Neste caso, nenhuma das respostas vai funcionar.
A , B , e C são incorrectas. A está incorreta porque uma cópia do controlfile pode ser
criadoo banco de dados é aberto, através de um instantâneo de leitura consistente. B está
enquanto
incorreta porque
comando irá geraresta
um Criar script CONTROLFILE, não uma cópia de arquivo. C é
incorrecta
porque a multiplexação de arquivo é uma precaução adicional, não o único.
5. E . RMAN detectará a ausência de um apoio apropriado para servir de base a
e, portanto,
incrementais
fazer um backup de nível 0.
A , B , C , e D estão incorrectos. A está incorreta porque isso irá ocorrer
automaticamente.
incorrecta B é não pode ser usado como a base para qualquer backup
porque completo
incremental.
incorreto porque
C é redo é necessário para preencher a lacuna entre o último backup
incremental
hora atual. Deaé incorrecta porque uma estratégia incremental pode ser utilizado com
modo NOARCHIVELOG, desde que o backup é feito enquanto o banco está fechado.
6. A , B , e C . Enterprise Manager irá instruir o agente para executar o backup. O banco
de dados
instância deve estar em execução, ou o agente não será capaz de entrar em contato com ele e
começar RMAN.
D está incorrecta. Backups do Oracle-agendados não usar o programador do sistema
7. operacional.
C . O comando crosscheck verifica se o repositório não reflete com precisão a realidade.
A , B , e D são incorrectas. A está incorreta porque crosscheck não validar se
os backups são bons somente se eles existem. B está incorreta porque crosscheck não
Deletar menções a backups em falta; Ele só sinalizadores-los como expirado. D é incorrecta
crosscheck confirma a existência de ambos os conjuntos de backup e cópias de imagem.
porque
8. D . Backups que são obsoletos de acordo com a política de retenção do RMAN será
removido.
A , B , C , e E são incorrectas. A está incorreta porque isso descreve arquivos de dados,
área não o jejum
de recuperação. B está incorreta porque a operação não será necessariamente fail-lo
pode ser liberar espaço automaticamente. C está incorreta porque o sistema de alerta só irá
possível
relatar o problema; ele não vai corrigi-lo. E é incorrecta porque EXPIRADA refere-se ao
estado dode backup no repositório, e não o próprio backup.
registro
9. A , E , e H . RMAN faz o backup do controlfile atual eo spfile (se você usar um) depois
um backup com êxito, quando você voltar explicitamente o controlfile atual, e quando o
estrutura das alterações da base de dados.

B , C , D , F , e G estão incorrectos. O RMAN não o backup do controlfile em qualquer


Nestas
umacircunstâncias.
10. C , H , e I . Instância não podem ser copiados porque RMAN faz o backup de bancos de
dados;
exemplo a
compreende as estruturas de memória do Oracle e não podem ser copiados.
não pode ser apoiada, porque não é uma opção válida; você deve usar CURRENT
CONTROLFILE
CONTROLFILE para fazer backup do controlfile. REDOLOG não podem ser copiados
porquedeve
nunca vocêfazer o backup dos arquivos de log redo online, e, portanto, REDOLOG
BACKUP é incorreto.
sintaticamente
A , B , D , E , F , e G são incorrecta porque todas elas podem ser copiados. Todos os
listada
outros
(a controlfile
objetos corrente, o spfile, toda a base de dados, um ficheiro de dados
individual, indivíduo,
tablespace uma ou um ou arquivos de log redo arquivados mais) podem ser apoiados
pelo RMAN.
11. use oAConfigure.
e D . O comando showpara
. . CLEAR all mostra
redefinirtodas as configurações
um valor para para
de configuração o alvo conectado; você
o padrão.
pode
B , C , e E são incorrectas. B é incorrecta porque CONFIGURAR. . . Resets clara a
definição de configuração para seu valor padrão. C está incorreta porque MOSTRAR
TODOSvocê
quando só funciona
está conectado a um banco de dados alvo. E é incorrecta, uma vez ver todas as
listas tudo
valores de configuração, independentemente de terem sido alterado do padrão.
12. D . % U é o padrão e é um nome de arquivo exclusivo gerado pelo sistema que é
% U_%
equivalente
p_% c. a
A , B , C , e E são incorrectas. Estas escolhas são válidos no comando formato, mas são
não o padrão.
13. A e B . Além de arquivos de dados e arquivos de log redo arquivados, você pode criar
de controlfiles.
cópias de imagens
C e D são incorrecta porque eles não podem ser armazenados como cópias de imagem.
Na verdade,
não pode ser feitoeles
usando o RMAN.
14. C . Quando o backup for concluído com êxito, o RMAN exclui todos os arquivos de log
de todos
redo os
arquivados
destinos, incluindo a área de recuperação rápida.
A , B , e D são incorrectas. A e B estão incorretas porque RMAN exclui redo arquivado
arquivos de log de todos os destinos. D está incorreta porque o comando DELETE
ENTRADA
apenas para arquivos
aplica de log redo arquivados que se aplicam a este backup.
15. D . Um backup de todo o banco de dados também pode incluir arquivados arquivos de
log, B
A redo
,eCea são
spfile.
incorrectas. A e B são incorrecta porque qualquer um deles pode ser a
parabase
uma estratégia de backup incremental, desde que você use o incremental nível 0
parâmetro no comando BACKUP. C está incorreta porque tanto um backup de todo o banco
edeum
dados
backup completo pode ser cópias de imagem ou conjuntos de backup.
16. B , C , e D . A nível 0 backup inclui todos os blocos em um arquivo de dados, com
nuncaexceção
foram deusadas.
blocos
Eleque
também pode ser usado tanto com nível cumulativo e incremental 1
backups.
A e E são incorrectas. A está incorreta porque um backup de nível 0 exclui blocos que
têm
nunca foi usado. E é incorreta porque um backup de nível 0 é fisicamente idêntico a um
backup do mesmo arquivo de dados; a diferenciação é a metadados armazenados no
completo
catálogo de recuperação.

17. Um . Um backup diferencial é o padrão e faz o backup de todos os blocos alterados


níveldesde
0 nível
a última
1 backup. Você não pode especificar a palavra-chave DIFERENCIAL, que é a
padrão.
B , C , e D estão incorrectos. B está incorreta porque um backup cumulativo não é o
e elepadrão
faz o backup somente os blocos alterados desde o último backup de nível 0. C é
incorrectadiferenciais
backups porque também fazer backup de blocos alterados desde o último nível 1
ébackup
incorreta
incremental.
porque umDbackup cumulativo não é o tipo padrão de backup incremental e
faz backup somente blocos alterados desde o último nível 0 backup.
18. B . RMAN cria um máximo de quatro cópias para locais disco ou fita.
A , C , e D estão incorrectos. Não há diferenciação entre fita e disco para duplexado
backups, eo intervalo é de dois a quatro.
19. A , E , e F . Backups de arquivo pode ser mantido por um período indefinido de tempo
ou retidos
um período de para
tempo específico usando o MANTER ATÉ cláusula. Além disso, você pode
usar umpara
backup arquivo
migrar um banco de dados, e você pode alterar o período de retenção como
muitas vezes
precisa depoiscomo
de criá-lo.
você
B , C , e D estão incorrectos. B é incorrecta, uma vez a cláusula correta é a mudança. . .
Nokeep. C está incorreta porque apenas os logs redo arquivados necessários para o
instantâneo
incluídos nosão
backup. D está incorreta porque você pode facilmente mudar o período de
retenção para
qualquer backup de arquivo.
20. C . RMAN faz o backup do arquivo de dados em múltiplos do tamanho da seção e
qualquer
reside restante
na última seção.
A , B , e D são incorrectas. A está incorreta porque você pode usar backups multisection
para tipo de espaço de tabela. B está incorreta porque o RMAN não completam o
qualquer
tamanho
criar seção para
tamanhos de secção igual na saída. D está incorreta porque você pode fazer backup de
qualquer
tabela individual
um ou todo o banco de dados como um backup multisection.
21. C . Você pode usar configurar apenas no prompt de comando RMAN para definir
e nãovalores
pode ser
padrão,
usado dentro de um bloco prazo.
A , B , e D são incorrectas. A está incorreta porque o comando configurar não pode ser
utilizado dentro de um bloco de processamento. B é incorrecta, pelo mesmo motivo; Além
disso, quaisquer
alocados canais
dentro de um bloco prazo substituir o canal padrão. D está incorreta, pois você
pode usar quer como um comando independente ou dentro de um bloco prazo.
BACKUP
22. B . Otimização de backup não é usado para fazer backup de tablespaces individuais.
A , C , e D estão incorrectos. Otimização de backup é usado para todos esses comandos.
CAPÍTULO 24

Restaurar e recuperar com o RMAN

Objetivos do exame
• 63.1.10.2 Executar recuperação completa e incompleta
• 63.1.1.12 recuperar arquivos usando o RMAN
• 63.1.12.1 Executar recuperação para spfile, senha do arquivo, CONTROLFILE e Redo Log
Files
• 63.1.12.2 Executar recuperação Tabela de Backups
• 63.1.12.3 Executar recuperação de Índice e de leitura apenas Tablespaces, Tempfile
• 63.1.12.4 Restaurar um banco de dados para um novo hospedeiro

Este capítulo detalha usando Recovery Manager (RMAN), em um cenário de recuperação. Isso é
necessárioum
perderam se você
ou mais arquivos de dados, um CONTROLFILE, ou, eventualmente, todo o banco de
dados. Dois
definido pelatermos
primeira
devem
vez: ser
restaurar e recuperar . Para restaurar um arquivo significa para substituir
o arquivo
uma cópiadanificado
extraída deoualguma
faltando
forma
comde backup. Para recuperar um arquivo significa aplicar vetores
dearquivo
o mudançarestaurado,
refazer a a fim de trazê-lo para frente no tempo, de preferência ao estado em que estava
antes queRMAN
ocorreu. o dano automatiza todo o processo de restauração e recuperação.
Executar recuperação completa e incompleta
Nas seções seguintes, você vai aprender como usar os comandos de restauração e recuperação para
banco de dados em execução no modo ARCHIVELOG. Primeiro, você vai ler sobre as funções
um
ebásicas
recuperar
do RESTAURAR
e como eles funcionam. A seguir, você verá como recuperar tanto um não-crítica e uma
crítica
arquivo de dados com sucesso. Você vai usar recuperação incompleta quando tanto mais recentes
redodisponível
não logs são ou você deseja restaurar e recuperar a um tempo no passado antes de algum tipo de
ocorreu um erro.
lógica

Restauração e recuperação em uma página


Restauração e recuperação pode ser completa (ou seja, sem perda de dados) ou incompleto (ou seja,
você perde
dados). A primeira decisão de um administrador de banco de dados (DBA) faz depois de um
problema é secompleta
recuperação tentar ou incompleta. Noventa e nove vezes fora de uma centena, você deve tentar
para competirA perda de qualquer número de qualquer arquivo não é motivo para perder dados, a
recuperação.
menosarquivo
grupo que todas
de as
logcópias
on-line
doseatual
foram. Nesse caso, a recuperação incompleta é a única opção.
A recuperação completa após a lesão arquivo de dados requer quatro etapas:

1. Pegue o arquivo danificado ou faltando (ou arquivos) offline.


2. Restaurar ele (ou eles).
3. Recuperar-lo (ou eles).
4. Traga-(ou eles) online.

recuperação incompleta também requer quatro etapas:

1. Montagem da base de dados.


2. Restaurar todos os arquivos de dados.
3. Recuperar o banco de dados até algum ponto.
4. Abra o banco de dados com RESETLOGS.

Estas são as diferenças: A recuperação completa pode (normalmente) ser feito enquanto o banco
recuperação
de dados incompleta
está aberto;é feito no modo de montagem. A granularidade de restauração para a
recuperação
arquivo danificado
completa(ouéarquivos);
a a granularidade de recuperação incompleta é toda a base de dados.
recuperação utiliza a palavra-chave ATÉ para parar a recuperação em um número determinado de
Incompleto
alteração
ou do sistema
log número (SCN), odetempo,
de sequência interruptor; recuperação completa não. Após a recuperação completa,
nenhuma outra
ação é necessária, é como se nada tivesse dado errado; recuperação incompleta termina por re-
criando os arquivos de log redo online, com o comando RESETLOGS.

Usando o RMAN restaurar e recuperar Comandos


Em geral, a recuperação a partir de um banco de dados falha é um processo de dois passos: restaurar
uma ou mais
arquivos de umbase
local
de dados
de backup, que é a fase de restauração, e aplicando arquivados e redo log on-
arquivos para trazer todo o banco de dados ou arquivo de dados individuais até o SCN especificado
line
(geralmente
recente SCN,osoumais
a última transação confirmada), que é a fase de recuperação.
O comando de restauração é o primeiro passo em qualquer processo de recuperação. Quando
você emite
comando, uma restauração
o RMAN recupera um ou mais arquivos de dados de disco ou fita junto com qualquer log
redo arquivados
arquivos necessários durante a operação de recuperação. Se os seus arquivos de backup estão em
fita, você
alocar os canais
precisará
de fitas necessárias também.
Quando você emitir o comando RECUPERAR, RMAN aplica as mudanças no arquivados e on-
refazer
linearquivos de log para os arquivos de dados restaurados. O processo pode ser tão simples como
o exemplo
saída do comando
seguinteé (o
excluído para maior clareza):
O processo
arquivo denão
de dados recuperação
crítico. Seé você
um pouco
perderdiferente,
um arquivodependendo
de dados se você perde
críticos, um crítico
você deve ou eum
desligar
iniciarMOUNT
modo o banco deantes
dados
que você possa recuperar o banco de dados. Para um arquivo de dados não
crítico, você pode
recuperação, enquanto
executar
os usuários
o estão conectados e usando outros arquivos de dados disponíveis.
Note-se
ser que muitas
realizada quer nooperações podemou o nível de arquivo de dados, mas que as operações de
nível de tabela
espaços de
possível somente
tabelassesão
o banco de dados é aberto.

Executar a recuperação completa de um Noncritical Datafile


Se você perder um arquivo de dados que não faz parte do SISTEMA ou desfazer de tabela, o arquivo
de dados
não críticoé considerada
(embora os usuários do arquivo de dados perdidos pode discordar desta avaliação).
Quando
banco deodados está no modo ARCHIVELOG, um arquivo de dados corrompidos ou ausentes que
nãodesfazer
ou faz partetabela
do SISTEMA
afeta apenas objetos em que arquivo de dados, ea base de dados pode permanecer
aberta.
As etapas gerais para recuperar um arquivo de dados a partir de um espaço de tabela não crítico
são os seguintes:
1. Se o banco de dados está aberto, pegue a tabela que contém o arquivo de dados corrompido
ou off-line
ausente com o comando ALTER TABLESPACE.
2. Use o RMAN comando de restauração para carregar os arquivos de dados para o espaço de
tabela
localização.
a partir do backup
3. Use o RMAN RECUPERAR comando para aplicar arquivado e refazer on-line arquivos de
logarquivos
para o de dados restaurados.
4. Traga a tabela de volta online.

Porque o banco de dados está no modo ARCHIVELOG, a recuperação até a última transação
confirmada
possível. é palavras, os usuários não tem que digitar novamente todos os dados para
Em outras
transações
Note que é,anteriormente
estritamente falando,
cometidos.
não é necessário tomar todo o espaço de tabelas offline. Se o
espaço dedetabela
consiste múltiplos arquivos de dados e apenas um dos arquivos de dados está danificado, é
possível
um off-line
ter arquivo
apenas que
de dados. Isto irá resultar em apenas alguns objetos no espaço de tabela (aqueles
que
o têm extensões
arquivo em estar indisponíveis. Como o seu software irá reagir a esta situação é difícil de
danificado)
prever.
Exercício 24-1: Restaurar e recuperar os USUÁRIOS Tablespace Neste exercício, o arquivo de
dados para o tabela foi acidentalmente excluído pelo administrador do sistema. Restaurar e recuperar
USUÁRIOS
tablespace enquanto o banco de dados ainda está aberto para acesso a outros espaços de tabela. É
o
assumido que
exercícios anteriores foram concluídos.

1. Conecte-se ao RMAN e tomar o USUÁRIOS tablespace offline.

TIP Começando com Oracle Database 12 c , você pode executar a maioria dos comandos SQL
dentro RMAN
usando sem RMAN sql. No entanto, você ainda pode optar por usar o comando sql para
o comando
claro que você está executando um comando não-RMAN.
torná-lo

Todos os usuários tentando acessar a tabela enquanto está offline receberá uma mensagem
semelhante
Os seguintes:
à

2. Restaurar a tabela USERS.

3. Recuperar a tabela USERS para aplicar os arquivos de log redo arquivados e online.

4. Traga os tablespace usuários online novamente.


5. Confirmar que os usuários podem novamente acessar a tabela USERS.

6. Repita o exercício, fazer a restauração e recuperação no nível de arquivo de dados.

Estes são os comandos:

Executar a recuperação completa de um arquivo de dados Critical


O processo para a recuperação de um arquivo de dados crítico é semelhante ao de um arquivo de
dados
o que
banco denão é crítica,
dados deve serexceptuando
desligado eoabriu
facto no estado MOUNT para executar a operação de
recuperação.
o arquivo de dados
E se perdidos é a partir do espaço de tabela SYSTEM, a instância irá falhar mais
provável ou desligar
automaticamente. Aqui estão os passos que você usar para recuperar um arquivo de dados críticos:

1. Desligue o banco de dados com shutdown abort se ele já não estiver desligado.
2. Abra novamente o banco de dados com STARTUP MOUNT.
3. Use o RMAN RESTAURAR comando para copiar (restaurar) o arquivo de dados (ou
arquivos
tablespace
de dados)
críticapara
a partir
o da localização de backup.
4. Use o RMAN RECUPERAR comando para aplicar qualquer arquivado ou refazer on-line
arquivos de log. o banco de dados para usuários com ALTER DATABASE ABERTO.
5. Abra novamente

Todas as transações confirmadas são recuperados até o momento da falha, para que os usuários
reinserir
não terão
quaisquer
que dados.
No modo de montagem (necessária quando reparar danos em um arquivo crítico), ALTER
comandos
TABLESPACE
não estão disponíveis, por isso, restauração e recuperação deve ser feito no nível de
arquivo. o ALTER
comandos TABLESPACE pode ser usado somente quando o banco de dados é aberto.

Executando Recuperação Incompleta Usando RMAN


Na ocasião, pode ser necessário para restaurar um banco de dados para um ponto de tempo no
passado. Por
aplicações exemplo,
poderia ter feito inúmeras mudanças errôneas para o banco de dados nas últimas 24 horas,
evocê pode não ser capaz de reverter os erros facilmente com um flashback da tabela, ou você não
tem de flashback
configurado para o banco de dados.
Usando pontos de restauração torna mais fácil para executar a recuperação point-in-time, se você
recuperação
está executando
incompleta na base de dados RMAN ou Flashback. Depois de aprender sobre os pontos
de restauração,
executar uma recuperação
você incompleta usando um ponto de restauração.

Criação de pontos de restauração


Você pode criar dois tipos de pontos de restauração, seja a partir de um momento específico ou com
um número
passado. QueSCN
tipona
você usa depende do seu ambiente e qual é a opção mais conveniente. E se
você não especificar uma ou outra opção, a Oracle usa o SCN atual e presume que você deseja que o
tempo
para serdea restauração
hora atual. Lembre-se que você pode recuperar o atual SCN de V $ DATABASE.
Para criar um ponto de restauração para o tempo presente ou SCN, use este formato do CRIE
comando
RESTAURAR
POINT:

Para criar um ponto de restauração para um determinado SCN, use as a partir de sintaxe.

Os pontos de restauração também são úteis quando você quiser usar a tecnologia de Flashback da
Oraclede
banco para
dados
flashpara
backuma ponto no tempo no passado.
A Oracle mantém pontos de restauração para, pelo menos, desde que o tempo especificado no
parâmetro de inicialização CONTROL_FILE_RECORD_KEEP_TIME. Se você quiser
explicitamente
ponto de restauração
para manter
mais, use
um a palavra-chave PRESERVAR quando você criar o ponto de
restauração.

Como você poderia esperar, você pode remover explicitamente um ponto de restauração com a
queda ponto de restauração
comando.

Executando Recuperação Incompleta Gerenciada-Servidor


Para executar gerenciada por servidor (RMAN) recuperação incompleta (recuperação gerenciados
pelo usuário não
recomendado e obsoleta
é no Oracle Database 12 c ), use as seguintes etapas:

1. Determinar o ponto de destino para o restauro (SCN, tempo, ponto de restauração, ou log
número de sequência).

2. Defina as variáveis NLS no prompt do sistema operacional se você estiver usando


incompleta
recuperação.
baseada no tempo
• NLS_LANG
• NLS_DATE_FORMAT
3. Pare e reinicie o banco de dados no modo MOUNT.
4. Usando um bloco prazo RMAN, utilize o SET até que, restaurar e RECUPERAR comandos.
5. Opcionalmente, abra o banco de dados em modo de somente leitura para verificar se o ponto
de restauração foi
desejado
o ponto.
6. Abra o banco de dados usando RESETLOGS.

É importante especificar as variáveis NLS corretos para que o RMAN interpretar os textos de
vocêdata
fornecer corretamente; aqui estão alguns valores de exemplo:

Observe também que a abertura do banco de dados como somente leitura após a sua recuperação
incompletadedá-lhe
oportunidade a outro recuperação incompleta para um SCN ou horário diferente. Uma vez
executar
banco de dados
que você abrir opara leitura e escrita com RESETLOGS, a seqüência de log atual é definido como 1,
e qualquer refazer
informação não aplicada durante a recuperação é descartado. Isso impede que você executar outra
recuperação usando um redo gerado após o SCN ou timestamp de sua recuperação incompleta.

Exercício 24-2: Executar recuperação incompleta para restaurar o espaço de tabela USERS
Neste
exercício, você irá criar um ponto de restauração e usá-lo mais tarde para se recuperar da eliminação
acidental
tabelas e exibições
de na tabela de exemplo.

1. Conecte-se com o SQL * Plus e criar um ponto de restauração para o atual SCN.

2. “Acidentalmente” cair algumas tabelas e exibições na tabela EXEMPLO.

3. Desligue o exemplo e reinicie o banco de dados no modo MOUNT.

4. No prompt do RMAN, crie um bloco de execução que usa o ponto de restauração criado
anteriormente
e recuperar para restaurar
o banco de dados para o tempo do ponto de restauração.

5. Abra o banco de dados com RESETLOGS.

6. Verifique a existência da tabela descartada.

Note-se que vários métodos menos draconianas estão disponíveis para restaurar e recuperar essas
pontos
tabelas
de vista,
e tais como a utilização Flashback Database, restaurando e recuperando cada tabela,
enquanto
banco de dados
o ainda está online, ou recuperar as tabelas da lixeira. Cada situação de recuperação
deve ser separadamente, o equilíbrio entre estes factores:
avaliadas

• O tempo necessário para obter os arquivos de backup necessários para a recuperação. Se os


arquivos
offsite, de
então
backup
o tempo
estãonecessário
em uma fita
pode ser inaceitável.
• O tempo para restaurar e recuperar toda a base de dados uma vez que os arquivos de
recuperação estão
• O tempo que disponíveis.
o DBA deve gastar para executar a recuperação.
• O tempo os usuários devem passar para reinserir os dados perdidos.
• A tolerância de usuários para o tempo de inatividade do banco de dados.

Recuperando Usando Backups incremental Atualizado


Usando cópias de imagens em sua estratégia de backup e recuperação reduz significativamente o
tempo
restaurarqueum leva para de dados ou banco de dados inteiro. cópias de imagens já estão no formato
arquivo
enativo
não precisa
de arquivo
ser recriado
de dadosa do
partir
Oracle
de um conjunto de backups RMAN compactado ou
descompactado.
melhorar isso ainda
RMAN
maispode
porque você pode atualizar de forma incremental uma cópia de imagem
usandodeum
cópia segurança.
incremental
Nas seções seguintes, você vai aprender mais sobre como recuperar uma cópia
de imagem,
rever e você de cópia de imagem de amostra.
uma estratégia
Para esclarecer, você está criando cópias de imagens, mas daqui para frente você está mantendo
datacopiar a imagem
de forma até Você não está realmente usando essa cópia para recuperar seu banco de
incremental.
dados
em vezaodevivo,
usar mas
on-line e arquivados arquivos de log redo para recuperar a cópia de um arquivo de
edados
quando
queocorre
ele estáuma
pronto
catástrofe.
para usar se
A “estratégia de backup Oracle sugeriu” que Enterprise Manager pode implementar é baseada
incrementalmente
em um atualizados backup.
Recuperando
Quando você atualizar cópias
uma cópia dedeimagens
imagem com um backup incremental, qualquer cenário de
recuperação
cópia de imagem
que usa
precisa
o aplicar apenas os arquivos de log redo arquivados e on-line desde o último
backupdeincremental
cópia segurança. Não há mais nenhuma necessidade de realizar outra cópia da imagem completa
dorecuperação
A arquivo de dados
incremental
ou banco
de cada
de dados.
arquivo de dados é indistinguível de uma cópia de imagem
completa.
Se mais de uma cópia de imagem de um arquivo de dados existe, RMAN determina
utilizar-geralmente
automaticamentea versão
qual deles
mais recentemente criado ou incrementalmente atualizado. Se o
processo
uma cópiadederecuperação
imagem falhaparaao aplicar um backup incremental, como a indisponibilidade temporária
backup incremental, basta reiniciar o processo de recuperação quando o backup incremental está
do
disponível
RMAN peganovamente.
onde parou.

A implementação de uma Estratégia Copiar imagem

Aqui está um exemplo de script RMAN para implementar uma estratégia de cópia de imagem
incrementalmente
base: atualizado diariamente

Aqui está um resumo do que acontece neste bloco prazo. A primeira vez que você executá-lo,
cópia
nãodahá
imagem
nível 0para restaurar e, da mesma forma, nenhum backup incremental nível 0 Ainda, de
modo a obter estas mensagens:

RMAN cria automaticamente um backup de nível 0 sempre que ocorre um backup de nível 1 e
nível
não
0 backup.
há A próxima vez que você executar o script, o nível existe 0 backup, mas não
incremental
backup existe
nível
ainda.
0 Assim, o comando RECUPERAR no bloco de partida ainda gera estas
mensagens:

Na terceira e sucessivas invocação deste bloco prazo, o comando RECUPERAR atualiza o


cópia da imagem com o último nível 1 backup, e um outro nível 1 backup incremental ocorre. Isso
vai
ser aplicada na próxima vez que este bloco de execução é executado. Como resultado, qualquer
invocação desse script não implicará mais do que as cópias de imagens, um backup incremental, e
operação de recuperação após a terceira
redo logs arquivados e on-line gerados desde o último nível 1 backup incremental.
qualquer

Mudar para cópias de imagens para recuperação rápida


Uma vez que você começar a fazer cópias de imagens, e até mesmo de forma incremental atualizá-
alos,
restauração
você podee usá-los
recuperação
em operação para recuperar rapidamente alguns ou todo o seu banco de
dados. de
banco Para recuperar
dados o seurápido, você pode executar um interruptor rápido para cópias de imagens.
ainda mais
Em outras
cópias de imagem
palavras,diretamente,
você pode usar
pularo a etapa de restauração, e aplicam-se apenas a etapa de
recuperação.
arquivos de dados
Após são
o original
reparadas ou restauradas, você pode facilmente mudar de volta com pouco ou
nenhum
estão usando
impacto
outros
paraarquivos
os usuários
de dados.
que O banco de dados não precisa ser desligado a menos que
estão migrando
imagem para
cópias do o
sistema crítico ou desfazer arquivos de dados do espaço de tabelas.
Usando o comando SET NEWNAME dentro do bloco prazo para especificar um local
alternativo
a cópia parade substituição permite que o RMAN para fazer a troca de cópias de imagens
da imagem
ainda mais fácil.
Realizando um Switch rápido a cópias de imagens
Quando ocorre um desastre e você perder um único arquivo de dados ou mesmo todos os arquivos
de dados, ter
disponível reduz
cópias
significativamente
de imagens o tempo necessário para recuperar seu banco de dados. Uma vez
que você mudou para
uma cópia de imagem, você provavelmente irá querer voltar para os locais arquivo de dados original
após ade mídia foi reparado.
falha
Os passos para mudar para uma cópia do arquivo de dados são simples. Isso pressupõe,
cópias
naturalmente,
de imagensquede arquivo
você temde dados danificados ou perdidos, bem como todos os arquivos de log
aredo
cópia
arquivados
de imageme online
foi criado
desde
(ou incrementalmente atualizado). Aqui estão os passos:

1. Leve o datafiles faltando offline. Você pode usar uma das vistas de desempenho dinâmico
V $ RECOVER_FILE, V $ DATAFILE_HEADER, ou V $ TABLESPACE para identificar
quais
arquivos de dados precisam de recuperação.
2. CHAVE Use RMAN. . . PARA COPIAR para apontar para a cópia de imagem dos arquivos
de dados em falta.
3. Recuperar os arquivos de dados usando o comando RMAN RECUPERAR.
4. Traga os arquivos de dados de volta online.

EXAME TIP O comando RMAN interruptor é equivalente ao comando SQL ALTER


DATABASE RENAME FILE.

Exercício 24-3: Usar o comando Mudar para recuperar um arquivo de dados rapidamente o
arquivo
USUÁRIOS de dados para
tabela o
desaparece misteriosamente. Os usuários começam a reclamar imediatamente,
reportar estequando tentar criar ou atualizar uma tabela:
mensagem

Além disso, você verá esta mensagem no log de alerta. Este alerta também deve ser visível como
a home
um alerta
page Enterprise
sobre Manager.

Descubra o que o número arquivo de dados que você precisa para restaurar, mudar para uma
cópiadededados
arquivo imagem, e ema tabela
e trazer seguida,
derecuperar o
volta online.

1. Prepare-se para o exercício através da criação de uma cópia de imagem do banco de dados
Noa área
para prompt do RMAN, utilize
de recuperação rápida.o seguinte:

Usar um comando do sistema operacional para apagar o arquivo de dados.


2. Uma vez que você já sabe que arquivo de dados # 4 está tendo problemas, consulta V $
TABLESPACE
confirmar quepara
a tabela USERS é o culpado.

A visão de desempenho dinâmico V $ DATAFILE_HEADER mostra o erro também, mas


faz
nem sempre identificar o nome de tabela.

3. Leve o arquivo de dados offline ao SQL> prompt.

Alternativamente, você pode tomar o arquivo de dados offline a partir de dentro de uma
sessãopara
4. Mude RMAN.
o arquivo de dados copiar para a tabela USERS.

NOTA Você pode usar o comando switch com qualquer arquivo de dados ou TABLESPACE
parâmetro, o que for mais fácil ou mais conveniente. Além disso, você não precisa saber onde seu
arquivo
cópia é. de
RMAN
dadossabe onde ele está e vai ligá-lo e atualizar o catálogo controlfile e recuperação
automaticamente com o novo local.

5. Recuperar o arquivo de dados usando os últimos arquivos de log redo arquivados e online.

6. Traga o arquivo de dados de volta online.

Alternativamente, você pode trazer o arquivo de dados on-line novamente usando o SQL>
Umaprompt.
vez que seu banco de dados é voltar a funcionar depois de mudar para uma cópia de
paraimagem,
mudar ovocê provavelmente
arquivo de dados devai querer
volta para seu local original após o disco de origem tenha sido
reparado. Isto éverdadeiro se a cópia da imagem que você mudou para reside na área de recuperação
especialmente
rápida. Para
arquivos de dados
moverdeo volta para o local original, siga estes passos:

1. Criar uma cópia de imagem dos arquivos de dados no local original.


2. Pegue a arquivos de dados offline.
3. Utilize
arquivoo de
botão para. . . Comando COPY para voltar para o restaurado (recriado)
dados.
4. Recuperar os arquivos de dados.
5. Trazer os arquivos de dados de volta online.

Exercício 24-4: Usar o comando CHAVE Depois de criar o arquivo de dados USUÁRIOS do
Tablespace
o em Neste exercício, você vai mudar o arquivo de dados para o espaço de tabela de
local original
usuários
seu local de volta para
original após o disco de origem tenha sido reparado (ou você ter descoberto por que
arquivos de dados
desaparecendo do disco
são de origem). Desta vez, fazer o trabalho no nível de tabela. o arquivo de
locais para cada espaço de tabela estão atualmente como segue:
dados

1. Criar uma cópia de imagem do arquivo de dados no local original.

Note que você pode nomear a cópia da imagem que quiser. Neste caso, você vai usar o
nome do arquivo de dados para ser consistente com os outros nomes de arquivo de dados.
original
2. Leve o USUÁRIOS tabela desligada em preparação para o comando switch.

3. Mudar para a cópia recém-criada.


4. Recuperar o arquivo de dados em sua nova localização.

5. Traga os tablespace usuários online novamente.

6. Verifique se o arquivo de dados para a tabela USERS está de volta em seu local original.

7. Criar uma nova cópia da imagem para estar pronto quando ou se o arquivo de dados
desaparece
também novamente, embora
pode usar a cópia davocê
imagem que você acabou comutada de.

Executar recuperação para Spfiles, Controlfiles, e Online

Arquivos de Redo Log


Em casos raros, você pode perder todas as cópias do controlfile atual. Isso é raro, porque você deve
têm o controlfile multiplexados para vários locais. Mesmo se você perder todas as cópias do atual
controlfile, você deve ter pelo menos um backup automático do controlfile do mais recente RMAN
cópia de segurança. Além disso, se você estiver usando um catálogo de recuperação, todos os
metadados reside
controlfile dentrono
decatálogo
seu maisderecente
recuperação. O spfile também é suscetível a perda se não residem
em um sistema de arquivos externo espelhado ou em um (ASM) disco espelhado Automatic Storage
grupo. Quando RMAN executa uma autobackup controlfile, tanto o controlfile atual eo spfile são
Management
backup.
Danosdeaos
arquivos logarquivos de log
redo online. refazer
Eles on-line anão
se destinam serpode ser reparado
protegido pelo RMANPara
por multiplexação. porque RMAN
reparar os não
faz o backup
danoscomandos
usar a eles, SQL. Estes podem ser executado a partir do SQL * Plus ou a partir de dentro de uma
sessão RMAN,
ambos os casos mas
a recuperação
em não em qualquer forma envolvem processos de canal RMAN.

Restaurar o spfile da Cópia de Segurança Automática


Para restaurar o spfile do autobackup, primeiro definir a ID de banco de dados (DBID) se a instância
não é
execução quando o spfile está perdido.

O DBID deve ser parte de sua documentação mais básico e terá sido exibida cada
vez que ligou com o RMAN. Em seguida, reiniciar o banco de dados com um spfile padrão (você vai
algo semelhante no final do capítulo, quando se recuperando para um novo hospedeiro).
fazer

Em seguida, restaurar o spfile do autobackup para o local original.

Finalmente, inicie o banco de dados.

Restaurar o CONTROLFILE
Se o controlfile é multiplexada (como deveria ser), a recuperação da perda de uma cópia é trivial;
copiar uma cópia controlfile sobrevivendo sobre a cópia controlfile danificado ou faltando. Isso deve
simplesmente
ser feito que o banco de dados é desligado ou em modo NOMOUNT (que será sempre o caso,
enquanto
porque o terá falhado quando a cópia controlfile foi danificado e não pode ser posteriormente
instância
montado). Em seguida, montar e abrir o banco de dados. Somente se todas as cópias do controlfile
são perdidos
mais complexo
é nada
necessário. A rotina é como se segue:

1. Inicie a instância, no modo NOMOUNT.


2. Restaure o controlfile de backup.
3. Montagem da base de dados.

4. Recuperar o banco de dados.


5. Abra o banco de dados com RESETLOGS.

A parte estranho é o segundo passo. Porque o banco de dados não pode ser montado, o RMAN
nãoao
acesso temseu repositório e não, portanto, saber onde as peças de backup que contêm o
backups CONTROLFILE realmente são. Há três maneiras de contornar isso.
Primeiro, use o RESTAURAR CONTROLFILE DA comando AUTOBACKUP. Os autobackups
parairum nome bem conhecido, com base na DBID e RMAN pode encontrá-los automaticamente.
Em segundo lugar, use um catálogo de recuperação. O catálogo contém uma cópia do repositório
estão
RMAN,
conectados
entãoase
ele,
você
o RMAN pode interrogar o repositório para encontrar os locais de backup.
Em seguida,
comando RESTAURAR
use o CONTROLFILE ;.
Em terceiro lugar, nomear um pedaço de backup que você sabe inclui um backup controlfile.
mantido
Desdea saída
que você
de seus
tenhacomandos de backup executados anteriormente, você terá esta informação:
RESTAURAR CONTROLFILE FROM '......';.
Restaurar o controlfile a partir de um backup automático é semelhante aos passos que você usar
a partir
paraderestaurar
um autobackup.
um spfileAqui estão os comandos de amostra do RMAN:

Note-se que já que não há controlfile, você tem que abrir o banco de dados com NOMOUNT e
restaurar
depoiso controlfile. Depois de montar o banco de dados com o controlfile backup restaurado,
recuperar
você deveo banco de dados porque o controlfile backup contém informações sobre uma versão mais
o banco de dados. Pela mesma razão, você deve abrir o banco de dados com RESETLOGS.
antiga do
RMAN restaura o controlfile a todos os locais especificados pelo parâmetro de inicialização
CONTROL_FILES. Se um ou mais desses locais ainda não estão disponíveis, você terá que editar o
parâmetro CONTROL_FILES para especificar locais alternativos ou restaurar temporariamente o
controlfile
um local diferente.
para

Exercício 24-5: Restaurar a CONTROLFILE a partir de uma Cópia de Segurança Automática


Neste exercício,
controlfile foramtodas
apagados
as cópias
acidentalmente
do por um administrador do sistema excessivamente
ansiososRestaurar
espaço. tentando eliberar
recuperar
discoo banco de dados com um controlfile restaurado a partir de um
controlfile
backup e spfile
automático.

1. Identificar os locais CONTROLFILE onde todas as cópias do controlfile usados para residir.

Usar um comando do sistema operacional para apagar todas as cópias do controlfile.


2. Desligue a instância (se ainda não estiver para baixo) e reabri-lo no modo NOMOUNT.

3. Inicie o RMAN e restaurar o controlfile de autobackup aos locais originais.

Alguns pontos são dignos de nota aqui. RMAN pode se conectar à instância, mesmo que não
émontado. Na verdade, o RMAN tem que conectar a um banco de dados desmontado para ser
capaz de restaurar
controlfile. RMANaencontra o autobackup controlfile na área de recuperação rápida e
escreve-o
os três destinos
para CONTROLFILE especificados pelo parâmetro de inicialização
CONTROL_FILES.
4. Monte o banco de dados, recuperar o banco de dados (para sincronizar os arquivos de dados
com
controlfile)
o restaurado
e abra o banco de dados com RESETLOGS.

Recuperando-se de um grupo de Redo Log Perdido


A perda de um grupo de redo log ou um membro do grupo de redo log pode significar a perda de
dados e de
esforço umarecuperação.
significativaTambém pode significar nenhuma perda de dados e um esforço de
recuperação
do grupo de redomínima,
log edependendo do estado
se você perder todo o grupo de log, ou apenas um membro de um grupo de
log. o a seguir rever como grupos de registro funcionam e como o grupo de log diferentes status
seções
mudança
redo é escrito
comopara o grupo, como o banco de dados muda para o próximo grupo de log, e como um
registroé copiado
grupo preenchidopara uma localização de arquivo. Na maioria dos cenários, a perda de dados é
inexistente,
espelhar seusespecialmente
grupos de log.se você
Tabela 24-1 Log File Status em V $ LOG

Um grupo de redo log pode ter uma de seis estados na visão V $ LOG.
Em um determinado ponto no tempo, os estados mais comuns são atuais e ativos, e inativos.
Um grupo de redo log está no estado não utilizado após a criação, e uma vez que é usado, ele nunca
vai voltar ao que
Estado. Os estados de compensação e CLEARING_CURRENT existir quando você recriar um log
corrompido
arquivo, que idealmente não ocorrerá muitas vezes!
O banco de dados de exemplo tem três grupos de arquivo de log redo, e esta consulta de V $
cadaLOG
log: mostra o status de

Os dois grupos de arquivo de log com um status de inativos foram arquivados. Dependendo do
de entrada / saída (I / O) de carga do sistema e outros factores, o estado ARCHIVED será NO até o
log
arquivo foi gravado com êxito para todos os destinos de arquivo de log arquivados obrigatórios.

Recuperando-se de falhas Membro do Grupo Log


Se um membro de um grupo de log seja danificado ou perdido, o gravador de Log (LGWR) processo
para escrever para o membro danificado, e sem perda de dados ou interrupção no serviço ocorre. No
continua
entanto, é que você corrigir esse problema o mais rápido possível porque o grupo de log com
imperativo
apenas um
membro é agora o único ponto de falha no seu banco de dados. Se for perdido, os seus esforços de
aumentar, e perda de transações confirmadas é provável.
recuperação
Neste exemplo, o segundo membro do grupo ficheiro de registo terceiro refazer ficar danificado.
mensagens
Estes de erro deve aparecer no log de alerta. Você vai ver mensagens semelhantes na Enterprise
Database Control gerente home page, se ele está configurado.

Você também pode identificar o membro perdido ou danificado arquivo de log redo utilizando o
V vista $ LOGFILE:

A solução para este problema é simples. Largar o membro inválido e adicionar um novo membro
para o grupo, como neste exemplo:
Note-se que a redundância fornecida pelo grupo de arquivo de log redo reparado não estará
da próxima
disponível
vezaté
que este grupo arquivo de log está ativo. Se o próprio disco de destino não está
danificado
redo arquivo
e odeoriginal
log é logicamente corrompido de erro do usuário ou um processo não autorizado,
você pode
arquivo de reutilizar o redo originais
log, especificando a cláusula de reutilização como segue:

Recuperando-se de Perda de uma Redo Grupo Entire INACTIVE


A perda de todos os membros de um grupo de redo log marcado como inativo é o grupo de redo log
Log
fracasso,
mais benigna
embora você deve agir rapidamente antes que os processos de banco de dados Oracle
precisa usar o log de
grupo novamente. Seredo
a Oracle precisa usar o grupo de redo log antes de ser reparado, o banco de
dados páraseja
problema até corrigido.
que o O grupo não é necessário para a recuperação de falhas porque é inativo.
Portanto,
pode limpar
você
o grupo usando o comando ALTER DATABASE LIMPAR LOGFILE.
Um grupo de redo log danificado com um estado de INACTIVO pode ou não ser ainda
estatuto
arquivados.
de arquivo
o determina qual formulário do ALTER DATABASE comando LIMPAR
LOGFILE para
usar.
Se um grupo de redo log inativo danificado foi arquivado, você pode identificar o número do
grupo
grupo
danificado
do do log de alerta ou da dinâmica vista do desempenho V $ LOGFILE. Lembrar
que você pode olhar para a coluna ARCHIVED na dinâmica vista do desempenho V $ LOG para
se o grupo de log ainda não foi arquivado.
determinar
Neste exemplo, redo log grupo # 1 está danificado, mas foi arquivada. Use o ALTER
comando DATABASE da seguinte forma:

Se a instância é baixo, iniciar o banco de dados no modo de montar e executar este comando.
podeCaso
executar
contrário,
o comando
você quando o banco de dados está aberta. Todos os membros do grupo de
arquivo de log redo são
reinicializado. Se qualquer um ou todos os membros do grupo de redo log estão faltando, então eles
são recriados,
desde que os diretórios de destino estão disponíveis.
O grupo de redo log foi arquivado. Assim, sem perda de dados irá resultar, e todos os backups
em
combinação com arquivos de log redo arquivados podem ser usados para a recuperação completa do
banco de dados
dados.reutiliza
Até o o grupo arquivo de log redo, tem um status de UNUSED, como você pode
ver nesta consulta:

Se você tem um grupo nonarchived danificado redo log inativo, você não perderá nenhum
comprometido
transações. No entanto, você deve executar um backup completo depois de limpar o grupo de redo
log para
você podegarantir
executar
queuma recuperação completa. Se você não fizer isso, você terá uma lacuna em
arquivos de
Portanto, você
logserá
redocapaz
arquivados.
de executar apenas incompleta recuperação até o SCN da última transação
no arquivo de log redo arquivados criado antes que o arquivo de log ausente.
Para limpar o segundo grupo de log unarchived, iniciar o banco de dados no modo de montagem
up) (se
e use o seguinte
ainda comando:
não estiver

Note-se a palavra-chave não arquivadas neste comando. Ele executa a mesma ação que ocorre
vocêquando
cancelou um grupo de redo log arquivados, mas esta é a maneira de forçá-lo a reconhecer que
da Oracle
você terá uma lacuna em seus arquivos de log redo arquivados.
Depois de limpar o grupo de arquivo de log, executar um backup completo. Isso fornece um
parabackup que vocêcompleta,
a recuperação pode usarjuntamente com todos os arquivos de log redo arquivados sucessivas.
Um fator complicador para considerar quando você está limpando um redo log inativo
nonarchived
grupo danificado
é se um arquivo de dados fora de linha precisa do grupo arquivo de log apagada antes que
possaacontecer,
isso ser colocado
vocêonline.
pode ter
E se
que soltar o arquivo de dados. Segmentos na tabela contendo o arquivo
de dados
pode existir
desligada
em outros arquivos de dados on-line que pertencem a este espaço de tabela e podem ser
realocados para
tablespaces. A tabela
outra pode ter que ser recriado utilizando backups lógicos ou algum outro método.
Não é possível recuperar o arquivo de dados e, portanto, a tabela que contém o arquivo de dados,
porque o redo
obrigados a trazer o arquivo de dados on-line novamente se foi. A Oracle faz você reconhece que o
seu arquivo deneste
irrecuperável dadoscenário,
é bem como, e você deve usar o DATAFILE UNRECOVERABLE
palavras-chave quando você limpar o grupo de arquivo de log:

Recuperando-se de uma ACTIVE Grupo Redo Log Perdido


Se um grupo de redo log danificado é no estado ativo, a Oracle não está a escrever para ele, mas é
necessário para a recuperação de instância. Executar ALTER SYSTEM CHECKPOINT para forçar
o escritor(DBW
processo de banco
n ) de
para
dados
escrever todos os buffers alterado de cache do tampão para os arquivos de
dados, e o grupo será em seguida

tornar-se inativo. Limpar o grupo arquivo de log redo como você fez com um grupo de redo log
inativo.
não Você
perder irá
quaisquer transações. Além disso, seu redo arquivado fluxo de arquivo de log será
intacto, sido
tinham se o arquivados
grupo no momento da ocorrência do problema.

Recuperando-se de um actual Grupo de Redo Log Perdido


Esta é a única situação em que você vai perder dados. Um grupo de redo log perdido no estado atual
éatualmente sendo gravados pelo LGWR processo ou ele estava sendo gravado no momento da falha.
instância irá falhar, e sua única opção é para executar a recuperação incompleta aplicando
o
arquivados
refazer on-line
e arquivos de log até, mas não incluindo o grupo de redo log danificado.
Após a realização de uma recuperação incompleta com a base de dados no modo de montagem,
comabrir
RESETLOGS.
a base de dados

Se o local para o grupo arquivo de log redo online danificado está disponível, a Oracle irá
log reinicializar
grupo ficheiro o juntamente com todos os outros grupos, redefinindo o número de sequência de
registo de 1 eSeiniciando
encarnação. o local não
umestá
novomais disponível, renomear os arquivos de log redo online e apontá-
los para
novo umcomo no presente exemplo, ao passo que a base de dados está montado e antes de abrir a
local
base de dados com
RESETLOGS:

Quando você abrir o banco de dados com RESETLOGS, a Oracle re-cria e inicializa qualquer
arquivos
falta de log redo online.

Backup e restauração do arquivo de senha


O arquivo de senha não pode ser gerido pelo RMAN. Para protegê-lo, copiá-lo com qualquer
sistema operativo utilidade. Idealmente, isso deve ser feito depois de qualquer concessão ou
apropriado
revogação do
privilégios (que
administrativa
são SYSDBA, SYSOPER, SYSBACKUP, SYSDG e SYSKM em um banco de
instância; SYSASM em uma instância ASM) e, posteriormente, após qualquer alteração de senha
dados
para qualquer
concedidos usuário
estes privilégios. Na prática, é geralmente suficiente simplesmente confiar em qualquer
backups
feita pelosão
administrador do sistema do sistema de arquivos Oracle Home. Porque o local padrão
o arquivo de senhas está no diretório ORACLE_HOME / dbs (ou diretório ORACLE_HOME \
no Windows), ele será incluído em qualquer backup. É possível armazenar o arquivo de senha em
database
uma
grupo de discos ASM, especificando isso quando você executar o utilitário orapwd para criar o
arquivo.
você nãoNesse
pode copiar
caso, o arquivo usando um utilitário de sistema operacional, e não vai, naturalmente,
ser incluídos
Oracle Homeem backup.
um Neste caso, use o utilitário ASMCMD para copiar o arquivo do grupo de disco
para umde arquivo.
sistema
Se o arquivo de senha é sempre danificado, simplesmente copiá-lo de volta.
Uma alternativa para fazer backup e restaurar o arquivo de senhas é para recriá-lo. Isso leva
par apenas
de segundos. Se outras que SYS usuários foram concedidos privilégios administrativos, estes
terá de ser feita novamente, porque não vai existir em um arquivo recém-criado.
subsídios

Recuperação de uma perdida Tempfile


Recuperação a partir da perda de um ou mais tempfiles é um processo simples. Lembre-se que um
tempfile é idêntico a um arquivo de dados, exceto que ele pertence a uma tabela temporário. O
impacto de
correndo doumbanco de dados é mínima, dependendo do mix de consulta. Em todos os casos, você
pode recuperar
enquanto o banco
o tempfile
de dados é para cima, mesmo se o local do arquivo original não está disponível.

Perder um Tempfile
Uma das consequências da perda de um tempfile é que quaisquer instruções SQL que precisam disco
espaço para triagem (em outras palavras, a memória insuficiente disponível no espaço de memória
temporário
do Oracle)
falhou. Se um
vai ou todos os arquivos de dados para o espaço de tabela TEMP é eliminado no nível do
sistema
pode criar
operacional,
um novo arquivo
você temporário no mesmo diretório que o original usando o TABLESPACE
ALTER
comando. Se o local do diretório original não está disponível, você pode criá-lo em um local
Depois disso, você pode soltar o tempfile original usando um comando semelhante ALTER
diferente.
TABLESPACE.
Exercício 24-6: Criar uma substituição Tempfile para o Tablespace TEMP Neste exercício, a
tempfile para o espaço de tabela TEMP foi acidentalmente apagado, então você deve criar outro
tempfile paraenquanto o banco de dados ainda está em execução.
substituí-lo,

1. Identificar o nome do arquivo temporário para o espaço de tabela TEMP.

2. Crie um novo arquivo temporário com um nome diferente para o espaço de tabela TEMP.

3. Solte o tempfile anterior. Isto irá atualizar apenas o controlfile porque o original
tempfile está faltando.

4. Confirme se o espaço de tabela TEMP contém apenas o arquivo temporário recém-criado.


Iniciando um banco de dados sem um Tempfile
Recuperando da perda de um tempfile é ainda mais fácil se você começar o banco de dados com um
tempfile
O banco faltando.
de dados começa, e se a localização do diretório do disco original está disponível, a Oracle
recria todos
tempfiles faltando, como você pode ver neste trecho do log de alerta:

Se a localização do diretório do disco original não está mais disponível, o banco de dados ainda
usarcomeça,
as etapase você pode
a partir da secção anterior para recriar os tempfiles manualmente para a área de tabela
TEMP.

Broca Two-Minute
Executar recuperação completa e incompleta
• Use RMAN restaurar e recuperar para a recuperação completa de um crítico e não crítico
perda de arquivo de dados.
• Datafiles a partir do sistema e desfazer tablespaces são arquivos de dados críticos.
• Ao restaurar e recuperar um arquivo de dados críticos, o banco de dados deve estar no modo
MOUNT.
• É possível recuperar completamente qualquer arquivo de dados se o banco de dados está no
modo
• VocêARCHIVELOG.
usa pontos de restauração para recuperar um banco de dados para um SCN ou um tempo
no passado.
• Use CRIAR ponto de restauração para criar um ponto de restauração.
• Você deve abrir o banco de dados com RESETLOGS se você executar a recuperação
incompleta.
• Você pode recuperar cópias de imagens com as recentes 1 backups mais nível incremental.
• RMAN determina automaticamente a melhor cópia da imagem a ser usada se mais de um
estiver disponível.
• Use tags com uma estratégia de cópia de imagem incrementalmente atualizado para garantir
que
backup
o correto
incremental atualiza a cópia de imagem.
• Usando cópias de imagens pula a etapa de restauração e economiza tempo de recuperação
global.
• Use o comando CHAVE RMAN TO. . . COPY para alternar para a cópia mais recente imagem
para
um arquivo de dados, tabela ou banco de dados.
• RMAN aplica automaticamente backups incrementais e arquivos de log redo arquivados
quando
recuperar
vocêcom uma cópia de imagem.
• Utilizar a vista de desempenho V $ TABLESPACE dinâmico e V $ DATAFILE_HEADER
para
determinar a tabela e número precisando de arquivo de dados recuperação.

• Depois de mudar para uma cópia de imagem, você pode voltar para uma cópia de imagem
para
localização
o originalquando ele se torna disponível.
• Você usa o comando SET NEWNAME no RMAN para identificar novos locais para
restaurada
arquivos de dados.
• Depois de restaurar um ou mais arquivos de dados com restauração, você usar o comando
mudar
atualizar
parao controlfile e catálogo de recuperação com os novos locais arquivo de dados.
• Você pode usar um backup automático RMAN para restaurar qualquer um spfile ou controlfile
quando
cópiastudo
são online
perdidas.
• RMAN restaura o controlfile a todos os locais especificados pelo parâmetro de inicialização
CONTROL_FILES.
• Se o spfile está perdido, RMAN usa um spfile padrão quando você iniciar o banco de dados
com
• UseNOMOUNT.
RESTAURAR SPFILE DE AUTOBACKUP para restaurar o spfile.
• Use RESTAURAR CONTROLFILE DE AUTOBACKUP para restaurar o controlfile.
• Ao restaurar um controlfile de autobackup, você deve abrir o banco de dados com
• Opcionalmente, é possível restaurar uma cópia do controlfile para um local alternativo.
RESETLOGS.

Executar recuperação para Spfiles, Controlfiles, e Online Redo Log Files


• Um grupo de redo log pode ter seis estados: atual, ativo, inativo, sem uso,
Compensação, ou CLEARING_CURRENT. Os estados mais comuns são atuais,
ACTIVE, e inativos.
• Você pode usar a dinâmica vista do desempenho V $ LOG para consultar o status de cada
grupo demembro
• Se um logs refazer.
de um grupo log seja danificado ou perdido, o processo LGWR continua a
escrever para o membro danificado, e sem perda de dados ou interrupção no serviço ocorre.
• A vista do desempenho V $ LOGFILE dinâmico mostra o estado de cada um dos membros
cada grupo de arquivo de log.
• Se o status de um membro do grupo arquivo de log é inválido na visão V $ LOGFILE, estiver
danificado
indisponíveis
ou e deve ser recriado.
• Perder um grupo de arquivo de log inativo que não tenha sido arquivado irá resultar em uma
lacuna noos
refazer arquivado
arquivos de log e necessita de um backup completo depois de se recuperar do
• Perder um grupo dedearquivos
grupo de arquivos log. de log de redo com um status de ACTIVE não causará a perda
detransações
comprometido
se você pode conseguir executar ALTER SYSTEM CHECKPOINT. Se o
checkpoint falhar, você deve executar a recuperação incompleta.
• Perder um grupo de arquivos de log de redo com um status de CURRENT irá falhar o
exemplo,
executare avocê
recuperação
deve incompleta.
• Perder um arquivo de senha impede DBAs de se conectar a uma instância aberta ou fechada
com
SYSDBA,
a SYSOPER, SYSASM, SYSBACKUP, SYSDG, ou SYSKM privilégio, a menos
que usando do sistema operacional.
autenticação
• Você usa o comando orapwd em um prompt do sistema operacional para recriar o arquivo de
senhas.
• O local padrão para o arquivo de senhas é de R $ ORACLE_HOME / dbs sobre Linux e
% ORACLE_HOME% \ database no Windows.
• As desempenho $ PWFILE_USERS vista V dinâmicas lista todos os usuários do banco de
dados
SYSDBA,
que têmSYSOPER, ou SYSASM privilégios.
• Se você quiser fazer backup de seu controlfile enquanto o banco de dados é aberto, você pode
fazê-lo com dois
diferentes comandos SQL: ALTER DATABASE BACKUP CONTROLFILE TO < nome do
earquivo
ALTER > DATABASE BACKUP CONTROLFILE de rastrear.
• ALTER DATABASE BACKUP CONTROLFILE TO < filename > cria um binário exato
cópia do controlfile no local especificado.
• ALTER DATABASE BACKUP CONTROLFILE traçar cria um roteiro editável que
recria o controlfile no diretório
$ ORACLE_BASE / diag / rdbms / < banco de dados > / < instância > / trace.
• Perder todas as cópias do controlfile online não perder quaisquer transações confirmadas se
você
umativer
cópia de backup recente do controlfile e ambos os arquivos de dados e refazer on-line
arquivos de log são
intacta.
• Você não tem que abrir o banco de dados com RESETLOGS após restaurar o seu controlfile
secriar manualmente o controlfile substituição usando CRIAR CONTROLFILE ou você usa um
versão do script controlfile que você criou com ALTER DATABASE BACKUP
CONTROLFILE de rastrear.

Executar recuperação de tempfiles


• A tempfile pode ser recuperado enquanto o banco de dados é aberto.
• O impacto de um tempfile perdido é notado quando os usuários tentam classificar grandes
conjuntos de resultados.
• Quando um arquivo temporário é perdido, você pode recriá-lo no local original ou especificar
um
• Senovo local.
o banco de dados é iniciado sem tempfiles, cria-los no local especificado no
controlfile.
Auto teste
1 . Qual é a diferença entre uma crítica e um arquivo de dados não-crítico em um cenário de
recuperação?
(Escolha a melhor resposta.)
A. Para recuperar um ficheiro de dados críticos, somente a tabela contendo o arquivo de
dados deve ser crítico
desligada.
B. Para recuperar um arquivo de dados não-crítica, tanto o espaço de tabela SYSTEM e o
espaço
contendo
de tabela
o arquivo de dados crítica deve ser desligada.
C. Para recuperar um arquivo de dados críticos, o banco de dados deve estar no modo
NOMOUNT.
arquivo dePara
dadosrecuperar
não crítico,
um o banco de dados deve estar no modo MOUNT.
D. Para recuperar um ficheiro de dados críticos, o banco de dados deve estar no modo de
montagem.
arquivo de
Para
dados
recuperar
não crítico,
um o banco de dados pode ser aberto.

2 . Quais espaços de tabela contêm arquivos de dados críticos que devem ser recuperados
quando
desligada?
o banco
(Escolha
de dados
a melhor
é resposta.)
A. SYSTEM e SYSAUX
B. SISTEMA e desfazer
C. SISTEMA, SYSAUX, e desfazer
D. sistema e usuários
3 . Durante a recuperação completa de um arquivo de dados não crítico, qual dos seguintes
passos não são (Escolha duas respostas.)
requeridos?
A. Use o RMAN RESTAURAR comando para carregar os arquivos de dados perdidos a
partir
B. Abradonovamente
backup. o banco de dados com RESETLOGS.

C. Encerre o banco de dados e reabrir no modo MOUNT.


D. Trazer a arquivos de dados danificado offline antes da operação de recuperação e on-line
depois
recuperação é completa.
E. Use o RMAN comando RECOVER para aplicar transações confirmadas a partir
arquivado
arquivos
e de log redo online.
4 . Qual dos seguintes métodos que você pode usar para recuperar o número atual de alteração
do (SCN)?
sistema (Escolha a melhor resposta.)
A. Pesquisa da coluna CURRENT_SCN do V $ DATAFILE_HEADER.
B. Pesquisa da coluna CURRENT_SCN da visão V $ instância.
C. Pesquisa da coluna LAST_SCN da visão V $ DATABASE.
D. Pesquisa da coluna CURRENT_SCN da visão V $ DATABASE.
E. Iniciar RMAN e se conectar ao banco de dados alvo; o atual SCN eo DBID estão
exibido.
5 . Qual das seguintes CRIAR RESTAURAR comandos momento vai preservar a restauração
apontar passado o tempo especificado pelo parâmetro de inicialização
CONTROL_FILE_RECORD_KEEP_TIME? (Escolha a melhor resposta.)
A. CRIAR ponto de restauração SAVE_IT_PAST MANTENHA
B. CRIAR ponto de restauração SAVE_IT_PAST AS DE SCN 3988943
C. CRIAR ponto de restauração SAVE_IT_NOW PRESERVAR
D. CRIAR ponto de restauração SAVE_IT_NOW até sempre
6 . Qual sistema operacional variáveis de ambiente deve ser definido quando utilizar RMAN
tempo-
recuperação incompleta base? (Escolha duas respostas.)
A. ORACLE_SID
B. NLS_LANG
C. ORACLE_BASE
D. NLS_DATE_FORMAT
E. NLS_TIME_FORMAT
7 . Você está implementando uma estratégia de backup incremental atualizado usando o
seguinte
roteiro:
RMAN

Quantas vezes você precisa executar este script antes da cópia de imagem terá sido
com um nível 1 backup incremental? (Escolha a melhor resposta.)
atualizado
A. Uma vez
B. Duas vezes
C. vezes Três
D. Pelo menos quatro vezes
8 . O comando RMAN interruptor é equivalente ao comando o SQL? (Escolha o melhor
responda.)
A. ALTER DATABASE RENAME ARQUIVO
B. ALTER DATABASE ARCHIVELOG
C. alter database open resetlogs
D. ALTER SYSTEM LOGFILE CHAVE
9 . Qual é a ordem correta dos comandos a seguir para restaurar um controlfile de um
autobackup RMAN? (Escolha a melhor resposta.)
1. recuperar banco de dados
2. ALTER DATABASE ABERTO RESETLOGS
NOMOUNT 3. STARTUP
4. ALTER DATABASE MOUNT
5. RESTAURAR CONTROLFILE DE AUTOBACKUP
A. 5, 3, 4, 1, 2
B. 3, 5, 4, 1, 2
C. 3, 5, 4, 2, 1
D. 5, 1, 3, 4, 2
10 . Quando você executa o RMAN comando RESTORE CONTROLFILE, onde é que RMAN
colocar
versão
o anterior do controlfile? (Escolha a melhor resposta.)
A. Em todos os locais disponíveis definidas pelo parâmetro de inicialização
CONTROL_FILES

B. Na Área de Recuperação Rápida


C. Em todos os locais definidos pelo parâmetro de inicialização CONTROL_FILES a
menos
substituído com o TO '< filename cláusula>'
D. No primeiro local definido pelo parâmetro de inicialização CONTROL_FILES
11 . Qual dos seguintes não é um estado válido para um grupo de redo log on-line? (Escolha o
melhor
responda.)
A. CURRENT
B. ACTIVE
C. INVALID
D. NÃO UTILIZADO
E. CLEARING
12 . Qual é a diferença entre a V $ LOG e vistas LOGFile V $? (Escolha o melhor
responda.)
A. V $ LOG contém o status de todos os arquivos de log redo arquivados, e V $ LOGFILE
contém
statuso de todos os arquivos de log redo online.
B. V $ LOG contém o status dos usuários online grupo de redo log, e V $ LOGFILE
contém o status de grupos de redo log on-line individuais.
C. V $ LOG contém o status de todos os arquivos de log redo online, e V $ LOGFILE
contém
statuso de todos os arquivos de log redo arquivados.
D. V $ LOG contém o status dos grupos de redo log on-line, e V $ LOGFILE contém o
estatuto dos membros do grupo de log de redo individual.
13 . Que métodos você pode usar para recuperar um arquivo de senhas perdido ou danificado?
(Escolha
Aplique.)
tudo o que
A. Use o comando orapwd em um prompt do sistema operacional para recriar o arquivo de
senhas.
B. Restaurar o arquivo de senhas a partir do backup e aplicar quaisquer arquivos de log redo
arquivados
para trazer
e on-line
seu conteúdo para o tempo presente.
C. Use o comando SQL orapwd para recriar o arquivo de senhas.
D. Restaurar o arquivo de senhas a partir de um backup do sistema operacional.
14 . Se qual dos seguintes comandos não o backup do controlfile atual? (Escolha o melhor
responda.)
A. SQL> ALTER DATABASE BACKUP CONTROLFILE traçar;
B. SQL> ALTER SYSTEM backup atual CONTROLFILE;
C. RMAN> backup atual CONTROLFILE;
D. SQL> ALTER DATABASE BACKUP CONTROLFILE TO
'/U08/BACKUP/CTL.BAK';
15 . Se você perder todos os tempfiles do seu espaço de tabela temporário, o que é o resultado
maisnotado
provável
por seus usuários? (Escolha a melhor resposta.)

A. O banco de dados torna-se indisponível e os usuários não podem se conectar.


B. Os usuários não podem executar instruções SELECT.
C. Os usuários não podem adicionar ou excluir linhas em qualquer mesa.
D. Os usuários não podem usar ORDER BY ou GROUP BY em suas consultas.
16 . Qual é o melhor método para recuperar um arquivo temporário? (Escolha a melhor
resposta.)
A. Solte a tabela TEMP e recriá-lo com um arquivo de dados em um novo local.
B. Adicionar outro tempfile para o espaço de tabela TEMP e solte o arquivo temporário
corrompido
enquantoouo banco
ausentede dados está em execução.
C. Encerre o banco de dados, restaurar o arquivo temporário de um backup, e recuperá-lo
usando
arquivados e arquivos de log redo online.
D. Adicionar outro tempfile para o espaço de tabela TEMP e solte o arquivo temporário
corrompido ou ausente
após o banco de dados foi desligado e reiniciado no modo MOUNT.

Respostas de auto-teste
1. D . Quando você restaurar e recuperar um arquivo de dados crítica, todo o banco de
paradados
baixo deve
e reaberto
ser fechado
no modo MOUNT para abrir o controlfile e tornar os locais arquivo de
disponível para RMAN.
dados
A, B, e C são incorrectas. A está incorreta porque todo o banco de dados deve estar
offline
aquando a recuperação de arquivo de dados críticos. B é incorrecta porque a recuperação de
um arquivo
requer apenasdeodados quedenão
arquivo é crítica
dados danificado para ser offline. C é incorrecta porque a base
de dados
no modo deve
MOUNT ser para recuperar um arquivo de dados crítica e pode estar no modo OPEN
para recuperar
arquivo umnão crítico.
de dados
2. B. O sistema de tabela e desfazer conter arquivos de dados críticos e, portanto,
a base
requerem
de dados para estar no modo de montagem durante o processo de recuperação.
A, C, e D são incorrecta porque as áreas de tabela SYSAUX e os utilizadores não
arquivos
contêm
de dados críticos.
3. B e C. O banco de dados não precisa ser aberto com RESETLOGS porque você é
não executar a recuperação incompleta. Para um arquivo de dados que não é crítica, apenas
espaço de
o arquivo detabelas contendo
dados em falta ou danificado precisa ser offline.
A, D, e E são incorrectas. Estes passos são todos necessários.
4. D. V $ DATABASE contém o mais recente SCN na coluna CURRENT_SCN.
A , B , C , e E são incorrectas. A e B são incorrecta porque a coluna
Não CURRENT_SCN não existe em qualquer V $ DATAFILE_HEADER ou V $
INSTANCE.
incorreto, poisCVé $ DATABASE não tem uma coluna chamada LAST_SCN. E é incorrecta
porque quando RMAN é iniciado, ele mostra apenas o DBID e não o atual SCN.
5. C. A palavra-chave Preserve mantém o ponto de restauração após o tempo especificado
CONTROL_FILE_RECORD_KEEP_TIME.
pelo
A , B , e D são incorrectas. A está incorreta porque a palavra-chave MANTER não é
válida para o
comando. B é incorrecta porque PRESERVAR não foi especificado. D é incorrecta porque
Até sempre não é válido para o comando.
6. B e D. Tanto NLS_LANG e NLS_DATE_FORMAT deve ser definido de modo que o
RMANcorretamente cordas data prevista durante uma operação de recuperação.
interpretar
A, C, e E são incorrectas. ORACLE_SID e ORACLE_BASE são necessários para
paraconectar
o software de banco de dados e banco de dados correto, mas eles não estão
directamente
Com base no relacionadas
tempo de recuperação.
com o RMAN
NLS_TIME_FORMAT não é uma variável de ambiente
7. válida.
C . A primeira vez que o script é executado, não há nível 0 cópia de imagem ou um
cópianível
de segurança.
de 1 incrementais
A segunda vez que o script é executado, a cópia de imagem de nível 0
existe, mas não
incremental existe1 de backup para aplicar a ele. O terceiro tempo sucessivos, o primeiro
de nível
nível 1 de backup é aplicado à cópia da imagem.
periódica
A , B , e D são incorrectas. Todos eles especificar o número incorreto de execuções.
8. A. Tanto o INTERRUPTOR RMAN eo SQL ALTER DATABASE RENAME
comandos
ARQUIVOatualizar o local do arquivo de dados, tanto no controlfile eo catálogo de
recuperação.
B , C , e D estão incorrectos. B está incorreta porque este comando coloca o banco de
Mododados em
ARCHIVELOG. C é incorrecta porque o comando é usado apenas após incompleta
recuperação. D está incorreta porque as chaves de comando on-line arquivos de log redo,
não DATAFILE
nomes.
9. B. A fim especificado está correcto. Você deve abrir o banco de dados com
RESETLOGS
seu controlfile desde tem informações sobre uma versão mais antiga do banco de dados.
restaurado
A, C, e D estão incorrectos vez que especificam uma sequência incorrecta de comandos.
10. C. O comando restaura o controlfile de autobackup a todos os locais definidos pelo
CONTROL_FILES de parâmetros de inicialização. Se qualquer um desses locais não
estiverem
o valor de disponíveis,
CONTROL_FILESa mudança
ou usar o '<TO filename opção>'.
A, B, e D são incorrectas. A está incorreta porque o comando falhará se qualquer um
dos
locais definidos por CONTROL_FILES não estão disponíveis. B é incorrecta porque a
autobackup do controlfile provavelmente dará origem a partir da área de recuperação rápida.

incorreto porque RMAN restaura o controlfile a todos os locais definidos pela
CONTROL_FILES.
11. C . O INVALID estatuto só é válido para um membro do grupo de redo log on-line, não
grupo
para
inteiro.
o
A , B , D , e E são incorrectas. Eles são estados válidos para um grupo de redo log
12. online.
D . V $ registo contém o estado de grupos de redo log, incluindo se o grupo é
atualmente sendo escrito. V $ LOGFILE contém o estado de grupo redo log indivíduo
membros.
A , B , e C são incorrectas. A vista V $ LOG e V $ LOGFILE não contêm
informações sobre arquivos de log redo arquivados, embora a vista V $ LOG tem uma
se o grupo
coluna paradeindicar
arquivo de log redo foi arquivado ou não.
13. A e D . Qualquer método pode ser usado para recuperar o arquivo de senhas, mas
comando
usando
requer
o orapwd
que você recriar as contas de usuários privilegiados que precisam
SYSOPER, SYSADM, SYSBACKUP, SYSDG e SYSKM privilégios.
SYSDBA,

B e C são incorrectas. B está incorreta porque você não aplicar arquivos de log redo ao
arquivo de senha. C está incorreta porque orapwd é válido apenas em um comando do
sistema operacional
pronto.
14. B. Não existe tal comando.
A , C , e D estão incorrectos. A está incorreta porque cria um arquivo baseado em texto
dois contendo
criar comandos CONTROLFILE diferentes, dependendo da disponibilidade do seu
arquivos de dados e arquivos de log redo online. C está incorreta porque é uma das muitas
maneiras
faz que do
o backup o RMAN
controlfile. D está incorreta porque cria uma cópia do binário do controlfile
o local especificado.
em
15. D . Tabela temporários fornecer espaço de classificação para consultas que usam
GROUPORDERBY quando
BY e a operação de classificação não vai caber na memória. Outras
operações
bem: SELECTcausar
DISTINCT,
tipos comocriações de índice, eo índice reconstrói.
A, B, e C são incorrectas. A está incorreta porque o banco de dados permanece
disponível
algumas parae mais atividade DML mesmo se o espaço de tabela TEMP não está
consultas
disponível.
incorreto B é os usuários ainda podem executar instruções SELECT que não precisam de
porque
triagem oudea classificação vai caber na memória. C está incorreta porque a maior atividade
operação
DML não
exigem que o espaço de tabela TEMP.
16. B . Uma vez que o tempfile faltando é descartado e um novo adicionado, o espaço de
automaticamente
tabela TEMPdisponível
é para os usuários.
A, C, e D estão incorrectos. A está incorreta porque deixar cair o espaço de tabela não é
necessário, e você não pode largar a tabela temporário padrão. C está incorreta porque você
Não é possível recuperar um espaço de tabela temporário; não há objetos permanentes em
uma temporária
tablespace. D está incorreta porque o banco não precisa ser desligado para recuperar um
tabela temporário.
CAPÍTULO 25

diagnosticar falhas

Objetivos do exame
• 63.1.9.1 Descrever o fluxo de trabalho automático de diagnóstico
• Bloco de corrupção 63.1.9.2 Handle
Quando você tem que lidar com erros de banco de dados ou até mesmo um banco de dados que é
completamente
quer para
gastar tempo baixo,
extra você nãouma ou mais condições de erro de banco de dados para Oracle
documentar
Support. primeiro
capítulo este dá-lhe uma visão geral de como a Oracle reporta problemas com o banco de dados
e, em seguida,
mostra como ela categoriza erros em problemas e incidentes.

Além disso, o quadro Health Monitor fornece ambas as ferramentas proativas e reativas para
comlidar
erros de banco de dados. O administrador de banco de dados (DBA) pode executar uma
verificação
usando Enterprise
de saúde
Manager
pró-ativa
Nuvem
manualmente
de Controle 12 c (Cloud Control) ou pacotes PL / SQL. Em
contraste,
Health Monitor
o pode executar verificações de diagnóstico em resposta a erros de banco de dados
críticos.
Finalmente, o capítulo mudará de relatórios, gerenciamento e enviar solicitações de serviço para
problemas de banco de dados e incidentes para recuperar blocos individuais depois de ter
identificadoGestor
problema. o de recuperação (RMAN) suporta a detecção e recuperação de blocos individuais
usando
o parâmetro de inicialização DB_BLOCK_CHECKING eo RMAN RECUPERAR. . . QUADRA
comando. RMAN também torna mais fácil para identificar falhas e implementar reparos usando os
Conselheiro de recuperação.
dados

Descrever o fluxo de trabalho automático de diagnóstico


A chave para o repositório de diagnóstico automático (ADR) é a primeira palavra: automática .
ADR é uminstalação que captura erros no traço e arquivos de despejo a primeira e todas as vezes
always-on
sucessivas
ocorrer (queeles
é a razão para o diagnóstico parte do nome do recurso Oracle). A terceira parte,
repositório , é um local no disco que armazena as informações de diagnóstico no disco e vem com
umafaz
que ferramenta
com que seja fácil de consultar o repositório mesmo quando o banco de dados não está
disponível.
As seções a seguir fornecem mais detalhes sobre a estrutura do repositório, como recuperar
informações do repositório, e como encontrar as informações de diagnóstico que você está
procurandousando
repositório na parâmetros de inicialização e dados Visualizações de dicionário. Além disso,
você verá como
facilmente e rapidamente empacotar as informações de diagnóstico do ADR e enviá-lo para o
suporte da Oracle
Resolução do problema.
para

Compreender o ADR
O ADR é um repositório baseado em arquivo de informações não-crítica de diagnóstico e outros
paraambiente.
seu todos os produtos
Cada instância de banco de dados e Automatic Storage Management (ASM) instância
tem o seude diretório próprio chamado de casa ADR dentro de um diretório de nível superior
estrutura
conhecida
um ambiente
como
Real
a base
Application
de ADRClusters
. Dentro(RAC), cada instância tem seu próprio subdiretório, que não
só torna mais fácil de visualizar diagnósticos para uma instância individual, mas também torna mais
ferramentas
fácil para o de diagnóstico para analisar dados em casos de problemas de todo o cluster.
O diretório base ADR também é conhecido como o diretório ADR raiz . A localização para a
base ADR
é definido de acordo com os valores de parâmetros de inicialização e variáveis de ambiente. Se o
parâmetro de inicialização DIAGNOSTIC_DEST estiver definido, o diretório base ADR está
definido
todos os outros
para este
locais
valor,
de earquivo são definidas em relação a este local. Se DIAGNOSTIC_DEST
não está definido, entãoestá definido para o ORACLE_BASE variável de ambiente. A Figura 25-1
DIAGNOSTIC_DEST
mostra o de diretórios ADR para o banco de dados COMPLREF.
estrutura

Figura 25-1 estrutura de directório ADR para o banco de dados COMPLREF

Para o banco de dados na Figura 25-1 , o DIAGNOSTIC_DEST parâmetro de inicialização não


A Oracle
está definido,
define DIAGNOSTIC_DEST
então ao valor do ORACLE_BASE variável de ambiente, que
neste caso é / u01 / app / oracle.

Você pode recuperar os valores para cada diretório de diagnóstico usando a exibição desempenho
V $dinâmico
DIAG_INFO, como neste exemplo:
Note-se a INST_ID coluna. Em um ambiente RAC, este valor diferencia o valor de cada
anuário por nó. Por exemplo, se COMPLREF eram o nome do banco eo banco de dados continha
os três casos COMPLREF1, COMPLREF2, e COMPLREF3, o valor para o segundo
diretório de rastreamento de diagnóstico de exemplo seria o seguinte:

Em comparação com versões anteriores do Oracle, as informações de diagnóstico é melhor


palavras,
particionado.
todos osem
arquivos
outra de rastreamento nonincident são armazenados no subdiretório traço,
todos os depósitos
diretório, e todos incidentes
centrais estão
lixeiras
no cdump
são armazenados como diretórios individuais dentro do
subdiretório
A Tabela 25-1incidente.
mostra o local ADR para cada tipo de dados de diagnóstico.

Tabela 25-1 Locais Diretório Informação ADR Diagnostic

Note-se a diferenciação entre arquivos de rastreamento e despejo. arquivos de rastreamento


diagnosticar
contêm saída
um problema
contínua para
com um processo em execução. Um arquivo de despejo é um arquivo de
saída
de umde diagnóstico
incidente. de uma forma,
Da mesma só vez,um
resultando
dump de memória é um despejo de memória binário
específico
também que
danão
plataforma
há nenhuma
de uma
variável
só vez.
parâmetro
Nota de inicialização ou de ambiente denominada
ADR_HOME.
determinar o valor
Vocêdepode
ADR_HOME da fileira em V $ DIAG_INFO contendo o nome ADR
Casa.

Usando a ferramenta ADRCI


A ferramenta ADR Command Interpreter (ADRCI) faz com que seja fácil de consultar o conteúdo
do ADR.
Pode utilizar
Vocêa ferramenta no modo de comando ou criar scripts para executar no modo de lote. Você
pode usar
quando o banco
ADRCI demesmo
dados está em baixo-se lembrar que o ADR é completamente sistema de arquivos
baseado. Além
consultando o conteúdo
de do ADR com ADRCI, você pode empacotar incidente e informações
problema
em um arquivo ZIP compactado que você pode enviar para o Suporte Oracle.
Note-se que ADRCI não exige um login ou qualquer outra autorização. O conteúdo do ADR são
protegido apenas por permissões do sistema operacional no diretório que contém as estruturas de
arquivos
Para umaADR.
instalação padrão do Oracle Database 12 c , isto significa que o ADR tem as mesmas
como o diretório ORACLE_BASE e seus subdiretórios. Você pode alterar as permissões mais se
permissões
quer, mas você deve se certificar que o usuário possuir os processos Oracle (geralmente o usuário do
você
Oracle) tem oplena
ler-escrever acesso ao ADR.
Quando você começar a ADRCI, você vê o diretório base ADR atual. Tipo de ajuda para uma
comandos.
lista de
Mesmo quando não há incidentes ou problemas de visualizar, você pode executar tarefas mais
como
mundanas
a visualização
tais do log de alerta de ADRCI.

Observe que a ferramenta ADRCI rastreia todos os diretórios home ADR dentro do diretório
Portanto,
ADR raiz.
você deve selecionar qual banco de dados, ASM, ou diretório ouvinte que deseja visualizar
ADRCI.
com
Claro, você pode executar a mesma tarefa de Nuvem de Controle 12 c . Na parte inferior da
home
nuvem
page de Controle, clique no link Conteúdo do registro de alertas. Em seguida, seleccionar o
número de
Registro delinhas
alertasnaque
extremidade
você quer do
ver e clique em Ir. Você verá a página mostrada na Figura 25-2 .
Figura 25-2 Visualizar o conteúdo do log de alerta de Cloud Control

Compreender Alertas, problemas e incidentes


Embora o log de alerta (ou formato de texto ou XML) contém todos os alertas para o exemplo, você

os alertas no aviso e níveis críticos na página inicial do Enterprise Manager (EM). Você pode
visualizar incidentes específicos no Gerente de Incidentes em Nuvem de Controle 12 c . Na Figura
25-3 , vocêrecentes.
incidentes vê váriosNo incidente mais antigo (na parte inferior), Cloud Control informou que um
usuário
para acessar
estava
umtentando
objeto sem os privilégios apropriados. No incidente mais recente, o banco de dados
relata
um que conectado ao usuário SYS ou outro usuário com privilégios SYSDBA.
usuário
Figura 25-3 Visualizando alertas de erro na EM

Um problema , definido pela estrutura de suporte Workbench, é um erro crítico no banco de


comodados,
o errotais
interno ORA-00600 ou algum outro evento grave, como a falta de memória na
piscina comum ou uma exceção sistema operacional. Um incidente é uma única ocorrência de um
problema.tem
problema Cada uma chave problema , que é uma cadeia de texto que contém o código de erro e,
opcionalmente,do
características outro
problema. Um problema pode ter um ou muitos incidentes. Cada incidente é
identificado por um
ID incidente numérico e é armazenado em seu próprio subdiretório do ADR
(ADR_HOME / incidente / incdir_ n ). Quando ocorre um incidente, o banco de dados executa a
passos:
seguinte

1. Adiciona uma entrada ao log de alerta (texto e baseado em XML)


2. Envia um alerta de incidente de EM
3. Envia um alerta via e-mail para os administradores (se configurado)
4. arquivos de rastreamento reúne e outras informações incidente
5. Tag todas as informações incidente com o ID incidente
6. Cria um diretório incidente sob ADR_HOME pelo incidente e lojas incidente
arquivos de informação e de rastreamento no diretório

Usando o Monitor de Saúde


Você pode usar a estrutura do Oracle Health Monitor para avaliar de forma proativa ou reativa a
saúde
seu de de dados. Health Monitor verifica o status de vários componentes de banco de dados,
banco
incluindo o
Segue:

• Arquivos de dados
• Memória
• integridade da transação
• Metadados
• uso de Processo

Você pode executar verificações de saúde usando Cloud Control através do Support Workbench,
ou você
executar umapode manualmente
verificação de saúde usando o pacote DBMS_HM PL / SQL. Algumas verificações
apenasde
banco quando
dadosoé pode
aberto.
serOutras
executado
verificações estão disponíveis quando a instância está em execução,
mas o banco
Modo NOMOUNT.
de dadosVocê
estápode
em listar os cheques disponíveis e se eles estão disponíveis em off-line
modo on-line por meio de consulta a dinâmica vista do desempenho V $ HM_CHECK.
ou
Note-se que todos, mas oito dos cheques são INTERNAL_CHECK = 'Y'. O DBA não pode
invocar
controlos a
internos. Você pode ver os resultados de exames de saúde a partir da ferramenta ADRCI
com o show
comando. Nos
hm_run
exemplos a seguir, você recupera os resultados de um Health Monitor executado pela
primeira vez
formato, e então
em texto
você gerar um relatório Health Monitor em formato XML.
Para executar uma verificação manualmente, use o pacote DBMS_HM. Por exemplo, esta é uma
corrida dos de
verificação Dados
integridade do dicionário, ID 24 na listagem anterior:
Lidar com bloco Corrupção
Muitos dos erros que você vai encontrar estará relacionada com blocos ruins em seus arquivos de
dados
por do banco
causa de dados
de qualquer falhas de mídia, erros de memória do servidor, ou corrupção lógica causadas
por erros
(Não que do
a Oracle
Oracletem bugs-meramente anômalos e comportamento em situação irregular). Depois
de identificar
esses problemas usando os métodos de diagnóstico previstos anteriormente neste capítulo, você pode
usar
as seções
as ferramentas
a seguir para
em corrigir os problemas.
Tal como acontece com quase todos os recursos Oracle, você pode ajustar o nível de controle e
A Oracle
monitoramento
executa; bloco
que de dados de verificação não é excepção. Independentemente das
configurações
logo, a Oracle que vocêexecuta
sempre vai aprender sobre verificações em um bloco de dados quando são lidos ou
as seguintes
para um arquivo de dados:
escritos

• Verifica se a versão do bloco corresponde à versão do banco de dados


• Verifica se o endereço do bloco de dados (DBA) no cache é o mesmo que o valor DBA no
bloco
amortecedor
• Verifica que, por padrão, a soma de verificação de bloco está correto

Você pode reparar um bloco corrupto ou por recuperar o bloco ou soltando o objeto
contendo o bloco ruim. As seções a seguir lhe dizer mais sobre a corrupção bloco, como controlar
a quantidade da Oracle sobrecarga irá utilizar para garantir a integridade dos blocos, e como corrigir
um corrompido
quadra.

Bloquear a Corrupção
Quando a Oracle detecta um bloco corrompido, ele registra um erro ORA-01578 no log de alerta e
na

home page EM. Incluído na mensagem de erro são o número de arquivo e bloco número absoluto do
mau bloco. Além disso, a leitura sessão ou escrever o bloco ruim vê a mesma mensagem de erro.
Aqui está um exemplo de uma mensagem de bloqueio corrupção de erro:

Na maioria das vezes, a corrupção é causada por falhas no sistema operacional ou hardware de
saída
disco,
(I / O)
taishardware
como defeito
de entrada / ou firmware, problemas de cache do sistema operacional,
memória ououpaginação
problemas erros causados por utilitários de reparação de disco.
Dois parâmetros de instância controlar as verificações de bloco de corrupção:
DB_BLOCK_CHECKING.
DB_BLOCK_CHECKSUM e
DB_BLOCK_CHECKSUM tem três valores possíveis:

• OFF ou FALSE Não checksums são computados.


• TÍPICO Este é o valor padrão. Checksums são calculados quando se escreve um bloco para o
disco
e validado em lê-lo a partir do disco.
• COMPLETOS Checksums são computados e verificado cada vez que um bloco é alterado.
checksums
também acrescentou
são que refazer blocos na escrita.

Note que mesmo que este parâmetro é OFF, checksums ainda são computados para todos os
tablespace
blocos na
SYSTEM.
O DB_BLOCK_CHECKING parâmetro de inicialização controla quão completamente Oracle
a estrutura
verificalógica de cada bloco de dados. O nível de verificação de habilitar depende do nível de
falha tolerável
controlos blocoem seu ambiente
contínuo. equilibrado
Os valores contra
possíveis paraaDB_BLOCK_CHECKING
sobrecarga necessária para são
executar
comoase segue:

• OFF ou FALSE Este é o valor padrão; nenhuma verificação de blocos é realizada.


• Baixo cheques bloco básico são realizadas após blocos são alterados na memória ou ler
disco, incluindo transferências de blocos interinstance em ambientes RAC.
• MÉDIO Isto inclui verificações mais baixo, mais bloco verificando tudo organizado não-
índice
blocos
de de tabela.
• Expansão ou Real Isto inclui verificações de todos os de baixa e média, mais cheques para
blocos de índice.
DB_BLOCK_CHECKING é conhecido por ter uma sobrecarga de desempenho, e por padrão,
portanto,
ele é não habilitado. No entanto, o bloco CHEIA verificando o espaço de tabela SYSTEM é
sempre
ativado e não pode ser interrompido.
O valor padrão para DB_BLOCK_CHECKSUM significa que a Oracle será capaz de detectar
a umdanos
bloco que ocorreu enquanto ela estava no disco. Boa ideia! Permitindo
DB_BLOCK_CHECKING
A Oracle detectar problemaspermite
que ocorrem enquanto o bloco está na memória. Normalmente, isso não
é necessário
seria ativadoeapenas mediante instruções do Oracle Support ao tentar resolver um problema.

EXAME DICA Verifique somas e validação bloco lógico são sempre habilitado para o SISTEMA
tabela, mas pode ser ativada ou desativada para o restante do banco de dados.

Usando Bloco de Mídia de Recuperação


Se você descobrir apenas um pequeno punhado de blocos para recuperar em um banco de dados do
exames de saúde ou resultados descobertos no log de alerta, o RMAN pode executar a recuperação
referido
de mídia
do que umade bloco
recuperação
em vezarquivo de dados completo. recuperação de mídia de bloco minimiza o
tempovez
(Uma necessário
que apenas
parauma
aplicar
pequena
os redo
parte
logsde cada log redo é necessária ou, eventualmente, não são
necessárias
reduz redo logs!)
drasticamente E
a quantidade de E / S necessário para recuperar apenas o bloco ou blocos em
causa. Enquanto
recuperação de mídia de bloco está em andamento, os arquivos de dados afetados podem permanecer
online e disponíveis para os usuários.

EXAME TIP recuperação de mídia de bloco está disponível apenas a partir do aplicativo RMAN.

Além da verificação efectuada pela Oracle bloco como definido pela


DB_BLOCK_CHECKING parâmetro de inicialização, um backup RMAN ou validar BACKUP
comando pode adicionar informações sobre blocos corrompidos para a vista de desempenho
V $ DATABASE_BLOCK_CORRUPTION.
dinâmico
Você precisa conhecer as vantagens e desvantagens de recuperação de mídia de bloco; como
esperar,
vocêhá
pode
muitas mais vantagens do que desvantagens. Além divulgando os benefícios da
RMAN recuperação de mídia de bloco, as seções a seguir abordam os pré-requisitos para a mídia de
recuperação e fornecer alguns casos de uso do mundo real.
bloco

Vantagens do Bloco de mídia de recuperação


Recuperação de um ou um pequeno número de blocos usando o RMAN tem algumas óbvias e
alguns nãoóbvias.
vantagens tão Em primeiro lugar, recuperando um bloco usando um backup recente, em
conjunto de
arquivos com logarquivado
redo online,
e quase certamente irá demorar muito menos tempo do que restaurar e
recuperar
mais arquivos
um ou de dados. Além disso, durante a recuperação de mídia de bloco, todo o arquivo de
dados permanece
disponível duranteon-line
o processo
e de recuperação; apenas os blocos sendo recuperados não estão
disponíveis.
apenas Assim sendo,
uma pequena parte de uma mesa, índice, ou outro objecto da base de dados permanece
recuperação
indisponível de mídia.bloco
durante
Quando você usa o RMAN RECUPERAR. . . comando BLOCK, RMAN procura primeiro o
registos
flashback
para uma boa cópia do bloco corrompido (se Flashback Database é habilitado). Caso
contrário,
usa o backupo RMAN
mais recente nível 0 ou cheio, restaura os blocos ruins, e executa a recuperação de
mídia
bad blocks
na usando o fluxo de refazer. Note-se que o RMAN não pode usar incremental nível 1
backups parade
recuperação bloqueio
mídia.
Você pode usar a dinâmica vista do desempenho V $ DATABASE_BLOCK_CORRUPTION
para ver
os blocos danificados no banco de dados. Esta exibição contém blocos que são fisicamente e
logicamente
corrompido. Aqui estão as ferramentas ou comandos que podem povoam este ponto de vista quando
encontram blocos defeituosos:
• RMAN comandos de backup
• ANALISAR
• utilitário de sistema operacional dbv
• consultas SQL que tentam acessar um bloco corrompido

Pré-requisitos para a utilização de recuperação do bloqueio


Antes de poder utilizar a recuperação de mídia de bloco, seu banco de dados deve cumprir alguns
pré-requisitos.
banco de dadosPrimeiro,
de alvo deve
o estar no modo ARCHIVELOG. A menos que seu banco de dados é
para testar
banco ou é um
de dados, read-only
o banco de dados deve estar no modo ARCHIVELOG para a máxima recuperação
de qualquer maneira!
Em segundo lugar, os backups de arquivos de dados com blocos defeituosos deve ser backups
completos
backups. RMAN ou não
nívelpode
0 incrementais
usar nível 1 backups incrementais para recuperação do bloqueio. Assim,
você deve ter
arquivados arquivos
tudo de log refazer desde o último backup completo ou nível 0 backup incremental.
Alternativamente, você pode usar logs de flashback na área de recuperação flash para recuperar
versões
uncorrupt
de blocos ruins se você tem Flashback Database habilitado. A menos que o número de
blocos ruins
grande, a recuperação
é de um bloco a partir dos registos de flashback vai certamente ser mais rápido
do que começar
backup incremental
comou umcompleto.
nível de 0

Usando o RMAN RECUPERAR. . . bloco de comando


Você pode usar o RMAN RECUPERAR. . . comando de bloco em resposta a um alerta ou outra
de um bloco ruim. Normalmente, bloco corrupção é relatado nos seguintes locais:
notificação

• Saída da FALHA RMAN LIST, validar ou BACKUP. . . VALIDAR


comandos
• A visão de desempenho dinâmico V $ DATABASE_BLOCK_CORRUPTION
• Mensagens de erro durante a SQL * Plus ou outra sessão de cliente
• arquivos de rastreamento O log de alerta ou de usuário
• Os resultados dos comandos SQL ANALYZE TABLE ou analisar INDEX
• Os resultados do utilitário de linha de comando DBVERIFY (DBV)

Para recuperar um ou mais blocos de dados, o RMAN deve saber o número arquivo de dados e
dentro
número
do arquivo
do bloco
de dados. Como mencionado anteriormente, esta informação está disponível em
um
o arquivoque
exemplo de rastreamento
se segue: do usuário, como em

Além disso, a informação bloco aparecerá na vista


V $ DATABASE_BLOCK_CORRUPTION; as colunas Arquivo nº e bloco # fornecer as
necessários para executar o comando RECUPERAR. O CORRUPTION_TYPE coluna identifica o
informações
tipo de
corrupção no bloco, como fraturado, soma de verificação, ou corrompido. Fixação do bloco é
facilmente realizado no RMAN.
Um bloco danificado deve ser recuperado completamente. Em outras palavras, todas as
maisoperações de refazer-se
recente SCN ao de dados deve ser aplicado antes de o bloco pode ser considerado
contra o bloco
utilizável novamente.
Se todos os blocos danificados são registrados em V $ DATABASE_BLOCK_CORRUPTION,
você pode
recuperar todosfacilmente
eles de uma vez. Usando o seguinte comando RMAN irá recuperar todos fisicamente
blocos danificados em V $ DATABASE_BLOCK_CORRUPTION:

Após RMAN recupera os blocos, eles são removidos


V $ DATABASE_BLOCK_CORRUPTION.

Usando o Data Recovery Advisor


A Data Recovery Advisor faz parte do quadro consultor Oracle e automaticamente reúne
informações sobre uma falha quando é detectado um erro. Se você executar o Data Recovery
Advisor
proativamente, você muitas vezes são capazes de detectar e reparar uma falha antes de uma consulta
do usuário A
detecta-lo. ouData
operação
Recovery
de backup
Advisor pode detectar erros relativamente pequenos, tais como blocos
acorrompidos.
outra extremidade
em do espectro, ele irá detectar erros que de outra forma impedir a inicialização
bem
o banco
sucedida
de dados,
de como arquivos de log redo online em falta. Seu banco de dados pode continuar
funcionandodepor
quantidade um curto
tempo sem refazer on-line arquivos de log, mas não vai começar na próxima vez que
você desligar
reiniciar. DataeRecovery Advisor vai pegar esse erro de forma proativa.

identificando falhas
Tal como acontece com a maioria dos conselheiros e recursos do Oracle, você pode usar o Cloud
Control
para ou ferramentas
executar de linhaAdvisor,
o Data Recovery de comando
mostrar os erros e reparar as falhas.
Uma vez que o Consultor de Recuperação de Dados identificou uma falha, você pode rever os
detalhes
usando da falha
a interface de EM ou RMAN. De RMAN, você pode usar o fracasso LIST, aconselhar
Falha, falha REPAIR e insuficiência CHANGE comandos. Tabela 25-2 sumariza o
finalidade destes comandos.

25-2 Tabela Comandos consultivos falha e Reparação RMAN

O comando LIST FALHA tem uma série de opções, dependendo do que tipos de erros que você
quero ver:

• falha # Lista detalhes de um fracasso individual (por número de falha).


• TODOS Lista todos os fracassos.
• Crítico Listas falhas que tornam o banco de dados indisponíveis.
• Alta Listas de falhas graves que fazem parte do banco de dados indisponível, como um
ausente
arquivo de dados.
• Baixo Listas falhas intermitentes ou de menor prioridade que podem esperar até que os
são fixos.mais
problemas Por graves
exemplo, isso pode incluir blocos danificados em tablespaces pouco usados.
Fechado • Listas única fechada falhas.

Por exemplo, LIST FALHA 2097 lista os detalhes para uma falha com um identificador de 2097.
Além
LISTA NÃOdisso,
todas as listas de falhas todos abertos de qualquer prioridade.

implementação Reparos
Uma vez que o Consultor de Recuperação de Dados identificou uma falha, você pode usar o fracasso
RMAN ADVISE
comando para recomendar uma opção de reparo para a falha especificada. RMAN irá sugerir um
reparo e
criar um script com o reparo recomendado. Se o reparo é aceitável (em termos de tempo de
inatividade
outros fatores),
ou então você pode executar FALHA REPAIR (dentro da mesma sessão RMAN) para
realizar
ação recomendada.
a Após a ação de reparo for concluído com êxito, o fracasso é automaticamente
fechadas. Os comandos devem ser sempre executados na ordem correta: LIST, aconselhar, em
seguida,
Você reparar.
também pode alterar a prioridade de uma falha usando CHANGE FALHA. Por exemplo,
bloco
umserá
corrompido
gravado como um fracasso alto, mas se ele estiver em um espaço de tabela pouco usado,
então você
alterar a suapode
prioridade para baixa para que você vê falhas única outra mais graves no fracasso
comando. No entanto, você não pode alterar a prioridade de uma falha crítica. Você pode alterar a
LISTA
prioridade de uma falha de apenas a partir de alto para baixo, ou vice-versa. Aqui está como você
pode
do número
alterardea prioridade
falha 307 de ALTO para BAIXO:

Data Recovery Advisor Visualizações

Você pode usar vários pontos de vista de desempenho dinâmico para recuperar informações sobre as
afalhas detectadas
recuperação dospelo
dados Advisor:

• V $ IR_FAILURE Lista todas as falhas, incluindo falhas fechados


• V $ IR_MANUAL_CHECKLIST Listas de aconselhamento manual de
• V $ IR_REPAIR Listas de reparos
• V $ IR_REPAIR_SET falha e referências cruzadas aconselha sobre números identificadores

Por exemplo, para recuperar as informações para a falha com um ID de 37305, consulta
V$IR_FAILURE as follows:

Exercício 25-1: Use o DRA para diagnosticar e resolver problemas Neste exercício, você vai
um problema com o banco de dados e usar o DRA para relatar e corrigi-lo.
causar

1. A partir de um prompt do sistema operacional, inicie o executável RMAN.

2. Verifique se há todo um backup completo do espaço de tabela SYSAUX.

Se isso não retornar pelo menos um conjunto de backup de tipo completo, crie um.

3. Desligue o exemplo e saída do RMAN.


4. A utilizaçãoque
tablespace de um utilitário
foram listadasdonosistema operativo,
passo 2. apagar
Se estiver o arquivo
usando de dados
o Windows, você(ou arquivos
pode ter que de
dados) para
parara de
sob o SYSAUX
Windows
qual a instância está sendo executado para liberar o bloqueio de arquivos do Windows
antes do é possível.
eliminação
5. Conecte-se ao banco de dados com SQL * Plus e tentar uma inicialização.

Isto irá parar no modo de montagem, com um erro sobre o arquivo ausente. Se utilizar o
verifique se o serviço foi iniciado.
Windows,
6. Inicie o executável RMAN e se conectar, como no passo 1.
7. diagnosticar o problema.

Isso irá retornar uma mensagem para o efeito que um ou mais arquivos de dados não
pertencentes
8. Gerar ao sistema
conselhos estão faltando.
sobre a falha.

Isto irá sugerir que você deve restaurar e recuperar o arquivo de dados e gerar um script de
Abra o script com qualquer editor de sistema operacional e estudar seu conteúdo.
reparo.
9. Execute os comandos no script gerado para restaurar o arquivo ausente, recuperá-lo, e trazê-
lo conectados.

Broca Two-Minute
Descrever o fluxo de trabalho automático de diagnóstico
• ADR é um mecanismo always-on que captura erros no traço e arquivos de despejo a primeira
e qualquer
tempos posteriores eles ocorrem.
• ADR usa um local no disco para armazenar as informações de diagnóstico e vem com uma
ferramenta
faz com que
queseja fácil de consultar o repositório mesmo quando o banco de dados não está
disponível.
• Cada instância de banco de dados ou instância Automatic Storage Management tem seu
próprio diretório
estrutura chamada casa ADR dentro de um diretório de nível superior conhecida como a base
de ADR .
• O diretório base ADR também é conhecido como o diretório ADR raiz .
• Se o DIAGNOSTIC_DEST parâmetro de inicialização é definida, o diretório base ADR está
definido
este valor,
parae todos os outros locais de arquivo são definidas em relação a este local.
• Se DIAGNOSTIC_DEST não está definido, então DIAGNOSTIC_DEST está definido para o
ambiente
ORACLE_BASE variável.
• Se ORACLE_BASE não está definido, DIAGNOSTIC_DEST está definido para o valor
$ ORACLE_HOME / log.
• As informações de diagnóstico ADR é particionado. Todos os traços nonincident são
armazenados
subdiretório,notodos
rastreamento
os depósitos centrais são armazenados no diretório cdump, e todos os
depósitos de como
armazenado incidentes
diretórios
são individuais dentro do subdiretório incidente.
• A ferramenta ADR Command Interpreter torna mais fácil para consultar o conteúdo do ADR.
Você
usarpode
ADRCI mesmo quando o banco de dados é baixo.
• ADRCI não exige um login ou qualquer outra autorização. O conteúdo do ADR são
protegido apenas por permissões do sistema operacional no diretório que contém o arquivo de
estruturas.
ADR
• Um problema , como definido pelo quadro de apoio Workbench, é um erro crítico na
base de dados. Um exemplo é o erro interno ORA-00600 ou algum outro evento grave, como
a falta de memória no pool compartilhado ou talvez uma exceção sistema operacional.
• Um incidente é uma única ocorrência de um problema.
• Cada problema tem uma chave problema , que é uma cadeia de texto que contém o código de
erro e

opcionalmente, outras características do problema.


• Health Monitor verifica o status de vários componentes de banco de dados, incluindo arquivos
deintegridade da transação, metadados e uso de processo.
dados, memória,
• Você pode executar verificações de saúde usando EM através da Support Workbench, ou você
pode
exame
executar
de saúde
manualmente
usando o pacote
um DBMS_HM PL / SQL.

Lidar com bloco Corrupção


• Quando a Oracle detecta um bloco corrompido, ele registra um erro ORA-01578 no log de
alerta
na página
e inicial do EM.
• O DB_BLOCK_CHECKING parâmetro de inicialização controla quão completamente o
Oracle
verifica a integridade de cada bloco de dados que é lido ou escrito.
• Se você descobrir apenas um pequeno punhado de blocos para recuperar em um banco de
dados
exames
do de saúde acima mencionados ou resultados descobertos no log de alerta, o RMAN
pode executar
media bloco de recuperação , em vez de uma recuperação arquivo de dados completo.
• Quando você usa o RMAN RECUPERAR. . . comando BLOCK, RMAN primeira pesquisa o
logs de flashback para uma boa cópia do bloco corrompido (se Flashback Database é
habilitado).
• Você pode usar a vista de desempenho V $ DATABASE_BLOCK_CORRUPTION dinâmica
para
visualizar os bad blocks no banco de dados.
• O banco de dados alvo deve estar no modo ARCHIVELOG usar recuperação do bloqueio
RMAN.
• Como alternativa, você pode usar logs de flashback na área de recuperação flash para versões
incorruptos
bad blocks.
de
• A Data Recovery Advisor faz parte do quadro consultor Oracle e automaticamente reúne
informações sobre uma falha quando é detectado um erro.
• Uma vez que o Consultor de Recuperação de Dados identificou uma falha, você pode revisar
osfalha
detalhes
usando
do a interface EM ou RMAN.
• Uma vez que o Consultor de Recuperação de Dados identificou uma falha, você pode usar o
ADVISE
comando
RMAN
FALHA para recomendar uma opção de reparo para a falha especificada.

Auto teste
1 . O valor da DIAGNOSTIC_DEST parâmetro de inicialização é NULL, o ambiente
ORACLE_HOME variável é definida como /u01/app/oracle/product/12.1.0/db_1, e o valor
o ORACLE_BASE variável de ambiente é definido como / u01 / app / oracle. Na
de
inicialização,
atribuído pelaoOracle
valor épara DIAGNOSTIC_DEST? (Escolha a melhor resposta.)
A. / u01 / app / oracle / diag
B. / u01 / app / oracle / log
C. /u01/app/oracle/product/12.1.0/db_1/log
D. / U01 / app / oráculo

2 . Qual das seguintes tarefas que você pode realizar usando a ferramenta ADRCI? (Escolha
tudoAplique.)
o que
A. Package informações de incidentes em um arquivo ZIP para enviar para Oracle Support
B. Visualização de dados de diagnóstico dentro de ADR
C. Executar uma verificação de integridade no banco de dados enquanto ele está
executando
D. Run recomenda correções a partir do exame de saúde mais recente sobre o banco de
3.A dados
visão V $ DIAG_INFO mostra a localização dos vários arquivos. Qual dos seguintes
arquivo
tipos não são identificados em V $ DIAG_INFO? (Escolha a melhor resposta.)
A. arquivos de rastreamento de diagnóstico
B. arquivos incidentes de diagnóstico
C. arquivos problema de diagnóstico
D. O log de alerta XML banco de dados
4 . escritos
Qual dasouseguintes verificações
lidos? (Escolha todosbásicas
os que de
se consistência
aplicam.) são executadas por padrão quando
um bloco é
A. Bloco de soma de verificação.
B. endereço de bloco de dados no cache corresponde ao endereço no disco.
C. versão Block.
D. O bloco de dados está abaixo da marca de água alta, quando a leitura ou a actualização
deque
5.O um ébloco.
um pré-requisito para a utilização de recuperação de mídia de bloco? (Escolha a
melhor resposta.)Database deve ser habilitado.
A. Flashback
B. O banco de dados deve estar no modo ARCHIVELOG.
C. A (ou nível 0) backup completo de antes que o dano deve estar disponível.
D. DB_BLOCK_CHECKING deve ser ajustado para baixo, médio ou CHEIO.
6 . Você pode usar o comando RMAN MUDAR DE FALHA para alterar a prioridade de quais
tipos
de falhas? (Escolha todos os que se aplicam.)
A. ABERTO
B. ALTA
C. CRÍTICA
D. LOW
E. FECHADO
7 . Ao usar o Data Recovery Advisor, você corre o comando lista das falhas, e reporta
um problema com um arquivo de dados. Então, depois de um segundo arquivo de dados está
danificado,
FALHA. você
Para quecorre ADVISE
as questões serão o assessor gerar conselho? (Escolha a melhor resposta.)
A. Apenas o primeiro arquivo

B. Apenas o segundo arquivo


C. Ambos arquivos
D. Nem arquivo, porque ADVISE deve ser imediatamente precedido por LIST

Respostas de auto-teste
1. D . O directório raiz ADR (também conhecido como a base ADR) é definido pelo
DIAGNOSTIC_DEST.
parâmetro Se não estiver definido, a Oracle define DIAGNOSTIC_DEST para
o meio ambiente
ORACLE_BASE variável.
A , B , e C são incorrectas. Todos os três locais não são atribuídos, dados os valores de
DIAGNOSTIC_DEST, ORACLE_BASE, and ORACLE_HOME.
2. A e B . A ferramenta ADRCI permite visualizar informações de diagnóstico na raiz
diretório,
ADR além de embalagem ambas informações problema e incidente de Apoio Oracle.
C e D são incorrectas. A ferramenta ADRCI não podem iniciar verificações de saúde ou
recomendada
correções por
executados
outras ferramentas de diagnóstico Oracle.
3. C . Será que a visão V $ DIAG_INFO não especificar um diretório para os problemas,
Cadaapenas incidentes.
incidente é marcado com uma cadeia de texto que representa o identificador de
problema.
A , B , e D são incorrectas. Eles estão listados em V $ DIAG_INFO com o operando
nomesistema-
do caminho específico. Note-se que a versão de texto do log de alerta do banco de
dados não é especificamente
mencionado; ela existe com os arquivos de rastreamento. A versão XML do log de alerta do
banco de dados édada.
especificamente
4. A , B , e C . A Oracle realiza todos esses cheques com o valor padrão de
DB_BLOCK_CHECKSUM = TÍPICA.
D está incorreta porque a Oracle não verifica se um bloco está abaixo da alta de água
marca ao atualizar ou ler um bloco.
5. B . Uma cadeia completa de refazer é necessário para recuperar o bloco restaurado com
ponto.
a presente
A, C, e D estão incorrectos. A e C são incorrecta porque o bloco pode ser extraída a
ou um backup completo (nível 0) ou de log flashback; quer é suficiente, mas apenas um está
partir de
necessário. D está incorreta porque DB_BLOCK_CHECKING não tem que ser ativado
todos usarem recuperação do bloqueio, embora possa ajudar com a detecção de danos.
6. B e D . Você pode alterar a prioridade de uma falha de alto para baixo, e vice-versa.
A , C , e E são incorrectas. A está incorreta porque OPEN não é um estado de falha. C é
incorreto porque você não pode alterar a prioridade de uma falha crítica. E é incorrecta
porque uma vez fechado, não pode ainda ser ajustado.
7. Um . Aconselhamento é somente para problemas detectados anteriormente com LIST.
B , C , e D estão incorrectos. B e C estão incorretas porque o conselho não pode ser
gerado para
um problema que não foi listado. D está incorreta porque não há limite de tempo entre
e aconselhar.
LISTA
CAPÍTULO 26

Flashback

Objetivos do exame
• 63.1.14.1 Descrever as tecnologias Flashback
• 63.1.14.2 Use Flashback para consultar dados
• 63.1.14.3 Executar operações Flashback Table
• 63.1.14.4 Executar recuperação Tabela de Backups
• 63.1.14.5 Descrever e usar Flashback Data Archive
• 63.1.14.6 Execute Flashback Database

Para se proteger contra perda de dados por causa de danos físicos ao banco de dados, você pode usar
backups
log de arquivamento.
e Se forem geridos de forma adequada, você pode garantir que seu banco de
dados nunca
perder uma linha
será de dados comprometidos. Mas o que sobre danos causados por usuários? E se
alguém tem
acidentalmente (ou deliberadamente) cometeu uma má transação? Caiu uma tabela? Quaisquer tais
ações
não erros,
são tanto quanto a base de dados está em causa, e o D (durabilidade) do ensaio significa que
Oracle não é permitida para reverter essas ações. No entanto, as várias tecnologias de flashback
ÁCIDO
deixar o
administrador de banco de dados (DBA) fazer exatamente isso: tomar todo o banco de dados, ou
talveztransação,
uma apenas uma tabelanooutempo
de volta mesmo
para reverter o efeito do erro. A capacidade relacionada é a
capacidade
consultar o banco
de de dados, uma vez que foi em algum momento no passado.
Descrever as tecnologias Flashback
Quatro tecnologias de flashback distintos estão disponíveis, cada implementado com um subjacente
arquitetura. Cada tecnologia tem diferentes capacidades e limitações, mas não há sobreposição
diferente
funcionalidade entre eles. O motivo comum para a utilização de qualquer tipo de tecnologia de
flashback
erros-é vital
é corrigir
para compreender que tipo de tecnologia de flashback é apropriado para corrigir
diferentes tipos de erros.

Flashback Database
Flashback Database é, por analogia, como pressionar um botão de rebobinagem no banco de dados
(se você não
lembre-se pode de um botão de rebobinar, a investigação do uso de gravadores). O banco de
o conceito
dados atual
tomada como é o ponto de partida, e é levado de volta no tempo, a mudança pela mudança, revertendo
todo o trabalho feito
sequencialmente. O resultado final é como se você tivesse feito uma recuperação incompleta: todo o
trabalho
ponto de subsequente
flashback está
aoperdido, eo banco de dados deve ser aberto com RESETLOGS. Claramente,
esta é uma drástica
coisa para fazer. Ele permite que você voltar para fora mudanças que resultaram em corrupções
lógicastransações
como (em um sentido
inadequadas
do negócio)
(por exemplo, executando seus fim de ano rotinas arquivo-e-purga
antes de executar seus relatórios de fim de ano).

EXAME TIP Flashback Database não vai recuar a corrupção física, apenas a corrupção lógica
causado por erro do usuário.

Flashback Query, Transação, e Tabela


Três técnicas de flashback são baseados no uso de segmentos de desfazer. O primeiro recurso de
flashback foiintroduzido com libertação 9 i da base de dados e tem sido substancialmente aumentada
inicialmente
posteriormente.
Flashback Query (a liberação 9 i apresentam) permite consultar o banco de dados, uma vez que
passado,
foi emseja
algum
paramomento
uma instrução
no SELECT ou tomando sua sessão temporariamente de volta no
tempo paraserá
consultas quecontra
toda auma
sua versão anterior do banco de dados. Isso pode ser usado para ver o estado
dados antes de um conjunto de transações foi cometido. O que as tabelas olhar como há meia hora?
da
pode ser inestimável para rastrear a causa de corrupções de dados de negócios e também pode ser
este
usado para
corrigir alguns erros. Ao comparar as versões atuais e anteriores de uma tabela, você pode identificar
o que foi feito de que estava errado. É ainda possível seleccionar todas as versões de uma linha
durantepara
tempo um mostrar
período adehistória do que aconteceu com a linha, quando isso aconteceu, quem fez isso,
identificadores das transações que fizeram cada mudança.
eo
Transação Flashback automatiza o processo de reparação. Depois de ter utilizado Flashback
identificar
Query para
quais transação que foi que causou o problema, a Oracle pode construir instruções SQL
irá inverter as alterações. Este não é o mesmo que reverter uma transação confirmada! Isto é
que
impossível reverter uma mudança comprometido por causa das regras de um banco de dados
relacional
esta. Mas énãopossível
permitem
construir uma outra transação que irá reverter o efeito da primeira,
transação errônea. Ao contrário Flashback Database, Flashback Transaction não implica perda de
todos os outros trabalhos feito permanece em vigor, eo banco de dados permanece atual.
dados;
A terceira técnica de recapitulação com base em dados de desfazer é Tabela recapitulação. Tendo
trabalho
determinado
impróprio
quefoi cometido contra uma mesa, você pode instruir o Oracle para reverter tudo
alterações feitas a essa tabela desde um determinado ponto no tempo, deixando todos os outros atual
tabelas.
Ao longo de toda a pergunta Flashback, Transação Flashback, ou operação Tabela Flashback, o
banco de dados permanece aberta, e todos os objectos (incluindo aqueles que estão envolvidos na
recapitulação)
usar. integridade
estão
transacional
disponíveise aspara
restrições são sempre aplicadas, o que significa que o flashback
operação pode falhar. Por exemplo, se um flashback de uma transação requer uma inserção em uma
chave primária
coluna, esse valor não deve estar em uso. Piscar de volta uma tabela pode não ser possível se ele tem
chave estrangeira
restrições de você terá que piscar de volta todas as tabelas relacionadas em uma única operação.

EXAME TIP Flashback Query, em suas três variações, depende da utilização de segmentos de
desfazer.
Flashback Gota
Agora é possível “undrop” uma mesa. Isso é implementado mapeando o comando DROP em um
RENAME comando. Ao invés de deixar cair a tabela, a tabela é renomeado para um nome gerado
epelo
só caiu
sistema
mais tarde, quando o seu espaço de armazenamento é necessário para um objeto vivo. Se
necessário
espaço de armazenamento
e se o seu não foi reutilizado, o objeto pode ser renomeado de volta para o seu nome
original e, portanto,
restaurado. Sem esta capacidade, a única maneira de obter uma mesa de volta depois de uma queda
seria fazer uma
recuperação incompleta para o ponto no tempo, pouco antes da mesa foi descartado. Este foi
geralmentee oisso
consumir, tempo
significou a perda de todo o trabalho feito posteriormente. O novo banco de dados
capacidade de atingir o mesmo resultado que a recuperação incompleta e deve ser muito mais
Flashback
rápido,
em outras
mastabelas
o trabalho
a seguir
feitoa queda está perdido, eo banco de dados não estará disponível até que a
operação é
completou.
Flashback Gota permite restabelecer a mesa como foi no momento em que foi deixada cair, sem
perda de qualquer natureza; o banco de dados permanece atual. Isto não requer qualquer uso de
de dados
cópias
nem hádequalquer
segurança,
tempo
e de inatividade para os usuários. Note-se que Flashback Drop é
especificamente
comando; você não
parapode
o GOTA
flash back um comando TRUNCATE. Junto com a tabela em si, qualquer
índices, restrições, gatilhos e permissões também irá ser restaurada.
associado

EXAME DICA Você não pode flash back um truncamento da tabela, apenas uma gota mesa.

Flashback Data Archive


O Data Archive Flashback fornece a capacidade de ver as tabelas como eles eram, em qualquer
momento
As formasno depassado.
flashbacks descrito até agora tudo tem limites de tempo: Flashback Database é
limitado pelo
tamanho dos registos de flashback, Flashback Query pela retenção de undo, e depois retroceder Gota
espaço disponível em espaços de tabela. A Data Archive Flashback pode ser configurado para
pela
armazenar
de linhas indefinidamente.
antes de imagensDeve, no entanto, ser configurado. Ao contrário de Flashback Query e
Flashback
não Gota, elepor padrão.
está habilitado
Permitindo uma mesa para Flashback Data Archive cria outra tabela (e alguns outros objetos)
que
irá armazenar todas as versões anteriores de linhas, armazenando-os para sempre, se desejar. Quando
Manipulação
Language (DML)
de Dados
é cometido contra a mesa, um processo de fundo chamado de Dados Flashback
processo de arquivamento (FBDA) irá capturar os dados necessários e guardá-lo para o arquivo. De
lá, ele
ser consultado
pode com a mesma sintaxe usada para regular Flashback Query, mas o flashback pode
voltar
anos.
Quando um Data Archive Flashback é criado, você especifica um limite de tempo (que pode ser
FBDA anos),
irá eo
certificar-se de que todos os dados são salvos até que o tempo passou e, em seguida,
removê-lo.
FBDA é responsável
o por criar os objetos no arquivo, povoando-as com linhas, se necessário,
e purga de dados que já passou da data de validade.

Quando usar Flashback Tecnologia


O erro humano sempre foi o tipo mais difícil de erro a partir do qual se recuperar. Isto é porque
na medida em que o banco de dados está em causa, o erro humano não é um erro em tudo.
Dependendo
erro, as diferentes
da natureza
tecnologias
do de flashback podem ajudá-lo a se recuperar, minimizando o tempo de
inatividade
perda de dados.
e
A técnica de flashback mais drástica é Flashback Database. Considere usar isso apenas quando
também
você considerar o uso de recuperação-a incompleta efeito é o mesmo, embora o tempo de
inatividade será
tipicamente ser muito menos. Um exemplo é quando cair um esquema no sistema de produção
quandoque
pensei vocêvocê estava conectado ao sistema de teste. A truncagem tabela crítica (embora não uma
gota tabela)
também seria um tempo para usar Flashback Database.
Flashback Gota irá restaurar uma tabela (juntamente com vários objetos dependentes) ao estado
na altura
em que daestava
queda. Note que isso não irá restaurar uma tabela somente truncada que tem sido
completamente abandonada. Não há tempo de inatividade envolvido, além do fato óbvio de que até
que a tabelaninguém
undropped, é pode chegar a ele, e nenhum trabalho será perdido. Ao contrário Flashback
Database,
se gota nãoFlashback
requer qualquer configuração-lo está sempre disponível, a menos que você desativá-lo
Para granularidade de recuperação, considere Tabela Flashback e Transação Flashback. Estes
especificamente.
não deve afetar os usuários de todo, diferente do que o trabalho revertida é ido-que é
presumivelmente
resultado desejado.
o Como Flashback Gota, os, transação e instalações Tabela Flashback de consulta
sempre disponível sem qualquer configuração diferente de conceder privilégios apropriados. Eles
são
no entanto, exigem algum ajuste de gerenciamento de desfazer.
podem,

O Data Archive Flashback é para armazenamento de longo prazo. Normalmente, este será por
muitasrazões legais; dentro
jurisdições existem requisitos para manter os dados por anos e, em seguida, para destruí-la
(também conhecido como trituração digitais ). A Data Archive Flashback pode ativar esse modo
O DBA pode garantir, assim, o cumprimento legal, sem a necessidade de qualquer esforço de
transparente.
programação.
Em alguns casos, você terá uma escolha de tecnologias de flashback. Considere um exemplo
trabalho
onde em
umlotes é executado duas vezes. Talvez você importar algumas centenas de milhares de
facturas anapartir
sistema sua contabilidade
do seu sistema de faturamento a cada dia, e através de algum erro e falta de
validação, o mesmo
faturamento prazo é importado duas vezes. Se a importação é feita como um enorme transação,
então Flashback
Transação revertê-la. Mas se for feito como muitas transações pequenas, em vez de reverter todos
pode ser mais fácil de fazer um flashback em nível de tabela de todas as tabelas afetadas. Pode ser
eles,
que algumas tabelas
faturamento das de interface do sistema são descartados após o run-Flashback Gota vai recuperá-
alos. Mas se
corrida envolve um truncamento, a única opção é Flashback Database. Além disso, pode ser que o
não foi descoberto por algum tempo e uma quantidade significativa de trabalho tem sido feito com
erro
base na
erroneamente dados importados; então Flashback Database pode ser a única maneira de garantir que
você um
com acabar
banco de dados que é consistente em termos de negócios.
Ao escolher uma técnica de flashback, lembre-se sempre que a Oracle vai garantir transacional
integridade, mas que os resultados em termos de negócios pode não ser o que quiser. Flashback
Database,
fato ou
recuperação incompleta, é a única maneira de garantir absolutamente a integridade do banco de
dados e
conformidade com as suas regras, mas de negócios o preço na hora e os dados perdidos pode ser
muito alto.

TIP EXAME No caso de danos na mídia, como a perda de um arquivo de dados, nenhuma
tecnologiaÉ de
Socorro. issoflashback pode de backup, restauração e procedimentos de recuperação são para.
que o padrão

Use Flashback para consultar dados


A forma básica de Flashback Query permite consultar o banco de dados, uma vez que foi em algum
momento énoque
princípio passado.
sua consulta
o especifica um tempo, o que é mapeado sobre um número de alteração
edosempre
sistemaque
(SCN),
a consulta atinge um bloco que foi alterado desde que SCN, ele irá para o undo
segmentos para extrair os dados de desfazer necessários para reverter a mudança. Esta reversão é
eestritamente
é visível apenas
temporária
para a sessão de executar a consulta Flashback. Claramente, para uma consulta
Flashback
ter sucesso,para
os dados de desfazer deve estar disponível. técnicas mais sofisticadas podem ser usadas
para recuperar
versões de umatodos
linha, para reverter transações individuais, ou para reverter todas as alterações feitas
a uma um
desde tabela
certo tempo. Também é possível garantir que um flashback terá sucesso, mas há um preço
a ser pago para permitir isto: Pode causar transações falhar.

EXAME TIP Todas as formas de Flashback Query dependem de dados de desfazer para reconstruir
os dados, uma vez que estava em um

ponto anterior no tempo.

Básico Flashback Query


Qualquer instrução SELECT pode ser dirigida contra uma versão anterior de uma tabela. Veja este
exemplo:
Primeiro, observe o tempo. Em seguida, elimine algumas linhas de uma tabela e confirmar a
que alteração.
existem apenas
A confirma
duas linhas
consulta
na tabela e nenhuma linha onde o REGION_NAME começa com A .
próxima consulta é dirigido contra a mesa como era no momento anterior (de volta quando havia
o
quatro linhas,
incluindo aqueles para a Ásia e Américas ). Não se enganem sobre isso, as duas linhas que começam
com
se foram;
A eles foram excluídos, e a exclusão foi cometido. Isso não pode ser revertida. o eliminada
linhas que você está vendo foram construídos a partir de dados de desfazer. A consulta final combina
dadosdados
com em tempo
históricos
real para ver o que as linhas foram removidas. A saída desta consulta pode ser
usado
fins depara
reparação para inserir as linhas de volta para a mesa.
Apesar de ser capaz de dirigir uma consulta em relação aos dados a partir de um ponto anterior
no tempo
haverá podeem
momentos serque
útil,você quer fazer uma série de seleciona. É possível levar o seu inteiro
sessão de volta no tempo usando o pacote DBMS_FLASHBACK.

Deste ponto em diante, todas as consultas vai ver o banco de dados como era no tempo
sessões
especificado.
verá dadosTodos
em tempo
os outros
real, mas uma sessão verá uma versão congelada do banco de dados
até
o flashback é cancelada.

Enquanto no modo de flashback, é impossível executar comandos DML. Eles vão lançar um
Apenas
erro.instruções SELECT são possíveis.
Quão longe você pode levar uma consulta Flashback (ou uma consulta ou usando
DBMS_FLASHBACK) depende do conteúdo dos segmentos de desfazer. Se os dados necessários
para desfazer
construir o conjunto de resultados out-of-data não está disponível, em seguida, a consulta falhará
com um ORA-08180:
snapshot encontrado com
“Nãobase no tempo especificado,”erro.
A sintaxe para permitir Flashback Query irá aceitar um timestamp ou um SCN. Se você usar um
SCN, então o ponto para o qual o flashback vai é preciso. Se você especificar um tempo, ele será
para um SCN com uma precisão de três segundos.
mapeado
EXAME TIP Você pode consultar o banco de dados a partir de um ponto anterior no tempo, mas
você nunca
DML contrapode
as versões
executar
mais antigas dos dados.

Flashback tabela de consulta


Conceitualmente, um flashback da tabela é simples. Oracle vai consultar os segmentos de desfazer
para extrair
todas as linhas
detalhes
que foram
de alteradas e, em seguida, construir e executar instruções que irá reverter a
alterar. A operação de recapitulação é uma operação separada, a qual irá neutralizar o efeito de todo
transações-se anteriores possível. O banco de dados permanece on-line e trabalho normal não é
o
a menos bloqueio de linha é um problema. Esta não é uma reversão de trabalho comprometida; é
afetado,
uma nova transação
projetados para reverter os efeitos do trabalho empenhado. Todos os índices são mantidas, e
limitaçõesum
aplicada; sãoflashback da tabela é apenas uma outra transação, e as regras normais se aplicam. A
única exceção anormal é que, por padrão, dispara sobre a mesa são desativados para a operação de
processamento
flashback.
Um flashback mesa, muitas vezes, envolvem uma tabela que está em um relacionamento de
quase
chave
inevitável
estrangeira.
que a Nesse
operação
caso,
deéflashback irá falhar com uma violação de restrição. Para evitar
problema, as licenças de sintaxe de flashback de várias tabelas com um comando, que será
isso
como uma única transação com a restrição verificada no final.
executado
O primeiro passo para habilitar de flashback da tabela é para permitir o movimento de linha nas
definido
mesas.noEsta
dicionário
é uma bandeira
de dados que informa Oracle que IDs de linha podem mudar. A ID de linha
não pode nunca realmente
mudar, mas uma operação de flashback pode fazer parecer que ele tem. Por exemplo, no caso de um

linha que é excluído, a operação de flashback vai inseri-lo de volta para a mesa. Ele terá o mesmo
valor da chave primária, mas um ID de linha diferente.
No exemplo que se segue, há duas tabelas: EMP e DEPT. Há uma chave estrangeira
relação entre eles, afirmando que todos os funcionários da EMP deve ser um membro de um
departamento em
DEPT.
Primeiro, insira um novo departamento e um empregado nesse departamento e observe o tempo.

Em seguida, exclua o departamento eo empregado, tendo o cuidado de eliminar o empregado


violação
primeiro
de restrição.
para evitar um

Agora tente piscar de volta as mesas para o momento em que o departamento e empregado
existiu.
Esta falha
habilitado paraporque, pormesa,
qualquer padrão, o movimento
então de linha,
habilitá-lo para ambasqueasétabelas.
um pré-requisito para flashbacks
mesa, não é

Agora tente o flashback novamente.

Desta vez, o flashback falhar por uma razão mais sutil. A recapitulação está a tentar inverter o
exclusão de empregado 8000, inserindo-lo, mas empregado 8000 estava no departamento 50, que
sido excluídos e assim não existe. Então, há uma violação de chave estrangeira. Você pode evitar
tem
este problema
piscando de volta tabela DEPT primeira, que iria inserir departamento de 50. Mas se o seu de
envolve muitas mesas e muitas declarações DML, pode ser logicamente difícil encontrar uma
flashback
sequência
vai que A resposta é a piscar de volta ambas as tabelas juntos.
funcionar.

Isto sucede porque ambas as tabelas são piscou de volta em uma transação, e as restrições são
verificadas apenas no final da transação, altura em que os dados são logicamente consistente.
O flashback ainda pode falhar por outros motivos:

• violações de chave primárias irá ocorrer se um valor de chave foi reutilizados entre uma
exclusão
flashback.
ea
• Um ORA-08180: “Não snapshot encontrado com base no tempo especificado,” erro será
levantada se houver
não o suficiente desfazer informações voltar para o tempo solicitado.
• Se quaisquer linhas afetadas pelo flashback são bloqueados por outros usuários, o flashback
falhará
ORA-00054:
com “recurso ocupado e adquirir com NOWAIT especificado.”
• As definições de tabela não deve mudar durante o período em causa; de flashback não pode
atravessar
(DDL) Data Definition Language. A tentativa de fazer isso irá gerar ORA-01466:
“Não é possível ler a definição da tabela de dados foi alterado.”
• Flashback não funciona para tabelas no esquema SYS. Tente imaginar o efeito de piscar
parte de trás do dicionário de dados.

Se um flashback da tabela falhar por qualquer motivo, a operação de flashback será cancelada.
que Quaisquer
teve sucesso
partes
serádele
revertida, e as tabelas serão como eram antes de o flashback
foi emitido comando.
Variações na sintaxe permitir flashback de um número de alteração do sistema e o disparo de
durante
gatilhos
a operação.
DML

Versões Flashback Query


Uma fila pode ter mudado várias vezes durante a sua vida. Flashback Versions consulta permite que
você veja
versões toda a
comprometidos de uma linha (mas não todas as versões não confirmadas), incluindo a data e
cada
hora versão
para
transação foicriou
quando
que criado e quando
qualquer terminou.
versão de umaVocê também
linha, pode
que pode ver oser
então identificador de transação da
usado com Flashback
Transaction Query. Esta informação é exposto por uma série de pseudocolunas que estão disponíveis
com cada mesa. Pseudocolunas são colunas adicionadas à linha pela Oracle internamente; eles não
parte da Organização Internacional de Normalização (ISO) de normalização para um banco de dados
são
mas eles podem ser úteis. Um pseudocoluna é o ID de linha. Este é o identificador único para cada
relacional,
o banco de dados que é usado em índices como o ponteiro de volta para a tabela. Os pseudocolunas
linha
relevantes parasão como se segue:
recapitulação

• VERSIONS_STARTSCN O SCN em que esta versão da linha foi criada, quer por
Inserir ou por ATUALIZAÇÃO
• VERSIONS_STARTTIME O timestamp em que esta versão da linha foi criada
• VERSIONS_ENDSCN O SCN em que esta versão da linha expirou, por causa de qualquer
DELETE ou UPDATE
• VERSIONS_ENDTIME O timestamp em que esta versão da linha expirou
• VERSIONS_XID O identificador exclusivo para a transação que criou esta versão do
linha
• VERSIONS_OPERATIONS A operação feito pela transação para criar esta versão do
a linha, ou INSERT ou UPDATE ou DELETE

Para ver essas pseudocolunas, você deve incluir as versões ENTRE palavras-chave em sua
inquerir. Por exemplo, a Figura 26-1 mostra todas as versões da linha de empregado 8000.

Figura 26-1 Flashback Versões consulta

As versões são classificados em ordem da existência descendente; eles devem ser lidas de baixo
parainferior
A linha cima. mostra que o empregado 8000 foi inserido (o que na última coluna) no SCN
pelo número de transação 01000E0002180000. O funcionário foi dada a ENAME de RAMKLASS
95828152
eo SAL de 3000. Esta versão da linha existiu até SCN 95.828.273, o que leva você para o
terceira fila. Neste SCN, a linha foi atualizado (o L na última coluna) com um novo salário. este
versão da linha persistiu até SCN 95828279, quando foi suprimida, conforme mostrado na segunda
A coluna VERSIONS_ENDSCN é sempre nulo para a eliminação. A fila superior dos programas do
linha.
conjunto
uma novadeinserção,
resultados
que reutiliza o número de funcionários. Para esta linha, o VERSIONS_ENDSCN
é também
nulo porque a linha ainda existe nessa versão no final do intervalo de tempo especificado na
consulta.
No exemplo apresentado na Figura 26-1 , as versões ENTRE cláusula utiliza duas constantes
MINVALUE
para o SCN. instrui o Oracle para recuperar as primeiras informações nos segmentos de desfazer;
MAXVALUE
será o atual SCN. Em outras palavras, a consulta como está escrito vai mostrar todas as versões que
podem
ser recuperada,
eventualmente
dada a informação disponível. A sintaxe também irá aceitar um intervalo
especificado com dois
timestamps.
O exemplo anterior irá selecionar todas as versões do número de funcionário 8000 que existiu
última
durante
hora.o

EXAME TIP Flashback Versão consulta não pode trabalhar contra tabelas externas ou visões V $.
Por queasnão?
Como alterações a esses objetos não geram desfazer.

Flashback Transaction Query


Flashback tabela de consulta e de recapitulação utilizar versões de consulta de dados para desfazer
um objecto. Query
Transaction Flashback
analisa a desfazer por uma dimensão diferente. Ele vai recuperar todos os dados
de desfazernão
transação, para
importa
a quantos objetos que afeta. A vista é crítica
FLASHBACK_TRANSACTION_QUERY, descritos aqui:

Uma vez que os dados neste vista pode ser sensível, que seja protegido por um privilégio. Você
SELECIONE
deve ser concedida
QUALQUER TRANSAÇÃO antes que você possa consultá-lo. Por padrão, este
eprivilégio
ao papel éDBA.
concedido
Haveráa SYS
uma ou mais linhas nesta vista para cada transação cujo undo
dados ainda existe nos segmentos de desfazer, e cada linha irá se referir a uma linha afetada pela
Tabela 26-1 descreve as colunas.
transação.
Tabela 26-1 As colunas da FLASHBACK_TRANSACTION_QUERY Ver

A instrução SQL de uma linha pode gerar muitas linhas em

FLASHBACK_TRANSACTION_QUERY. Isso ocorre porque SQL é uma linguagem orientada a


set. 1
declaração pode afetar muitas linhas. Mas cada linha afetada terá sua própria linha na visualização.
A vista transações confirmadas e também transacções em curso. Para uma transação ativa, a
mostrará
COMMIT_SCN e COMMIT_TIMESTAMP colunas são NULL. transações desfeitas não são
exibido.
Dar um exemplo onde um salário foi multiplicada por 11 em vez de ser incrementado por 10
por cento.

Mais tarde, suspeita-se que um erro foi cometido. Então, você consulta as versões da linha.

Isso não indica o que aconteceu e dá informações suficientes para inverter a alteração. Mas o que
a transação
se afetada outras linhas em outras tabelas? Para ter certeza, consulta
FLASHBACK_TRANSACTION_QUERY, que terá uma linha para cada linha afetada pela
transação. Uma complicação é menor que a coluna é do tipo RAW XID, ao passo que o
VERSIONS_XID pseudocoluna é hexadecimal, então você deve usar uma função de conversão de
tipos para fazer a
Junte-se.

Essa consulta retorna apenas uma linha, o que confirma que houve de fato apenas uma linha
a transação
afetada pela
e fornece uma declaração de que vai reverter o impacto da mudança. Observe o uso de
ROWID na demonstração UNDO_SQL. Desde que não houve reorganização da tabela, este
um
vai garantir que a linha correta é alterado.
O FLASHBACK_TRANSACTION_QUERY vista vai construir instruções de desfazer a inverter
transação,
um mas executá-los individualmente seria uma tarefa terrível para uma grande transação. Isto
éonde o pacote DBMS_FLASHBACK é novamente útil. Ele inclui procedimentos para trás para fora
transações. Para executar os procedimentos backout transação, você deve ter sido concedida a
FLASHBACK ANY privilégio TABLE.
Veja este exemplo:
Esta chamada de procedimento irá reverter todo o trabalho feito pelas duas transações nomeados.
Aqui está o em ordem:
argumentos

• NUMTXNS é o número de transações que devem ser invertidas; neste exemplo, duas.
• XIDs é uma lista de identificadores de transação, passado como uma variável XID_ARRAY.
Esta
foram
listaidentificados
seria com uma consulta Flashback.
• OPÇÕES pode tomar vários valores na forma de constantes do pacote. A opção CASCADE
vai tentar encomendar as mudanças para evitar conflitos.

É impossível reverter uma transação confirmada. As regras de um banco de dados relacional


esta.proíbem
Então, quando o procedimento backout inverte uma ou mais operações, deve construir e
para executar mais DML em outra transação, que irá reverter o efeito das transações originais.
tentativa
Este processo é repleto de dificuldades por causa da possibilidade de dependências entre o
transações e conflitos com o trabalho feito posteriormente. Isso, normalmente, mostrar-se como
violações. O argumento OPÇÕES controla o que fazer se houver um problema. Estes são a possível
restrição
valores:

• NOCASCADE (o padrão) será aplicada desfazer alterações com nenhuma tentativa de


identificar
Isso podedependências.
muito bem falhar se, por exemplo, as operações enumeradas afetar tabelas na chave
relacionamentos.
estrangeira
• CASCADE tenta desfazer as transações logicamente tais que as violações de restrição não vai
ocorrer.
• NONCONFLICT_ONLY desiste apenas muda para as linhas que não causam problemas. o
banco de dados continuará a ser coerente, mas algumas operações podem estar incompletos.
• NOCASCADE_FORCE irá desfazer instruções SQL na ordem inversa de cometer vezes.

O que quer que muda a DBMS_FLASHBACK.BACKOUT_TRANSACTION consegue


realizar são deixados não confirmadas. Isso lhe dá uma oportunidade de investigar o que conseguiu
alcançar antes de cometer (ou reverter).
A Figura 26-2 mostra um exemplo de combinação de Flashback Query com recapitular
primeira
Transação.
consulta
o mostra uma linha, que é então atualizada e comprometida. A Flashback Versão
consulta
o identificador
recupera
da transação que fez a alteração e passar isso para
DBMS_FLASHBACK.BACKOUT_TRANSACTION inverte a mudança. Finalmente, a reversão
estar comprometido.
deve
Figura 26-2 Usando a instalação de Transação Flashback

Flashback e Dados Undo


Flashback Query em suas várias formas depende inteiramente de dados de desfazer. Você está
pedindo
-lhe umaOracle
versãopara
dos dados
apresentar
como era há algum tempo. Se os dados foi alterado desde essa altura, a
deve reverter as alterações. Para fazer isso, a Oracle precisa os dados de desfazer que protegia a
Oracle
amudança.
consulta Se
terá sucesso vai depender se que os dados de desfazer está ainda disponível. Considere
Figura 26-3 .

Figura 26-3 Flashback Query e desfazer dados

A primeira consulta pede uma exibição da tabela, uma vez que foi de 40 minutos atrás, e ele
consegue.
porque Isto émenos, 40 minutos de dados de desfazer disponíveis nos segmentos de desfazer.
não é, pelo
A segunda
tenta voltarconsulta
40 dias, e ele falhar. Nos bancos de dados praticamente todos, seria completamente
esperar Flashback Query para trabalhar ao longo de um período tão longo. Você precisaria de uma
irrealista
tabela de de
tamanho undo
Júpiter
o para armazenar tanto desfazer de dados.
Para garantir que uma consulta Flashback sempre terá êxito durante um determinado período,
atributo
definagarantia
o de retenção para a tabela de undo em conjunto com o
parâmetro de instância UNDO_RETENTION. Isto irá assegurar que você sempre pode flash back o
de segundos especificado, mas o preço que você vai pagar é que se sua tabela de undo não é
número
adequadamente para a carga de trabalho transação, então o banco de dados pode travar durante a
dimensionada
execução de DML.
Realizar operações de Flashback Table gota
Queda acidental de uma mesa é fácil de fazer. Não é justo que você pode soltar a mesa errada por
causa
um dede digitação que poderia ser a tabela da direita, mas você está conectado ao esquema errado
erro
aouinstância
conectado
errada.
no Você pode reduzir a probabilidade de isso definindo o SQL * Plus alerta. Aqui
está um
exemplo:

DICA Para definir o sqlprompt automaticamente para todas as sessões do SQL * Plus, coloque o
comando
no arquivoanterior
glogin.sql no diretório / sqlplus / admin ORACLE_HOME.

Flashback Gota permite restabelecer uma retirada anteriormente mesa (mas não uma tabela
que truncada) exatamente
era antes da comoos índices também será recuperado e também todos os accionadores e
queda. Todos
, Chave primária única, e não nulos restrições também serão recuperados, mas não restrições de
bolsas.
chave estrangeira.

EXAME TIP O comando Flashback Gota aplica somente a tabelas, mas todos os objetos associados
também ser recuperado-excepto para chaves estrangeiras.
serão

A Implementação de Flashback Gota


Até e incluindo a liberação 9 i de banco de dados Oracle, quando uma tabela foi abandonada, todas
as referências
foram removidosa elea partir do dicionário de dados. Se fosse possível ver o código fonte para o antigo
GOTA
comando TABLE, você veria que era na verdade uma série de comandos DELETE contra a
várias tabelas no esquema SYS que definir uma tabela e seu uso do espaço, seguido por uma
Não houve compensação real de dados de disco, mas o espaço usado por uma tabela caiu foi
confirmação.
marcado
sendo utilizado
como e, portanto, disponível para reutilização. Mesmo que os blocos da tabela ainda
estavam lá,
havia maneira possível de obter a eles, porque o dicionário de dados não teria nenhum registro de
blocos fizeram parte da mesa caiu. A única maneira de recuperar uma tabela eliminada era fazer um
que
tempo de recuperação, restauração de uma versão do banco de dados de antes da queda, quando os
ponto-in-
dadossobre
sabia dicionário
a mesa.
ainda
Da liberação de 10 g para a frente do banco de dados Oracle, a implementação do DROP TABLE
comando mudou. Tabelas não são descartados em tudo; eles são renomeados.
Na Figura 26-4 , você pode ver que uma mesa, OLD_NAME, ocupa uma extensão de 64 KB,
38,281
que blocos
começaem arquivo 4. Após a mudança de nome para NEW_NAME, o armazenamento é a
mesma;é oPortanto,
tabela mesmo.oConsultando os DBA_OBJECTS vista iria mostrar esse número objeto da mesa
não mudou tanto.
tinha
Figura 26-4 Renomear tabelas com SQL * Plus

O comando DROP TABLE foi mapeado internamente para um comando RENAME, que
afeta a mesa com todos os seus índices associados, gatilhos e restrições, com exceção de estrangeiros
restrições de chave, que são descartados. restrições de chave estrangeira têm de ser fisicamente caiu.
Se elesmantidas, mesmo com um nome diferente, então DML na tabela pai nondropped seria
foram
constrangido pelo conteúdo de uma tabela descartada, o que seria absurdo.
Subsídios em tabelas não têm nomes, para que eles não podem ser renomeados. Quando você
concedevocê
privilégio, um especificar
objeto o objeto pelo nome, e o armazenamento subjacente da subvenção faz
referência
pelo seu número
ao objeto
de objecto. Porque os números do objeto não fique alterado por uma operação de
renomeação,
subsídios permanecem
o válidas.
Tanto quanto instruções SELECT e DML normais estão em causa, uma mesa caiu é
desistiu.
definitivamente
Não há nenhuma alteração de quaisquer outros comandos, e todo o seu software irá assumir
que um
mesa caiu realmente se foi. Mas agora que a queda é de fato RENAME, torna-se possível undrop
-pela renomear a tabela de volta para o seu nome original. No entanto, isso não é garantia de
sucesso.
ser que oPode
espaço ocupado pela tabela caiu foi reutilizado. Há também complicações se em
o período intercalar outra tabela foi criada, reutilizando o mesmo nome que a tabela descartada.
Os objetos descartados podem ser consultados por olhar para a “lixeira” para obter seus novos
Estanomes.
é uma lista de todos os objetos que foram descartados, mapeando os nomes de tabelas e índices
para os nomes gerados pelo sistema dos objetos descartados. Há uma lixeira para cada usuário,
originais
visível
na visão de dicionário de dados USER_RECYCLEBIN, ou para um quadro global você pode
DBA_RECYCLEBIN. O espaço ocupado pelos objetos da lixeira será reutilizado automaticamente
consultar
quando uma tabela está sob pressão do espaço (tempo após o qual os objectos não podem ser
recuperados),
você pode forçar
ou manualmente Oracle para realmente deixar cair os objetos com o comando
PURGE.

DICA Não há garantias de sucesso com Flashback Gota, mas pode muito bem trabalhar. Quanto
mais cedo você
executá-lo, maior a probabilidade de sucesso.

Usando Flashback Gota


Considere o exemplo na Figura 26-5 . Este é o uso mais básico de Flashback Gota. A queda
comando renomeia a tabela para um nome gerado pelo sistema e Flashback Gota traz de volta.
Figura 26-5 Usando Flashback gota

Variações na sintaxe são as seguintes:

O primeiro comando realmente vai cair da mesa. A palavra-chave PURGE instrui o Oracle para
reverter para
o significado original da GOTA: todas as referências à mesa são eliminados, e isso nunca pode ser
costas. O segundo comando irá piscar volta da mesa, mas dar-lhe um novo nome. Este seria
trazida
se entre a queda e o flashback outra mesa tinha sido criado com o mesmo nome que o
essencial
caiu mesa. Note que, embora a tabela pode ser renomeado durante um flashback, não pode mudar
esquemas; todas as operações de flashback ocorrer dentro do esquema ao qual pertence o objeto. Os
gatilhos e restrições que são piscou de volta junto com a mesa de manter seus nomes lixeira. Se
índices,
quer devolvê-los para seus nomes originais, você deve renomeá-los manualmente após o flashback.
vocês
Há dois pontos para enfatizar aqui. Primeiro, Flashback Gota pode recuperar apenas a partir de
não uma
podegota.
recuperar
isto de um TRUNCATE. Em segundo lugar, se você deixar cair um usuário com,
cascata,
não será como
capazmostrado
de recuperar
aqui,
qualquer
você de mesas de Scott com um flashback:

A queda do esquema significa que a Oracle não pode manter os objetos em tudo, mesmo na lixeira,
porque não há nenhum esquema para contê-los.
O SQL * Plus comando SHOW RECYCLEBIN irá exibir os objetos descartados, com o seu
nomes originais e os seus nomes lixeira. O DBA_RECYCLEBIN vista fornece a mesma
informações e muito mais.
Se uma tabela é descartado e, em seguida, uma outra tabela é criada com o mesmo nome e, em
nomeseguida,
haverá também
duas mesas
original. Por nacaiu,
lixeira.
padrão, umEles terão diferentes
comando Flashbacknomes da lixeira,
Gota sempre mas o amesmo
recuperar versão mais recente do
a mesa, mas se esta não é a versão que você quiser, você pode especificar o nome da lixeira da
que deseja recuperado, em vez do nome original. Aqui está um exemplo:
versão

Exercício 26-1: Use Flashback Largar com o SQL * Plus Criar um novo esquema e uma mesa
dentro dele.
Elimine a tabela e, em seguida, recuperá-lo com Flashback Gota.

1. Conecte-se ao seu banco de dados como SYSTEM usuário com SQL * Plus.
2. Crie um usuário para este exercício.

3. Criar uma mesa, com um índice e um constrangimento, e inserir uma linha.

4. Confirmar o conteúdo do seu esquema.

5. Solte a tabela.

6. Volte a executar as consultas a partir do passo 4. Note que os objetos foram removidos
USER_OBJECTS, mas a restrição ainda existe com um nome gerado pelo sistema.
7. Consulta a sua lixeira para ver o mapeamento do nome original para os nomes Lixeira.

Note-se que este ponto de vista não mostra a restrição.


8. Demonstrar que é possível consultar a lixeira, mas que você não pode fazer DML contra ela,
como os próximos mostra a ilustração. Note que o nome da tabela deve ser colocada entre
aspas duplas
permitir que opara
SQL * Plus para analisar os caracteres fora do padrão corretamente.

9. Recuperar a tabela com recapitular gota.


10. Execute novamente as consultas de etapas 4 e 7. Note que o índice ea restrição retiveram
seus nomes Lixeira.
11. Renomeie o índice e constrangimento para os nomes originais. Nos exemplos que se seguem,
substituto
seus próprios nomes da lixeira:

12. Confirme o sucesso da operação, executando novamente as consultas de etapas 4 e 7.


13. Conectar como usuário SYSTEM e soltar o esquema conta-gotas.

14. Consulta a visão DBA_RECYCLEBIN para demonstrar que todos os objetos de propriedade
do usuário
CONTA-GOTAS realmente sumiram.

Gerenciando a Lixeira
A lixeira é um termo dado para o espaço de armazenamento usado por objetos descartados. Você
pode ignorar
lixeira completamente;
o sua gestão é automático, tanto em termos de transferência de objetos em
quando
eles são descartados e removê-los permanentemente quando o espaço é necessário no espaço de
tabela para
objetos. Masviver
pode haver circunstâncias em que você precisa estar ciente do conteúdo da reciclagem
bin e quanto espaço eles estão ocupando.
A lixeira pode ser desativado com o RECYCLEBIN parâmetro de instância. O padrão é ON,
o que significa que todos os esquemas terá uma lixeira. O parâmetro é dinâmico e pode ser ajustado
para OFF
uma sessãopara
ou para todo o sistema.

Consultando a Lixeira
Cada usuário tem sua própria lixeira e sempre pode ver tabelas eliminadas em seu próprio esquema.
maneira mais simples é o comando show RECYCLEBIN.
o

Isso mostra que o usuário atual tem três mesas caiu: seus nomes originais, sua lixeira
nomes, e no momento em que foram retiradas. Para informações mais detalhadas, consultar o
dicionário
vista de dados
USER_RECYCLEBIN ou DBA_RECYCLEBIN consulta para uma visão global.
A coluna é crítica CAN_UNDROP. A Oracle não está sob nenhuma obrigação de manter tabelas
índices.
eliminadas
A instalação
ou Flashback Drop é puramente uma conveniência que a Oracle fornece; que não
fazpadrão
o parte do
de banco de dados relacional. Se o Oracle precisar do espaço a ser ocupado por um objeto
caiu para
alocar mais espaço para um objeto vivo, ele vai levá-la. A partir desse ponto, o objeto caiu não pode
ser recuperado com recapitular gota, e ele será removido a partir da vista. A coluna ESPAÇO (em
unidades de blocos de arquivo de dados) mostra quanto espaço é ocupado pelo objeto caiu.
Tendo identificado o nome da tabela eliminada na lixeira, que pode ser consultado como
mesa,qualquer
emboraoutro
você terá que colocar seu nome entre aspas duplas por causa da não-padrão
caracteres usados em nomes lixeira. Mas lembre-se sempre que você tem um limitado (e
imprevisível tempo) durante o qual você pode fazer isso. Se você pensa que é provável que uma
tabela descartada
necessário, você deve
será undrop-lo imediatamente.

EXAME TIP Flashback Gota não está habilitado para tabelas armazenadas no espaço de tabela
SYSTEM.
tabelas nãoTal
serão relatados pelas consultas descritas aqui, porque eles são descartados e purgado
imediatamente.

Recuperação do espaço da Lixeira


Espaço ocupado por objetos eliminados está em um estado ambíguo. É atribuído ao objeto, mas a
pode substituí-lo à vontade. O uso do espaço diagnósticos normais quanto irá ignorar espaço
Oracle
aocupado
lixeira. por
Isso significa que o seu “espaço de tabela por cento cheio” alertas não será acionado até
eque
os aníveis
advertência
de utilização de espaço críticos são atingidos por objetos vivos. Além disso, se os seus
arquivos de dados têm a habilitado, a Oracle não vai, de facto autoextend os arquivos de dados até
atributo AUTOEXTEND
que todo por
ocupada o espaço
objetos eliminados foi transferido. Ele irá substituir a lixeira em detrimento de
aumentar o tamanho do arquivo de dados.

Executar recuperação Tabela de Backups


Recovery Manager (RMAN) recuperação de tabela não é uma tecnologia flashback, mas o resultado
é semelhante:
mesa a ao estado em que estava em algum momento no passado. É, portanto, é tratada
é devolvido
neste momento.
Usando um backup RMAN para recuperar uma tabela ignora as questões do Flashback mesa, em que
o tempo

quadro não é limitado pela disponibilidade de dados de desfazer ou se o espaço da tabela foi
reutilizado
mas sim pela disponibilidade de backups de arquivos de dados e arquivos de log de arquivo. Isso
pode significar
recuperar uma tabela
que você
parapode
o estado em que estava em semanas ou meses.
Este é o processo:

1. Criar uma instância auxiliar. Esta é uma instância começou um arquivo de parâmetro padrão
comnome
um do sistema gerado.
2. restaurar o sistema, SYSAUX, e desfazer espaços de tabela para a instância auxiliar de um
suficientemente backup antigo e recuperar para o tempo desejado.
3. Restaurar os arquivos de dados da tabela contendo a tabela e recuperar com o tempo
desejado.
4. Use o Data Pump para exportar a tabela a partir da instância auxiliar e importá-lo para o alvo
instância.
5. Gota a instância auxiliar e de banco de dados.
Esta técnica tem sido sempre possível, mas no RMAN versão atual pode automatizar o
processo inteiro.

Exercício 26-2: recuperar uma tabela de um backup Neste exercício, você vai criar um espaço de
tabelamesa,
uma e backup do espaço de tabela, apagar a tabela, e recuperá-lo a partir do backup. Observe
Windows,
que, Évocê
se trabalhar
instância. pode
em precisar
necessário executar
que o banco RMANpara
de dados comestar
privilégios
no modoelevados, a fim
archivelog, de criar
e um backupa auxiliar
completo
já deve
existir.

1. Criar um espaço de tabela e uma mesa.

2. Faça backup do espaço de tabela com o RMAN.

3. Observe o número atual de alteração do sistema e soltar a mesa.

4. Recuperar a tabela com RMAN.


O comando recuperar a tabela permite que você especifique um local para o banco de dados
auxiliar.
Escolha qualquer directório adequado; neste caso (a exemplo Windows), é c: \ tmp.
substituir
SCN para oque no passo 3.

5. Observe a recuperação.
Estudar a saída do comando de recuperação. Não pule esta; é extremamente instrutiva.
você pode entender cada linha, você está no bom caminho para passar à final Oracle
Quando
Professional (OCP) exame.
Certified

6. Confirme o sucesso da operação e arrumar.

Descrever e usar Flashback Data Archive


As tecnologias de flashback discutidos até agora pode ser útil, mas todos eles têm de flashback
capacidade. A Data Archive Flashback pode ser configurado para garantir a capacidade de flash
limitada
aback uma mesa
qualquer momento, talvez a um tempo anos atrás. Ele também pode garantir que os dados são
removidos quando tem
expirado.
Arquitetonicamente, Flashback Data Archive requer um ou mais espaços de tabela, vários
cadasegmentos
mesa protegida,
para e um novo processo de fundo: o processo FBDA. O DBA deve criar o
tablespaces e os arquivos dentro deles, especificando um período de retenção para cada arquivo e,
em seguida
nomear tabelas para ser protegido por um arquivo. Os segmentos necessários serão criados
automaticamente,
eo FBDA vai começar quando necessário. Usuários e software aplicativo não estará ciente de
alterar medida em DML está em causa. Alguns comandos DDL serão afetados. Por exemplo,
qualquer
TRUNCATE será lenta, e uma queda não é possível. comandos de recapitulação de consulta (tais
como um com o AS da cláusula) irá executar com sucesso contra as versões da tabela dentro do
Seleccione
período de tempo especificado para o arquivo de proteger a tabela.
Para criar um Data Archive Flashback, primeiro criar um espaço de tabela. É tecnicamente
possível em
os arquivos paraumcriar
espaço de tabela pré-existente, mas faz sentido separá-los a partir de dados
regulares.
criar o arquivo,
Entãoespecificando a tabela, um tempo de retenção, e (opcionalmente) uma quota. Aqui
está um
exemplo:

Este comando inclui a palavra-chave DEFAULT, o que significa que ele será usado como
paraarquivo
todas as tabelas salvo indicação em contrário. O arquivo padrão pode também ser definido mais
tarde.

A cláusula QUOTA limita o espaço que o arquivo pode ocupar na tabela. Se um arquivo enche,
mais espaço pode ser adicionado quer na tabela original ou numa outra tabela. Por exemplo, este
comando irá estender o arquivo em outro espaço de tabela:
Também é possível ajustar a retenção.

Os dados são removidos de um arquivo automaticamente pelo processo de fundo FBDA, uma
que vez que é mais
o período velho indicado, mas pode ser removido manualmente antes do período expirou.
de retenção
Aqui está um exemplo:

Porque haverá frequentemente implicações legais para a capacidade de gerenciar um arquivo, ele
por éprivilégios.
protegido O privilégio de sistema ADMINISTER FLASHBACK ARQUIVO concede a
capacidade
criar, modificar,
de ou deixar cair um arquivo, bem como controlar a retenção e purga. Você deve
FLASHBACK ARQUIVO sobre o arquivo para um usuário que irá nomear tabelas a serem
conceder
arquivados.

Finalmente, para ativar a proteção de arquivo para uma tabela, use este comando:

Há três visões de dicionário de dados que documentam a configuração Flashback Data Archive:

• DBA_FLASHBACK_ARCHIVE Descreve os arquivos configurados


• DBA_FLASHBACK_ARCHIVE_TS Mostra as quotas atribuídas por arquivo por
tablespace
• DBA_FLASHBACK_ARCHIVE_TABLES Lista as tabelas para as quais o arquivamento
estiver ativado
Exercício 26-3: Crie um Data Archive Flashback Neste exercício, você vai investigar o
estruturas de um Data Archive Flashback.

1. Criar um espaço de tabela a ser utilizada para o arquivo Flashback Data.

2. Criar um Data Archive Flashback na tabela, com uma retenção de sete anos.

3. Criar um esquema para usar para este exercício e conceder-lhe o papel DBA.

4. Conceder ao usuário o privilégio necessário no arquivo.

5. Conecte como o FBDAUSER. Criar uma tabela e permitir que o Archive Flashback Data
para este
mesa.

6. Execute essas consultas para determinar os objetos criados pelo arquivo. Você pode ter que
esperar
vários minutos porque os objetos não são criados imediatamente.

7. Realizar algum DML contra a tabela protegida.

8. executar uma consulta Flashback contra a mesa protegido usando consulta padrão Flashback

sintaxe. Aqui está um exemplo:


9. Tente algumas DDLs que afetaria a mesa protegida:

Note que estes comandos toda gerar erros relacionados com a existência do arquivo e da
tabela protegida.
10. Remova a proteção do arquivo da tabela.

11. Solte a Data Archive Flashback.

12. executar novamente todos os comandos do passo 9.

Execute Flashback Database


Intermitente de volta uma base de dados inteira é funcionalmente equivalente a uma recuperação
incompleta,
ea tecnologiamas
queopermite
métodosão completamente diferentes.

Arquitectura de bases Flashback


Uma vez Flashback Database é habilitado, as imagens dos blocos alterados são copiados de tempos
em tempos
cache de buffer
a partir
do banco
do de dados para uma área de memória dentro da Área de Sistema Global
(SGA),
Este tampão
o buffer
de recapitulação
de flashback. é descarregado para o disco, para os registos de flashback, por um
novo processo
Escritor de fundo:(RVWR).
de recuperação o Não há alteração na rotina habitual de escrever alterações no log
tampão, que o LGWR então descarrega para o disco; logging de flashback é adicional a este. Ao
contrário
log, registro
da redo
de flashback não é um log de mudanças-it é um registo de imagens de blocos
completos.

EXAME TIP Ao contrário de redo logs, os logs de flashback não pode ser multiplexados e não são
arquivados.
são criados eEles
gerenciados automaticamente.

Crítico para o desempenho é que nem todas as alterações são copiados para a memória
de mudanças.
intermédiaSedetodas
recapitulação
as alterações
somente
em todos
um subconjunto
os blocos foram copiados para a memória intermédia,
depois
uso da sobrecarga
de memória em termosde
e a quantidade deentrada de disco extra / saída (I / O) necessária para limpar a
memória
seria incapacitante
intermédiapara
parao odesempenho.
disco limite de algoritmos interna que versões dos quais blocos são
colocado no buffer de recapitulação, a fim de limitar o seu tamanho e a frequência com a qual vai
encher
ser gravados
e no disco. Esses algoritmos são destinadas a garantir que não haverá desempenho
negativo
atingido quando permitindo Flashback Database; eles garantem que mesmo blocos muito ocupadas
só são registrados
raramente.
Ao realizar um flashback de banco de dados, a Oracle irá ler os logs de flashback para extrair as
versões
de cada bloco de banco de dados alterado e copiar estas versões de volta para os arquivos de dados.
Como essas
aplicado paramudanças
o banco desãodados de corrente em ordem cronológica inversa, isto tem o efeito de levar
banco de dados de volta no tempo, invertendo as gravações que o DBW n processo tem feito. Uma
o
vez quedenem
versão cada
todos
blocoosalterado é copiada para a memória intermédia retorno de chama e,
consequentemente,
não é possível a piscar
paradeosvolta
registos
parade
umflashback,
ponto exato
ele no tempo. Pode ser que um bloco foi alterado
muitas vezes
mas que log o flashback tem apenas um subconjunto dessas mudanças. Considere o caso em que o
bloco A era
mudado às 10:00 e novamente às 10:05, mas que apenas a versão 10:00 está em log o flashback.
Bloco
foi mudado
B às 10:05 e às 10:20, e ambas as versões estão em log o flashback. Todas as mudanças
sido cometido. É agora 11:00, e você quer piscar de volta para 10:15. A operação de flashback vai
têm
restaurar a versão do bloco A 10:00 e 10:05 a versão do bloco B; levará cada mudou
bloquear volta tão perto quanto possível para, mas o mais tardar, o tempo desejado. Assim, Banco de
Dados Flashback
constrói uma versão dos arquivos de dados que é um pouco antes da hora que quiser. Esta versão dos
arquivos
pode muitode bem
dadosser totalmente inconsistente. Como neste exemplo, diferentes blocos estará no
sistema diferente
alterar os números, dependendo do que aconteceu para estar disponível em log o flashback. Para
completardeo flashback, a Oracle, em seguida, usa o log de redo. Ele vai recuperar todos os blocos
processo
para o tempo
solicitada (no exato
exemplo, apenas bloquear A recuperação necessidades), sincronizando assim, todos os
mesmo
arquivosSCN. A fase
de dados final
para o é para reverter as transações que foram autorizadas no ponto, exatamente
como ocorre na última fase de uma recuperação incompleta.
Então, Flashback Database é, na verdade, uma combinação de vários processos e estruturas de
vocêdados. Primeiro,
deve alocar alguma memória na SGA (que será automática, você não pode controlar quão
o tampão é) e algum espaço em disco para armazenar os dados de retorno de chama e iniciar o
grande
processo
ativar o log
de de
RVWR
flashback. Ao fazer um flashback, a Oracle vai usar os logs de flashback para levar a
banco de dados de volta no tempo para antes da hora que quiser e, em seguida, aplicar redo logs
(usandoosqualquer
refazer arquivosarquivo
de log e refazer on-line arquivos de log são necessários) na forma usual para
recuperação
trazer os arquivos
incompleta
de dados
de para a frente para o tempo exato que você deseja. Em seguida, o banco
de dados pode
encarnação, da ser
mesma
aberto
maneira
com um como
novona sequência de uma recuperação incompleta normal.

EXAME TIP Flashback Database requer o modo archivelog eo uso de ALTER DATABASE
RESETLOGS aberta para criar uma nova encarnação do banco de dados.

Banco de Dados Flashback requer o modo de registro de arquivamento porque sem a


stream,
disponibilidade
não seria possível
de registro
converter
de arquivamento
a versão inconsistente do banco de dados produzido pela
aplicação de logs de flashback para uma versão consistente que pode ser aberto. Então, qual é o
benefício de
Flashback Database sobre recuperação incompleta, o que também requer o modo de registro de
arquivamento?
velocidade e conveniência
Está no com o qual você pode levar o banco de dados de volta no tempo.
Uma recuperação incompleta é sempre demorado porque parte do processo é uma restauração
O tempo
completa.
para uma recuperação incompleta é, em grande parte, proporcional à dimensão da base de
dados. De o tempo necessário para um flashback do banco de dados é em grande parte proporcional
contraste,
ao número
que de de
precisam mudanças
ser apoiados fora. Em qualquer ambiente normal, o volume de dados alterados será
pequena
em comparação
quandocom o volume total de dados, para um flashback deve ser muitas vezes mais rápido.
Além disso,
Banco de Dados Flashback é fácil de usar. Uma vez configurado, o registo de recapitulação irá
prosseguir completamente
autônoma, e um banco de dados pode ser piscou de volta facilmente com um comando. Não há
nenhum do de erro inerente em um tradicional restaurar e recuperar operação.
possibilidades

Configurando Flashback Database


Configurando um banco de dados para permitir Flashback Database vai exigir tempo de inatividade,
se no
já o banco
modode dedados
registro
nãodeé arquivamento. Caso contrário, é uma operação online. Para configurar o
Flashback
Siga esses Database,
passos:

1. Certifique-se que o banco de dados está no modo de registro de arquivamento.


Modo de registo de arquivo é um pré-requisito para permitir Flashback Database. Confirmar
consultar a vista V $ DATABASE.
isto

2. Definir uma área de recuperação rápida.


A área de recuperação rápida é o local para os logs de flashback. Você não tem controle
sobre do
outro elesque a criação do diretório rápida Área de Recuperação e limitar seu tamanho. É
controlada com de instância: DB_RECOVERY_FILE_DEST especifica o diretório de
dois parâmetros
e DB_RECOVERY_FILE_DEST_SIZE restringe a quantidade máxima de espaço em bytes
destino,
que pode levar até. Lembre-se que a Área de Recuperação Rápida é utilizado para outros
fins do
logs de que
flashback,
apenase ele terá de ser dimensionado de forma adequada. Aqui está um
exemplo:

3. Ajuste o alvo de retenção de recapitulação.


Isto é controlado pelo parâmetro de instância DB_FLASHBACK_RETENTION_TARGET,
que é em minutos, e o padrão é um dia. O espaço de log de flashback é reutilizado em um
forma circular, com dados mais antigos sejam substituídos por dados mais recentes. Esse
parâmetro
Oracle parainstrui
manter os dados de flashback para um determinado número de minutos antes de
substituí-lo:
É somente um alvoa(quatro
subdimensionado, Oracle horas no exemplo
pode não ser capazanterior),
de manter e se a área
a ele. deem
Mas, recuperação
princípio,rápida
você é
deve ser
voltar para
capaz
a qualquer
de piscar
momento dentro desse alvo.
4. Ative o log de flashback.

Isto irá iniciar o processo de RVWR e atribuir uma memória intermédia de recapitulação na
PIG. O processo
inicialização será automática a partir de agora.
5. Abra o banco de dados.

Registro de imagens de blocos de dados a partir do cache de buffer do banco de dados para o
buffer dea flashback
ativado será
partir de agora.

Monitoramento Flashback Database

O alvo de retenção de flashback é apenas uma meta-não há garantia de que você realmente pode
aflash
um back
tempo dentro dele. Por outro lado, você pode ser capaz de piscar de volta para além do alvo. a
período de flashback é uma função da quantidade de flashback informações de log está sendo gerado
possível
segunda e quanto espaço está disponível para armazenar essas informações antes de o substituir com
por
Dados recentes.
mais
O nível mais básico de monitoramento de flashback é para confirmar que ele está realmente
habilitado.

No Unix, você pode ver o processo RVWR como um processo do sistema operacional; no
Windows
outro segmentoserá
dentro ORACLE.EXE.
Para monitorar a capacidade de flashback atual e estimar o espaço necessário para logs de
flashback
atender paraconsultar a visão V $ FLASHBACK_DATABASE_LOG.
seu alvo,
V $ FLASHBACK_DATABASE_STAT dá uma visão histórica da taxa de disco I / O para o
arquivos de dados, os arquivos de log redo online, e os arquivos de log de flashback.
Na Figura 26-6 , a primeira consulta mostra a configuração para o alvo de retenção em minutos,
o parâmetro
tal como exemplo
especificado
DB_FLASHBACK_RETENTION_TARGET;
por este é o padrão de um dia.
Depois, há o espaço real que está sendo absorvido pelos arquivos de log de flashback, bem como o
tempo
que os exato para
logs de flashback pode levar o banco de dados de volta. Se a Área de Recuperação Rápida é
de forma adequada e o alvo de retenção é realista, então haverá uma relação razoável entre
dimensionada
o tempo mostrado nesta consulta ea hora actual, o objectivo de retenção.

Figura 26-6 Monitoramento Flashback Database

A segunda consulta mostra o preço que está pagando para permitir Flashback Database em
bytes de I / de
termos O que o mesmo exige por hora. A linha superior será sempre uma hora incompleta, até o

hora atual. No exemplo, a base de dados foi gerando cerca de 10 MB de dados de flashback por hora
durante a noite, com taxas mais elevadas na tarde da noite e manhã. O impacto desta no desempenho
terá de ser discutido com os administradores do sistema, tendo em conta se o sistema é I / O
ligado ou não. Para comparação, o ponto de vista também mostra o I / O relacionado com a
actividade
vista terá uma
normal
linhadepor
base
hora.
de dados. o
O tamanho do buffer de flashback é fora do controle do DBA, mas para ver o tamanho atual,
consultar
você pode
a visão V $ sgastat.

Usando Flashback Database


Flashback Database pode ser usado a partir do SQL * Plus ou RMAN. Qualquer que seja a
ferramenta
método é o que
mesmo.
você escolher para usar, o

1. Desligue o banco de dados.


2. Monte o banco de dados.
3. flash de volta a um tempo, um SCN, ou um número de sequência de registo.
4. Abra o banco de dados com RESETLOGS.

Desde que todos os logs de arquivo necessários estão disponíveis, uma operação de flashback
procederá automaticamente.
completamente

Flashback com o SQL * Plus


O SQL * Plus sintaxe de flashback vai aceitar um timestamp ou um argumento de número de
alteração
Se você não
do tem
sistema.
certeza exatamente o tempo que você precisa para voltar para (você vai ser feliz se
você sabe oexato ou SCN), você pode ter várias tentativas através da combinação de flashback com a
timestamp
recuperação.
Considere este cenário: É 20 de dezembro de 2014. Em aproximadamente 10:00 AM um DBA
júniorimportante
esquema cai um no banco de dados de produção. Isto é terrivelmente fácil de fazer; talvez isso
durante uma atualização de software em um sistema de desenvolvimento quando conectado ao banco
aconteceu
de dados
por engano.
de Oprodução
erro é notado dentro de 10 minutos, mas é um grande banco de dados, ocupado em
um call
para receber
center,
ordens,
usadoe cada segundo perdido vai custar dinheiro. O primeiro passo é o de desligar o
banco de dados.

Não há nenhum ponto em usar qualquer outro tipo de desligamento; todos os trabalhos em
andamento
de qualquer vai sereperdida
maneira, você precisa minimizar o tempo de inatividade. Em seguida, tomar o banco
de dados de volta às 10:00 da seguinte forma:

Note-se que ao contrário recuperar banco de dados até que o tempo, esse comando é sensível a
NLS
configurações para o formato timestamp. Enquanto no modo somente leitura, você pode executar
uma esquema.
caiu consulta contra
Se você
o descobrir que o esquema ainda está lá, talvez você possa recuperar um pouco
dados do usuário.
mais

Você executar sua consulta teste novamente, e você descobre que depois de se recuperar mais 2
esquema
minutos
estádedesaparecido.
dados, os Deve ter caído 10:00-10:02. Assim, você dividir a diferença.
Se o esquema não está lá agora, flash back alguns segundos antes. Se ele estiver lá, faça alguns
recuperação.
segundos Você
de pode repetidamente questão de flashback e recuperar comandos até encontrar o
tempotestes,
quer, que você
executando consultas enquanto em modo somente leitura. Quando você chegar a um
ponto quecom,
satisfeito vocêexecute
está um encerramento definitivo e aberto com RESETLOGS para criar uma nova
encarnação
banco de dados
do que pode ser aberta para uso normal.

Este método irá minimizar a perda de dados, e pode demorar apenas alguns minutos. um
incompleta
recuperação pode levar horas, especialmente se você precisa ter várias tentativas antes de chegar à
Tempo.
direita

DICA Muitas máquinas de nomes locais seguintes convenções como sun1p1 para o servidor de
produção,
sun1d1 para o servidor de desenvolvimento, sun1t1 para o servidor de teste, e assim por diante. As
váriaspode
casos basester
deexatamente
dados e os mesmos nomes. Obter errado chave, e está ligado ao mal
base de dados. Sempre verifique onde você está antes de fazer qualquer coisa.

Flashback com o RMAN


Dentro do ambiente Recovery Manager você tem três opções: você pode piscar de volta a um tempo,
a um ou para um número de sequência de registo, tal como nestes exemplos:
SCN,

Além das pequenas mudanças na sintaxe, RMAN de flashback é o mesmo que o SQL * Plus
particular,
recapitulação.
você pode
Dentro
usar a mesma técnica de aplicação repetida de flashback e recuperação até que
encontrar o ponto ideal para abrir o banco de dados.
você

Exercício 26-4: Use Flashback Database Ativar de flashback banco de dados. Simular um erro do
usuário
flash back
e o banco de dados antes da operação.

1. Conecte-se ao banco de dados como usuário SYSTEM e permitem de flashback banco de


dados.

2. Observe o tempo e simular um erro.

3. recuperação Tentativa utilizando várias técnicas. Substituir o tempo a partir do passo 2.

4. Por que essas técnicas não aplicável?


5. Recuperar a tabela usando de flashback banco de dados.

Broca Two-Minute
Descrever as tecnologias Flashback
• Flashback é para corrigir o erro do usuário (ou DBA).
• Os danos físicos requer o uso de restaurar e recuperar.

Use Flashback para consultar dados


• Flashback Query depende da utilização dos dados de desfazer.

• Flashback Query Basic usa uma instrução SELECT modificado ou DBMS_FLASHBACK.


• Também é possível flash back de uma transação ou todas as alterações em uma tabela ou
conjunto de tabelas.
Realizar operações de Flashback Table
• Flashback Gota se baseia no fato de que, por padrão, os objetos são renomeados quando caiu.
• Controle a disponibilidade para Flashback Gota com o parâmetro de instância RECYCLEBIN
e substituir o padrão com a palavra chave de purga.
• Todos os objetos dependentes são recuperados com a exceção de restrições de chave
estrangeira.
Executar recuperação Tabela de Backups
• RMAN pode extrair uma tabela de um backupset.
• A bomba de dados é utilizado para transferir a mesa a partir de um banco de dados auxiliares
para o banco de dados de alvo.
Descrever e usar Flashback Data Archive
• Flashback Data Archive não está disponível por padrão. Deve ser explicitamente configurado
e habilitado para tabelas nomeados.
• Um arquivo retém os dados por um período definido, removê-lo permanentemente uma vez
que
passado.
esse período tem
• Consultar o arquivo com o habitual sintaxe Flashback Query.

Execute Flashback Database


• Flashback Database não está habilitado por padrão. Uma vez ativado, ele se baseia em uma
estrutura
(O tampão
de memória
de recapitulação), uma estrutura do disco (os logs de flashback), e um processo de
fundo (o
RvwÛR).
• Flashback Database é funcionalmente equivalente a uma recuperação incompleta.

Auto teste
1 . Qual das seguintes tecnologias de flashback usar dados da tabela de undo atual?
(Escolha todos os que se aplicam.)
A. Tabela Flashback
B. Flashback Transaction Query
C. Flashback Query
D. Flashback Versão consulta
E. Flashback Gota
F. Flashback Database
G. Flashback Data Archive

2 . Qual dos seguintes parâmetros afetam diretamente o comportamento eo bom funcionamento


do Tabela Flashback? (Escolha todos os que se aplicam.)
A. DB_RECOVERY_FILE_DEST
B. UNDO_MANAGEMENT
C. DB_RECOVERY_FILE_DEST_SIZE
D. UNDO_TABLESPACE
E. UNDO_RETENTION
3 . Quando usando as versões ENTRE cláusula para Flashback Versão de consulta, o que você
nãousar
podepara restringir o número de linhas retornadas pela consulta? (Escolha a melhor
resposta.)
A. A timestamp
B. Um SCN
C. Uma cláusula ONDE em qualquer coluna na tabela
D. Um garantida ponto de restauração
4 . Qual das seguintes afirmações é verdadeira sobre a lixeira? (Escolha a melhor resposta.)
A. Quando você soltar um objeto, o espaço alocado pelo objeto não é refletida
imediatamente
em DBA_FREE_SPACE e conta contra a cota do usuário.
B. Quando você soltar um objeto, o espaço alocado pelo objeto é imediatamente refletida no
não DBA_FREE_SPACE e não contam contra cota do usuário.
C. Quando você soltar um objeto, o espaço alocado pelo objeto é imediatamente refletida
no DBA_FREE_SPACE mas ainda conta contra cota do usuário.
D. Quando você soltar um objeto, o espaço alocado pelo objeto não é refletida
imediatamente
em DBA_FREE_SPACE e não conta contra a cota do usuário.
5 . O CAN_UNDROP coluna é definida como SIM para um objeto na DBA_RECYCLEBIN
vista.
Qual das seguintes é verdadeiro para este objeto? (Escolha todos os que se aplicam.)
A. O objecto é uma tabela.
B. O objeto pode ser undropped pelo usuário que possui o objeto.
C. O objecto pode ser undropped por qualquer utilizador com privilégios de DBA.
D. O objecto não possui objetos dependentes na lixeira.
E. objeto existente Não com o mesmo nome existe fora da lixeira.
6 . Qual das seguintes colunas não é na visão de dicionário de dados
FLASHBACK_TRANSACTION_QUERY? (Escolha a melhor resposta.)
A. UNDO_SQL
B. XID
C. OPERAÇÃO
D. ORA_ROWSCN

7 . O que acontece com as linhas em FLASHBACK_TRANSACTION_QUERY quando parte


do transação não está mais disponível na tabela de undo? (Escolha a melhor resposta.)
A. O número de identificação do usuário substitui o nome de usuário na coluna
LOGON_USER.
B. coluna a operação contém o valor desconhecido.
C. O número objecto substitui o nome da tabela na coluna TABLE_NAME.
D. coluna a operação contém o valor disponível.
E. Todas as linhas para a transação não estão mais disponíveis no
FLASHBACK_TRANSACTION_QUERY.
8 . Que métodos você pode usar nos a partir de cláusula de uma operação de Flashback Table
paratempo
especificar
no passado
o para o qual você deseja recuperar a mesa? (Escolha todos os que se
aplicam.)
A. A timestamp
B. Uma condição de filtro na cláusula ONDE
C. Uma SCN
D. O ponto de restauração
E. A garantida ponto de restauração
9 . Você criar a tabela VAC_SCHED na segunda-feira com um índice de chave primária; o SCN
logoa criação
após da tabela foi 5680123. Na quarta-feira, você deixa cair o índice. Na quinta-feira,
acidentalmente excluir a maioria das linhas no banco de dados. Na sexta-feira, você executar
você
este comando:
Você definiu retenção de undo a garantia de uma semana. Qual é o resultado da execução
comando? (Escolha a melhor resposta.)
deste
A. A tabela é recuperado para SCN 5680123 sem o índice.
B. A tabela é recuperado usando os dados na tabela de undo, e o índice é recriado
usando o índice caiu na lixeira.
C. A tabela é recuperado, e todas as linhas excluídas na quinta-feira são restaurados usando
arquivados
e refazer on-line arquivos de log.
D. O comando falha porque FLASHBACK TABLE não pode recuperar uma tabela antes de
um mudar para um objecto dependente.
10 . Qual das seguintes condições irá impedir a recuperação de uma partição de tabela ou tabela
usando
recuperação de tabela de backups? (Escolha todos os que se aplicam.)
A. O banco de dados está em modo de somente leitura.
B. COMPATÍVEL é definido para 12,1.
C. Você está recuperando uma tabela de propriedade da SYS na tabela USERS.
D. A tabela é particionado, e os índices são em uma partição diferente.
E. A base de dados está em modo NOARCHIVELOG.
11 . Identificar a verdadeira declaração sobre Flashback Data Archive. (Escolha a melhor
resposta.)
A. Você não pode especificar mais de um Flashback Data Archive.
B. Se você não especificar uma cláusula de retenção para uma Data Archive Flashback,
vocêespecificá-lo
deve ao atribuir uma tabela para o Data Archive Flashback.
C. O parâmetro QUOTA é necessária quando a criação de um Arquivo de Dados Flashback
paraquantidade
limitar a de espaço usado na tabela.
D. Um Flashback Data Archive pode existir em vários espaços de tabela, incluindo desfazer
tablespaces
e espaços de tabela temporários.
12 . Qual das seguintes views de dicionário de dados contém uma lista das tabelas usando um
Flashback
Arquivo de dados? (Escolha a melhor resposta.)
A. DBA_FLASHBACK_ARCHIVE_TABLES
B. DBA_FLASHBACK_ARCHIVE
C. DBA_FLASHBACK_ARCHIVE_TS
D. DBA_FLASHBACK_DATA_ARCHIVE_TABLES
13 . Qual dos seguintes parâmetros de inicialização não é necessário para configurar Flashback
operações de banco de dados? (Escolha a melhor resposta.)
A. DB_RECOVERY_FILE_DEST_SIZE
B. UNDO_RETENTION
C. DB_FLASHBACK_RETENTION_TARGET
D. DB_RECOVERY_FILE_DEST
14 . Qual é a diferença entre um ponto de restauração regular e um ponto de restauração
garantido?
(Escolha todos os que se aplicam.)
A. Um regular ponto de restauração não exige que uma área de recuperação rápida ser
configurado.
B. A garantida ponto de restauração pode ser usado somente com Flashback Database.
C. Um garantida ponto de restauração não pode ser descartado.
D. Um garantida ponto de restauração nunca vai ser envelhecido fora do controlfile.
E. logging Você deve ter um flashback activo para usar garantida pontos de restauração.

Respostas de auto-teste
1. A , B , C , e D . Todas essas tecnologias contar com os dados Desfazer na tabela de
undo.
E , F , e G estão incorrectos. Flashback Gota confia na lixeira, Banco de Dados
depende
Flashback
de logs de flashback na Área de Recuperação Rápida e Flashback Data Archive
tabelas de histórico com base em uma tabela permanente em espaços de tabela designada
depende
para dados de flashback
arquivos.
2. B , D , e E . Para Flashback Query, Flashback Table, Flashback Transaction Query, e
Flashback Versão Query, você deve ter o gerenciamento automático de desfazer
configurado,
tabela definido,
umae um
undovalor de retenção de undo para especificar quanto tempo os dados de
desfazer está retido em
a tabela de undo.
A e C são incorrectas. Os parâmetros db_recovery_file_dest e
DB_RECOVERY_FILE_DEST_SIZE são usados para configurar Flashback Database, não
Flashback Query.
3. D . Pontos garantidos restaurar são usados apenas em cenários de recuperação, como
BaseFlashback
de dados.
A , B , e C são incorrectas. Todos os três podem ser usados. Você pode restringir os
Flashback
resultados
Versão
de um
Query by SCN ou timestamp. Você pode ainda filtrar as linhas usando um
ONDE cláusula sobre as colunas da tabela.
4. C . Espaço de um objeto caiu é imediatamente refletida em DBA_FREE_SPACE mas
ainda contra cota do usuário até que seja purgado da lixeira.
acusações
A , B , e D são incorrectas. Todos os três refletir declarações incorrectas sobre o espaço
gestão
livre
e gerenciamento de cota para objetos na lixeira.
5. A , B , e C . Objetos de tabela na lixeira pode ser undropped, e eles podem ser
undropped pelo proprietário original ou um usuário com privilégios de DBA.
D e E são incorrectas. D é incorrecta porque uma tabela na lixeira pode ou não pode
ter objetos dependentes na lixeira. E está incorreta porque a sintaxe undrop faz
permitir a recuperação de uma mesa, mesmo se existir um objeto com o mesmo nome
aoriginal
lixeira.como um objecto em
6. D . ORA_ROWSCN é um pseudocoluna que está disponível para todas as tabelas e
SCNcontém
passadoo que modificados ou criados a linha.
A , B , e C são incorrectas. UNDO_SQL é o SQL que você pode usar para reverter a
a linha,
mudança
XID épara
o ID da transação, ea operação é a operação DML executadas.
7. B . A coluna OPERAÇÃO em FLASHBACK_TRANSACTION_QUERY contém
DESCONHECIDO por não mais na tabela de undo dados.
A , C , D , e E são incorrectas. A está incorreta porque o ID do usuário substitui o nome
de usuário
a coluna em
LOGON_USER quando o utilizador já não existe. C é incorrecta porque o objecto
número substitui o nome da tabela na coluna TABLE_NAME quando a tabela não
existe. D é incorrecta porque a coluna OPERAÇÃO contém DESCONHECIDO, não
INDISPONÍVEL, quando a informação já não está disponível na tabela de undo. E é
incorreto porque parte de uma transação ainda pode estar disponível na tabela de undo.
8. A , C , D , e E . Você pode usar os a partir de cláusula com o TIMESTAMP ou
paraqualificador
especificar uma
SCNhora para a qual você deseja recuperar a mesa. Além disso, você pode
ponto desão
restauração
especificar
também úteis em ou
um de um ponto
operações de restauração
de banco garantida para
de dados Flashback para garantir
Tabela Flashback.
que os logs de
Garantido
flashback
na pontos
Área desão de restauração
Recuperação
mantidos Rápida, pelo menos, tanto para trás como o mais antigo garantida
pontoB de restauração.
é incorrecta. Você não pode usar uma cláusula WHERE para especificar o tempo no
operação
passado
TABLE
para oFLASHBACK.
9. Um . A tabela é recuperado ao seu estado original logo após a criação e sem índice.
B , C , e D estão incorrectos. B está incorreta porque FLASHBACK tabela não
alavancar a lixeira. C é incorrecta porque a tabela é recuperado na forma do SCN, mas não
rolou para a frente. D está incorreta porque um índice caiu não afeta a capacidade de
recuperação de um
mesa; no entanto, uma alteração na estrutura da própria tabela impede uma operação volta
ao passado
antes da mudança DDL para a mesa.
10. A , C , e E . Para executar com êxito a recuperação da tabela de backups (TRFB), o
devebanco
estar em
de dados
modo de leitura e gravação, você não pode recuperar objetos pertencentes a
SYS, independentemente
tablespace em que residem,deeo
qual
banco de dados deve estar no modo ARCHIVELOG. Além
disso, o compatível deve ser ajustado para 12,0 ou superior, e você não pode recuperar
parâmetro
objetos
o sistema ou SYSAUX tabela.
B e D são incorrectas. O parâmetro compatível deve ser de pelo menos 12,0, ea mesa
para ser recuperada não necessita de ser contida numa única tabela ou grupo de áreas de
tabelanecessário
seria como ele com o ponto de tabela tradicional no tempo de recuperação (TSPITR).
11. B . Você quer deve especificar um período de retenção padrão para o Flashback Data
si ouArchive
especificar um período de retenção ao adicionar a tabela para o arquivo.
A , C , e D estão incorrectos. A está incorreta porque você pode ter vários Flashback
Data C está incorreta porque o parâmetro de cota é necessário apenas se você quiser
Arquivos.
limitar
a quantidade de espaço usado pela Data Archive Flashback na tabela; caso contrário, ele
pode
crescer para usar todo o espaço disponível na tabela. D está incorreta porque você pode criar
Flashback Arquivos de dados só em permanentes espaços de tabela, não desfazer.
12. Um . DBA_FLASHBACK_ARCHIVE_TABLES contém uma lista de tabelas usando
Flashback
atualmente
Arquivo
um de Dados.
B , C , e D estão incorrectos. B é incorrecta porque DBA_FLASHBACK_ARCHIVE
contém uma lista de arquivos, mas não as tabelas dentro. C é incorrecta porque
DBA_FLASHBACK_ARCHIVE_TS contém o arquivo a tabela de mapeamento. D é
incorreto porque DBA_FLASHBACK_DATA_ARCHIVE_TABLES não é um dado válido
vista dicionário.
13. B . O UNDO_RETENTION parâmetro de inicialização é necessário para outro de
recursos,
flashback
mas não para Flashback Database.
A , C , e D estão incorrectos. Os parâmetros DB_RECOVERY_FILE_DEST_SIZE e
DB_RECOVERY_FILE_DEST são necessários para definir a localização eo tamanho do
Área de Recuperação e DB_FLASHBACK_RETENTION_TARGET é necessária para
Jejum
definirsuperior
limite um desejado para a janela de recuperação do Flashback Database.
14. A e D . Um ponto de restauração regular não requer uma área de recuperação rápida, e
envelhecido
pode serfora do controlfile; um ponto de restauração garantido nunca vai ser
aenvelhecido
menos que fora
seja do
explicitamente
controlfile descartado.
B , C , e E são incorrectas. B está incorreta porque um garantida ponto de restauração
pode ser para outros recursos de flashback, e não apenas Flashback Database. C é
referenciada
incorrecta
você pode porque
soltar explicitamente qualquer tipo de ponto de restauração. E é incorreta porque
você podepontos
garantida definirde restauração sem o registo de flashback habilitado; no entanto, você
aindade
Área deve ter um
Recuperação rápida habilitado.
CAPÍTULO 27

Duplicação de um banco de dados

Objetivos do exame
• 63.1.16.1 Descrever e usar transportáveis Tablespaces e Bases de Dados
• 63.1.17.1 Escolha uma técnica para duplicar um banco de dados
• 63.1.17.2 Criar um banco de dados duplicados baseado-Backup
• 63.1.17.3 Duplicar um banco de dados baseado em uma instância de execução
O recurso de tabela transportável pode copiar rapidamente um ou mais espaços de tabela de um
bancosem
outro de dados
usar opara
muito mais demorado de exportação / importação. Uma extensão para transportável
tablespaces, bancos de dados transportáveis, torna mais fácil para criar um novo banco de dados e
mover todosdo
tablespaces ossistema
não- para o novo banco de dados. Relacionado a isso são técnicas para duplicar
um todo
base de dados. Se você deve ter seu banco de dados de código aberto em uma base contínua, você
pode clonar
banco seu enquanto ele estiver aberto e disponível para os usuários. Porque você está copiando
de dados
a partir
não precisa
de uma
de umbase
Recovery
de dadosManager
aberta, você
intermediário (RMAN) backup, o que pode economizar muito
tempo eem disco.
espaço

Descrever e usar transportáveis Tablespaces e


Bases de dados
Há muitas maneiras de mover dados de um banco para outro, como links de banco de dados, Data
exportação / importação, e espaços de tabela transportáveis. Para grandes volumes de dados, usando
Pump
espaços de tabela é de longe o método mais rápido. Em poucas palavras, você exportar apenas os
transportável
metadados
o espaço depara
tabela
os usando
objetos oem
Data Pump, copie os arquivos de dados que compõem o espaço de
tabela para
banco o destino
de dados e importar os metadados do espaço de tabelas no banco de dados de destino.
plataformas,de
arquiteturas mesmo
hardware
com diferentes são candidatos para espaços de tabela transportáveis.

Configurando transportáveis Tablespaces


O recurso de transporte de tabela tem muitos usos, tais como a distribuição rapidamente dados de um
conjunto de
armazém para
dados
mercados de dados em outras bases de dados ou a conversão de uma base de dados
inteira Durante
outro. a partir de uma plataforma
o transporte deplataformas, as plataformas de origem e de destino devem estar
entre as
lista da Oracle de plataformas suportadas. Todas as plataformas de servidores de 64 bits comumente
em
usados em
SPARC, ouexecução
hardwareno PowerPC
Intel, são suportados.

Determinar requisitos de compatibilidade


A Oracle compatibilidade recurso de banco de dados é controlado pelo parâmetro de inicialização
que ativa outransportáveis,
compatível,
tablespaces desativa o uso estas
de determinados recursos
são características norequerem
que banco deestruturas
dados. Para efeitos dedentro
específicas discussão
dos
arquivos de
exemplo, se dados.
você deseja
Para atualizar para o Oracle Database 12 c do Oracle Database 11 g R2, você
pode querer compatível Para 11.2.0 para um curto período de tempo. Assim, você pode fazer o
para definir
downgradeproblemas
encontrar para a versão
na produção,
11 g R2 se
sem
você
a necessidade de uma restauração e recuperação de backup
porque o de arquivo de dados para a versão de 12 c não são utilizáveis na versão 11 g R2. Mesmo
formatos
aqueatualização
você podeemterum
testado
servidor de backup, problemas pode não surgir durante algum tempo.
Quando você cria um conjunto de tabelas transportável, a Oracle determina a compatibilidade
nívelmínimo
de banco de dados destino e armazena este valor nos metadados para o conjunto de tabela
transportável.
Começando com o Oracle Database 11 g , você sempre pode transportar uma tabela para outro banco
ademesma
dados oucommaior nível de compatibilidade, independentemente da plataforma alvo.

TIP Independentemente das semelhanças ou diferenças de plataformas de hardware entre a origem


bancos de dados de destino, ambos devem estar usando o mesmo conjunto de caracteres.
eo

Em outras palavras, mesmo se você estiver executando o Oracle Database 12 c com conjunto
vocêcompatível
pode transportar
para 11.0.0,
em um espaço de tabela a partir de um banco de dados em uma plataforma
adiferente
10.0.0. que tem conjunto compatível

Determinando os requisitos Endian


recurso de tablespace transportável da Oracle pode exigir uma etapa extra, dependendo do
plataforma de hardware. Por exemplo, em sistemas baseados em processadores Intel, o valor 2 é
subjacente
armazenado
0x0200. Estacomo
ordenação de bytes é conhecido como little-endian porque o byte menos significativo é
o primeiro.um
contraste, Dentro
grande endian sistema armazena bytes, a fim de mais de byte menos significativo
significativa.
Portanto, em uma plataforma de hardware big-endian, como o Oracle SPARC ou IBM PowerPC, o
évalor
armazenado
2 como 0x0002. Compreensivelmente, uma conversão deve ser feito em coluna de
dados transportados
plataformas com diferentes
entre formatos endian.
Para determinar os formatos endian de todas as plataformas suportadas, você pode consultar a
vistadinâmica
do desempenho V $ TRANSPORTABLE_PLATFORM, como neste exemplo:
Esta consulta também mostra todas as plataformas suportadas para espaços de tabela
ENDIAN_FORMAT
transportáveis. Se éodiferente,
valor de então você deve usar comandos do RMAN no banco de dados de
origem
para converter
ou de destino
os arquivos de dados para o formato endian do banco de dados alvo. Os comandos do
RMAN
ser discutido
requerida
mais adiante neste capítulo. Para determinar o formato endian de sua plataforma, você
pode
V $ DATABASE
participar a V $ TRANSPORTABLE_PLATFORM.

Para converter arquivos de dados de um formato endian para o outro, use o comando Converter
Neste
RMAN.
exemplo, executado em um sistema Windows, irá ler um arquivo de dados e escrevê-lo para
um novoapropriado
formato nome comendian
um para a plataforma chamado:

O arquivo convertido, então, ser copiados manualmente para o sistema de destino.


podemAlternativamente,
ser copiados utilizando
arquivos procedimentos no pacote DBMS_FILE_TRANSFER. Isto irá detectar
aregras endian para as plataformas de origem e destino e converter os arquivos que são copiados.

O Tablespace Conjunto de Transporte deve ser auto-suficiente


Todos os objetos nos espaços de tabela a ser copiada de um banco para outro deve ser completa. Se o
objeto inclui referências a outros objetos, todos eles devem ser incluídos. O procedimento fornecido
DBMS_TTS pode testar para isso. Exemplos de possíveis violações desta regra seriam particionado
tabelas
que são distribuídos por vários espaços de tabelas e índices que são significado a menos que a tabela
que se referem também está incluído.
de

transportar Tablespaces
Se você usar comandos SQL ou Cloud Control para o transporte de um espaço de tabela, as etapas
gerais são a
mesmo:

1. Faça o espaço de tabela (ou espaços de tabela) somente leitura no banco de dados origem.
2. Use o Data Pump exportação para extrair os metadados de tabela do banco de dados fonte.
3. Se o alvo não tem o mesmo formato endian, converter os arquivos de dados. Isso pode ser
feito em
a origem ou plataforma de destino.
4. Copie o arquivo de arquivos de dados de espaços de tabelas e despejo de metadados a partir
da fonte para o destino.

5. Use o Data Pump para importar metadados de tabela para a tabela de destino.
6. Faça a tabela (ou espaços de tabela) ler-escrever sobre a fonte e bancos de dados de destino.

Passo 4 na lista anterior podem ser realizados com o pacote DBMS_FILE_TRANSFER. este
contém procedimentos que podem copiar arquivos entre sistemas de arquivos, entre grupos de discos
ASM, entre
sistemas e grupos
arquivo
de discos ASM, e de um servidor para outro. Uma vantagem particular no
do transporte de tabela é que, se a conversão endian é necessária quando a cópia de um servidor para
contexto
outro, a procedimentos DBMS_FILE_TRANSFER GET_FILE e put_file detectar este e
realizar a conversão ao copiar os arquivos.

Exercício 27-1: transportar um Tablespace Utilizando SQL e PL / SQL Neste exercício, você vai
simular o transporte de uma tabela através da criação de uma tabela, copiando-lo, deixando-o cair e
de volta para o banco de dados. Você vai precisar para se conectar com privilégios SYSDBA.
transportá-lo
1. Criar um espaço de tabela e alguns objetos dentro dele. Nomeie o arquivo de dados (neste
nome
caso, um do arquivo; ajustar isso de acordo para Linux) em vez de usar Oracle Managed Files
Windows
(OMF).

2. Verifique a tabela auto-consistência e consultar o transporte violações ver.

A vista é preenchida cada vez que a verificação for executada, relatando quaisquer questões
como dependente
objetos em outros espaços de tabela. Se não houver linhas, em seguida, o transporte pode
prosseguir.
3. Tornar o espaço de tabela somente leitura.

4. Use o utilitário expdp para exportar os metadados descrevendo o espaço de tabela e seu
conteúdo. Você
terá de fornecer um nome de usuário ea senha de um usuário altamente privilegiado, como o
O arquivo de despejo vai para o diretório DATA_PUMP_DIR padrão.
sistema.

5. Solte a tabela (sem excluir o arquivo de dados).

6. Renomeie o arquivo de dados para tornar a simulação mais realista. Exemplos para Windows
e Linux
são as seguintes, respectivamente:

7. Transporte a tabela na base de dados utilizando o utilitário impdp a partir do sistema


operativo
linha de comando. Este exemplo usa um caminho de Linux para o arquivo de dados:

8. Verifique se a tabela foi transportado dentro e torná-lo utilizável.

Transportar um banco de dados


É possível transportar um banco de dados inteiro. Conceptualmente, a técnica é a mesma tabela
Transporte: Você copia os arquivos de dados, convertendo-se necessário ter em conta plataforma
variações. A diferença é que não há nenhuma base de dados destino preexistente no qual importar o
tablespace transportado. Uma limitação desta técnica é que ela não pode funcionar entre plataformas
diferente endian-ness. O método de conversão pode lidar com as diferenças nas estruturas lógicas
com
entre
implementações Oracle em diferentes plataformas, mas não a diferença física de endian-ness.
Estas são as etapas de alto nível:

1. Abra o banco de dados fonte no modo de somente leitura.


O banco de dados deve ser consistente, sem transações incompletas, e todos os arquivos de
dados deve sercom o mesmo número de mudança de sistema (SCN). Para garantir este
sincronizados
estado,
deve serodesligado
banco de corretamente
dados e, em seguida, aberto no modo somente leitura. Note que
não é possível
aberto no modo somente leitura após uma abortar o desligamento.
2. Copie o conjunto completo de arquivos de dados.
A decisão deve ser tomada sobre a possibilidade de converter os arquivos no sistema de
origem ou
sistema de da
destino. Para a conversão da fonte, o processo de conversão irá criar um novo
conjunto de arquivos no novo formato, que depois serão copiados para o destino. Para a
conversão
o destino, eles
em serão copiados antes da conversão. Note que o controlfile e on-line
arquivos de log não pode ser copiado, porque novos será criado no destino.
3. converter os arquivos para o formato de destino.
RMAN irá efectuar a conversão. Se a conversão for na fonte, o RMAN usará
canais contra a instância de origem que executa para escrever os arquivos convertidos. Se a
deve ser no destino, isso deve ser feito após o passo seguinte.
conversão
4. Iniciar uma instância do banco de dados de destino.
Uma instância requer um arquivo de parâmetros e um arquivo de senha. Uma vez que estes
instância pode
são criados, o ser iniciado no modo NOMOUNT. É possível neste momento para converter
arquivos de dados, se isso ainda não tenha sido feito.
o
5. Criar um controlfile para a instância de destino.
O comando CREATE CONTROLFILE irá especificar os nomes e locais de todo o
arquivos de dados convertidos, as características de redo log on-line do banco de dados de
destino,
novo nome
eo de banco de dados. Em seguida, ele irá montar o controlfile recém-criado.
6. Abra o banco de dados destino com RESETLOGS.
Inicializar o log redo online com alter database open resetlogs.
Este processo pode ser realizado manualmente, mas RMAN fornece uma instalação que
pode ajudar a: ocomando. Este comando, a ser executado contra a fonte, gera scripts para as
CONVERTER
3 e 5 e gera um arquivo de parâmetro para a etapa 4. Existem variações, dependendo se
etapas
a conversão deve ser feita na origem ou no destino.

Exercício 27-2: Gerar Scripts de transporte Banco de Dados Neste exercício, gerar os scripts
para
transporte de um banco de dados para uma outra plataforma. Assume-se que a plataforma de origem
(e, por conseguinte
plataforma de destino) é little-endian.

1. Abra o banco de dados em modo de somente leitura.


Usando o SQL * Plus, conecte AS SYSDBA.

2. Gerar os scripts para a conversão no destino.


Usando RMAN, conectado como SYS, execute este comando:

O caminho sugerido assume que a fonte é um sistema Windows. Estudar a saída do


comando. É muito instrutivo.
3. Estude os scripts gerados.
No diretório nomeado, você vai encontrar os scripts crdb_sundb.sql e cnvt_sundb.sql e uma
pfile. Estudá-las cuidadosamente. Eles teriam, é claro, precisa edição substancial para
coincidirdecom
sistema arquivo
o de destino.
4. Prepare-se para o transporte com a conversão da fonte.
Este comando (que assume um sistema de origem Linux) irá escrever arquivos de dados
convertidos
o diretório nomeado:
para

Estudar a saída do comando de perto.


5. Estudar os scripts gerados.
No diretório nomeado, você encontrará cópias dos arquivos de dados convertidos para uso
no
local de destino, um arquivo de parâmetro para iniciar a instância de destino, eo
roteiro. Estudá-los de perto.
crdb_sundb.sql

Duplicar um banco de dados


Você pode usar vários métodos para duplicar um banco de dados inteiro no mesmo servidor ou para
um diferente
servidor. O método usado depende de vários fatores, incluindo o destino do banco de dados
cópia, se o servidor de destino é do mesmo sistema operacional (OS) e endian-ness, eo
requisitos de disponibilidade de banco de dados. Os métodos são para duplicar por arquivos de
dados deusando
duplicar cópia ouconjuntos de backup. A duplicação pode contar com backups existentes ou cópias
de imagens,
criar a duplicata
ou pode
do banco de dados fonte ativa. Em contraste com o método de transporte de banco
de
nãodados,
há nenhuma
essencial, exigência
mas pode tornar opara qualquer
processo maistempo
fácil.de inatividade no sistema de origem. Usando um
catálogo de recuperação
A terminologia é quenão é de dados de fonte é conhecido como o alvo , e a base de dados
a base
duplicada para
ser criado é o auxiliar .

Usando um banco de dados duplicados


Um banco de dados duplicado pode ser usado para muitas coisas, incluindo o seguinte:

• backup de Testes e procedimentos de recuperação sem interromper o banco de dados de


produção.
• Testar uma atualização de banco de dados.
• Testar o efeito de atualizações de aplicativos no desempenho do banco de dados.
• geração de relatórios que de outra forma teriam um efeito negativo sobre o tempo de resposta
para
processamento
um de transações (OLTP) sistema de produção online.
• Exportação de uma tabela de um banco de dados duplicado que foi inadvertidamente retirado
dabanco de dados de produção e, em seguida, importá-lo de volta para o banco de dados de
aprodução; esta assume
tabela é estática que leitura. A partir do Oracle Database 12 c , você pode recuperar
ou somente
auma
partir
única
de backups
tabela do RMAN, mas este método é preferível se você precisa mais do que
apenas alguns indivíduo
mesas.

Em um alto nível, estas são as cinco possibilidades para a duplicação do banco de dados:

A escolha da técnica é dependente da disponibilidade de uma cópia de segurança pré-existente


visível
(quenodeve
localserauxiliar) e a disponibilidade de conectividade de rede entre o alvo e o
auxiliar.

Duplicar a partir do banco de dados ativo


Este método requer uma ligação a partir do executável RMAN para tanto a base de dados e o alvo
banco de dados auxiliar. A conexão com um catálogo de recuperação é opcional. Não há nenhuma
exigência
de backuppara
de existir.
um A segunda via é criada copiando os arquivos de dados de destino para o auxiliar
durante o Oracle
Líquido.
O método de “empurrão” baseia-se em cópias de imagem; os arquivos de dados reais são
auxiliar.
copiados
O método
do alvode “puxar” cria um backupset que é copiado para o auxiliar. Geralmente, o
impulso
método requer mais recursos sobre o alvo, e o volume de dados transferido é maior do que quando
usando um método de puxar. Quando você usar uma dessas cláusulas no comando duplicados, usos
o método de “puxar”:
RMAN

• USAR Backupset
• tamanho da seção

• cláusula Encryption
• cláusula de Compressão

A seguir estão as etapas de alto nível para criar um banco de dados duplicado em outro host do
base de dados activa:

1. Criar um arquivo de senha para a instância auxiliar.


2. Crie um arquivo de parâmetro de inicialização para a instância auxiliar.
3. Inicie a instância auxiliar no modo NOMOUNT.
4. conectividade de rede Configurar entre o alvo e o auxiliar.
5. Execute o comando RMAN duplicado.

Configure o auxiliar Instância


Alguma preparação no servidor de destino é necessária antes de executar a duplicação de dados.
Primeiro, você deve criar um arquivo de senha para a instância auxiliar. Criar o arquivo de senhas
com o senha SYS como o banco de dados de destino (ou simplesmente copiar o arquivo de senhas
mesma
alvo)
de acordo
e nomeá-la
com a convenção necessário, com o nome de banco de dados auxiliar incorporado dentro
do
filename senha.
O próximo passo é criar um arquivo de parâmetro de inicialização para a instância auxiliar.
ApenasDB_NAME
parâmetro o é necessária; todos os outros parâmetros são teoricamente opcional. Na
maioria
irá criar dos
um arquivo
casos, você
de parâmetros com base em uma cópia do arquivo de parâmetro de destino e
editá-lo deauxiliar.
ambiente acordo Tabela
com o 27-1 lista os parâmetros que podem ser especificados na inicialização
apresentar juntamente com suas descrições e em que circunstâncias eles são necessários; estes são os
auxiliar
Parâmetros que normalmente seria considerar cuidadosamente.

Tabela 27-1 os parâmetros mínimos que em geral estará especificado para uma instância auxiliar

Observe que as opções DB_FILE_NAME_CONVERT para gerar nomes de arquivos na lata


auxiliar

também ser especificado quando você executa o comando via, que terá precedência sobre qualquer
valores no arquivo de parâmetro.
Usando o arquivo de parâmetro de inicialização recém-criado, criar um spfile e iniciar a instância
ModoemNOMOUNT. Se estiver trabalhando no Windows, será necessário usar o utilitário oradim para
o serviço do Windows na qual a instância será executado.
criar

Estabelecer conectividade de rede


O banco de dados alvo (você pode assumir) já ser registrado com o ouvinte banco de dados no
anfitrião do alvo. O anfitrião também auxiliar deve executar um ouvinte base de dados, o qual terá
de serum
com configurado
registro estático para a instância auxiliar. Você não pode contar com o registro instância
porque RMAN pode ter que parar e iniciar o auxiliar. Ambos os servidores de destino e auxiliares
dinâmica
vai precisar de resolução
mecanismo um TNS, geralmente um arquivo tnsnames.ora com entradas tanto para o alvo
ea
instâncias auxiliares.

Execute o duplicado de comando do RMAN


Aqui é o momento que você estava esperando: começando RMAN e executar o processo de
Existem variações na sintaxe para ligar simultaneamente para o alvo e o auxiliar e
duplicação.
(Opcionalmente) para o catálogo. Esta seria uma típica seqüência de conexão:

Este exemplo usa Oracle Net e autenticação de arquivo de senha para se conectar tanto o alvo e
o auxiliar e um catálogo. Alternativamente, você pode usar a autenticação do sistema operacional
apara
umsedos bancos de dados e, talvez, não usar um catálogo.
conectar

O comando duplicados podem ser simples. Aqui está um exemplo:

Este comando irá criar a duplicata e nomeá-la dupdb copiando arquivos de dados do alvo,
imagem cópias. Não diz nada sobre o que os nomes de arquivo deve ser usado no auxiliar e terá
apenas se uma destas circunstâncias se aplica:
sucesso

• Oracle Managed arquivos são usados para gerar nomes de arquivos.


• A * parâmetros _FILE_NAME_CONVERT pode gerar nomes significativos.
• As estruturas de diretório são idênticos em ambos os locais.

Se nenhuma destas condições se aplica, em seguida, o comando duplicado terá de ser mais
Aqui
complexa.
está um exemplo:

Em resumo, aqui está o que o comando DUPLICATE faz:

1. Cria um controlfile do banco de dados duplicado, usando os nomes especificados na


parâmetro de instância CONTROL_FILES
2. Cópias os arquivos de dados para o alvo base auxiliar a partir da base de dados executando
3. Recupera a auxiliar utilizando on-line do alvo (e, se necessário arquivado) refazer
4. Abre o banco de dados auxiliar com a opção RESETLOGS
5. Gera um novo DBID do banco de dados auxiliar

Aqui estão algumas outras opções disponíveis com o comando duplicados:

• SKIP READONLY Excluir espaços de tabela read-only a partir da operação de cópia.


• SKIP TABLESPACE Excluir espaços de tabela específicos, exceto para o sistema e desfazer.
• NOFILENAMECHECK Não verificar para nomes de arquivos duplicados entre a origem eo
bancos de dados de destino.
• ABRIR RESTRITO Quando o banco de dados destino está pronto, abri-lo imediatamente
com
opção
o sessão restrita.
• NOOPEN Não abra a auxiliar após a criação

Duplicação ativa usando conjuntos de backup


Para activar o método de “puxar”, você deve instruir RMAN para gerar e transferir um backupset do
alvo, em vez de transferir as cópias de imagem de arquivos de dados. Isto requer a adição de uma ou
mais opalavras-chave
para comando duplicado. Aqui está um exemplo:
Este exemplo conecta aos bancos de dados com o privilégio SYSBACKUP em vez de SYSDBA,
usando a autenticação de arquivo de senha. Em seguida, ele especifica que a transferência de dados
devem ser criptografados, o
chave que está sendo protegido por uma senha. O backupset será compactado e dividido em seções
sem
maior do que 10 GB. A transferência de secções serão parallelized de acordo com o número de
canais sobre o alvo.
configurada

Duplicados de backup
A chave para a duplicação baseada em backup é que todos os backups necessários de arquivos de
dadosser
deve e arquivos
visível para
de log
o exemplo
arquivados
auxiliar, de preferência no mesmo caminho que no alvo. Se os
backups são
armazenada em um dispositivo conectado à rede, este não deve ser problema. Caso contrário, eles
devem ser
servidor auxiliar.
copiadosSe para
não éo possível expor os backups no mesmo caminho, a sintaxe faz autorização
nomear o caminho onde eles existem.
Se uma conexão alvo é possível, então RMAN pode interrogar o alvo de todas as medidas
informações
necessárias
sobre a localização de backups e a estrutura eo estado da base de dados. Se um alvo
conexão não é possível, mas uma conexão catálogo é possível, então RMAN pode recuperar esse
informações do catálogo. Se nem um alvo nem uma conexão catálogo é possível, então tudo isso
informações devem ser fornecidas no comando duplicado. Ao usar backups para a duplicação
processo, você precisa configurar canais do RMAN para ser usado na instância de banco de dados
auxiliar.
canal na oinstância auxiliar restaura os backups, por isso você precisa especificar o ALLOCATE
comando no bloco prazo, como neste exemplo:

Exercício 27-3: Duplicar um banco de dados Este exercício pressupõe que você tenha um banco
de dados
que está em
chamado
execução
orclno modo archivelog e que é um banco de dados OMF, que inclui todos os
arquivos de log
dados,
e cópias
on-line
CONTROLFILE nomeados pela OMF. Ele será duplicada a um banco de
dados
em execução
chamado nodupdb,
mesmo servidor. Esteja ciente de variações para Linux e Windows, e, naturalmente,
substituto
nomes e caminhos e outros literais conforme necessário.

1. Crie um arquivo de senha para o auxiliar, copiando o arquivo de senhas alvo.


Aqui está como fazê-lo no Linux:

Aqui está como fazê-lo no Windows:

2. Crie um arquivo fictício parâmetro, com os seguintes parâmetros:

Aqui está o nome do arquivo Linux:

Aqui está o nome do arquivo do Windows:

3. Inicie a instância do auxiliar.


Aqui está como fazê-lo no Linux:
Aqui está como fazê-lo no Windows:

4. Configure Oracle Net.


Adicione esta entrada para o arquivo listener.ora:

Reinicie o ouvinte.
Adicionar essas entradas para o arquivo tnsnames.ora:

Testar a configuração.

5. Ligue para o alvo e auxiliar com o RMAN.

6. Duplicar o banco de dados.

Observe a maneira pela qual os scripts de memória são gerados e executados. Os scripts são
instrutivo.
7. É quase inevitável que você vai precisar de várias tentativas para obter este exercício
concluído
com sucesso. Isso faz parte da vida de um administrador de banco de dados! Após uma
tentativa
ciente de fracassada,
que a duplicação
ser pode ter um êxito parcial, e você pode, portanto, precisam
excluir vários arquivos antes de tentar novamente, assim como reiniciar a instância auxiliar.

Broca Two-Minute

Descrever e usar transportáveis Tablespaces e Bases de Dados


• Durante o transporte entre as plataformas, as plataformas de origem e de destino devem estar
emlista da Oracle de plataformas suportadas.
• A Oracle compatibilidade recurso de banco de dados é controlada pela inicialização
COMPATÍVEL
parâmetro.
• Quando você cria um conjunto de tabelas transportável, a Oracle determina a compatibilidade
mínimo
nível de banco de dados destino e armazena este valor nos metadados para o transportável
conjunto de tabela.
• Um processo de conversão deve ser realizada para as colunas de dados transportados entre
plataformas
diferentes com
formatos endian.
• Para determinar os formatos endian de todas as plataformas suportadas, você pode consultar a
dinâmica
vista do desempenho V $ TRANSPORTABLE_PLATFORM.
• Ao transportar um espaço de tabela, a tabela de origem deve ser somente leitura durante a
cópia
processo e alterado para ler-escrever depois de importação para o banco de dados alvo.
• Você usa expdp e impdp para copiar metadados que descrevem um espaço de tabela de um
banco
outro.
de dados para
• O pacote DBMS_FILE_TRANSFER PL / SQL pode executar a conversão endian como ele
copia
arquivos.

Escolha uma técnica para duplicar um banco de dados


• transporte de dados entre plataformas requer espaços de tabela a ser em modo somente leitura
para
datafiles
copiartablespaces
o para o sistema de destino.
• Apenas os metadados para um espaço de tabela ou banco de dados inteiro precisa ser criado
para o Data Pump
exportação / importação desde as cópias imagem si serão copiados para o banco de dados
alvo.
• conjuntos de backup usar o RMAN para a velocidade de transferência de arquivos,
compressão
tabela fonte
e tempo
ou banco
de inatividade
de dados. mínimo do

Criar um banco de dados duplicados baseado-Backup


• Quando você duplica um banco de dados, o banco de dados de origem é copiado para o banco
de
• Odados
bancoduplicado.
de dados fonte também é conhecido como o banco de dados destino.
• O banco de dados duplicado é também conhecido como o banco de dados auxiliar.
• Preparar-se para criar um banco de dados duplicado inclui a criação de um arquivo de senhas,
garantindo
conectividade,
rede e criar um arquivo de parâmetro de inicialização para a instância auxiliar.
• No mínimo, você precisa especificar o valor DB_NAME no auxiliar exemplo de
arquivo de parâmetro de inicialização. Você também deve especificar DB_BLOCK_SIZE se
aforbase
definido
de dados
explicitamente
destino.
• O DB_FILE_NAME_CONVERT parâmetro de inicialização especifica o mapeamento do
sistema de arquivos
para arquivo de dados e nomes de ficheiro temporário.

• O LOG_FILE_NAME_CONVERT parâmetro de inicialização especifica o mapeamento do


sistema de arquivos
para arquivos de log redo online.
• O parâmetro de inicialização CONTROL_FILES especifica os novos nomes para todos os
controlfiles,
a menos que você estiver usando o Oracle Managed Files porque OMF vai nomear arquivos
• Opara você. RMAN para executar a duplicação de banco de dados é TARGET DUPLICATE
comando
BASE DE DADOS.
• O banco de dados duplicado tem um novo DBID, mesmo que tem o mesmo nome de banco de
dados
basecomo
de dados.
fonte

Duplicar um banco de dados


• Você usa o comando RMAN Duplicar para duplicar um banco de dados.
• Você pode usar o método “push” para duplicar o banco de dados, que é baseado em cópias de
imagens.
• O método de “puxar” gera um backupset RMAN que permite o uso de compressão e
criptografia.
• Você pode especificar de banco de dados ativo no comando duplicado para criar o
copiar a partir de um banco de dados on-line em vez de partir de um backup de banco de
dados.

Auto teste
1 . Você está executando o Oracle Database 12 c com o parâmetro de inicialização
COMPATIBLE
12.0.0. Qual édefinido
o nível para
de compatibilidade mínimo para o transporte de um espaço de tabela a
partir
em umade plataforma
um banco dediferente?
dados (Escolha a melhor resposta.)
A. 8.0
B. 10,0
C. 12.0
D. 11,0
E. Todas as anteriores
2 . Ao transportar um espaço de tabela, o que é o propósito de
DBMS_TTS.TRANSPORT_SET_CHECK? (Escolha a melhor resposta.)
A. Ele assegura que o nível de compatibilidade é alta o suficiente para a operação de
transporte.
B. Ele compara o nível endian para os bancos de dados de origem e de destino e corre o
RMAN para os arquivos de dados antes do transporte.
converter
C. É valida que os metadados para o espaço de tabela não tem qualquer conflito de
nomeação
os esquemas
com de base de dados alvo.
D. Ele verifica para tabela de auto-consistência.
3 . Você deseja duplicar um banco de dados, mas maximizar a disponibilidade para o banco de
origem
seus eespaços
todos de tabela. Qual é o melhor método a utilizar para este tipo de duplicação de
banco de dados? (Escolher

a melhor resposta.)
A. cópias de imagens
B. exportação da bomba de dados com CHEIO = Y
C. RMAN conjuntos de backup porque então o tempo de inatividade será zero
D. RMAN conjuntos de backup porque então o tempo de falha será próximo de zero
4 . Identificar a instrução correta sobre bancos de dados duplicados criados com o RMAN.
(Escolher
a melhor resposta.)
A. RMAN cópias da fonte de dados para o banco de dados de alvo, e tanto pode ter a
mesma
nome.
B. RMAN cria uma instância auxiliar para a duração da operação de cópia e a deixa cair
após a operação de cópia for concluída.
C. A base auxiliar é a mesma que a base de dados destino.
D. RMAN cópias do banco de dados do alvo à base de dados duplicado, e ambos podem ter
o mesmo nome.
E. O banco de dados de origem deve ser desligado antes de iniciar-se o banco de dados de
destino.
5 . Para criar um banco de dados duplicado, coloque as seguintes etapas na ordem correta:
1. Comece o exemplo como auxiliar NOMOUNT.
2. Atribuir canais auxiliares, se necessário.
3. Execute o comando RMAN duplicado.
4. Crie um arquivo de senha para a instância auxiliar.
5. Certifique-se de conectividade de rede para a instância auxiliar.
6. Abrir a instância auxiliar.
7. Inicie o banco de dados origem no monte ou no modo de ABERTO.
8. Crie um arquivo de parâmetro de inicialização para a instância auxiliar.
9. Criar backups ou copiar backups existentes e arquivos de log arquivados para um local
comum
acessível por exemplo o auxiliar.
A. 5, 4, 8, 1, 7, 9, 3, 2, 6
B. 4, 5, 8, 1, 7, 9, 2, 3, 6
C. 4, 5, 8, 1, 7, 9, 3, 2, 6
D. 5, 4, 1, 8, 7, 9, 2, 3, 6
6 . Qual das seguintes cláusulas não é válido para o comando RMAN duplicados? (Escolher
a melhor resposta.)
A. SKIP OFFLINE
B. SKIP READONLY
C. SKIP TABLESPACE
D. NOFILENAMECHECK

E. ABERTO RESTRITO
7 . instância
Identificarbanco
a verdadeira
de dadosdeclaração sobre oum
quando duplicar status do banco
banco de com
de dados dadosbase
de origem
em umae instância
o auxiliar
em execução. (Escolha o melhor
responda.)
A. A base de dados activa deve estar no modo de montagem, e o exemplo auxiliar deve
estarmodo
em MOUNT.
B. A base de dados activa deve estar em MONTAGEM ou modo de abertura, e o exemplo
auxiliares
estar nodevem
modo NOMOUNT.
C. A base de dados activa deve estar em modo de abertura, e o exemplo auxiliar deve estar
em Modo NOMOUNT.
D. A base de dados activa deve estar no modo NOMOUNT, e o exemplo auxiliar deve estar
em modo MOUNT.

Respostas de auto-teste
1. B . Se os bancos de dados de origem e destino estão em diferentes plataformas, tanto a
deveorigem
ter um eo
nível
destino
de compatibilidade de pelo menos 10,0.
A , C , D , e E são incorrectas. Para o transporte entre as plataformas idênticas, você
apenas
precisa
compatível = 8,0. Para o transporte entre bancos de dados com diferentes tamanhos
de bloco,
precisa apenas
você compatível = 9,0.
2. D . DBMS_TTS.TRANSPORT_SET_CHECK verifica para garantir que não há objetos
no espaço de tabela para ser transportado que têm dependências de objetos em outros
espaços
o banco de tabela
dados fonte.
em
A , B , e C são incorrectas. Eles são usos não válidos para
DBMS_TTS.TRANSPORT_SET_CHECK.
3. D . Usando RMAN para a duplicação de um banco de dados com conjuntos de backup
os espaços
tem a vantagem
de tabelasde
disponíveis,
manter tanto quanto possível (em modo de escrita lido). sucessivo
backups incrementais vai ficar menor e menor até que o último backup em que você deve
tornar os espaços de tabela read-only para realizar o último backup incremental a ser
aplicada
banco deaodados de alvo.
A , B , e C são incorrectas. A está incorreta porque as cópias de imagem são um método
transporte
válido de
para
um espaço de tabela ou banco de dados, mas os arquivos de dados do espaço
de tabela
Modo paradeve estaraem
realizar READ
cópia ONLY B está incorreta porque o Data Pump pode fazer
de imagem.
backupdededados,
banco todo ummas é um backup lógico, não um backup físico. C é incorrecta porque
haverá
ainda haver alguma indisponibilidade do espaço de tabelas para realizar o último backup
incremental
aplicada a cópia
parado
serbanco de dados de destino da tabela.
4. D . Você pode manter o mesmo nome porque RMAN cria um novo DBID, e, portanto,
pode usar o mesmo catálogo de recuperação para ambos os bancos de dados.
A , B , C , e E são incorrectas. Um é incorrecta porque a base de dados destino é o
mesmo
dados que o B é incorrecta porque RMAN não eliminar a instância ou auxiliar
de origem.
banco de dados após a operação de cópia está completa. C é incorrecta porque a base de
dados é alvo
o banco de dados de origem e o banco de dados auxiliar é o banco de dados do destino. E é
porque ambos os bancos de dados podem ser abertos ao mesmo tempo, mesmo no mesmo
incorrecta
host e com
mesmo a
catálogo de recuperação.
5. B . Estes passos são na ordem correta.
A , C , e D são incorrecta porque eles são na ordem errada.
6. Um . A opção SKIP OFFLINE não é válido para o comando duplicado.
B , C , D , e E são incorrectas. B é incorrecta porque a cláusula SKIP READONLY
exclui somente leitura espaços de tabela. C é incorrecta porque SKIP TABLESPACE exclui
ou mais espaços de tabela a partir da operação de cópia; você não pode ignorar o sistema ou
uma
DESFAZER
tablespace. D está incorreta porque NOFILENAMECHECK não verifica duplicado
nomes de arquivos entre a origem eo destino. E é incorreta porque ABERTO RESTRITO
abre o banco de dados de destino com a opção sessão restrita.
7. B . Para duplicar um banco de dados com base em uma instância em execução, o banco
querde
MONTAGEM
dados de origem
ou modo
pode de
estar
abertura;
em uma vez que o banco de dados auxiliar ainda não
tem A
sequer
, C , um
controlfile, eeleDdeve
estãoser aberto no A
incorrectos. modo
está NOMOUNT.
incorreta porque a instância auxiliar não tem uma
controlfile de imediato, por isso não pode ser iniciado no modo MOUNT. C é incorrecta
porque
base de adados activa também pode ser no modo de montagem. D é incorrecta porque a base
de dados não
duplicada se opodem
banco ser
de dados fonte está no modo NOMOUNT, ea instância auxiliar não
pode
no modo
ser MOUNT quer!
CAPÍTULO 28

Encrypting, garantindo, Monitoramento e


Sintonia RMAN Backups

Objetivos do exame
• 63.1.8.1 criar cópias de segurança criptografadas pelo RMAN
• 63.1.13.1 configurar e usar o Oracle Secure Backup
Desempenho • 63.1.18.1 Tune RMAN
Este capítulo descreve algumas técnicas avançadas para o gerenciamento de backups que se
relacionam
tuning. com criptografia
Abrange e
também o Oracle Secure Backup (OSB). Oracle Database 12 c fornece dois tipos de
backups criptografados para garantir que os dados da empresa não seja comprometida ou visto pela
pessoa
O método
errada.
de backup que você usa (tanto via Oracle Advanced Security ou o Oracle Secure Backup)
sobre os tipos de dados que você está fazendo backup e seu destino. Como você viu nos capítulos
depende
anteriores,
O Recovery Manager (RMAN) pode fazer backup de grandes arquivos de dados como um backup
multisection,
vários dispositivos
alavancando
de saída (múltiplos canais, quer no disco ou em fita) para reduzir drasticamente o
leva para fazer o backup do arquivo de dados, entre outras vantagens. técnicas de compressão
tempo
ealternativos
métodos dedocriptografia
RMAN reduzir ainda mais o tamanho do backup e fazer os backups indisponível
para não
partes porautorizada
uso de senhas stand-alone ou carteira de criptografia do banco de dados.

O Oracle Secure Backup é baseado em um modelo cliente-servidor global, onde ambos os


sistemas
bancosdede
arquivos
dados Oracle
podemeser criptografados e backup por meio de um sistema de biblioteca de
fitas empresa
interface familiar
enquanto
do RMAN.
ainda estiver
Você usausando
o obtool
o ferramenta de linha de comando, além de uma
interface web
gerenciar para
Oracle Secure Backup.

Criar backups criptografados-RMAN


Para garantir a segurança e privacidade de seus backups, você pode criptografar-los em uma de três
criptografia transparente, criptografia de senha ou criptografia de modo duplo. Por padrão, a
maneiras:
criptografia é
desligado.

Nas seções seguintes, você vai aprender a permitir que cada tipo de criptografia (transparente ou
senha). Para criar uma estratégia de backup e recuperação bem sucedida, você deve primeiro
entender
de falhas os
e como
tipos o Oracle responde a cada um deles. Alguns exigem nenhum usuário ou
administrador
(DBA) intervenção,
de banco
e outros
de dados
fazem. Que backup e recuperação soluções que você alavancagem
depende
muitos fatores, incluindo o quão rápido você precisa para se recuperar de uma falha e como muitos
recursos
quero dedicar
que você
à solução. Seu investimento em infra-estrutura de recuperação é proporcional ao custo
da perda de produtividade ou de negócios renda, se o banco de dados não está disponível para um
dia, uma hora, ou um minuto.
Configurando e usando criptografia transparente
Você pode configurar a criptografia transparente (baseado em carteira) como método de criptografia
RMAN padrão usando
CONFIGURAR o da seguinte forma:
comando

Tenha em mente que sua carteira de banco de dados deve estar aberto também. Se não for aberto,
você pode pensar que
tudo está indo conforme o planejado, até que o processo de criptografia tenta iniciar. Isto é mostrado
pela
mensagem de erro falha de backup no seguinte resultado:
A criação de uma carteira de criptografia para a instância é fácil. Seus pontos de arquivo
da carteira
sqlnet.ora
encriptação
para o local
com uma entrada semelhante à que se segue:

Dentro do / network / admin diretório $ ORACLE_HOME / carteira são as chaves de


Usando
criptografia
uma conta
de banco
com a de
SYSKM
dados. ou administrar privilégio de sistema de gerenciamento de chave,
ou através
sistema operativo (OS) de autenticação como no presente exemplo, cria o armazenamento de chaves
com
de administração
a ADMINISTER de chave:

Não perca o conteúdo dos arquivos na carteira diretório back-lo. Você não será capaz de
descriptografar tablespaces criptografados ou backups RMAN criptografada sem ele.
Abrindo a carteira no SQL> prompt (e, a partir de Oracle Database 12 c , no RMAN> prompt)
e criar uma chave mestra de criptografia faz com que tudo funcione muito mais suave.

Como você poderia esperar, mesmo se a criptografia transparente não é o padrão, você pode ligá-
duração
lo apenas
de umpara
único
o backup. Como no exemplo anterior, a carteira de banco de dados deve estar
aberto. Aqui está um
exemplo:

Para restaurar ou recuperar de um backup criptografado, a carteira de banco de dados deve ser
padrão
aberto,
de criptografia
e tanto o deve ser ON ou você deve usar SET ENCRYPTION ON antes da recuperação
Operação.
Para keystores baseados em senha, você tinha que especificar com o Backup no exemplo
gerar
anterior,
a chavequando
de encriptação mestre. Uma nova chave mestra precisa ser gerado apenas quando você
pensa
que a segurança foi comprometida. Melhor ainda, alterá-lo em uma base regular como uma medida
preventiva.
Se você precisar restaurar uma cópia mais antiga do armazenamento de chaves, você pode
recuperar
em que dados antigos
você mudou a chavesomente atécriptografia.
mestra de o ponto

Usando Criptografia de senha


Para ativar a criptografia de senha para um backup específico, use o comando SET ENCRYPTION
seguinte maneira:
como

criptografia de senha é inerentemente menos seguro e confiável do que transparente (baseado em


carteira) porque uma senha pode ser perdido, esquecido, ou interceptados facilmente. Use
criptografia
criptografia
somente quando
de senha
backups deve ser transportável para um banco de dados diferente.
Quando você deseja restaurar esta cópia de segurança, seja para o mesmo banco de dados (se
off)criptografia
ou para um baseada
banco deem
dados
carteira
diferente,
é você deve especificar a senha de decodificação com SET
descriptografia.

Se você estiver recuperando um ou mais espaços de tabelas ou todo o banco de dados a partir de
senhas
backups
diferentes,
que têm
você pode facilmente especificar todas as senhas de uma vez com SET
Descriptografia.

RMAN tentará cada senha por sua vez para cada backup criptografado até que ele encontra uma
correspondência.
terminará com um erroRMAN
somente se nenhuma senha corresponder a qualquer das senhas em qualquer
um dos backups.
Usando criptografia Dual-Mode
Você pode usar a criptografia transparente e criptografia de senha ao mesmo tempo. Isto é útil se
o backup pode ser usado para restaurar ou recuperar dentro do mesmo banco de dados, e na ocasião
ele pode
usado para
serrecuperar outro banco de dados. Quando ambos os métodos são, com efeito, você pode
usar a senha
ou a carteira de banco de dados para restaurar o backup. Ao recuperar a um banco de dados remoto,
avocê
senha
deve
antes
especificar
de recuperar, como segue:
Se você quiser usar a criptografia única baseada em senha para um backup, adicione a cláusula
Criptografia.
ONLY a SET

Como um resultado, mesmo se o padrão de encriptação para LIGADO (e, portanto, utiliza a
carteira), todos subsequente
backups usar a criptografia de senha somente até que você desativar a criptografia de senha ou saída
RMAN
completamente.

Configurar e usar o Oracle Secure Backup


O Oracle Secure Backup aumenta a privacidade dos dados no backup por criptografar backups
vários novos métodos. Além disso, a gama de objetos que você pode fazer backup vai além de
usando
apenas o banco
arquivos. OSB édeuma
dados
ferramenta que pode fazer backup de sistemas de arquivos em servidores e em
PCsOscliente,
três componentesbancos
bem como de dados.
principais em um ambiente OSB são os seguintes:

• Servidor administrativo Um servidor em algum lugar dentro da empresa que tem o software
OSB
instalado. Isso pode ser instalado em um servidor de banco de dados, mas é geralmente em
um servidor
• Servidor dedicado.
de mídia Um servidor que gerencia o armazenamento em camadas, como discos,
bibliotecas
meios de de fitas e óptica
comunicação.
• Cliente A meta para backups OSB. Isso pode ser um banco de dados Oracle ou um sistema de
arquivos
outro servidor.

OSB pode ser aproveitado de várias maneiras: via Cloud Control Enterprise Manager,
através
perfeitamente
RMAN através do SBT existente (Backup System para fita) interface, através da ferramenta
web OSB,
através e
do utilitário obtool de linha de comando.

Instalando e Configurando o Oracle Secure Backup


Para instalar OSB, comece fazendo o download da versão mais recente, que como esta escrito é de
12,1. designar
diretório no servidor
um onde pretende instalar OSB (deve ser feito com uma conta privilegiada) e
descompacte o arquivo. Em seguida, execute o script de instalação. OSB deve ser instalado em todos
os nós noa ambiente.
Durante corrida do script de configuração, você pode especificar qual o papel determinada
instalaçãoadministrativo,
servidor devem cumprir:servidor de mídia, ou cliente.
Você pode configurar detalhes das bibliotecas de fitas ou piscinas de disco para ser usado no
subseqüentemente.
momento da instalação
Note-seouquea OSB
qualquer
vemmomento
com a capacidade de gerenciar todos os dispositivos
comumente
no mercado.usados
OSB inclui o seu próprio catálogo, que não é um banco de dados Oracle, mas sim uma
propriedade da OSB. Este catálogo armazena detalhes de todos os dispositivos, de todos os backups,
estrutura
e de usuários
suas senhas. de OSB e
Incluído na instalação é o utilitário de linha de comando obtool, e instalar o administrativa inclui
um de hospedagem na web uma interface de administração Hypertext Markup Language
servidor
(HTML).
Usando RMAN com o Oracle Secure Backup
RMAN (ou qualquer outro cliente que precisa de seus dados de backup) não pode usar
automaticamente
servidor de backup OSB
e não
nairá invocar explicitamente o comando obtool. Em vez disso, o RMAN irá
se conectar
OSB atravésaoda interface SBT. Aqui estão os quatro requisitos para usar OSB via RMAN:

• RMAN deve ser pré-autorizado nesse host usando o comando obtool.


• A identidade do usuário OS da instância do Oracle deve corresponder ao usuário autorizado.

• O usuário RMAN deve ser atribuída as classes OSB pertinentes para executar backups de
Oracle e
restaura.
• The SBT library must be available.

Por exemplo, aqui está como você usaria obtool para criar um usuário do OSB chamado
oel63
pa_rman
para permitir
no hostRMAN para realizar backups sob o oráculo usuário OS:
Deste ponto em diante, qualquer trabalho RMAN executado sob o usuário Oracle no servidor
backups
oel63de
pode
qualquer
executar
banco de dados objetos acessíveis pela sessão RMAN.
A biblioteca SBT está instalado no servidor de banco de dados como parte da instalação do
e Windows,
banco deosdados.
arquivos
no Unix
são os seguintes:

Para fazer backup de OSB, usar um script que especifica a biblioteca como um parâmetro a ser
declaração
passadoalocação
para o de canal.

Quando um backup RMAN começa, o nome do banco de dados, tipo de conteúdo e número de
OSB,cópias
o quesão
se enviadas para
traduz para um dado selector de armazenamento que define os dispositivos e as
famílias
para o backup.
dos meios para usar

Comandos diversos obtool


Dezenas de comandos obtool estão disponíveis, mas apenas um punhado será usado em uma base
diária.comandos
estes O máximoolhar
de e agir como um comando Linux com interruptores semelhantes. Na verdade,
muitos destes
comandos começam com ls.
Veja como mostrar informações do host OSB:

Veja como mostram as informações do usuário detalhada:


Aqui está como listar o conteúdo de backup conjunto de dados:

Monitorar e RMAN desempenho sintonizar


Ajustando operações de backup e recuperação RMAN é frequentemente uma reflexão tardia. Se
você vez
uma executar um backup
por semana completo
e backups incrementais diários, você não pode pensar que você precisa para
otimizar seu
operações debackup
recuperação,
e pois eles ocupam apenas quatro horas de seu tempo a cada semana. esta
parece fazer sentido, até qualquer um dos seguintes eventos ocorrer em sua organização:
lógica

• Sua empresa expande seus escritórios em todo o mundo, os usuários estarão acessando o
banco de dados
momentos do em
dia tudo
e da noite, e você não quer um tempo de resposta operação de backup de
redução.
• Novas aplicações aumentar a demanda para o sistema de biblioteca de fitas.
• Gestão exige melhorias no tempo de recuperação de banco de dados para atender o nível de
serviço
acordos (SLAs).

Otimizando as operações de backup e recuperação RMAN irá atenuar os efeitos desses eventos.
Você precisa entender a importância do RMAN sintonia e ser capaz de identificar gargalos na
diferentes fases de uma cópia de segurança RMAN.
Primeiro, você vai aprender sobre as exibições dinâmicas de desempenho que você pode usar
em andamento,
para monitorar
como
umabackup
V $ SESSION
RMAN e V $ PROCESS. RMAN torna mais fácil identificar um
trabalho de backup em V $ SESSION.
específico
Em seguida, você vai mergulhar em alguns exercícios de ajuste, usando técnicas tais como
paraalocação
melhorardeo canais
desempenho
múltiplos
de suas operações de backup. Você também vai saber onde gargalos
RMAN
ocorrer e como medir um gargalo com vistas como V $ BACKUP_SYNC_IO e
V $ BACKUP_ASYNC_IO. O comando RMAN BACKUP oferece-lhe uma grande flexibilidade,
permitindo
você controla
queo tamanho de cada peça backup, determinar quantos arquivos para colocar em um
backupset,
diminuir a carga
e sobre o sistema, definindo uma duração de cópia desejada.

Monitoramento Sessões RMAN e Empregos


Em um determinado ponto no tempo, você pode ter várias tarefas de backup em execução, cada um
com umCada
canais. ou mais
canal utiliza um processo de sistema operativo. Se você deseja identificar qual o canal é
utilizando a unidade mais de processamento central (CPU) ou de entrada / saída (I / O) de recursos
no sistema
nível, você operacional
pode juntar-se ao desempenho dinâmico visualizações V $ SESSION e V $ PROCESS
para
os processos de ofuncionamento do sistema associadas com cada canal RMAN.
identificar
Além de identificar os processos associados a cada tarefa do RMAN, você pode determinar o
progresso de um backup ou restaurar a operação. Você pode usar a exibição de desempenho
V $ SESSION_LONGOPS para identificar o quanto o trabalho de uma sessão RMAN foi concluída
dinâmico
montante total estimado de trabalho.
eo
Finalmente, o RMAN fornece informações solução de problemas em um número de maneiras,
saída
acima
do comando
e além dano RMAN> prompt, quando algo dá errado. Você também pode ativar melhorada
depuração para ajudá-lo e Oracle Support identificar a causa de um problema RMAN sério.
Nas seções seguintes, você será introduzido para o desempenho dinâmico visualizações V $
V $SESSION,
PROCESS e V $ SESSION_LONGOPS que podem ajudá-lo a identificar e monitorar o backup
RMAN
e tarefas de restauração. Além disso, você vai aprender onde procurar quando um backup ou de
restauração falhar.

Usando V $ SESSÃO e V $ PROCESS


A vista do desempenho V $ processo dinâmico contém uma linha para cada processo do sistema
ligado ao exemplo da base de dados. V $ SESSION contém informações adicionais sobre cada
operativo
conectado ao banco de dados, como o comando SQL atual e o nome de usuário do Oracle execução
sessão
comando. Estas sessões incluem sessões RMAN. Como resultado, você pode monitorar sessões
do
RMAN
usando estes pontos de vista também.
RMAN ocupa a coluna V $ SESSION.CLIENT_INFO com o rman corda e o nome do
o canal. Lembrar que cada canal RMAN corresponde a um processo de servidor, e por conseguinte
V $ SESSÃO terá uma linha para cada canal.
Para recuperar informações de V $ SESSION e V $ PROCESS sobre sessões RMAN atuais,
os pontos
junte-se
de vista V $ sessão e V $ PROCESS no paddr e colunas addr, como você verá no
exercício.

Exercício 28-1: Processos Monitor de RMAN Canal Neste exercício, você vai iniciar um trabalho
que usa dois ou mais canais e recuperar os nomes dos canais de V $ SESSION e V $ PROCESS.
RMAN

1. Criar uma tarefa do RMAN que faz o backup da tabela USERS usando dois canais de disco.

2. Enquanto o trabalho RMAN está em execução, se juntar à vista V $ PROCESS e V $


SESSION
o conteúdo
paradarecuperar
coluna client_info.

Note-se que os processos de usuário do RMAN ainda existirá em V $ SESSION até sair RMAN
ou início
outra operação de backup.
Se você tiver vários empregos RMAN em execução, alguns com dois ou mais canais alocados,
difícil
podeidentificar
ser processo esse que corresponde a qual backup RMAN ou operação de recuperação.
Para
facilitar a diferenciação desejar, você pode usar o comando ID conjunto de comandos dentro de uma
executar bloco, como neste exemplo:
RMAN

Quando este trabalho RMAN é executado, a coluna client_info em V $ SESSION contém a


id =cadeia
usuários bkup para ajudar a identificar a sessão para cada trabalho RMAN.

Exercício 28-2: monitorar vários RMAN Jobs Neste exercício, você vai começar em dois
empregos RMAN
identificar cada trabalho
e em V $ SESSION e V $ PROCESS usando a opção SET comando no
RMAN.
1. Criar dois empregos RMAN (em duas sessões RMAN diferentes) que fazem backup de dois
espaços
usar adeopção
tabelaSET
e COMMAND.

2. Enquanto o trabalho RMAN está em execução, se juntar à vista V $ PROCESS e V $


SESSION
o conteúdo
paradarecuperar
coluna client_info.

Usando V $ SESSION_LONGOPS
A visão de desempenho dinâmico V $ SESSION_LONGOPS não é específico para RMAN também.
registra todas as operações que se estendem por mais de 6 segundos (em tempo absoluto), incluindo
Oráculo
ebackup do RMAN
operações de recuperação, as estatísticas coleta e longas consultas em V $ SESSION_LONGOPS.
Este exemplo consulta V $ SESSION_LONGOPS enquanto um backup do arquivo de dados está
em andamento:

Desempenho RMAN sintonia


Você pode operações sintonia RMAN em muitas maneiras. Você pode sintonizar o rendimento
global de uma
utilizando cópia canais
múltiplos de segurança
RMAN e atribuindo arquivos de dados para diferentes canais. Cada canal
é atribuído
para um único processo, o processamento de modo paralelo pode acelerar o processo de cópia de
segurança.vários
multiplex Por outro
arquivos
lado,de
você
backup
podepara o mesmo pedaço de backup. Para um canal particular, você
pode usar o MAXPIECESIZE e MaxOpenFiles para maximizar a taxa de transferência para uma
parâmetros
saída específica
dispositivo. O comando BACKUP usa esses parâmetros para além FILESPERSET e BACKUP
DURAÇÃO para otimizar a operação de backup. Você também pode usar duração do backup para
o efeito do backup em tempo de resposta se o seu banco de dados deve estar continuamente
minimizar
disponível
têm de lidare com
vocêSLA rigorosas. Finalmente, você também pode usar parâmetros de inicialização do
banco de dados
otimizar desempenhopara de backup e recuperação, especialmente para operações de E / S síncronas.
Se você entender como cada método de ajuste funciona, você pode manter o tempo de resposta
rápidaseu
otimizar deambiente
usuário, de hardware e software, e potencialmente adiar atualizações quando os
orçamentos
justa. Um gargalo
são rendimento quase sempre existir em algum lugar em seu ambiente. Um gargalo
é o passo mais lento ou tarefa durante um backup RMAN.
A próxima seção revisa as etapas básicas que um canal executa durante uma operação de backup.
técnicas
o apresentadas nas seções a seguir o ajudará a identificar onde está o gargalo está dentro
tarefas do canal e como minimizar o seu impacto sobre as operações de backup e recuperação.
Identificar Backup e Restauração Passos
apoio RMAN executa as suas tarefas dentro de um canal em um de três fases principais:

• Leia fase O canal lê blocos de dados para os buffers de entrada.


• Fase de cópia das cópias de canal blocos dos buffers de entrada para os buffers de saída e
realiza processamento adicional, se necessário.
• Validação Verificar blocos para a corrupção, que não é intensivo da CPU.
• Compressão Use BZIP2 ou ZLIB para comprimir o bloco, que é intensivo da CPU.
• Criptografia Use um algoritmo de criptografia (transparente, protegido por senha, ou
ambos)
proteger
para
os dados, que é intensivo da CPU.
• fase Escrever O canal escreve os blocos a partir dos tampões de saída para o dispositivo de
saída
ou fita).
(disco

Usando visualizações dinâmicas de desempenho, você pode identificar qual fase dos quais
o gargalo
operaçãoe dirigir-se
de canalem
é conformidade.
Em alguns cenários, você pode querer aumentar o tempo de backup para garantir que o tempo de
ser curto.
recuperação
Criandoserá
cópias de imagens e recuperar as cópias de imagens em uma base diária ou por
hora oirátempo
com adicionar
de backup, mas irá reduzir drasticamente o tempo de recuperação.

paralelização conjuntos de backup


Uma das maneiras mais simples para melhorar o desempenho RMAN é alocar múltiplos canais (ou
disco
ou fita). O número de canais que você alocar não deve ser maior do que o número de física

dispositivos; atribuição de dois ou mais canais (e, portanto, os processos) para um único dispositivo
físico
não melhorar o desempenho e pode até mesmo diminuir o desempenho. Se você está escrevendo
para um Management
Storage único automática
(ASM) do grupo de disco ou um sistema de arquivos distribuídos pelo sistema
operacional,
alocar mais canais
você pode
e melhorar o rendimento desde o grupo de discos ASM lógica ou arquivo listrado
sistema mapeia a dois ou mais discos físicos. Você pode alocar até 255 canais, e cada canal
pode ler até 64 arquivos de dados em paralelo. Cada canal grava uma cópia de segurança ou a
imagem
Se o cópia
número separada.
de arquivos de dados em seu banco de dados é relativamente constante, você pode
alocar um número fixoficheiro de dados para um canal específico. Aqui está um exemplo:
de canais e atribuir a cada

Note também que você pode especificar o nome do caminho para um arquivo de dados em vez
do número arquivo de dados, como neste
exemplo:

Para automatizar esse processo ainda mais, você pode usar o comando configure para aumentar a
paralelismo para cada tipo de dispositivo.

Entendimento RMAN Multiplexing


Você pode melhorar o desempenho RMAN e rendimento por backup e recuperação de multiplexação
operações. Multiplexing permite RMAN para ler a partir de vários arquivos simultaneamente e
gravar os
blocos para
dados
a mesma peça de backup. Você não pode multiplex cópias de imagens. Se você fez, a
saída
ser nãoimagem
uma seria de entrada.
Usando multiplexação como um método RMAN ajuste é uma maneira de reduzir os gargalos de
operações
backupdee recuperação. O nível de multiplexes é controlada principalmente por dois parâmetros:
FILESPERSET e MaxOpenFiles. O parâmetro FILESPERSET do backup RMAN
comando determina o número de arquivos de dados para colocar em cada backupset. Se um único
canal faz de
arquivos o backup
dados edeo dez
valor de FILESPERSET é 4, o RMAN backup apenas quatro arquivos por
backupset,
três e serão gerados. Os padrões parâmetro FILESPERSET a 64.
conjuntos
O nível de multiplexação (o número de arquivos de entrada que são lidos e escritos para o
peça)mesmo backupde MaxOpenFiles eo número de arquivos em cada backupset. O padrão
é o mínimo
valor para MaxOpenFiles é 8. RMAN aloca um número e tamanho dos buffers disco I / O diferente
dependendo do nível de multiplexação em seu trabalho RMAN. Uma vez que o nível de multiplexes
é derivado
pelo RMAN usando os parâmetros FILESPERSET e MaxOpenFiles, o número e tamanho de
tampões são como se segue:

Canais de sintonia RMAN


Você pode regular com mais precisão o desempenho de backup RMAN sintonizando canais
individuaisocom
Configure canalo e alocar comandos canal. Cada comando CHANNEL
aceita os seguintes parâmetros:

• MAXPIECESIZE O tamanho máximo de um pedaço de backup


• Taxa O número de bytes por segundo lido pelo RMAN no canal
• MaxOpenFiles O número máximo de arquivos de entrada que um canal pode ter aberto em
umTempo dado

O parâmetro MAXPIECESIZE é útil quando você faz backup em disco e o operacional


sistema
subjacente
limita o tamanho de um arquivo de disco individual ou quando um gerente de mídia de fita
não pode
peça em várias
dividirfitas.
um backup
Note que o parâmetro da taxa não melhora o desempenho, mas acelera o desempenho
intencionalmente para limitar a largura de banda disponível no disco para um canal. Isto é útil
quandode
cópias o RMAN
segurança deve ocorrer durante os períodos de pico de actividade em outro lugar na base
de dados.
MaxOpenFiles foi revisado na seção anterior, mas vale a pena revisitar quando você
quer otimizar o desempenho de um canal individual. Por exemplo, você pode usar
MaxOpenFiles para limitar o uso de identificadores de arquivo do sistema operacional ou buffers do
RMAN.
Ajustando o comando de backup
Assim como o comando configure o canal, o comando BACKUP tem parâmetros que podem
ajudá-lo a melhorar o desempenho ou limitar os recursos de computação que utiliza um canal para
um RMAN
cópia de segurança. Aqui estão os principais parâmetros de ajuste para o comando BACKUP:

• MAXPIECESIZE O tamanho máximo de um pedaço de backup por canal


• FILESPERSET O número máximo de arquivos por backupset
• MAXOPENFILE S O número máximo de arquivos de entrada que um canal pode ter aberto
emTempo
um dado
• DURAÇÃO DE BACKUP O tempo para concluir o backup

Você viu os parâmetros MAXPIECESIZE, FILESPERSET e MaxOpenFiles antes.


Note-se que MAXPIECESIZE e MaxOpenFiles têm a mesma finalidade como no canal
comandos, exceto que eles se aplicam a todos os canais no backup.
DURAÇÃO BACKUP especifica uma quantidade de tempo para concluir o backup. Você pode
qualificar este
opção com minimizar o tempo para executar o backup mais rápido possível ou com minimizar a
cargaode
todo período
usar de tempo especificado na janela de BACKUP DURAÇÃO. Além disso, você pode
usar o PARCIAL, como você poderia esperar, para salvar um backup parcial que foi encerrado por
opção
causa do tempo
restrições. Por exemplo, para limitar um backup completo a duas horas, executá-lo o mais rápido
possível,
salvar umebackup parcial, use este comando:

Se o backup não for concluído dentro do prazo especificado, o backup parcial ainda é utilizável
cenário
em umde recuperação após um comando sucessiva BACKUP termina o backup e você usar o
opção PARCIAL.

Broca Two-Minute
Criar backups criptografados-RMAN
• criptografia transparente usa uma carteira de banco de dados para criptografar um backup e o
backup pode apenas
restaurado ser para o banco de dados fonte.
• criptografia senha usa uma senha para criptografar um backup e o backup pode ser restaurado
quer para o banco de dados de origem ou para outro banco de dados.
• Você pode usar a criptografia transparente e criptografia de senha no mesmo backup.
• criptografia transparente pode ser ativado por um único backup usando a criptografia SET
comando.

Configurar e usar o Oracle Secure Backup


• O Oracle Secure Backup é hospedado em um servidor administrativo e fornece a interface
entre servidores RMAN e mídia para ambos os bancos de dados e sistemas de arquivos em
todaseletor
• Um a empresa.
de armazenamento OSB consiste de um nome de banco de dados, tipo de conteúdo
e número
passa o de
seletor
cópias.
de armazenamento
RMAN para OSB e processa o trabalho de backup.
• OSB mantém o seu próprio catálogo de backup.
• comandos obtool OSB típica executar tarefas como mostrando hosts registrados (lshost),
dispositivos (lsdev), conjuntos de dados de backup (DDL), e os volumes (lsvol).

Desempenho RMAN Tune


• Você pode se juntar V $ SESSION com V $ PROCESS para identificar os processos do
sistema
associado
operacional
a cada canal RMAN.
• O comando RMAN conjunto de comandos ID ajuda a distinguir processos para diferentes
tarefas de backup em V $ SESSION.
• Use V $ SESSION_LONGOPS para monitorar o status dos trabalhos do RMAN que se
estendem
segundos.
por mais de 6
• paralelização (alocação de múltiplos canais) pode melhorar o desempenho de backup. Você
pode
alocar até 255 canais por sessão RMAN, e cada canal podem ler-se a 64 datafiles
em paralelo.
• Multiplexing é controlado principalmente pela FILESPERSET parâmetros RMAN e
MAXOPENFILES.
• Você canais do RMAN sintonizar usando os MAXPIECESIZE, taxa e MaxOpenFiles
parâmetros.
• A duração do backup parâmetro BACKUP pode ser ajustado para minimizar o tempo para
executar
o backup mais rápido possível, ou pode ser ajustado para minimizar a carga para reduzir o I /
exige no banco de dados.
O

Auto teste
1 . execute
Você temo um arquivo
seguinte de dados
comando por parte dos utilizadores do espaço de tabelas smallfile que
RMAN:
tem um tamanho de 90MB, e você
Quantas seções que esta cópia de segurança criar? (Escolha a melhor resposta.)
A. O comando não é executado porque backups multisection só se aplicam quando múltipla
canais são utilizados.
B. Duas seções de 45MB cada.
C. Duas seções de 40MB cada e uma seção de 10MB.
D. Não é possível prever o tamanho das seções.
2 . Qual dos seguintes atributos ou características são passados por RMAN a OSB quando
executar um backup? Suponha que o cliente RMAN já foi registrado com OSB.
(Escolha todos os que se aplicam.)
A. Tipo de conteúdo
B. hostname Único
C. ID de banco de dados
D. nome de banco de dados
E. Copiar número
F. Número grupo meios solicitadas
3 . Que política de retenção RMAN deverá utilizar se a backups RMAN alavancagem OSB?
(Escolher
a melhor resposta.)
A. RMAN herda a política de retenção de OSB.
B. janela de recuperação.
C. cópias.
D. OSB herda a política de retenção RMAN.

4 . Qual dos seguintes dois pontos de vista dinâmicos de desempenho que você pode usar para
identificar
relacionamento
o entre as sessões do servidor Oracle e canais do RMAN? (Escolha o melhor
responda.)
A. V $ PROCESSO e V $ SESSÃO
B. V $ PROCESSO e V $ BACKUP_SESSION
C. V $ PROCESSO e V $ BACKUP_ASYNC_IO
D. V $ BACKUP_ASYNC_IO e V $ SESSÃO
E. V $ BACKUP_SYNC_IO e V $ BACKUP_ASYNC_IO
5 . Você cria três sessões RMAN para fazer backup de três espaços de tabela diferentes. Sua
terceira
sessão
RMAN
é executado este comando:

Quais são os valores que a coluna V $ SESSION.CLIENT_INFO tem para este comando?
tudo o que se aplicam).
(Escolher
A. rman channel=ORA_DISK_1, id=user bkup.
B. id=user bkup, rman channel=ORA_DISK_1.
C. id = bkup usuário, cmd = tablespace usuários de backup.
D. ID = utilizador bkup.
E. A coluna é client_info em V $ processo, não V $ SESSÃO.
6 . Identificar o local onde saída de mensagem RMAN e solução de problemas informação
podeencontrado.
ser (Escolha todos os que se aplicam.)
A. arquivo de rastreamento servidor The Oracle
B. arquivo de rastreamento O RMAN
C. O V $ PROCESSO vista
D. O log de alerta do banco de dados
E. saída do comando RMAN
F. O sbtio.log arquivo específico do fornecedor
G. A tabela SYS.AUDIT $
7 . Estes parâmetros de instância em seu banco de dados são definidos da seguinte forma:
BACKUP_TAPE_IO_SLAVES = TRUE
LARGE_POOL_SIZE = 200M
JAVA_POOL_SIZE = 200M
PGA_AGGREGATE_TARGET = 200M
Qual é a afirmação correta sobre onde RMAN aloca os buffers de memória para a fita
cópia de segurança? (Escolha a melhor resposta.)

A. RMAN usa o pool de Java na SGA.


B. RMAN usa o pool compartilhado no SGA.
C. RMAN aloca memória do grande piscina no PGA.
D. RMAN aloca memória do grande piscina no SGA.
8 . Qual das seguintes são gargalos que afetam as operações de backup e recuperação RMAN?
(Escolha todos os que se aplicam.)
A. dados de leitura a partir do banco de dados
B. gravação de dados em disco
C. gravação de dados em fita
D. blocos de dados Validating
E. Usando buffers memória SGA contra buffers de memória PGA
9 . Qual parâmetro RMAN controla multiplexação em disco e fita? (Escolha a melhor
resposta.)
A. FILESPERSET do comando BACKUP
B. FILESPERSET do comando BACKUP e MaxOpenFiles do
comando configure
C. FILESPERSET do comando configurar e MaxOpenFiles do
comando BACKUP
D. MaxOpenFiles do comando CONFIGURAR

Respostas de auto-teste
1. D . A dimensão da secção divide o arquivo de dados de entrada, não a peça de backup
saída.
A , B , e C são incorrectas. A está incorreta porque você pode usar backups multisection
sem paralelismo (embora talvez não haja muita razão para isso). B e C são incorrectos
porque o tamanho dos pedaços de saída não pode ser previsto porque vai depender de quão
muitos blocos das seções arquivo de dados, na verdade, contêm dados.
2. A , C , D , e E . Quando RMAN envia uma solicitação de backup para OSB, você deve
nomeespecificar
do banco o(ou ID), o tipo de conteúdo, e o número de cópias. Perante esta informação,
OSB
vai usar o seletor de armazenamento de backup armazenados e enviar o backup para o
backup apropriado
dispositivos e meios de comunicação da família.
B e F estão incorrectos. B é incorrecta porque o nome é usado para registar o RMAN
cliente com o servidor de administração OSB, mas não é necessário para cada backup. F é
porque RMAN não seleciona o número do grupo de mídia; OSB faz.
incorrecta
3. B . Você deve usar uma política de retenção RECUPERAÇÃO janela quando usando
OSB.RMAN
Você vai
comusar uma certa quantidade de espaço em disco na Área de Recuperação
Rápida para enfrentar
recuperação o um certo número de horas cada dia; operações de recuperação mais
precisa para
backups em fita
longos também irá alavancagem gerido pela OSB. Você vai usar um comando obtool para criar
uma mídia
família para backups RMAN.

A , C , e D estão incorrectos. A e D são incorrecto porque não há herança de


políticas de retenção de backup entre RMAN e OSB. C está incorreta porque você não será
capaz de alavancar o conteúdo da Área de Recuperação rápida, tanto quanto é possível com
uma recuperação
política de janela com base.
4. Um . Você se juntar à vista V $ PROCESS e V $ SESSION na ADDR e paddr
Colunas e selecione as linhas em que o início da coluna client_info contém o
RMAN string.
B , C , D , e E são incorrectas. B é incorrecta porque não existe tal vista
V $ BACKUP_SESSION. C , D e E são incorretas porque você usa
V $ BACKUP_ASYNC_IO e V $ BACKUP_SYNC_IO para monitorar o desempenho de
empregos RMAN para I síncrona e assíncrona de E / S, respectivamente.
5. B e D . A visão V $ SESSION tem duas linhas para cada processo de backup, ambos
com o valor especificado no comando RMAN conjunto de comandos ID.
A , C , e E são incorrectas. Um é incorrecta porque os valores para client_info estão em
a ordem incorreta. C está incorreta porque o comando real RMAN não está incluído no
Client_info. E é incorrecta porque client_info é, na verdade, na visão V $ SESSÃO.
6. A , B , D , E , e F . Informações de depuração RMAN e outros saída de mensagem pode
nos arquivos
ser encontrada
de rastreamento Oracle Server, o arquivo de rastreamento RMAN, log de alerta
do banco de
comando RMAN
dados,si amesmo,
saída doea sbtio.log arquivo específico do fornecedor (para bibliotecas
de fitas).
C e G estão incorrectos. O RMAN não gravar qualquer depuração ou informações de
visãoerro
V $naPROCESSO ou na tabela SYS.AUDIT $.
7. D . Se você definir BACKUP_TAPE_IO_SLAVES para TRUE, então RMAN aloca fita
buffers do pool compartilhado a menos que o LARGE_POOL_SIZE parâmetro de
inicialização
caso em que oestá
RMAN
definido,
aloca buffers fita da grande piscina.
A , B , e C são incorrectas. Os parâmetros JAVA_POOL_SIZE e
PGA_AGGREGATE_TARGET não têm efeito sobre a localização dos buffers RMAN.
8. A , B , C , e D . Todas estas opções são possíveis gargalos.
E é incorrecta. A localização dos buffers de dados RMAN não é um factor que pode
causar
gargalo um RMAN rendimento.
e reduzir
9. B . Ambos FILESPERSET e MaxOpenFiles controlar o nível de multiplexação durante
uma operação de backup RMAN.
A , C , e D estão incorrectos. A está incorreta porque MaxOpenFiles na CONFIGURAR
comando também controla o nível de multiplexação, não apenas FILESPERSET. C é
porque FILESPERSET não é uma opção válida para o comando configurar e
incorrecta
MaxOpenFiles não é uma opção válida para o comando BACKUP. D é incorrecta porque
MaxOpenFiles do comando configurar não é o único parâmetro que controla a
nível de multiplexação.
PARTE V

Upgrades e multitenant

Capítulo 29 Atualização de Software Oracle Database e Dados Migrando


Capítulo 30 Atualizando um banco de dados Oracle
Capítulo 31 multitenant Container e Pluggable Database Architecture
Capítulo 32 Como criar e gerenciar multitenant recipiente e plugáveis Databases
Capítulo 33 Gerenciamento de armazenamento, segurança, disponibilidade e desempenho em um
CDB e PDBs
CAPÍTULO 29

Atualizando Oracle Database Software e


Migrando dados

Objetivos do exame
• 062.2.6.1 Descreva métodos de atualização
• 062.2.6.2 descrevem os métodos de migração de dados
• 062.2.6.3 Descreva o processo de atualização
• 062.2.10.1 Migração de dados usando o Oracle Data Pump

Este capítulo aborda a técnica para atualizar o software de banco de dados e migração de dados de
um
banco de dados de uma versão para um banco de dados de outro.
De liberação 11.2. x , a rotina de atualização é o mesmo se você estiver aplicando um conjunto
de patches
mover-se (para
a partir de, por exemplo, libertação 12.1.0.1 a 12.1.0.2 libertar) ou de executar uma
(A partir de, por
actualização exemplo, principais
de libertação 11.2.0.3 a 12.1.0.1). Em ambos os casos, é necessário instalar um novo
Antes
Oraclede liberar 11.2. x , um grande lançamento necessária uma nova Oracle Home, mas um patchset
Home.
foiOracle
o aplicada
Home
a existente. Agora, apenas a patches ou atualizações patchset indivíduo são aplicados,
no lugar,
uma casa para
existente.
Tendo atualizado o software de banco de dados, você deve atualizar o banco de dados próprio ou
novocriar umde dados com o novo software e mover os dados nela. atualização do banco de dados é
banco
descrito no
capítulo seguinte. migração de dados para um novo banco de dados usando o utilitário Data Pump é
descrito neste
capítulo.

Descrever métodos de atualização


Movendo-se de uma versão da base de dados para outro envolve dois processos distintos: a
actualizar
software de banco de dados e atualizar o banco de dados. O software eo banco de dados deve estar
sempre na
mesmo nível de release, exceto para o curto período enquanto o banco de dados está sendo
atualizado.
atualizar é realizado
O software
com o Oracle Universal Installer (OUI). Depois, há duas opções para
a atualização do banco de dados: usando o Database Upgrade Assistant (DBUA), que automatiza a
maior parte
passos, do todos os passos manualmente.
e realizar

Atualização de software
produtos Oracle tem um número de versão multifacetada, com cinco elementos:

• número da versão major


• número de banco de dados versão de manutenção
• número da versão do servidor de aplicação (sempre zero para um banco de dados)
• número de versão específico do Componente
• número da versão específica de Plataforma

Para determinar a liberação de seu banco de dados, consultar o V vista $ VERSÃO. Dentro do
bancopara
possível de dados,
alguns écomponentes instalados para estar em diferentes versões. Para determinar o que
está
o lançamento,
instalado no
consultar a exibição DBA_REGISTRY. A Figura 29-1 mostra estas consultas sobre
uma baseem
rodando de Windows
dados de 64 bits.
Figura 29-1 Determinação da libertação da base de dados

Na figura, a libertação da base de dados é 12.1.0.1.0, que foi o primeiro 12 c versão de produção,
especificamente, libertar 12, a primeira versão de manutenção. O quarto dígitos indica o patchset.
1 está incluído na primeira versão de produção (a versão final beta, utilizado para o desenvolvimento
patchset
tanto da
livro, foipresente
12.1.0.0.0). A segunda consulta na figura mostra que todos os componentes instalados no
base de dados também são na libertação 12.1.0.1.0, com a excepção de Application Express
(APEX).
tem a suaÁPICE
própria rotina de upgrade, e o lançamento do APEX é em grande parte independente do
lançamento
base de dados.
do

DICA Termos como 12 c e 11 g são muito sem sentido em um contexto técnico; eles são pouco mais
que as etiquetas de marketing. Você vai descobrir que DBAs profissionais sempre identificar a sua
versão número
liberar com o para quatro casas decimais.

O método de atualização de software é usar a OUI. Um conjunto de patches (identificado pelo


o número
quartode
elemento
libertação)
de do banco de dados é entregue como uma imagem instalável auto-contido,
que inclui
cópia da OUI
umaque é apropriado para o patchset. OUI lançamento executando o script runInstaller.sh
(Linux) ou o arquivo setup.exe (Windows) que está incluído com o patchset e siga exatamente a
rotina de instalação detalhado no Capítulo 1 . O software deve ser instalado em um a Oracle recém-
Casa. OUI irá pedir para a localização. A melhor prática é criar a nova casa sob o Oráculo
criado

diretório base, ao lado do Oracle Home existente. Para começar a utilizar a versão recém-instalada
do
software, ajustar suas variáveis ORACLE_HOME e meio ambiente PATH para apontar para a nova
Em seguida, criar (ou upgrade) um banco de dados.
casa.

EXAME DICA Não é necessário instalar uma versão base do produto antes de instalar um conjunto
de patches.
Patches de são completas imagens de software instaláveis.

Ao usar OUI para instalar uma casa de banco de dados Oracle (se uma versão base ou de um
OUIconjunto
irá detectar
de patches),
todas as instalações
a anteriores. Ele pode fazer isso lendo o conteúdo do inventário
que terá sido criado durante a primeira instalação. Se OUI detectar uma instalação anterior,
OUI,
pedirá se quaisquer bases de dados existentes devem ser atualizados. Se você responder “sim”,
após a OUI de instalação será iniciado o DBUA para realizar essas atualizações de banco de dados.
Alternativamente, você pode responder “não” e executar o DBUA mais tarde. Esta abordagem
significaasque
separar tarefas
vocêdepode
atualização de software e atualização de banco de dados. Isso também significa
que você
bancos depode
dadosatualizar
manualmente, executando scripts, em vez de usar o DBUA.

Atualização de banco de dados: DBUA ou Manual


DBUA pode ser lançado pela OUI ou como uma ferramenta stand-alone a qualquer momento. É uma
interfacedurante
orienta gráficaoque
processo de atualização de banco de dados, embora também possa ser conduzido
através dedeum
interface linha,
command-
caso em que há solicitações precisam ser respondidas.
A funcionalidade DBUA é como se segue:

• automatiza todo o processo


• Suporta de instância única e ambientes em cluster
• bases de dados upgrades e Automatic Storage Management armazenamento (ASM)
• Cheques e (sempre que possível) fixa pré-requisitos
• Registra erros e gera um relatório Hypertext Markup Language (HTML) do upgrade
processo
Usando o DBUA é, sem dúvida, a maneira mais fácil de atualizar e é menos propenso a erros do
técnica
que manual.
um Mas nem sempre é apropriado. Por exemplo, se o tempo de inatividade é crítico,
pode rápido
mais ser para atualizar manualmente. DBUA geralmente faz todos os passos sequencialmente,
muitos
banco de deles enquanto
dados não estáo disponível para uso. A atualização manual pode ser capaz de executar
ealguns
outros,
passos
quer antes
em paralelo
ou depois do período de tempo de inatividade essencial.
A atualização manual irá normalmente envolvem as seguintes tarefas:

• Verifique o espaço do sistema e os espaços de tabela SYSAUX


• Ajuste os parâmetros recém obsoletos ou obsoletas

• Executar scripts para atualizar o dicionário de dados e componentes instalados


• recompilar todo o código armazenado

Se você estiver usando DBUA ou um método manual, atualização direta para 12,1 é possível a
lançamentos:
partir destes

• 10.2.0.5 (a libertação de terminal de 10 g )


• 11.1.0.7 (a libertação de terminal de 11 g R1)
• 11.2.0.2 ou mais tarde

Todos os outros lançamentos deve ser atualizado para um dos listados antes de atualizar para
12,1.
Descrever os métodos de migração de dados
A atualização do banco de dados tem duas restrições principais. Primeiro, ele deve ser executado na
mesma
não pode plataforma.
se mover aVocê
partir, por exemplo, o Windows para AIX durante uma atualização. Em
segundo lugar,
qualquer formavocê
de reorganização
não pode realizar
ou implementação de novas funcionalidades durante a atualização.
Depois ele nada
concluída, tem mudou além do fato de que você está executando o banco de dados off novo
binários. A migração de dados fica em torno de ambas essas limitações.
A migração é o processo de transferência de dados a partir de uma base de dados para outro.
atualizar,
Dentroisso
do significa
contexto adecriação de um novo banco de dados do novo lançamento e copiar todo o
aconjunto
partir dodebanco
dadosdedodados
usuário
antigo para o novo. A nova base de dados pode ser configurada, com
antecedência,
recursos habilitados
com toda
queavocê
novadeseja usar. Então, como os dados são inseridos, vai assumir as
acaracterísticas
nova versão. deAlém disso, o novo banco de dados pode estar em uma plataforma diferente. A
adesvantagem
migração como de dados
uma técnica de atualização é o tempo de inatividade necessário. Um upgrade de
um
pode envolver tempocom
banco de dados DBUA
de inatividade de menos de uma hora; uma migração pode levar horas ou
mesmo
o volume dias,
de dados
dependendo
a ser transferida.

DICA Muitos DBAs preferem migração para atualizar porque resulta em um novo dicionário de
dadosdeixado
sem “limpa”,
para trás por anos de (ab) uso lixo.

A migração de dados é realizado geralmente com o utilitário de exportação / importação Data


vantagens
Pump. são
Especial
as seguintes:

• Data Pump pode funcionar em todas as plataformas.


• Fonte de caracteres e destino conjuntos não precisa ser o mesmo.
• A fonte pode ser qualquer liberação de 10,0 para cima.
• Não é necessário transferir todo o banco de dados se apenas um subconjunto é necessário.
• Segmentos de dados será reorganizada como parte do processo.

Se a migração é a partir de um pré-10 g de base de dados, que ainda pode ser realizado a partir
de qualquer
utilitários IMP / libertação
o legados usando
exp.
Descreva o processo de atualização
atualização do banco de dados é uma operação que é cheio de perigo. Teoricamente, uma atualização
não pode
mas bom,fazer
mas há
nada
sempre a possibilidade de que o comportamento das aplicações usando o banco de
vai mudar. Por essa razão, o teste é vital. Há tipicamente seis etapas para uma atualização:
dados

1. Prepare-se para atualizar. Escolha um método de atualização, instale o novo Oracle Home,
desenvolver
planejar eum teste
determinar quais novos recursos para implementar.
2. atualizar um banco de dados de teste. Testar o processo de atualização em um clone não
produção
Em particular,
do bancoobserve
de dados.
o tempo de inatividade necessário.
3. Teste o banco de dados atualizado. Completar os testes planejados. Em particular, garantir
quedesempenho não regrediu. Iterate as etapas 2 e 3 conforme necessário até que todas as
questões são
resolvido.
4. Prepare o banco de dados de produção. Pare toda a atividade do usuário de acordo com um
calendário
tempo deacordado parae, em seguida, fazer um backup completo.
inatividade
5. Atualize o banco de dados de produção. Siga o procedimento de atualização tentou-e-
testado.
de backup
Dê uma
após
completa
a conclusão. O tempo de inatividade será agora acabou.
6. Ajuste o banco de dados atualizado. Como o sistema de volta em uso, monitorar o
desempenho
realizar trabalhos
e de ajuste pró-ativa e reativa normal.

Migrar dados usando o Oracle Data Pump


O uso de Data Pump para transferir tabelas, esquemas, e vários tipos de objetos individuais entre
bancos de dados foi discutido no Capítulo 17 . Bomba de dados também pode ser usado para copiar
um banco
objetos de de
usuário
dadospodeinteiro;
ser todos
lido a partir de um banco de dados e criado em outro. Como os objetos
representada em um arquivo de despejo Data Pump logicamente em vez de fisicamente, não há
são
nenhuma
não pode ser
razão
lidopara
a partir
que eles
de um banco de dados de uma versão em uma plataforma e escrita em um
banco de dados de outro
liberar, possivelmente em outra plataforma. Assim, a base de dados pode (com efeito) ser promovido
processo de exportação / importação. É possível fazer o downgrade através da mesma técnica, mas
pela
somente
no bancose deosdados
objetosorigem não necessita de quaisquer recursos que não estão disponíveis no destino.
Se o novo banco de dados é configurado com vários recursos habilitados, os dados serão
recursos
enfrentar
durante
estesa importação. Se executado inteiramente em padrões, uma importação completa irá
criar espaços
esquemas e objetos
de tabela,
como eles estavam na fonte antes de inserir os dados, mas eles podem ser pré-
criado.
Por exemplo, os espaços de tabelas no banco de dados origem pode estar usando os mecanismos de
armazenamento
extensões gerenciados
de idade pordedicionário e segmentos freelist de gestão; os espaços de tabela de destino
criado, com antecedência, com os padrões atuais de gestão de extensão local e espaço de segmento
seria
gestão.
automático
Um problema com o uso de bomba de dados para atualização é a exigência de espaço. Um
requerem
grandeumabancogrande
de dados
quantidade de espaço para os arquivos de despejo gerados pela exportação.
Alémum
para disso, se adeatualização
banco é
dados de destino em uma máquina diferente, o despejo terá de ser copiado para o
controle remoto
-Máquina, onde a mesma quantidade de espaço será necessário novamente. Há também uma
penalidade de
exportação tempo;
deve a antes de a cópia pode começar, e a cópia deve ser concluída antes da lata
concluir
de importação
início. Um modo de rede de importação evita tanto o espaço e as questões de tempo.
Para usar o modo de rede de Data Pump, um link de banco de dados deve existir no banco de
ao banco
dadosdededados
destinofonte. Este link deve se conectar a um usuário com o
papel DATAPUMP_EXP_FULL_DATABASE. Em seguida, executar a importação do banco de
dados deum
(Como destino
usuário com o papel DATAPUMP_IMP_FULL_DATABASE) vai lançar processos de
trabalho
o emdados fonte que ler os dados e escrevê-lo através do link de banco de dados para o
banco de
banco de dados, onde mais processos de trabalho gravar os dados no banco de dados. Esse
destino
mecanismo
precisa paraevita
sediara os dados no disco como um arquivo de despejo e também significa que a
exportação,
todos executados
a cópia,
simultaneamente.
ea importação A Figura 29-2 mostra o início desta operação.
Figura 29-2 lançamento de uma importação completa no modo de rede

Na Figura 29-2 , o utilizador é ligado a uma base de dados denominada orclb. Esta é uma
base12.1.0.1
de dados.liberação
O link de banco de dados orcla se conecta a um banco de dados 11.2.0.3. Em seguida,
o comando
trabalho queimpdp
vai executar
inicia um
uma migração completa de todos os dados do usuário de orcla em orclb,
através do
ligação. banco deedados
Esquemas espaços de tabela será criada como eles estavam no banco de dados origem,
embora
ser pré-criada
possam com características apropriadas, se desejado. Durante a importação, haverá muitos
mensagens da forma “ORA-31684: Objeto ... já existe” como a importação encontra objetos que
fazem parte de esquemas semeados da Oracle. Estes podem ser ignorado. O resultado final será uma
completa
migração de todos os dados do usuário.

DICA Um modo de rede de exportação / importação não pode usar o caminho direto; a leitura e
escrita de
devem passar
tabelas
pelo cache de buffer do banco de dados, utilizando o caminho de mesa eterna. Isso
pode significar
rápido quanto seque
poderia
ele não
esperar.
é tão

Exercício 29-1: executar uma migração de banco de dados Data Pump completa Neste
exercício,
simular umavocê vai
migração de dados a partir de uma base de dados para outro. Supõe-se que o banco de
dados fonte
banco de dados
é umcriado a partir do modelo de Uso Geral, com os esquemas de exemplo instalados.

1. Crie uma exportação completa de banco de dados, usando o diretório DATA_PUMP_DIR


padrão.
2. Descarte quaisquer espaços de tabela e esquemas que mantêm os dados do usuário. Serão
necessários os seguintes comandos:

Neste ponto, você tem um banco de dados que é desprovido de dados do usuário.
3. importação os dados do utilizador na base de dados.

4. Verifique se os espaços de tabelas e usuários caiu no passo 2 foram criados e que a


esquemas são preenchidos com mesas e outros objetos.
Broca Two-Minute
Descrever métodos de atualização
• O Database Upgrade Assistant automatiza a atualização e tudo antes e após verificações.
• Um upgrade manual dá o controle total DBA de todas as etapas, que é um processo mais
complexo
mas possivelmente mais rápido.
• Uma atualização é uma operação no local; não é possível alterar a plataforma, localização
física,
conjunto de caracteres, ou mesmo nada, exceto a liberação.
• atualização só é possível a partir de uma lista definida de versões anteriores.

Descrever os métodos de migração de dados

• Uma bomba de Dados exportações migração de um banco de dados e as importações para


outro.
• A migração pode ir em todas as plataformas, bem como lançamentos.
• O banco de dados origem pode ser qualquer liberação de 10,0 em diante.
• A importação modo de rede elimina a necessidade de organizar um arquivo de despejo no
disco.
Descreva o processo de atualização
• Um novo Oracle Home, da nova versão, deve ser instalado com a OUI.
• Determine se usar DBUA ou uma atualização manual.
• Criar e implementar um plano de teste.
• Executar a atualização de produção.
• Verifique o sucesso da operação.

Migrar dados usando o Oracle Data Pump


• Um novo Oracle Home, da nova versão, deve ser instalado com a OUI.
• Criar um novo banco de dados.
• Criar todos os objetos que você deseja configurar (tais como espaços de tabela).
• Executar uma exportação completa do banco de dados fonte.
• Transfira o arquivo de despejo para o banco de dados de destino.
• Importe o arquivo de despejo.
• Redirecionar usuários para o novo banco de dados.

Auto teste
1 . O que pode ser feito durante uma atualização ao usar o Database Upgrade Assistant?
(Escolha duas respostas.)
A. A conversão de um personagem legado definido para Unicode
B. atualização direta de qualquer versão de 11 g a 12 c
C. actualização directo a partir da libertação do terminal de 10 g a 12 C
D. Verificação das condições de pré-requisito
2 . Que considerações são necessárias para a utilização do espaço durante uma atualização?
(Escolha o melhor
responda.)
A. Nenhum: uma atualização é uma operação no local e não requer armazenamento
adicional significativo.
B. É possível que o sistema e SYSAUX tablespaces irá expandir durante uma
atualizar.
C. até o dobro do espaço necessário para os dados serão necessários durante a atualização.
D. Não archivelogs será gerado porque uma atualização não é recuperável e não refazer é
gerado.
3 . Qual das seguintes pode ser realizado com uma migração Data Pump? (Escolha tudo
respostas corretas.)
A. Actualiza a partir de qualquer libertação de 10 g ou 11 g
B. conversão do conjunto de caracteres
C. Um mover a partir de um 32-bit para uma plataforma de 64 bits
D. atualização direto a partir do lançamento do terminal de 9 i
4 . Qual destes corretamente descreve um modo de rede de operação Bomba de dados?
(Escolha
responda.)
o melhor
A. Criar links de banco de dados em bancos de dados de origem e de destino, e executar
expdp
fonte
na e impdp no destino.
B. Criar um link de banco de dados na fonte apontando para o destino, e executar expdp na
fonte.
C. Criar um link de banco de dados no destino apontando para a fonte, e executar impdp na
destino.
D. Run expdp na fonte, escrever um arquivo de despejo para um tubo, e executar impdp
sobre
lendo
o destino,
o arquivo de despejo do tubo.
5 . O que o Database Upgrade Upgrade Assistant? (Escolha a melhor resposta.)
A. software de banco de dados Oracle e bancos de dados
B. software banco de dados Oracle
C. bancos de dados Oracle
D. estruturas de armazenamento de dados do usuário e atributos lógicos de dados do usuário
6 . Sob que circunstâncias deve uma exportação Data Pump ser realizada quando a realização
de uma
migração de banco de dados? (Escolha a melhor resposta.)
A. O banco de dados deve ser aberto somente leitura.
B. O banco de dados deve estar no modo de montagem.
C. O banco de dados deve ter restringido sessão habilitado.
D. O banco de dados deve estar aberto.
7 . Se uma operação de importação completa de banco de dados tenta importar objetos em um
espaço
existir,
de otabela
que vai
queacontecer?
não faz (Escolha a melhor resposta.)
A. A tabela deve ser pré-criado, ou a operação irá falhar.
B. A tabela será criado se a Oracle Managed Files tiver sido habilitado no
banco de dados de destino.
C. A importação será bem-sucedido se o espaço de tabela é especificado com o
TABLESPACES
parâmetro.

D. Os objetos serão importados para o padrão de tabela permanente do banco de dados.

Respostas de auto-teste
1. C e D . Atualização direta é possível a partir do lançamento do terminal de 10 g , mas
lançamentos.
não de mais
O DBUA
cedo executa scripts de verificação antes e depois do upgrade.
A e B são incorrectas. A está incorreta porque a conversão conjunto de caracteres não
faz parte do do DBUA; você deve usar outros utilitários para isso. B é incorrecta
A funcionalidade
porque directa
actualizar a partir de 11 g é possível apenas para o terminal de libertação de 11,1 ou
qualquer libertação de
11.2.0.2.
2. (Oracle
B.É usual para
continua objetos
ficando do dicionário
maior ...). de dados para aumentar em tamanho como
resultado
A , C , e Ddeestão
uma incorrectos.
atualização A está incorreta porque o espaço, muitas vezes, ser
necessário
objetos para dados
do dicionário. C está incorreta porque os dados do usuário não é afetado por uma
atualização.são
mudanças o geralmente limitados aos metadados. D está incorreta porque um upgrade
execução de um grande número de consultas DML e DDL contra o dicionário de dados, o
envolve
que faz
gerar refazer.
3. A , B , e C . Data Pump é compatível em todas as versões que suportam, de 10,0
em diante. Ele pode mover dados entre quaisquer plataformas suportadas, realizando
conjunto decomo
conversão caracteres
ele faz isso.
D está incorrecta. Isso é incorreto porque o Data Pump foi introduzido com o
migrar
lançamento
de 9 i , você
de 10
deve
g . usar
Para o legado exp utilitários / IMP.
4. C . A importação modo de rede é iniciada por impdp, embora os processos de trabalho
tantoserá
a origem
executado
eo destino.
em
A , B , e D são incorrectas. A e B são incorrecta porque uma operação de modo de rede
é
gerenciado a partir de apenas o destino. D está incorreta porque não é possível importar um
despejo
arquivar até que tenha sido concluída. A técnica descrita, no entanto, funcionar com o
legado imp / utilidades exp.
5. C . O DBUA atualiza bancos de dados e nada mais.
A , B , e D são incorrectas. A e B estão incorretas porque o software deve ser atualizado
com a OUI, não o DBUA. D é incorrecta porque a reestruturação armazenamento e objectos
é um que deve ser feito após a actualização, não durante a atualização.
tarefa
6. D . A exportação é uma operação perfeitamente normal de exportação sem exigências
especiais.
A , B , e C são incorrectas. A e B estão incorretas porque o banco de dados deve estar
aberto caso contrário, não é possível para o Data Pump para criar sua tabela mestre. C
ler escrever;
éincorreto porque embora modo restrito pode ser uma boa idéia, não é um requisito.
7. B . Se Oracle Managed Files (OMF) foi habilitado, espaços de tabela será criado
adequadamente.
A , C , e D estão incorrectos. A está incorreta porque a importação tentará criar o
de tabela, usando OMF ou a definição arquivo de dados do banco de dados fonte. C é
incorreto porque o parâmetro TABLESPACES identifica uma lista de espaços de tabela para
importar; isto
não é relevante para uma importação completa. D é incorrecta porque se uma tabela
adequada
nem pode nem
ser criado,
existe haverá um erro.
CAPÍTULO 30

Atualizando um banco de dados Oracle

Objetivos do exame
• 062.2.7.1 descrever os requisitos de atualização quando determinados recursos ou opções são
usadas em oracle Database
• 062.2.7.2 Use o Pre-Upgrade Information Tool Antes de executar uma atualização
• 062.2.7.3 preparar o novo Oracle Home Antes de executar uma atualização
• 062.2.8.1 atualizar o banco de dados para o Oracle Database 12 c usando a atualização do banco
de dados Assistant (DBUA)
• 062.2.8.2 Executar uma atualização manual para o Oracle Database 12 c usando scripts e
ferramentas
• 062.2.9.1 migrar para o Unified Auditoria
• 062.2.9.2 Executar tarefas pós-upgrade

Este capítulo descreve o processo de atualização de um banco de dados Oracle. Este poderia ser um
upgrade
novo grande
paralançamento
um (como de 11.2.0.4 a 12.1.0.1) ou poderia ser aplicar uma atualização
patchset dentro
libertação (tal como
de uma partir de 12.1.0.1 a 12.1.0.2). De qualquer maneira, o princípio é o mesmo.
Assumindo
software queatualizado
já foi o (usando o Oracle Universal Installer [OUI] para criar um novo
Oracle Home), alguns passos devem ser seguidos antes, durante e depois do processo de
actualização.
Descreva
ou opçõesrequisitos
são usadasdenoatualização
Oracle Database quando
Características Certain
Uma atualização envolve executando scripts de encontro ao dicionário de dados que irá atualizar
vários banco dee dados
características opções. Dependendo do que opções foram instalados e configurados, alguns
trabalhos preparatórios podem ser necessários.

Oracle Label Security e Oracle Data Vault


Estas opções estão fora do âmbito do currículo Oracle Certified Professional (OCP), mas a sua
impacto sobre a atualização pode ser testado. Em resumo, Oracle Label Security (OLS) é uma
técnicao para
filtrar acesso de usuários às linhas. Isto é, em adição ao mecanismo usual de privilégios. dois
pode ter a mesma privilégios SELECT ou Data Manipulation Language (DML) sobre uma mesa,
usuários
mas mesmo
embora eles executar instruções SQL idênticos, eles vão ver um subconjunto diferente da mesa. A
filtragem
com base éem atributos de sessão em que os usuários não têm nenhum controle, e eles não vão estar
ciente de que
filtragem o ocorrido.
tenha
Oracle Data Vault acrescenta outra camada para o modelo de privilégio e o papel da Oracle. Os
usuáriosepodem
em grupos, ser colocados
as políticas podem ser concebidas que o acesso dos grupos de controle para objetos de
usuário,
pode ter mesmo
o privilégio
que eles
necessário. Estas políticas se aplicam a todos os utilizadores, incluindo aqueles
com o SYSDBA
privilégio. Esta é a única maneira de limitar o acesso aos dados pelo banco de dados de outra forma
administradores.
todo-poderoso
Para determinar se quer OLS ou Data Vault foi instalado no banco de dados, executar esta
consulta:

Se uma ou outra opção é instalado, então é possível que $ table SYS.AUD terão de ser
Umrealocados.
script é fornecido no novo 12. x Oracle Home para fazer isso:

O roteiro é bem documentado e inclui instruções precisas sobre o que fazer se qualquer OLS ou
Data Vault ou ambos estão instalados, com variações dependendo da versão exata do banco de dados
a ser
atualizado. Copie o script do recém-instalado 12. x Oracle Home para o Oracle Home atualmente em
usar, estudar as instruções no script, e depois executá-lo enquanto estiver conectado como SYSDBA.

Oracle Warehouse Builder


Oracle Warehouse Builder (OWB) é uma ferramenta gráfica para concepção, construção, gestão e

manutenção de processos de integração de dados em sistemas de business intelligence. Está além do


escopo do OCP. OWB não é enviado com o 12 c banco de dados; portanto, se ele estiver instalado
Curriculum
banco de dados para ser atualizado, a rotina de atualização não irá atualizá-lo, e ele não será mais
no
utilizável.
no entanto,Isto
possível
é, para uma 12 c da base de dados para interagir com uma libertação separado
11.2.0.3 (nada instalação OWB. Existem três técnicas para isso:
anteriormente)

• Dê o 12 atualizado c acesso banco de dados para um já existente stand-alone (não que é,


instalado
de um 11como
g instalação
parte de banco de dados) OWB.
• Manter uma instalação OWB já configurado em um 11 g banco de dados rodando fora do 11 g
doCasa,
Oracle
e continuar a usar isso.
• Configurar uma nova instalação OWB stand-alone.

Todos estes métodos descer para a mesma coisa: você não pode mais usar OWB no banco de
atualizar
dadoseapós
deve, portanto, fornecer uma instalação OWB externo para o banco de dados atualizado.
Para determinar se OWB está instalado no banco de dados, executar esta consulta:

Use o Pre-Upgrade Information Tool Antes


Executar uma atualização
Após a instalação do novo 12 c banco de dados Oracle Home, você terá acesso ao Pre-
Ferramenta de Atualização da Informação. Este é um script, preupgrd.sql, instalado no
ORACLE_HOME / rdbms / admin. Executar este script contra o banco de dados a ser atualizado.
Será
gerar um relatório detalhando quaisquer problemas, bem como um “fix-up” script que irá corrigir
alguns problemas;
questões terão que de
seroutros
tratadas manualmente.
Figura 30-1 mostra um exemplo de executar este script em um banco de dados do Windows.

Figura 30-1 Executando o Pre-Upgrade Information Tool

Na figura, o banco de dados está atualmente em versão 11.2.0.3. O script é executado a partir do
instalado
recém(mas ainda não utilizados) 12 c Oracle Home. Ela produz três arquivos, gerados em um
(Cfgtoollogs \ <db_name> \ preupgrade) abaixo do diretório do Oracle Base:
diretório

• detalhes preupgrade.log todas as verificações que foram executadas com conselhos sobre itens
que devem estar
abordada.
• preupgrade_fixups.sql contém comandos que devem ser executados no banco de dados antes
deiniciar a atualização para corrigir quaisquer problemas.
• postupgrade_fixups.sql contém comandos que devem ser executados no banco de dados após
o upgrade
Completou.

O arquivo de log e os scripts devem ser estudados com cuidado; eles dão informações e
podeinstruções
fazer o upgrade
que correr mais suavemente.

Prepare o novo Oracle Home antes de executar uma


Atualizar
O novo Oracle Home deve ser instalado, usando o OUI. Esta instalação (ou interativo ou silencioso
instalar impulsionado por um arquivo de resposta) deve ser um software-only instalar, como
mostrado na Figura 30-2 .

Figura 30-2 A instalação de um Oracle Home antes de atualizar um banco de dados

Não tome a opção de criar um banco de dados. É possível selecionar a opção para atualizar um
banco de dados existente. Esta cadeia vontade do software de instalação para uma corrida da
Database Upgrade
(DBUA). Não há nada
Assistant
de errado com isso na teoria, mas a maioria dos administradores de banco de
dados (DBAs) vai
quer separar estes dois processos, a fim de tomar o tempo para executar a informação de pré-
Ferramenta manualmente e considerar cuidadosamente seus conselhos. Há também a questão do
atualização
tempo de
instalar mais
inatividade.
atualizar fazer
em umaa operação irá geralmente envolvem um longo período de inatividade
do que
separando estas acções.
Neste ponto, considere o ouvinte banco de dados. Se você estiver usando um ouvinte de banco
Infra-estrutura
de dados emGridexecução
(GI) ema partir
casa, não
de um
é necessária nenhuma ação adicional. Um ouvinte GI pode
oferecer suporte
qualquer versão doa conexões
banco de dados. Mas se o seu ouvinte de banco de dados está sendo executado
fora do
você vaibanco
quererdedesligar
dados Oracle
o ouvinte
Home,correndo o velho Oracle Home e substituí-lo por um ouvinte
do novo Oracle Home. Esta atualização ouvinte não precisa estar relacionado com a atualização de
banco
ser realizada
de dados
antes
e pode
ou depois. O processo é para copiar os arquivos de configuração do Oracle Net do
velho
casa para o novo e faça as edições que possam ser necessárias para entradas que incluem caminhos
de diretório.
Atualizar o banco de dados para o Oracle Database 12 c
usando
o Database Upgrade Assistant
O DBUA é um assistente guiado que automatiza o processo de configuração de uma base de dados
existente
com a nova
para
versão
executar
do software. Ele também pode ser executado noninteractively por uma única
fornecido com argumentos de linha de comando apropriados que respondem a todas as perguntas.
instrução
Para uma atualização interativa, em um terminal gráfico conectar-se à recém-instalado versão 12
Oracle
c Home, definindo o ORACLE_BASE, ORACLE_HOME e variáveis PATH de forma
Em seguida, inicie o executável DBUA. No Linux, este é o arquivo $ ORACLE_HOME / bin /
adequada.
DBUA, e sobre
Windows, ele estará em seu botão Iniciar no menu Configuração e Migração Ferramentas para o
Oracle Home. Estes são os principais passos:
novo

1. Selecione Operação Escolha Atualização Oracle Database para atualizar de um importante


precedente
liberar ou escolha Mover banco de dados de uma versão diferente 12,1 Oracle Home para
a um conjunto de patches dentro da grande lançamento.
atualizar
2. Selecionar banco de dados Uma lista de todos os bancos de dados detectados é apresentada.
Escolha o banco
atualizados de dados
nesta a sere de início de sessão fornecimento detalhes para um usuário de
operação,
banco de dados
privilégios. No Windows,
com SYSDBAvocê deve fornecer a senha do Windows para o sistema
conta na qual o 12 c Oracle Home está instalado.
operacional
3. Pré-requisitos verificará DBUA é executado algumas verificações (semelhante ao Pre-
Upgrade
controlos)
Information
contra aTool
base de dados. Na Figura 30-3 , duas questões foram identificados.
Figura 30-3 O terceiro passo da caixa de diálogo DBUA

A primeira edição mostrado na Figura 30-3 é informativo. DBUA detectou que o Enterprise
Control Manager banco de dados (a facilidade de gerenciamento fornecido com liberação de
10 g e 11
bancos degdados) está instalado. Este será removido durante a atualização. A segunda
questãodeé dados
banco que a foi configurado para trabalhar com um Lightweight Directory Access
Protocol (LDAP)
diretório e alguns ajustes para isso será necessário. DBUA pode fazer isso durante a
atualizar, ou pode ser ignorado por agora e tratadas mais tarde.
4. Opções de atualização Há algumas opções que dão uma quantidade limitada de controle
sobre
processo
o e quanto tempo vai demorar atualizar. Os padrões são geralmente correta. Os
seguintes
são opções a considerar:
• Select Atualize Paralelismo O padrão é baseado no número de processamento central
unidades (CPUs) detetado. Você pode pensar que é muito alto e vai inundar a máquina
trabalhar ou que é muito baixo e que um valor maior elevaria a atualização por meio mais
com
rápido.
• recompilar objetos inválidos durante a pós atualização, Recompilation
Paralelismo Permitindo DBUA para recompilar durante a atualização fará com que a
abrangente, mas também vai atrasar o reinício postupgrade. Você pode querer recompilar
operação
manualmente mais tarde em seu lugar.

• Atualize fuso horário dados Dependendo do que já está instalado, você pode precisar
atualizar os arquivos de fuso horário do banco de dados, seja como parte da atualização ou
posterior.
• reunir estatísticas antes da atualização Se você já reuniu estatísticas para o
banco de dados, isso não será necessário.
5. Opções de Gestão Seleccione se para configurar o banco de dados com banco de dados
Expresso
(Padrão), para registrá-lo com Cloud Control, ou nenhum.
6. Mover Banco de Dados Arquivos DBUA pode mudar fisicamente o banco de dados ea
recuperação
Área durante
rápida
o upgrade. Isso pode ser útil se, por exemplo, você quer tomar o
oportunidade de converter de armazenamento do sistema de arquivos para o Automatic
Storage Management
armazenamento. Será,(ASM)
naturalmente, aumentar a duração da operação significativamente.
7. Configuração de rede Este é um pedido para registrar o banco de dados com um LDAP
diretório e com um ouvinte de banco de dados.
8. Recuperação Opções Should DBUA realizar um backup completo off-line antes de
atualizar?
padrão oé Sim, mas se você já tem um backup, um tempo considerável pode ser salvo por
não permitir isso.
9. Resumo Esta é uma descrição do que será feito.
10. Progresso Esta é uma exposição do que está acontecendo, atualizado conforme a atualização
prossegue.
Após a conclusão, o DBUA irá exibir o resultado, como se mostra na Figura 30-4 .
Figura 30-4 A conclusão de um atualizar exercício DBUA

A tela Resultados podem dar algumas instruções (como o respeito arquivos de fuso horário,
Figura
como
30-4
mostrado
), bem como
na o status da atualização. Segui-los, bem como quaisquer medidas sugeridas
Pré-Ferramenta de Atualização da Informação.
pelo

Executar uma atualização manual para o Oracle


Databasescripts
Usando 12 c por
e ferramentas
A atualização manual é talvez um pouco mais de trabalho do que usar DBUA, mas dá mais controle
DBA. Estes são os passos a seguir:
ao

1. Quando estiver conectado à velha Oracle Home e com o banco de dados aberto, fazer logon
no ebanco
executar
de dados
a ferramenta de informações de pré-atualização fornecido com o novo software.
Estudar
e os scripts que elede
o arquivo loge tomar as medidas adequadas.
gera
2. Faça backup do banco de dados fonte.
3. Prepare o Oracle Home recém-instalado. Copie o arquivo de senhas e o parâmetro de
instância
arquivo para o novo Oracle Home. Se nenhum parâmetro precisa ser ajustado (a pré-
atualização
Ferramenta de informação irá informá-lo sobre isso), faça os ajustes em primeiro lugar,
usando o= cláusula SPFILE de ALTER SYSTEM.
SCOPE
4. Desligue o banco de origem.
No Windows, é necessário remover o serviço velho Windows na qual o banco de dados
runs e criar uma nova. Por exemplo, para o banco de dados chamado ORCLA, execute estes
comandos do antigo Oracle Home:

Executar este comando a partir do novo Oracle Home:

5. Defina o seu ambiente para conectar ao novo Oracle Home e abra o banco de dados com
SQL * Plus. Use o UPGRADE comando de inicialização. O modo de atualização desativa
logons
que não usam o privilégio SYSDBA, desabilita gatilhos do sistema, e, mais importante,
permite conexões para um banco de dados que tem um dicionário de dados em um estado
indeterminado:
uma versão nemnem
outra.
6. Execute o script de atualização paralela, que é fornecido no ORACLE_HOME / rdbms /
admin
diretório. Este é um script Perl que invoca o paralelismo para reduzir o tempo de inatividade
necessário.Perl
intérprete UMA apropriado é fornecido no Oracle Home. Aqui está o código para o Windows:

Aqui está o código para Linux:

7. O script de atualização paralelo termina por desligar o banco de dados. Abri-lo como normal.
8. Execute a ferramenta de pós-atualização de status para gerar um resumo do resultado da
atualização
exercício. Se ele mostrar quaisquer erros ou quaisquer componentes como não válido, tomar
as medidas
executar a ferramenta,
adequadas. execute
Para o utlu121s.sql script.

9. Executar scripts para concluir as operações postupgrade. O script catuppst.sql tenta corrigir
quaisquer problemas encontrados pela atualização, eo script ultrp.sql recompila tudo
PL / SQL. Aqui está um exemplo Linux:
inválido

Re-executar a Ferramenta de Estado pós-atualização para garantir que não há problemas


remanescentes.
Migrar para Unified Auditoria
Capítulo 16 cobrimos como configurar e ativar auditoria unificada. Aqui está um resumo:

• Por padrão, a 12 c recurso de auditoria unificada não está habilitado.


• Todos auditoria anterior (auditoria padrão, auditoria de grão fino e auditoria específica em
componentes)
continuar a funcionar
irá sem alterações no banco de dados atualizado.

• Conceder o AUDIT_ADMIN e papéis AUDIT_VIEWER conforme necessário.


• Configurar políticas de auditoria unificadas que correspondem ao regime de auditoria
existente.
• Durante um período de tempo de inatividade, permitir auditoria unificada. No Linux, vincular
novamente
Do Windows,
os executáveis;
copiar na biblioteca
em de vínculo dinâmico apropriado.

Executar tarefas Postupgrade


Além das etapas identificadas pelo Pre-Upgrade ferramenta de informação e documentado no
roteiro postupgrade_fixups.sql, várias ações podem ou não ser necessária, dependendo do
ambiente e se o upgrade foi manual ou feito com DBUA. Todos esses itens devem,
no entanto, ser considerados:

• variáveis de ambiente Atualização em todos os scripts relevantes. variáveis críticas são


ORACLE_HOME,
PATH, e ORACLE_SID.
• No Linux, atualizar o / oratab arquivo / etc.
• No Windows, verifique todas as configurações do registro para o banco de dados.
• Se um banco de dados catálogo Recovery Manager (RMAN) está em uso, conecte com o
RMAN
executável e atualizar o catálogo (não é necessário para atualizar o banco de dados de
catálogo
• Se banco em si). Express foi instalado como parte do upgrade, confirmar e (se necessário)
de dados
configurar suas portas de escuta. A rotina para isso é a seguinte:

• Habilitar o Database Vault (se instalado).

• Repor todas as senhas. Se a atualização é de libertação 10. x , todas as senhas devem ser
alteradas
assumem para
os atributos de senha da versão atual.
• Definir limites para alertas de uso de espaço de tabela. alertas de espaços de tabelas são
desativados
terá de serpela atualização e
restabelecida.
• Implementar novos recursos, conforme apropriado.

Exercício 30-1: Simule Algumas tarefas de atualização para este exercício, presume-se que não
há, em um banco de dados que precisa ser atualizado. É, no entanto, possível executar algumas das
verdade,
étarefas
necessário.
que

1. Determine quais componentes estão instalados no banco de dados.

2. Execute o Pre-Upgrade Information Tool.

Estudar a saída e os arquivos gerados. Estes são os preupgrade.log arquivo de log e a


scripts de preupgrade_fixups.sql e postupgrade_fixups.sql.
correção-up

3. Abra o banco de dados no modo de atualização, confirme isso, e tentar se conectar como um
não-
usuário SYSDBA. Reinicie o banco de dados. Use comandos como estes:

4. Em um prompt de comando, exibir todas as opções para executar DBUA.

Observar a grande variedade de opções que podem ser aplicadas ao executar DBUA-muitos
do que for solicitado quando executá-lo de forma interativa.
mais
5. Execute o script para identificar e recompilar objetos inválidos.

Estudar a saída do script.

Broca Two-Minute
Descreva requisitos de atualização quando determinados recursos ou opções são
usadasDatabase
oracle em
• componentes instalados, sua versão e status são listados na vista DBA_REGISTRY.
• Alguns componentes (tais como a APEX) têm os seus próprios mecanismos de atualização; os
outros
Oracle
(talWarehouse
como Builder, Label Security, e Vault de Dados) têm necessidades específicas.
Use a ferramenta de informações de pré-atualização Antes de executar uma
• A Ferramenta de Informação de pré-atualização é um script SQL fornecido com o novo
atualização
software queainda
enquanto é executado
estiver usando a versão anterior.
• A ferramenta inspeciona o banco de dados e gera um relatório que descreve as ações
necessárias
fornece scripts
e corrigir-up com os comandos a serem executados antes e depois do upgrade.

Prepare o novo Oracle Home Antes de executar uma atualização


• O novo Oracle Home deve ser instanciado antes de atualizar o banco de dados.
• Se realizar uma atualização manual, você deve copiar alguns arquivos de configuração (como
o exemplo
arquivo de parâmetro eo arquivo de senha) para a nova casa.

Atualizar o banco de dados para o Oracle 12c banco de dados usando a


atualização do banco de dados
Assistente
• O DBUA é executado a partir do novo Oracle Home e automatiza todo o processo de
atualização.

• DBUA pode ser executado de forma interativa, ou para atualização silenciosa, ele pode ser
executado a partir
linha com do comando
argumentos que substituir a caixa de diálogo.

Executar uma atualização manual para o Oracle 12c banco de dados usando
scripts
• Ume upgrade
ferramentas
manual segue as mesmas etapas que o DBUA, mas eles são chamados
individualmente
a partir da linha de comando.

Migrar para Unified Auditoria


• Após a atualização para 12 c , auditoria unificada não está habilitado.
• Para habilitar a auditoria unificada, configurar políticas de auditoria apropriadas e, em
seguida,
executável.
vincular novamente o Oráculo

Executar tarefas pós-upgrade


• O Pre-Upgrade Information Tool (executado manualmente ou por DBUA) terá gerado
instruções sobre as tarefas de pós-atualização necessárias.
• Opcional (mas aconselhável) tarefas pós-upgrade incluem estatísticas de encontro para o
banco
recompilar
de dados
objetos
e inválidos.
• Trazer novos recursos em uso é um passo que pode ser feito a qualquer momento após a
atualização.

Auto teste
1 . Qual destes componentes não está mais disponível no banco de dados após uma atualização
para12oc ? (Escolha a melhor resposta.)
A. Dados Vault
B. Oracle Label Security
C. Oracle Warehouse Builder
D. auditoria de banco de dados padrão
2 . Antes de executar o Pre-Upgrade Information Tool, preupgrd.sql, como você deve iniciar o
base de dados? (Escolha a melhor resposta.)
A. Inicie o banco de dados com UPGRADE STARTUP do antigo Oracle Home.
B. Inicie o banco de dados com abra Inicialização do antigo Oracle Home.
C. Inicie o banco de dados com UPGRADE STARTUP do novo Oracle Home.
D. Inicie o banco de dados com abra Inicialização do novo Oracle Home.
3 . Qual é a saída do Pre-Upgrade Information Tool, preupgrd.sql? (Escolha o melhor
responda.)
A. scripts de Fix-up com comandos a serem executados antes e depois da atualização
B. Scripts para executar durante a atualização

C. Instruções de como executar a atualização


D. O script solicita que relatórios e scripts devem ser gerados
4 . Quando você estiver atualizando um banco de dados manualmente, o que arquivos
normalmente
Início velhoserOracle
copiados
parado
o novo? (Escolha todas as respostas corretas.)
A. controlfile Banco de Dados
B. arquivo de parâmetro Instância
C. arquivo de senha
D. arquivos de fuso horário
E. The AUDIT_FILE_DEST directory
5 . Qual é o método correto para usar o DBUA? (Escolha a melhor resposta.)
A. Inicie o banco de dados no modo de atualização do novo Oracle Home e depois executar
DBUAdo novo Oracle Home.
B. Inicie o banco de dados no modo de atualização do antigo Oracle Home e depois
executar
do novo
DBUA
Oracle Home.
C. Inicie o banco de dados em modo de abertura do antigo Oracle Home e depois executar
DBUAnovodoOracle Home.
D. Desligue o banco de dados e, em seguida, executar DBUA do novo Oracle Home.
6 . Para minimizar o tempo de inatividade para os usuários, que estas operações podem ser
realizadas
banco de
enquanto
dados é aaberto para uso? (Escolha todas as respostas corretas.)
A. O backup antes de iniciar a atualização
B. Executando o Pre-Upgrade Information Tool, o preupgrd.sql roteiro
C. Executando o script Perl catctl.pl que paraleliza o processo de atualização
D. Recompilar todos inválidos PL / SQL após a atualização
E. estatísticas Gathering no dicionário de dados após a atualização
F. Executando a ferramenta de status de pós-atualização, o script utlu121s.sql
7 . Você está executando uma atualização manual de um banco de dados e ter aberto o banco de
dados
modo de atualização. Se um usuário tenta se conectar ao banco de dados neste momento,
qual será o(Escolha a melhor resposta.)
resultado?
A. A conexão será bem-sucedida, mas pode comprometer o sucesso do upgrade.
B. A conexão será bem-sucedida, mas todos DML e Data Definition Language (DDL) será
bloqueado.
C. A conexão falhará porque o ouvinte banco de dados não vai gerar sessões contra um
banco de dados no modo de atualização.
D. A conexão falhará a menos que o usuário tenha o privilégio SYSDBA.
8 . Quais as opções que você tem após o 12 c atualizar, se você tiver configurado tanto padrão

auditoria e auditoria de grão fino na fonte de 11 g de banco de dados? (Escolha a melhor


resposta.)
A. Você deve desativar ambos auditoria padrão e de grão fino antes da atualização e
configurar
auditoria unificada após a atualização.
B. Após a atualização, você pode habilitar auditoria unificada e deixar a auditoria padrão e
de granulação
correndo emfina
paralelo para um certo tempo para assegurar que os resultados são os
mesmos.
C. Após a atualização, a auditoria padrão e auditoria de grão fino continuará a funcionar até
quepermitir
você auditoria unificada, momento em que eles vão deixar de funcionar.
D. Após a atualização, você pode migrar primeiro a auditoria padrão para auditoria
auditoria
unificada de seguida,
e, em grão finoaà auditoria unificada.
9 . Algumas das tarefas pós-upgrade é demorado, e você pode querer executá-los depois
abrir a base de dados para utilização. Se você optar por abrir o banco de dados para uso
antes de PL
inválida recompilar
/ SQL com o script utlrp.sql, o que pode resultar? (Escolha a melhor resposta.)
A. O banco de dados não será aberto se qualquer um dos pacotes PL / SQL fornecidos SYS-
propriedade
inválido. são
B. O banco de dados será aberta, mas se algum usuário tentar usar inválido PL / SQL que
ainda
sido
não
recompilados,
tem eles vão receber erros.
C. O banco de dados será aberta, mas se algum usuário tentar usar inválido PL / SQL que
ainda não
sido tem
recompilados, será compilado automaticamente.
D. O banco de dados será aberta, mas se algum usuário tentar usar inválido PL / SQL que
ainda
foram
não recompilados,
tem ele será executado em modo interpretado, em vez de modo nativo.
10 . Após uma atualização bem-sucedida com o DBUA, você acha que os usuários remotos não
podemconectar-se
mais ao banco de dados. O que poderia ser o problema? (Escolha duas respostas
corretas.)
A. Você está executando o ouvinte de banco de dados fora da casa grade Infra-estrutura, e
devereconfigurado
ser para apontar para a nova versão do banco de dados.
B. Que você tenha encerrado o ouvinte banco de dados rodando fora da antiga casa e não ter
iniciado uma
ouvinte a partir da nova casa.
C. Você omitiu copiar o arquivo tnsnames.ora da velha casa para a nova casa.
D. Você omitiu copiar o arquivo de senhas a partir da antiga casa para a nova casa.
E. Você não reiniciar o banco de dados após a atualização.

Respostas de auto-teste
1. C . Após uma atualização, Oracle Warehouse Builder ainda pode ser usado, mas deve
instalado
ser externamente.
A , B , e D são incorrectas. A e B estão incorretas porque embora Data Vault e OLS
tem requisitos especiais para upgrade, eles ainda estão disponíveis. D é incorrecta porque
auditoria padrão é habilitado após a atualização, embora você pode querer converter para
auditoria vez.
unificada

2. B . A ferramenta é fornecida com o novo Oracle Home, mas executado em um banco de


do antigo
dadosOracle
aberto Home.
A , C , e D estão incorrectos. A e C são incorrecta porque ACTUALIZAÇÃO
inicialização
o novo (a partir
Oracle Home) de para o próprio upgrade, não as etapas preparatórias. D é
é usado
incorrecta
porque o banco de dados não pode ser aberto a partir do novo Oracle Home neste momento.
3. Um . Os scripts são preupgrade_fixups.sql e postupgrade_fixups.sql.
B , C , e D estão incorrectos. B e C são incorrecta porque a ferramenta está em causa
antescom passos
e após a atualização, não durante. D é incorrecta porque a ferramenta não é interactivo;
há prompts.
4. B e C . O arquivo de parâmetro e arquivo de senha deve ser copiada porque seu padrão
localização é derivado da Oracle Home.
A , D , e E são incorrectas. A está incorreta porque há arquivos de dados devem ser
movidos;
atualização a operação no local. D está incorreta porque o novo Oracle Home terá nova
é uma
arquivos de fuso horário. E é incorrecta porque a AUDIT_FILE_DEST permanece
após a atualização.
inalterada
5. C . O DBUA deve ser executado a partir da nova casa e vai cuidar de todo o necessário
startups e desligamentos.
A , B , e D são incorrectas. A e B estão incorretas porque o DBUA irá gerir a
iniciar no modo de atualização. D é incorrecta porque a DBUA automatiza todo o processo,
incluindo o desligamento antes da atualização.
6. A , B , D , E , e F . Todas estas etapas podem ser executadas contra um banco de dados
aberto.
C é incorrecta. O script catctl.pl pode ser executado somente quando o banco de dados
modo,
estádurante o qual os utilizadores não regulares podem se conectar.
em UPGRADE
7. D . Uma instância de banco de dados iniciado no modo de atualização não aceitará
aqueles
quaisquer
com o outros
privilégio
queSYSDBA.
logons
A , B , e C são incorrectas. Estes são incorreta porque um banco de dados no modo de
atualização
protegido contraétodas as ligações não-SYSDBA.
8. C . Não há necessidade de activar a auditoria unificada, mas quando o fizer, outras
Pare.auditorias
A , B , e D são incorrectas. A está incorreta porque você pode continuar a usar métodos
mais antigos
de auditoria após a atualização. B e D são incorretas porque não é possível executar o mais
métodos em conjunto com o novo.
velho
9. C . Pacotes inválidos são recompilados quando necessário, mas eles vão ser um acerto
na sessão
de desempenho
que faz isso.
A , B , e D são incorrectas. A e B estão incorretas porque recompilação é automática
quando necessário. D está incorreta porque se o PL / SQL está definido para compilação
nativa ou
interpretação, ainda vai ser recompilados na demanda.
10. B e E . B está correta porque se você parar o antigo ouvinte, você deve configurar e
iniciar uma
substituição. E é correto porque após a atualização, DBUA deixa o banco de dados
desligado.
A , C , e D estão incorrectos. A está incorreta porque a nova versão do banco de dados
registrar com o ouvinte GI, como fez antes do upgrade. C e D são incorrecta porque

embora não para copiar esses arquivos podem causar problemas para o DBA, ele não deve
ser relevante
para os usuários.
CAPÍTULO 31

Multitenant Container e Pluggable


Arquitetura de banco de dados

Objetivos do exame
• 063.2.1 Descrever a Arquitetura de banco de dados multitenant Container
• 063.2.2 Explique Provisioning banco de dados Pluggable

A opção do Oracle multitenant (também conhecido como bancos de dados conectáveis ) permite que
os administradores
(DBAs) para consolidar
de banco
vários
debancos
dados de dados em um. Em grande medida, os bancos de dados
previamente
ainda podem separados
ser utilizados e administrados independentemente após a conversão para o ambiente de
vários usuários.
Enquanto os usuários finais e desenvolvedores não devem estar cientes de qualquer alteração, o
Oracle
um pouco
multitenant
confuso para
podeosa princípio
DBAs. não sermedo. Depois de ter uma firme compreensão da arquitetura,
tudo vai cair no lugar.

Apesar de não ser examinada, é certamente útil para compreender as implicações de


licenciamento
Arquitetura Oracledo
multitenant e sua importância futura. Para usar a funcionalidade manchete de
consolidação de banco de dados, você deve adquirir licenças Enterprise Edition, mais o Oráculo
opção. Este não é barato. No entanto, a funcionalidade multitenant Individual arrendamento está
multitenant
incluídoememtodas
cobrar nenhum
as edições e não oferecem benefícios consideráveis. A 12.1.0.2 liberação Guia de
atualização
inclui a seguinte declaração: “A arquitetura não CDB está obsoleta no Oracle Database 12 c , e pode
ser desupported e não disponível em um comunicado após a Oracle Database 12 c Release 2. A
recomenda o uso da arquitetura CDB.”Esta declaração inequívoca de direção deixa claro que
Oracle
a partir de agora, os DBAs deve considerar o Oracle multitenant para todas as instalações.

Descrever o banco de dados multitenant Container


Arquitetura
Muitos sites da Oracle tem um grande número de bancos de dados. A carga de trabalho de
eadministração
os custos de hardware
de muitosebancos
de licenças
de dados
levar muitos usuários em direção a uma estratégia de
consolidação
pode ser feitode
emservidores.
vários níveis,
estecomo muitas bases de dados sobre uma máquina, muitos esquemas
em umde dados, ou talvez um ambiente virtualizado de muitas imagens do sistema operacional, cada
banco
um apoiando
banco de dadosumque funciona em uma única máquina física. Multitenant é mais simples de
implementar
Existe, fisicamente,
do que um
qualquer
bancoum de dados
destes:em uma máquina. Mas logicamente, há muitos bancos de
dados que epodem
acessados gerenciados
ser de forma independente. Isso pode resolver uma série de problemas de
negócios de forma rápida e
simplesmente.

Conceitos multitenant
Um ambiente Oracle multitenant consiste de uma base de dados do recipiente (CDB) e um ou mais
bases de dados passíveis de ligação (PDBs). Um recipiente é um conjunto de espaços de tabela
exposta
base de dados.
ao mundo
Na criação,
como umaa CDB
lógica
vai conter um mínimo de dois recipientes. O container raiz ,
chamado
CDB $ ROOT, é o recipiente de gestão para o meio ambiente. De um modo geral, ninguém que não
o DBA nunca vai se conectar ao recipiente raiz. O recipiente semente (nomeado PDB $ SEED) é
seja
fornecido, somente leitura recipiente que pode ser clonado para criar recipientes conectáveis
uma
(nomeado
por favor).o que você
Aqui estão alguns pontos importantes:

• Existe um banco de dados, o CDB.


• Há uma instância de banco de dados, com um Sistema Global Area (SGA) e um conjunto de
processos em segundo plano.

• A APO é nada mais do que um conjunto de espaços de tabela e um serviço.


• Os serviços PDB estão expostos a usuários pelo ouvinte banco de dados.
• Quando você conectar a um serviço PDB, o escopo da sua sessão é limitada aos espaços de
tabela
associada com o APO.
• Objetos definidos no recipiente raiz pode ser compartilhado e visível para todos os PDBs.
• Objetos (incluindo usuários) definidas em um PDB são privados para o seu APO.
• Cada APO tem seu próprio dicionário de dados, definindo os seus objetos locais, com
ponteiros
objetos para
definidos
compartilhada
no dicionário de dados do contêiner raiz.

Um banco de dados pluggable é um conjunto de espaços de tabela, incluindo um espaço de


tabela SYSTEM
dicionário. com uma
Este dicionário dadosdefine os objetos locais para o recipiente, que são usuários e
de dados
objetos de esquema (como tabelas). Todos PL / SQL, enquanto os comandos SELECT, DML e DDL
seus
conectado ao recipiente afeta apenas esses objetos locais. Quando ligado ao recipiente de raiz, é
executado
possível (se você tem as permissões apropriadas) para ver o quadro inteiro, consultando os dados
dicionários de todos os recipientes. No recipiente raiz, você pode criar usuários e funções que são
propagada para todos os recipientes. Os privilégios esses usuários têm em qualquer recipiente pode,
contudo, ser
diferente.
Há algumas considerações quando usando o Oracle multitenant com outras opções:

• Todos os recipientes devem usar o mesmo conjunto de caracteres. Esta é uma limitação
natural
é apenas
do fato
um banco
de quede
hádados, o CDB.
• Data Guard deve ser configurado no nível do CDB, porque só existe um fluxo de refazer. isto
No entanto, é possível excluir alguns PDBs de bancos de dados standby. Note-se que isso é
apenas de liberação 12.1.0.2.
possível
• Database Vault deve ser configurado individualmente em cada APO. Não existe sobreposição
dos reinosPDBs.
através
• Criptografia deve ser configurado individualmente por PDB. Cada APO gera e administra sua
chaves próprias, armazenadas em uma carteira compartilhada.
• Unified auditoria pode ser configurado com os níveis CDB e PDB. Ao criar uma política na
raiz
recipiente, acrescentando CONTAINER = ALL para o comando Criar política de auditoria
propagá-la a todos os PDBs. Em um APO, quaisquer políticas criadas são locais para a APO.
• GoldenGate e replicação XStream estão cientes multitenant; eles podem capturar e aplicar
mudanças por PDB. Streams, no entanto, não é suportado em um ambiente multitenant.

Enquanto a opção do Oracle multitenant destina-se principalmente para a consolidação de muitos


basesanteriormente
de dados não CDB separadas em um CDB, existe outra opção: multitenant único
arrendamento.
usa a arquitetura
este
CDB / APO, mas tem apenas um banco de dados pluggable per CDB. Um caso
podeaser
para criação
feito de todos os bancos de dados desta forma. A razão é que, enquanto alguns sites podem
não precisa do de
características servidor
consolidação da Oracle multitenant, todos os sites enfrentar problemas de tempo
edeatualização
inatividadeque
porpode
causaser
dealiviado
remendarem um ambiente Oracle multitenant. Patches precisam ser
a apenas o recipiente de raiz; o recipiente pluggable não precisa ser corrigido.
aplicados

DICA A opção do Oracle multitenant é licenciado em cima do Enterprise Edition, mas multitenant
Arrendamento está incluído em todas as edições do banco de dados.
Individual

Para entender um ambiente multitenant, você deve familiarizar-se com um conjunto de pontos de
CDB vista.
ambiente,
Em umasnão-
vistas do dicionário de dados utilizados são prefixados com USER_, ALL_, e
DBA_. ovisualiza mostrar todos os objetos pertencentes ao usuário que está consultando-los. Os
usuário
pontos de
objetos sobre
vistaostudo
quais
Mostrar
o usuário
tudotem privilégios, independentemente do esquema em que residem. o
DBA
visualizações mostrar todos os objetos no banco de dados. Há um quarto conjunto de pontos de vista,
com o prefixo
existem pontosCDB_.
de vistao em
CDBtodas as bases de dados, mas eles só têm sentido no recipiente raiz de um
CDB. Na raiz
recipiente, os pontos de vista CDB mostrar todos os objetos no CDB. Com efeito, eles são um
UNION
vistas emALLcadadorecipiente,
DBA isto é, o recipiente de raiz, o recipiente de sementes, e todos os recipientes
conectáveis.
Em um banco de dados não-CDB ou um banco de dados pluggable, os pontos de vista CDB mostrar
as mesmas
pontos de vista.
linhasOcomo
CON_ID o DBA
coluna numa vista CDB identifica o recipiente a partir do qual a linha
Containers são identificados exclusivamente pelo ID recipiente e também pelo nome. A Figura 31-1
veio.
mostra
que listauma
os espaços
consultade tabela associados a cada recipiente. Note-se que a consulta foi executada
enquanto
ligado ao recipiente de raiz.

Figura 31-1 O mapeamento de espaços de tabela de recipientes em uma CDB

A Figura 31-1 mostra que o CDB contém quatro recipientes:


• Container 1 é o contêiner raiz, CDB $ ROOT. Ele tem cinco espaços de tabela: SYSTEM,
UNDOTBS1, TEMP e usuários.
SYSAUX,
• Container 2 é o recipiente semente, PDB $ SEED. Este tem três espaços de tabela: sistema,
SYAUX e TEMP.
• Os recipientes 4 e 5 são recipientes conectáveis nomeados PDBA e PDBB. Eles têm cada
tablespaces chamado SYSTEM, SYSAUX, TEMP, e outros espaços de tabelas de dados do
usuário.
O identificador exclusivo para um espaço de tabela em um CDB não é o seu nome. É o nome
ID recipiente.
qualificadoAs
com
opiniões
o se juntaram na consulta são V $ CONTENTORES, que tem uma linha
para cada e CDB_TABLESPACES, que tem uma linha para cada tabela. A coluna de junção é
recipiente,
CON_ID. consultas semelhantes contra (por exemplo) CDB_DATA_FILES, CDB_USERS, e
CDB_TABLES iria mostrar os arquivos de dados, usuários e tabelas que existem em cada recipiente.

Os drivers para multitenant


A opção do Oracle multitenant destina-se principalmente para ser de uso para consolidação de
servidores. muitos sites
tem uma infinidade de bancos de dados. Isso pode ser porque há muitas aplicações e cada um está
emseu
o execução
próprio no
banco de dados, ou talvez seja porque existem bancos de dados separados para a
produção, teste, e outros fins. Em alguns casos, pode ser que esses bancos de dados não usar o
desenvolvimento,
capacidade do hardware no qual eles são implantados e não necessitam de administração em tempo
completo
integral
Apoio, suporte. Mas eles fazem cada necessitam de armazenamento, memória, recursos de CPU e
tempo de administração,
particularmente para remendar e atualizações. Também pode haver implicações de licenciamento se
os bancos deem
distribuídos dados
muitas
são máquinas.
Em um ambiente não-CDB, cada instância de banco de dados tem seu próprio SGA, processos
dicionário
em segundo
de dados.
plano,Eles
e podem ter a sua própria Oracle Home, ou eles podem ser executados em
máquinas. Isto é potencialmente uma sobrecarga significativa. Criando um CDB e executando cada
diferentes
banco
um de dadosconectável
recipiente como irá resultar em poupanças; você tem apenas um conjunto de processos em
segundo
(O qual será
plano,
normalmente
um SGA muito menor do que o total dos ASG individuais), uma cópia de diversos
estruturas de dicionário, e um Oracle Home. A arquitetura CDB permite a partilha destes recursos
dados
com a consequente poupança.
Quando consolidação de servidores, é vital que não deve haver necessidade de mudanças no
e que aplicativo
cada base de dados previamente isolado deve permanecer completamente separada da outra
bancos de dados. Se estas condições não possa ser cumprida, o exercício de consolidação pode
custar
A arquitetura
mais dogarantias
que ele salva.
do Oracle multitenant que nenhuma alteração de aplicação serão necessários
e que
as aplicações anteriormente separadas estão completamente isoladas umas das outras. Os usuários
finais e
desenvolvedores não terá nenhuma maneira de determinar que o banco de dados foi convertido a
partirde
base dedados
um não-CDB
para um recipiente conectável. A separação de funções entre os diversos aplicação
administradores e usuários é mantida; Além disso, em grande medida, cada APO pode ter seu
epróprio
ser administrada
DBA como se fosse um não-CDB.
Talvez o mais importante é a carga de trabalho de administração. Muitos DBAs experientes
gerenciar
preferemum grande banco de dados, em vez de muitos pequenos. Isso é relevante para uma questão
em particular:
aplicação de patches e atualização. Patches e atualizações (doravante referida como atualizações )
fazer
para os binários tanto
alterações que são executados o exemplo Oracle ou para o dicionário de dados (ou a ambos).
Se uma atualização afeta
apenas os binários (a forma mais simples de remendo), em seguida, a Oracle multitenant
extremamente
remendar reduzHome
o Oracle a carga
offde trabalho;
que o CDB é executado vontade patch de efeito todos os PDBs dentro
adele.
atualização
E se inclui scripts que mudam o dicionário de dados, então é necessária geralmente nenhum
trabalhononaentanto, às vezes isso não é o caso. objectos partilhados são definidos no recipiente de
PDBs;
raiz, com para eles em cada recipiente pluggable. Se essas referências exigem atualização, isso
ponteiros
ocorre
automaticamente. No pior dos casos (tal como um melhoramento principal), objectos da APO pode
ser invalidado.
Nesse caso, elesDentro
devem ser recompilados. Isso pode ser feito manualmente, ou ele vai ocorrer
automaticamente
o objeto é acessado quando
por uma sessão de usuário. Em todos os casos, a Oracle garante que a aplicação
de qualquer nunca
atualização tipo devai deixar um objeto de usuário anteriormente válido em um estado
irrevogavelmente inválido.de dicionário de dados críticos são definidos apenas uma vez, no
O facto das estruturas
o caminho
recipiente
paradeumraiz,
método
abre extremamente fácil e rápido de upgrade. Considere a situação onde um
CDB
é a versão 12.1.0.1 e contém muitas PDBs. Para aplicar o patchset 12.1.0.2, o DBA pode instalar
o novo Oracle Home na mesma máquina e criar uma nova versão 12.1.0.2 CDB. Em seguida, o
pode desligar os PDBs do antigo 12.1.0.1 CDB e ligá-los para o novo 12.1.0.2 CDB. o
DBA
tempo de inatividade envolvido nesta operação podem ser em minutos de um dígito para cada APO.
Os PDBs
movidos
técnica pode
para sere desligardeserá
individualmente,
ligar acordo com qualquer
detalhado horário
no capítulo 32 . é conveniente para o DBA e os usuários.
o
O CDB eo Container Root
O CDB é a base de dados, montada e aberta pelo exemplo. O recipiente de raiz é o contentor
a partir do qual todos os recursos compartilhados são gerenciados. Entre estas são as seguintes:

• O controlfile
• A tabela de undo
• O log redo
• O SGA instância e processos em segundo plano
• O dicionário de dados
• Os usuários comuns e papéis

O recipiente raiz terá um mínimo de quatro espaços de tabela: SYSTEM, SYSAUX, desfazer e
TEMP. Ele também terá os usuários e funções comuns que são propagados para todos os PDBs, e vai
ter todos os objetos do Oracle fornecidos que cada APO requer. Estes objetos incluem, por exemplo,
os pacotes PL / SQL fornecidos. Operações que afetam esses recursos compartilhados pode ser
todos
apenas através de uma sessão ligada ao recipiente raiz.
realizado
O recipiente raiz é o único recipiente para o qual você pode se conectar sem passar através de um
ouvinte.
bancoSedevocê
dados
estiver conectado na máquina servidor e você definir seu ambiente ORACLE_SID
variável para o nome da instância do CDB, pode ligar para o recipiente raiz. Não é possível
conectar a um PDB desta forma porque há apenas um exemplo, com apenas um nome. Seguindo um
conexão com o recipiente raiz, é possível mover a sua sessão para outro recipiente. Figura 31-2
demonstra isso.

Figura 31-2 Movendo sua sessão de um recipiente para outro

Figura 31-2 mostra uma configuração da variável de ambiente ORACLE_SID para o nome de
usuário
de um CDBA do exemplo
Windowse, em seguida, ligar a este com a comunicação entre processos (IPC),
o ouvinte de banco de dados. SQL * Plus inclui uma CON_NAME comando SHOW, que mostra o
contornando
nome
o recipiente
do ao qual a sessão está conectado, que é inicialmente o recipiente raiz. Então
o comando ALTER SESSION é usado para mover a sessão para um recipiente pluggable chamado
JW1.
PDBs: Pluggable Recipientes
Um recipiente de conector, também referido como uma base de dados conectável , é um conjunto de
áreasser
para de usado
tabela por
e osdesenvolvedores
objectos e usuários finais como se fosse um banco de dados
independente.
PDBs ter um espaço de tabela SYSTEM como não-CDBs. Apenas os metadados do usuário
PDBespecífico
é armazenado
para ono espaço de tabela SYSTEM do PDB. Além disso, há links lógicos para o
objectos definidos no recipiente de raiz. Os nomes de objectos são o mesmo em um APO como em
comum
um não-CDB
CDB, tais como
ou OBJ
um $, TAB $, e FONTE $. Assim, o APO aparece para uma aplicação como um
stand-
sozinho banco de dados. O DBA para uma aplicação em um PDB será, como regra geral (a que há
poucas exceções), não estar ciente de que pode haver uma ou muitas outras PDBs partilha de
uma
recursos na
CDB.
Cada APO tem um número de identificação de recipiente e recipiente nome único. Estes são
controlfile
registrados
e exposta
no através dos pontos de vista V $ recipientes e V $ pdbs. Quando ligado a um
recipiente conectável, linhas referentes aos outros do que o recipiente actual recipientes são filtrados
para fora.
A partir da raiz, todos os recipientes são visíveis.

DICA A visão V $ pdbs é idêntica à vista V $ recipientes, exceto que ele exclui a linha
para o recipiente de raiz.

Cada banco de dados pluggable tem um nome global única. Este é o nome do recipiente e é
comoutilizada
o serviço padrão a ser registrado com o ouvinte banco de dados. A Figura 31-3 mostra
ligações
PDBs chamado
a JW1 e JW5 através do seu serviço padrão e o ouvinte (usando o EZConnect
sintaxe) com consultas que mostram que o banco de dados de hospedagem e exemplo, chamado
CDBA, são sempre os
mesmo.
Figura 31-3 Ligação a um banco de dados de recipiente com dois inquilinos PDB

Explique Provisioning banco de dados Pluggable


Uma grande vantagem de se mudar para a Oracle arquitetura multitenant é a facilidade com que
bancos de dados podem ser criados, copiados e realocados. Este é o processo de provisionamento .
conectável

Técnicas para Provisioning Pluggable Containers


Há quatro técnicas para provisionamento de um recipiente:

• Criar um novo PDB do recipiente semente. Este método cria um novo APO consistindo de
nada mais do que o sistema, SYSAUX, e espaços de tabela TEMP. Isso normalmente seria
usado para uma nova implementação do aplicativo.
• Criar um novo PDB de um não-CDB. Este método tem um banco de dados existente, que deve
ser12. libertar X , converte-o num recipiente de conector, e conecta-a em um CDB. Isso seria
tipicamente ser parte de um exercício de consolidação. Não é possível converter de volta para
não-CDB.
• Clonar um APO para outro novo PDB. A fonte pode ser um PDB no mesmo ou um CDB
diferente.
Isto poderia ser usado para a criação de ambientes de teste ou desenvolvimento de um APO
produção.
• Conecte um PDB desconectado. A APO pode ser desconectado de um CDB e depois
conectado
mesmo ouaoum diferente CDB. Isso pode ser usado para mudar ou atualizar um APO.

Qualquer que seja a técnica é apropriada, todos são geralmente rápido. A técnica requer a cópia
do clone
arquivos de dados que compõem os espaços de tabela da APO. O tempo para isso será dependente
do tamanho
arquivos de dados.
do As outras técnicas são tipicamente minutos um único dígito.

As comunicações entre Containers


Quando os bancos de dados são implantados como bancos de dados não-CDB, muitas vezes haverá
razõeseles,
entre parasecompartilhar
os bancos dedados
dados estão em servidores separados ou até mesmo no mesmo servidor.
Isto é
geralmente é realizado usando links de banco de dados para acessar tabelas em outros bancos de
dados. Segue
provisionamento-los na mesma CDB como PDBs, o mesmo método pode ser usado. Mas desde que
os objetos
dois PDBs residir no mesmo recipiente, é possível criar uma versão rápida de um link de banco de
(conhecido como uma ligação rápida intra-CDB ) sob as cobertas. Normalmente, um link de banco
dados
de dadosProtocol
Control irá utilizar Transmission
(TCP). Em um ambiente Oracle multitenant, é possível otimizar o banco de dados
comunicações através de ligações usando IPC. Lembre-se que a APO não sabe onde outro PDB ou
banco de dados CDB reside, portanto, a definição ea utilização de um link de banco de dados são os
não
mesmos,
ambos bancos
independentemente
de dados residem.
de onde
Todos os usuários do aplicativo fará uso de links como a única
maneira
entre de se comunicar
os recipientes.
De dentro do container raiz, é possível consultar objetos em todas as PDBs, mas apenas em um
formaestritamente
controlada. Um usuário comum pode ser definida na raiz e será propagada para todos
containers. Se este utilizador em cada recipiente (incluindo a raiz) possui uma tabela ou uma vista ou
acom
mesma
sinónimos
definição, todos os exemplares de este objecto pode ser consultado a partir da raiz usando
os RECIPIENTES
cláusula em uma instrução SELECT. Este exemplo consulta a tabela DUAL, que existe em comum

esquema SYS:
Broca Two-Minute
Descrever a arquitetura de banco de dados multitenant Container
• A arquitetura do Oracle multitenant ajuda recursos de servidor de uso de forma mais eficiente
através
memória
da partilha
da instância e processos, bem como objetos comuns SISTEMA tablespace.
• Atualizando uma multitenant atualizações de banco de dados recipiente todos os PDBs dentro
do recipiente.
• Um CDB em qualquer ponto no tempo pode conter zero, um, ou até 252 PDBs definidos pelo
utilizador.
• A CDB é uma única instância, independentemente do número de PDBs dentro da CDB.
• Em todos os PDBs dentro de um CDB, a refazer os arquivos de log, undo tablespace,
controlfiles, e
tabela temporário são compartilhados.
• Um PDB indivíduo pode ter o seu próprio espaço de tabela temporário.
• Cada APO tem seu próprio espaço de tabela SYSTEM com metadados privado. O espaço de
tabela
tem ponteiros
SYSTEMpara metadados do Oracle comuns armazenados no espaço de tabela SYSTEM
dentro
• Os do de
pontos CDB.
vista de dicionário de dados prefixados com DBA_ têm vistas correspondentes
com
prefixo.
o CDB_Quando as consultas são executadas no recipiente raiz, estes mostram todo o
ambiente.
Explique Provisioning banco de dados Pluggable
• O CDB é inicialmente provisionados com o recipiente raiz CDB $ ROOT eo recipiente
semente
PDB $ SEED.

• PDBs pode ser criado a partir do recipiente de sementes por clonagem de um APO existente,
ligando um banco de dados, ou, ligando de um APO previamente desconectado.
não-CDB
• Non-CDBs pode ser convertido para um APO apenas uma vez eles foram atualizados para
Oracle
12 c .Database
Este processo não pode ser revertido.
• Os dados da tabela podem ser compartilhados entre PDBs dentro de um CDB, utilizando uma
ligação intra-CDB.
• Uma ligação intra-CDB se comporta exatamente como um pré-12 c ligação de banco de dados
e não
alterar.
requer nenhum aplicativo

Auto teste
1 . Identificar as instruções corretas sobre versões Oracle Database e sua compatibilidade com
bases de dados recipiente. (Escolha todas as respostas corretas.)
A. bancos de dados Oracle criados no 12 c são automaticamente pluggable em qualquer
CDB
B. umexistente.
Oracle 12 c da base de dados pode ser um não-CDB, um CDB, ou um APO.
C. Oracle 11 g bancos de dados pode ser conectado a um banco de dados recipiente se você
criararquivo
um XMLde descrição de banco de dados.
D. Oracle 11 g bancos de dados pode ser facilmente atualizado para o Oracle Database 12 c
por um
colocá-lo em com o Oracle Database 12 c release 1 ou mais recente.
CDB criado
E. Um CDB criado com base de dados Oracle 12 c pode ser convertido para um APO
removendo
PDB $ container
o de usuário SEED.
2 . Qual dos seguintes objetos de banco de dados sempre são compartilhados entre todos os
PDBsrecipiente?
dentro de(Escolha
um sistema
três respostas corretas.)
A. A tabela temporário
B. O undo tablespace
C. O nome global do banco de dados
D. O controlfile
E. arquivos de log de redo on-line
3 . Qual destes é uma condição necessária para um não-CDB para ser conectado a um CDB?
(Escolher
a melhor resposta.)
A. A CDB e não CDB devem usar o mesmo conjunto de caracteres de banco de dados.
B. replicação GoldenGate não deve ser configurado.
C. Todos os espaços de tabela não CDB com os mesmos nomes que tablespaces CDB já
existentes
deve ser renomeado para evitar conflitos.
D. A não ser CDB deve libertar 12 C ou a libertação do terminal de 11 g .
4 . O método é apropriado para um usuário estabelecer uma sessão contra um PDB? (Escolha
doisrespostas corretas.)

A. Os usuários locais podem definir seu variável de ambiente ORACLE_SID ao nome do


PDBconectar
e através de IPC.
B. Logon a um APO só é possível através de um ouvinte de banco de dados.
C. O usuário pode fazer logon no recipiente raiz e, em seguida, alterar a sessão para ligar a
um esquema de aplicação no APO.
D. Quando ligado a um APO, o utilizador pode ligar a outro APO no mesmo CDB
através de um link de banco de dados.

Respostas de auto-teste
1. B . A 12 C base de dados pode ser uma base de dados de recipiente, uma base de dados
banco
dede
conector,
dados deounão-recipiente.
um tradicional
A , C , D e E estão incorrectos. A está incorreta porque há restrições sobre se um
não CDB é compatível com um determinado CDB, tais como o conjunto de caracteres. C e
D são incorrectos
porque a 11 g base de dados deve ser actualizada antes de ligar. E é incorrecta porque existe
nenhuma forma a inverter a conversão para o ambiente de vários usuários.
2. B , D , e E . A tabela de undo, o controlfile, eo log de redo são usados por sessões
contra todos os recipientes e gerenciados apenas do recipiente raiz.
A e C são incorrectas. A está incorreta porque cada contêiner pode criar e gerir a sua
próprios espaços de tabela temporários. C está incorreta porque cada contêiner tem sempre a
sua própria mundial
nome.
3. Um . O conjunto de caracteres de banco de dados deve ser o mesmo, ou o plug-in irá
falhar
B , C , e D estão incorrectos. B está incorreta porque GoldenGate é compatível com o
Oracle
Multi inquilino. C está incorreta porque o nome do espaço de tabela não é um identificador
exclusivo.porque
incorreto D é todos os 11 g bancos de dados deve ser atualizado antes de ligar.
4. B e D . B está correta porque o estabelecimento de uma sessão contra um APO só pode
ser de
através feito
um serviço exposto por um ouvinte. D está correta porque uma vez que se tem
umaAPO,
um sessãouma
contra
sessão contra outro pode ser estabelecida através de um link de banco de
dados, que
também serserá
estabelecido pelo ouvinte.
A e C são incorrectas. Um é incorrecta porque apenas o recipiente de raiz pode ser
contactado
utilizando o protocolo de IPC. C está incorreta porque enquanto você pode mover a sua
sessão a partir
recipiente paradeoutro,
um você não pode alterar o esquema como fazê-lo.
CAPÍTULO 32

Criando e Gerenciando multitenant


Container e plugáveis Databases
Objetivos do exame
• 063.3.1 Configurar e criar um CDB
• 063.3.2 Criar um PDB usando diferentes métodos
• 063.3.3 Desligue e soltar um APO
• 063.3.4 Migrar um banco de dados não-CDB para um APO
• 063.4.1 estabelecer conexões com CDB / PDB
• 063.4.2 Start Up e Desligar a CDB e PDBs Abrir e Fechar
• 063.4.3 avaliar o impacto do Parâmetro Valor Alterações

Este capítulo descreve o processo de criação de um banco de dados do recipiente (CDB) e as várias
técnicas
para criar as bases de dados conectáveis (PDBs) que residem dentro dela. De um modo geral,
administração de um ambiente multitenant é semelhante à administração de um ambiente não-CDB.
é o ponto inteiro: muitos não-CDBs podem ser consolidados em um único CDB sem alterações para
que
usuários e desenvolvedores e com apenas alterações mínimas para os administradores.
o

Criar um banco de dados Container


Um banco de dados recipiente e exemplo são distinguidos a partir de um não-CDB por dois atributos
que devem ser
especificada no momento da criação e nunca pode ser alterado posteriormente. Após a criação do
banco deconverter
possível dados, não
umé não-CDB em um CDB, ou o contrário. Estes atributos são uma memória
estrutura no exemplo, o qual é activado, iniciando o exemplo com o parâmetro instância
ENABLE_PLUGGABLE_DATABASE = VERDADEIRO, e uma estrutura controlfile, que é
activado por a cláusula ATIVAR DATABASE conectável para o comando CREATE DATABASE.
adicionando
ao criar um não-CDB, a maneira mais fácil é, sem dúvida, para usar o banco de dados Assistente de
Como
(DBCA).
Criação

Use DBCA para criar um CDB


O Assistente de Criação de banco de dados geralmente é a ferramenta que você usaria para criar um
Na
novoverdade,
banco banco dá-lhe
de
de dadosdadosasrecipiente.
opções com
de recipiente para um
criarouum banco
mais de dados
bancos não-CDB,
de dados apenas um banco
novos conectáveis. de dados
A Figura 32-1 de
recipiente, ou
mostra usando
“Expresso” uma
método
o para criar um novo banco de dados recipiente chamado CDB58, que irá residir
no existente
Automatic Storage Management (ASM) grupo de discos + DATA. Os arquivos de recuperação irá
residir
+ RECOV.na Um banco de dados chamado RPTQA10 pluggable inicial será criado juntamente com o
recipiente.

Figura 32-1 Criação de um banco de dados do recipiente utilizando DBCA

Na próxima janela, você pode rever o resumo do banco de dados de recipiente a ser criado. Nota
em 32-2 que a criação de um banco de dados do recipiente pode criar uma base de dados bem
Figura
como conectável.
Figura 32-2 Criar banco de dados - página Resumo

Mas como você entre em contato com o banco de dados pluggable inicial? Em busca de pistas,
você pode verificar o ouvinte.

O código anterior mostra que todos os pedidos para o RPTQA10 serviço será entregue ao
CDB58 exemplo, que é o exemplo que tem aberta a base de dados do recipiente. Estes pedidos serão
sessões de lançamento contra o PDB. Os pedidos para o serviço CDB58 também será conectado ao
exemplo CDB58 mas irá estar conectado ao recipiente raiz em vez de para o APO.
DICA
marqueExecute
a caixa odeDBCA
seleçãomuitas vezes,scripts
para gerar tomardeopções diferentes
criação de bancoa de
cada vez, Estudar
dados. e no final
osda caixa que
scripts, de
diálogo
são instrutivas.
Muitos administradores de banco de dados experientes (DBAs), incluindo os autores deste livro,
geralmente
bases de dados,
criamgerando scripts de dbca e depois editá-los se necessário.

Usando SQL * Plus para criar um CDB


Um CDB distingue-se de um não-CDB por estruturas de memória e estruturas físicas. Para permitir
que o
estruturas de memória necessárias, iniciar uma instância com o parâmetro
ENABLE_PLUGGABLE_DATABASE definido para TRUE. Em seguida, no comando CREATE
incluem ATIVAR DATABASE conectáveis para criar as estruturas baseadas em disco necessários no
DATABASE,
controlfile e dicionário de dados.
parâmetros de instância adicionais e palavras-chave pode especificar nomes para os arquivos de
ou eles
dados
podem
do recipiente
ser gerados
semente,
automaticamente pelo mecanismo de arquivos Oracle Managed (OMF).
iniciando com
instância o OMF habilitado automatiza toda a criação filename nos diretórios sob qualquer
diretório
ou grupo de discos ASM é especificado pelo parâmetro DB_CREATE_FILE_DEST. Isso se aplica
arquivos de dados para o recipiente de raiz, o recipiente de sementes, e todos os recipientes passíveis
ao
de ligação subsequentes.
Alternativamente, especificando o parâmetro PDB_FILE_NAME_CONVERT irá gerar nomes para
sementes e recipientes acopláveis por remapeamento os nomes indicados para o recipiente de raiz.
o
este
parâmetro consiste em pares combinados de cordas, sufixo e prefixados com um wildcard implícita.
Considere esta definição:

Se o recipiente raiz CDB tem os arquivos para o sistema ou SYSAUX ou TEMP no diretório
/ U01 / oradata / CDBA, o recipiente semente terá seus arquivos criados em / u02 / oradata /
semente'.
você podeAlternativamente,
especificar isso no comando CREATE DATABASE.

Exercício 32-1: Criar um banco de dados Container Neste exercício, você irá criar um recipiente
banco de dados usando SQL * Plus.

1. Crie um arquivo simples parâmetro chamado initcdba.ora, com apenas estas quatro linhas:

Observe que o caminho para o controlfile é um caminho Linux sugeriu; ajustar de acordo
com o seu(ou Windows), se necessário. Coloque o arquivo no $ ORACLE_HOME / dbs
ambiente
diretório (Linux) ou% ORACLE_HOME directório% \ database (Windows).
2. Inicie a instância CDBA.
Defina sua variável de ambiente ORACLE_SID.
Aqui está o código para Linux:

Aqui está o código para o Windows:

No Windows, criar o serviço Windows para a instância.

Conectar a SQL * Plus e inicie.


3. Criar diretórios para o recipiente raiz e o recipiente semente.
Aqui está um exemplo Linux:

Aqui está um exemplo do Windows:

4. Criar o banco de dados recipiente.


Execute o comando CREATE DATABASE.
Aqui está um exemplo Linux:

Observe a menção explícita de todos os arquivos e ajustar de acordo com seu ambiente.
5. Execute os scripts catalog.sql e catproc.sql, que irá criar o dicionário de dados

pontos de vista e os pacotes fornecidos. Em um ambiente CDB, não é suficiente


simplesmente
scripts SQL deexecutar o SQL * Plus como você faria em um banco de dados não-CDB.
uma sessão
Eles devem
invocada através
ser de um script Perl fornecido, executado a partir de um prompt do sistema
aoperacional,
natureza deque
um entende
CDB e pode criar os objectos em ambos os recipientes de raízes e de
sementes.
Aqui está um exemplo em Unix:

Aqui está um exemplo no Windows:

Note-se que os dois comandos anteriores não deve incluir qualquer quebra de linha.
6. Investigar as estruturas físicas CDB.
A partir da sua sessão SQL * Plus, execute essas consultas:

Note como os nomes de arquivos para o recipiente de sementes foram calculados pela
aaplicação
nomes dedearquivos
uma conversão
do contêiner raiz e que o controlfile e arquivos de log não são (ao
contrário do
arquivos de dados e tempfiles) associadas com qualquer um recipiente.
7. Criar um CDB com DBCA.
Para se tornar completamente familiarizado com o processo de criação CDB, utilize o
DBCA
Siga as também.
opções para criar um banco de dados de contêiner (usando ambos os modelos que
arquivos de dados e o modelo "personalizado" que não) e na última janela, marque a caixa
incluem
para gerar scripts de criação de banco de dados. Estude-os! Eles são instrutivos.
de seleção

Criar recipientes plugáveis


Existem quatro técnicas para criar um banco de dados conectável:

• Clonar o recipiente de sementes.


• Clonar um PDB já existente.
• Conecte um PDB previamente desconectado.
• Conecte um banco de dados não CDB.

Usando o PDB $ SEED para criar um novo PDB


Todo banco de dados de contêiner tem um recipiente de banco de dados de sementes somente leitura
chamadorapidamente
criando APOIO $ SEED usado
um novo parade dados plugável. Quando você cria um novo PDB do PDB $
banco
SEED,
As seguintes
o coisas acontecem, independentemente de usar SQL * Plus, SQL Developer ou
Gerenciador Cloud Control 12c. Cada uma dessas etapas é executada com um CREATE
Enterprise
Declaração DATABASE, manualmente ou via DBCA:
PLUGGABLE

• Os arquivos de dados no PDB $ SEED são copiados para o novo PDB.


• As versões locais dos espaços de tabelas SYSTEM e SYSAUX e TEMP são criadas.
• Um catálogo de metadados local é inicializado (com ponteiros para objetos comuns de
somente
recipiente).
leitura na raiz
• Os usuários comuns (incluindo SYS e SYSTEM) são criados.
• Um usuário local é criado e recebe a função PDB_DBA local. Este é o administrador do PDB
e é usado para criar o APB.
• Um novo serviço padrão para o PDB é criado e é registrado com o ouvinte.

Dada a quantidade relativamente pequena de criação e movimento de dados nessas etapas, a


O PDB
criação
é rápido.
de Gerar nomes de arquivos para o novo PDB dependerá do ambiente. O mais simples
O caminho é habilitar o OMF. Se, por algum motivo, isso não pode ser feito, o
parâmetro de instância (consistindo em pares de strings pareados) pode gerar novos nomes da
PDB_FILE_NAME_CONVERT
semente
Nomes do arquivo de dados do PDB. Como último recurso, os mapeamentos de nomes de arquivos
ou nomes de no
especificado arquivos
comando
totalmente
CREATE qualificados
PLUGGABLE podemDATABASE.
ser

Exercício 32-2: Crie um banco de dados plugável da semente Neste exercício, você criará um
por clonagem do PDB de sementes. Presume-se que um CDB existe chamado cdba, que você tenha
PDB
A variável de ambiente ORACLE_SID configurada para cdba e que um ouvinte de banco de dados
o
está sendoe executado
endereço porta. no padrão

1. Conecte-se ao contêiner de raiz como usuário SYS e habilite o OMF.

O exemplo anterior é para o Windows; ajuste de acordo com seu ambiente.


2. Crie um PDB chamado pdba, com um usuário de administrador chamado pdba_admin.

3. Abra o novo PDB.


4. Observe os serviços registrados com o ouvinte do banco de dados, que incluirá um serviço
para
container
o de raiz e um serviço para o PDB, como na ilustração a seguir:

Clonando um PDB para criar um novo PDB


Se você precisar de um novo banco de dados semelhante a um que já existe, você pode clonar um
banco de
dentro dodados
CDB. existente
O novo PDB será idêntico à fonte, exceto o nome do PDB. Nisso
Por exemplo, você usará os recursos DBA do SQL Developer para clonar o PDB. Você não precisa
se preocupar
sobre o que está acontecendo sob as capas; Cada passo do caminho você pode ver o DDL que SQL
O desenvolvedor executa para criar o clone.
Antes de clonar um PDB existente, você deve fechá-lo e reabri-lo no modo READ ONLY.

Você pode procurar as conexões DBA para o banco de dados do contêiner CDB01 e seus PDBs.
clique
Certo-
no QA_2014 PDB e selecione Clone Pluggable banco de dados, como mostrado na Figura 32-
3.
Figura 32-3 Seleção de um banco de dados para clonar no SQL Developer

Na caixa de diálogo que se abre, como mostrado na Figura 32-4 , alterar o nome do banco de
outros
dados
recursos
para QA_2015.
e opções deTodos
QA_2014 são retidos por QA_2015.

Figura 32-4 características clone Especificando PDB

A guia SQL mostra o comando que SQL Developer será executado para clonar o banco de
dados:

Depois de clicar no botão Aplicar, a operação prossegue de clonagem e cria o novo PDB. Como
com o SQL * Plus método de criação de um novo PDB, você tem que abrir o novo PDB como ler
escrever.

Finalmente, você precisa abrir o banco de dados QA_2014 como ler escrever novamente desde
que foi da
LEITURA definido parade duplicação.
operação

Exercício 32-3: Clone Uma PDB para outro PDB Neste exercício, você criará um APO
clonagem do recipiente PDBA criado anteriormente.

1. Ligar ao recipiente raiz.

2. Abrir PDBA somente leitura.


3. Faça o clone, usando OMF para gerar nomes de arquivos.

4. Abra as duas PDBs leitura e escrita.

Conecte um não-CDB em um CDB


Você pode ter um stand-alone (não CDB) 12 c banco de dados que você gostaria de consolidar em
um já existente
CDB. Se você tem um pré-12 c banco de dados, você deve atualizá-lo para 12 c primeira ou usar o
Data de
base Pump
dados.
paraPara
mover
um esse
12 não CDB existente c banco de dados, é um processo simples que envolve
o
PL procedimento / SQL DBMS_PDB.DESCRIBE para exportar os metadados para um não-CDB a
um Extensible
Markup Language (XML) arquivo OS. Neste exemplo, no servidor Tettnang, há três casos:
+ ASM, CDB01, e RPTQA12C:

Aqui está como você iria exportar os metadados para o banco de dados RPTQA12C. Conectar-se
banco
ao de
alvo
dados (banco de dados que será assimilado CDB01), mudar seu status para somente leitura,
executar o procedimento.

O arquivo contém informações que descrevem os arquivos de dados do banco de dados, que são
instalado,
componentes
e certos parâmetros críticos de instância. Note que a tabela de undo, o controlfile, e
os arquivos de log redo são descartados. O XML se parece com isso:
Se o banco de dados não-CDB existente é na mesma máquina como o destino CDB, conectar-se
banco
à de dados recipiente CDB01 e importar o XML para RPTQA12C.

Em muitos casos, será necessário transferir os arquivos de dados não CDB de e o arquivo XML
máquina
para oonde o DB está em execução. Sem problemas. Editar o arquivo XML para ter em conta
quaisquer
nomes alteraçõese no
de arquivos diretórios antes de executar o comando conectável CREATE DATABASE.
A operação entupimento-in pode demorar tão pouco como um minuto ou dois. Alguns limpeza
final e são necessários antes que o banco de dados conectado-in pode ser usado. O
configuração
noncdb_to_pdb.sql
limpa metadados desnecessário
roteiro não é necessário em um ambiente multitenant. Além disso, é
necessário
o recém-conectado
abrir no banco de dados, tal como faria com uma operação de clone.
Ligar uma APO desconectado num CDB
Você pode ter várias bases de dados desconectado a qualquer momento. Um banco de dados
desconectado
fora de um CDB,não por
pode seréaberto
isso provável que você conecte um banco de dados desconectado (PDB) de
volta para
Neste exemplo,
a CDB o PDB
em algum
CCREPOS
ponto. atualmente é desconectado e tem o seu arquivo XML localizado
/tmp/ccrepos.xml no servidor. Os passos para ligar um PDB atualmente desconectado em um CDB
no
são ambos
direta e acabamento rapidamente, assim como a maioria das operações multitenant fazer. Tudo que
vocêcomando
um tem a fazer
paraé ligá-lo
executare um outro comando para abri-lo. Conectar como um utilizador comum
com o privilégio DATABASE pluggable da seguinte forma (conexão como SYSDBA para CDB01
ALTER
operating system [OS] authentication works great):
com

Note-se que a APO deve ser descartado, e não apenas desconectado, a partir de um CDB antes de
de volta
ele pode
em. ser
Usando
conectado
a opção NOCOPY economiza tempo se arquivos de dados do PDB já estão na
correta
localização.

Desligue e soltar um APO


Desde a APO é, por natureza, altamente móvel, é provável que você vai movê-lo para outro CDB no
mesmo
outro servidor.
ou Você pode apenas desligá-lo para torná-lo disponível para os usuários. Você também
pode
-lo completamente.
desligá-lo a cair
Ou, talvez o mais importante, você pode querer atualizá-lo, desconectando de
aumumCDB
certo nível de remendo e colocá-lo em um CDB a um nível mais elevado remendo. Esta é uma
maneira
com um de
mínimo
atualizar
de paralisação. SQL Developer tem uma opção de desligar, ou você pode usar SQL
* Plus.

Esta rotina gera um arquivo XML equivalente ao gerado pelo DBMS_PDB.DESCRIBE

processo, e pode ser usado da mesma maneira para ligar o APO em qualquer outro CDB.
Quando você soltar um PDB, todas as referências ao PDB são removidos controlfile do CDB. De
padrão, os arquivos de dados são retidos; Portanto, se você já havia unplugged que PDB, você pode
usar
o arquivo XML para tapar que PDB de volta para o mesmo ou outro CDB. Neste exemplo, você vai
cair o
QA_2014 PDB juntamente com seus arquivos de dados. Já não estará disponível para ligar a outro
banco desedados
mesmo você ainda tem os metadados XML.

Migrar um banco de dados pré-12.1 Non-CDB para CDB


Convertendo Oracle Database 12 c não CDBs para um APO é rápido e simples, mas o que se o seu
banco de dados é uma versão anterior como a 11 g ou mesmo 10 g ? Existem duas abordagens: Você
atualizar, ou você pode usar o Data Pump.
pode

EXAME TIP Apenas libertar 12. x bases de dados não CDB pode ser convertido em PDBs.
qualquerdemais
bancos cedo
dados deve ser atualizado primeiro.
Se a sua aplicação não é sensível ou dependente da versão do banco de dados (que você deve
ter verificado até agora), então sua opção mais limpa é atualizar o não-CDB no lugar até a versão
12 c (12.1.0.1 ou mais tarde) e, em seguida ligá-lo para o CDB utilizando os métodos mencionados
anteriormente
capítulo. neste deste método é que você não precisa alocar qualquer espaço extra para o
As vantagens
migração como você faria para os outros dois métodos e que é rápido.
Para usar o método Data Pump, você vai usar o Data Pump exportação / importação como você
meiofaria
Ambiente.
em um não-CDB
Criar um novo PDB do banco de dados semente na CDB, e ajustar a inicialização
parâmetros a ser comparáveis aos do banco de dados existente. Uma das vantagens com este método
é que você pode deixar a corrente não-CDB no local para garantir a compatibilidade com Oracle
Database
antes 12 c cair o banco de dados original. Ele também irá permitir que você executar uma
de deixar
migração
passar de armazenamento
de plataforma, oudopara
sistema de arquivos para armazenamento ASM, como parte da
consolidação.
grande, isso pode
Maslevar
se o algum
banco de
tempo.
dados é

DICA A atualização e plug-in método é geralmente muito mais rápido porque o tempo necessário é
falando) independente do tamanho do banco de dados. Uma exportação-importação de um grande
(geralmente
banco de
muitas horas.
dados
Oupode
dias.demorar

Estabelecer conexões com CDBs e PDBs


Você se conectar a um APO ou CDB tanto quanto você se conectar a um não-CDB. Você pode se
conectar a ume CDB
autenticação via OS
o usuário comum SYS. Caso contrário, você vai conectar a qualquer um CDB ou um
PDBs dentro do CDB usando um nome de serviço. O nome do serviço é referenciado quer utilizando
dos
corda EasyConnect ou dentro de uma entrada tnsnames.ora. Este método é o mesmo se você estiver
um
SQL * Plus ou SQL Developer.
usando
Por padrão, um nome de serviço é criada para cada novo, clonado, ou conectado-in PDB. Se isso
suficiente
não forem seu ambiente, você poderá usar o pacote DBMS_SERVICE ou o utilitário srvctl para
criar
serviços adicionais para o PDB.

Compreender CDB e nomes de serviços PDB


Em um ambiente não-CDB, uma instância de banco de dados está associado a pelo menos um
serviçoum
menos gerenciado
ouvinte. pelo
Um ouvinte pode gerenciar uma combinação de serviços não-CDB e PDB. o
servidor de banco de dados oel63 tem duas bases de dados: DBAHANDBOOK e CDB01. Como
você pode
banco suspeitar,
de dados CDB01 o é um banco de dados multitenant, e DBAHANDBOOK é um não-CDB, mas
ambos são
Oracle Database versão 12 c e são administradas por um único ouvinte chamado ouvinte.
A base de dados CDB01 recipiente tem duas PDBs, DW17 e QATEST1, e o mesmo ouvinte
gerencia conexões para ambos os PDBs.
Cada recipiente num CDB tem o seu próprio nome do serviço. O CDB em si tem o nome de
que serviço
é o mesmo
padrão
que o nome CDB mais o domínio, se houver. Para cada APO criado ou clonado, uma
serviço é criado e gerenciado pelo ouvinte padrão a menos que especificado em contrário. Como
nova
você pode
esperar, a única exceção a essa regra é o recipiente semente (PDB $ SEED). Uma vez que é somente
leitura e para criar novas PDBs, não há razão para criar um serviço e se conectar a ele.
utilizado

Além de usar o nome do serviço para se conectar à CDB ou qualquer PDBs contido dentro, você
pode usar a autenticação OS e conectar como SYSDBA, tal como faria com um não-CDB. Você vai
ligado como a facilidade de um utilizador comum SYS com privilégios para manter todos os PDBs
ser
dentro do CDB.
A transparência de um PDB e como ele aparece como um não-CDB para usuários sem
comoprivilégios
você se conectar
se estende
usando
a entradas no tnsnames.ora ou usando o Oracle EasyConnect. Como
você pode
formato para
recordar,
uma seqüência
o de conexão EasyConnect é a seguinte:

Portanto, para se conectar à RJB usuário no APO DW17 nomeado no CDB chamado CDB01 em
o servidor oel63, você usaria o seguinte ao iniciar SQL Plus *:

Observe que nenhuma referência a CDB01 é necessário. máscaras de nome serviço do PDB, a
o CDB
existência
ou quaisquer
de outros PDBs no CDB.

Criação de Serviços de CDBs ou PDBs


Se você estiver usando um ambiente de servidor autônomo com o Oracle Restart ou um ambiente de
cluster
A Oracle
usando
Clusterware, você receberá automaticamente um novo serviço criado com cada APO novo
ou clonado(exemplo
não-CDB ou base de dados). Se você quiser serviços adicionais para um PDB, use o comando
srvctl como
esta:

Em um ambiente nonrestart ou sem cluster, você pode usar o pacote DBMS_SERVICE para criar
e iniciar o serviço. Para criar a mesma novo serviço, como no exemplo anterior com srvctl mas
em vez de usar DBMS_SERVICE, você iria ligar para o PDB e, em seguida, faça o seguinte:
Observe a ligeira diferença no exemplo com DBMS_SERVICE: O nome do serviço real é ainda
dwsvc2, mas o nome do serviço exposto aos usuários finais é dwsvcnew e seria usado na conexão
string para clientes que acessam este serviço.

Alternando conexões dentro de um CDB


Como você pode inferir a partir de exemplos em capítulos anteriores, você pode alternar recipientes
dentroquer
você de uma
é umsessão
usuário
secomum com o privilégio de sistema CONTAINER SET ou ter um usuário
local recipiente
cada em e você se conectar usando o nome do serviço.
Você pode ter uma transação pendente no primeiro recipiente, mudar para um novo recipiente, e
voltar
depois
para o primeiro recipiente, e você ainda tem a opção de confirmar ou reverter o pendente
transação.

EXAME TIP usuários comuns que têm o privilégio de sistema CONTAINER SET ou usuários
locais que
mudar recipientes usando CONNECT local_user @ PDB_NAME não cometer automaticamente
operações de comutação quando recipientes.
pendente

Start Up e Desligar a CDB e abrir e fechar


PDBs
Iniciar e desligar um CDB ou abrir e fechar uma PDB vai parecer familiar para qualquer A Oracle

DBA que inicia e encerra um não-CDB. O ponto que é muitas vezes ignorado é que a CDB é
em última análise, uma única instância de banco de dados, e cada PDB ações os recursos de
éinstância
de se esperar
da CDB.
vistoeste
que cada APO é logicamente repartido a partir de todos os outros PDBs usando
o CON_ID
coluna em cada tabela que é compartilhada entre a raiz e cada APO. Este particionamento lógico se
estendede
contas a usuário e de segurança, bem; Assim, parece que noncommon usuários que o APO tem a
sua própria
instância dedicada.

DICA Como você poderia esperar, em um ambiente Real Application Cluster (RAC), a CDB
tem um exemplo em cada nó do aglomerado. serviços PDB pode failover entre as instâncias.
normalmente

Desde o CDB é uma instância de banco de dados, tudo correndo dentro do CDB está desligado
desligada
ou quando o CDB é desligado. Isto significa que a APO não está aberto para os usuários até o
foi iniciado e explicitamente aberto (quer manualmente pelo DBA ou por meio de um gatilho), e
CDB
APO é fechada quando o exemplo CDB é desligado.
semelhante
Nas seções seguintes, eu vou lhe mostrar como CDBs e PDBs são iniciados e desligar, como
bem como a forma de automatizar o processo. Você também vai querer saber como alterar os
parâmetros
objetos que são
de banco de dados específicos para um APO, assim como, como espaços de tabela
temporários que para
especificamente podemumser
APOcriados
se o padrão de tabela temporária global não atende as necessidades do
aplicação da APO.

Startup Instância CDB


A instância CDB é mais como um exemplo tradicional não CDB. A Figura 32-5 mostra a cinco
possível
estados para CDBs e PDBs em um ambiente multitenant.
Figura 32-5 CDB e estados PDB

Do estado de desligamento, você pode executar uma NOMOUNT inicialização (conexão como
SYSDBA
usando autenticação OS) para iniciar um exemplo CDB abrindo o spfile e criar os processos e
estruturas de memória, mas ainda não abre o arquivo de controle.

Neste momento, no processo de inicialização, a instância não possui informações sobre os PDB
CDB dentro
ainda.daNormalmente, você realizaria uma NOMADA DE INICIAR quando precisar recriar ou
restaure um arquivo de controle ausente para a instância do CDB.
Muitas coisas acontecem quando você move um CDB para o estado MOUNT, como você pode
Nãover
só na
os arquivos
Figura 32-5
de controle
. do CDB são abertos para a instância, mas o CDB $ ROOT e todos os
são alterados para o estado MOUNT.
PDBs

Se qualquer operação de arquivo de dados for necessária (restaurar e recuperar, por exemplo), é
iria onde
realizar
você
aqueles, especialmente se essas operações são necessárias no tablespace SYSTEM. o
O passo final para tornar o recipiente de raiz disponível para abrir PDBs é mudar o estado do CDB
ABERTO. Depois que CDB $ ROOT estiver ABERTO, está disponível para operações de leitura e
para
gravação.com
montado Os PDBs
o banco
ainda
de dados
são de sementes PDB $ SEED montado como READ ONLY.
Como criei um segundo serviço para o PDB chamado DW17 anteriormente no capítulo e Oracle
Reiniciar está instalado neste ambiente, o DW17 é aberto automaticamente no modo READ WRITE.
O banco de semente PDB $ SEED sempre é aberto LEIA SOMENTE.
o
Uma vez que o CDB é aberto (em outras palavras, os arquivos de dados da raiz estão disponíveis
tablespace
junto com
temporário
o e os arquivos de log de retomada on-line), os PDBs estão montados, mas
ainda não estão
disponível abertos
para os e A menos que um PDB seja aberto com um gatilho ou através do Oracle
usuários.
Restart,
no estadoeleMONTADO.
permanece por padrão
Neste ponto, a instância do CDB se comporta como uma instância que não é CDB. Na próxima
vejaseção,
como você
PDBs individuais são abertos e fechados.

Abrir e fechar um PDB


Depois de ter o recipiente raiz (CDB $ ROOT) de um CDB aberto, você pode executar todos os
operações nos PDBs dentro do CDB, incluindo mas não limitado a clonagem de PDBs, criando um
desejados
novo
PDB da semente, desconectando um PDB ou conectando um PDB previamente desconectado.
Lembre-se
O recipientedisso
de sementes, PDB $ SEED, está sempre aberto quando CDB $ ROOT está aberto, mas
com um
OPEN_MODE de READ ONLY.
Existem algumas opções quando você deseja abrir ou fechar um PDB. Você pode usar ALTER
BASE DE DADOS CONFIGURAÇÃO quando conectado como SYSDBA ou SYSOPER, ou se
você está conectado
SYSDBA dentro de um
comoPDB, você pode usar os mesmos comandos sem precisar especificar o nome
PDB. Dentro
Além disso, você pode abrir ou fechar seletivamente um ou mais PDBs com a opção ALL ou
EXCEPT ALL.
Usando o comando ALTER PLUGGABLE DATABASE
Você pode abrir ou fechar um PDB de qualquer recipiente, especificando o nome PDB;
alternativamente,
altere o contexto da
você
sessão
podepara um PDB específico e execute várias operações nesse PDB sem
qualificando-o, como neste exemplo. Independentemente do contêiner atual, você pode abrir e fechar
PDB especificando explicitamente o nome PDB.
qualquer
Alternativamente, você pode definir o nome PDB padrão no nível da sessão.

Para configurar o contêiner padrão de volta para o contêiner de raiz, use CONTAINER = CDB $
Comando
ROOTALTER
no SESSION.

Abertura ou encerramento seletivo de PDBs


Mesmo se você configurar os PDBs em seu CDB para abrir automaticamente com gatilhos, e se você
dezenas de PDB em seu CDB e você quer abrir todos exceto um? Você pode usar ALL
tiver
EXCEPTO para realizar isso em um único comando.

Se você quiser fechar todos os PDB de uma só vez, use ALL.


Abrir ou fechar todos os PDBs deixa o container raiz em seu estado atual, e como observado
recipiente
anteriormente,
semente oPDB $ SEED é sempre somente leitura e está no estado MOUNT somente
quando
está no estado
o CDBMOUNT.

TIP Dentro de um APO, você pode usar SHUTDOWN, com IMEDIATA ou TRANSACTIONAL
ABORTAR. O resultado é sempre o mesmo que CLOSE.
ou

Quando você fecha um ou mais PDBs, você pode adicionar a palavra-chave IMEDIATA para
reverter qualquer

transações dentro do PDB pendente. Se você deixar de fora a palavra-chave imediato, o PDB não
está fechada
até que todas as transações pendentes, quer tenham sido confirmada ou revertida, assim como em um
instância de banco de dados e todas as sessões de usuário são desconectados pelo usuário. Se o seu
não-CDB
contexto
PDB específica,
de sessão
você
estátambém
em um pode usar a instrução IMEDIATA SHUTDOWN para fechar a APO,
mas isso
que notanão afeta quaisquer outros PDBs e essa instância do contêiner raiz ainda está em execução.

CDB Instância Shutdown


Quando você está conectado ao recipiente raiz, você pode desligar a instância CDB e fechar tudo
PDBs com um comando, assim como você iria encerrar uma instância de banco de dados não-CDB.

Ao especificar IMEDIATA, a instância CDB não esperar por uma confirmação ou reversão
de transações pendentes, e todas as sessões de usuário a qualquer PDB estão desconectados.
utilização
TRANSACTIONAL espera por todas as transações pendentes para ser concluído e, em seguida,
desconecta
antes de terminar
todas as
o exemplo.
sessões
Conforme descrito na seção anterior, você pode usar o mesmo comando para desligar um
APO, específico
mas apenas que arquivos de dados do PDB estão fechados, e seus serviços não mais aceitará
pedidos até que seja aberto novamente.
conexão

Automatizando PDB Startup


Novas opções estão disponíveis no banco de dados de eventos gatilhos para um ambiente
multitenant.
gatilhos Um dessesenquanto dois outros não; A razão para isso ficará claro em breve.
é persistente,
Por padrão, depois de uma instância CDB inicia, todos os PDBs dentro do CDB estão no modo
PDBMOUNT. Se seu
não é aberto automaticamente por qualquer outro método (como Oracle Restart), você pode
criar umde banco de dados para iniciar todos os PDBs ou apenas alguns ou apenas um. Na base de
gatilho
dados CDB01
banco de dadosrecipiente,
pluggableoDW17 inicia-se automaticamente através do Oracle Restart; para os
pluggable
banco de dados,
DEV2015você vai criar um gatilho para mudar seu status para abrir Read Write quando o
recipiente
banco de dados é aberto, como mostrado aqui:
Em seguida, desligar e reiniciar o CDB01 recipiente e ver o que acontece.

EXAME DICA Por padrão, PDBs são fechados após a inicialização do CDB. No entanto, 12.1.0.2
liberação
você instruir
nãoOracle
permitepara preservar o estado da APO, de modo que se ele foi aberto em CDB
desligamento,
ser ele vai
aberto na inicialização CDB.

A inicialização depois ON gatilho DATABASE é persistente, a menos que você deixar cair ou
novodesativá-lo. Dois de dados gatilhos para Oracle Database 12 c , APÓS CLONE e ANTES
evento de banco
DESCONECTE,
mais dinâmico. Ambos
são os gatilhos deve ser especificado com ON conectável banco de dados;
caso contrário, o gatilho será inválido e não dispara.
Você usaria um gatilho como após CLONE para um APO que você freqüentemente clonar num
teste ou ambiente de desenvolvimento. O gatilho em si existe no APO fonte e persistirá
a menos que você deixá-la explicitamente. No entanto, quando você cria um novo PDB clonando o
PDB existente
contém que você pode executar tarefas de inicialização de uma só vez no APO clonado logo
esse gatilho,
após é Uma vez concluídas estas tarefas, o gatilho é suprimida de modo que quaisquer clones da já
clonado.
banco de dados não irá executar essas tarefas de inicialização.
clonado
Alterar PDB Estado
Em um ambiente não-CDB muitas vezes você tem razão para restringir o acesso a um banco de
dados para
tarefas qualquer ou para prepará-lo para um espaço de tabela transportável ou operação de
de manutenção
banco deem
verdade dados.
um ambiente
Isto é também
CDB. Anteriormente neste capítulo você viu como abrir um PDB como
somente
Para qualquer
leitura.
PDB que deseja restrito a usuários com privilégios SYSDBA (concedido a qualquer
um mundial
usuário ou um usuário local), você usar a cláusula RESTRITO tal como faria em um ambiente não-
CDB.

Para desativar o modo restrito, você fechar e reabrir o PDB sem a RESTRITO
palavra-chave.
Há várias operações que podem ser executadas em um APO que não requerem a reinicialização
Mododo restrito:
PDB em

• Tome PDB arquivos de dados off-line ou trazê-los de volta online


• Alterar tablespace padrão do PDB
• Alterar padrão de tabela temporário do PDB (tabela local)
• Alterar o tamanho máximo de um PDB:
alterar a base de dados de armazenamento de encaixe (maxsize 50g);

• Alterar o nome de um APO

Essas configurações dinâmicas ajudam a maximizar a disponibilidade de um APO e permitem


a umque
PDBvocê
muito
façamais
alterações
rapidamente do que as mesmas alterações que você faria para um não-CDB,
que exigiria
desligar e reiniciar o banco de dados.

Avaliar o impacto de alterações de parâmetros Valor


Embora o desenvolvedor do aplicativo ou usuário de banco de dados de um APO não verá nenhuma
diferença
APO naem
opera forma como a com um não-CDB, algumas das diferenças requerem uma consideração
comparação
cuidadosa
DBAs globais
por parte
e locais.
do Um subconjunto de parâmetros podem ser alterados ao nível do APO, mas
para a um
parte, maior
APO herda as definições de parâmetros da CDB. Além disso, alguns ALTER SYSTEM
comandos se comportar de forma ligeiramente diferente dependendo do contexto em que são
executados pelo DBA.
Compreender o escopo dos parâmetros Alterações
Porque um CDB é uma instância de banco de dados e PDBs compartilhar este exemplo, alguns dos
parâmetros da em
(Armazenado CDB
um spfile, é claro) se aplicam à CDB e todos os PDBs e não pode ser alterado para
PDB. Você pode identificar os parâmetros que podem ser alterados no nível PDB, olhando para o
qualquer
coluna ISPDB_MODIFIABLE de V $ PARÂMETROS. O dicionário de dados vista PDB_SPFILE $
espectáculos
os valores não padrão para parâmetros específicos em todos os PDBs.
As configurações locais para um APO ficar com o PDB mesmo quando a APO foi clonado ou
desconectado.
Usando ALTER SYSTEM em um ambiente multitenant
Muitos dos ALTER SYSTEM ordena que você usaria em um CDB não-ambiente de trabalho como
seria de em um ambiente multitenant com algumas ressalvas e exceções. Alguns dos ALTER
esperar
comandos do sistema afetam somente a APO ou o CDB em que eles são executados. Em contraste,
alguns ALTER
comandos do sistema pode ser executado somente no recipiente raiz.
Dentro de um PDB (como um DBA local ou um DBA global com uma PDB como o contêiner
seguintes
atual),comandos
o ALTER SYSTEM afetar objetos, parâmetros ou sessões específicas ao APO
com efeito em quaisquer outros PDBs ou o recipiente raiz:

• SHARED_POOL FLUSH ALTER SYSTEM


• BUFFER_CACHE FLUSH ALTER SYSTEM
SESSÃO • ALTER SYSTEM ATIVAR RESTRITO

• ALTER SYSTEM MATANÇA SESSÃO


• ALTER SYSTEM SET < parâmetro >

Existem alguns comandos ALTER SYSTEM que você pode executar no nível do APO, mas
todaafetam
CDB. aPor exemplo, executar ALTER SYSTEM CHECKPOINT afeta arquivos de dados em
todo recipiente
o a menos que os arquivos de dados pertence a um APO, que é aberto como somente
leitura (tais como o
sementes) ou estiverem offline.
Alguns comandos ALTER SYSTEM só são válidos para todo o recipiente e deve ser executado
por um
usuário comum com privilégios SYSDBA no recipiente raiz. Por exemplo, executar ALTER
INTERRUPTOR LOGFILE muda para o grupo on-line próximo arquivo de log refazer. Uma vez
SYSTEM
que os arquivos
comum a todos os
derecipientes,
log redo online
este são
é o comportamento esperado.

Broca Two-Minute
Criar um banco de dados Container
• Cada CDB é criado com um banco de dados de sementes e um recipiente raiz.
• Para criar uma nova CDB, você deve usar o ATIVAR cláusula DATABASE pluggable do
Instrução CREATE DATABASE.
• Se você não estiver usando OMF (de preferência com ASM), você deve usar o SEED
cláusula FILE_NAME_CONVERT para especificar a localização e os nomes para os
arquivos
o recipiente
de banco
de sementes.
de dados de
• Criação de um CDB usando CREATE DATABASE requer que você executar scripts catálogo
para permitir
outras funcionalidades do Oracle e criar dados de objetos do dicionário através do script
catcon.pl.
Criar Containers plugáveis
• Criar um novo clones PDB o banco de dados SEED PDB $ dentro do mesmo recipiente.
• O novo PDB tem seu próprio catálogo de metadados, versões locais de SYSTEM e SYSAUX,
e usuários comuns SYS e SYSTEM.
• PDBs existentes podem ser clonadas, mas apenas enquanto eles estão abertos no modo
somente leitura. (que deve ser libertar 12. x ) pode ser conectado por meio da geração e
• Um não-CDB
executando
arquivo que
umdescreve
XML o não-CDB.
• A não-CDB de liberação menos de 12. x não pode ser ligado, mas o seu conteúdo pode ser
importado
em um novo PDB.
• Depois de iniciar o novo PDB, o novo nome de serviço padrão é registrado com o ouvinte.
Migrar um banco de dados pré-12.1 Non-CDB para CDB
• liberar apenas 12. x bancos de dados podem ser convertidos em PDBs e conectado a um CDB
• Data Pump pode transferir o conteúdo de uma pré-12. x não-CDB para um APO recém-criado

Estabelecer conexões com CDBs e PDBs


• Você pode conectar-se ao recipiente raiz como SYSDBA com autenticação OS.
• Cada APO tem pelo menos um serviço publicado por um ouvinte de banco de dados.
• Os serviços podem ser criados com o utilitário srvctl ou o pacote DBMS_SERVICE.
• Conexões para PDBs pode usar EasyConnect ou tnsnames.ora entradas.
• Um novo serviço PDB criado com o Oracle Restart abrirá automaticamente um APO quando
o CDB abre.
• Para alternar entre PDBs e o CDB dentro de uma sessão SQL * Plus, utilize o ALTER
SESSION
comando CONTAINER SET.

Start Up e Desligar a CDB e PDBs Abrir e Fechar


• Um banco de dados recipiente (container raiz) inicia-se e encerra em grande parte da mesma
forma
CDB.que um não
• Quando o banco de dados do recipiente está no estado aberto, todos os PDBs são inicialmente
noaestado
não serMOUNT
iniciado automaticamente através de um gatilho ou Oracle Restart.
• O recipiente semente PDB $ SEED estadias em LEIA único estado mesmo quando todos os
outros
abrirPDBs
e não são
pode ser definido como READ WRITE.
• Para um usuário local com privilégios SYSDBA, um APO pode ser fechado com o
desligamento
sintaxe. normal
• PDBs apoiar tanto o APÓS CLONE e ANTES DESCONECTE dispara, mas esses gatilhos
sãocaiu depois de ser executado uma vez para o alvo PDB.

Avaliar o impacto de alterações de parâmetros Valor


• O dicionário de dados vista PDB_SPFILE $ contém o conteúdo do spfile da instância PDB,
com a coluna PDB_UID identificação de parâmetros específicos para uma APO.
comandos • Vários ALTER SYSTEM, executado por um usuário com privilégios de DBA em
umapenas
PDB, no
operar
APO, como lavar a piscina comum, limpar o cache do buffer, matando sessões,
e definição de parâmetros específicos para o PDB.
• ALTER SYSTEM CHECKPOINT em um PDB executa um ponto de verificação no banco de
dados
e, portanto,
recipiente
em todos os PDBs.

Auto teste
1 . Qual das seguintes cláusulas são necessárias no comando CREATE DATABASE para
criar um banco de dados recipiente? (Escolha todos os que se aplicam.)
A. ATIVAR DATABASE conectável
B. CHARACTER SET
C. FILE_NAME_CONVERT SEED

D. ACTIVAR RECIPIENTE DATABASE


2 . Para desconectar um banco de dados, qual das seguintes condições devem ser verdadeiras?
(Escolha
Aplique.)
tudo o que
A. O banco de dados deverá ser exportado com o Data Pump antes de deixar cair um APO.
B. Deve haver um backup RMAN completo do recipiente.
C. A APO deve ser desligado.
D. Você deve criar um arquivo XML com os metadados para o PDB.
3 . Qual dos seguintes métodos são opções viáveis para a migração de um pré-12,1 banco de
dados para
PDB um de um CDB existente? (Escolha todos os que se aplicam.)
dentro
A. Actualiza o pré-12.1 base de dados em lugar para a versão 12.1.0.1 ou mais recente e
ligá-lo
CDB a uma
existente.
B. Para o Oracle versões de banco de dados 11 g e 10 g , você pode usar o
DBMS_PDB.DESCRIBE
procedimento de PL / SQL para criar o arquivo XML que permitirá que você para
migrar o banco
ambiente CDB. de dados para um
C. Deixar o banco de dados existente no local e realizar uma migração lógica dos dados
usando
Bomba de dados de exportação / importação em um novo PDB.
D. Deixar o banco de dados existente no local e realizar uma migração lógica dos dados
usando
links de banco de dados entre o banco de dados existente e um novo PDB.
4 . Qual dos seguintes métodos que você pode usar para criar um serviço para um novo PDB ou
adicionar
outro serviço para um APO já existente? (Escolha todos os que se aplicam.)
A. Um novo serviço é criado quando o PDB é criado ou clonado; apenas um serviço é
permitido por PDB.
B. Use o srvctl adicionar comando de serviço para um APO existente.
C. Use o pacote DBMS_SERVICE.
D. Adicionar um novo ouvinte para a configuração e adicionar serviços com lsnrctl.
5 . Você execute os seguintes comandos para CDB01 recipiente:

Qual é o estado padrão da CDB e seus PDBs? (Escolha a melhor resposta.)


A. Todos os PDBs permanecer em um estado MOUNT, incluindo o recipiente raiz.
B. Após o arranque MOUNT, todos os PDBs são abertos como ler escrever, mas ainda no
estado MOUNT.
C. Apenas o recipiente da raiz está aberto, e cada APO deve ser aberto com um arranque
comando a partir do recipiente de raiz.
D. As PDBs são abertos se um gatilho está definido ou você usar o Oracle restart; o
recipiente
é abertoraiz
no modo restrito.

E. O recipiente raiz é aberta, a base de dados é lido semente aberto apenas, e quaisquer
PDBs
umcom
gatilho são abertas.
6 . Qual é a melhor maneira de descobrir se um parâmetro de inicialização é modificável no
APO nível? (Escolha a melhor resposta.)
A. Alterar o contexto da sessão para um APO específico e usar ALTER SYSTEM SET
B. A coluna de tipo em V $ parâmetro será APO.
C. Verifique a ISPDB_MODIFIABLE coluna em V $ PARAMETER.
D. Verifique a ISCDB_MODIFIABLE coluna em V $ PARÂMETROS.

Respostas de auto-teste
1. Um . Para a criação de um banco de dados do recipiente, a única cláusula requerida é
DATABASE
ACTIVAR conectável. Se você não estiver usando OMF e você não tem o parâmetro
conjunto DB_CREATE_FILE_DEST (por exemplo, a um grupo de discos ASM), então
você
o FILE_NAME_CONVERT
precisa usar SEED opcional para especificar onde o banco de dados de
sementes
arquivos (PDB $ SEED) residirá.
B , C , e D estão incorrectos. B está incorreta porque o conjunto de caracteres de banco
parade dados
saber se onão está de
banco relacionado
dados é um CDB. C é incorrecta porque a semente é
FILE_NAME_CONVERT
necessário apenas se você não estiver usando OMF para seus arquivos de banco de dados. D
não é essa cláusula
é incorrecta porque ATIVAR
há DATABASE CONTAINER no banco de dados CRIAR
comando.
2. C e D . Para desconectar um PDB de um CDB, ele deve primeiro ser desligado com o
DATABASE
ALTER conectável. . . comando CLOSE; você também deve criar os metadados XML
arquivo com DBMS_PDB.DESCRIBE para que o PDB pode ser conectado posteriormente
para este
CDB no futuro.
ou outro
A e B são incorrectas. Nem uma exportação Data Pump nem um backup RMAN do
necessário
APO épara desconectar um APO. Quando um APO está desligado, seus arquivos de
dados explicitamente
soltar não são descartados
o PDBa menos
e especificar
que você
a cláusula DATAFILES INCLUINDO.
3. A , C , e D . Se você atualizar o banco de dados para a versão 12.1.0.1 ou mais recente,
você pode executar para criar o arquivo XML e conecte o banco de dados em um
DBMS_PDB.DESCRIBE
CDB existente.
Ambos Data Pump e os links de banco de dados são opções viáveis para a migração do
banco de
porque ambos
dadososemmétodos
particular
de deixar o banco de dados original intacta na sua versão original.
B é incorrecta. Você não pode ligar diretamente a-12.1 pré Oracle Database em um CDB
este usando
método, pois o pacote DBMS_PDB existe apenas no Oracle Database 12 c recipiente
bancos de dados.
4. B e C . Um serviço de escuta é adicionado automaticamente quando você cria, clone, ou
APO, ligue
masum
se você quiser um ouvinte adicional para um APO, você pode usar o srvctl
em um Oracle Restart ou ambiente de cluster ou usar o pacote DBMS_SERVICE com
comando
chama a CREATE_SERVICE e START_SERVICE para criar e iniciar o serviço.
A e D são incorrectas. A está incorreta porque mesmo que um serviço é
criado
automaticamente
quando um PDB é criado, clonado, ou conectado, você pode ter mais de um serviço

por PDB. D está incorreta porque todos os serviços podem compartilhar o ouvinte padrão, se
5. desejar.
E . Quando um CDB está no estado aberto, o recipiente de raiz está disponível para
o banco
conexões,
de dados
e de sementes é aberto, mas como somente leitura. Quaisquer PDBs que têm
um gatilho definido
gerenciados ou sãoRestart são abertos automaticamente.
com o Oracle
A , B , C , e D estão incorrectos. A está incorreta porque uma vez que o CDB é aberto, a
recipiente
raiz é aberto para WRITE DE LEITURA, a base de dados de sementes é aberta para
SÓ LEITURA
PDBs com um egatilho
todos ou serviço Restart da Oracle são abertos também. B é incorrecta
porque
APO a
semente é só de leitura. C está incorreta porque mesmo se há PDBs são
aberto, você pode abri-los a partir do contêiner raiz com o ALTER conectável
automaticamente
comando DATABASE um de cada vez ou todos de uma vez. Você pode usar o comando de
inicialização
abrir um APOparasomente se você definir o recipiente parâmetro de sessão para o nome do
PDB. D éporque o recipiente raiz deve ser explicitamente aberto no modo restrito quando
incorreto
requeridos.
6. C . O ISPDB_MODIFIABLE coluna é verdade em V $ PARAMETER se você pode
esse mudar
parâmetro para um único APO.
A , B , e D são incorrectas. A está incorreta porque mesmo que você vai descobrir se o
parâmetro é modificável, é muito mais fácil olhar em V $ PARAMETER. B é incorrecta
porque a coluna de tipo em V $ parâmetro indica o tipo de dados de parâmetro
valor. D é incorrecta porque não existe tal ISCDB_MODIFIABLE coluna em
V $ PARAMETER.
CAPÍTULO 33
Gerenciando o armazenamento, segurança,
disponibilidade,
e desempenho em um CDB e PDBs

Objetivos do exame
• 063.5.1 Gerenciar Permanente e espaços de tabela temporários em CDB e PDBs
• 063.6.1 Gerenciar usuários comuns e locais
• 063.6.2 Gerenciar privilégios comuns e locais
• 063.6.3 Gerenciar funções comuns e locais
• 063.6.4 Ativar Usuários comuns para acessar dados em PDBs específicos
• 063.7.1 executar backups de um CDB e PDBs
• 063.7.2 Recuperar APO da perda PDB Datafiles
• 063.7.3 Use Data Recovery Advisor
• PDBs duplicados 063.7.4 Usando RMAN
• 063.8.1 Operações monitor e desempenho em um CDB e PDBs
• 063.8.3 gerenciar alocação de recursos entre PDBs e dentro de um APO
• 063.8.4 Execute o Database Replay

Este capítulo cobre uma lista assustadora de objetivos. Não se preocupe-muitos deles são simples se
-lo a compreender o objetivo equivalente para ambientes que não têm bases de dados de recipiente
Tudo o que é necessário traduzir esse conhecimento para um ambiente CDB é um entendimento da
(CDBs).
arquitetura CDB coberto em capítulos anteriores. Há, no entanto, o potencial para confusão. Estar
preparado para alguns efeitos estranhos (normalmente quando se tenta fazer algo no recipiente raiz
deve ser feito em um recipiente pluggable) e sempre estar ciente de que recipiente a sessão é
que
actualmente ligada a.

Gerenciamento de espaço em um ambiente multitenant


Em um ambiente multitenant, tablespaces e os arquivos de dados que as compõem estão associados
quer o recipiente de raiz ou uma das bases de dados passíveis de ligação (PDBs) dentro do CDB.
com
dentro de um
recipiente (seja o root ou um APO), o administrador de banco de dados (DBA) pode emitir
absolutamente
comandos paranormais
criar e gerir espaços de tabela e arquivos de dados. O fato de que um banco de dados
está sendomultitenant
ambiente executado emnãoum
deve ter qualquer efeito.
tablespace Arquitetura
O identificador exclusivo para um espaço de tabela é o nome de tabela qualificado com o número do
contentor.
Não há nenhum problema com vários PDBs ter espaços de tabela com o mesmo nome. De fato, cada
terá um espaço de tabela SYSTEM chamado (para armazenar as definições dos objetos definidos
APO
dentroedo
PDB) uma tabela chamada SYSAUX que contém objetos do Oracle definido como o Automatic
Carga de trabalho Repository (RMA) que pode ser configurado e preenchido de forma independente
em cada APO.
Arquivos de dados devem de, claro, ser um nome único, mas eles ainda são associados com apenas
um PDB
apenas podem
e podeser administrados a partir de dentro que APO.
A consulta seguinte mostra a estrutura de tabela e arquivo de dados de um CDB com dois
recipientes
conectável
chamados jw1 e jw5:

A única grande reforço para a gestão do espaço em um ambiente multitenant é que é


possível definir um orçamento espaço para cada APO, em outras palavras, um limite para o tamanho
etotal
tempfiles
de todos
queoscompõem
arquivos de
o recipiente.
dados Para limitar o tamanho total de um recipiente, conectar-se ao
PDB
e emitir um comando como este:

Qualquer tentativa de adicionar um arquivo de dados ou estender um arquivo de dados existente


quedeve
limite levaria o total sobre a
falhar.

Usando CREATE TABLESPACE


O procedimento para criar e modificar uma tabela num CDB (raiz) recipiente com CRIAR
TABLESPACE é o mesmo que criar um espaço de tabela em qualquer APO. Se você estiver
conectado
CDB $ ROOT,
a então o espaço de tabela é visível e utilizável unicamente no recipiente de raiz; Da
mesma forma, uma
tablespace criado quando conectado a um APO é visível apenas para que PDB e não pode ser usado
por qualquer
outra PDB menos conectado com um link de banco de dados. Quando ligado ao recipiente de raiz, o
visualizações CDB_TABLESPACES e CDB_DATA_FILE irá mostrar toda a imagem, como a
V $ TABLESPACE e V $ DATAFILE. Quando conectado a um PDB, esses pontos de vista mostrará
vontade
o
tablespaces e arquivos de dados que fazem parte do APO ea tabela de undo comum.
Para facilitar o gerenciamento, a Oracle recomenda o uso de diretórios separados para armazenar
APO arquivos
eo CDB. deAinda
dadosmelhor,
para cada
se você usar Gerenciamento Automático de Armazenamento (ASM)
ou Oracle gerenciados (OMF), você automaticamente obter seus arquivos de dados e outros objetos
Arquivos
banco
em diretórios
de dadosseparados
segregados
por ID recipiente. Aqui está como os arquivos de dados para o banco de
dados
são armazenados
CDB01 recipiente
em um grupo de discos ASM:

arquivos de dados do contêiner são armazenados no subdiretório DATAFILE; cada um dos PDBs
conjunto
tem a de
suaarquivos
própria de dados em um desses subdiretórios com a longa seqüência de dígitos
hexadecimais.
OMF com ASM Você
neste
usacenário; você não precisa saber ou se importar o que esses caminhos de
diretório
nomes são
e desde os locais dos arquivos de dados são gerenciados automaticamente.
Padrão Permanente e espaços de tabela temporários em um PDB
Alterar o espaço de tabela padrão em um CDB ou PDB é idêntico ao mudar a tabela padrão em um
não-CDB. Para ambos os CDBs e PDBs, você usar o ALTER banco de dados padrão TABLESPACE
comando. No exemplo a seguir, você define o recipiente para QATEST1, criar um novo espaço de
dentro QATEST1, e alterar a tabela padrão para ser o espaço de tabela que você acabou de criar:
tabela

Daqui para frente, os novos usuários (local ou comum) dentro QATEST1 que não tem um
default
específico
tablespace permanente usará o QA_DFLT tabela.
Para qualquer CDB você pode ter um padrão de tabela temporário ou grupo de tabela temporário
definida ao nível CDB que pode ser utilizado pelo recipiente de raiz. Cada APO também deve ter
uma
tabela temporário. Este será criado automaticamente se o PDB é criado a partir da semente
recipiente e normalmente já existem em qualquer banco de dados não-CDB, que está ligado. A APO
ter vários espaços de tabela temporários para ser usado por usuários diferentes, bem como um
pode
default temporário
tablespace. No exemplo a seguir, você cria uma nova tabela temporário chamado
QA_DFLT_TEMP no APO QATEST1 e torná-lo o padrão de tabela temporário para
QATEST1:

Um espaço de tabela temporária criada dentro de um APO permanece com que PDB quando é
desligado
ligado de voltae para o mesmo ou um CDB diferente. Se um usuário não é atribuído um temporário
tabela, em seguida, esse usuário é atribuído a tabela temporário padrão para o PDB.
específico

Exercício 33-1: Administração Tablespaces em um banco de dados multitenant Este exercício


assume

você tem um CDB chamado CDBA com dois recipientes conectáveis chamados PDBA e pdbb,
inaugurado
modo em leitura
de escrever, e que não há um arquivo tnsnames.ora com entradas para cada APO e o recipiente
raiz.
1. Ative o Oracle Managed Files para PDBA, dando-lhe a sua própria localização. Criar o
indicado
diretório primeiro e garantir permissões de leitura e escrita que o proprietário Oracle tem
sobre ele.aoseguir é para Linux:
exemplo

Note-se que os parâmetros OMF são PDB modificável.


2. Em cada APO, criar um novo espaço de tabela permanente. Use OMF para PDBA e nomear
pdbb. para
arquivos O exemplo a seguir é para o Windows:

3. Investigue as estruturas criadas.

Gerenciar comuns e locais usuários, funções e privilégios


Usuários e funções podem ser definidas no recipiente raiz, caso em que eles são comuns e
a cada APO na CDB, ou eles podem ser definidos em um PDB, caso em que eles são locais e existe
propagadas
somente nesse PDB. papéis comuns e locais podem ser concedidos aos usuários locais ou para
usuários comuns.
concessões de privilégios
direto são sempre local para o recipiente onde a concessão foi feita.

Usuários comuns e locais


Em um ambiente multitenant, existem dois tipos de usuários: comuns usuários e locais usuários. Um
de utilizador num CDB (recipiente raiz) tem uma conta disponível no recipiente de raiz e
comum
automaticamente
cada APO no CDB. emnomes dos usuários comuns devem começar, por padrão, com C ##, o que torna
fácil distinguir um usuário comum de um usuário local em cada APO.
Criando um usuário local em um PDB é exatamente como a criação de um usuário em um não-
CDB. Você pode criar um
usuário local ou com um usuário comum ou com outro usuário local com os privilégios Criar
usuário.

O recipiente raiz (CDB $ ROOT) não pode ter usuários locais, somente os usuários comuns.
ter ausuários
mesma identidade
comuns e senha no recipiente raiz e cada APO, atuais e futuros.
Ter uma conta de usuário comum não significa automaticamente que você tem os mesmos
privilégios
APO, incluindo
em toda
o recipiente
a todas asde raiz. O SYS contas e SYSTEM são usuários comuns que podem ser
definidas
qualquer PDB como seu recipiente padrão. Para novos usuários comuns, o nome de usuário deve
começar
o COMMON_USER_PREFIX
com C ## a menos parâmetro de instância foi alterado do padrão. Note-se que o
Oracle fornecido usuários comuns não têm a C ## prefixo, a fim de manter a compatibilidade com
ambientes não-CDB.
Quando você cria um usuário comum com o comando CREATE usuário, você pode adicionar
CONTAINER = ALL para o comando, como neste exemplo:
Se você estiver conectado ao recipiente raiz e ter o privilégio CREATE USER, o
CONTAINER = ALL cláusula é aplicada por padrão. O mesmo se aplica a um usuário local ea
RECIPIENTE = cláusula CORRENTE. O usuário C ## SECADMIN agora tem privilégios de DBA
na raiz
recipiente. Esse usuário tem uma conta configurada em cada APO, mas sem privilégios em qualquer
PDB a menos que explicitamente
atribuído.

Para permitir que o ## SECADMIN usuário C a pelo menos conectar ao banco de dados
privilégios
QATEST1,apropriados
concedacomo
a segue:

Ao usar CRIAR usuário, você pode opcionalmente especificar o espaço de tabela padrão, o
tabela
padrão
temporário, eo perfil. Estes três atributos devem existir em cada APO; caso contrário, aqueles
valores serão definidos para os padrões do APO para esses itens.
E se um usuário comum é criado enquanto um dos PDBs não está aberto ou está em LEIA
Modo SÓ? atributos do novo usuário comum são sincronizadas na próxima vez que o AO é aberto
LER modo de escrita.
no

Conceder privilégios Comumente e localmente


privilégios comuns e locais aplicam-se a usuários comuns e locais. Se um privilégio é concedido em
recipientes para um usuário comum, é um privilégio comum. Da mesma forma, um privilégio
todas
concedido no contexto
um único APO de
é um privilégio local, independentemente do usuário é local ou comum.
Na secção anterior, o utilizador C ## SECADMIN, um utilizador comum, foi concedida a
CRIARSESSION mas apenas no recipiente QATEST1. Se C ## SECADMIN precisa de acesso a
privilégio
PDBs por padrão, utilize o recipiente = ALL palavra-chave para conceder esse privilégio em todos
todos
os atualPDBs
novas e no CDB.
A partir de uma perspectiva de segurança, você pode conceder privilégios de usuários comuns no
outros
recipiente
recipientes.
raiz, Lembre-se
mas não que apenas os usuários comuns podem se conectar ao recipiente raiz,
independentemente
os privilégios concedidos;
de para um usuário comum para se conectar ao container raiz, o usuário terá
aPrivilégio CREATE SESSION no contexto do container raiz, como você pode ver na seguinte
exemplo:

Para corrigir esse problema para C ## ROOTADM, você precisa conceder o privilégio CREATE
contexto
SESSION
do recipiente
na raiz.

Você revogar os privilégios de usuários e funções usando o comando REVOKE, como nas
e não-CDB.
versões anteriores
A principal diferença usando conceder e revogar em um ambiente multitenant é o
Além da cláusula CONTAINER onde você especificar o contexto da concessão ou revogação. Aqui

são alguns exemplos da cláusula RECIPIENTE:

• CONTAINER = QATEST1 (privilégios válidos apenas no APO QATEST1)


• CONTAINER = ALL (privilégios válidos em todos os PDBs, atuais e futuros)
• CONTAINER = corrente (privilégios concedidos ou revogados no contêiner atual)

Para conceder um privilégio com CONTAINER = ALL, o concedente deve ter o recipiente SET
privilégio, juntamente com a concessão de qualquer privilégio sistema de privilégios.
Gerenciar funções comuns e locais
Papéis, assim como privilégios de sistema e objeto, trabalhar muito mesmo em um ambiente
multitenant
eles fazem emcomo
um ambiente não-CDB. papéis comuns usam as mesmas convenções como usuários
comuns ecom C ##; um papel comum pode ter os mesmos privilégios em todos os recipientes ou
começar
específica
privilégios ou sem privilégios em um subconjunto de recipientes. Você usar a cláusula CONTAINER
para especificar
contexto do papel.
o

Nota no exemplo que um papel comum (C ## MV) foi concedido a um utilizador local
DW17.
(DW_REPL)
O DW_REPL em usuário herda todos os privilégios no papel C ## MV mas apenas no DW17
PDB.
O inverso também é possível: Um utilizador comum (tais como C ## RJB) pode ser concedido um
papel local (tal como
LOCAL_ADM) em um APO específico (tal como QATEST1), e, por conseguinte, os privilégios
concedido através
LOCAL_ADM estão disponíveis apenas em QATEST1 para C ## RJB.

Habilitar os usuários comuns para acessar dados em PDBs específicos


Assim como em um ambiente não-CDB, você pode querer compartilhar objetos com usuários em
outros
padrão,PDBs. De tabelas criadas por um usuário comum ou local não compartilhada e são acessíveis
quaisquer
apenas
PDB onde
no eles foram criados.
mesas compartilhadas, por outro lado, tem algumas restrições. usuários comuns Só a Oracle
fornecidos
(Tais como SYS ou SYSTEM) pode criar tabelas compartilhadas, e estes só podem ser criados
atravésfornecidos
scripts da execução docriam o componente em que eles são usados. usuários comuns que o DBA
que
cria (mesmo com privilégios de DBA como CREATE UTILIZADOR, apagar qualquer tabela, e
assim
não pode
porcriar
diante)
tabelas compartilhadas.
Os dois tipos de objetos compartilhados são “links”: ligações entre objetos e links de metadados.
cadaligações
APO paraentre
umaobjetos
mesa conectar
no recipiente raiz, e cada APO vê as mesmas linhas. Um bom exemplo
são dados AWR em tabelas como DBA_HIST_ACTIVE_SESS_HISTORY, que tem a CON_ID
disso
coluna
para que você possa identificar qual recipiente a linha na
DBA_HIST_ACTIVE_SESSION_HISTORY aplica
para.
Em contraste, links de metadados permitir o acesso a tabelas no recipiente raiz mais a sua própria
cópias
privada
dos dados. A maioria dos pontos de vista DBA_xxx utilizar este método. Por exemplo,
olhando para o visualizar no APO QATEST1, não existe qualquer coluna CON_ID a partir da
DBA_USERS
perspectiva APO.
No entanto, da mesma tabela no recipiente raiz, você pode olhar para CDB_USERS e ver a
usuários locais e comuns em todos os recipientes.

Os utilizadores comuns, tais como C ## RJB existir para cada APO (que não seja o banco de
dadosQAFRED
tal como de sementes). Comercial
só existem no APO com CON_ID = 3 (QATEST1). Note também que o comum
usuários criados devem começar com C ##; usuários comuns da Oracle-fornecidos não precisam este
prefixo.
Exercício 33-2: Gerenciar usuários e papéis comuns e locais Este exercício demonstra como
gerenciar usuários e funções em um ambiente multitenant. Supõe-se a CDB é nomeado CDBA, com
conectável recipientes PDBA e pdbb.
1. executar consultas para determinar que existem usuários.

Observe que os usuários são comuns e que são locais.


2. Crie usuários no recipiente raiz e conceder um papel comum.

Note que não é possível criar um usuário comum a menos que o prefixo é usado.
3. Conecte-se como um usuário comum recém-criada.

Note-se que a conexão com um APO falhará se o usuário não tiver sido concedida a função
ou privilégio com um escopo apropriado.
apropriada
4. Crie um usuário local.

Observa-se que os novos usuários não são “A Oracle mantida.”


5. Use papéis comuns e locais.
Apenas papéis comuns podem ser criados na raiz, e eles podem ser concedidas comumente
ou localmente.
Qualquer tentativa de criar um papel local na raiz ou para conceder a um usuário em um
determinado APO vai
falhou.
O sintaxe é válida para os papéis locais e comuns? Qual é o alcance das diferentes papel
Grants?

TIP EXAME No recipiente raiz, apenas os usuários comuns e papéis podem ser criados.
CONTAINER = ALL para a instrução CREATE é opcional; CONTAINER = atual não é
acrescentando
permitido.
Em um recipiente pluggable, somente os usuários locais e papéis podem ser criados. acrescentando
CONTAINER = atual para a instrução CREATE é opcional; CONTAINER = ALL não é
permitido.

Auditoria na multitenant Ambiente


auditoria tradicional (como habilitado com os parâmetros de instância AUDIT_% e o comando
FISCAL)
não mudam fazquando se deslocam para um ambiente multitenant. Ela é configurada em cada APO
como no precedente
lançamentos. Unified Auditoria está ciente multitenant e é a técnica recomendada.
A sintaxe para criar e permitindo que as políticas de auditoria unificadas foi discutido no
Capítulo
sintaxe 16 . este
é inalterada em um ambiente multitenant. O que muda é a visibilidade da auditoria
políticas. Se a política é definida no recipiente raiz, ele pode ser habilitado em todas as CDBs. Não
pode ser(ou desativado) a partir de um APO. Isto significa que o DBA Sênior, quem tem acesso à
ativado
recipiente, pode configurar a auditoria de qualquer acção por qualquer usuário em todo o ambiente.
raiz
A políticaconectado
enquanto definida a um APO é visível apenas dentro desse PDB e pode ser gerido pelo DBA de
PDB.
que
Para exibir registros de auditoria, consultar a exibição UNIFIED_AUDIT_TRAIL. Isto irá
registros
mostrar
gerados
a auditoria
pelo seu recipiente conectado atualmente, seja a raiz ou um APO. Quando ligado a
a raiz, você também pode consultar a exibição CDB_UNIFIED_AUDIT_TRAIL. Esta é uma visão
da pista de auditoria unificada em cada recipiente.
consolidada
O exemplo a seguir cria e permite uma política de auditoria em toda a CDB que irá capturar
todas as ações

por usuários que se conectaram com privilégios de DBA atribuídos pelo sistema operacional ou
arquivo de senhas
autenticação:

Um usuário agora se conecta à JW1 recipiente conectável com o privilégio SYSDBA, mas não
desativar
pode (ou mesmo ver) a política de auditoria.
No entanto, no recipiente raiz os registos de auditoria pode ser visto como tendo sido gerado no
recipiente conectável.

Backup multitenant e Recuperação


Em um ambiente multitenant, você usar as mesmas ferramentas para backup e recuperação como em
um não-CDB
meio Ambiente. Você pode fazer backup e restaurar todo o CDB, um único APO, um espaço de
tabela, um
mesmo umarquivo
único bloco
de dados,
em qualquer
ou lugar do CDB. Muitas operações podem ser executadas a partir
de um PDB,
alguns podeme ser realizadas apenas no nível CDB a partir do recipiente de raiz. Você também pode
duplicarRecovery
usando um APO Manager (RMAN). Usando RMAN lhe dá mais flexibilidade do que ao clonar um
com o CREATE DATABASE conectável. . . A PARTIR DE . . . opção. Por exemplo, você pode usar
APO
RMAN DUPLICAR comando para copiar todos os PDBs ou um subconjunto de PDBs dentro de um
o
CDB ou
CDB, para umanovo
incluindo raiz e os recipientes de sementes.
A Data Recovery Advisor é utilizável em um CDB, da mesma forma como em um não-CDB.
Segue o
rotina dentro de uma sessão RMAN.

Isto irá informar sobre problemas detectados, gerar um script para corrigi-los, e executar o script.

Fazer backup de um CDB e Individual PDBs


Para bancos de dados multitenant, a sintaxe RMAN foi modificado, e foram adicionadas novas
Você precisa ter cuidado ao se conectar com o RMAN porque o ambiente ORACLE_SID
cláusulas.
variáveis referem-se a instância, que é gerido a partir da raiz. Ligar através de sistema operacional
autenticação, portanto, conectá-lo ao recipiente raiz, como mostra a Figura 33-1 . Note-se que o
sessão RMAN pode ver os espaços de tabela e arquivos de dados de todos os recipientes e que (com
da raiz) as áreas de tabela são prefixados com o nome do recipiente.
exceção
Figura 33-1 sessão Uma RMAN contra o recipiente raiz de um CDB

De uma sessão tal como o representado na Figura 33-1 , você pode fazer backup de todo o CDB
PDBs
ou com
indivíduo
os comandos, tais como: estes

O segundo comando no código anterior irá identificar os espaços de tabelas que compõem o
nomeado recipiente
possível fazer backupe apoiá-los usando
de tablespaces o padrão RMAN
individuais foram
de bancos configurados.
de dados Issoa épartir
conectáveis tambémda raiz,
usandodoo recipiente como um prefixo. Aqui está um exemplo:
nome

Para se conectar a um recipiente pluggable, você deve usar a autenticação de arquivo de senha e
através
conectar
de um nome do serviço TNS. Aqui está um exemplo:

O escopo de uma sessão lançado desta maneira será limitado aos espaços de tabelas que
compõem
banco de dadoso de conector, e não há mudanças na sintaxe do que você usaria em um não-CDB.

Restauração e recuperação
Em caso de qualquer tipo de falha exemplo, recuperação de instância ocorrerá automaticamente na
a partir do modo de montagem para o modo de abrir, do mesmo modo como para um não-CDB.
transição
Quando
em voo transações
isso for concluído,
serão revertidas
qualquerquando os PDBs individuais são abertas. Recuperar de perda
de um controlfile é também idêntica para um não-CDB: No modo nomount, o controlfile deve ser
restaurado ou
recriado.
Para restaurar e recuperar toda a CDB, iniciar a instância no modo nomount, ligar à raiz
recipiente (o qual é o único recipiente acessível neste modo), e emitir o habitual RESTAURAR
CONTROLFILE, Restore Database, e recuperar comandos de banco de dados que são utilizados
recuperação completa ou incompleta. Os arquivos de dados críticos em um CDB são o sistema e
para
desfazer
de tabela do recipiente raiz. Danos a estes irão forçar a instância CDB para terminar, e eles
deve ser restaurado e recuperado no modo de montagem. Até agora, não há diferenças entre CDB e
não-CDB. As diferenças são ao aplicar restaurar e recuperar operações para PDBs individuais.
Dentro de um PDB, o espaço de tabela SYSTEM é crítica. Se este estiver danificado, todo o
derrubado
recipiente
modo
seráa montar, e até que o espaço de tabela é restaurado e recuperado, ele não pode ser
Outros PDBs não será afetada por esta. Quaisquer outros espaços de tabela pode ser colocado
aberto.
offline, restaurado,
recuperados e
individualmente enquanto o APO permanece aberta. Estas operações podem ser
realizadas raiz
recipiente a partir
por da
um prefixo no nome de tabela com o nome do recipiente ou a partir de dentro do
PDB usando
comanda o habitual não CDB.

PDBs duplicado utilizando RMAN


Capítulo 32 mostrou como clonar um PDB usando o DATABASE conectável CRIAR. . .
DA comando. RMAN lhe dá mais flexibilidade e escalabilidade ao duplicar um ou mais
PDBs dentro de um CDB ou toda a CDB. Como em qualquer operação RMAN duplicados, você
deve criarauxiliar
instância uma para o destino CDB. O exemplo auxiliar deve ser iniciada com o
inicialização parâmetro ENABLE_PLUGGABLE_DATABASE = TRUE.
Ao duplicar um CDB, a sintaxe permite indicar que PDBs deve ou não ser
incluído no duplicado. A segunda via incluirá sempre os recipientes de raízes e de sementes. Para
duplicar um CDB para outro CDB com apenas um PDB chamado ferramenta para uma nova CDB
chamado NOVE, você

use o comando RMAN DUPLICATE assim:

Se você deseja copiar dois ou mais bancos de dados passíveis de ligação, basta adicioná-los ao
comando
final do
duplicado.

Exclusões são permitidos no comando duplicado. Se você deseja clonar um CDB inteiro, mas
sem a CCREPOS PDB, faça o seguinte:

Finalmente, você pode duplicar não só bancos de dados passíveis de ligação, mas também
CDB.
espaços de tabelas individuais, para um novo
Mulitenant Performance Monitoring and Tuning
De um modo geral, instância e tuning de banco de dados pode ser melhor feito a partir do container
raiz, aopartir
onde exemplo
de e a base de dados como um todo pode ser observada. ajuste de SQL vai ser feito
de dentro do recipiente onde o SQL está em execução. Em ambos os casos, a mesma metodologia
normalmente
que você
usaria em um ambiente não-CDB aplica.

1. Identificar o problema e um objetivo.


2. Determinar uma possível causa do problema.
3. Aplicar uma solução.
4. Confirme se a solução tem sido eficaz.
5. Repita conforme necessário até que o objetivo seja alcançado.

As mesmas técnicas e ferramentas que você usaria em um não-CDB estão disponíveis,


CDB geralmente,
e PDB níveis.
tantoUma
a questão que é único para um ambiente CDB é a possibilidade de que a
gerado por sessões contra um PDB poderia impactar negativamente a atividade em outra PDB.
atividade
isso, o Gerenciador de recursos tem melhorias para controlar o que estão disponíveis para cada APO
Gerenciar
recursos.
Ajustando o Instância
Ajustando os parâmetros no CDB é muito parecido com ajuste uma única instância em um ambiente
não-CDB
tem váriasque
aplicações com diferentes requisitos de recursos e disponibilidade. Vale a pena mencionar
mais uma vez que um CDB é uma única instância de banco; No entanto, com os recursos adicionais
do multitenant
ambiente, você tem muito mais controle sobre o consumo de recursos entre as várias aplicações
(Cada um na sua própria APO) para além da forte isolamento entre as aplicações de uma segurança
perspectiva.

Ajustando a memória em um CDB significa que você está mudando as mesmas áreas de
memória como em um não-CDB:
• cache de buffer (SGA)
• Piscina colectiva (SGA)
• Área do Programa Global (PGA)

Ao calcular os requisitos de memória para um CDB, a sua primeira estimativa pode ser a soma
de todos
requisitos de memória correspondentes para cada não-CDB que se tornarão um APO. Claro que você
eventualmente, querem reduzir o consumo de memória total para o CDB com base em uma série de
vai
fatores. Para
exemplo, nem todos os PDBs estará activo ao mesmo tempo; Portanto, você provavelmente não vai
precisar
total de memória
tanto alocada para o CDB.
Usando Enterprise Manager Nuvem de Controle 12 c é uma boa maneira de ver o uso de
CDB.recursos
Na Figura
em todo
33-2o, o recipiente tem três CDB01 PDBs activas e duas inactivos.
Figura 33-2 Vendo o uso de recursos dentro de um AO de CDB usando Cloud Control 12 c

A memória total alocado para o CDB é de aproximadamente 5 GB. Três bancos de dados não-
CDB faria
utilização provável 5GB ou mais cada; todos os cinco PDBs em CDB01 pode realizar muito bem em
um Existem
total de 5GB.
algumas abordagens diferentes à alocação de recursos entre os PDBs dentro de um
CDB:
• Nenhum Que cada APO usar todos os recursos do CDB se nenhum outro PDB está ativa;
quando
vários PDBs precisam de recursos, eles são divididos igualmente.

• Mínimo Cada APO recebe uma alocação mínima garantida de recursos.


• Mínimo / Máximo Cada APO recebe tanto uma alocação de recursos mínimo garantido e
uma
máximo.

Alocação de utilização de recursos em um CDB é medido em ações . Por padrão, todos os PDBs
recursos
pode alocados
consumiràtoda
CDB. Nós cobrimos mais detalhes sobre como as ações são alocados e
mais adiante neste capítulo.
calculados
Há apenas uma spfile por exemplo CDB. Todos os parâmetros de banco de dados são
spfile,
armazenados
mas muitosnodesses
CDB parâmetros
de podem ser alterados no nível PDB. A coluna
ISPDB_MODIFIABLE é uma maneira fácil de ver quais parâmetros você pode mudar ao nível PDB.

Quando você desconectar um PDB, seus parâmetros personalizados ficar com o PDB
desconectado
quando isso PDB eestá
sãoligado
definidas
de volta, independentemente de qual PDB ele está conectado a. Quando
um APO os
clonado, é parâmetros personalizados são clonados também. No nível de contêiner, você também
pode olhar vista
dicionário para PDB_SPFILE
os dados $ para ver quais parâmetros são diferentes em toda PDBs.

No APO TOOL, o parâmetro SESSIONS é diferente do padrão (ao nível CDB); a


RPTQA12C PDB tem três parâmetros não padrão definidos.

Usando a memória Advisors


O cache de buffer em um CDB, compartilhada entre todos os PDBs, comporta-se como o cache de
buffer os
CDB; emmesmos
um não-menos recentemente usado (LRU) algoritmos são utilizados para determinar
quando
deve e se um bloco
permanecer no cache de buffer. Porque o cache de buffer é compartilhado, ID contêiner do
(CON_ID) também é armazenada em cada bloco. O mesmo ID recipiente é armazenado em outro
PDB
SGA edePGA
áreas memória, como a piscina comum na SGA ea PGA global. Os assessores de memória de
versões anteriores do Oracle trabalho de banco de dados da mesma maneira em um ambiente
multitenant;
recomendações de colagem está no nível CDB (exemplo). parâmetros de memória que podem ser
ajustado no APO estão limitados a SORT_AREA_SIZE e sort_area_retained_size.
Figura 33-3 mostra a saída da memória do Supervisor SGA lançado a partir de Nuvem de
Controle 12 c .

Figura 33-3 CDB SGA Advisor Memória em Nuvem de Controle 12 c

Mesmo com vários PDBs no recipiente CDB01, parece que a memória total para o CDB
pode ser reduzida em pelo menos 1GB e manter o bom desempenho para todos os PDBs.
Para acomodar um número potencialmente maior de sessões em um CDB, o parâmetro
PGA_AGGREGATE_LIMIT foi adicionado para colocar um limite rígido sobre a quantidade de
memória
O PGA_AGGREGATE_TARGET
PGA usado. parâmetro existente era útil em versões anteriores como um suave
limitar, mas apenas para a memória ajustável. Várias sessões que utilizam memória untunable (tais
como PL / que
aplicações SQLalocam grandes matrizes de memória) poderia usar toda a memória PGA disponível,
fazendo com que a atividade de swap no nível do sistema operacional e afetar o desempenho em
todas asoinstâncias
Assim, PGA_AGGREGATE_LIMIT
no servidor. parâmetro foi adicionado para interromper solicitações de
memória
ou mais conexões
PGA pornãoum pertencentes ao sistema para ficar sob este limite.

Gerenciar alocação de recursos entre PDBs e


Dentro de um APO
Dentro de um PDB, o DBA pode (em geral) configurar o Gerenciador de recursos exatamente como
em um
não-CDB; há apenas alguns recursos que não estão disponíveis. A mudança no uso do recurso

Manager é no nível do CDB, onde um plano deve ser criado que vai alocar recursos entre
PDBs.

Usando Ações para gerir os recursos Inter-PDB


Cada APO que está conectado a um CDB concorre para os recursos de um CDB-principalmente
unidades de processamento (CPUs), servidores paralelos, e, no caso de Oracle Exadata, de entrada /
Central
saída (Ide
quanto / O).
cada
Como
recurso a APO recebe depende de quantos ações que PDB foi atribuídas quando era
criada.
EXAME TIP grupos Nem de consumo (usando o Gerenciador de Recursos), nem ações podem ser
definidas para
recipiente raiz.o

Por padrão, cada APO recebe uma partes salvo indicação em contrário. Quando um novo APO é
PDBadicionado
existente está
ou umdesligado, o número de ações que cada APO tem permanece a mesma. Tabela
33-1 mostra
CDB com quatro
um PDBs: RH, BI, REPOS, e TOOL. O BI PDB tem três partes, e os restantes têm
cada um, o padrão.

Tabela 33-1 PDBs e Atribuição Das Acções para Quatro PDBs

O banco de dados da ferramenta, por exemplo, é garantido 16,67 por cento dos recursos da CPU
do servidor
necessário. se ou mais dos outros PDBs não estão ativos, sua participação está disponível para
Se um
PDBs ativos.
Na Tabela 33-2 , você cria um PDB chamado NCAL e não especificar o número de ações, por
issopara 1.
padrão

Tabela 33-2 PDBs e Atribuição Das Acções para Five PDBs Após adicionar um novo

A CPU mínimo garantido para cada APO é automaticamente recalculado com base no novo total
número de ações. Cada APO com uma partes agora recebe 14,29 por cento dos recursos da CPU, eo
recursos de CPU disponíveis (no mínimo) para o BI PDB estão agora 42,86 por cento.

Criando e Recursos Modificando Planos gerente


Para refinar o consumo de recursos ainda mais, você pode definir limites dentro de cada PDB usando
Gerente. Do ponto de vista do PDB, todos os recursos são controlados por diretrizes criadas usando
Resource
DBMS_RESOURCE_MANAGER. A quantidade de CPU, Exadata I / O, e servidores paralelos
usado pelo padrão PDB a 100 por cento, mas pode ser ajustado para baixo para 0 por cento,
simultâneos
dependendo
do dia ou outras
do tempo
circunstâncias.
O plano de recursos em si é criado no nível CDB, e você criar diretrizes para cada APO
dentro da CDB. Você também pode especificar um conjunto de directivas padrão para esses PDBs
conjunto explícito
que não têm um de directivas.

Identificar parâmetros para limitar o uso PDB Resource


Como parte do plano de utilização para cada APO, há dois limites fundamentais que você pode
controlar:
limite paraaautilização
CPU, Exadata I / O, e servidores paralelos, bem como um limite do servidor paralelo.
Os planos
limites directiva estão UTILIZATION_LIMIT e PARALLEL_SERVER_LIMIT, respectivamente.
O UTILIZATION_LIMIT directiva recursos define a percentagem de CPU, I / O, e em paralelo
servidores disponíveis para um APO. Se UTILIZATION_LIMIT é fixado em 30, então o PDB pode
usarpor
30 não maisdos
cento do recursos
que disponíveis para o CDB, mesmo se nenhum outro PDBs estão ativos.
Para refinar ainda mais os limites de recursos, você pode usar PARALLEL_SERVER_LIMIT
para definir
percentual máximoo de valor PARALLEL_SERVERS_TARGET da CDB; este valor substitui o
directiva UTILIZATION_LIMIT, mas apenas para recursos paralelos. O padrão é 100 por cento.

Criando o plano de CDB Resource


Os passos para a criação de um plano de recursos CDB são semelhantes para a criação de um plano
de recursos
com passos em um não-CDB,
adicionais mas
para cada APO. Você cria e gerencia o plano de recursos do container raiz
só. Tabela 33-3 lista as etapas e chamadas DBMS_RESOURCE_MANAGER correspondentes
necessários
criar e configurar
para o plano de recursos CDB.

Tabela 33-3 Passos para criar um plano de recursos com chamadas


DBMS_RESOURCE_MANAGER
Outros procedimentos fundamentais na DBMS_RESOURCE_MANAGER incluem
alterar
UPDATE_CDB_PLAN
as características do plano
para de recursos CDB e DELETE_CDB_PLAN para excluir o recurso
planejar e todas as suas directivas. Para atualizar e excluir directivas plano CDB, use
UPDATE_CDB_PLAN_DIRECTIVE e DELETE_CDB_PLAN_DIRECTIVE.

Exercício 33-3: Criação de um Plano de CDB Resource com as Directivas PDB Neste exercício,
você um
criar vai plano de recursos CDB para o recipiente CDB01 e definir diretrizes do plano para duas das
na CDB.
PDBs

1. Crie uma área pendente para o plano de CDB.

2. Criar um plano de recursos que administra a ferramenta e CCREPOS PDBs para minimizar
CPUoutro
e uso de recursos.

3. Criar uma directiva plano que dá PDBs ações diferentes. Neste, os PDBs chamado TOOL e
CCREPOS ter seráuma partilha
de 75 cada um. O limite de utilização para a ferramenta deve ser de 50
por cento.
por cento, e para

4. Validar e submeter a área pendente.

5. Finalmente, fazer esta Resource Manager planejar o plano atual.

Visualizando directivas do Plano de Recursos


No Oracle Database 12 c você tem uma vista dicionário de dados chamado
DBA_CDB_RSRC_PLAN_DIRECTIVES para ver todos os planos de recursos atuais. consultando
vista, você pode ver os planos de recursos que você acabou de criar para a ferramenta e CCREPOS.
que
Nas versões anteriores do Oracle Database e para não-CDBs no Oracle Database 12 c , a
vista dicionário de dados correspondente é DBA_RSRC_PLAN_DIRECTIVES.

Gerir Recursos Dentro de um APO


planos de recursos pode gerenciar cargas de trabalho dentro de um APO também. Estes planos de
recursos
cargas degerenciar
trabalho, assim como eles fazem em um não-CDB e, não surpreendentemente, são
chamadosrestrições
algumas de planose diferenças
de recursoscom
PDBplanos
. Lá de PDB. A Tabela 33-4 mostra o parâmetro e
característica
diferenças entre os planos de recursos PDB não CDB e.

Tabela 33-4 Diferenças entre não-CDB e Planos de Recursos PDB

Independentemente do tipo de recipiente, você ainda ver planos de recursos usando o V $


vistaRSRC_PLAN
do desempenho dinâmico. Para encontrar o plano de recursos CDB ativa, selecione a linha em
V $ RSRC_PLAN
com CON_ID = 1.

-CDB não Planos de Recursos Migrando


Você provavelmente vai converter e conectar muitos não-CDBs como novos PDBs. Este processo é
simples,
e todas as suas aplicações devem funcionar como esperado. Se o não-CDB tem um plano de
recursos, será
convertidos também, desde que atenda às seguintes condições:

• Não há mais de oito grupos de consumidores.


• Não há subplanos.
• Todas as alocações de recursos estão no nível 1.

Em outras palavras, o plano de recursos migraram deve ser compatível com um novo plano de
segue
recursos
as regras
PDBdaque
seção anterior. Se o plano viola qualquer uma dessas condições, o plano é
convertido durante a operação de encaixe para um plano que é compatível com um APO. Este plano
pode ser
inadequados; você pode soltar, modificar ou criar um novo plano de recursos. O plano original é
salva em
DBA_RSRC_PLAN_DIRECTIVES com a coluna STATUS tendo um valor de legado.
Execute o Database Replay
A funcionalidade Database Replay a partir anteriores Oracle Database lançamentos também foi
no Oracle Database 12 c para incluir replays de carga de trabalho simultâneas como uma ferramenta
aprimorada
de planejamento
como para estimar
vários não-CDBs irá realizar em um ambiente CDB. Você pode levar cargas de trabalho de
a partir de vários servidores em um ambiente não-CDB e reproduzi-los em várias configurações em
produção
único novo servidor para simular o quão bem eles pudessem coexistir em um ambiente multitenant.
um

Fonte de captura de banco de dados As cargas de trabalho


Quando você capturar as cargas de trabalho para o potencial de implantação multitenant, as cargas
de trabalhounidades
diferentes são tipicamente em e locais; a carga de pico para cada aplicação é provável em
de negócios
diferentes
o dia, o quemomentos
torna estas
doaplicações candidatos ideais para a consolidação. A Figura 33-4 mostra um
conjunto típico de cargas de trabalho de aplicativos atualmente em servidores diferentes.

Figura 33-4 cargas de trabalho candidatos para a consolidação multitenant

Você também pode analisar PDBs e cargas de trabalho de captura existente para ver como eles
PDBiriam atuarCDB
de outro comoem
umum servidor diferente. As etapas gerais que você vai seguir como parte desta
fase são como se segue:
análise

1. Capturar a carga de trabalho de um não-CDB ou PDB existente.


2. Opcionalmente exportar os snapshots AWR para o banco de dados.
3. Restaure o banco de dados de candidato no sistema de destino.
4. Faça as alterações no banco de dados do candidato importado, conforme necessário, como
fazer
Banco
o upgrade
de dados
paradeo 12
Oracle
c.
5. Copie os arquivos de carga de trabalho gerados no sistema de destino.
6. Processo da carga de trabalho como um passo de pré-requisito de uma só vez.
7. Repita os passos 1-6 para todos os outros bancos de dados de candidatos.
8. Configurar o sistema de destino para a repetição (tal como os processos de cliente repetição
carga de trabalho).
9. Repetir as cargas de trabalho para todos os PDBs dentro do único CDB no sistema alvo.

No servidor de banco de dados de origem, você vai capturar a carga de trabalho para um típico
de 8 horas
período. ou 24
Você vai horastodas as cargas de trabalho capturados para cobrir o mesmo período de
querer
realização
tempo. Para
conjuntos dooptimizar
de teste de repetição,
afinação. o você pode, opcionalmente, instantâneos de exportação AWR, perfis
SQL e SQL
As cargas de trabalho de processos no sistema de destino
Depois de importar o banco de dados candidato em um PDB do novo CDB, você importar a carga de
trabalho
gerado no servidor de origem. Você pré-processar os arquivos de carga de trabalho em preparação
paraprecisa
que o replay,
acontecer apenas uma vez para cada carga de trabalho importado. É recomendado que
você reproduzir
carga de trabalhocada
importado individualmente para garantir que não existem variações extremas no
em comparação com o desempenho desse banco de dados no servidor original.
desempenho

Reproduzir cargas de trabalho no alvo CDB: Repetição Consolidado


Depois de todos os PDBs foram criados e pré-processados, remapear quaisquer conexões que podem
se referirque
objetos a não existem no sistema de destino. Criar uma agenda de repetição que irá reproduzir
cada
ao mesmo
carga tempo
de trabalho
e ritmo que ele faz no sistema de origem. Você pode criar várias agendas para ver
como cargas de trabalho podem ser deslocados para otimizar o desempenho global da CDB. Este é o
repetição capacidade, que irá repetir todo o trabalho de toda a fonte não-CDBs simultaneamente.
consolidado
Após a sessão de replay é completo, você rever os relatórios gerados pela base de dados
Replay
consolidada
para ver, por exemplo, se o tempo de resposta e acordo global de nível de serviço (SLA) do
bases de dados em seus servidores originais podem ser atendidas por esta plataforma de
consolidação.
regressões, então
Se houver
você podegrave
usar as metodologias de ajuste discutidos anteriormente neste capítulo e
executenovamente.
repetir o Mesmo depois de tuning, você pode achar que o servidor precisa de mais CPUs
ou memória.
você vai descobrir
Idealmente,
que cada banco de dados é executado tão rápido ou mais rápido do que ele fez no
servidor original. de arquivos de captura processados podem ser repetido quantas vezes desejar,
Um conjunto
configurações
talvez comparadiferentes
a instância CDB ou com diferentes planos gerenciador de recursos. Para
comparar
CDB repetição
inteiro é executado,
pode precisar de ser orevertido para um ponto conhecido antes de cada repetição
consolidada.
Flashback ouBase
ponto-em-tempo
de dados de recuperação é útil para isso para garantir que cada corrida começa
a partir de
Durante o replay,
um estado
gerarconhecido.
instantâneos e relatórios AWR como você faria para um banco de dados de
produção.

Broca Two-Minute
Gerenciar Permanente e espaços de tabela temporários em CDB e PDBs
• O comando CREATE TABLESPACE cria uma tabela cuja visibilidade é limitada à
recipiente em que foi criado, quer o CDB ou qualquer um dos PDBs.
• Usar ASM e OMF para espaços de tabela em um ambiente multitenant mantém
automaticamente
arquivos de dados para cada APO em um diretório separado para facilitar a manutenção.
• Cada APO pode ter seu próprio padrão de tabela permanente e tabela temporário ou
grupo tabela temporário.

Gerenciar usuários comuns e locais


• Os dois tipos de usuários em um ambiente multitenant são comuns e local.
usuários • comuns não criados durante uma instalação do Oracle deve começar com um prefixo
especificado,
que é o padrão de C ##.
• O recipiente raiz não pode ter usuários locais, somente os usuários comuns.
usuários comuns • Non-Oracle mantidos não têm privilégios em qualquer recipiente até que seja
explicitamente
concedido.

Gerenciar privilégios comuns e locais


• Non-Oracle mantido usuários comuns precisam o privilégio CREATE SESSION para
conectar-se
qualquer recipiente, incluindo CDB $ ROOT.

• O GRANT e REVOKE comandos funcionam como em um ambiente não-CDB, com a adição


da cláusula CONTAINER.
• A cláusula CONTAINER pode especificar um recipiente específico, todos os recipientes
recipiente
(ALL), ou o actualmente ligado (atual).

Gerenciar funções comuns e locais


• papéis comuns começam com um prefixo especificado, que é um padrão de C ##.
• papéis comuns podem ter diferentes privilégios em cada APO.
• A cláusula CONTAINER especifica o escopo das mudanças para o papel com GRANT ou
REVOGAR.

Habilitar os usuários comuns para acessar dados em PDBs específicos


• Os dois tipos de objetos compartilhados são ligações entre objetos e links de metadados.
• O CDB_USERS vista dicionário de dados tem as mesmas colunas como DBA_USERS com o
Além da coluna CON_ID.
• Cada recipiente gere a sua própria segurança, concedendo funções e privilégios localmente
para
usuários
local ecomuns.

Executar backups de um CDB e PDBs


• RMAN inclui o novo conectável cláusula fazer backup e recuperar um PDB a partir da raiz.
• Você pode fazer backup do contêiner raiz como um PDB com o nome CDB $ ROOT.
• O comando Relatório de Esquema mostra cada tablespace e arquivo de dados dentro de um
CDB
dependendo
ou PDB, de como você conectado ao RMAN.
• A palavra-chave conectável está disponível em outros comandos do RMAN como duplicados,
Switch, e DELETE.
• Você pode fazer backup de um APO indivíduo como o proprietário recipiente com privilégios
SYSDBA
(Noncommon)
ou comodeum
usuário local com privilégios SYSDBA ou SYSBACKUP.

Recuperar APO da perda PDB Datafiles


• recuperação Instância ocorre apenas no nível CDB.
• Faltando arquivos de dados temporários (tempfiles) são recriados automaticamente no
recipiente
• Flashbackaberto.
Database está disponível apenas no nível CDB.
• PDB PITR recuperação funciona de forma semelhante a uma recuperação de tabela em um
não-CDB.
• Tablespace PITR está disponível para qualquer espaço de tabela diferente de SYSTEM,
desfazer e SYSAUX.
• perda CONTROLFILE é tratado da mesma forma que um não-CDB: Ou substituir o ausente
oudanificado controlfile com uma cópia multiplexado ou restaurar a partir de um backup
automático RMAN.
• Recuperação do SYSAUX arquivo de dados raiz pode ocorrer com a CDB e todos os PDBs
online.

Use Data Recovery Advisor


• A Data Recovery Advisor suporta CDBs de instância única e não-CDBs, mas não agrupado
(RAC) bases de dados.
• Use o comando LIST FALHA para ver todas as falhas de dados pendentes dentro RMAN.
• ADVISE FALHA mostra uma ou mais opções para reparar o erro do banco de dados.
• REPAIR FALHA PREVIEW mostra o RMAN medidas irão tomar para reparar o corrompido
ouarquivos de dados perdidos.
• REPAIR FALHA implementa uma das recomendações fornecidas com ADVISE
FALHA.
• falha de mídia podem ser reparados usando PITR, quer ao nível do espaço de tabela APO
APO ou. CDB rebobina tanto o CDB e todos os PDBs dentro da CDB.
• Flashback
• Você não pode recapitular um CDB a um número de alteração do sistema (SCN) antes de
banco
recuperação
de dadosdedeponto
qualquer
no tempo
PDB (DBPITR).
PDBs duplicado utilizando RMAN
• Você usa o comando RMAN duplicado com novas cláusulas que especificam um ou mais
PDBs
incluir na duplicado.
• Usando a palavra-chave SKIP, você pode duplicar todos os PDBs dentro de um CDB exceto
para
PDBs.
o especificado
• A palavra-chave TABLESPACE com um nome de tabela qualificado irá duplicar um único
tabela, juntamente com quaisquer outros PDBs completas, em um único comando duplicado.

Monitorar operações e desempenho em um CDB e PDBs


• A CDB e seus PDBs são afinados como uma única instância desde, bem, a CDB é uma única
instância.
• metodologias CDB de ajuste são idênticas às metodologias de ajuste bem estabelecidos para
não-
ambientes CDB.
• Ao consolidar múltiplas não-CDBs em um único CDB, começar somando o
o uso de recursos de cada não-CDB.
• alocações de uso de recursos entre PDBs são medidos em ações.
• Os parâmetros que podem ser alterados dentro de um APO são identificados pela coluna
ISPDB_MODIFIABLE em V $ PARAMETER.
• O cache de buffer no exemplo da CDB é compartilhada por todos os PDBs, e cada bloco no
buffer
cache tem um ID recipiente.
• O novo parâmetro PGA_AGGREGATE_LIMIT é um limite rígido sobre o uso total PGA em
todos
PDBs.

Gerenciar alocação de recursos entre PDBs e dentro de um APO

• Você usa DBMS_RESOURCE_MANAGER para criar alocações de recursos tanto no CDB e


níveis APO.
• A participação é a unidade básica de recurso mínimo exigido para a APO e padrões para 1.
• O número mínimo de recursos para a APO é uma percentagem calculada pelo seu valor share
dividido pelo número total de ações em todos os PDBs no CDB.
• A adição de novos PDBs para a CDB não muda o valor social de outras PDBs; No entanto, o
percentagem de recursos alocados para outras PDBs diminuirá proporcionalmente.
• Utilizar o Gestor de Recursos, você não pode definir grupos de consumidores ou ações no
nível CDB.de utilização de CPU, Exadata I / O, e servidores paralelos é definido pela
• O limite
directiva UTILIZATION_LIMIT em um plano de recursos PDB.
• O limite de servidor paralelo em um APO pode ser definido em um plano de recursos usando
o directiva PARALLEL_SERVER_LIMIT.
• O dicionário de dados vista DBA_CDB_RSRC_PLAN_DIRECTIVES contém todas CDB
planos de recursos.
• planos de recursos PDB estão limitados a grupos de um nível e oito de consumo e não pode
tersubplanos.
• Você pode encontrar o plano de recursos CDB ativo consultando V $ RSRC_PLAN com um
CON_ID
• Quando de 1. conectar um não-CDB como um novo PDB, todos os planos de recursos
você
existentes
a menos são
quemigrados
o plano tem
como
mais
é de oito grupos de consumidores, tem subplanos, ou é
multinível.
• planos de recursos importados de um não-PDB são convertidos, se violar o plano de recursos
restrições para a APO.
• Um plano de recursos incompatível para um importado não CDB é salvo no
DBA_RSRC_PLAN_DIRECTIVES com STATUS = 'LEGACY'.

Execute o Database Replay


• Database Replay Consolidado utiliza o Oracle Database Replay para medir o desempenho de
vários bancos de dados em um novo ambiente de servidor.
• Para cada banco de dados de origem, capturar dados de carga de trabalho para replay.
• Opcionalmente, você pode exportar snapshots AWR e perfis SQL para otimizar o desempenho
noCDB alvo.
• Você precisa preprocess cada carga de trabalho importado apenas uma vez no alvo CDB.
• Repetir as cargas de trabalho consolidadas várias vezes com passos de sintonia para maior
desempenho
regressão.
• A CDB deve ser piscou de volta ou restaurada entre cada execução repetição consolidada.

Auto teste
1 . Você está conectado a um banco de dados pluggable como SYSDBA ea necessidade de criar
um arquivo de dados. Qual
vista irá mostrar-lhe todos os arquivos de dados que já existem no banco de dados
recipiente? (Escolha o
melhor resposta.)
A. DBA_DATA_FILES.
B. CDB_DATA_FILES.
C. V $ DATAFILE.
D. Quando ligada a um recipiente de conector, que não é possível ver todos os arquivos de
dados
CDB.
no
2 . Numa base de dados de vários usuários, que de tabela que faz parte do recipiente de raiz
podesessões
ser usado
ligada
poraos recipientes conectáveis? (Escolha a melhor resposta.)
A. O espaço de tabela permanente padrão.
B. A tabela temporário padrão.
C. A tabela desfazer.
D. Nenhuma tabela que faz parte do recipiente de raiz pode ser utilizado por sessões ligados
a recipientes conectáveis.
3 . Estudar este trecho de código:

Após a execução desses comandos, o que pode ser dito sobre o usuário C ## JW?
A. O utilizador só existe no recipiente de raiz.
B. O usuário existe na raiz e todos os recipientes conectáveis mas só pode conectar para a
raiz.
C. O utilizador existe na raiz e todos os recipientes passíveis de ligação e pode conectar-se a
raizrecipientes
e para todos conectáveis.
D. O usuário não será capaz de fazer login para um recipiente pluggable até a sua senha foi
definido no recipiente conectável.
4 . Qual dos seguintes comandos GRANT, executados no recipiente raiz, vai dar o
usuário comum C ## RWR a capacidade de acessar qualquer tabela em todos os PDBs e da
recipiente? (Escolha a melhor resposta.)
raiz
A. concessão selecionar qualquer tabela para c ## recipiente RWR = corrente;
B. grant selecionar qualquer tabela para c ## recipiente RWR = all;
C. grant selecionar qualquer tabela para c ## RWR;
D. grant selecionar qualquer tabela para c ## recipiente RWR = cdb $ raiz;
5 . Qual das seguintes afirmações é incorretas sobre papéis locais e comuns?
A. papéis comuns podem ser concedidos aos papéis locais.
B. papéis locais podem ser concedidos a papéis comuns.
C. papéis comuns podem ser concedidos apenas para usuários comuns.
D. papéis locais podem ser concedidos aos usuários locais ou comuns.
6 . Qual das seguintes são referentes correta multitenant (CDB e PDB) e RMAN?
(Escolha todos os que se aplicam.)
A. Você pode fazer backup do controlfile somente quando conectado ao recipiente raiz.
B. backups Tablespace pode incluir vários espaços de tabelas de diferentes PDBs.
C. PDBs pode ser apoiada individualmente única ligando para o alvo APO no RMAN.
D. Você pode impor a divisão da responsabilidade pela concessão do SYSBACKUP
privilégio
usuários locais dentro PDBs individuais.
E. privilégio O SYSBACKUP pode ser concedida comumente, para um usuário comum.
7 . RMAN está configurado para autobackup do controlfile e spfile. Você pode executar toda
uma dePDB
backup com RMAN como este:

Pouco tempo depois, você perde todas as cópias do controlfile. Considere estes passos:
Conectar um para cada recipiente e abri-lo com RESETLOGS.
2 ligar aos ccrepos recipiente conectáveis.
3 Ligar ao recipiente raiz.
4 Abra o banco de dados com RESETLOGS.
5 abertas recipientes todos conectáveis.
6 Restaure o controlfile de autobackup.
7 Recuperar o banco de dados.
8 Inicie a instância CDB no modo nomount.
O que é um curso correto de ação a seguir?
A. 8, 2, 6, 3, 7, 1
B. 2, 8, 6, 7, 1
C. 8, 2, 6, 7, 3, 4, 5
D. 8, 6, 7, 4, 5
8 . Identificar as instruções corretas sobre parâmetros de inicialização em um ambiente
multitenant.
(Escolha todos os que se aplicam.)
A. Um subconjunto de parâmetros definidos no nível do recipiente pode ser substituído no
nível APO.
B. bancos de dados plugáveis podem ter parâmetros que não podem ser definidas no nível
do recipiente.
C. Desligar uma APO e colocá-lo de volta para a mesma base de dados recipiente preserva
o parâmetros customizados definidos no APO.
D. desconectar um APO e colocá-lo em uma base de dados recipiente diferente preserva o
parâmetros customizados definidos no APO.
9 . Qual das seguintes é verdadeiro sobre a alocação de recursos entre PDBs em um CDB?
(Escolher
a melhor resposta.)
A. Usando um plano de alocação mínima, as ações alocadas a um PDB evitar que outros
PDBs
usando
de essas ações, mesmo que o PDB não está ocupado.
B. Usando nenhum plano de recursos em um ambiente CDB é o padrão e permite PDBs
competir
igualmente para todos os recursos.
C. Em um esquema de alocação mínima / máxima, a APO ainda pode passar por cima da
outrossePDBs
máxima estão ocupados.
nenhum
D. A quantidade “share” é a porcentagem de recursos globais que a APO pode usar dentro
do CDB.
E. O plano de atribuição hierárquico dá alguns usuários em um PDB uma prioridade maior
do que
outra
osPDB.
usuários de
10 . Você está conectando um não-CDB em um banco de dados de recipiente, e os não-CDB tem
várias
planos de recursos. Qual das seguintes condições invalida o recurso importado
plano? (Escolha a melhor resposta.)
A. O plano original tem 12 grupos de consumidores.
B. As alocações de recursos estão em apenas o primeiro nível.
C. O plano de recursos importados tem o mesmo nome de um plano de recursos existente.
D. O plano de recursos importados já tem um status de legado.
E. O recurso directiva plano PARALLEL_SERVER_LIMIT é maior do que o valor do
CDB PARALLEL_MAX_SERVERS de parâmetros de inicialização.
F. O número de ações no plano de recurso original é mais do que a totalidade das ações de
todos
PDBs já no recipiente.
11 . Ao executar uma repetição carga de trabalho consolidada, qual das seguintes etapas são
opcionais
ao exportar ou importar a carga de trabalho para os bancos de dados que são candidatos à
consolidação multitenant?
A. Exportação AWR instantâneos de cada banco de dados candidato
B. conjuntos de ajuste Exportação SQL do banco de dados candidato
C. Captura e exportação da carga de trabalho para um banco de dados candidato
D. Criando uma programação repetição
E. Criação de uma APO para cada banco de dados

Respostas de auto-teste
1. D . Quando a ligação a um recipiente de conector, o alcance de todos os pontos de vista
é limitada a essa
recipiente.
A , B , e C são incorrectas. A está incorreta porque vistas DBA mostrar apenas as linhas
pararelevantes
o recipiente actual. B e C são incorrecta porque a V $ e vistas CDB irá mostrar o
imagem completa somente quando conectado ao recipiente raiz.
2. C . A tabela de undo é administrada a partir do recipiente de raiz e utilizado por todas as
em todos
sessões
os recipientes.
A , B , e D são incorrectas. Nenhum dos espaços de tabela do contêiner raiz, com
a tabela
exceção
de undo,
de são visíveis para qualquer APO.
3. B . O usuário terá sido criado como um usuário comum em cada recipiente, mas a
concessão
o papel é eficazde
apenas para o recipiente local, que é a raiz.
A , C , e D estão incorrectos. A está incorreta porque todos os usuários criados na raiz
são comuns. C está incorreta porque a menos que a concessão é feita com os
usuários
recipientes = ALL é apenas local. D está incorreta porque a senha de um usuário comum
cláusula, a concessão
aé mesma
sempre em todos os recipientes.
4. B . A instrução GRANT deve incluir CONTAINER = ALL.
A , C , e D estão incorrectos. Um é incorrecta porque a especificação RECIPIENTE =
CORRENTE
dá privilégios apenas para RWR C ## no recipiente atual. C é incorrecta porque, sem um
Palavra-chave CONTAINER, o privilégio é concedido localmente. D é incorrecta porque os
Recipiente devem ser atuais ou a todas; você não pode especificar um recipiente PDB ou
valores
nome.
raiz
5. C . Papéis comuns podem ser concedidos a usuários comuns ou locais.
A , B , e D são incorrectas. Eles são todas as atribuições de função válidos, local ou
paracomum,
usuários ou papéis locais ou comuns.
6. B , D , e E . Quando conectado ao recipiente raiz, a sintaxe RMAN permite especificar
quaisquer espaços de tabelas a partir de qualquer recipiente. O privilégio SYSBACKUP
podeusuário
um ser concedida
comum normalmente
ou localmentepara
a um usuário local.
A e C são incorrectas. O controlfile pode ser feito a partir de qualquer recipiente, e um
podeAPO
ser acompanhada quer do interior da APO ou a partir da raiz.
7. D . Esta sequência irá executar a recuperação completa de todos os recipientes.
A , B , e C são incorrectas. O controlfile restauração pode ser feito apenas no modo
nomount,
quando apenas o recipiente raiz está disponível. O RESETLOGS aberto é executado a partir
edaaplica-se
raiz a todos os recipientes.
8. A , C , e D . Quando você cria um APO, ele automaticamente herda todos os parâmetros
o nível
emCDB. Um subconjunto de parâmetros podem ser ajustados ao nível da APO. Os
valores destes
persistir mesmoparâmetros
se o APO está desligado e ligado de volta para o mesmo ou outro recipiente.
B está incorreta porque não há parâmetros ao nível do APO que não existem no
nível CDB.
9. B . A alocação de recursos padrão em um CDB é nenhum. Um PDB pode usar todos
CDB
Recursos.
A , C , D , e E são incorrectas. A está incorreta porque um APO pode usar todas as
restantes
recursos em um CDB, mesmo se outro PDB com um maior número de ações não está ativo.
C é
incorreto porque a APO não pode exceder o número máximo de ações mesmo que nenhum
outro
PDBs estão ocupados. D está incorreta porque as ações são quantidades de recursos relativos
e não
percentagens. E é incorreta porque não existe tal plano de alocação de recursos em camadas
PDBs em um ambiente multitenant, embora o Gerenciador de recursos pode controle de
através
uso entre os usuários em um único APO.
recursos
10. Um . Quando a importação de um não-CDB e colocá-lo em um APO de um recipiente
(CDB),
existente
quaisquer planos existentes Resource Manager não deve ter mais de oito grupos de
consumidores,
devem estar todos no nível 1, e não deve ter subplanos.
B , C , D , E , e F são incorrectas. B está incorreta porque os planos de recursos
existentes
importação serábem com apenas um nível. C está incorreta porque os planos de recursos
muito
são qualificados
com o nome PDB, e, portanto, não há nenhum conflito de nome. D está incorreta porque um
não-CDB
plano de recursos
de nunca terá um status de LEGACY uma vez que apenas PDBs pode ter
importado
recurso planos com esse status. E é incorreta porque um plano de recurso existente não CDB
não terá uma directiva plano de PARALLEL_SERVER_LIMIT, que é válido somente em
um
ambiente multitenant. F está incorreta porque um não-CDB não terá um plano de recursos
com uma directiva ação.
11. A e B . Você não precisa de exportar snapshots AWR e conjuntos de ajuste de SQL a
partir
bancos de da fontemas seria útil ao ajustar as cargas de trabalho combinadas no alvo CDB.
dados,
C , D , e E são incorrectas. C está incorreta porque você não pode usar base de dados
consolidada
Repetição em um servidor de destino sem uma captura de carga de trabalho. D está incorreta
porquedevocê
capaz reproduzir
não seráas cargas de trabalho de lado-a-lado no novo CDB sem a programação
configurada.
E é incorreta porque cada banco de dados candidato deve ser convertido (se necessário) e
para o novo CDB como um APO para testar a carga de trabalho consolidada.
ligado
Apêndice

Sobre o download
Este e-book inclui software exame de prática total Tester. O software total Tester pode ser
baixado e instalado em qualquer XP / Vista / 7/8 computador com Windows e deve ser instalado
para
os exames
o acesso
de prática total testador.
Para baixar o Tester Total, basta clicar no link abaixo e siga as instruções para livre
registro online.
http://www.totalsem.com/0071828079dl

Requisitos de sistema
O software requer o Windows XP ou superior; grande lançamento atual ou anteriores do Google
Chrome,Explorer
Internet Firefox, ou Safari; e 30 MB de espaço em disco para instalação completa.

Instalando e executando total Tester


Uma vez que você tenha baixado o software total Tester, clique duas vezes no ícone Launch.exe. De
tela inicial, você pode instalar total Tester, clicando no botão Instalar exames de prática. Isso vai
iniciar o processo de instalação. Criar um grupo de programas chamado Total de Seminários e
colocar
Área de um ícone na
Trabalho. suaexecutar total Tester, vá em Iniciar | programas | Total de Seminários ou dê
Para
um duplo
Área de Trabalho.
clique no ícone no seu
Para desinstalar o software total Tester, vá em Iniciar | configurações | Painel de Controle |
Programas
Adicionare selecione
/ Remover
o programa total Tester que você deseja remover. Selecione Remover e
vai desinstalar completamente o software.
Windows
Sobre Total Tester
O software exame de prática total Tester ajuda a testar o seu conhecimento ao estudar. Tester total
fornece-lhe com uma simulação do exame real. Os exames podem ser tomadas em qualquer prática
ou Final
modo. modo de prática fornece uma janela de ajuda com sugestões, referências ao livro, uma
explicação do resposta, e a opção de verificar a sua resposta como você fazer o teste. Ambos Prática
emodos finais fornecem uma classificação global e um grau repartido por objectivo a certificação.
Para
teste,tirar uma
lançar o programa e selecione o exame que você quer da Pergunta Instalada lista Packs na
esquerda. Selecione Exam Practice ou Simulação de Exame, ou criar um exame personalizado.

Suporte técnico
Para questões relacionadas com o download do software total Tester ou o funcionamento do Tester
Software, visite www.totalsem.com ou e-mail support@totalsem.com .
total
Para questões relacionadas com o conteúdo de e-book, envie um e-mail
Paracustomer.service@mheducation.com
os clientes fora dos Estados Unidos,.e-mail international_cs@mheducation.com .
Glossário

ACID Atomicidade, consistência, isolamento e durabilidade. Quatro características que uma


banco de dados deve ser capaz de manter para transações.
relacional

ADDM Diagnostic Monitor Automatic Database. Uma ferramenta que gera relatórios de ajuste de
desempenho
baseado em instantâneos no AWR.

ADR Repositório Automático de Diagnóstico. Local padrão para o log de alerta, arquivos de
rastreamento,úteis
informações e outros
para a detecção de avarias.

ADRCI interface de linha de comando O ADR.

AES Advanced Encryption Standard. Um método de codificação de dados amplamente utilizado.

AL16UTF16 Um Unicode de largura fixa conjunto de caracteres de 2 bytes, vulgarmente


especificadas
conjunto de caracteres
para o NLS
usado para tipos de dados NVARCHAR2, NCHAR e NCLOB.

pseudônimo
(1) No Oracle SQL, um nome alternativo para uma tabela, uma vista, ou um conjunto de
No Oracle
dados
Net,
utilizados
um ponteiro
em uma
paraconsulta.
uma string
(2)de conexão. Um alias deve ser resolvido para o
endereço
e o nome de um ouvinte
serviço ou instância.

AMM Gerenciamento automático de memória. A técnica para permitir que a Oracle controle total
sobre edimensionamento
SGA PGA estruturas.

ANSI American National Standards Institute. Um corpo dos EUA que define uma série de normas
relevantes para a computação.

API Aplicação interface de programação. Um método definido para a manipulação de dados,


implementado como um conjunto de procedimentos PL / SQL em um pacote.
tipicamente

ARBn processos de fundo que realizam movimento extensão entre discos em uma Automatic
Storage
Gestão de grupo de disco (ASM).

ASA Segment Advisor automático. Uma ferramenta de aconselhamento Oracle que pode
recomendar
índices) que segmentos
são candidatos
(tabelas
paraou
a redução de segmento.

ASCII American Standard Code Information Interchange. Um padrão (com muitas variações) para
codificação letras e outros caracteres como bytes.

ASH Active Session History. A categoria de informações no AWR que registra detalhes da sessão
atividade.

ASM Automatic Storage Management. Um LVM fornecido com o banco de dados Oracle.

asmcmd um utilitário de linha de comando utilizado para consultar e manter objectos num grupo de
discos ASM.
ASMM Gerenciamento Automático da Memória Compartilhada. A técnica para permitir que a
sobre
Oracledimensionamento
controle total de estruturas PIG.
ASSM Gerenciamento do Espaço Segmento automática. O método de gestão de espaço dentro dos
segmentos
uso por
de bitmaps.

atribuir um elemento de um tuplo (também conhecido como uma coluna).

AWR Automatic Workload Repository. Um conjunto de tabelas no espaço de tabela SYSAUX,


preenchidaoscom
ajustando dados recolhidos pelo processo MMON.

processo de fundo Um processo que faz parte da instância que é lançado na inicialização.

BFILE Um tipo de dados objeto grande que é armazenado como um arquivo do sistema
operacional.
coluna é um ponteiro
O valor na
para
tabela
o arquivo.

vincular variável Um valor passado de um processo do usuário para uma instrução SQL em tempo
de execução de instrução.
BLOB objeto binário grande. Um tipo de dados LOB para dados binários, como fotografias e clipes
de vídeo.
bloquear As unidades de armazenamento em que os arquivos de dados são formatados. O tamanho
pode ser32KB
16KB, 2KB,ou
4KB,
64KB.8KB,

BMR Bloco Recovery Media. Uma técnica RMAN para a restauração e a recuperação do indivíduo
blocos de dados, em vez de arquivos de dados completos.

Produto cartesiano Às vezes chamada de junção cruzada. Um termo matemático que se refere ao
conjunto
criada multiplicando
de dados as linhas a partir de duas ou mais tabelas.

CDB_xxx vê vistas dicionário de dados que incluem metadados em todos os recipientes num
base de dados. Semelhante às vistas DBA_xxx correspondentes mas tem uma coluna adicional para
contentor
identificar qual o recipiente esta linha se aplica.
CON_ID

CDB $ ROOT O container raiz em um ambiente multitenant. Todos os outros bancos de dados
conectáveis
os compartilhar
recursos definidos no CDB $ ROOT.

CET tempo Central Europeu. Um fuso horário utilizado em grande parte da Europa (embora não
Grã-Bretanha),
uma hora antes que
do UTC,
é com horário de verão em vigor durante os meses de verão.

conjunto de caracteres O sistema de codificação para a representação de dados dentro de bytes.


Diferentes caracteres
armazenar conjuntos de
diferentes
caracteres
e pode
podenão ser adequado para todos os idiomas. conjuntos de
caracterespersonagem.
qualquer Unicode podem armazenar

restrição de verificação Uma regra simples aplicada pelo banco de dados que restringe os valores
que podem
entrou em uma
ser coluna.

checkpoint Um evento que força o DBW n escrever buffers sujos do cache de buffer de banco de
dados
os arquivos de dados.

Ckpt processo de verificação. O processo de fundo responsável pela gravação do redo atual
byte de endereço-o ponto no tempo até que o DBW n tem escrito mudado blocos de dados no disco
de pontos de controlo de sinalização, o que obriga o DBW n para escrever blocos alterados no disco
e-
imediatamente.
arquitetura cliente-servidor Um paradigma de processamento onde o aplicativo é dividido em
software que interage com o software do usuário e servidor que interage com os dados.
cliente

CLOB Character objeto grande. Um tipo de dados LOB para dados de caracteres, tais como
documentos
no texto, armazenados
conjunto de caracteres de banco de dados.

agrupar um ambiente de hardware onde mais de um computador compartilha o acesso ao


armazenamento.
segmento de cluster Um segmento que pode conter uma ou mais tabelas, denormalized em uma
estrutura.
única
COALESCE Uma função que retorna o primeiro valor não nulo a partir de sua lista de parâmetros.
Se toda a sua
parâmetros são nulos, em seguida, um valor nulo é retornado.

coluna Um elemento de uma linha; mesas são estruturas bidimensionais, dividida horizontalmente
eem
verticalmente
linhas em colunas.

comprometer Para fazer uma alteração aos dados permanentes.

privilégios comuns Um privilégio de sistema ou objeto concedidos a um usuário comum em uma


multitenant
ambiente e é, por conseguinte, em vigor para esse utilizador em todos os recipientes.

perfil comum Um perfil de banco de dados que existe para todos os bancos de dados conectáveis
atuais e futuras em um
CDB.

papel comum Um papel de base de dados que é definida no recipiente de raiz e, por conseguinte,
propagada para
containers. papéis
todos
comuns devem ser prefixados (por padrão) com C ## e pode ser concedida
“normalmente”
um utilizador comum
para em todos os recipientes ou localmente para ter efeito apenas no recipiente
corrente.
comum utilizador conta de utilizador numa base de dados Um recipiente (CDB) que existe em
todos de
bases os conectável
dados (PDB) em uma base de dados do recipiente. O mesmo usuário pode ter diferentes
privilégioscomuns
Usuários em cadanão
APO.
mantidos por Oracle devem ser prefixados com (por padrão) C ##.

recuperação completa Após uma restauração de arquivos de banco de dados danificados, uma
recuperação
refazer açõescompleta
para atualizar
aplica-se
o banco
a todos
de dados sem perda de dados.

Identificador de conexão Um nome de serviço Oracle Net.

função de conexão Um papel preseeded retido apenas por compatibilidade com versões anteriores.

seqüência de conexão Os detalhes da conexão do banco de dados necessários para estabelecer uma
sessão,
do ouvinte
ou seja,
e do onome
endereço
do serviço ou da instância.

backup consistente Um backup feito enquanto o banco de dados está fechado.

Consolidated Database Replay Um aprimoramento da Oracle Database Replay para reproduzir o


indivíduo
cargas de trabalho de múltiplos CDBs e reproduzi-los novamente dentro de um único ambiente
O uso do Consolidated Database Replay ajuda a medir os requisitos de recursos para o novo CDB.
multi-tenente.

restrição Um mecanismo para garantir que um valor de coluna deve ser exclusivo ou pode conter
certos valores. Uma restrição de chave primária especifica que a coluna deve ser única e não nula.
apenas

banco de dados de contêiner Um banco de dados em um ambiente multitenante que hospeda zero,
um ou mais
bancos de dados
plugável
(PDBs). Ele sempre hospedará o recipiente da raiz e o recipiente de sementes.

controlfile O arquivo que contém ponteiros para o resto do banco de dados, informações de
eseqüência crítica,
o repositório RMAN.

CPU unidade de processamento central. O chip que fornece a capacidade de processamento de um


computador,
como uma Intel
como
i7 ou um Oracle SPARC M7.

CTWR Change Tracking Writer. O processo de fundo opcional que registra os endereços de
modificou os blocos para permitir backups incrementais rápidos.

blocos de dados As unidades nas quais os arquivos de dados são formatados.

dicionário de dados As tabelas pertencentes ao SYS no tablespace SYSTEM que definem o banco
de objetos
os dados e dentro dele.

visualizações de dicionário de dados Exibições nas tabelas de dicionário de dados que permitem ao
DBA
o investigar
banco o estado de
de dados.
Data Guard Uma facilidade através da qual uma cópia do banco de dados de produção é criada e
atualizada
em tempo real)
(possivelmente
com todas as alterações aplicadas ao banco de dados de produção.

Bomba de dados Uma instalação para transferir grandes quantidades de dados em alta velocidade
para, fora
bancos de ou
dados.
entre

cache de buffer de banco de dados Uma área de memória no SGA usada para trabalhar em blocos
copiados de
arquivos de dados.

gatilho de evento de banco de dados Um bloco de código de programa Oracle que dispara quando
um evento de banco de dados específico

ocorre como inicialização, desligamento ou algum outro evento de todo o banco de dados. Os
disparadores
foi aprimorado deno
eventos
OracledeDatabase
banco de12dados têm
c para automatizar a abertura de bancos de dados conectáveis
quando
O recipiente
a raiz(CDB) é iniciado.

link de banco de dados Uma conexão de um banco de dados para outro, com base em um nome de
usuário easenha
Conecte string.e um

Replay do banco de dados Um recurso de monitoramento Oracle que pode ajudar a avaliar a
mudança
em um sistema
no desempenho
de teste, capturando a carga de trabalho em um servidor de produção e reproduzindo
asistema
carga de
de teste. em um
trabalho

arquivo de dados A estrutura baseada em disco para armazenar dados.

Administrador do banco de dados DBA . A pessoa responsável por criar e gerenciar bancos de dados
-Esse poderia ser você.
Oracle

Função DBA Um papel preseeded para compatibilidade com versões anteriores que inclui todos os
precisava gerenciar um banco de dados, exceto aqueles necessários para iniciar e desligar.
privilégios

DBCA O Assistente de Configuração do Banco de Dados. Uma ferramenta GUI para criar,
modificar e descartar
instâncias bancos de dados.

Identificador do banco de dados DBID . Um número exclusivo para cada banco de dados, visível na
coluna
V DBID do visão de desempenho dinâmico.
$ DATABASE

Sistema de gerenciamento de banco de dados de SGBD . Muitas vezes usado de forma


intercambiável com RDBMS.
DBNEWID Um utilitário de linha de comando (geralmente nid) que pode alterar o valor do DBID
para um
base de dados.

DBWn ou DBWR The Database Writer. O processo de fundo responsável pela escrita mudou
blocos do cache do buffer do banco de dados para os arquivos de dados. Uma instância pode ter até
100 bases de
Processos do dados
escritor: DBW0-DBW9, DBWa-DBWz e BW36-BW99.

Idioma de definição de dados DDL . O subconjunto de comandos SQL que alteram definições de
objeto
o dentrode dados: CREATE, ALTER, DROP e TRUNCATE.
dicionário

impasse Uma situação em que duas sessões se bloqueiam, de modo que nenhuma delas pode fazer
Os deadlocks são detectados e resolvidos automaticamente.
nada.

DECODE Uma função que implementa a lógica condicional if-then-else testando dois termos para
igualdade e devolvendo o terceiro termo se forem iguais ou, opcionalmente, retornando outro termo
se eles
não são.

DHCP Dynamic Host Configuration Protocol. O padrão para configurar a rede


características de um computador, como seu endereço IP, em um ambiente em mudança onde os
computadores podem
ser movido de um local para outro.
DIA0 O processo de diagnóstico que detecta situações de travamento e impasse.

DIAG O processo de diagnóstico que gera despejos de diagnóstico.

caminho directo Um método de E / S em arquivos de dados que ultrapassa o cache da memória


intermédia de banco de dados.
Lista de objetos Um diretório Oracle, especificamente, um objeto dentro do banco de dados que
aponta para
diretório do um
sistema operacional.

sujo tampão Um tampão na memória cache do banco de dados que contém uma cópia de um bloco
de dados que
atualizado e ainda
tenhanão
sidoescrito de volta para o arquivo de dados.

DML Data Manipulation Language. Os comandos SQL que alteram dados no banco de dados:
INSERT, UPDATE, DELETE e MERGE.

DMnn dados da bomba processo mestre. O processo que controla a bomba de dados trabalho de um
lançado para cada trabalho que está sendo executado.
será

DNS Domain Name System. O mecanismo de TCP para a resolução de nomes de rede em endereços
IP.
domínio O conjunto de valores de um atributo é permitido tomar. Terminologia: as tabelas têm
linhas
tem e linhas
colunas com valores. Alternativamente, as relações têm tuplas, e tuplas tem atributos com
tirada de seu domínio.
valores

DSS sistema de apoio à decisão. Um banco de dados, tais como um armazém de dados, otimizado
para
ao invés
consultas
de trabalho
em execução
OLTP.

DWnn processo The Worker Data Pump. Haverá um ou mais destes lançado para cada dados
Bombear trabalho que está sendo executado.

Easy Connect Um método para estabelecer uma sessão contra um banco de dados, especificando o
endereço
o ouvinte em
e o nome do serviço, sem o uso de um alias Oracle Net.

EBCDIC estendido Binary Coded Decimal Código Interchange. Um padrão desenvolvido pela IBM
codificação letras e outros caracteres em bytes.
para

Gerente Database Enterprise expresso Um monitoramento leve e ferramenta de consulta para um


instância de banco de dados em um único servidor. Substitui Database Control Enterprise Manager
Oracle
no Oracle
Banco de dados de 12 c .

variável de ambiente Uma variável definida no shell do sistema operacional que pode ser usado
pelo aplicativo
software e por scripts shell.

equijoin A condição de junção usando um operador de igualdade.

tabela de fatos A tabela central em um esquema em estrela, com colunas para valores relevantes
para a linha
colunas usadas
e como chaves estrangeiras para as tabelas de dimensão.

backup incremental rápido Um backup incremental que usa um arquivo de controle de alterações
bloco parablocos
só mudou identificar
desde o último backup.

Área rápida recuperação (anteriormente conhecido como área de recuperação flash) A


localização
arquivos relacionados
padrão paracom
todos
a recuperação.

FGA auditoria de grão fino. Uma facilidade para rastrear o acesso do usuário aos dados, com base
nas linhas
visto ou manipulado.
que são

Dados de recapitulação Arquivo Um objecto de recipiente base de dados, que retém os dados
históricos
objetos banco
parade
umdados,
ou mais
por um período de retenção especificado.

Banco de Dados Flashback Uma característica flashback que recupera todo o banco de dados para
um pontousando
passado no tempo no
Flashback Database logs.

Logs de Flashback de Banco de Dados Mudou blocos de banco de dados que são armazenados na
área depara
usado recuperação
Flashbackrápida
Database.
e

Flashback Largar Uma característica flashback que torna mais fácil para recuperar caiu mesas se
eles ainda
lixeira de um
estão
espaço
em de tabela.

Flashback Query Um recurso que permite visualizar uma ou mais linhas em uma tabela em um
tempo no passado.
flashback

Flashback Tabela uma retrospectiva de consulta que se recupera uma única tabela e seus objectos
associados
ponto a umque passou.
no tempo

fraturado bloco bloco de banco de dados A que é, simultaneamente, ser lido por uma cópia do
sistema operacional
comando e modificado pelo processo DBWR.

backup completo Um backup contendo todos os blocos dos arquivos de backup, e não apenas os
blocosoalterados
desde último backup.

GMT Greenwich. Agora conhecido como UTC, este é o fuso horário do meridiano através
Observatório de Greenwich, em Londres.

Grid Computing Uma arquitetura onde a entrega de um serviço para os usuários finais não está
vinculadodoa servidor,
recursos certa mas podem ser fornecidos a partir de qualquer lugar em um pool de recursos.

GUI interface gráfica. Uma camada de um aplicativo que permite aos usuários trabalhar com o
através de um terminal gráfico, tal como um PC com um rato.
aplicativo

HTTP Hypertext Transfer Protocol. O protocolo que permite que a World Wide Web (ambos
inventados

da Organização Europeia para a Pesquisa Nuclear em 1989); este é um protocolo em camadas que
corre /ao
TCP IP.longo

HWM marca de alta água. Este é o último bloco de um segmento que já foi utilizada; blocos acima
isso são parte do segmento, mas ainda não está formatado para uso.

IBM International Business Machines. Um conhecido de hardware de computador, software e


empresa.
serviços

A imagem da cópia Uma cópia RMAN de um arquivo.

inconsistente de backup Um backup feito enquanto o banco de dados foi aberto.

backup incremental de backup A contendo apenas blocos que foram alterados desde o último
foi feito.
backup

INITCAP uma função que aceita uma cadeia de caracteres e retorna cada palavra em caso de título.

junção interna Quando equijoins e nonequijoins são realizadas, as linhas das tabelas de origem e de
destino
são correspondidos. Estes são referidos como junta interior.

recuperação exemplo a reparação automática de danos causados por um desligamento desordenada


base de dados.
do

-INSTRUÇOÑES Uma função que devolve a localização posicionai de uma ocorrência de uma
sequência especificada
caracteres em uma seqüência
de de origem.

I / O de entrada / saída. A atividade de leitura ou gravação de discos, muitas vezes o ponto mais
lento de um
operação de conjunto
processamento,
de dados
porque é a parte mais lenta de hardware quando comparado com o CPU
eRAM.
IOT Índice organizado mesa. Um tipo de tabela em que as linhas são armazenados nos blocos de
folhas de um índice
segmento.

IP Internet Protocol. Juntamente com o Transmission Control Protocol, IP torna-se de facto


protocolo de comunicação padrão (TCP / IP) usado para a comunicação cliente-servidor através de
uma rede.
IPC Interprocess Communications Protocol. O protocolo específico da plataforma, fornecida pelo
seu OS usado para os processos em execução na mesma máquina para se comunicar uns com os
vendedor,
outros.
ISO International Standards Organization. Um grupo que define muitos padrões, incluindo SQL.

JEE Java Enterprise Edition. O padrão para desenvolvimento de aplicativos Java.

trabalho Uma linha em uma tabela programador que especifica o que fazer e quando fazê-lo. “O
que” pode
única ser um
instrução SQL, um bloco PL / SQL, um procedimento PL / SQL armazenado, um
procedimento armazenado Java, uma

procedimento externo, ou qualquer arquivo executável armazenado no sistema de arquivos do


servidor.
cadeia de emprego Um objeto de banco de dados que contém uma série chamada de programas
ligados entre
objectivo si por um
combinado.

classe de emprego Um objeto programador que é usado para associar um ou mais trabalhos com um
Gestorde
grupo deconsumidores
Recursos e para controlar os níveis de registo.

juntar-se o processo de conexão linhas em tabelas diferentes, com base em valores de colunas
comuns.
Cadastre-se ... ON Uma cláusula que permite a especificação explícita de se juntar colunas,
independentemente
os nomes das colunas.
da Isto
sua fornece um formato juntar flexível.

Cadastre-se ... Usando uma sintaxe que permite a junção natural a ser formado em colunas
específicas com compartilhada
nomes.

JVM Java Virtual Machine. O ambiente de tempo de execução necessários para a execução de
código
A escrito
Oracle emum
fornece Java.
JVM dentro do banco de dados, e haverá um fornecido pelo seu sistema
operacional.
piscina grande estrutura de memória Um dentro do SGA usado por certos processos, como,
processos servidores compartilhados e servidores de execução paralela.
principalmente,

LAST_DAY A função utilizada para obter o último dia em um mês dado qualquer item data válida.

LDAP Lightweight Directory Access Protocol. A implementação TCP do diretório X25


standard, utilizado pela Oracle Internet Directory para resolução de nome, de segurança e
LDAP também é usado por outros fornecedores de software, incluindo Microsoft e IBM.
autenticação.

COMPRIMENTO Uma função que calcula o número de caracteres em uma cadeia, incluindo
espaços e especiais.
caracteres

nível 0 backup incremental Um backup completo RMAN que pode ser usado como base para um
estratégia de backup.
incremental

nível 1 cumulativo backup incremental Um RMAN backup de todos os blocos alterados desde a
nível 0 backup incremental.
última

nível 1 diferencial backup incremental Um RMAN backup de todos os blocos alterados desde a
nível 0 nível 1 backup incremental.
última

LGWR Writer O Log. O processo de fundo responsável por vetores de mudança lavagem,
proveniente
buffer da
na memória de registro para os arquivos de log redo online no disco.

cache de biblioteca A estrutura de memória dentro da piscina comum, usado para declarações cache
SQLsua
em analisado
forma executável.
trabalho leve Job Scheduler A que tem muitas das mesmas características de um trabalho padrão,
que um trabalho leve é ideal para a execução de muitos postos de trabalho de curta duração que são
exceto
executados com freqüência.
LISTAGG Uma função que retorna uma cadeia de agregação de valores da coluna.

ouvinte O processo do lado do servidor que escuta para solicitações de conexão de banco de dados
edelança
processos de usuário
processos de servidor para estabelecer sessões.

LOB objeto grande. Uma estrutura de dados que é muito grande para armazenar dentro de uma
tabela. tipos)
vários LOBssão
(suportes
definidos
da Oracle
como colunas de uma mesa, mas fisicamente são armazenadas em um
segmento separado.
privilégios locais Um privilégio de sistema ou objeto concedido a um usuário local e é, portanto, em
vigorutilizador
esse para em apenas um único recipiente.

perfil local perfil de banco de dados A que existe apenas em um único APO e pode ser atribuído
apenas para locais
Comercial.

papel locais função de banco de Um que é criado em um único APO e concedido a um usuário local
e, portanto,
está disponível para esse utilizador em apenas um recipiente.

utilizador local conta de usuário A que é criado e existe apenas em um banco de dados pluggable
(PDB). A raiz
recipiente (CDB $ ROOT) não pode ter usuários locais, somente os usuários comuns.

Locale Builder uma ferramenta gráfica que pode criar um ambiente de globalização personalizado
gerar definições para idiomas, territórios, conjuntos de caracteres e classificação linguística.

log switch A ação de fechar um grupo arquivo de log on-line e abrir outro: tipicamente
pelo processo de enchimento LGWR o grupo corrente.
desencadeada

backup lógico Um backup que lê um conjunto de linhas de banco de dados e escreve-los para um
arquivo ou
sistema no para
operacional
outro espaço de tabela.

LREG O processo de fundo responsável por registrar os serviços de banco de dados com o ouvinte.

LRU menos utilizados recentemente. Listas de LRU são usados para gerenciar o acesso a estruturas
de dados,
que garantir
usando
que os
algoritmos
dados que não tenha sido acessada por mais tempo são os dados que serão
substituídos.
LVM Logical Volume Manager. Uma camada de software que abstrai o armazenamento físico
dentro de seua partir do armazenamento lógico visível para uma aplicação.
computador

Mman The Memory processo de fundo Manager, que monitora e reatribui memória
alocações no SGA para componentes do SGA automaticamente ajustável.

MML mídia camada de gerenciamento. Software que permite RMAN fazer uso de bibliotecas de
fitasother
and automatizadas
SBT devices.

MMNL Gerenciamento Luz Monitor. O processo de fundo responsável por dados rubor ASH
ao AWR se MMON não está fazendo isso com a frequência necessária.

MMON O gerenciamento Monitor de processo de fundo, responsável por reunir desempenho-


monitoramento de informações e levantando alertas.

MOD A operação de módulo, uma função que devolve o resto de uma operação de divisão.

MONTHS_BETWEEN Uma função que calcula o número de meses entre duas data indicada
parâmetros.
montado
refazer base arquivos
on-line de dadosde
situação
log ou Um exemplo
arquivos onde o abriu o controlfile base de dados, mas não o
de dados.

MTBF MTBF. Uma medida da duração média de tempo de execução para um banco de dados
entre paradas não planejadas.

MTS servidor multithread. Desde o lançamento 9 i , renomeado para servidor compartilhado. Esta é
a técnica
em que um grande número de sessões pode compartilhar uma pequena piscina de processos do
servidor,
um servidor
em cada.
vez de exigir

TMPR tempo para recuperar média. O tempo médio que leva para fazer o banco de dados
disponível
usar após uma
parafalha.
o normal

multiplexação Para manter várias cópias de arquivos.

arquitetura multitenant Uma arquitetura que hospeda muitos bancos de dados lógicos dentro de
um maiorbanco de dados para usar de forma mais eficiente os recursos do servidor, como memória,
instância
CPU e I / O.
namespace Um agrupamento lógico de objetos dentro do qual há dois objetos podem ter o mesmo
nome.
junção natural uma junção realizada utilizando o NATURAL JOIN sintaxe quando as tabelas de
origem
são e de destinoequijoined usando todas as colunas com nomes idênticos.
implicitamente

NCLOB caráter nacional objeto grande. Um tipo de dados LOB para dados de caracteres, como
documentos, armazenados no conjunto de caracteres de banco de dados nacional alternativa.
texto

NLS suporte ao idioma nacional. A capacidade do banco de dados Oracle para suportar muitos
geográficas, culturais e ambientes de agora geralmente referidos como globalização.
linguística,

nó Um computador ligado a uma rede.

não CDB Um banco de dados stand-alone que não usa a arquitetura multitenant. O não-CDB
arquitetura era o único tipo de arquitetura disponíveis antes do lançamento 12.

nonequijoin realizada quando os valores nas colunas de associação cumprir a condição de junção
com base em uma

expressão desigualdade.

nulo A ausência de um valor, que indica que o valor não é conhecido, em falta, ou inaplicáveis.

NULLIF Uma função que testa dois termos de igualdade. Se forem iguais, a função retorna null;
outro
ele retorna o primeiro dos dois termos testados.

NVL Uma função que retorna ou o item original inalterado ou um item alternativa, se o inicial
prazo é nulo.

NVL2 Uma função que retorna um novo item se nula se o item original é nulo ou uma alternativa se-
ponto nulo se o termo original não é nulo.
não-

OC4J Oracle Containers for Java. A estrutura de controle fornecido pela Oracle Application Server
para a execução de programas Java. Ainda suportado, mas substituído pelo servidor WebLogic.

OCA Oracle Certified Associate. Você precisa passar por dois exames de conseguir isso: um sobre
SQL, na
outro os administração básica DB.

OCI do Oracle Call Interface. Uma API, publicado como um conjunto de bibliotecas C, que os
programadores
escrever processos
podem
de usuários
utilizar para
que irão utilizar um banco de dados Oracle.

OCP a Oracle Certified Professional. A qualificação que você está trabalhando.

OCM do Oracle Certified Master. A qualificação em última análise, você está trabalhando.
ODBC Open
bancos de Database
dados Connectivity.
relacionais. A OracleUm padrão
fornece umdesenvolvido
driver ODBCpela
queMicrosoft para
irá permitir queseoscomunicar
clientes
com
executando
produtos para
o Microsoft
conectar a um banco de dados Oracle.

backup offline um backup feito enquanto o banco está fechado.

OLAP processamento analítico online. Select, trabalho intensivo que envolve consultas em
execução contra
(Geralmente) umde dados grande. A Oracle fornece capacidades OLAP como uma opção além do
base
instalações de consulta.
padrão

OLTP processamento de transações on-line. Um padrão de actividade dentro de uma base de dados
caracterizado
número de transações
por umapequenas,
grande curtas.

Online Backup Um backup feito enquanto o banco de dados é aberto.

on-line redo log Os arquivos a que mudam vetores são transmitidos pelo LGWR.

ORACLE_BASE O diretório raiz no qual os produtos da Oracle estão instalados.

ORACLE_HOME O diretório raiz de qualquer produto Oracle.

Oracle Net protocolo de comunicação de propriedade da Oracle, em camadas em cima de uma


protocolo.
indústria-padrão

OS sistema operacional. Normalmente, no ambiente Oracle esta será uma versão do Unix (talvez
Linux) ou Microsoft Windows.

associação externa uma junção executada quando as linhas, que não são recuperadas por uma
junção interna, são incluídos para
recuperação.

paralelização usando vários escravo processos gerenciados por um único processo coordenador para
consultas ou operações DML em paralelo em várias CPUs e canais de I / O em simultâneo.
executar
backups RMAN tirar proveito do paralelismo através da atribuição de múltiplos canais e melhorar a
cópia de segurança
desempenho com a execução pedaços particionados de I / O em paralelo.

analisar Para converter instruções SQL em uma forma adequada para a execução.

PDB Veja banco de dados pluggable.

APO $ SEED Um só de leitura da base de dados de conector dentro de um recipiente de raiz (CDB),
utilizado
criar novos
como
PDBs
umdentro
modelodapara
CDB.

PFILE um arquivo contendo os parâmetros de inicialização baseados em texto e valores iniciais que
sãoOracle
A definidas
instância
quandoé iniciado.
um

PGA Programa Global Area. O bloco de tamanho variável de memória usada para manter o estado
de um de banco de dados. PGAs são privados para a sessão e controlado por processo servidor da
sessão
sessão.
PL / SQL Procedural Language / Structured Query Language. Programação proprietária da Oracle
linguagem, que combina construções processuais, tais como controle de fluxo, e capacidades de
interface
com a capacidade
de usuário
de chamar instruções SQL.

banco de dados conectável também conhecido como um APO ou um recipiente conectável. Um


banco de
dentro de dados
um bancológico
de que
dados
existe
do recipiente e as ações da memória, slots de processo, e outros
recursos
bases de com
dadosoutros
lógicas dentro da CDB, mas é isolado de todos os outros bancos de dados lógicos na
mesma
recipiente. bases de dados passíveis de ligação pode ser desligado (removida) a partir da base de
dados
de volta
domais
recipiente
tarde para
e ligado
o mesmo ou diferente recipiente.

PMON O Monitor de Processo. O processo de fundo responsável por monitorar o estado de


sessões de usuários contra uma instância.
chaveem
linha primária A coluna (ou combinação de colunas) cujos valores podem ser usadas para
uma tabela.
identificar cada
programar Um objeto programador que fornece uma camada de abstração entre o trabalho e as
medidas que
executará; ele é criado com o procedimento DBMS_SCHEDULER.CREATE_PROGRAM.

projecção A restrição das colunas seleccionadas a partir de uma tabela. Usando projeção, você
recuperardesomente
colunas interessease não cada coluna possível.

RAC Cluster aplicação real. Tecnologia de cluster da Oracle, que permite que vários casos em
máquinas diferentes para abrir o mesmo banco de dados para escalabilidade, desempenho e
tolerância a falhas.
RAID matriz redundante de discos de baixo custo. Técnicas para melhorar o desempenho ou culpa
tolerância usando um gerenciador de volume para apresentar uma série de discos físicos para o
sistema
um único
operacional
disco lógico.
como

RAM memória de acesso aleatório. Os chips que compõem a memória real no seu hardware de
em oposição à memória virtual apresentado ao software pelo sistema operacional.
computador,

dispositivo bruto Um disco não formatado ou partição do disco.

RBAL processo Rebalance. Um processo em segundo plano em uma Automatic Storage


Management
exemplo, que (ASM)
coordena a actividade do disco para grupos de discos. Em um exemplo de RDBMS,
eelefechando
executa os
a abertura
discos do grupo de discos.

RDBMS sistema de gerenciamento de banco de dados relacional. Muitas vezes usado como
sinônimo de DBMS.
catálogo de recuperação objetos em um esquema de banco de dados que contêm metadados e
outrasbackups
para informações
RMAN dede
backup
um ou mais bancos de dados.

janela de recuperação parâmetro Um RMAN e período de tempo que define o quão longe de volta
no tempo
base de dados
a pode ser recuperado.

integridade referencial uma regra definida em uma tabela que especifica que os valores de uma
coluna
deve (ou colunas)
mapear para aqueles de uma linha em outra tabela.

relação Uma estrutura bidimensional que consiste de tuplos com atributos (também conhecido como
uma tabela).
SUBSTITUIR A função que substitui cada ocorrência de um item de pesquisa na seqüência de
origemdecom
prazo substituição
um e retorna a string de origem modificado.

grupos de consumidores de recursos Grupos de usuários ou sessões que têm necessidades de


recursos semelhantes.
Gestor de Recursos do recurso de um oráculo que pode alocar recursos com base no uso da CPU, o
grau de
paralelismo, número de sessões ativas, desfazer espaço, limite de tempo de CPU, e limite de tempo
ocioso.
plano de recursos Um conjunto de regras no Gerenciador de Recursos que atribuir vários recursos à
percentagens ou prioridades relativas a um grupo de recursos.
específica

plano de recursos directivas Regras dentro do Gerenciador de Recursos de que os grupos de


consumidores
recursos planoassociam a umcomo os recursos são divididos entre os grupos de consumidores ou
e especificar
subplanos.

ponto de restauração Um objecto da base de dados contendo quer um número de modificação do


sistema (SCN)
passado usado para
ou uma
recuperar
vez na o banco de dados para o SCN ou timestamp.

alocação de espaço resumable Uma característica Oracle que suspende em vez de terminar grande
banco de dados
operações que exigem mais espaço em disco que está atualmente disponível. Uma operação pode ser
reiniciado de onde ele terminou fora em um momento posterior, quando os problemas de espaço
suspenso
foram
Ele economiza
resolvidos.
tempo.
política de retenção O número de cópias de todos os objetos que o RMAN reter para fins de
recuperação.
RMAN Recovery Manager. Ferramenta de backup e recuperação do Oracle.

container raiz A estrutura de controle (nomeado CDB $ ROOT) em um banco de dados contêiner
que hospeda
bases de dados conectáveis. Todos os parâmetros de inicialização são definidas no recipiente raiz e
são herdadas
cada banco depor
dados pluggable menos que seja substituído. Apenas um subconjunto menor de
parâmetrospode
recipiente definidos
ser mudado
na raizem um banco de dados pluggable juntamente com a tabela temporário
padrão.
rowid O identificador exclusivo de todas as linhas na base de dados, utilizada como um indicador
para
da linha.
a localização física

RVWR a recuperação processo de fundo Writer. Um processo opcional responsável por liberar o
recapitulação de tampão aos registos de recapitulação.

SBT de backup do sistema para fita. Um termo RMAN para um dispositivo de fita.

de esquema Os objetos pertencentes a um usuário de banco de dados.

SCN número de alteração do sistema. O número aumentando continuamente usado para controlar a
sequência
hora exata ede todos os eventos dentro de um banco de dados.

recipiente semente também conhecido como o banco de dados de semente num ambiente de vários
éusuários.
um exemplo
O recipiente
especialsemente
de um banco de dados pluggable chamado APO $ SEED, é sempre só de
leitura,
um modelo
e é usado
para criar
comoum novo banco de dados pluggable no recipiente raiz atual.

segmento Um objecto da base de dados dentro de um esquema que contém um objecto de dados (tal
como uma tabela ou índice).
segmento encolher Uma operação de banco de dados que faz com que o espaço livre em um
segmento àna
segmentos disposição
tabela pordos
compactação
outros e libertando os blocos de dados não utilizados vazias num
segmento.
selecção A extração de linhas de uma tabela. Selecção inclui ainda a restrição do
linhas extraídos com base em vários critérios ou condições. Isto permite-lhe obter apenas as linhas
são de interesse e não a cada linha na tabela.
que

auto-se juntar uma junção necessária quando as colunas de união são originários da mesma tabela.
Conceitualmente,
tabela de origem éoduplicado, e uma tabela de destino é criado. A auto-se juntar, em seguida,
funciona
entre duascomo
tabelas
umdistintas.
regular juntar

sequenciar Um objecto da base de dados dentro de um esquema que gera números únicos.

serviço de nomear um nome lógico registrado por uma instância com um ouvinte, que pode ser
especificado
processo de usuário
por umquando se emite um pedido de conexão.

sessão Um processo de usuário e um processo servidor, conectado à ocorrência.

SGA Sistema Global Area. O bloco de memória compartilhada que contém as estruturas de memória
que
tornar-se uma instância Oracle.

compartilhar uma parte dos recursos concedidos a um único APO. Cada APO terá pelo menos uma
ação,
o totalede recursos disponíveis para um APO são baseados na proporção das ações do PDB com o
número
das açõestotal
atribuídas a todos PDBs dentro de um CDB.

compartilhado objeto um objeto criado no recipiente raiz que está disponível para todos os PDBs
atuais
no recipiente.
e novosusuários comuns Só a Oracle-fornecidos (como SYS e SYSTEM) podem criar
compartilhada
objetos.

SID identificador do sistema. O nome de uma instância, que deve ser único no computador a
está sendo executado.
instância
Alternativamente, identificador de sessão. O número usado para identificar exclusivamente uma
instância
sessãoOracle.
conectado a uma
SMON O Monitor do sistema. O processo fundo responsável pela abertura e uma base de dados
monitorando a instância.

spfile O arquivo de parâmetro de servidor, que contém os parâmetros utilizados para construir uma
instância em
memória.

SQL Structured Query Language. Uma linguagem de padrão internacional para extrair dados de e
manipular dados em bases de dados relacionais.

SQL Tuning Advisor um oráculo conselheiro que realiza análise estatística, análise de SQL do
análise caminho de acesso, e a análise da estrutura.
perfil,

SSL Secure Sockets Layer. Um padrão para assegurar a transmissão de dados usando criptografia,
checksumming, e certificados digitais.

StdDev Uma função que retorna a raiz quadrada da variância.

SUBSTR Uma função que extrai e retorna um segmento de uma dada cadeia de origem.

SUM Uma função que retorna um total agregado de todos os valores numéricos de expressão não
nulos numa
grupo.

sinônimo Um nome alternativo para um objeto de banco de dados.

SYSASM Um privilégio de sistema em uma instância ASM que facilita a separação de banco de
administração e a administração de armazenamento.
dados

sysdba O privilégio que permite que um usuário se conectar com o sistema operacional ou a
eautenticação de arquivo
criar ou iniciar de senha
e encerrar um banco de dados.

SYSDG privilégio do sistema para operações do Data Guard.

SYSKM privilégio de sistema para gerenciar as operações de armazenamento de chave Criptografia


de Dados Transparente (TDE).
sysoper O privilégio que permite que um usuário se conectar com o sistema operacional ou a
eautenticação
iniciar e desligar
de arquivo
(mas de
nãosenha
criar) um banco de dados.

sistema Um esquema utilizado para fins de administração de banco de dados pré-configuradas.

Tabela Uma estrutura de armazenamento de dados bi-dimensional lógico, que consiste em fileiras e
colunas.
tablespace A estrutura lógica que abstrai o armazenamento de dados lógico em tabelas de dados
armazenamento em ficheiros de dados.
físico

TCP Transmission Control Protocol. Juntamente com o Protocolo Internet, TCP compõe o de
facto protocolo de comunicação padrão (TCP / IP) usado para a comunicação cliente-servidor
através
rede. de uma

TCPS TCP com SSL. A versão secure sockets de TCP.

tempfile O armazenamento físico que faz-se uma tabela temporária, utilizada para armazenar
segmentos.
temporariamente

TNS substrato transparente de rede. O coração do Oracle Net, TNS é uma camada proprietária
protocolo em execução no topo de qualquer protocolo de transporte de rede subjacente que você
escolher para usar-
provavelmente TCP / IP.

TO_CHAR Uma função que executa data-to-caráter e número de caracteres tipo de dados
conversões.
TO_DATE Uma função que transforma explicitamente itens de caracteres para valores de data.
TO_NUMBER Uma função que muda itens de caracteres em valores numéricos.

transação Uma unidade lógica de trabalho, que irá completar no total ou não em todos.

TSPITR Tablespace recuperação point-in-time. Um método de recuperação que é ideal para a


recuperação
objectos isolados
de umdeconjunto
uma única
de tabela.

tupla Uma estrutura unidimensional consistindo de atributos (por outras palavras, uma linha).

UGA Global Area usuário. A parte do PGA armazenado no SGA para as sessões em execução
através compartilhada
servidores.

UI interface de usuário. A camada de uma aplicação que comunica com os utilizadores finais; hoje
em dia é
freqüentemente gráfica: a GUI.

URL Localizador Uniforme de Recursos. Um padrão para especificar a localização de um objeto na


que consiste de um protocolo, e um nome de host domínio, um número de porta de IP, um percurso e
Internet,
nome
de parâmetros.
de ficheiro, e uma série

recuperação gerenciados pelo usuário Usando ferramentas ou comandos fora do RMAN para
recuperar um banco de dados ou
tablespace.

UTC Tempo Universal Coordenado, anteriormente conhecido como Greenwich Mean Time (GMT).
UTChorário
fuso éo padrão global; Todos os outros se relacionam com ela como deslocamentos, à frente ou
atrás.
VARIANCE Uma função que retorna a distância a partir da média de cada número no conjunto.

virtual catálogo privada A particionamento lógico de um catálogo RMAN para facilitar a


separação
deveres entre
de vários DBAs.

backup de todo o banco de dados Um backup de banco de dados que inclui todos os arquivos de
dados mais o controlfile.
window Uma construção programador que estende o conceito de horários, dando a Oracle mais
em decidir quando para executar um trabalho dentro de um começo específico e começar a tempo
liberdade
apara
semana.
um único dia ou todos os dias

X Como em X-Windows, o ambiente gráfico padrão usado na maioria dos computadores, exceto
aqueles queWindows
Microsoft são executados
em vez disso.

XML Extensible Markup Language. Um padrão para intercâmbio de dados usando documentos,
onde os dos dados é definida por tags dentro do documento.
formato
Índice

Por favor, note que as ligações índice apontar a partir da edição impressa para início de página.
locais são em e-readers, e pode ser necessário para descer a página uma ou mais vezes depois de
aproximado
clicarchegar
para em umaolink
material indexado .

E (caractere e comercial), 229


* (Asterisco), 205
\ (Símbolo barra invertida), 221
% (Percentagem símbolo), 220
| (símbolo pipe), 205
|| (símbolo de tubo duplo), 211
' ' (duas plicas), 211 -212
_ (Caractere sublinhado), 220
A
abortar modo, 428 , 429
Aceitar comandos, 27
permissões de acesso, 144
status da conta, 512
Teste de ácido, 145 -146
duplicação da base de dados activa, 822 -825
configuração auxiliar exemplo, 823 -824
conjuntos de backup utilizados para, 825
conectividade de rede para, 824
Comando DUPLICATE RMAN para, 824 -825
Active Directory, 71
ACTIVE grupo de log redo, 742
método piscina sessão ativa, 632
sessões ativas, 632
consultas ad hoc, 231
plano de execução adaptativa, 607
ADDM (Automatic Database Diagnostic Monitor), 390 , 577 -578, 586
Função ADD_MONTHS, 252 -253
funções de administração, 513
servidor administrativo, 838
Plug-in Adobe Flash Player, 414
ADR. Veja repositório de diagnóstico automático

ADR Command Interpreter ferramenta (ADRCI), 759 -761


Comando FALHA ADVISE, 769 , 770
conselheiros, 578 -580, 586
Recuperação de dados, 579 -580, 769 -771
Hora de recuperar, a média de 579
memória, 578 , 602 -604
Segmento, 493 -494, 498 , 580 , 584
SQL, 579 , 609 -614
SQL Reparação, 580
Undo, 158 , 579
agentes, Programador, 653
funções de agregação. Ver funções de grupo
log de alerta, 399 , 427 , 431 -432, 435 , 761
Sistema de alerta, 580 -584
monitorização do estado da pelo, 580 -581
configurar alertas no, 583 -584
notificações enviadas pelo, 581
definição de limites em, 581 -583
dois minutos de perfurar em, 586 -587
tipos de alertas no, 581
aliases, 206
coluna, 210
tabela, 310
ALL palavra-chave, 134
Operador ALL, 351
Todas as vistas, 886
Vista ALL_OBJECTS, 77
ALLOCATE comando de canal, 846
unidades de atribuição (AUS), 41 , 46 -47
Comando alter index, 99
ALTER comando conectável DATABASE, 914 -915
Comando SEQUÊNCIA ALTER, 118
Comando ALTER SINÔNIMO 114
Comando ALTER SYSTEM, 420 , 919
Comando SESSION ALTER SYSTEM matar, 171
USUÁRIO comando ALTER, 516
ALTER comando VIEW, 112
alternativa operador citação, 212
nomes de coluna ambíguas, 310 -311
AMM (Gerenciamento Automático de Memória), 600 -601, 602 , 615
substituição e comercial, 229 -234

nome da coluna, 231 -232


Definir e comandos e UNDEFINE, 232 -233
duplo e comercial, 230 -231, 232 -234
exercício sobre a utilização, 234
expressão e de texto, 232
único e comercial, 229 -230
de dois minutos em perfurar, 236
VERIFICAR comando e 233 -234
E operador, 96 , 222 -223, 225
Conformidade ANSI, 81
ANSI SQL juntar sintaxe, 309 -310
Qualquer operador, 351
Quaisquer privilégios, 519 , 520
Application Express (APEX), 856
interfaces de programação de aplicações (API), 575
arquitetura
Data Pump, 554 -555
servidor dedicado, 446 -447
sistemas distribuídos, 377
Flashback Database, 801 -803
Grade de Infra-estrutura, 40 -41
recipiente de vários usuários, 884 -890
Resource Manager, 623 -626
Scheduler, 646 -647
servidor compartilhado, 447 -450
banco de dados de objecto ico, 374 -377
tablespace, 926 -927
dois minutos de perfurar em, 403
backups de arquivo, 706 -708
arquivos de log arquivados, 399 , 672 -673
modo archivelog, 672 -673
possibilidades de backup em, 690 -691
recuperação dos meios de bloco em, 767
configuração de, 676 -677, 679
exercer sobre a ativação, 677 -678
Flashback Database e, 803
processos arquivadores, 672 -673
ARC n (processo arquivador), 391 , 672
operadores aritméticos, 209 -210
índices ascendentes, 98
ascendente ordem de classificação, 225 -226
ASM. Veja Automatic Storage Management
ASM Filter Driver, 45
Parâmetro ASM_DISKSTRING, 44
ASMLib biblioteca de kernel, 45
atomicidade, o princípio de, 145
atributos, 190 , 508 -509
Comando AUDIT, 530
Audit Vault, 530
auditoria, 508 , 529 -538
permitindo, 534 -536
Granulação fina, 531 -532
obrigatório, 534
ambiente multitenant, 937 -938
razões, 530
padrão, 530 -531, 534 -535
técnicas para, 530 -534
dois minutos de perfurar em, 539
unificado, 533 -534, 535 -538, 875 -876, 937
-valor com base, 532
Parâmetro AUDIT_TRAIL, 530
autenticação, 508 , 512 -515
externo, 514 -515
sistema operacional, 513 -514
senha e arquivo de senhas, 513 -514
autorização, 508
autocommit (COMMIT implícito), 153
tarefas automatizadas. veja autotasks
Diagnostic Monitor Automatic Database (DAMS), 390 , 577 -578, 586
repositório de diagnóstico automático (ADR), 756 -762
alertas, problemas e incidentes, 761 -762
Ferramenta interpretador de comandos, 759 -761
estrutura de diretórios, 756 -759
dois minutos de perfurar em, 771 -772
de bloqueio automático, 166 -167
Gerenciamento automático de memória (AMM), 600 -601, 602 , 615
gerenciamento automático de memória compartilhada (ASMM), 599
Automatic Storage Management (ASM), 40 -45
arquitetura, 41 -43
a conversão para, 873
discos, 43 -45
instâncias, 40 , 41 -43

auto teste em, 52 -54


gerenciamento automático de desfazer, 154
Automatic Workload Repository (AWR), 574 -577
exercício na monitorização, 576 -577
gerenciar as configurações para, 575 -576
instantâneos criados por, 574 -576, 577
estatísticas processo de coleta, 574 -575
monitorização de tabela, 492
dois minutos de perfurar em, 586
autotasks, 584 -586
controlar, 585 -586
Resumo dos, 584
dois minutos de perfurar em, 587
base auxiliar, 822 , 823 -824
Função AVG, 283
EMPRESA instantâneos
ADDM relatórios usando, 577
gerenciamento de configurações para, 575 -576
estatísticas coleta e, 574 -575
Veja também Automatic Workload Repository

B
os processos de fundo, 374 , 386 -395
ARC n , 391
CKPT, 390
DBW n , 387 -388
exercício sobre, 392 -395
LGWR, 389
LREG, 391
Mman, 390 -391
MMNL, 390
MMON, 390
PMON, 386 -387
RECO, 392
SMON, 386
dois minutos de perfurar em, 403
backup e recuperação, 664 -684
modo archivelog, 672 -673, 676 -678
mecanismo de pontos de verificação, 668 -669
compressão usado em, 691 , 710

a configuração de uma base de dados para, 673 -675


Categorias de falha e, 664 -665
Área rápida recuperação para, 665 , 675 -676
recuperação exemplo, 666 -668
multitenant, 938 -940
arquivos de log redo online, 670 -671
Oracle Data Guard para, 666
Oracle Secure Backup for, 666
Recovery Manager para, 665 , 686 -722
questões de auto-teste / respostas sobre, 679 -684
dois minutos de perfurar em, 678 -679
pelo usuário vs. servidor de gestão, 686
Veja também backups; recuperação; RMAN
Comando BACKUP, 843 , 846 -847
Parâmetro DURAÇÃO BACKUP, 844 , 846
backups
Filme de arquivo, 706 -708
backupset, 705 -706
CDB e PDB, 938 -939
fechado, 688 , 711
disco, 687
duplicação de, 825 -826
criptografado, 834 -837
completo, 688 , 712
cópia de imagem, 687 , 730 -731
incremental, 688 , 701 -704
multisection, 708 -710
aberto, 687 -688
Oracle Secure, 838 -840
parcial, 688 , 690
arquivo de senhas, 743
só de leitura de tabela, 706
gerenciada por servidor, 686
recuperação de mesa, 798 -799
fita, 687 , 691
gerenciado pelo usuário, 686
todo, 688 , 690
conjuntos de backup, 687
duplicação activo utilizando, 825
modo archivelog, 691
criando backups de, 705 -706

duplex, 705
paralelização, 844 -845
parâmetros básicos, 419 -420
compressão tabela de base, 491 , 492
ENTRE operador, 217 , 218 , 219 , 321
BFILE tipo de dados, 82
plataformas big-endian, 817
índices de bitmap, 95 -97
caixa preta, 242
Tipo de dados GOTA, 82
blocos, 379 , 398 , 471 -472
corrupção de, 765 -769, 772 -773
áreas de cabeçalho e de dados em, 475
recuperação de mídia para, 766 -769
Operadores booleanos, 214 , 222 -224, 225
E operador, 222 -223
NÃO operador, 223 -224
Operador OU, 223
de bootstrap, ASM, 42
Índices de árvore B *, 93 -95, 97
memória tampão do cache, 146 , 379 -380, 598 , 943
tampões
sujo, 380 , 668 -669
flashback, 801 -802, 805
log, 380 -381, 422 , 598 , 599
memória, 602 -604

C
estimativas de cardinalidade, 606
Produtos cartesianos, 304 , 307 -308, 331 -333, 335
funções de conversão caso, 243 -245
exercer sobre o uso, 244 -245
INITCAP, 244
INFERIOR, 243 -244
SUPERIOR, 244
Expressão CASE, 271 -273
sensibilidade caso, 206 -207
catálogo, o RMAN, 687 , 696 -699
CDBs. Veja bancos de dados de contêineres
Comando CHANGE, 708

Comando FALHA MUDANÇA, 769 , 770


Os vectores de mudança, 376 , 380
canais
reparte, 691 , 844 -845
tuning, 846
CHAR tipo de dados, 81
funções de manipulação de caracteres, 245 -248
CONCAT, 245
exercício sobre a utilização, 255
INSTR, 247
COMPRIMENTO, 245 -246
LPAD E RPAD, 246
SUBSTITUIR, 248
SUBSTR, 248
TRIM, 247
condições baseados em caracteres, 215 -216
personagem-to-date conversões, 256 -257, 264 -265
personagem-a-número conversões, 256 , 265
verificar restrições, 103
verificar somas, 766
mecanismo de pontos de verificação, 668 -669, 678
Ckpt (ponto de verificação de processo), 390
aulas, trabalho, 653 , 654 -655
ferramentas de cliente
SQL * Plus 68 -73
SQL Developer, 73 -76
paradigma cliente-servidor, 442 -443
configuração de rede do lado do cliente, 455 -457
testes de conectividade, 457
diretório e nomes externo, 456 -457
Resolução de nomes Easy Connect, 455
resolução de nomes de nomes local, 455 -456
Tipo de dados CLOB, 82
PDBs clonagem, 902 -904
backups fechados, 688 , 711
Cloud Control. Veja Controle Enterprise Manager Nuvem
cachos, 473
Função coalesce, 268 -269
colunas
alias para, 210
alterar em tabelas, 87

atributos como, 190


criação de tabelas com, 84 -85
tipos de dados para, 81 -83, 120
agrupamento por múltiplos, 291 -292
chave, 101
obrigatória, 102
não nulo e nulo, 213
pseudocolumns as, 785-786
qualificar nomes ambíguos
modelos relacionais para, 310 -311
e, 197 -199
substituindo nomes de, 231 -232
utilitários de linha de comando
Data Pump, 556 -557, 559 , 560
Oracle Secure Backup, 838
SQL * Plus, 410
COMMIT
controle de transações usando, 149 -150
de duas fases compromete, 392
transações confirmadas, 789
privilégios comuns, 932 -933
fila comum, 448 -449
papéis comuns, 933
usuários comuns, 930 -931, 934 -935
Palavra-chave COMPACT, 495
operadores de comparação, 217 -222
igualdade e desigualdade, 217 -219
de várias linhas subconsulta, 348 , 349
Comparação com NULL for nulo, 222
comparação com padrão LIKE, 220 -222
comparação com ENTRE gama, 219
definir comparação com EM, 219 -220
de uma única linha subconsulta, 348 , 349
subconsultas comparação, 343 -344
compatibilidade, banco de dados, 816 -817
Parâmetro compatível, 816 , 817
recuperação completa, 724 , 725 -727, 744 -745
arquivos de dados de críticos, 727
de arquivos de dados não críticos, 725 -726
visões complexas, 110 -111
índices compostos, 98
operadores de desigualdade compósitos, 218

restrições exclusivas chave composta, 101


triagem compósito, 227
consultas compostas
ORDEM BY em, 355 , 361
definir os operadores e, 352 , 353 -361
índices compactados, 97
compressão
processo de backup usando, 691 , 710
armazenam dados utilizando, 491 -492
Função CONCAT, 245
operador concatenação, 211
monitorização condição, 580 -581
cláusulas condicionais, 217
funções condicionais, 266 -273
Expressão CASE, 271 -273
Coalesce, 268 -269
DECODIFICAR, 270 , 273
NULLIF, 268 , 269
NVL, 267 , 269
NVL2, 267 , 269
dois minutos de perfurar em, 274
Comando
Comando configure
CONNECT, CHANNEL,
425 846
CONNECT papel, 524 , 525
o pool de conexão, 460 -461
testes de conectividade, o Oracle Net, 457
consistência, de princípio, 145
backups consistentes, 688 , 711
desligamentos consistentes, 428 -429
repetição consolidada, 950 -951
constrangimentos, 100 -107
verificar, 103
definindo, 103 -105
exercício sobre o gerenciamento, 107
explicação de, 100
chave estrangeira, 102 -103
vs imediato diferido, 106
não-nulo, 102 , 103
chave primária, 102
estados de, 105 -106
dois minutos de perfurar em, 121

tipos de, 101 -103


único, 101
violação de, 100 , 144
grupos de consumidores, 623 -624, 653
bases de dados de contentores (CDB), 561 , 884 -887
apoiando-se, 938 -939
Database Replay e, 949 -951
DBCA para criar, 896 -898
estabelecimento de ligações para, 908 -911
exercer na criação, 899 -900
migrando pré-12.1 não CDB-bases de dados para, 907 -908
arquitetura multitenant e, 884 -890
alterações de parâmetros para, 918 -919
desempenho sintonizar, 941 -944
ligar não-CDB em, 904 -906
ligar PDBs desconectados em, 906 -907
privilégios concedida em, 932 -933
gestão de recursos para, 944 -949
papéis geridos de, 933
raiz recipiente em, 884 , 888 -889
semente recipiente em, 884 , 901 -902
questões de auto-teste / respostas sobre, 893 -894, 921 -924, 955 -959
nomes de serviços e, 908 -910
serviços criados para, 910
desligar, 916
SQL * Plus para criar, 898
arranque, 912 -913
comutação de ligações dentro, 910 -911
gestão de tabela em, 927 -928
dois minutos de perfurar em, 892 -893, 920 -921, 951 -954
usuários gerido em, 930 -931
visualizações disponível em, 886
Veja também ambientes multitenant; bases de dados conectáveis
mudança de contexto, 447 , 634
fila de de
tabela controlo, 554555
controlo, -555
operações de controle. ver transações
controlfile, 16 -17, 376 , 396
processo de configuração, 673 -674, 679
restauração de, 737 -738
SQL * Loader e, 549 -550

Parâmetro CONTROL_FILES, 16 , 427


funções de conversão, 255 -265
character-to-date, 256 -257, 264 -265
personagem-a-número, 256 , 265
data-to-character, 256 , 260 -264
Tipo de dados explícito, 257
Tipo de dados implícito, 255 -257
número de caracteres, 256 , 258 -260
Resumo dos usando, 257 -258
auto-teste na, 275 -278
TO_CHAR, 258 -264
TO_DATE, 264 -265
TO_NUMBER, 265
dois minutos de perfurar em, 274
Comando Converter, 818
subconsultas correlacionadas, 349 -350
corrupção, bloco, 765 -769, 772 -773
Função COUNT, 281 -282
recursos da CPU
método para a atribuição, 628 -631
proporção método para CPU, 631
CRIAR comando CATALOG, 698
Comando CREATE DATABASE, 17
Comando CREATE DIRECTORY, 546
Comando CREATE PROFILE, 528
Comando CREATE ROLE, 522
Comando CREATE SCHEMA, 200
CRIAR comando SCRIPT, 699
Comando CREATE SEQUENCE, 115 -116
Comando CREATE SYNONYM, 113
Comando CREATE TABLE, 552
Comando CREATE TABLESPACE, 927
CRIAR USUÁRIO comando, 200 , 515 -516, 930
Comando CREATE VIEW, 111 -112
Roteiro CreateDBCatalog.sql, 28
Roteiro CreateDBFiles.sql, 28
Procedimento CREATE_JOB, 647 -648, 650
Procedimento CREATE_SCHEDULE, 649 -650
Procedimento CREATE_WINDOW, 655
credenciais, banco de dados, 20
recuperação crítico arquivo de dados, 727

cruz junta, 304 , 307 -308, 331 -333, 335


Comandos CrossCheck, 710 -711
notação de corvo pé, 190 , 191 , 194
utilitário crsctl, 41 , 50 , 56 -57
backups incrementais cumulativos, 703 -704
grupo atual, 397
Actual Grupo de log redo, 742
Pseudocoluna CURRVAL, 117

D
dados
agrupamento de, 287 -292
migração, 859 , 860 -862
movendo-se de, 546 , 548 -554
normalização das, 189 , 192 -193
monitoramento de desempenho, 593 -594
metadados da tabela e, 187
visualizações para compreender, 109
gerenciamento de concorrência de dados
exercício sobre como trabalhar com, 172 -173
mecanismo de bloqueio e, 164 -173
linguagem de definição de dados. Veja os comandos DDL
dicionário, de dados 16 , 17 , 186 -187, 376 , 400 -401
cache de dicionário de dados, 383
Data Guard, 377
Data Manipulation Language. Veja os comandos DML
modelagem de dados, 190
Data Pump, 133 , 546 , 554 -565
arquitetura, 554 -555
capacidades de, 556
utilitários de linha de comando, 556 -557
exercer sobre o uso, 560 -561
interruptor de suspensão trabalho, 497
migração de dados utilizando, 860 -862, 908
ambientes multitenant e, 561 -565
transporte de tabela, 557 -560, 818
dois minutos de perfurar em, 566 -567
Data Recovery Advisor (DRA), 579-580, 769-771
exercício sobre a utilização, 771
identificar falhas com, 769 -770

implementação de reparos com, 770


uso multitenant de, 938 , 953
visualizações disponível em, 770
armazenamento de dados, 548
tipos de dados
coluna, 81 -83, 120
exercício sobre, 83
objecto de grandes dimensões, 82
Data Vault, 868
Os administradores de banco de dados (DBAs), 18
tampão de cache do banco de dados, 146 , 379 -380, 598 , 943
Assistente de Configuração de banco de dados (DBCA), 16 -37
configurar as opções de banco de dados com, 31 -32
criação de banco de dados recipiente com, 896 -898
a criação de um banco de dados com, 16 -25
criação do esquema de demonstração, 199 , 203
exercícios sobre a utilização, 22 -25, 29, -30, 31 , 32
gerar scripts de criação de banco de dados com, 25 -30
gerenciamento de modelos de design de banco de dados com, 30 -31
Resumo dos passos de diálogo dbca, 19 -22
questões de auto-teste / respostas sobre, 33 -37
broca de dois minutos sobre como usar, 33
desfazer tamanho de tabela e, 160
conexões de banco de dados
SQL * Plus, 71 -73
SQL Developer, 75 -76
Tabela de Controlo da base de dados Assistente de criação, 91
scripts de criação de banco de dados, 25 -30
Banco de dados Express, 412 -415
ouvintes de banco de dados e, 410
contenção de bloqueio identificado em, 169 -170
Desempenho página Hub, 594 -595
pré-requisitos para a utilização, 415
Botão SQL SHOW, 477
criação de tabelas, 476 -477
desfazer configuração em, 158
links de banco de dados, 891
ouvintes de banco de dados, 40 , 62
criando, 445 -446
Banco de dados Express, 410 , 413 -414
processo de registro, 391 , 446

mostrando o status de, 413


de partida, 424 -425
modernização, 870 -871
ferramentas de gerenciamento de banco de dados, 410 -416
Banco de dados Express, 412 -415
exercer sobre o uso, 415 -416
SQL * Plus, 410 -411
Privilégios SYSDBA, 411 -412
dois minutos de perfurar em, 434
objetos de banco de dados. veja objetos
Database Replay, 949 -951, 954
Banco de dados de conexão residente Exterior (DRCP), 460 -461, 463
segurança de banco de dados. veja segurança
servidores de banco de dados
componentes de, 377 -378
dedicado, 446 -447
compartilhado, 446 -452
passos para a criação, 17
software de banco de dados. Veja software Oracle Database
modelos de banco de dados
a criação de bancos de dados a partir de, 19
gerenciar usando DBCA, 30 -31
Database Upgrade Assistant (DBUA), 858 , 870 , 871 -874, 878
bases de dados
configurar para Oracle Reiniciar, 60 -62
criando com o DBCA, 16 -25
armazenamento data em, 251
duplicação, 821 -827
piscar de volta, 778 , 801 -808
instâncias vs, 16
ligações entre, 461 -462
migração de dados entre, 859 , 860 -862
opções de configuração para, 31 -32
registrar, 59
inicialização e desligamento, 425 -430
passos na criação, 17 -18
recuperação tempfile, 744
transporte, 565 , 820 -821
modernização, 868 -882
Veja também Oracle Database
arquivos de dados, 375 , 397 -399

blocos do sistema operacional e, 472


renomear espaços de tabela e, 479 -480
INTERRUPTOR comando para recuperar, 732 -734
DATA tipo de dados, 82 , 83
funções de data, 251 -254
ADD_MONTHS, 252 -253
LAST_DAY, 253
MONTHS_BETWEEN, 252
NEXT_DAY, 253
ROUND, 253 -254
SYSDATE, 251
TRUNC, 254
condições baseada data, 216 -217
datas
aritmética para, 252
funções de conversão para, 256 -257, 260 -265
de armazenamento de dados de, 251
data-a-caráter conversões, 256 , 260 -264
Papel DBA, 524
Visualizações DBA, 886
DBAs (administradores de banco de dados), 18
Vista DBA_AUTOTASK_CLIENT, 585
Vista DBA_DIRECTORIES, 546
Vista DBA_FLASHBACK_ARCHIVE, 800
DBA_OBJECTS vista, 77
Vista DBA_OUTSTANDING_ALERTS, 581
Vista DBA_RECYCLEBIN, 795 , 797
Vista DBA_REGISTRY, 32 , 856
Vista DBA_RESUMABLE, 497
Vista DBA_ROLES, 524
Vista DBA_SCHEDULER_JOBS, 646
Vista DBA_SEGMENTS, 472
Vista DBA_TABLESPACES, 433
Parâmetro DB_BLOCK_CHECKING, 766
Parâmetro DB_BLOCK_CHECKSUM, 766
DB_BLOCK_SIZE parâmetro, 21 , 22
DBCA. Veja Assistente de Configuração de banco de dados
DB_DOMAIN parâmetro, 19 , 20
Pacote DBMS_ADVISOR, 613 -614
Pacote DBMS_AUTO_TASK_ADMIN, 585
Pacote DBMS_FLASHBACK, 782 , 789

Pacote DBMS_HM, 764 -765


Pacote DBMS_RESOURCE_MANAGER_PRIVS, 626 -627
Pacote DBMS_RESOURCE_MANAGER, 626 , 628 , 945
Pacote DBMS_SCHEDULER, 647 , 654
Pacote DBMS_SERVICE, 910
Pacote DBMS_SQLTUNE, 610 -611
Pacote DBMS_STATS, 607 , 608
Pacote DBMS_XDB_CONFIG, 653
DB_NAME parâmetro, 16 , 19
DBUA (Database Upgrade Assistant), 858 , 870 , 871 -874, 878
DBW n (escritor Banco de Dados), 387 -388, 668 -669
Comandos DCL, 149
comandos DDL
mesas alterando usando, 87
dicionário de dados e, 401
mecanismo de bloqueio e, 166 -167
gravação no arquivo de log, 432
transações usando, 149
TRUNCATE comando, 141 -142
log DDL, 432
impasses, 168 , 171
sistema de apoio à decisão (DSS), 552
Função DECODIFICAR, 270 , 273
arquitetura de servidor dedicado, 446 -447
Cláusula DEFAULT, 85
Perfil padrão, 528
valores RMAN padrão, 692 -693
tabela padrão, 510 , 928
Constrangimentos diferido, 106
criação segmento diferido, 488 , 489
Comando DEFINE, 233
APAGAR comando, 139 -141
exercer sobre o uso, 140 -141
transações usando, 148
TRUNCATE comando vs, 141
esquemas de demonstração, 199 -204
criação de, 199 , 203 -204
HR e OE, 199 , 200 -203
índices descendente, 98
descendente ordem de classificação, 226
DESCREVER comando mesa, 186 -188

O diagnóstico de erros, 756 -775


repositório de diagnóstico automático para, 756 -762
Data Recovery Advisor para, 769 -770
e manuseio bloco corrupção, 765 -769
A Oracle Health Monitor para, 762 -765
questões de auto-teste / respostas sobre, 773 -775
dois minutos de perfurar em, 771 -773
DIAGNOSTIC_DEST parâmetro, 427 , 431 , 756 -757
apoios incrementais diferenciais, 703
retalhamento digitais, 780
cargas directas trajeto, 548 , 550 , 555
directivas, 606 -607, 625
directly attached storage (DAS) devices, 43, 44
diretórios
criando, 546 -547
estrutura de, 5 -6
diretório nomeação, 456 -457
objetos de diretório, 546 -547, 566
tampões sujo, 380 , 668 -669
backups em disco, 687
grupos de discos, ASM, 41 , 43 , 46
disco necessidade de espaço, 5
discos, ASM, 43 -45
expedidores, 448 -449
Variável DISPLAY, 18
Cláusula DISTINTA, 205 , 206 , 214
arquitecturas de sistemas distribuídos, 377
transações distribuídas, 392
Comandos DML, 132 -144
DELETE, 139 -141
fracasso de, 143 -144
INSERT, 132 -136
para fechaduras, 165 , 166
MERGE, 142 -143
subqueries e, 346
dois minutos de perfurar em, 173
desfazer dados e, 154 -155
UPDATE, 136 -139
notação de ponto
nomes de coluna ambíguos e, 310 -311
explicação sobre, 310 , 334

substituição e comercial duplo, 230 -231, 232 -234


Definir e comandos UNDEFINE, 232 -233
VERIFICAR comando, 233 -234
DRA. See Data Recovery Advisor
Comando DROP INDEX, 99
Comando SYNONYM GOTA, 113
Comando DROP TABLE, 87 -88, 792 -793
Comando TABLESPACE GOTA, 483
GOTA comando VIEW, 112
caiu tabelas
tecnologia de flashback para, 791 -798
visualização em lixeira, 795 , 797
de tabela, que deixam cair 483
Tabela DUAL, 211 , 266
encriptação de modo duplo, 837
arquivos de despejo, 555
conjuntos de backup em dúplex, 705
Comando duplicados, 824 -825
dados duplicados, 192 , 193
bases de dados de duplicação, 821 -827
base de dados activa para, 822 -825
backups utilizados para, 825 -826
exercício no processo de, 826 -827
PDBs usando RMSN, 940 -941
razões e utiliza para, 822
questões de auto-teste / respostas sobre, 829 -832
dois minutos de perfurar em, 828 -829
durabilidade, princípio de, 146
arquivos de parâmetros dinâmicos, 416 -417
parâmetros dinâmicos, 417 -419
visualizações dinâmicas de desempenho, 432 -433, 435 , 841
amostragem dinâmico, 606
Registro de servidor dinâmico, 446

E
Resolução de nomes Easy Connect, 455
possibilitando
auditoria, 534 -536
papéis, 524 -525
backups criptografados, 834 -837

encriptação de modo duplo para, 837


criptografia de senha para, 837
criptografia transparente para, 834 -836
dois minutos de perfurar em, 847
formatos endian, 557 , 817 -818
mecanismo de enfileiramento, 166
Enterprise Manager (EM), 20
Banco de dados Expresso Desempenho Hub, 594 -595
monitorar o desempenho usando, 592 -595, 614
Enterprise Manager Cloud Control, 20 , 581 , 756 , 761 , 763 , 942
Enterprise Manager banco de dados Express, 20 , 410
entidades, 190 -194
igualdade operador, 215 , 217 , 218
igualdade predicado, 138 , 140
equijoins, 304 , 305 , 319 , 334
erros
bloco de corrupção, 765 -769, 772 -773
diagnóstico, 756 -765, 769 -770
Declaração DML, 143 -144
tecnologias de flashback e, 780
impedindo com vistas, 109
grafia ou pontuação, 210
desfazer dados, 156
Veja também falhas
Caracter de ESCAPE, 221
Modo de bloqueio EXCLUSIVE, 167
bloqueios exclusivos, 165 -166, 167
planos de execução, 604 , 607
controles de tempo de execução, 633 -634
EXISTE condição, 352
comando expdp, 564
conversão explícita tipo de dados, 257
a criação do índice explícito, 98
exportador
a partir existente para novas PDBs, 563 -564
importação transportável completo e, 564 -565
a partir de não-CDB para PDBs, 561 -563
de PDBs para não-CDB, 564
espaços de tabela usando o Data Pump, 557 -561
expressões, 209
CASE, 271 -273

aliasing coluna e, 210


exercício na construção, 214
literal, 211
substituindo, 232
mapas de extensão, 41
extensões, 142 , 474 -475
definição de, 400 , 472
gestão de, 483 -484
autenticação externa, 514 -515
nomes externo, 457
tabelas externas, 552 -554, 555 , 566
extrair-transformar-carga ciclo (ETL), 552

F
falhas
bloco de corrupção, 765 -769, 772 -773
categorias de, 664 -665
diagnóstico, 756 -765, 769 -770
login, 527
Veja também erros
ligações rápidas intra-CDB, 891
Área de Recuperação Rápida (FRA), 665 , 804
configuração de, 675 -676, 678 -679
logs de flashback usando, 803
interruptor rápido, 732
sistema alimentador, 552
FETCH cláusula, 228
Parâmetro FILESPERSET, 845 , 846
Grão fino Auditoria (FGA), 531 -532
primeira forma normal (1FN), 192
a área de recuperação de flash, 707
tampão de recapitulação, 801 -802
Flashback Data Archive (FBDA), 780 , 799 -801
Flashback Database, 778 , 801 -808
arquitetura, 801 -803
Configurando, 803 -804
exercer sobre o uso, 807 -808
método para a utilização de, 805 -806
monitorização, 804 -805
RMAN e, 807

SQL * Plus e, 806 -807


quando a usar, 780 , 781
Gota de recapitulação, 779 , 791 -798
Descrição da utilização, 793 -795
exercício sobre como trabalhar com, 795 -796
implementação de, 792 -793
Lixeira e, 795 , 797 -798
quando a usar, 780 , 781
Flashback Query, 778 -779, 781 -791
uso básico, 781 -783
consulta de tabela, 783 -785
consulta transação, 163 -164, 787 -790
desfazer dados e, 163 , 790 -791
consulta versões, 785 -787
alvo retenção de recapitulação, 803 -804
Tabela de recapitulação, 779 , 780 , 783 -785
tecnologias de flashback, 778 -814
arquivo de dados, 799 -801
Flashback Database, 801 -808
visão geral descritiva, 778 -780
caiu tabelas e, 791 -798
Consultando Dados usando, 781 -791
questões de auto-teste / respostas sobre, 809 -814
consultas de mesa, 783 -785
consultas de transação, 779 , 787 -790
de dois minutos em perfurar, 808 -809
versões consultas, 785 -787
quando a usar, 780 -781
Flashback Transaction, 779 , 780 , 781 , 787 -790
Flashback Versions Query, 785 -787
Tipo de dados FLOAT, 82
Cláusula FOR UPDATE, 153
processos de primeiro plano, 374
chaves estrangeiras, 102 -103
chaves estrangeiras, 190
colunas nulo e, 213
integridade referencial e, 194 -197
máscaras de formato
data, 261 -262
numérico, 259
formato especificadores, 694 -695

processo de recuperação para a frente, 376


FRA. Veja Área de Recuperação Rápida
cláusula FROM
Instrução SELECT e, 205
subconsultas utilizados em, 342 , 345
Cláusula WHERE e, 215
backups completos, 688 , 712
checkpoints completos, 669
EXTERIOR junção completa cláusula, 329
varredura completa da tabela, 92 -93
completa transportável exportação / importação, 564 -565
nomes de domínio totalmente qualificados (FQDNs), 20
índices baseados em função, 98
funções
conversão caso, 243 -245
manipulação de caracteres, 245 -248
condicional, 266 -273
conversão, 255 -265
data, 251 -254
definindo, 242
grupo, 280 -287
de várias linhas, 243
aninhada, 242 , 265 -266, 292
numérico,
única linha,248
243-251
tipos de, 242 -243

G
GoldenGate, Oracle, 377
concessão
privilégios, 517 , 518 -519, 521 -522
papéis, 522 -523
Infra-estrutura de rede (GI), 40 -64
arquitetura, 40 -41
Capacidade ASM, 40 , 41 -45
processo de instalação, 45 -51
processo de lançamento, 51
Instalação do Linux, 48 -50
A Oracle Reiniciar fornecida por, 56
questões de auto-teste / respostas sobre, 52 -54

broca de dois minutos sobre ASM e, 51


Instalação do Windows, 47 -48
GRUPO cláusula BY, 289 -292
HAVING e, 294 , 296
múltiplos atributos utilizados por, 291
dois minutos de perfurar em, 297
funções de grupo, 280 -287
AVG, 283
COUNT, 281 -282
definição de, 280 -281
exercício sobre a utilização, 287
LISTAGG, 286-287
MAX e MIN, 285
aninhados, 292
regras para, 287
auto-teste on, 297 -302
STDDEV, 284 -285
SUM, 282 -283
dois minutos de perfurar em, 296
VARIANCE, 284 -285
agrupamento atributo, 289 , 290
agrupamento de dados, 287 -296
com base em várias colunas, 291 -292
criando grupos de dados, 287 -289
GROUP BY cláusula de, 289 -292, 294 , 296
HAVING para, 294 -296
funções de grupo aninhados e, 292
fins de divulgação servidos por, 289
restringindo resultados do grupo, 293 -294
questões de auto-teste / respostas sobre, 297 -302
dois minutos de perfurar em, 297
resultados ao nível do grupo, 293

H
aglomerados de hash, 84
botar técnica
Cláusula de junção,
HAVING, 294 93
-296
exercício sobre a utilização, 296
GROUP BY e, 294 , 296
dois minutos de perfurar em, 297

Cláusula WHERE e, 293 -294


Health Monitor, 762 -765
tabelas de heap, 84
mecanismo de ajuda, 59
paradigma hierárquico, 198 -199
Alta disponibilidade Serviços (HAS), 40 , 50
marca de água alta, 142 , 548
HR esquema demonstração, 199 , 200 -203
Conexões HTTP, 412 , 653
Híbrido Columnar Compression (HCC), 491 , 492
Hypertext Transfer Protocol (HTTP), 412 , 653

Eu
tempo ocioso, 634
if-then-else lógica, 266 , 270 , 271
imagem cópias, 730 -736
recuperação rápida usando, 731 -736
processo de recuperação de, 730
Backups RMAN para, 687
estratégia a utilizar, 730 -731
Constrangimentos PRIMÁRIO, 106
Palavra-chave IMEDIATA, 916
Modo de desligamento imediato, 428
impdp utilidade, 559 , 560
implícita cometer, 153
conversão implícita tipo de dados, 255 -257
a criação do índice implícito, 98
importador
a partir existente em novos PDBs, 563 -564
exportador transportável completo e, 564 -565
em não-CDB de PDBs, 564
em PDBs de não-CDB, 561 -563
espaços de tabela usando o Data Pump, 557 -561
EM operador, 217 , 219 -220, 351
Grupo redo log INACTIVO, 740 -742
Incident Manager, 761
incidentes, base de dados, 761 -762
recuperação incompleta, 724 , 727 -730, 744 -745
banco de dados de recapitulação vs, 803
a criação do ponto, 727 -728

gerenciada por servidor, 728 -729


desligamentos inconsistentes, 429
backups incrementais, 688 , 701 -704
cumulativo, 703 -704
diferencial, 703
exercício sobre a utilização, 704
Nível 0, 702 usando, 730 -731
recuperando
broca em, dois minutos 711 , 712 -713
checkpoints incrementais, 668 -669
recuo de instruções SQL, 208
aglomerados de índice, 84
tabelas de índice organizado, 84
índices, 92 -100
bitmap, 95 -97
B * Árvore, 93 -95
constrangimentos exigindo, 102
a criação e utilização, 98 -99
exercer sobre a criação, 99 -100
funções desempenhadas por, 92
modificando e soltando, 99
necessidade de, 92 -93
opções aplicadas a, 97 -98
como segmentos, 473
encolher operação e, 494 -496
dois minutos de perfurar em, 121
tipos de, 93 -98
operadores de desigualdade, 217 , 218 -219
Função INITCAP, 244
arquivos de parâmetros de inicialização, 28 -29, 416 -424
parâmetros básicos e, 419 -420
parâmetros estáticos e dinâmicos e, 417 -419
dois minutos de perfurar em, 434
parâmetros de inicialização, 21 , 28, -29, 422 -424
vistas inline, 345
associações internas, 304 , 305 -307, 319 , 325
consultas internas. veja subconsultas
arquivos de dados de entrada, 549
Comando INSERT, 132 -136
exercer sobre o uso, 135 -136
Instrução SELECT e, 133 , 134

SQL * Loader e, 548


transações usando, 148
processo de instalação
Grade de Infra-estrutura, 45 -51
Software de banco de dados Oracle, 7 -12
Oracle Secure Backup, 838
SQL Developer, 73 -74
instalação de software de banco de dados Oracle, 7 -12
Plataforma Linux para, 8 -9, 10 , 11 -12
SIM estabelecimento inventário, 7 -8
processo de planeamento para, 4 -7, 12
variações da plataforma para, 10 -12
controlos de pré-requisito para, 6 -7
Os arquivos de resposta para, 9
auto teste em, 12 -14
processo de instalação silenciosa, 9
dois minutos de perfurar em, 12
Plataforma Windows para, 10 -11
instâncias, 16
Automatic Storage
base auxiliar, Management, 40 , 41 -43
823 -824
processos em segundo plano para, 386 -395
conectando a local, 443 -444
banco de dados de recipiente, 911 -912
falhas relacionadas com, 664
estruturas de memória de, 378 -386
ambiente multitenant e, 941 -943
processo de recuperação de, 428 , 666 -668
processo de encerramento para, 428 -429
processo de inicialização para, 426 -428
Função INSTR, 247
Tipo de dados INTEIRO, 82
International Organization for Standardization (ISO), 81 , 352 , 785
comunicação entre processos (IPC), 889
Operador de intersecção, 353 , 358 -359
DIA intervalo para segundo tipo de dados, 82
ANO intervalo para tipo de dados MÊS, 82
É operador NULL, 217 , 222
dispositivos iSCSI, 44
Conformidade ISO, 81
isolamento, de princípio, 145 -146

J
Java Database Connectivity (JDBC), 75
Piscina Java, 384 , 598
Java Runtime Environment (JRE), 73
cadeias de trabalho, 652 , 657
classes de trabalho, 653 , 654 -655
Parâmetro job_queue_processes, 646
empregos
controle por tempo de execução, 633 -634
criar no Programador, 647 -648
priorizando no Scheduler, 653 -656
sistemas remotos usando, 653
auto-suficiente, 650
Cadastre cláusula ON, 307 , 315 -317, 319
exercer sobre o uso, 316 -317
auto-junções e, 321 -322
Cadastrar-se usando cláusula, 307 , 314 -315, 319
aderir, de conceito, 188 -189, 304
junta, 304 -339
nomes de coluna ambíguos e, 310 -311
ANSI sintaxe SQL para, 309 -310
cruzada, 304 , 307 -308, 331 -333
equijoins as, 304, 305, 319
interior, 304 , 305 -307, 319 , 325
Cadastre cláusula ON, 307 , 315 -317, 319 , 321 -322
Cadastrar-se usando cláusula, 307 , 314 -315, 319
NATURAL JOIN cláusula, 306 , 311 -314, 319
nonequijoins como, 304 , 305 , 319 -321
n-forma ou múltipla, 318 -319
Sintaxe Oracle para, 308 -309
exterior, 304 , 307 , 324 -330
auto-teste sobre o uso, 335 -339
autojunções como, 304 , 321 -324
dois minutos de perfurar em, 334 -335
tipos de, 305 -308

o
colunas de chave, 101

o
grandes tipos de objectos de dados, 82
grande piscina, 384 , 449 , 598
Função LAST_DAY, 253
Conexões LDAP, 75
Variável LD_LIBRARY_PATH, 69
LEFT OUTER JOIN cláusula, 325 -326
Função COMPRIMENTO, 245 -246
Nível 0 backups incrementais, 702
LGWR (escritor Log), 389 , 668
cache de biblioteca, 382 -383
Lightweight Directory Access Protocol (LDAP), 75 , 873
COMO operador, 217 , 218 , 220 -222
limitar os resultados da consulta, 214 -225
Operadores para booleanas, 222 -224
operadores de comparação para, 217 -222
regras de precedência para, 224 -225
dois minutos de perfurar em, 235
WHERE para, 214 -225
links, banco de dados, 461 -462
Linux OS
criação do esquema de demonstração on, 203 -204
a instalação da grade de Infra-estrutura em, 48 -50
instalar o Oracle Database em, 8 -9, 10 , 11 -12
lançando o DBCA on, 18
gestão da Oracle Restart em, 57
SQL * Plus em, 68 -70
suporte para Oracle Database on, 4
Comando FALHA LIST, 769 , 770
LISTAGG function, 286-287
Utilidade de controlo ouvinte, 452 -454
arquivo de configuração listener.ora, 452
ouvintes. Veja ouvintes de banco de dados
expressões literais, 211
plataformas little-endian, 817
LOB (objectos de grandes dimensões), 473
redes locais (LANs), 274
conexões de banco de dados locais, 443 -444
resolução de nomes de nomes local, 455 -456
privilégios locais, 932 -933
papéis locais, 933

usuários locais, 930 -931


contenção de bloqueio, 168 -171
causas de, 168 -169
impasses e, 171
detecção, 169 -171
solving, 171
lockAccount.sql roteiro 28
mecanismo de bloqueio, 164 -173
automática e manual de travamento, 166 -167
monitoramento e resolução de conflitos, 168 -171
mecanismo de enfileiramento relacionado, 166
exercício sobre como trabalhar com, 172 -173
compartilhados e bloqueios exclusivos, 165 -166
dois minutos de perfurar em, 175
log tampão, 380 -381, 422 , 598 , 599
arquivos de log, 549 , 555
interruptor de registro, 397
modelos lógicos, 190
operadores lógicos. Veja operadores booleanos
banco de dados standby lógico, 666
estruturas de armazenamento lógicos, 400 , 403 -404, 470
números de unidades lógicas (LUN), 44
Logical Volume Manager (LVM), 41
logon desencadeia, 422
toras
alerta, 399 , 427 , 431 -432, 435
recapitulação, 802 -803, 804
pronto, 376 , 380 -381, 396 -397
Job Scheduler, 654 -655
Tipo de dados de comprimento, 82
LONGO RAW tipo de dados, 82
consultas de longa duração, 162 -163
Funções inferior, 243 -244
instruções SQL minúsculas, 206 -207
Função LPAD, 246
LREG (Processo de Registro Listener), 391 , 446
lsnrctl utilidade, 413 , 414 , 452 -454

M
nomes de máquina, 807

Monitor de gerenciamento. veja MMON


gestão
configurações de hora, 575 -576
constrangimentos, 107
modelos de design de banco de dados, 30 -31
extensões, 483 -484
memória, 596 -602
estatísticas do otimizador, 604 -609
A Oracle Reiniciar, 56 -57
senhas, 527 -529
recursos, 622 -643
segmentos, 493 -494, 498
armazenamento, 492 -494
desfazer dados, 156 -157
auditoria obrigatória, 534
colunas obrigatórios, 102
evoluções da base de dados manual, 874 -875
de bloqueio manual 167
upgrades de software manuais, 858
estatísticas manuais encontro, 607 -609
muitos-para-muitos relacionamentos, 191 , 194 , 470
muitos-para-um, 191 , 194
relação mestre-detalhe, 194 , 325
Função MAX, 285 , 351
Parâmetro MaxOpenFiles, 845 , 846
Parâmetro MAXPIECESIZE, 846
Parâmetro MAX_STRING_SIZE, 81
O tempo médio de recuperação (MTTR) Advisor, 579
falha de mídia, 664
Camada de gerenciamento de mídia (MML), 691
servidor de mídia, 838
assessores de memória, 578 , 602 -604, 615 , 943 -944
corretor de memória, 601
buffers de memória, 602 -604
gerenciamento de memória, 596 -602
Automático, 600 -601
exercício do ajuste, 601 -602
assessores de memória para, 578 , 602 -604
multitenant, 941 -942
PGA, 596 -598
SGA, 598 -600

Gerenciador de memória (Mman), 390 -391, 601


estruturas de memória, 378 -386
banco de dados de memória cache, 379 -380
exercer na investigação, 385 -386
Piscina Java, 384
grande piscina, 384
log tampão, 380 -381
piscina comum, 382 -384
fluxos piscina, 384 -385
dois minutos de perfurar em, 403
memória conselheiro alvo, 603
Parâmetro MEMORY_MAX_TARGET, 600
Parâmetro MEMORY_TARGET, 600
MERGE comando, 142 -143
metadados, 187 , 207
Ligações Metadados, 934
métricas contra as estatísticas, 593
Microsoft SQL Server, 199
Microsoft Windows. See Windows OS
migração
de dados, 859 , 860 -862
linha, 491
Função MIN, 285
Operador MENOS, 353 , 359
espelhamento, RAID 44
Mman (Gerenciador de memória), 390 -391, 601
MMNL (Gerenciamento Monitor de luz), 390
MMON (Gerenciamento Monitor), 390
alertas levantados por, 581
AWR estatísticas e, 492 , 574 -575
corretor de memória e, 601
Função MOD, 250 -251
monitoração
condição, 580 -581
conflito, 168 -171
Flashback Database, 804 -805
ambiente multitenant, 941 -944
desempenho, 593 -595, 614
Resource Manager, 637 -638
Sessões RMAN / postos de trabalho, 841 -843
tablespace, 492

desfazer dados, 156 -161


Função MONTHS_BETWEEN, 252
Modo MOUNT, 17 , 427 , 688 -690
movimentação de dados, 546 , 552 -554, 556 -565
Bomba de dados para, 556 -565
mesas externas para, 552 -554
questões de auto-teste / respostas sobre, 567 -571
SQL * Loader para, 548 -551, 565
dois minutos de perfurar em, 565 -567
agrupamento de várias colunas, 291 -292
funções de várias linhas, 243
Veja também as funções de grupo
subconsultas de várias linhas, 348 -349
operadores de comparação para, 348 , 349
exemplos de escrita, 351 -352
multiplexação, RMAN, 845
apoios multisection, 708 -710
ambientes multitenant, 884 -890, 896 -924, 926 -959
Comando alter sistema usado em, 919
Visão geral da arquitetura para, 884 -890
auditoria em, 937 -938
automatizando inicialização APO em, 916 -917
backup e recuperação em, 938 -940
alterar o estado das APO em, 918
comunicações entre contentores em, 891 -892
conceitos relativos a, 884 -887
criação de CDBs e PDBs em, 896 -907
Bomba de dados usado em, 561 -565
Data Recovery Advisor usado em, 938 , 953
Database Replay usado em, 949 -951
que estabelecem ligações em, 908 -911
migrando pré-12.1 bases de dados em, 907 -908
abertura / fecho PDBs em, 914 -916
valor do parâmetro muda em, 918 -919
monitoramento de desempenho / sintonizar, 941 -944
razões para a criação, 887 -888
gestão de recursos em, 944 -949
questões de auto-teste / respostas sobre, 893 -894, 920 -921, 955 -959
desligando CDBs em, 916
gestão de espaço em, 926 -930
SQL * Loader usado em, 565
começando-se no CDB, 912 -913
dois minutos de perfurar em, 892 -893, 920 -921, 951 -954
usuários, papéis e privilégios, 930 -936
Veja também as bases de dados do recipiente; bases de dados conectáveis
modelo de multithreaded, 386

N
resolução de nomes, 444
Easy Connect, 455
nomeação local, 455 -456
utilidade para o ensaio, 457
espaços de nomes, objeto, 79 -80
nomenclatura / renomeação
objetos de esquema, 78 -79
tabelas com SQL * Plus, 792
tablespaces, 479 -480
suporte ao idioma nacional (NLS) parâmetros, 258
NATURAL JOIN cláusula, 306 , 311 -314, 319
junções naturais, 306 , 307 , 315 , 319 , 334
NCLOB tipo de dados, 82
funções aninhadas, 242
funções de grupo, 292
funções de uma única linha, 265 -266
loop aninhado técnica, 93
subconsultas aninhadas, 342
tabelas aninhadas, 473
Assistente de Configuração Net, 452 -455
Utilidade de controlo ouvinte, 452 -454
TNS_ADMIN variável de ambiente, 454 -455
Ferramenta Net Manager, 452 , 453
configuração da rede, 873
falha de rede, 664
modo de exportação de rede / importação, 860 , 861
network-attached storage (NAS) devices, 43, 44
networking. Veja Oracle Net
Função NEXT_DAY, 253
Pseudocoluna NEXTVAL, 117
Vista NLS_SESSION_PARAMETERS, 258
nenhum modo de montagem, 16 , 27
Modo noarchivelog, 672 , 688 -690

Comando NOAUDIT, 530


Interruptor NOLOG, 410
Modo NOMOUNT, 427 , 763
bases de dados não-contentores (não-CDB)
exportar para PDBs de, 561 -563
importando de PDBs em, 564
arquivos de dados não críticos, 725 -726
nonequality predicado, 140
nonequijoins, 304 , 305 , 319 -321, 334
índices não exclusivos, 97
Modo de desligamento normal, 428
de início de sessão de utilizador normal, 411
usuários normais, 410
dados normalizando, 189 , 192 -193
NÃO EXISTE condição, 352
Operador NOT IN, 344 , 352
NÃO colunas NULL, 213
NÃO operador, 223 -224, 225
notificações, 581
restrições de não-nulos, 102 , 103
valores NULL
índices de bitmap e, 97
B * índices de árvore e, 95
funções condicionais para, 267 -268
É operador para NULL, 222
Instruções SQL e, 212 -213
resultados subconsulta como, 352
restrições exclusivas e, 101
colunas nulo, 213
Função NULLIF, 268 , 269
NÚMERO tipo de dados, 81 , 83
número-a-caráter conversões, 256 , 258 -260
máscaras de formato numérico, 259
funções numéricas, 248 -251
MOD, 250 -251
ROUND, 249 -250
TRUNCAR, 250
condições baseadas-numéricos, 215
NVARCHAR2 tipo de dados, 81
função NVL, 267 , 269
Função NVL2, 267 , 269

O
ligações entre objetos, 934
privilégios de objeto, 520 -521
estatísticas objeto, 604 -605, 606 , 608
objetos
categorização, 76 -81, 120
diretório, 546 -547
exercer sobre o uso, 80 -81
espaços de nomes para grupos de, 79 -80
nomeação de esquema, 78 -79
privilégios relacionados com, 520 -521
Scheduler, 647
e segmentos, 488 , 489
sinónimos de, 112 -115
tipos de, 76 -77
comandos obtool, 839 -840
OE esquema demonstração, 199 , 203
espaços de tabela off-line, 480 -481
Cláusula OFFSET, 227
Processo OHASD, 40
Naming Convention OMF, 6
linhas de uma só perna, 304
um-para-muitos relacionamentos, 191 , 194
um-para-um relacionamento, 191 , 194 , 470
arquivos de log redo
processos online, 396 672
e arquivadores, -397-673
configuração de, 673
protegendo, 670 -671
dois minutos de perfurar em, 678
tablespaces online, 480 -481
processamento de transações online (OLTP), 610
backups abertas, 687 -688
Modo de abertura, 427
autenticação do sistema operacional, 513 -514
grupos do sistema operacional, 10
operadores, 209
citações alternativa, 212
aritmética, 209 -210
booleano, 222 -224
comparação, 217 -222, 348 -349
concatenação, 211

Optimal Flexible Architecture (OFA), 5


Optimizer, 604 -609, 615
Autotask para as estatísticas de coleta, 584
como as estatísticas são usados por 605 -607
estatísticas manuais reunindo com, 607 -609
objeto estatísticas e, 604 -605, 606
sugestões de optimização, 99
OU operador, 223 , 225
A Oracle diretório Base, 5
Oracle Call Interface (OCI), 442
Oracle Certified Associate (OCA), 40
Oracle Certified Professional (OCP), 10
Oracle Data Guard, 666
O Oracle Data Pump. Ver Data Pump
A Oracle modelo de armazenamento de dados, 470 -472
Oracle Data Vault, 868
oracle Database
componentes de arquitectura, 374 -378
dicionário de dados, 400 -401
piscar de volta, 778 , 801 -808
estruturas lógicas, 400
migração de dados, 859 , 860 -862
estruturas físicas, 395 -399
inicialização e desligamento, 425 -430
modernização, 868 -882
Veja também bancos de dados
software Oracle Database
estrutura de directório, 5 -6
disco necessidade de espaço, 5
Instalação do Linux, 8 -9, 10 , 11 -12
opções para download, 4
planejamento de uma instalação de, 4 -7, 12
plataformas de suporte, 4
modernização, 856 -860
contas de usuário, 5
Instalação do Windows, 10 -11
Oracle Enterprise Manager. Veja Enterprise Manager
A Oracle Health Monitor, 762 -765
A Oracle diretório, Casa 5 , 203 , 856 , 857 , 870 -871
Oracle Internet Directory (OID), 71
A Oracle se juntar a sintaxe, 308 -309

Oracle Label Security (OLS), 868


Oracle Local Registry (OLR), 41, 56
Oracle Managed Files (OMF), 21 , 485 -486
Opção do Oracle multitenant. Veja ambientes multitenant
Oracle Net, 442 -467
paradigma cliente-servidor e, 442 -443
configuração do lado do cliente, 455 -457
testes de conectividade, 457
banco de dados criação ouvinte, 445 -446
Banco de dados pool de conexão residente, 460 -461
Registro de servidor dinâmico, 446
exercício sobre a configuração, 458 -460
ligações entre as bases de dados, 461 -462
Assistente de Configuração Net, 452 -455
Ferramenta Net Manager, 452 , 453
questões de auto-teste / respostas sobre, 463 -467
estabelecimento da sessão, 443 -445
servidor compartilhado, 446 -452
broca de dois minutos, 462 -463
A Oracle Reiniciar, 56 -64
configuração de base de dados, 60 -62
Infra-estrutura de rede e, 56
Registro de ouvinte, 62
administração processo, 56 -57
administração de recursos, 58 -59
capacidade de reiniciar, 59 -60
questões de auto-teste / respostas sobre, 63 -64
broca de dois minutos, 62
A Oracle Scheduler. veja Scheduler
O Oracle Secure Backup (OSB), 666 , 834 , 838 -840
instalação e configuração, 838
comandos obtool diversos, 839 -840
auto-teste perguntas / respostas sobre, 848 , 850
dois minutos de perfurar em, 847
usando RMAN com, 838 -839
A Oracle Software Delivery Cloud, 4
Oracle Technology Network (OTN), 4
Oracle Universal Installer (OUI), 4, 7-12
Instalação GI, 45
instalação interativa, 8 -9
criação de inventário, 7 -8

Instalação do Linux, 8 -9, 10 , 11 -12


variações da plataforma, 10
Os arquivos de resposta, 9
atualizações usando, 857 -858
problemas de versão, 8
Instalação do Windows, 10 -11
Oracle Warehouse Builder (OWB), 869
ORACLE_HOME variável, 69
ORACLE_SID
ORDEM BY, 225 parâmetro,
-227 20 , 888 , 889
Ascending Classificar com, 225 -226
composto com ordenação, 227
consultas compostas e, 355 , 361
descendente tipo com, 226
exercício sobre a utilização, 227
triagem com posicional, 226
linhas órfãos, 103 , 304
OSB. Veja o Oracle Secure Backup
OUI. See Oracle Universal Installer
associações externas, 304 , 307 , 324 -330
exercício em execução, 330
EXTERIOR junção completa cláusula, 329
as junções internas distinguido de, 325
LEFT OUTER JOIN cláusula, 325 -326
DIREITO EXTERIOR cláusula de junção, 326 -328
dois minutos de perfurar em, 334
consultas externas, 342

P
script de atualização paralela, 875
paralelismo
backupset, 844 -845
limitar o grau de, 633
selecionar para upgrades, 873
Directiva PARALLEL_SERVER_LIMIT, 945 -946
arquivos de parâmetros, 16 , 399
inicialização, 28 -29, 416 -424
estática e dinâmica, 416 -417
parâmetros
básico, 419 -420

CDB e PDB, 918 -919


mudando exemplo, 420 -422
inicialização, 21 , 28, -29, 422 -424
Gerenciamento de memória PGA, 597 -598
Gerenciamento de memória SGA, 599
auditoria padrão, 534
estática e dinâmica, 417 -419
relação entre pais e filhos, 102 -103, 325
parênteses, 354
apoios parciais, 688 , 690
checkpoints parciais, 669
partições
índice, 473
tabela, 84 , 473
criptografia de senha, 837
arquivos de senha
autenticação utilizando, 513 -514
externo, 399
senhas
autenticação utilizando, 514
caracteres utilizados, 20
perfis
SYS epara gerenciar,
esquema 527 -529
SYSTEM, 20
patches de, 856 , 857
Variável PATH, 69
comparação padrão, 220 -222
Definição PCTFREE, 490
PDB $ recipiente SEED, 901
PDBs. Veja bancos de dados conectáveis
área pendente, 628
desempenho
índices para melhorar, 92 -93
contenção de bloqueio relacionado, 168
monitoramento e ajuste, 592 -620, 941 -944
vistas para optimizar, 110
a monitorização do desempenho, 593 -595, 614 , 941
ajuste de desempenho, 592 -620
Gerenciamento automático de memória e, 600 -601
gerir as estatísticas do otimizador, 604 -609
assessores de memória para, 602 -604
metodologia para, 592 -593

actividade de controlo para, 593 -595


ambiente multitenant, 941 -944
Gerenciamento de memória PGA e, 596 -598
Operações RMAN e, 843 -847
questões de auto-teste / respostas sobre, 615 -620
Gerenciamento de memória SGA e, 598 -600
SQL Access Advisor para, 612 -614
SQL Tuning Advisor para, 609 -612
dois minutos de perfurar em, 614 -615
configurações RMAN persistentes, 692 -695
valores padrão, 692 -693
formato especificadores, 694 -695
política de retenção, 693 -694
PGA. Veja Programa Global Area
PGA Advisor, 578 , 603
Parâmetro PGA_AGGREGATE_TARGET, 597 -598, 600
estruturas de armazenamento físico, 395 -399
controlfile, 396
arquivos de dados, 397 -399
estruturas de armazenamento lógico vs, 470
arquivos de log redo online, 396 -397
dois minutos de perfurar em, 403
PL / SQL
código de criação, 68 , 148 , 401
execução exemplo chamada, 582
função de cache de resultado, 383
estatísticas e, 604
Veja procedimentos também específicos
planos
Recurso CDB, 945 , 946 -947
instalação de banco de dados, 4 -7, 12
execução, 604 , 607
de recursos, 625 -626, 628 -636, 653
bases de dados de conector (PDBs), 561 , 884 -885, 889 -892
automatizando
apoiando-se, 938 o arranque
-939 de, 916 -917
mudar o status de, 918
características, 889 -890
clonagem PDBs existentes para criar, 902 -904
comunicações entre, 891 -892
Técnicas de criação para, 900 -907

Database Replay e, 949 -951


duplicação usando RMSN, 940 -941
estabelecimento de ligações para, 908 -911
exportar para não-CDB de, 564
exportação / importação entre, 563 -564
importação de não-CDB em, 561 -563
arquitetura multitenant e, 884 -890
abertura e fecho, 914 -916
alterações de parâmetros para, 918 -919
desempenho sintonizar, 941 -944
ligar em CDB, 906 -907
privilégios concedida em, 932 -933
provisionamento, 891 , 893
gestão de recursos para, 944 -949
papéis geridos de, 933
recipiente semente para a criação, 901 -902
abrir selectivamente / fecho, 915 -916
questões de auto-teste / respostas sobre, 893 -894, 921 -924, 955 -959
nomes de serviços e, 908 -910
serviços criados para, 910
ações atribuídas a, 944 -945
gestão de tabela em, 926 -930
dois minutos de perfurar em, 892 -893, 920 -921, 951 -954
desconectar e soltando, 907
usuários gerido em, 930 -931, 934 -935
Veja também as bases de dados do recipiente; ambientes multitenant
PMON (Process Monitor), 386 -387
políticas
Grão fino Auditoria, 531 -532
Retenção RMAN, 693 -694
auditoria unificada, 533 , 535 -536, 537
notação posicional, 133
triagem posicional, 226
postDBCreation.sql roteiro 28
Pós-Upgrade Ferramenta Status, 875
tarefas postupgrade, 876
precedência, operador, 224 -225
papéis predefinidos, 524
predicado, 214
cheques pré-requisito
para a criação de banco de dados DBCA, 22

para atualizações de banco de dados DBUA, 872


para instalar o Oracle software de banco de dados, 6 -7
Pré-Upgrade Information Tool, 869 -870, 877
restrições de chaves primárias, 102
chaves primárias, 190 , 194
APAGAR comando usando, 140
sequências para gerar, 115
Comando PRINT, 701
Sinônimos privadas, 113
Mecanismo de Análise Privilege, 525 -526
usuários privilegiados, 410 , 412
privilégios, 517 -522
análise de, 525 -526
comum e local, 932 -933
operação flashback, 787
concessão, 517 , 518 -519, 521 -522
objeto, 520 -521
revogação, 517 , 519 , 521
inicialização ou desligamento, 425 -426
sistema, 518 -520
dois minutos de perfurar em, 538
chave problema, 761
problemas, base de dados, 761
Process Monitor (PMON), 386 -387
perfis, 527 -529
criar e atribuir, 528 -529
limites usando senha, 527 -528
dois minutos de perfurar em, 539
Programa Global Area (PGA), 21 , 375 , 596
gerenciamento de memória, 596 -598
PGA Advisor, 578
programas, Scheduler, 649
projeção
conceito de, 188 -189
subconsultas utilizados para, 345 -346
PDBs provisionamento, 891
pseudocolunas, 785 -786
Papel público, 524
sinônimos públicos, 113
Opção PURGE, 88 , 793
empurrar / puxar métodos de duplicação, 822

Q
consultas
ad hoc, 231
composto, 352 , 353 -361
flashback, 163 , 781 -791
limitantes linhas recuperadas por, 214 -225
lixeira, 797
repetido, 231
classificação linhas recuperadas por, 225 -229
desfazer retenção para, 162 -163
Veja também subqueries
filas
alerta, 581
comum, 448 -449
controlo, 554 -555
estado, 555
quiesce, 632 , 633
quotas, conta de usuário, 510 -511

R
Striping RAID / espelhamento, 44
comparação da faixa, 219
Parâmetro da taxa, 846
proporção método da CPU, 631
RAW tipo de dados, 81
legibilidade de instruções SQL, 208
leitura consistente de imagem, 155
somente leitura tablespaces
apoiando-se, 706
marcação de tabela como, 481 -482
Real Application Clusters (RAC), 40 , 160 , 377 , 583 , 911
RECO (Processo Recoverer), 392
RECUPERAR comando, 725
recuperação, 724 -753
CDB e APO, 940
completo, 724 , 725 -727
controlfile, 737 -738
cópia de imagem, 730 -736
incompleta, 724 , 727 -730
backup incremental, 730 -731

arquivo de senhas, 743


redo log grupo, 738 -742
restauração vs, 724
Comando RMAN para, 725
auto-teste on, 747 -753
spfile, 736 -737
tabela, 798 -799
tempfile, 743 -744
dois minutos de perfurar em, 744 -747
Ver também backup e recuperação; RMAN
catálogo de recuperação, 696 -699
configuração, 697
criando, 698
criação proprietário, 697
razões para a utilização, 696
sincronização, 698 -699
Recovery Manager. veja RMAN
objetivo de tempo de recuperação (RTO), 665
janela de recuperação, 693 -694
Escritor de recuperação (RVWR), 802 , 804
Parâmetro RECOVERY_PARALLELISM, 667
lixeira, 797 -798
caiu tabelas em, 88 , 795 , 797
recuperação de espaço, 798
ver objetos em, 795 , 797
Parâmetro RECYCLEBIN, 797
refazer geração, 147 , 148 , 150 , 159 , 161
Veja também desfazer de dados
redo log, 376
arquivos de log arquivados, 399 , 672 -673
exercício sobre a configuração, 674 -675
log tampão, 380 -381
arquivos de log on-line, 396 -397, 670 -671, 672
dois minutos de perfurar em, 678
redo log recuperação grupo, 738 -742
do grupo de log ativo perdido, 742
do grupo de log atual perdido, 742
do grupo de log INACTIVO perdido, 740 -742
de falhas membro, 739 -740
política de retenção de redundância, 694
integridade referencial, 194 -197

recursos registrando, 58 -59, 62


álgebra relacional, 188
gerenciamento de banco de dados relacional (RDBMS) standard, 375 , 376
paradigma relacional, 189 -204
modelagem de dados e, 190
esquemas de demonstração, 199 -204
entidades e relações em, 190 -194
chaves estrangeiras usadas em, 194 -197
hierárquica paradigma vs, 198 -199
normalização dos dados em, 192 -193
chaves primárias usadas em, 194
cenários do mundo real para, 189 -190
integridade referencial em, 194 -197
tabelas, linhas e colunas, 197 -199
usuários e esquemas no, 200
Relacional notação do esquema, 190
teoria relacional, 188
relacionamentos, 190 -194
sistemas remotos, 653 , 657
RENAME comando, 792 -793
renomear. Veja nomeando / renomeação
Comando falha do reparo, 769 , 770
consultas repetidas, 231
Função SUBSTITUIR, 248
repositórios
ADR, 756 -765
NOW, 574 -577
RMAN, 710 -711
palavras reservadas, 205
redimensionamento. Veja dimensionamento / redimensionamento
Resource Manager, 622 -643
método piscina sessão ativa, 632
Visão geral da arquitetura, 623 -626
restrições Autotask, 585
processo de configuração, 626 -628, 638 -639
grupos de consumidores, 623 -624
Método de alocação de CPU, 628 -631
controles de tempo de execução, 633 -634
exercícios sobre o uso, 636 , 637 -638
rescisão sessão ociosa, 634
monitorização, 637 -638, 639

utilização de vários usuários, 944 -949


necessidade de, 622 -623
limites de processamento paralelo, 633
planos para CDBs, 945 , 946 -948
Relação método de alocação de CPU, 631
planos de recursos, 625 -626, 628 -636, 639 , 653
Scheduler associado com, 647 , 651 , 653 -655
questões de auto-teste / respostas sobre, 639 -643
dois minutos de perfurar em, 638 -639
anular restrições de dados, 635 -636
planos de recursos
CDB, 945 , 946 -948
migração não-CDB, 949
APO, 948 -949
visualização, 948
Função de recurso, 524
Parâmetro RESOURCE_LIMITS, 626
Recursos
atribuição de vários usuários, 944 -949
A Oracle Reiniciar, 56 , 58 -59, 62
ferramenta para gerenciar, 622 -643
Os arquivos de resposta, 9
Reiniciar. Veja o Oracle Restart
restauração
CDB e APO, 940
controlfile, 737 -738
arquivo de senhas, 743
recuperação distinguido de, 724
Comando RMAN para, 725
spfile, 736 -737
Veja também a recuperação
RESTAURAR comando, 725
pontos de restauração, 727 -728
Modo restrito, 918
cache de resultados, 383
alocação de espaço resumable, 496 -497, 499
retenção
flashback, 803 -804
RMAN, 693 -694
desfazer, 162 -163
índices de chaves reversíveis, 97

revogar privilégios, 517 , 519 , 521


DIREITO EXTERIOR cláusula de junção, 326 -328
RMAN (Recovery Manager), 665 , 686 -722, 840 -847
duplicação da base de dados activa, 824 -825
capacidades avançadas, 696 -711
arquitetura, 686 -687
backups de arquivo, 706 -708
Comando BACKUP, 843 , 846 -847
conceitos de backup para usar, 686 -688
backups Backupset, 705 -706
recuperação de mídia de bloco, 766 -769
CDB e backups PDB, 938 -939
canais, 691 , 844 -845, 846
recuperação completa, 724 , 725 -727
opções de compactação, 710
restauração controlfile, 737
configurações padrão, 692 -693
conjuntos de backup em dúplex, 705
duplicação de backups, 826
backups criptografados, 834 -837
exercer sobre o uso, 695 -696
Área de Recuperação Rápida, 665 , 675 -676
Flashback Database e, 807
formato especificadores, 694 -695
imagem de recuperação exemplar, 730 -736
recuperação incompleta, 724 , 727 -730
backups incrementais, 701 -704, 730 -731
monitoramento de desempenho de, 841 -843
operações de multiplexação em, 845
apoios multisection, 708 -710
Oracle Secure Backup e, 838 -839
paralelização conjuntos de backup em, 844 -845
APO duplicação usando, 940 -941
configurações persistentes, 692 -695
fases em processo de cópia de segurança, 844
read-only backups de espaços de tabelas, 706
catálogo de recuperação, 696 -699
redo log recuperação grupo, 738 -742
verificação repositório, 710 -711
Restaurar e recuperar comandos, 725
política de retenção, 693 -694

questões de auto-teste / respostas sobre, 714 -722, 848 -851


restauração spfile, 736 -737
Scripts armazenados, 699 -701
sintaxe para utilizar, 688 -691
recuperação de tabela, 798 -799
recuperação tempfile, 743 -744
ajuste de desempenho de, 843 -847
dois minutos brocas, 711 -713, 847 -848
Ver também backup e recuperação
Rman RECUPERAR ... comando BLOCK, 767 , 768 -769
papéis, 522 -527
administração, 513
comum e local, 933 , 935 -936
criar e conceder, 522 -523, 526 -527
permitindo, 524 -525
predefinido, 524
dois minutos de perfurar em, 538
rolar para a frente, 666
dados de reversão, 154
segmentos de reversão, 473
ROLLBACK, 151 , 154 -155
recipiente raiz, 884 , 888 -889
scripts de raiz, 10
função ROUND
data, 253 -254
numérico, 249 -250
cache de linha, 383
linha de encadeamento, 491
ROW modo de bloqueio EXCLUSIVE, 167
linha ID, 785
migração de linha, 491
ROW modo de bloqueio SHARE, 167
ROWID tipo de dados, 83
rowids, 94 , 96
resultados em nível de linha, 293
linha limitativo cláusula, 227 -229
linhas
blocos afectados por, 475
encadeamento de, 491
compressão de, 491 , 492
limitação com base nas consultas, 214 -225

fechaduras utilizadas em, 165 , 167


migração de, 491
modelos relacionais e, 190 , 197 -199
a classificação com base em consultas, 225 -229
Função RPAD, 246
executado em tempo de ligação, 229

S
SAVEPOINT, 151
savepoints, transação, 151 , 152
subconsultas escalares, 342 , 348
valores escalares, 138 -139
Scheduler, 646 -660
arquitetura, 646 -647
exercícios sobre a utilização, 651 , 656
cadeias de emprego em, 652 , 657
criação, em trabalho, 647 -648
opções de login, 654 -655
objectos associados, 647
priorizando os trabalhos em, 653 -656, 657
programas usados na, 649
sistemas remotos e, 653 , 657
Resource Manager e, 647 , 651 , 653 -655
programações criadas em, 649 -650
empregos auto-suficientes em, 650
questões de auto-teste / respostas sobre, 658 -660
simplificando tarefas usando, 646 -651, 657
dois minutos de perfurar em, 657
Scheduler agente, 653
Papel SCHEDULER_ADMIN, 524
horários, 649 -650
esquema, 77 -78, 200 , 508
objetos de esquema, 78 -79
Palavra-chave SCOPE, 421
scripts
criação de banco de dados, 25 -30
transporte banco de dados, 821
atualização de banco de dados, 875
esquema de demonstração, 203 -204
atualização paralela, 875

RMAN armazenados, 699 -701


procurou expressão CASE, 271 -273
segunda forma normal (2NF), 192
segurança, 508 -544
auditoria para, 508 , 529 -538
autenticação para, 508 , 512 -515
autorização para, 508
criptografar backups para, 834 -837
Oracle Secure Backup, 838 -840
privilégios para, 517 -522
perfis de, 527 -529
papéis para, 522 -527
questões de auto-teste / respostas sobre, 539 -544
dois minutos de perfurar em, 538 -539
contas de usuário para, 508 -517
vistas para reforçar, 108
recipiente semente, 884 , 901 -902
Segment Advisor, 493 -494, 498 , 580 , 584
segmentos, 395 , 398 , 400 , 471 , 472 -474
gerenciamento automático de, 490 -491
criação diferido de, 488 -489
exercer sobre o gerenciamento, 489 -490
Segment Advisor para gerir, 493 -494, 498
encolher funcionalidade de, 494 -496, 498
gerenciamento de espaço para, 484 -485, 488 -491
Cláusula SELECT, 205 -206
SELECT FOR UPDATE
controle de transações usando, 151 -153
Espere e NOWAIT cláusulas de, 166
Instruções SELECT, 132 , 186 -189
substituição comercial para, 229 -234
capacidades de, 188 -189
expressões condicionais em, 265 -273, 274
executar, 204 -214
exercer sobre o uso, 208 -209
expressões e operadores, 209 -212
Cláusula FROM de, 205
GROUP BY e, 289 -290, 294
HAVING e, 294 -296
importância de, 186
índices auxiliando, 93

Inserção de comando e, 133 , 134


juntar várias tabelas usando, 304 -321
ORDEM BY e, 225 -227
legibilidade boas práticas, 208
linha limitativo cláusula de, 227 -229
regras de sintaxe, 206 -209
operadores de conjunto e, 342
subqueries e, 342
sintaxe de primitivo, 205 -206
transações usando, 146 -147
dois minutos de perfurar em, 234 -235
vistas como, 77 , 107 , 110
ONDE cláusula de, 214 -225
SELECT_CATALOG_ROLE, 524
selecção, de conceito, 188 -189
empregos independentes, 650
auto-junta, 304 , 321 -324
exercício de desempenho, 322 -324
Cadastre cláusula ON usado para, 321 -322
dois minutos de perfurar em, 334
auto-referência de chave estrangeira, 200
restrições de chave estrangeira de auto-referência, 103
auto-teste perguntas / respostas
em ASM e Grelha de infra-estrutura, 52 -54
em AWR e o sistema de alerta, 587 -590
em apoio com o RMAN, 714 -722
sobre os processos de backup e recuperação, 679 -684
em CDB e PDB criação / gestão, 921 -924, 955 -959
no banco de dados Assistente de Configuração, 33 -37
na segurança de banco de dados, 539 -544
em DDL e esquema objectos, 122 -130
em erros de diagnóstico, 773 -775
no DML e simultaneidade, 175 -184
em bancos de dados de duplicação, 829 -832
em tecnologias de flashback, 809 -814
em funções de grupo, 297 -302
sobre a instalação do Oracle software de banco de dados, 12 -14
em gerenciamento de instância, 435 -439
em mesas juntando, 335 -339
em dados migratórias, 863 -865
em dados móveis, 567 -571

em ambientes multitenant, 893 -894, 920 -924, 955 -959


na arquitetura de banco de dados Oracle, 404 -407
da configuração do Oracle Net, 463 -467
no Oracle Restart para componentes de gestão, 63 -64
no ajuste de desempenho, 615 -620
em bancos de dados conectáveis, 893 -894
na recuperação e de restauração, 747 -753
sobre o Gerenciador de recursos, 639 -643
em recuperar, restringindo, e classificação de dados, 236 -240
em operações RMAN, 714 -722, 747 -753, 848 -851
no Scheduler, 658 -660
nas funções de linha única e de conversão, 275 -278
sobre a gestão de espaço de armazenamento, 499 -505
em subconsultas e operadores previstos, 363 -370
em espaços de tabela transportáveis, 829 , 831
em software de banco de dados atualização, 863 -865
em atualizar bancos de dados Oracle, 878 -882
Veja também treinos de dois minutos
sequências, 115 -120
criando, 115 -116
Descrição da utilização, 117 -119
exercício sobre como trabalhar com, 119 -120
explicação de, 115
modificadora, 118 -119
opções para, 116 -117
chaves primárias e, 115
de dois minutos em perfurar, 122
processo do servidor, 445
backups gerenciados pelo servidor, 686
gerenciado pelo servidor de recuperação incompleta, 728 -729
servidores
administrativa, 838
base de dados, 17 , 377 -378
dedicado, 446 -447
compartilhado, 446 -452
stand-alone, 45 -51
acordos de nível de serviço (SLAs), 665 , 840
solicitações de serviço (SRS), 7
Serviços
criando para CDB ou PDBs, 910
registro dinâmico de, 446

Alta Disponibilidade, 40 , 50
sessões
activo, 632
Oracle Net, 443 -445
terminando ocioso, 634
AUTOCOMMIT SET ON comando, 153
Comando SET, 233
comparação conjunto, 219 -220
Comando DESCRIPTOGRAFIA SET, 837
Comando de encriptação SET, 837
operadores de conjunto, 352 -361
exemplos de complexos, 360 -361
consultas compostas e, 352 , 353 -361
exercer na descrição, 355 -356
princípios gerais de, 353 -355
Operador de intersecção, 353 , 358 -359
Operador MENOS, 353 , 359
auto-teste na, 363 -370
dois minutos de perfurar em, 362 -363
UNIÃO operador ALL, 352 , 355 , 356 -357, 358 , 361
UNIÃO operador, 352 , 357 -358
Procedimento SET_ATTRIBUTE, 654
Procedimento SET_THRESHOLD, 582
conjuntos e diagramas de Venn, 353 , 354
SGA. Veja System Global Area
SGA Advisor, 578 , 603
Parâmetro SGA_TARGET, 599 , 600
processos de sombra, 375
Modo de bloqueio SHARE, 167
COMPARTILHE ROW modo de bloqueio EXCLUSIVE, 167
bloqueios compartilhados, 165 -166, 167
piscina comum, 382 -384
cache de dicionário de dados, 383
cache de biblioteca, 382 -383
alocação de memória para, 598
mecanismo de cache de resultado, 383
dimensionamento, 384
servidor compartilhado, 446 -452
arquitetura, 447 -450
processo de configuração, 450
configuração padrão, 451 -452

quando usar, 450 -451


ações, 942 , 944 -945
shell script, 26
MOSTRAR TODOS comando, 692 , 693
Comando RECYCLEBIN SHOW, 795 , 797
Botão SQL SHOW, 477
PSIQUIATRA comando, 494
Comando Espacial encolher, 495
Comando SHUTDOWN, 428 -429, 430
SHUTDOWN IMMEDIATE, 916
instalação silenciosa, 9
expressão CASE simples, 271 , 272
visualizações simples, 110 -111
substituição e comercial único, 229 -230
bases de dados de ocorrência única
Arquitectura de, 374 -377
Grade de Infra-estrutura em, 40
funções de uma única linha, 243
subconsultas de uma única linha, 348 -349
operadores de comparação para, 348 , 349
exemplos de escrita, 351 -352
dimensionamento / redimensionamento
pools compartilhados, 384
tablespaces, 482 -483
undo tablespace, 157 -158
SKIP palavra-chave bloqueada, 166
SMON (Monitor System), 386 , 667
instantâneos, 390
tipo junção por mesclagem, 93
classificar os resultados da consulta, 225 -229
classificação crescente, 225 -226
tipo compósito, 227
descendente tipo, 226
ORDER BY cláusula de, 225 -227
tipo posicional, 226
linha limitativa para cláusula, 227 -229
dois minutos de perfurar em, 235
tabelas de origem, 305
gestão de espaço, 470
Sistema de alerta e, 581
falha de comando e, 144

ambiente multitenant, 926 -927


alocação de espaço resumable e, 496 -497
relacionada segmento, 484 -485, 488 -491
Veja também o armazenamento
restauração spfile, 736 -737
SQL (Structured Query Language), 17
SQL Access Advisor,
capacidades de, 579
612 ,-613
612 -614
DBMS_ADVISOR pacote e, 613 -614
dois minutos de perfurar em, 615
Assessores SQL, 579
SQL Developer, 73 -76
PDBs clonagem utilizando, 902 -904
ligações de base de dados, 75 -76
instalação e lançamento, 73 -74
interface de utilizador para, 74 -75
Arquivos SQL, 555
SQL * Loader, 133 , 546 , 548 -551
modo expresso, 550 -551
ambientes multitenant e, 565
visão geral sobre o uso, 548 -550
broca em, dois minutos 566 , 567
SQL * Plus 68 -73
criação de banco de dados recipiente, 898
ligações de base de dados, 71 -73
criação de diretório, 547
Flashback Database e, 806 -807
Flashback Drop and, 795 -796
Uso Linux de, 68 -70
sintaxe de login de, 412
renomeando tabelas com, 792
AUTOCOMMIT SET ON comando, 153
criação de tabelas, 478
Janelas uso de, 70 -71
trabalhar com, 410 -411
SQL cache do resultado da consulta, 383
SQL Repair Advisor, 580
instruções SQL
execução de transações, 146 -148
expressões e operadores, 209 -212
Valores nulos e, 212 -213

legibilidade boas práticas, 208


executar o SQL Tuning Advisor para, 611 -612
terminadores de instrução para, 207
regras de sintaxe governante, 206 -209
maiúscula vs minúsculas, 206 -207
vistas para simplificar, 108 -109
Ver declarações também específicos
SQL Tuning Advisor, 579 , 609 -612
Autotask corrida, 584 , 586
capacidades de, 610
Pacote DBMS_SQLTUNE e, 610 -611
exercício em execução, 611 -612
dois minutos de perfurar em, 615
arquivo sqlnet.ora, 452
utilitário srvctl, 41 , 58 -59
estatísticas antigas, 605
servidores autônomos, 45 -51
auditoria padrão, 530 -531, 534 -535
desvio padrão, 284 -285
banco de dadosestrela,
transformação standby, 666
344 -345
Comando de inicialização, 667
Comando de inicialização FORCE, 428
Comando NOMOUNT inicialização, 912 -913
processo de inicialização
automatizando PDB, 916 -917
CDB exemplo, 912 -913
exemplo da base de dados, 426 -428, 429 -430
Comando UPGRADE inicialização, 875
alertas com estado, 581 , 583
alertas apátridas, 581 , 583
falha de declaração, 664
terminadores de instrução, 207
estados, constrangimento, 105 -106
arquivos de parâmetros estáticos, 416 -417
parâmetros estáticos, 417 -419
Estatisticas
NOW, 492 , 574 -575
recolha manualmente, 607 -609
métricas vs, 593
objeto, 604 -605, 606 , 608

otimizador, 584 , 604 -609


PL / SQL e, 604
Parâmetro STATISTICS_LEVEL, 585
fila de estado, 555
função STDDEV, 284 -285
armazenamento, 470 -505
blocos utilizados na, 471 -472, 475
opções de compactação para, 491 -492
dicionário de dados e, 400 -401
exercícios sobre, 401 -402, 475 -476
extensões utilizados em, 472 , 474 -475, 483 -484
localização do arquivo de banco de dados, 21
estruturas lógicas para, 400 , 470
Modelo Oracle para, 470 -472
estruturas físicas para, 395 -399, 470
alocação de espaço resumable para, 496 -497
Segment Advisor para gerir, 493 -494
segmentos utilizados em, 471 , 472 -474, 484 -485, 488 -491
questões de auto-teste / respostas sobre, 499 -505
encolher funcionalidade de, 494 -496
de tabela utilizados em, 470 -471, 476 -487, 492 -493
broca de dois minutos sobre o gerenciamento, 497 -499
de rede de área de armazenamento de dispositivos (SAN), 43 , 44
Scripts armazenados, 699 -701
Streams, Oracle, 377
fluxos piscina, 384 -385, 598
particionamento, RAID 44
modelos de estrutura-e-de dados, 30
modelos só de estrutura, 30
subqueries, 342 -352
comparação, 343 -344
correlacionados, 349 -350
criação
APAGAR de comando
tabelas de,usando,
85 -86 140
Instruções DML e, 346
exercícios sobre como explorar, 343 , 347 , 350
EXISTE condição usado em, 352
resultados nulos em, 352
visão geral sobre o uso, 342 -343
problemas resolvidos com, 343 -347
projecções utilizando, 345 -346

escalar, 342 , 348


auto-teste na, 363 -370
simples e múltipla fileira, 348 -349, 351 -352
transformação estrela usando, 344 -345
tabelas geradas a partir de, 345
dois minutos de perfurar em, 362
Veja também consulta
variáveis de substituição, 229 -232
Veja também substituição com E comercial
Função SUBSTR, 248
Função soma, 282 -283
processos suspensos, 496
comando modificam
exercícios em trabalhar com, 732 -736
interruptor rápido para cópias de imagem através de, 732
sincronização do catálogo de recuperação, 698 -699
sinónimos, 112 -115
criando e soltando, 113 -114
exercício sobre como trabalhar com, 114 -115
público versus privado, 113
de dois minutos em perfurar, 122
sintaxe
ANSI SQL juntar, 309 -310
erros no DML, 144
A Oracle se juntar, 308 -309
RMAN, 688 -691
regras para instruções SQL, 206 -209
vista em relacionado, 111 -112
SYS esquema, 20 , 27 , 78 , 188 , 785
SYSAUX tabela, 28 , 400 , 476 , 575
Função SYSDATE, 251
conexões sysdba, 75
Privilégios SYSDBA, 411 -412, 426
Privilégios SYSOPER, 426
número de modificação do sistema (SCN), 781
Global Area Sistema (SGA), 21 , 374 , 596
Instância ASM, 42
estruturas de dados, 378 -379
gerenciamento de memória, 598 -600
estruturas de memória, 449 , 598
área pendente, 628

SGA Advisor, 578


identificador de sistema (SID), 20
Monitor do Sistema (SMON), 386 , 667
privilégios de sistema, 518 -520
requisitos do sistema, 6
SISTEMA esquema, 20 , 27 , 78
SISTEMA tabela, 17 , 21 , 28 , 476 , 510 , 889

T
alias de tabelas, 310
mesa de flashback, 783 -785
partições de tabela, 473
mesas, 84 -92
alterando definições para, 86 -87
compressão de base de, 491 , 492
especificações de coluna para, 84 -85
restrições para, 100 -107
criando simples, 84 -90, 120
soltando, 87 -88, 791 , 792 -793
exercer sobre a criação, 88 -90
externo, 552 -554
recapitulação para, 779 , 780 , 783 -785, 791 -798
gerando com subconsultas, 345
índices para, 92 -100
juntando, 304 -335
fechaduras utilizadas em, 165 -166
aninhados, 473
recuperação de cópias de segurança, 798 -799
restabeleçam a cair, 791 -798
modelos relacionais e, 190 , 197 -199
segmentos como estruturado-montão, 473
encolher operação para, 494 -496
Descrição estrutural de, 186 -188
criou-subconsulta, 85 -86
temporário, 90 -92, 121 , 929
truncando, 87
dois minutos de perfurar em, 120 -121
vistas para, 107 -115
de tabela, 400 , 476 -487
alterando, 479 -483

arquitetura, 926 -927


apoiando-se, 706
CDB recipiente raiz, 888
criando, 476 -478
padrão, 510 , 928
soltando, 483
exercícios sobre, 478 -479, 486 -487
exportação / importação, 557 -561
gestão de extensão, 483 -484
Flashback Data Archive, 799 -800
marcação como somente leitura, 481 -482
/ uso de espaço em gestão de monitoramento para, 492 -493
ambientes multitenant e, 926 -930
online e offline, 480 -481
Oracle Managed arquivos para, 485 -486
Modelo de armazenamento Oracle, 470 -471
banco de dados pluggable, 889
read-only, 481 -482, 706
renomear, 479 -480
redimensionamento, 482 -483
restaurando e recuperando, 726
gerenciamento de espaço de segmento, 484 -485
temporário, 511
transporte, 557 -560, 816 -819
dois minutos de perfurar em, 497 -498
undo, 635
backups de fita, 687 , 691
alvo
backup / recuperação, 686
duplicação de banco de dados, 822
tabela de junção, 305
tarefas
automatizado, 584 -586
postupgrade, 876
Scheduler para simplificar, 646 -651
Protocolo TCP, 455
Tablespace TEMP, 28 , 743 -744
recuperação tempfile, 743 -744, 747
modelos
criação de banco de dados, 19
design de banco de dados, 30 -31

dois tipos de, 30


tabelas temporárias, 90 -92, 121
tabela temporários, 511 , 929
segmentos de desfazer temporários, 159
Parâmetro TEMP_UNDO_ENABLED, 156
terminadores, declaração, 207
perguntas do teste / respostas. Veja perguntas de auto-teste / respostas
testar a conectividade, 457
substituição de texto, 232
a terceira forma normal (3NF), 188 , 192 , 593
limiares, alerta, 581 -583
Tempo
execução, 633 -634
ocioso, 634
modelos de formato componente de tempo, 262
Opção de tempo limite, 496
time-sharing algoritmo, 447
Tipo de dados timestamp, 82
TIMESTAMP WITH LOCAL tipo de dados TIMEZONE, 82
TIMESTAMP WITH TIMEZONE tipo de dados, 82
atualizações de dados fuso horário, 873
Conexões TNS, 75
TNS_ADMIN variável de ambiente, 454 -455
tnsnames.ora, 452
utilitário tnsping, 457
Função TO_CHAR, 258 -264
conversões data-to-character, 260 -264
conversões número de caracteres, 258 -260
Função TO_DATE, 264 -265
Função TO_NUMBER, 265
arquivos de rastreamento, 399
modo de desligamento transacional, 428
transações, 141 , 144 -154
ÁCIDO teste para, 145 -146
autocommit para, 153
COMMIT para, 149 -150
instruções de controle para, 149 -153
DELETE para, 148
distribuído, 392
executar instruções SQL para, 146 -148
exercício sobre como trabalhar com, 153 -154

depois retroceder para, 163 -164, 779 , 787 -790


INSERT para, 148
ROLLBACK para, 151 , 154 -155
Os pontos de salvaguarda usadas em, 151 , 152
SELECT FOR UPDATE de, 151 -153
Instrução SELECT para, 146 -147
início e fim de, 148 -149
dois minutos de perfurar em, 174
desfazer retenção e, 162
Declaração UPDATE para, 147 -148
criptografia transparente, 834 -836
Substrato transparente de rede (TNS) camada, 72
tablespaces transportáveis, 816 -819
requisitos de compatibilidade, 816 -817
processo de configuração, 816 -818
requisitos endian, 817 -818
processo de transporte, 818 -819
auto-teste perguntas / respostas sobre, 829 , 831
dois minutos de perfurar em, 827 -828
transportar
bases de dados, 565 , 820 -821
tablespaces, 557 -560, 818 -819
Função TRIM, 247
função TRUNC
data, 83 , 254
numérico, 250
TRUNCATE comando, 141 -142
TRUNCATE comando TABELA, 87
Performance Tuning. Veja o ajuste de desempenho
brocas de dois minutos
em ASM e Rede Infra-estrutura, 51
no apoio e recuperação, 678 -679
em CDB e PDB criação / gestão, 920 -921
na conversão e funções condicionais, 274
no banco de dados Assistente de Configuração, 33
na segurança de banco de dados, 538 -539
na DDL e de esquema objetos, 120 -122
no DML e simultaneidade, 173 -175
em tecnologias de flashback, 808 -809
sobre a instalação do software de banco de dados Oracle, 12
em gerenciamento de instância, 434 -435
em mesas juntando, 334 -335
em dados móveis, 565 -567
em ambientes multitenant, 892 -893, 920 -921, 951 -954
na arquitetura de banco de dados Oracle, 403 -404
da configuração do Oracle Net, 462 -463
no Oracle Restart para componentes de gestão, 62
no ajuste de desempenho, 614 -615
na recuperação e de restauração, 744 -747
sobre o Gerenciador de recursos, 638 -639
em recuperar, restringindo, e classificação de dados, 234 -236
em backups RMAN, 711 -713
no Scheduler, 657
sobre a gestão de espaço de armazenamento, 497 -499
em subconsultas e operadores estabelecidos, 362 -363
no transporte de espaços de tabelas e bases de dados, 827 -828
Veja também questões de auto-teste / respostas
de duas fases compromete, 392

o
instalação udev, 45
Comando UNDEFINE, 232 -233
Desfazer Advisor, 158 , 579
desfazer dados, 154 -164
a configuração de retenção de, 162 -163
LMG e geração de, 154 -155
condições de erro relacionadas com, 156
explicação sobre geradora, 154 -155
Flashback Query e, 163 , 790 -791
monitorização e de administração, 155 , 156 -161
parâmetros para o gerenciamento, 156 -157
refazer dados distinto dos, 161
restringir a geração de, 635 -636
segmentos de desfazer temporárias e, 159
dois minutos de perfurar em, 174
desfazer espaços de tabela e, 157 -158, 159 -161
desfazer piscina, 635 -636
desfazer retenção
configuração de, 162 -163
Flashback Query e, 163
desfazer segmentos, 145 , 146 , 147 , 155 , 159 , 473

desfazer tablespaces
criar e gerenciar, 159 -160
condições de erro relacionadas com, 156
exercício sobre como trabalhar com, 160 -161
gestão de recursos para, 635
dimensionamento e monitorização, 157 -158
Parâmetro UNDO_MANAGEMENT, 155 , 156 , 157
UNDO_RETENTION parâmetro, 156 , 157 , 162 , 163
UNDO_TABLESPACE parâmetro, 156 , 157 , 160
UNDOTBS1 tabela, 28
auditoria unificada, 533 -534
permitindo, 535 -536
exercer sobre o uso, 536 -538
migrando a, 875 -876
ambiente multitenant, 937 -938
políticas para, 533 , 535 -536, 537
extensões de tamanho uniforme, 483 -484
UNIÃO operador ALL, 352 , 355 , 356 -357, 358 , 361
UNIÃO operador, 352 , 357 -358
restrições exclusivas, 101
índices únicos, 97
chaves únicas, 190
Universal Markup Language (UML), 190
Comando UPDATE, 136 -139
exercício sobre a utilização, 139
migração de linha e, 491
operações usando, 147 -148
WHERE e, 136 -137, 138 , 139
software de banco de dados atualização, 856 -862
migração de dados e, 859
DBUA vs métodos manuais para, 858
determinar o número de lançamento, 856 -857
Oracle Universal Installer para, 857 -858
questões de auto-teste / respostas sobre, 863 -865
em passos de processo, 859 -860
dois minutos de perfurar em, 862
atualizar bancos de dados Oracle, 868 -882
Database Upgrade Assistant para, 871 -874
manualmente usando scripts e ferramentas, 874 -875
migração para auditoria unificada, 875 -876
Oracle Data Vault e, 868

Oracle Label Security e, 868


Oracle Warehouse Builder e, 869
tarefas postupgrade para, 876
preparando Oracle Home para, 870 -871
Pre-Upgrade ferramenta de informação para, 869 -870
questões de auto-teste / respostas sobre, 878 -882
exercício de simulação on, 876 -877
dois minutos de perfurar em, 877 -878
Função SUPERIOR, 244
declarações maiúscula SQL, 206 -207
contas de usuário, 5 , 508 -517
status da conta para, 512
atributos, 508 -509
métodos de autenticação para, 512 -515
criação de, 515 -516
espaços de tabela padrão para, 510
exercer na criação, 516 -517
quotas para, 510 -511
tabela temporários para, 511
dois minutos de perfurar em, 538
usernames para, 509
erros do usuário, 664
Usuários áreas globais (UGAS), 449 , 634
IDs de utilizador, 10
interface de usuário
Banco de dados Express, 415 -416
SQL Developer, 74 -75
falha no processo de usuário, 664
ferramentas de processo de usuário, 377
Usuário visualiza, 886
backups gerenciados pelo usuário, 686
usernames, 509 , 514
USER_OBJECTS vista, 77
Vista USER_RECYCLEBIN, 797
Comercial
comum, 930 -931, 934 -935
definição de, 77 , 508
local, 930-931
normal, 410
privilegiada, 410 , 412
esquemas e, 77 -78, 200

USUÁRIOS tabela
exercício em restaurar e recuperar, 726
recuperação incompleta para restaurar, 729 -730
Opção de comando para recuperar, 734 -736
Directiva UTILIZATION_LIMIT, 945 -946

V
V $ RECIPIENTES vista, 887 , 889 , 890
V $ vista DATABASE_BLOCK_CORRUPTION, 767 , 768
Visão V $ DIAG_INFO, 758
V vista $ INSTANCE, 432
V $ vista LOG, 739
Visão V $ pdbs, 889 , 890
V vista PROCESSO $, 646 , 841
V vista SESSÃO $, 169 , 841
Visão V $ SESSION_LONGOPS, 843
V $ SYSSTAT vista, 432
V vista $ TABLESPACE, 433
Visão V $ UNDOSTAT, 158
V $ vista VERSÃO, 856
auditoria baseada em valor, 532
VALORES palavra-chave, 134
VARCHAR2 tipo de dados, 81 , 83
variáveis
ambiente, 454 -455
substituição, 229 -232
determinação de desvio, 284 -285
Função de variância, 284 -285
vee dólar (V $) vistas, 432 -433
Diagramas de Venn, 353 , 354
VERIFICAR comando, 233 -234
versões flashback, 785 -787
vistas, 107 -115
alerta, 581
Data Recovery Advisor, 770
desempenho dinâmico, 432 -433, 841
exercício na criação, 112
Flashback Data Archive, 800
alocação de memória, 601
monitoramento de desempenho, 594

razões para a utilização, 108 -110


directiva plano de recursos, 948
Instruções SELECT e, 77 , 107 , 110
simples e complexa, 110 -111
SQL Tuning Advisor, 611
sintaxe para trabalhar com, 111 -112
memória virtual, 596

o
eventos de espera, 594
WHERE, 214 -225
operadores e booleanos, 222 -224
condições baseados em caracteres e, 215 -216
operadores de comparação e, 217 -222
condições com base em datas e, 216 -217
APAGAR comando e, 139
TENDO cláusula e, 293 -294
índices e, 92 -93, 95
condições baseada numéricos e, 215
regras de precedência para, 224 -225
restringindo resultados do grupo com, 293
Instrução SELECT e, 214 -217
subconsultas em, 342
Comando UPDATE e, 136 -137, 138 , 139
backups integrais, 688 , 690
caracteres universais, 220
grupos de janela, 653
janelas, Scheduler, 653 , 655 -656
Windows OS
criação do esquema de demonstração on, 204
a instalação da grade de Infra-estrutura em, 47 -48
instalar o Oracle Database em, 10 -11
lançando o DBCA on, 18
gestão da Oracle Restart em, 56 -57
SQL * Plus em, 70 -71
suporte para Oracle Database on, 4
repetições de cargas de trabalho, 949 -951

You might also like