DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Oracle e Delphi

Veja neste artigo de Fabio e Fernando Prass, como utilizar o Oracle (umdos melhores BD do mundo) com Delphi. Acesso exclusivo para Assinantes.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

Uma visão geral do melhor dos bancos de dados

Se o leitor consultar as principais publicações da área de computação, verá que elas são unânimes em apontar o Oracle como o melhor dos bancos de dados. Dentre os motivos que fazem com que o banco tenha tal reconhecimento estão: segurança, desempenho, alta capacidade de armazenamento, tolerância à falhas e os diversos utilitários inclusos.

Neste artigo teremos uma visão geral do banco de dados, suas versões, features (destacando os que surgiram no último release), necessidades de hardware e um estudo sobre os diversos tipos de instalação, com algumas dicas que julgamos importantes.

Para esses colunistas, o Delphi é a melhor das linguagens, já que, dentre outras vantagens, é uma ferramenta de desenvolvimento verdadeiramente RAD, orientado a objetos, possui dezenas de frameworks desenvolvidos e permite o uso de uma série de tecnologias.

Sendo assim, nada melhor do que unir o melhor dos dois mundos: banco de dados e linguagem de programação. É exatamente isso que este artigo mostra. Além disso, o artigo traz também um guia de como criar um banco de dados e uma série de comandos SQL exclusivos do Oracle. E finalmente, veremos como acessar o Oracle a partir do Delphi.

O Oracle

No final da década de 70, o então desconhecido Larry Ellison encontrou a descrição de protótipo funcional de um banco de dados relacional. Nenhuma empresa de tecnologia havia se empenhado em comercializar tal tecnologia, Ellison viu nesse nicho de mercado uma oportunidade única e daí surgiu o Oracle.

Atualmente o Oracle está na versão 10g Release 2, com versões para os sistemas operacionais Windows, Linux, Solaris, AIX e outros. O “g” (de 10g) é uma abreviação de grid, vários servidores de pequeno porte compartilhando processamento, atuando como se fosse um grande servidor (veja as vantagens na Tabela 1).

Servidores Separados

Servidores Compartilhados

Altos custos dos componentes

Baixo custo dos componentes

Configurado para o pico

Capacidade por demanda

Único ponto de falha

Tolerância à falhas

Difícil gerenciar

Gerenciamento único

Difícil alteração

Flexível

Tabela 1. Diferença entre servidores separados e servidores compartilhados

O Oracle traz consigo uma série de ferramentas que implementam facilidades para o desenvolvimento de Data Warehouses, clusters de banco de dados, migração e outras funções que exigem elevado conhecimentos sobre banco de dados. Como nosso foco é em programadores e não em DBAs, a seguir apresentaremos rapidamente quatro ferramentas que julgamos serem importantes no dia a dia dos desenvolvedores.

Oracle HTML DB

Desenvolvida principalmente para que “não-programadores”, o que inclui DBAs, possam desenvolver facilmente novas aplicações de banco de dados usando apenas o browser. O HTML DB é na verdade um assistente que permite criar um banco de dados e a aplicação completa de acesso a ele, sem usar uma linha de código sequer.

Um exemplo prático: imagine que você tenha uma planilha no Excel e queira levar os dados para um banco de dados. Entre as opções mais comuns estão: fazer uma conexão via ODBC, escrever um aplicativo que leia a planilha e inclua os dados no banco ou exportar o arquivo para um formato qualquer (XML, CSV, TXT) e depois importar para o banco via algum utilitário qualquer. Seja qual for a opção, dará um certo trabalho.

Com o HTML DB, tudo fica simplificado. Basta selecionar os dados no Microsoft Excel, copiar (CTRL+C) e colar (CTRL+V) no HTML DB, confirmar os tipos de dados das colunas, o nome da tabela e pronto. Além disso, ainda é possível criar uma aplicação Web completa para inclusão/edição/exclusão dos dados, consultas e relatórios (incluindo gráficos). Tudo isso, como já foi dito, sem uma linha de código. Se ainda estiver difícil de acreditar, assista a demonstração da ferramenta (em inglês) no endereço: otn.oracle.com/products/database/htmldb/viewlets/htmldb_quicktour_viewlet.html.

O HTML DB não está presente em todas versões de instalação do Oracle, mas pode ser baixado gratuitamente (a versão para Windows 32 tem 56 MB) no endereço: www.oracle.com/technology/products/database/htmldb.

Transparent Data Encryption

O leitor já precisou escrever alguma função no sistema, para criptografar um campo de uma tabela no banco de dados? Acredito que sim, já que normalmente isso é utilizado em campos que guardam informações como salário e, principalmente, senha. Com o Transparent Data Encryption (TDE) isso não se faz mais necessário.

O TDE permite proteger os dados, mesmo em bancos já criados, sem qualquer mudança em sua aplicação. O TDE é um sistema de criptografia baseado em “chaves”, mas que não requer que os usuários ou aplicações gerenciem a chave criptográfica.

A “chave mestre” é gerada e armazenada em um módulo externo seguro, como o Oracle Wallet (outro aplicativo Oracle), com a opção de limitar o acesso aos dados apenas para o administrador do sistema. Ou seja, a segurança é melhorada porque o acesso aos dados pode ser concedido a diversos administradores e eles não terão acesso à informação que foi protegida.

O TDE suporta diversos algoritmos de criptografia, entre eles o Data Encryption Standard (Triple DES) e o Advanced Encryption Standard (AES192, que usa chave de 192 bits).


Windows .NET Integration

As versões do Oracle para Windows 2000, 2003 e XP incluem a opção de rodar como um host externo processos escritos em qualquer uma das linguagens .NET existentes, o que inclui obviamente o Delphi. É possível escrever procedimentos e/ou funções em .NET e usá-las no banco de dados através da linguagem PL/SQL (que é a linguagem de programação interna do Oracle).

XQuery

O XQuery é uma linguagem otimizada para consulta a campos (colunas) cujo tipo de dados é XML. O Oracle possui um compilador nativo, o que faz com que expressões de consultas escritas em XQuery sejam compiladas na mesma estrutura das consultas escritas em SQL padrão, o que garante maior performance. Com isso, é possível procurar por informações armazenadas em campos do tipo XML da mesma forma como se ele estivesse num campo integer ou varchar.

Tipos de instalações

O leitor pode optar por instalar o Oracle Database 10g Express Edition (leia o quadro) ou o Oracle Database 10g Release 2. As duas versões podem ser baixadas no endereço www.oracle.com/technology/software/products/database/oracle10g. Este artigo trata da segunda opção, por ser ela a mais encontrada nas empresas.

Ao instalar o Oracle Database 10g Release 2, é possível escolher entre um dos seguintes tipos: Enterprise Edition, Standard Edition, Standard One Edition ou instalação Personalizada. A diferença entre elas está na Tabela 2.

Versão

Público Alvo

O que instala?

Standard One

Para empresas de pequeno porte ou para sistemas de departamentos. Somente pode ser licenciado em servidores com até dois processadores.

Os mesmos recursos da instalação Enterprise Edition, com exceção do Oracle Real Application Clusters. Suporta somente um único usuário de desenvolvimento.

Standard

Para empresas de pequeno a médio porte. Pode ser licenciado em servidores simples com até quatro processadores ou para um único cluster de servidores com o total de até quatro processadores por cluster.

Conjunto de ferramentas de administração, distribuição, réplica, Web features, e ferramentas que facilitam a construção de aplicações críticas.

Enterprise Edition

É banco de dados desenvolvido para empresas com aplicações de missão crítica ou com grande volume de dados. Possui grande performance e alta disponibilidade, tanto em ambientes OLTP (on-line transaction processing – processamento on-line de transações) como em ambientes OLAP (on-line analytical processing - processamento analítico on-line).

A versão completa do banco de dados, incluindo todas as ferramentas de administração. Também permite instalar produtos usados para o desenvolvimento de Data Warehouse.

Tabela 2. Diferentes entre os tipos de instalação do Oracle

Oracle Database 10g Express Edition

O Oracle Database 10g Express Edition, também chamado de Oracle XE, é a versão gratuita para desenvolvimento e distribuição do Oracle. É a aposta da empresa para concorrer com o SQL Server Express Edition (versão gratuita do SQL Server), PostgreSQL, Firebird e outros bancos de dados freeware.

Essa versão possui administração facilitada, está disponível apenas para Windows e Linux e é indicada para desenvolvedores, DBAs e empresas de pequeno e médio porte. O arquivo de instalação tem cerca de 150 MB. Entretanto, antes de escolher o Oracle XE como o seu banco de dados, é preciso ter ciência das suas limitações:

- O tamanho da base de dados não pode ultrapassar 4 GB;

- O servidor deve ter no máximo 1 GB de memória;

- O servidor deve ter apenas um processador.

Os Métodos de instalação

Além dos tipos de instalação, existem dois métodos de instalação: básica e avançada. Na versão Básica (padrão), o processo é rápido e não requer muita interação. Na versão Avançada é preciso um maior conhecimento do banco, já que será necessário configurar tarefas como:

·         Criar um banco de dados como parte da instalação ou instalar somente o gerenciador do banco de dados. Caso queria instalar o banco de dados junto à instalação, você pode escolher dentre os tipos:

o        Finalidade Geral: cria um banco de dados para fins gerais;

o        Processamento de transações: cria um banco de dados inicial otimizado para ser utilizado em aplicações que utilizam uso intenso de transações;

o        Data Warehouse (DW): cria um banco de dados otimizado para aplicações de DW;

o        Avançado: cria um banco de dados personalizado.

·         Especificar as opções de configuração do banco de dados, podendo escolher o nome do banco de dados Global e o conjunto de caracteres utilizados;

·         Ativar ou não as notificações por e-mail. Ativando o administrador pode receber e-mails com informações sobre backup, falhas, estouro da capacidade do disco, entre outros;

·         Especificar as opções de armazenamento de arquivos do banco de dados:

o        Sistemas de Arquivos: A Oracle recomenda, para obter organização e desempenho, instalar os arquivos e o software em discos separados. Nessa opção você pode especificar a localização dos arquivos;

o        Gerenciamento de Armazenamento Automático (ASM - Automatic Storage Management): simplifica a administração do armazenamento. O Oracle se encarrega de otimizar a forma como os dados são armazenados em disco, melhorando assim o desempenho de armazenamento e recuperação das informações;

o        Dispositivos Brutos: Nessa opção você deve criar um dispositivo para cada arquivo de dados, arquivo de log e controle, sendo necessário especificar o arquivo de mapeamento desses dispositivos.

·         Especificar as opções de backup e recuperação. Caso ativadas, o Job de backup usará o armazenamento na área de recuperação especificada na opção Localização da área de Recuperação, ou então, selecione a opção de gerenciamento automático. Uma vez ativadas as opções de backup e recuperação, é necessário informar o usuário e senha para serem usadas pelo Job.

Nota: é possível permitir o backup automático após a instalação.

Especificar senhas do banco de dados: é possível selecionar diferentes senhas para diferentes contas (SYS, SYSTEM, SYSMAN e DBSNMP) ou utilizar a mesma senha para todas as contas.


Componentes de hardware requeridos

A Oracle recomenda instalar os componentes em sistemas de arquivos NTFS. Os requisitos listados a seguir, são mais precisos que os valores informados pela tela na hora da instalação. As exigências de espaço em disco para componentes do banco de dados Oracle incluem 32 MB para instalar o Java Runtime Environment (JRE) e Oracle Universal Installer na partição onde o sistema operacional é instalado.

Para instalar o banco de dados é preciso 256 MB de RAM (entretanto, use pelo menos 512 MB), memória virtual com o dobro da quantidade de RAM, adaptador de vídeo de 256 cores e processador de 1.200 GHz ou superior. O espaço em disco depende do método de instalação (Básica ou Avançada), utiliza cerca de 100 MB para arquivos de sistemas, 1.5GB para o Oracle propriamente dito e 100 MB de espaço temporário (se for FAT32 as exigências são ligeiramente maiores).

Instalando o banco de dados Oracle

Mostraremos aqui alguns dos passos de instalação do Oracle 10g, para a instalação Personalizada do método Avançado. Insira o CD do produto, ou navegue até o diretório onde estão os arquivos de instalação, e inicie o processo.

Quando chegar na tela inicial de instalação, será necessário escolher o método de instalação: Instalação Básica ou Instalação Avançada. Selecionando Instalação Básica o banco de dados será instalado de forma mais rápida, pois requer uma comunicação (usuário-máquina) mínima nos passos de instalação. Será necessário informar apenas: se deseja criar o Banco de Dados inicial, o tipo de instalação e a senha (nesse caso, a mesma senha será usada para todas as contas).


A Instalação Avançada é mais complexa e demorada, permite criar senhas individuais para as diferentes contas, criar tipos específicos de bancos de dados, utilizar diferentes grupos de idioma, especificar notificações de e-mail, e assim por diante. Selecione o tipo desejado e siga em frente (lembrando que aqui optamos pelo método Avançado).

Nota: Mesmo que o leitor escolha o método de Instalação Básica, aconselhamos não criar o Banco de Dados Inicial junto com a instalação do Oracle. A criação do banco inicial pode ser feita sem maior dificuldade depois da instalação e sua criação agora irá apenas tornar a instalação do Oracle mais demorada.

Para criar um novo banco de dados, após a instalação, inicie o aplicativo Database Configuration Assistant, através do menu Iniciar>Programas>Oracle>Nome dado durante a instalação>Configuration and Migration Tools. Para atualizar um banco de dados já existente, execute o aplicativo Database Upgrade Assistant que se encontra na mesma pasta.

Na tela de especificação da localização dos arquivos vá à seção Destino, aceite as variáveis padrão ou entre com o nome e diretório para instalar os componentes do Oracle. O caminho não deve conter espaços. Para avançar clique em Próximo. Além disso, nessa tela deve ser informado o nome da instância do banco de dados. A seguir, será solicitada a escolha do tipo de instalação (Enterprise, Standard, Standard One ou Personalizado).

Antes de instalar, o resumo dos produtos e arquivos que serão instalados aparecerá, depois clique em Instalar. Durante esse processo, podem ser visualizados os produtos que estão sendo instalados. Após essas telas, aconselhamos que deixe as opções conforme sugerido pelo instalador.


Criando o banco de dados

O Oracle possui uma série de ferramentas que permitem criar/gerenciar banco de dados (veja a lista na Tabela 3).

Ferramenta

Descrição

Oracle Universal Installer (OUI)

Utilizado para instalar, atualizar ou remover componentes de software, além de permitir a criação do banco de dados

Oracle Database Configuration Assistant (ODCA)

Uma ferramenta que a Oracle desenvolveu com interface gráfica e que interage com o OUI ou pode ser utilizada independentemente

SQL*Plus

É uma interface primária (via linha de código) para o servidor do banco de dados. Entre outras funções, permite iniciar e desativar o banco de dados, criar e executar consultas, adicionar linhas, modificar dados e criar relatórios personalizados

Oracle Enterprise Manager (OEM)

Interface gráfica utilizada para administrar, monitorar e ajustar bancos de dados. Funciona como uma ferramenta de gerenciamento centralizado de sistemas para os DBAs. Usado para compartilhar tarefas com outros administradores, além de conter ferramentas para administrar servidores paralelos e bancos de dados replicados

Tabela 3. Ferramentas Oracle de Administração de Banco de Dados

Aqui será demonstrado como criar o banco através do Assistente de Configuração de Banco de dados da Oracle (Oracle Database Configuration Assistant – ODCA).

Para começar, inicie o ODCA, através do menu Iniciar>Programas>Oracle>Ferramentas de Configuração e Migração. Na tela inicial do assistente de instalação apenas clique em Próximo, na tela seguinte escolha a opção Criar um Banco de Dados e novamente clique em Próximo. Em seguida selecione Banco de Dados Personalizado. Na tela seguinte iniciam-se realmente as configurações.

A etapa seguinte é a identificação do BD, onde o nome do banco de dados global (nome e local dentro de uma estrutura de rede) é criado fixando nome, obedecendo ao limite de oito caracteres (como se fosse um nome de domínio), e o nome do SID (System Identifier), que é uma referência para a instância do banco de dados Oracle que está sendo executada no servidor.

Coloque o Nome do Banco e SID como “CLUBE” (você pode utilizar nomes de sua preferência, mas não esqueça, claro, de digitar o nome correto quando formos acessar o banco através do Delphi).

Nota: É aconselhado que você selecione o nome de banco de dados para o nome do grupo de trabalho que você estará usando. Porém, um nome diferente é aceitável.

O passo seguinte, Opções de Gerenciamento, define a forma como o banco será gerenciado: centralmente através do Controle de Grade ou se localmente usando o Controle de BD. Esses recursos fazem parte do OEM.

Nessa parte da criação do banco de dados é possível ativar as notificações por e-mail e a rotina diária automática de backup. Para que o DBA seja avisado por e-mail sempre que um evento importante ocorrer (backup finalizado, falta de espaço em disco, entre outros) informe o servidor SMTP e o endereço de e-mail. Para realizar backup diariamente, informe o horário, o nome do usuário e a senha.

Nota: A rotina de backup consome grande quantidade de memória RAM e de CPU. Justamente por isso, o horário sugerido pela Oracle para início do evento é 2:00 da manhã, horário em que a maioria das instituições está fechada.

Na tela seguinte, Credenciais de Banco de Dados devem ser especificadas as senhas para os usuários SYS, SYSTEM, DBSNMP e SYSMAN. É possível criar uma única senha para todas as contas de usuários ou definir senhas diferentes para cada uma delas.

Após definir a(s) senha(s) clique novamente em Próximo para avançar para a tela de Localizações de Arquivos (local físico onde os dados serão armazenados). É possível selecionar diferentes localizações para os arquivos do banco, bastando selecionar uma das opções onde se deve especificar um local de armazenamento.

Para visualizar/alterar as variáveis utilizadas como parâmetro para os arquivos de controle, de dados, de redo logs, entre outros, clique no botão Variáveis de Localização de Arquivo.

Aconselhamos que sejam mantidas as opções padrão, a menos que o leitor queira utilizar outro disco (HD) para armazenar os dados. No próximo passo, são especificadas as Configurações de Recuperação.

A Oracle recomenda que os arquivos de log sejam arquivados em locais diferentes e, de preferência, em discos diferentes (imagine que o HD que contêm a base de dados sofra um problema físico, não será possível retornar os dados). Selecione o local onde os dados serão gravados e clique em Próximo.

Na etapa seguinte, Conteúdo do Banco de Dados, desmarque todas as opções, exceto Oracle Text e Repositório do Enterprise Manager. As opções desmarcadas referem-se a aplicações de Data Warehouse, Data Mining e geo-referenciamento.

A próxima etapa, a décima, refere-se aos Parâmetros de Inicialização. Devem ser configurados parâmetros como: memória, bloco de armazenamento (I/O), número de processos, conjunto de caracteres e modo de conexão. Para ver todos os padrões, clique no botão Todos os Parâmetros de Inicialização.


Na Tabela 4 estão alguns dos parâmetros mais importantes, informações sobre os demais parâmetros podem ser obtidas na própria interface. Deixe os valores conforme sugeridos pelo servidor.

Parâmetro

Descrição

OPEN_CURSORS

Especifica o número máximo de cursores (áreas de contexto) abertos que uma sessão pode ter ao mesmo tempo. Restringe o tamanho do cache de cursores PL/SQL que a linguagem usa para evitar nova análise de instruções re-executadas por um usuário. O valor deve ser alto o suficiente para evitar que as aplicações fiquem sem cursores abertos.  

Faixa de Valores: 1 - limite do SO.

Default: 64

BACKGROUND_DUMP_DEST

Especifica o caminho (diretório ou disco) em que os arquivos de rastreamento são gravados para os processos de segundo plano (LGWR, DBW etc.) durante as operações do Oracle. Define também a localização do arquivo de alerta do banco de dados que registra eventos e mensagens significativos.

Faixa de Valores: Qualquer nome de diretório válido.

Default: ORACLE_HOME/rdbms/log (depende do SO).

CLUSTER_DATABASE

Definida como True para ativar a opção clusters de Aplicação Real.

Default: False

COMPATIBLE

Permite o uso de um novo release e, ao mesmo tempo, garante a retro-compatibilidade com uma release anterior.

Default: Release atual

CONTROL_FILES

Especifica um ou mais nomes de arquivos de controle. A Oracle recomenda o uso de vários arquivos em diferentes dispositivos ou o espelhamento de arquivos do SO.

Faixa de Valores: 1 - 8 nomes de arquivos.

Default: Depende do SO.

CORE_DUMP_DEST

O nome de diretório que especifica a localização do dump central (para UNIX).

Faixa de Valores: Qualquer nome de diretório válido.

Default : ORACLE_HOME/dbs

DB_BLOCK_SIZE

O tamanho (em bytes) de um bloco de banco de dados. É definido na criação do banco e não pode ser alterado depois.

Faixa de Valores: 1024 - 65536 (depende do SO).

Default: 2048 (depende do SO), recomendamos que utilize o tamanho 4096.

DB_CACHE_SIZE

Especifica o tamanho do cache para buffers com tamanho de bloco padrão.

Faixa de Valores: Pelo menos 16M.

Default: 48M

DB_FILE_MULTIBLOCK_READ_COUNT

O número máximo de blocos lidos durante uma operação de I/O (entrada/saída) que envolve uma varredura seqüencial completa. Obviamente, depende do SO.

Default: 8

DB_CREATE_FILE_DEST e DB_RECOVERY_FILE_DEST

Localização padrão do arquivo backup e de recovery, respectivamente. Recomenda-se que ambos estejam localizados em discos diferentes para fins de proteção de dados e de desempenho.

PROCESSES

Especifica o número máximo de processos de usuários do SO que se conectam simultaneamente a um Oracle Server.

Default: 150

SESSIONS

Especifica o número total de sessões de usuários e do sistema. O valor padrão deve ser maior do que PROCESSES para permitir sessões recursivas.

Faixa de Valores: Qualquer valor inteiro

Default: Derivado (1.1 * PROCESSES + 5)

Tabela 4. Parâmetros de inicialização. Fonte: Oracle

Na página Armazenamento de BD são configuradas as localizações das tablespaces, dos arquivos de dados, segmentos de Rollback e Grupos de Redo Logs. Se possível informe espaços em discos diferentes para os dois últimos.

A décima segunda e última etapa permite, além da criação do banco agora configurado, a criação de um banco de dados de gabarito baseado nas informações atuais. Se o leitor criar esse banco poderá utilizá-lo como wizard quando for preciso criar um novo banco (ele aparecerá na listagem exibida no segundo passo, Gabaritos de Banco de Dados). Pronto, agora basta clicar em Finalizar e aguardar alguns minutos até que o Oracle crie o banco de dados.

Nota: O tempo para a criação do banco vai depender exclusivamente do hardware, portanto, dependendo do equipamento utilizado, o processo de criação pode ser longo.

Configuração dos arquivos TNSNAMES e LISTENER

Os arquivos tnsnames.ora e listener.ora são utilizados para armazenar as informações necessárias para que as estações de trabalho (clientes) consigam conectar-se ao servidor Oracle. Os arquivos estão armazenados na pasta %ORACLE_HOME%\db_1\NETWORK\ADMIN.

Para cada banco de dados criado no servidor adicione no arquivo tnsnames.ora uma seção idêntica a mostrada na Listagem 1. Uma vez que o arquivo for criado em uma máquina, copie-o para todas as máquinas cliente que trabalharão com o banco.

Listagem 1. Informações do arquivo tnsnames.ora

# Arquivo padrão

NOME_DA_CONEXAO =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)

     (HOST = IP _DO_SERVIDOR ou NOME DO SERVIDOR)

     (PORT = 1521)))

   (CONNECT_DATA =

     (SERVICE_NAME = CAMINHO_DO_SERVIDOR)))

# Arquivo configurado para o banco do artigo

CLUBE =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)

     (HOST = 127.0.0.1)(PORT = 1521)))

   (CONNECT_DATA =

     (SERVICE_NAME = CLUBE)))

Também será necessário fazer uma pequena correção no arquivo listener.ora. Localize no arquivo a seção SID_LIST_LISTENER e deixe-a como mostrado na Listagem 2 (corrija o path c:\oracle\product\10.1.0\db_1 caso o local de instalação escolhido tenha sido diferente do padrão).

Listagem 2. Informações do arquivo listener.ora

SID_LIST_LISTENER =

 (SID_LIST =

   (SID_DESC =

     (SID_NAME = PLSExtProc)

     (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

    (PROGRAM = extproc))

   (SID_DESC =

     (GLOBAL_DBNAME = CLUBE)

     (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

     (SID_NAME = CLUBE)))

Serviços

Após criar o banco, verifique os serviços do servidor (Iniciar>Painel de Controle>Ferramentas Administrativas>Serviços). O Oracle iniciou automaticamente o serviço OracleDBConsoleCLUBE. Esse serviço permite gerenciar o banco de dados via browser (tente acessar o endereço http://Nome_Do_Servidor:5500/em), embora seja útil, consome grande quantidade de memória. Aconselha-se que esse serviço seja parado e seu modo de inicialização seja configurado como “Manual”.

Basicamente, são necessários apenas dois serviços para que o Oracle funcione corretamente: OracleOraNomeInstalacaoTNSListener que realiza a conexão e OracleServiceCLUBE que gerencia o banco de dados criado (o Oracle cria uma instância desse serviço para instância de banco de dados existente no servidor).

Criando tabelas

Para criar a tabela de exemplo será utilizado o SQL Plus (um editor de linha de comando) que está em Iniciar>Programas>Oracle>Desenvolvimento de Aplicações. Na tela inicial informe o login (SYS ou SYSTEM), a senha e o nome da conexão (CLUBE nesse caso).

Nota: Evidentemente que um utilitário de linha de comando não é a melhor opção para se trabalhar com o banco de dados. Na seção Links deste artigo são citadas três ferramentas que tornam esse trabalho bem menos árduo.

Realizada a identificação com sucesso, o editor é liberado para uso, mostrando o prompt “SQL>”. Digite, nessa ordem, o comando que cria a tabela “Cliente” com sua respectiva chave-primária (Listagem 3) o comando que cria a sequence (Listagem 4, veja quadro Sequence) e o comando para incluir os dados na tabela (Listagem 5).


Listagem 3. Comando para criar tabela a tabela Cliente

CREATE TABLE CLIENTE

   (ID_CLIENTE    NUMBER(*,0) NOT NULL,

    NOME          VARCHAR2(20),

    CODIGO        VARCHAR2(5),

    TIPO_PESSOA   CHAR(1),

    DATA_CADASTRO DATE)

 PCTFREE     10

 INITRANS    1

 MAXTRANS    255

 TABLESPACE  ts_comum_dat

 STORAGE   (

   INITIAL     1

   MINEXTENTS  1

   MAXEXTENTS  2147483645)

ALTER TABLE CLIENTE

ADD PRIMARY KEY (ID_CLIENTE)

USING INDEX

 PCTFREE     10

 INITRANS    2

 MAXTRANS    255

 TABLESPACE  ts_comum_dat

 STORAGE   (

   INITIAL     1

   MINEXTENTS  1

   MAXEXTENTS  2147483645)


Listagem 4. Comando para criar a sequence SQ_CLIENTE

Criação de uma sequence para o Id da tabela

CREATE SEQUENCE SQ_CLIENTE

 INCREMENT BY 1

 START WITH 1

 MINVALUE 1

 MAXVALUE 9999999999999999

 NOCYCLE

 NOORDER

 CACHE 20


Listagem 5. Comando para incluir dados na tabela Cliente

INSERT INTO CLIENTE VALUES (sq_cliente.NEXTVAL,

 'José Silva', 123, 'F', sysdate);

INSERT INTO CLIENTE VALUES (sq_cliente.NEXTVAL,

 'Maria Aparecida', 321, 'F', sysdate);

INSERT INTO CLIENTE VALUES (sq_cliente.NEXTVAL,

 'ching Ling S.A.', 543, 'J', sysdate);

Sequence

Uma sequence é um número seqüencial. Seria o mesmo que o tipo de dado auto-incremento presente em outros bancos, não fosse o caso dela não ser incrementada automaticamente. Para saber o valor atual utiliza-se nome_sequence.CurrVal. Para incrementar seu valor é usado o comando nome_sequence.NextVal (um exemplo de utilização pode ser visto na Listagem 5).

Comandos avançados

O Oracle traz consigo uma série de funções que são de grande valia para o desenvolvedor. A seguir são mostrados alguns deles.

DECODE - Uma espécie de comando IF. Verifica o valor de um campo e retorna uma expressão diferente para ele. Exemplo:

SELECT DECODE(tipo_pessoa,

 'F', 'Pessoa Física',

 'J', 'Pessoa Jurídica') tipo_pessoa, nome

FROM cliente

LPAD e RPAD - O primeiro adiciona X vezes o caractere do terceiro argumento à esquerda do campo especificado. O segundo adiciona à direita. O exemplo a seguir verifica o tipo de pessoa e incrementa o campo código com cinco zeros à esquerda se for uma pessoa física ou com três se for uma pessoa jurídica:

SELECT DECODE(tipo_pessoa,

 'F', LPAD(codigo,5,'0'),

 'J', LPAD(codigo,3,'0')) codigo,

FROM cliente

NVL e NVL2 - No primeiro, se o valor for nulo, retorna o valor especificado após a vírgula. No segundo, se o valor não for nulo, retorna o valor especificado após a primeira vírgula, sendo nulo retorna o valor do último argumento. Exemplo:

SELECT NVL(codigo,0), NVL2(nome, 'Não Nulo', 'Nulo')

FROM cliente

ADD_MONTHS, NEXT_DAY e LAST_DAY - Insere X mês (es) na data especificada, seleciona o próximo dia do mês onde o dia da semana seja igual ao passado no segundo argumento (em inglês obrigatoriamente) e retorna o último dia do mês da data passada, respectivamente. Exemplo:

SELECT ADD_MONTHS(data_cadastro,2),

 NEXT_DAY(data_cadastro, 'SATURDAY'),

 LAST_DAY(data_cadastro)

FROM cliente

EXTRACT- Extrai o dia, mês e/ou ano da uma data. Exemplo:

SELECT EXTRACT(DAY FROM data_cadastro),

 EXTRACT(MONTH FROM data_cadastro),

 EXTRACT(YEAR FROM data_cadastro)

FROM cliente

REPLACE - Retira os caracteres de um campo. O exemplo a seguir tira os espaços do campo nome:

SELECT REPLACE(nome, ' ')

FROM cliente

MINUS - Especifica uma operação de subtração de conjunto (A – B). Pode ser usado em substituição a expressões do tipo In ou Not In, entretanto sua execução é muito mais rápida. Suponha que no banco de dados existisse uma tabela com o ID de todos os clientes que estão em dívida com a empresa. Uma maneira de mostrar os clientes não devedores é:

SELECT c.id_cliente

FROM cliente c

WHERE id_cliente not in (SELECT id_cliente FROM devedor)

Esse mesmo comando pode ser escrito assim:

SELECT id_cliente FROM cliente

MINUS

SELECT id_cliente FROM devedor

Conectando o Delphi ao Oracle

Para finalizar, falta ligar o Oracle ao Delphi. A ligação não é diferente dos outros bancos, de qualquer forma, mostraremos aqui como ela deve ser feita.

Conexão via BDE - Inicie uma nova aplicação em File>New>Application. Adicione um Data Module (File>New>Data Module). No Data Module, coloque um Database. Dê um duplo clique no componente, configure a propriedade Name como “ClubeDelphi” e selecione a opção Oracle em Drive Name. Clique no botão Default e altere as seguintes propriedades:

SERVER NAME= CLUBE

USER NAME= nome_usuario

SQLQRYMODE= server

PASSWORD= senha_usuario

Feche a janela de parâmetros, e selecione True para a propriedade Connected. A conexão via BDE está estabelecida. Agora basta utilizar os componentes Table, Query e UpdateSQL da mesma forma que o leitor utiliza com outros bancos.

Conexão via dbExpress - Assim como no BDE, a conexão via DBX é idêntica aos demais bancos de dados. Entretanto, aqui é preciso ressaltar que os drivers padrão do dbExpress possuem uma série de bugs. Para se livrar de falhas de conexão, reconhecimento de tipos de dados e outra série de problemas é altamente recomendado que o leitor utilize um driver de terceiros para realizar a conexão. Uma outra opção é o dbExpress Plus (veja edição 41).

Um bom driver é o fornecido pela Core Lab (crlab.com/dbx). Sua instalação é bastante simples e, uma vez instalado, seu uso é transparente para o desenvolvedor. O driver interage diretamente com a biblioteca, e o programador nem nota sua existência. Como nem tudo na vida é perfeito, é preciso dizer que esse driver não é grátis.

Instalando ou não um driver de terceiro, a forma de conexão é a mesma. Inicie uma nova aplicação em File>New>Application. Adicione um Data Module (File>New>Data Module). Coloque um SQLConnection no Data Module. Dê um duplo clique no componente, clique no botão Add Connection (representado pelo sinal +) configure a propriedade Name como “ClubeDelphi” e selecione a opção Oracle (Core Lab) em Drive Name.

Note que a opção Oracle também está na lista, ou seja, a instalação de drives de terceiros, não exclui a possibilidade de conexão padrão do DBX. Clique em OK e altere os seguintes parâmetros de conexão:

DataBase= CLUBE

User_Name= nome_usuario

Password= senha_usuario

Fecha a janela de parâmetros e selecione True para a propriedade Connected para estabelecer a conexão. Assim como no BDE, agora basta utilizar os componentes da biblioteca como em qualquer outro banco de dados. A instalação do driver ainda nos traz um novo componente na paleta dbExpress do Delphi, o CRSQLConnection.

Existem outras formas de acessar o Oracle a partir de aplicações Delphi. Veja os boxes Oracle Data Access Components e Acessando o Oracle no .NET.

Conclusões

Mostramos, passo a passo, como instalar do banco de dados Oracle 10g, criar um banco de dados no mesmo e como conectá-lo usando Delphi. Mostramos também alguns comandos SQL exclusivos do Oracle.

Links

www.oracle.com/technology/database

Site oficial do Banco de Dados Oracle

www.oracle.com/technology/oramag/oracle/05-sep/o55security.html

Artigo de Arup Nanda sobre TDE, também publicado na Oracle Magazine de Set/Out 2005.

www.quest.com/sql_navigator

Site do SQL Navigator (ideal para programadores)

www.quest.com/toad

Site do TOAD (ideal para DBAs)

www.allroundautomations.nl/plsqldev.html

Site do PL/SQL Developer (para programadores)


Fábio Sarturi Prass (fsprass@yahoo.com.br) é Bacharel em Sistemas de Informação. Trabalha na FEESC - Fundação de Ensino e Engenharia de Santa Catarina (www.feesc.ufsc.br), onde é encarregado do desenvolvimento PL/SQL do Sistema de Arrecadação Tributária (SIATU) das Prefeituras de Belo Horizonte e Blumenau.

Fernando Sarturi Prass (fprass@gmail.com) é Bacharel em Sistemas de Informação pela UNIFRA, Mestre em Ciência da Computação pela UFSC, Analista de Sistema da FEESC e professor da Faculdade Estácio de Sá de Santa Catarina (www.sc.estacio.br).

O que você achou deste post?
Conhece a assinatura MVP?
Publicidade
Serviços

Mais posts