Documente Academic
Documente Profesional
Documente Cultură
Introdução ao Oracle
Por onde começar? Um dos problemas em compreender um produto tão grande quanto a
base de dados Oracle é conseguir obter uma boa noção de como ele funciona sem se perder
nos detalhes. Este livro tem por objetivo fornecer uma base abrangente sobre os conceitos e
tecnologias que formam os fundamentos do Servidor de Base de Dados Oracle, atualmente
conhecido como Base de Dados Oracle 11g. O livro se destina a uma ampla faixa de pessoas,
administradores de bases de dados Oracle, desenvolvedores e usuários, servindo desde os
novatos até os mais experientes. Esperamos que, uma vez que você tenha uma compreensão
básica sobre o produto, seja capaz de ligar os pontos quando estiver usando o volumoso
conjunto de características e documentação do Oracle, bem como os muitos outros livros e
publicações que descrevem essa base de dados.
O Oracle também oferece um Servidor de Aplicativos, o Middleware* Fusion, ferramentas
de inteligência de negócios (business intelligence), e programas corporativos (o conjunto
de softwares E-Business, o PeopleSoft, o JD Edwards, Siebel, Hyperion, e o Project Fusion).
Uma vez que este livro se concentra na base de dados, vamos citar todos esses apenas quando
se relacionarem com tópicos expostos específicos do Oracle relativos a bases de dados.
O primeiro capítulo traça o mapa para o restante do livro. De todos os capítulos, é o que
concentra a maior variedade de tópicos. A maioria deles será discutida depois em maiores
detalhes, mas algumas das mais básicas - como por exemplo, a breve história do Oracle e o
conteúdo de diferentes implementações dos produtos dessa base de dados - serão mostrados
apenas aqui.
Nos últimos 30 anos, o Oracle cresceu de apenas um dos muitos produtos similares
desenvolvidos por diversas empresas que vendiam bases de dados até ser amplamente
reconhecido como o líder nesse mercado. Embora versões antigas fossem tipicamente
produtos de uma empresa iniciante, a qualidade e alcance cresceu tanto que suas capacidades
técnicas são atualmente vistas como as mais avançadas no ramo. Com cada versão da base
de dados lançada, o Oracle tem melhorado sua escalabilidade, funcionalidade e capacidade
de gerenciamento.
* (NT) middleware pode ser literalmente traduzido para “maquinário intermediário” e aqui é empregado para
indicar um sistema que é usado para criar e/ou executar outros sistemas.
( 1
Programação relacional é não-procedural e opera num conjunto de linhas de cada vez. Num
relacionamento mestre-detalhe (master-detail) entre tabelas, podem existir uma ou mais
linhas de detalhe para cada linha individual da tabela mestre, e ainda assim os comandos
usados para acessar, inserir ou modificar dados simplesmente descrevem o conjunto de
resultados. Em muitas bases de dados relacionais antigas, o acesso a dados exigia o uso de
linguagens procedurais que atuavam numa linha de cada vez. Graças a essa orientação para
conjuntos, programas podem acessar mais de uma linha numa base de dados relacional mais
facilmente. Essas bases podem ser usadas de forma mais produtiva para extrair valores de
grandes conjuntos de dados.
Os conteúdos das linhas na Figura 1-2 são algumas vezes chamados de registros. Uma coluna
dentro de uma linha é chamada de campo. Tabelas são armazenadas usando um esquema
de base de dados, que é uma unidade lógica de organização dentro de uma base de dados.
Outras estruturas lógicas dentro do esquema freqüentemente incluem o seguinte:
Visualizações (Views)
Permitem uma visualização única de dados derivados de uma ou mais tabelas ou outras
visualizações. São uma forma alternativa de acessar os dados, que são armazenados nas
tabelas subjacentes que compõem a visualização.
* (NT) Data Warehouse é literalmente “armazém de dados”. Refere-se a locais especializados em manter grandes
conjuntos de dados empresariais. A despeito de diferir um pouco do conceito de Centro de Dados (Data Center,
empresa terceirizada especializada em hospedagem de dados) no sentido de ser normalmente de propriedade
das próprias empresas e não terceirizada, a expressão pode ser traduzida também para Centro de Dados.
A Oracle geralmente lança novas versões da sua base principal a cada três ou quatro anos.
Novos lançamentos tipicamente são seguidos por temas e um número significativo de novas
características é introduzido. Em lançamentos recentes, esses temas são indicados no nome
da versão do produto. Em 1998, a Oracle anunciou o Oracle 8i, com o “i” adicionado para
indicar novas funcionalidades que davam suporte à distribuição via Internet. O Oracle 9i
continuou usando esse tema. Em 2003, a Base de Dados 10g foi lançada, com o “g” indicando
o foco da Oracle nos emergentes modelos de distribuição de computação de grade. Esse tema
foi continuado na versão atual da base de dados que é descrita neste livro. Entre duas grandes
versões, a Oracle faz lançamentos pontuais que também acrescentam novas características,
mas é comum que estas se concentrem em melhorias de funções pré-existentes.
Pode parecer que os termos “Oracle”, “Oracle 8”, “Oracle 8i”, “Oracle 9i”, “Base de Dados
Oracle 10g” e “Base de Dados Oracle 11g” sejam usados de forma mais ou menos equivalente
e indistinta neste livro porque a versão 11g inclui todas as características das anteriores.
Quando descrevermos uma função nova que tenha sido lançada numa versão específica,
vamos tentar apontar esse fato para evitar confusões, já que reconhecemos que muitas
pessoas mantêm versões antigas do Oracle. Normalmente usaremos o termo mais simples,
“Oracle”, para descrever características comuns a todas as versões.
O setor de desenvolvimento da Oracle cria as versões da base de dados usando um único
modelo de código fonte para a família principal de produtos desde 1983. Embora cada
implementação da base de dados tenha algum código fonte dedicado a certos sistemas
operacionais em níveis de programação muito baixos para conseguir funcionar melhor em
plataformas específicas, a interface que usuários, desenvolvedores e administradores usam
a cada versão é consistente. Já que o comportamento de características é o mesmo entre
plataformas no que se refere à adoção dessas diferentes implementações do Oracle, empresas
podem migrar aplicativos e bases de dados facilmente entre várias plataformas de hardware
e de sistemas operacionais. Essa estratégia de desenvolvimento também permite que a Oracle
se concentre em implementar novas características uma única vez para todos os produtos
em seu conjunto.
PL/SQL
Essa linguagem da Oracle, uma extensão procedural ao SQL, é muito usada para
implementar módulos de programação lógica para aplicativos. Ela pode ser usada para
criar procedimentos armazenados e gatilhos (triggers), controles em laço (looping controls),
consultas condicionais e tratamento de erros. Pode-se compilar e armazenar procedimentos
PL/SQL na base de dados. Pode-se também executar blocos PL/SQL usando o SQL*Plus,
uma ferramenta interativa incluída em todas as versões do Oracle. As unidades de programas
PL/SQL podem ser pré-compiladas.
Java
O Oracle 8i introduziu o uso de Java como linguagem procedural e uma máquina virtual
java (JVM, Java Virtual Machine) na base de dados (originalmente chamada JServer). A JVM
disponibiliza suporte para procedimentos armazenados, métodos e gatilhos em Java, para os
JavaBeans™ Empresariais (Enterprise JavaBeans™, EJBs) para o CORBA, o IIOP e o HTTP.
A inclusão de Java dentro da base permitiu que desenvolvedores dessa linguagem utilizassem
seus conhecimentos para criar aplicativos Oracle. Estes podem ser distribuídos nos clientes,
no Servidor de Aplicativos ou na base de dados, o que for mais apropriado. A base Oracle 11g
inclui um compilador Java JIT (just-in-time, literalmente “bem na hora”) ativado por padrão.
Discutiremos sucintamente alguns aspectos do desenvolvimento em Java no Capítulo 14.
Objetos Grandes
O interesse no uso de Objetos Grandes (LOB, Large OBjects) está crescendo, particularmente
para o armazenamento de tipos de dados não tradicionais, como por exemplo: imagens.
A base Oracle é capaz de armazenar objetos grandes já faz algum tempo. O Oracle 8
introduziu a capacidade de usar múltiplas colunas LOB numa mesma tabela. Já o Oracle 10g
essencialmente eliminou a limitação de tamanho para esses objetos. E a versão 11g melhorou
muito a performance de consultas e operações de inserção usadas com LOBs ao introduzir
os SecureFiles (arquivos seguros). Criptografia de dados transparente está disponível para
dados LOB em SecureFiles.
Acesso a Dados
Todas as versões do Oracle incluem drivers* para a base de dados que permitem que
aplicativos efetuem acesso usando ODBC (o padrão Open DataBase Connectivity, padrão
aberto de conectividade entre bases de dados) ou JDBC (o padrão também aberto Java
DataBase Connectivity) . Também disponíveis estão fornecedores (providers) de dados para
OLE DB e .NET.
* (NT) driver traduz-se literalmente por condutor, principalmente no sentido de condutor de veículo.
Multimídia Oracle
A Multimídia Oracle (antes chamada interMedia) permite manipulação de texto e adiciona
funções para imagens, áudio, vídeo e de localização na base de dados. As seguintes principais
funções ficam disponíveis:
• A porção de texto da Multimídia (Texto Oracle) pode identificar a essência de um
documento ao pesquisar por temas e frases chave dentro dele;
• A porção de imagem da Multimídia pode armazenar e recuperar imagens em vários
formatos. A partir da versão 11g, o tipo de imagem média DICOM foi incluído;
• As partes de áudio e vídeo da Multimídia podem armazenar e recuperar trechos desses
tipos de mídia;
• A porção de localização da Multimídia pode recuperar dados que incluem informações
sobre coordenadas espaciais.
XML DB
O Oracle adicionou suporte nativo para tipos de dados XML na base de dados 9i e
interoperação entre XML e SQL para pesquisa. O objeto XML estruturado é mantido
nativamente no armazenamento de objetos relacionais, o que atende os requisitos para a
DOM da W3C. A sintaxe do Xpath para pesquisar em SQL é baseada nas especificações do
grupo SQLX, e XQuery também é aceita.
Rede Oracle
A interface de rede do Oracle, Rede Oracle (Oracle Net), era anteriormente conhecida como
Net8 quando usada no Oracle 8, e SQL*Net quando usada no Oracle 7 e versões anteriores.
Pode-se utilizar a Rede Oracle sobre diversos protocolos de rede, embora TCP/IP seja de
Gerenciadores de Conexão
Clientes
Figura 1-3. Concentradores com Gerenciadores de Conexões para grande número de usuários
* (NT) Web traduz-se literalmente como “teia” e só tem o sentido de “rede” quando se refere à Internet.
Serviços Heterogêneos
Serviços Heterogêneos permitem que serviços e dados externos ao Oracle sejam acessados a
partir de uma base de dados Oracle usando formas de conectividade genéricas como ODBC
e OLE DB, que vêm incluídas no pacote.
Portais Opcionais Transparentes (Optional Transparent Gateways) usam agentes
especificamente criados para uma variedade de sistemas alvos. Eles permitem que usuários
executem comandos SQL do Oracle para fontes de bases de dados distribuídas que não
sejam da Oracle, fazendo com que eles sejam automaticamente traduzidos para o dialeto
SQL dos sistemas alvos, o que é transparente para o usuário. Os Serviços Heterogêneos
também funcionam de maneira similar ao prestar serviços relativos a transações utilizando a
efetivação de duas fases do Oracle para outras bases de dados e também serviços procedurais
que chamam rotinas em linguagens de terceira geração em sistemas que não sejam da Oracle.
Os usuários interagem com a base Oracle como se todos os objetos estivessem armazenados
nela, e os Serviços Heterogêneos permitem, para benefício desses usuários, interação
transparente com bases externas.
* (NT) data pump no original, literalmente “bomba de dados”, com “bomba” no sentido de aparelho mecânico
de bombeamento, ou “bombeador de dados”.
* (NT) a palavra stream significa literalmente “riacho”, mas é muito usada para indicar fluxos de dados.
** data staging é a técnica de usar máquinas para armazenar dados para outras de menor capacidade. Não tem
tradução direta mas pode ser traduzido como “criar apoios para dados”, “criar andaimes” ou talvez “escorar dados”.
• Escaneamento de tabelas;
• Laços aninhados;
• Ordenação de junções de dados;
• Agrupamento usando GROUP BY;
• Sub-consultas do tipo NOT IN (anti-junções);
• Funções definidas pelo usuário;
• Escaneamento de índices;
• Uso de select distinct UNION e UNION ALL;
• Junções de hash;
• Uso de ORDER BY e agrupamento;
• Junções de mapas de bits em consultas estrela (star query);
• Junções em nível de partição;
• Procedimentos armazenados (PL/SQL, Java e rotinas externas).
Além de consultas em paralelo, muitas outras características do Oracle apresentam
paralelismo. Operações em paralelo são melhor identificadas e descritas no Capítulo 7.
Visualizações Materializadas
Desde o Oracle 8i, visualizações materializadas (materialized views) são outra forma de
conseguir um aumento significativo de velocidade de consulta. Informação sumarizada
derivada de uma tabela de fatos e agrupada ao longo de valores de dimensão é mantida
como uma visualização materializada. Consultas que podem usar essa visualização são
redirecionadas para ela, de forma transparente para o usuário e para o SQL da consulta
inicial. A Oracle continuamente melhora o uso de otimização via visualizações materializadas
em cada versão da base de dados.
Funções Analíticas
Uma tendência crescente no Oracle e em outras bases de dados é a inclusão de funções
estatísticas e analíticas acessíveis via SQL. O Oracle primeiro apresentou tais capacidades
na versão 8i com as funções CUBE e ROLLUP. Hoje em dia, a funcionalidade disponível
também inclui funções de classificação, de agrupamento por janelas, de análise de resultado/
desempenho (lag and lead), de agrupamento de relatórios, de agrupamento estatístico,
regressão linear, estatística descritiva, correlação, tabulação cruzada (cross tabulation), teste
de hipótese, enquadramento em distribuições e análises Pareto.
Opção OLAP
A Opção OLAP fisicamente armazena cubos cientes de dimensão na base de dados relacional
Oracle. Esses cubos são mais freqüentemente acessados usando SQL, embora uma API Java
Gerenciador de Recuperação
Opções típicas de cópias de segurança incluem copiar a base inteira (a operação mais
comum), cópias de espaços de tabelas, de arquivos de dados, de arquivos de controle e de
arquivos de log. O Oracle 8 introduziu o Gerenciador de Recuperação (RMAN, Recovery
MANager) para cópias de segurança e recuperação de bases de dados baseadas em servidores,
deixando um Catálogo de Recuperação (Recovery Catalog) armazenado na base. O RMAN
pode automaticamente localizar, copiar, recuperar dados e restaurar arquivos de dados, de
controle e de logs de repetição (redo logs). Desde o Oracle 9i, o RMAN pode reiniciar cópias
de segurança e implementar políticas de janelas de recuperação quando as cópias expiram.
O Gerenciador Empresarial providencia uma interface gráfica para o RMAN. Na versão 10g
foi melhorado o agendador de tarefas do EM que pode ser usado em conjunto com o RMAN
para gerenciar cópias de segurança automáticas para o disco.
Opção de Particionamento
A Oracle introduziu o particionamento como opção no Oracle 8 para providenciar um alto
grau de capacidade de gerenciamento e disponibilidade. Pode-se deixar partições específicas
desativadas para manutenção enquanto outras permanecem ativas para acesso pelos usuários.
Em implementações de centros de dados, particionamento é algumas vezes usado para
implementar janelas móveis baseadas em faixas de datas. Outros tipos de particionamento
incluem particionamento de hash (usado para dividir dados em partições usando uma função
de hash e providenciando uma divisão balanceada de dados) e particionamento de listas
(permitindo particionamento de dados baseado em valores discretos como determinante de
geografia). Começando com o Oracle 11g, intervalos de particionamento podem também
ser usados para automaticamente criar novas faixas fixas conforme elas forem se tornando
necessárias durante inserções de dados.
Muitos desses tipos de particionamento podem ser usados em combinação em partições
“compostas”. Exemplos na versão 11g incluem faixa-faixa, faixa-hash, faixa-lista, lista-faixa,
lista-hash e lista-lista.
Guarda de Dados
A Oracle primeiro introduziu uma característica de cópia de salva-guarda no Oracle 7.3. A
base de dados de salva-guarda (standby database, literalmente “base de dados em espera”)
é uma cópia da base de produção que pode ser usada se a base de dados primária for
perdida - por exemplo, caso o servidor primário falhe ou durante manutenção de rotina.
Bases primárias e de salva-guarda podem estar separadas geograficamente. A base de dados
de salva-guarda é criada a partir de uma cópia da de produção e é atualizada através do
aplicativo de arquivamento de logs de repetição também gerados pela cópia de produção. A
Guarda de Dados (Data Guard) primeiro introduzida no Oracle 9i automatiza completamente
esse processo. Antes dela, era preciso copiar e aplicar os logs manualmente. Agentes são
distribuídos tanto na base de produção quanto na de salva-guarda, e um Coordenador de
Recuperação de Falhas
A característica de Recuperação de Falhas (Fail Safe) dá um alto grau de confiabilidade para
uma base de dados Oracle. A recuperação é implementada através de um segundo sistema
ou nó que permite acesso aos dados contidos num disco compartilhado quando o primeiro
sistema ou nó falha. A Recuperação de Falhas Oracle para Windows, em combinação com o
Sistema de Agrupamentos Microsoft (Microsoft Cluster Services), constituem uma solução para
a ocorrência de problemas no evento de uma falha de sistema.
A Recuperação de Falhas é principalmente uma ferramenta para recuperação de desastres, então
o sistema é desativado como parte de uma operação de recuperação. A solução recomendada para
disponibilidade de servidor, desde o Oracle 9i, é o Agrupamento Real de Aplicativos.
Designer Oracle
O Oracle Designer fornece uma interface gráfica para Desenvolvimento Rápido de Aplicativos
(RAD, Rapid Application Development) para todo o processo de desenvolvimento de bases
de dados - desde criar o modelo de negócios até projetar, gerar e distribuir o esquema da base
de dados. Projetos e alterações são mantidos num repositório multiusuário. Essa ferramenta
pode fazer engenharia reversa em tabelas e esquemas de bases de dados existentes para
reutilização e re-projeto com bases da Oracle e de outras empresas.
O Designer também inclui geradores para criar aplicativos para o Desenvolvedor Oracle,
clientes HTML que usam o Servidor de Aplicativos, e em C++. O Designer pode gerar
aplicativos ou fazer engenharia reversa em programas existentes ou outros que tenham sido
alterados por desenvolvedores. Essa capacidade permite um processo chamado engenharia
em ciclos (round-trip engineering), no qual um desenvolvedor gera um aplicativo, modifica-o,
e então faz a engenharia reversa dessas alterações e as armazena no repositório do Designer.
Portal Oracle
O Portal Oracle, introduzido como WebDB em 1999, é uma ferramenta baseada em HTML
para desenvolver aplicativos que se aproveitam da Internet e para páginas de Internet baseadas
em conteúdo. Sistemas de aplicativos Portal são desenvolvidos e distribuídos num ambiente
simples de navegador. O Portal inclui assistentes para desenvolver componentes de aplicativos
incorporando “servlets” e acesso a outros sites HTTP. O Portal pode ser programado para ser
personalizável pelos usuários e é distribuído como camada intermediária do Servidor de
Aplicativos Oracle.
O Portal Oracle teve um grande avanço com relação ao WebDB: a capacidade de criar e usar
portlets, que permitem que uma página de Internet em particular seja dividida em diferentes
áreas que podem mostrar informações e interagir com o usuário independentemente. Por
exemplo, as Respostas Oracle, o Descobridor, e os Relatórios podem ser acessados como
portlets.
TimesTen Oracle
O TimesTen (literalmente “vezes dez”) da Oracle é uma base de dados relacional que é
armazenada na memória física e é tipicamente usada quando cargas de trabalho muito
altas de processamento de transações de alta performance são necessárias. Acesso para a
base de dados TimesTen é possível via SQL, JDBC, JMS e ODBC. Essas bases podem ser
distribuídas como exclusivas ou compartilhadas e podem ser criadas como permanentes ou
temporárias.
A base é atualizada recolhendo dados usando as bibliotecas TimesTen distribuídas em
aplicativos ou através do uso de uma opção de Conexão de Cache a uma base de dados
Oracle. Porque os dados são lidos e atualizados na memória, o tempo de resposta médio
de atualização ou leitura é tipicamente medido em milionésimos de segundo. A opção de
Conexão de Cache suporta cache tanto de leitura quanto de escrita para dados das bases
Oracle. As atualizações podem ser bidirecionais entre o TimesTen e o Oracle.
Como é comum para bases de dados embutidas, o TimesTen exige quase nenhuma
administração à medida que executa. Replicação é possível entre uma base TimesTen e outra
através de uma opção e ela é feita, por padrão, de forma assíncrona.
BD Berkeley da Oracle
O Berkeley DB da Oracle é uma base de dados embutida extremamente pequena que permite
travamento de dados em nível de registro. Ela vem em versões Java e XML. É projetada para
ser distribuída com e executar no mesmo processo que um aplicativo. Quando essa base é
distribuída dessa forma, nenhuma administração de base de dados em separado é necessária.
O tamanho dessa base quando vazia pode ser tão pequeno quanto 400KB.
A edição Java da base suporta a API de Transações Java (JTA, Java Transaction API), a
Arquitetura de Conexão J2EE (JCA, J2EE Connection Architecture), e as Extensões de
Gerenciamento Java (JMX, Java Management eXtensions). A base de dados é um único
arquivo JAR que tem 820KB e executa na mesma Máquina Virtual Java que o aplicativo.
Uma Camada de Persistência Direta (DPL, Direct Persistence Layer) é suportada para acessar
objetos Java.
Oracle Lite
O Oracle Lite (Oracle Leve) é um conjunto de produtos que permite o uso em dispositivos
portáteis de aplicativos centrados em bases de dados. Componentes chave do Oracle Lite
incluem a Base de Dados Oracle Lite, o Kit de Desenvolvimento Portátil (Mobile Development
Kit) e o Servidor Portátil (uma extensão do Servidor de Aplicativos).
A base de dados Oracle Lite tem de 50KB a 1MB dependendo da plataforma. Aplicativos
escritos usando SQL Portátil (Mobile SQL), C++ e Java podem ser usadas com essa base.
ODBC também é suportado. O suporte a Java inclui procedimentos armazenados Java e JDBC.
A base Lite é também projetada para ser auto-ajustável e auto-administrável e é suportada em
dispositivos portáteis que executem Windows CE, Symbian, Windows e Linux.
Num uso típico do Oracle Lite, o usuário vai conectar seu dispositivo portátil executando
a base Lite num servidor de base de dados Oracle muito maior. Os dados são então
automaticamente sincronizados entre os dois sistemas. O usuário então encerrará a conexão
e trabalhará desconectado. Depois de ter efetuado suas tarefas, ele vai conectar e sincronizar
novamente os dados com o servidor da base maior.
O Oracle Lite suporta uma variedade de capacidades de sincronização, incluindo as
seguintes:
• Sincronização bidirecional entre o dispositivo portátil e as bases de dados maiores;
• Modelos baseados em Publicação/Inscrição;
Suporte para protocolos como TCP/IP, HTTP, CDPD, 802.1 e HotSync.
Pode-se definir replicação baseada em prioridades para subconjuntos de dados. Porque dados
distribuídos em vários locais podem levar a conflitos - como por exemplo, quando um local
tem a versão “correta” dos dados – a resolução automática de conflitos foi disponibilizada.
Pode-se também personalizar isso.
O Servidor Portátil serve como plataforma única para publicar, distribuir, sincronizar e
gerenciar os aplicativos de dispositivos portáteis. O centro de controle baseado na Internet
pode ser usado para controlar o acesso para aplicativos de dispositivos portáteis. O antigo
produto “Web-to-Go” (algo como “rede para viagem”) da Oracle faz também parte do Servidor
Portátil e serve como uma forma centralizada baseada em assistentes de desenvolvimento e
distribuição de aplicativos.