O Oracle Database 10g representa um grande avanço na tecnologia de banco de dados: introduz novos recursos de gerenciamento automático e automatiza tarefas como alocação de memória das instâncias de banco de dados, gerenciamento de dispositivos de armazenamento das bases de dados, coleta de estatísticas para otimização de performance etc. Além disso, oferece suporte à tecnologia de computação em grid, o que permite a implantação de sistemas corporativos de bancos de dados em Grids empresariais. Este artigo descreve os principais recursos e avanços presentes nessa versão do Oracle.

Computação em Grid

A tecnologia de computação em grid (grid computing) amplia o conceito de compartilhamento de recursos computacionais interligados por redes até o ponto em que tanto os processadores quanto os dispositivos de armazenamento possam ser utilizados de forma distribuída. Em uma estrutura de grid, vários grupos de usuários localizados em diferentes organizações podem realizar tarefas computacionais que requeiram grande capacidade de processamento ou de armazenamento, com base no conjunto total de recursos disponível no grid.

Desde que esse conceito foi proposto, na década de 90, vários projetos vêm sendo realizados com tecnologia de computação em grid. Um projeto que demonstra o potencial da tecnologia de grid é o SETI@home. Nesse projeto, um “supercomputador virtual” analisa os dados provenientes do telescópio Arecibo, em Porto Rico, em busca de sinais de inteligência extraterrestre. Usando a Internet, o projeto reúne o poder de processamento de mais de 3 milhões de PCs em todo o mundo, os quais formam os nós do grid. Em cada nó do grid, um programa busca dados do sistema central via Internet, efetua o processamento e envia os resultados de volta.

Em uma estrutura computacional convencional, um servidor ou cluster de servidores hospeda um conjunto de sistemas específicos. A infra-estrutura de TI forma “ilhas de processamento”. Em um dado momento, é possível ter alguns servidores ociosos e outros sobrecarregados, e não é viável realocar os recursos dinamicamente para melhor atender às demandas. A tecnologia de computação em grid evita a formação de “ilhas de processamento” e permite alocar os recursos de modo a aproveitar ao máximo a infra-estrutura computacional.

A idéia básica da computação em grid é a computação como uma utilidade sempre disponível, em qualquer ponto, na medida da demanda e com segurança. Do ponto de vista do usuário do grid, não importa onde estejam os dados e qual servidor (ou servidores) atende às suas requisições, e sim ter sua demanda atendida a tempo. Por outro lado, do ponto de vista dos profissionais de TI, o conceito de computação em grid se traduz em virtualização e aprovisionamento de recursos computacionais. A virtualização consiste em estabelecer abstrações que representem os recursos, de modo a permitir a sua utilização de forma flexível. O aprovisionamento consiste na capacidade de gerenciar e disponibilizar os recursos dinamicamente, com segurança, para atender aos requisitos das demandas de forma coordenada. Juntos, a virtualização e o aprovisionamento conferem ao grid computing o potencial de melhor aproveitamento dos recursos computacionais. Com a virtualização, você pode, por exemplo, agrupar dispositivos de storage compartilhados e definir um volume lógico. Em seguida, você pode remanejar os discos e manter a abstração do volume lógico de modo que os sistemas e bancos de dados continuem a funcionar. A virtualização também se aplica aos servidores: é possível definir os grupos que operam em cluster e remanejar os nós servidores dinamicamente de um grupo para o outro para atender à variação de demanda.

Atualmente, a computação em Grid atrai a atenção do meio empresarial e de profissionais de TI por constituir uma tecnologia que deverá trazer importantes benefícios: estender ainda mais a disponibilidade dos recursos computacionais e, conseqüentemente, permitir que esses recursos sejam compartilhados de forma mais dinâmica, tudo isso associado a custos relativamente baixos.

Grid Corporativo

Embora os primeiros grids tenham utilizado recursos computacionais de várias instituições na Internet com plataformas heterogêneas (de grandes computadores a PCs), a tendência no meio empresarial é criar a própria infra-estrutura de grid. Da mesma forma que os conceitos de Internet foram incorporados nas empresas com as intranets, as empresas podem trazer os conceitos do grid e incorporá-los na forma de um grid corporativo, ou grid empresarial (enterprise grid).

A estrutura que mais tem atraído a atenção das empresas consiste na utilização de grupamentos de nós de servidores em rede, organizados em clusters, interligados a grupos de dispositivos de storage compartilhados. Atualmente, o ideal de infra-estrutura de grid corporativo, considerado um padrão de indústria, consiste em:

  • Clusters de “blade servers”, configurados com até 4 CPUs por blade server;
  • Dispositivos de storage compartilhados, usando tecnologia NAS (Network Attached Storage) e possivelmente uma SAN (Storage Area Network);
  • Interconexões de alta velocidade ligando os nós servidores e os grupos de storage, usando Gigabit Ethernet ou Infiniband entre os servidores e Gigabit Ethernet, Fibre Channel ou Infiniband entre os servidores e o storage compartilhado.

Blade server – servidor construído de forma compacta, geralmente em apenas uma placa, para montagem em bastidor (rack); inclui processadores, memória, interface de rede e mínimo de disco rígido. A fonte de alimentação e a ventilação são providas pelo bastidor.

NAS, Network Attached Storage – dispositivo de armazenamento compartilhado que se liga direto a uma rede IP; contém unidades de disco de grande capacidade, podendo atingir a Terabytes, e um sistema otimizado para o seu gerenciamento; pode ser compartilhado por servidores que operam com sistemas operacionais heterogêneos; inclui funcionalidades de proteção de dados e tolerância a falhas.

SAN, Storage Area Network – rede específica para interligação de grupos de dispositivos de armazenamento e servidores; permite que os dispositivos de armazenamento sejam interconectados entre si e compartilhados entre os servidores.

A tecnologia Oracle 10g voltada para computação em Grid

O Oracle Database 10g foi projetado para operar em plataformas que variam de pequenos servidores, servidores SMP, a clusters de servidores e Grids empresariais (possibilitando a utilização de benefícios da computação em Grid com bancos de dados que operam em um grid corporativo, como o descrito no tópico anterior). Para que isso seja viável, o Oracle 10g introduz novos recursos e customizações, que serão analisados a seguir.

1 - Nova infra-estrutura de gerenciamento automático

O Oracle 10g contém uma nova infra-estrutura específica para o gerenciamento automático do database, que facilitará o trabalho de administração, implementando processos, monitores, “advisors”, gerenciadores de memória e unidades de armazenamento, apresentados a seguir.

MMON e AWR

A estrutura do servidor Oracle 10g inclui um novo processo background denominado MMON, que é responsável pela execução de várias tarefas de gerenciamento automático, tais como captura de estatísticas coletadas pelo kernel do servidor Oracle e armazenamento em um novo repositório (denominado AWR (Automatic Workload Repository) com o intuito de detectar problemas potenciais e gerar alertas para o DBA.

O AWR mantém o registro histórico dos dados coletados, o que permite ao DBA analisar os problemas ocorridos nos momentos em que ele não estava monitorando o database. Esse registro pode ser utilizado pelo próprio servidor Oracle para tomar decisões de gerenciamento automático.

ADDM

Um aspecto revolucionário do Oracle 10g é a capacidade de o banco de dados diagnosticar seus próprios problemas de performance. O Oracle 10g inclui um motor de diagnósticos chamado ADDM - Automatic Database Diagnostic Monitor, que monitora, através das informações armazenadas no AWR, o estado do database em intervalos de tempo configuráveis (30 minutos por default). Ele analisa as informações e fornece um diagnóstico periódico de performance do banco de dados, agindo de maneira pró-ativa e fornecendo uma relação detalhada dos problemas identificados e suas possíveis soluções. Além disso, o ADDM indica o impacto que cada problema está causando na performance geral do database e o benefício a ser obtido com a solução do problema.

Advisors

Advisors são componentes do servidor que analisam o funcionamento de um subsistema em particular, tal como memória ou comandos SQL, e recomendam maneiras de otimizá-lo. O Oracle 10g dispõe dos seguintes advisors:

  • SQL Tuning Advisor e o SQL Access Advisor – geram recomendações de otimização de comandos SQL;
  • Memory Advisor – gera recomendações de dimensionamento de vários componentes de memória;
  • Segment Advisor – trata as questões relacionadas ao espaço de segmentos, tais como recomendações de recuperação de espaços desperdiçados, dimensionamento de volume para novas tabelas e índices, análise de tendências de crescimento de volume;
  • Undo Advisor – permite definir o espaço da tablespace de undo.

ASMM

Outra característica importante de gerenciamento automático do Oracle 10g é o ASMM (Automatic Shared Memory Management), que gerencia automaticamente o dimensionamento e a alocação dinâmicos dos componentes da SGA (System Global Área): database buffer cache, shared pool, Java pool e large pool. Com essa funcionalidade, a memória alocada aos componentes da SGA é automaticamente ajustada para atender à demanda do processamento, de modo a otimizar a performance e evitar erros resultantes da variação da carga de trabalho. Com isso, não é necessário dimensionar cada componente da SGA de acordo com o pico de carga de cada processamento.

ASM

O ASM (Automatic Storage Management) faz o gerenciamento de filesystems (sistemas de arquivos) e de volumes, o que resulta em menos trabalho para o DBA aprovisionar (planejar, alocar, gerenciar e ajustar) o armazenamento do database em centenas ou milhares de discos, na adição e remoção de discos, administrando um grupo de discos ou de volumes como uma única unidade lógica. Como características podemos destacar:

  1. Distribuição dos arquivos por todo o espaço disponível com o intuito de melhorar a performance, com balanceamento de I/O automático durante a adição ou retirada de discos.
  2. Espelhamento dos arquivos para proteção contra perda de dados. Por default, o espelhamento fica habilitado e é possível também se optar pelo espelhamento triplo (inclusive pelo espelhamento no nível de arquivos do banco de dados, em vez de no nível de disco inteiro.
  3. Possibilidade de habilitar o HARD (Hardware Assisted Resilient Data) sem precisar usar raw disks devices. O HARD protege contra corrupções de dados. O HARD foi disponibilizado pela primeira vez no Oracle9i, mas foi estendido no Oracle10g. A validação é mais completa e todos os tipos de arquivos e blocos são protegidos pelo HARD, incluindo arquivos do database, redo logs online, archive logs e backups.

2 - Facilidades para aprovisionamento de recursos computacionais

Em um grid, o aprovisionamento de recursos computacionais constitui uma das mais importantes funcionalidades. Ele permite alocar recursos de forma dinâmica de modo a atender às prioridades do negócio. O Oracle 10g provê várias funcionalidades que contribuem para o aprovisionamento de recursos computacionais, tais como:

RAC

O Oracle RAC (Real Application Cluster) consiste em um database com uma arquitetura de cache compartilhada que roda em um grupo de servidores interligados em um cluster com dispositivo de armazenamento (storage) compartilhado. Se um nó do cluster falha, o banco de dados Oracle continua rodando em outros nós. Esse recurso faz com que o acesso ao banco de dados seja transparente para as aplicações clientes, independentemente de como ele esteja distribuído e armazenado.

Portabilidade de Cluster (Oracle Portable Clusterware)

Oracle Portable Clusterware é uma aplicação que permite criar e gerenciar clusters do banco de dados em plataformas heterogêneas. Antes, para executar o Oracle RAC em diferentes plataformas (UNIX, Linux, Windows) era necessário ter um conhecimento altamente técnico e detalhado do software de clusterização de cada plataforma. O Oracle RAC 10g inclui todo o software de clusterização necessário para instalar, configurar e executar facilmente os clusters em todas as plataformas suportadas.

Resonance

Você define um cluster e pode rodar vários databases no mesmo cluster, especificando as políticas de serviço para os databases. A funcionalidade de Resonance aumenta ou diminui a quantidade de servidores que atendem a cada database em execução no cluster, de modo a atender aos níveis de serviço desejados. Tudo isso automaticamente, sem necessidade de intervenção do DBA.

Scheduler

O Oracle Database 10g também introduz o Oracle Scheduler, que dispõe de muitas capacidades para planejar e executar tarefas programadas (chamadas jobs) num grid. Essas tarefas podem ser procedures Java e PL/SQL, blocos PL/SQL, Shell scripts e programas executáveis. Ele permite também alocar de maneira apropriada os recursos escassos de computação entre os jobs concorrentes, organizando o processamento de jobs de acordo com as políticas de serviço. É possível agrupar jobs em classes de Job para simplificar seu gerenciamento e priorização. Com o Oracle Resource Manager, você pode definir o plano de utilização de recursos e atribuir as classes de jobs. Para um controle mais fino, pode-se variar a priorização entre as classes de Job de acordo com horários definidos em um agendamento (schedule).

Resource Manager

O Resource Manager aprovisiona recursos para usuários, aplicações ou serviços dentro do banco de dados Oracle. O DBA pode definir planos que alocam recursos para vários grupos de consumidores (conjunto de um ou mais usuários do banco) com base em critérios de utilização de recursos, tais como utilização de CPU ou número de sessões ativas, de modo a possibilitar o mapeamento adicional para grupos de consumidores de acordo com a máquina do usuário, aplicação, usuário do sistema operacional ou serviço.

3 - Facilidades para aprovisionamento de dados

O aprovisionamento de dados consiste em disponibilizar a informação aos usuários no momento em que ela é necessária, independentemente de onde o dado reside no grid. O Oracle Database 10g tem funcionalidades como o Oracle Transportable Tablespace e o Oracle Streams que facilitam o compartilhamento de dados entre diferentes databases.

Suporte a bancos Ultra Large

Com o crescimento dos discos e o suporte a grandes arquivos (de tamanhos maiores que 2GB) disponível nos sistemas operacionais de 64 bits, o Oracle 10g dispõe de uma nova característica chamada bigfile tablespaces. O limite no UltraLarge database foi elevado ao tamanho gigantesco de 8 exabytes (embora isto teoricamente dependa do SO e do tamanho do bloco de dados Oracle).

Oracle Transportable Tablespace

O Oracle 10g suporta tablespaces transportáveis entre plataformas heterogêneas, permitindo que um grande montante de dados de uma tablespace seja desligado de um banco em uma plataforma e religado a um banco Oracle 10g em uma plataforma diferente.

Oracle Streams

Oracle Streams é uma solução aberta de compartilhamento e replicação de informações entre sistemas homogêneos (Oracle e Oracle) e heterogêneos (Oracle e não-Oracle). Esse compartilhamento de informações inclui captura e gerenciamento de eventos e propagação desses eventos para um ou vários bancos de dados e aplicações. O Oracle Streams disponibiliza eventos nos quais se pode incluir alterações feitas por meio de linguagens DML e DDL. Esses dados alterados podem ser aplicados diretamente a um banco réplica ou pode “chamar” uma procedure definida pelo usuário para executar um trabalho alternativo no banco de destino.

Os bancos que utilizam essa tecnologia podem possuir estruturas de dados diferentes e transformar seus dados durante a propagação para o destino ou durante a aplicação no destino. Os bancos de origem e destino ficam totalmente disponíveis para leitura e gravação aos usuários finais durante as atividades de replicação. Podem ocorrer conflitos na atualização quando os usuários estiverem atualizando o mesmo dado ao mesmo tempo em diferentes bancos. A Oracle dispõe de rotinas de resolução de conflitos, assim como “o último timestamp” ou “overwrite”, para resolver automaticamente conflitos potenciais. É possível escolher entre diferentes métodos de resolução para diferentes tabelas. Além disso, os usuários podem criar suas próprias rotinas para empregar regras de resolução toleradas para um negócio em particular. Qualquer conflito não resolvido será logado no banco de dados para tratamento especial ou para ser reexecutado após a resolução manual do conflito.

DataPump

Data Pump é uma nova facilidade que permite a carga e descarga de dados e metadados entre bases de dados Oracle. O DataPump automaticamente gerencia e programa “streams” paralelas de carga ou descarga para maximizar o throughput.

A infra-estrutura Data Pump é chamada através de um pacote PL/SQL – DBMS_DATAPUMP, permitindo a incorporação do DataPump em utilitários. O Oracle 10g contém 3 desses utilitários com as funcionalidades do DataPump:

  • Novos comandos de linha para export e import (expdp e impdp);
  • Uma interface baseada em Web no Enterprise Manager para o export e import;
  • Uma interface baseada em Web no Enterprise Manager para o export e import;

O Data Pump é a base para várias outras características chaves no servidor Oracle: replicação baseada em Streams, Standby Lógico e Tablespaces Transportáveis. O Data Pump está disponível em todas as configurações do Oracle 10g e, na versão Enterprise Edition, oferece uma série de recursos adicionais.

No caso de exportação de dados, um único processo de execução (thread) do Data Pump em modo direto é duas vezes mais rápido que um export original, e 15 a 45 vezes mais rápido que um import original, além de permitir a execução de processos em paralelo (threads). A performance para export/import de metadados com DataPump é a mesma que a dos utilitários exp/imp originais, mas o DataPump é mais flexível e extensível e permite novas operações, por exemplo:

  • Exportação/importação direta, via rede, entre duas instâncias de banco de dados utilizando Db links no lugar de pipes de rede, que não são suportados em todas as plataformas;
  • Reinicialização de jobs Data Pump parados sem perda de dados, em caso de interrupção programada ou não, possibilitando inclusive pular ou omitir um objeto que esteja gerando um erro no processo;
  • Permite excluir ou incluir objetos específicos em uma operação de export ou import;
  • Permite fazer requisição somente de metadados, dados ou ambos. No export original, o parâmetro ROWS=N equivalia ao content=metadata_only, mas não existia o equivalente a content=data_only;

Outras características

Além das funcionalidades de gerenciamento automático, o Oracle 10g introduz uma série de novas características importantes, dentre as quais destacamos:

PL/SQL Otimizado (ganho de performance)

A máquina de execução de PL/SQL foi reescrita para produzir código mais otimizado, resultando em ganhos de performance consideráveis, sem nenhuma necessidade de mudança no código existente nos sistemas atuais.

Análise de histórico de SQL e otimização do comando.

O Oracle 10g dispõe de mecanismos automatizados de otimização de performance de SQL. O SQL Tuning advisor e o SQL Access Advisor permitem a otimização automática de comandos SQL de sistemas adquiridos comercialmente, dos quais não se têm os fontes; o otimizador registra o histórico de execução dos comandos SQL e detecta se a sua execução está otimizada. Caso contrário, ele otimiza a execução sem que seja necessário alterar o código SQL.

Outra característica do gerenciamento automático é que agora o otimizador coleta as estatísticas de tabela necessárias para a otimização de comandos SQL e as atualiza quando houver mudanças significativas nas tabelas. Desta forma, o próprio banco de dados evita que estatísticas antigas ou não existentes comprometam o resultado da otimização do SQL.

FlashBack

O Oracle10g possui uma nova tecnologia para correções de erros humanos chamada FlashBack, que permite executar recuperação de dados em todos os níveis, incluindo linha (registro), transação, tabela, tablespace e database. A tabela 1 lista os recursos possíveis do FlashBack.

Tabela 1 – Recursos do FlashBack
Recurso Descrição Exemplo
FlashBack Query Permite que o dba pesquise qualquer dado num determinado tempo no passado. Select * from emp as of ‘2:00 P.M’ where ...
FlashBack Versions Query É uma extensão do FlashBack Query que permite ver as alterações feitas no banco de dados no nível de linha. Select * from emp versions between ‘2:00 P.M.’ and ‘3:00 P.M’ where ...
FlashBack Transaction Query Permite ver alterações feitas no banco de dados no nível de transação. Select * from DBA_TRANSACTION_QUERY where xid = ‘000200030000002D’
FlashBack Database FlashBack Database é uma nova estratégia para fazer recuperação point-in-time; permite voltar rapidamente o banco para um tempo no passado com o intuito de corrigir qualquer problema causado por corrupção lógica de dados ou erros do usuário. O comando descrito no exemplo mostra como recuperar um banco de dados ao seu estágio até às 2:05 P.M do dia corrente. Não é necessário efetuar nenhum restore de fita nem procedimento de downtime. FLASHBACK DATABASE TO ‘2:05 P.M’
FlashBack Table Pode ser usado para recuperar uma tabela ou um conjunto de tabelas até um determinado ponto no tempo FLASHBACK TABLE orders, order_item TO TIMESTAMP (JUL-07-2003, 02:33:00);
FlashBack Drop Quando um usuário remove uma tabela, o Oracle ‘joga’ esta tabela numa lixeira, chamada Recycle Bin. Os objetos na Recycle Bin permanecerão lá até que o usuário decida removê-los permanentemente ou que haja falta de espaço na tablespace que contém a tabela. O usuário pode “ver” no Recycle Bin e “voltar (undrop)” a tabela removida e seus objetos dependentes. FLASHBACK TABLE employee BEFORE DROP;

RMAN

O RMAN, no Oracle10g, pode gerenciar backups e recuperar automaticamente todos os dados na área de Flash Recovery. A área de Flash Recovery é uma localização única de armazenamento baseado em disco para todos os arquivos relacionados a recuperação de atividades num banco Oracle. Ou seja, se for requerido um recover de mídia, os backups dos datafiles estarão facilmente disponíveis, o que acelera drasticamente o tempo de recuperação do banco.

O RMAN cria automaticamente todos os backups na Flash Recovery Area e gerencia o espaço. O processo ARCH grava archive logs na área de Flash Recovery e o RMAN automaticamente move para a fita (ou remove dela) os backups obsoletos e os archive logs desnecessários.

O Oracle10g mantém a localização física de todas as mudanças feitas no database. O RMAN usa automaticamente essa informação para determinar quais blocos deverão ser lidos durante um backup incremental e acessa diretamente o bloco para fazer o backup. O Backup e o recover do Oracle10g inclui outras novidades:

  • Compressão de archive logs e backups;
  • Failover automatizado para um backup anterior durante a restauração de um arquivo perdido ou de um backup corrompido.
  • Recuperação automatizada da base de dados a um ponto anterior (mesmo que tenha ocorrido resetlogs);
  • Criação automatizada de novos arquivos durante recovery;
  • Recuperação automatizada de tablespace point-in-time;
  • Recuperação paralela otimizada (2 a 4 vezes);
  • Renomeação de tablespace.

SQL*Loader

Foram adicionadas novas características para suportar carga direta (direct path) de dados de tabelas que contenham tipos de dados XML e VARRAY.

A carga de tipos de dados XML e VARRAY já era possível na versão 9i. A diferença é que agora podemos fazer carga direta, com o uso do parâmetro direct=true na linha de comando do utilitário sqlldr. Nos próximos artigos, serão abordados detalhes sobres as novas funcionalidades do SQL*Loader.

Conclusão

O Oracle Database 10g traz grandes avanços para a tecnologia de banco de dados. Neste artigo, apresentamos as novas características mais importantes do Oracle Database 10g, dentre as quais podemos ressaltar o gerenciamento automatizado, melhor desempenho, facilidade de administração e suporte à computação em grid. Além disso, pelo fato de operar em ambientes que variam de pequenos servidores a grids corporativos, o banco de dados Oracle 10g oferece excelente escalabilidade e disponibilidade.

Atualmente, a tendência de utilização de grids corporativos no meio empresarial é decorrente da busca por uma infra-estrutura computacional flexível e escalável, que permita aproveitar melhor os recursos computacionais e atender com mais eficiência aos picos de demanda. Com o Oracle 10g as empresas já podem se beneficiar da operação de seus sistemas de bancos de dados em grids corporativos.

Revista SQL Magazine Edição 9
Clique aqui para ler todos os artigos desta edição