Oracle e Delphi:
Uma viso geral do melhor dos bancos de dados
Se o leitor consultar as principais publicaes da rea de computao, ver que elas
so unnimes em apontar o Oracle como o melhor dos bancos de dados. Dentre os
motivos que fazem com que o banco tenha tal reconhecimento esto: segurana,
desempenho, alta capacidade de armazenamento, tolerncia falhas e os diversos
utilitrios inclusos.
Neste artigo teremos uma viso geral do banco de dados, suas
verses, features (destacando os que surgiram no ltimo release), necessidades de
hardware e um estudo sobre os diversos tipos de instalao, 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
srie de tecnologias.
Sendo assim, nada melhor do que unir o melhor dos dois mundos: banco de dados
e linguagem de programao. exatamente isso que este artigo mostra. Alm
disso, o artigo traz tambm um guia de como criar um banco de dados e uma srie
de comandos SQL exclusivos do Oracle. E finalmente, veremos como acessar o
Oracle a partir do Delphi.
O Oracle
No final da dcada de 70, o ento desconhecido Larry Ellison encontrou a descrio
de prottipo 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 verso 10g Release 2, com verses para os sistemas
operacionais Windows, Linux, Solaris, AIX e outros. O g (de 10g) uma
abreviao de grid, vrios servidores de pequeno porte compartilhando
processamento, atuando como se fosse um grande servidor (veja as vantagens
na Tabela1).
Servidores Separados Servidores Compartilhados
Altos custos dos componentes Baixo custo dos componentes
Configurado para o pico Capacidade por demanda
nico ponto de falha Tolerncia falhas
Difcil gerenciar Gerenciamento nico
Difcil alterao Flexvel
Tabela 1. Diferena entre servidores separados e servidores compartilhados
O Oracle traz consigo uma srie de ferramentas que implementam facilidades para
o desenvolvimento deData Warehouses, clusters de banco de dados, migrao e
outras funes que exigem elevado conhecimentos sobre banco de dados. Como
nosso foco em programadores e no 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 no-programadores, o que inclui DBAs,
possam desenvolver facilmente novas aplicaes de banco de dados usando apenas
o browser. O HTML DB na verdade um assistente que permite criar um banco de
dados e a aplicao completa de acesso a ele, sem usar uma linha de cdigo
sequer.
Um exemplo prtico: imagine que voc tenha uma planilha no Excel e queira levar
os dados para um banco de dados. Entre as opes mais comuns esto: fazer uma
conexo 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 utilitrio qualquer. Seja qual for a opo, 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. Alm disso, ainda possvel criar uma
aplicao Web completa para incluso/edio/excluso dos dados, consultas e
relatrios (incluindo grficos). Tudo isso, como j foi dito, sem uma linha de cdigo.
Se ainda estiver difcil de acreditar, assista a demonstrao da ferramenta (em
ingls) no
endereo:[Link]/products/database/htmldb/viewlets/htmldb_quicktour_vie
[Link].
O HTML DB no est presente em todas verses de instalao do Oracle, mas pode
ser baixado gratuitamente (a verso para Windows 32 tem 56 MB) no
endereo:[Link]/technology/products/database/htmldb.
Transparent Data Encryption
O leitor j precisou escrever alguma funo 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 informaes como salrio e,
principalmente, senha. Com o Transparent Data Encryption (TDE) isso no se faz
mais necessrio.
O TDE permite proteger os dados, mesmo em bancos j criados, sem qualquer
mudana em sua aplicao. O TDE um sistema de criptografia baseado em
chaves, mas que no requer que os usurios ou aplicaes gerenciem a chave
criptogrfica.
A chave mestre gerada e armazenada em um mdulo externo seguro, como o
Oracle Wallet (outro aplicativo Oracle), com a opo de limitar o acesso aos dados
apenas para o administrador do sistema. Ou seja, a segurana melhorada porque
o acesso aos dados pode ser concedido a diversos administradores e eles no tero
acesso informao que foi protegida.
O TDE suporta diversos algoritmos de criptografia, entre eles o Data Encryption
Standard (Triple DES) e oAdvanced Encryption Standard (AES192, que usa chave
de 192 bits).
Windows .NET Integration
As verses do Oracle para Windows 2000, 2003 e XP incluem a opo de rodar
como um host externo processos escritos em qualquer uma das linguagens .NET
existentes, o que inclui obviamente o Delphi. possvel escrever procedimentos
e/ou funes em .NET e us-las no banco de dados atravs da linguagem PL/SQL
(que a linguagem de programao 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
expresses de consultas escritas em XQuery sejam compiladas na mesma estrutura
das consultas escritas em SQL padro, o que garante maior performance. Com isso,
possvel procurar por informaes armazenadas em campos do tipo XML da
mesma forma como se ele estivesse num campo integer ou varchar.
Tipos de instalaes
O leitor pode optar por instalar o Oracle Database 10g Express Edition (leia o
quadro) ou o Oracle Database 10g Release 2. As duas verses podem ser baixadas
no [Link]/technology/software/products/database/oracle10g.
Este artigo trata da segunda opo, por ser ela a mais encontrada nas empresas.
Ao instalar o Oracle Database 10g Release 2, possvel escolher entre um dos
seguintes tipos: Enterprise Edition, Standard Edition, Standard One Edition ou
instalao Personalizada. A diferena entre elas est naTabela 2.
Verso Pblico Alvo O que instala?
Standard One Para empresas de pequeno porte Os mesmos recursos da instalao
ou para sistemas de Enterprise Edition, com exceo
departamentos. Somente pode ser doOracle Real Application Clusters.
licenciado em servidores com at Suporta somente um nico usurio
dois processadores. de desenvolvimento.
Standard Para empresas de pequeno a Conjunto de ferramentas de
mdio porte. Pode ser licenciado administrao, distribuio,
em servidores simples com at rplica, Web features, e
quatro processadores ou para um ferramentas que facilitam a
nico cluster de servidores com o construo de aplicaes crticas.
total de at quatro processadores
por cluster.
Enterprise Edition banco de dados desenvolvido A verso completa do banco de
para empresas com aplicaes de dados, incluindo todas as
misso crtica ou com grande ferramentas de administrao.
volume de dados. Possui Tambm permite instalar produtos
grandeperformance e alta usados para o desenvolvimento
disponibilidade, tanto emambientes deData Warehouse.
OLTP (on-line transaction
processing processamento on-
line de transaes) como em
ambientes OLAP (on-line analytical
processing- processamento
analtico on-line).
Tabela 2. Diferentes entre os tipos de instalao do Oracle
Oracle Database 10g Express Edition
O Oracle Database 10g Express Edition, tambm chamado de Oracle XE, a verso
gratuita para desenvolvimento e distribuio do Oracle. a aposta da empresa para
concorrer com o SQL Server Express Edition (verso gratuita do SQL Server),
PostgreSQL, Firebird e outros bancos de dados freeware.
Essa verso possui administrao facilitada, est disponvel apenas para Windows e
Linux e indicada para desenvolvedores, DBAs e empresas de pequeno e mdio
porte. O arquivo de instalao tem cerca de 150 MB. Entretanto, antes de escolher
o Oracle XE como o seu banco de dados, preciso ter cincia das suas limitaes:
- O tamanho da base de dados no pode ultrapassar 4 GB;
- O servidor deve ter no mximo 1 GB de memria;
- O servidor deve ter apenas um processador.
Os Mtodos de instalao
Alm dos tipos de instalao, existem dois mtodos de instalao: bsica e
avanada. Na verso Bsica(padro), o processo rpido e no requer muita
interao. Na verso Avanada preciso um maior conhecimento do banco, j que
ser necessrio configurar tarefas como:
Criar um banco de dados como parte da instalao ou instalar somente o
gerenciador do banco de dados. Caso queria instalar o banco de dados junto
instalao, voc pode escolher dentre os tipos:
o Finalidade Geral: cria um banco de dados para fins gerais;
o Processamento de transaes: cria um banco de dados inicial otimizado para
ser utilizado em aplicaes que utilizam uso intenso de transaes;
o Data Warehouse (DW): cria um banco de dados otimizado para aplicaes de
DW;
o Avanado: cria um banco de dados personalizado.
Especificar as opes de configurao do banco de dados, podendo escolher
o nome do banco de dados Global e o conjunto de caracteres utilizados;
Ativar ou no as notificaes por e-mail. Ativando o administrador pode
receber e-mails com informaes sobre backup, falhas, estouro da capacidade do
disco, entre outros;
Especificar as opes de armazenamento de arquivos do banco de dados:
o Sistemas de Arquivos: A Oracle recomenda, para obter organizao e
desempenho, instalar os arquivos e o software em discos separados. Nessa opo
voc pode especificar a localizao dos arquivos;
o Gerenciamento de Armazenamento Automtico (ASM - Automatic Storage
Management): simplifica a administrao do armazenamento. O Oracle se
encarrega de otimizar a forma como os dados so armazenados em disco,
melhorando assim o desempenho de armazenamento e recuperao das
informaes;
o Dispositivos Brutos: Nessa opo voc deve criar um dispositivo para cada
arquivo de dados, arquivo de log e controle, sendo necessrio especificar o arquivo
de mapeamento desses dispositivos.
Especificar as opes de backup e recuperao. Caso ativadas,
o Job de backup usar o armazenamento na rea de recuperao especificada na
opo Localizao da rea de Recuperao, ou ento, selecione a opo de
gerenciamento automtico. Uma vez ativadas as opes de backup e recuperao,
necessrio informar o usurio e senha para serem usadas pelo Job.
Nota: possvel permitir o backup automtico aps a instalao.
Especificar senhas do banco de dados: possvel 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, so mais precisos que os valores informados pela
tela na hora da instalao. As exigncias de espao em disco para componentes do
banco de dados Oracle incluem 32 MB para instalar o Java
RuntimeEnvironment (JRE) e Oracle Universal Installer na partio onde o sistema
operacional instalado.
Para instalar o banco de dados preciso 256 MB de RAM (entretanto, use pelo
menos 512 MB), memria virtual com o dobro da quantidade de RAM, adaptador de
vdeo de 256 cores e processador de 1.200 GHz ou superior. O espao em disco
depende do mtodo de instalao (Bsica ou Avanada), utiliza cerca de 100 MB
para arquivos de sistemas, 1.5GB para o Oracle propriamente dito e 100 MB de
espao temporrio (se for FAT32 as exigncias so ligeiramente maiores).
Instalando o banco de dados Oracle
Mostraremos aqui alguns dos passos de instalao do Oracle 10g, para a
instalao Personalizada do mtodo Avanado. Insira o CD do produto, ou navegue
at o diretrio onde esto os arquivos de instalao, e inicie o processo.
Quando chegar na tela inicial de instalao, ser necessrio escolher o mtodo de
instalao: Instalao Bsica ou Instalao Avanada. Selecionando Instalao
Bsica o banco de dados ser instalado de forma mais rpida, pois requer uma
comunicao (usurio-mquina) mnima nos passos de instalao. Ser necessrio
informar apenas: se deseja criar o Banco de Dados inicial, o tipo de instalao e a
senha (nesse caso, a mesma senha ser usada para todas as contas).
A Instalao Avanada mais complexa e demorada, permite criar senhas
individuais para as diferentes contas, criar tipos especficos de bancos de
dados, utilizar diferentes grupos de idioma, especificar notificaes de e-mail, e
assim por diante. Selecione o tipo desejado e siga em frente (lembrando que
aqui optamos pelo mtodo Avanado).
Nota: Mesmo que o leitor escolha o mtodo de Instalao Bsica, aconselhamos
no criar o Banco de Dados Inicial junto com a instalao do Oracle. A criao do
banco inicial pode ser feita sem maior dificuldade depois da instalao e sua criao
agora ir apenas tornar a instalao do Oracle mais demorada.
Para criar um novo banco de dados, aps a instalao, inicie o aplicativo Database
Configuration Assistant, atravs do menu Iniciar>Programas>Oracle>Nome dado
durante a instalao>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 especificao da localizao dos arquivos v seo Destino, aceite as
variveis padro ou entre com o nome e diretrio para instalar os componentes do
Oracle. O caminho no deve conter espaos. Para avanar clique em Prximo. Alm
disso, nessa tela deve ser informado o nome da instncia do banco de dados. A
seguir, ser solicitada a escolha do tipo de instalao
(Enterprise, Standard,Standard One ou Personalizado).
Antes de instalar, o resumo dos produtos e arquivos que sero instalados
aparecer, depois clique emInstalar. Durante esse processo, podem ser visualizados
os produtos que esto sendo instalados. Aps essas telas, aconselhamos que deixe
as opes conforme sugerido pelo instalador.
Criando o banco de dados
O Oracle possui uma srie de ferramentas que permitem criar/gerenciar banco de
dados (veja a lista naTabela 3).
Ferramenta Descrio
Oracle Universal Installer Utilizado para instalar, atualizar ou remover componentes de
(OUI) software, alm de permitir a criao do banco de dados
Oracle Database Uma ferramenta que a Oracle desenvolveu com interface grfica e
Configuration Assistant que interage com o OUI ou pode ser utilizada independentemente
(ODCA)
SQL*Plus uma interface primria (via linha de cdigo) para o servidor do
banco de dados. Entre outras funes, permite iniciar e desativar o
banco de dados, criar e executar consultas, adicionar linhas,
modificar dados e criar relatrios personalizados
Oracle Enterprise Interface grfica utilizada para administrar, monitorar e ajustar
Manager (OEM) bancos de dados. Funciona como uma ferramenta de
gerenciamento centralizado de sistemas para os DBAs. Usado para
compartilhar tarefas com outros administradores, alm de conter
ferramentas para administrar servidores paralelos e bancos de
dados replicados
Tabela 3. Ferramentas Oracle de Administrao de Banco de Dados
Aqui ser demonstrado como criar o banco atravs do Assistente de Configurao
de Banco de dados da Oracle (Oracle Database Configuration Assistant ODCA).
Para comear, inicie o ODCA, atravs do
menu Iniciar>Programas>Oracle>Ferramentas de Configurao e Migrao. Na tela
inicial do assistente de instalao apenas clique em Prximo, na tela seguinte
escolha a opo Criar um Banco de Dados e novamente clique em Prximo. Em
seguida selecione Banco de Dados Personalizado. Na tela seguinte iniciam-se
realmente as configuraes.
A etapa seguinte a identificao 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 domnio), e o nome do SID
(System Identifier), que uma referncia para a instncia 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 preferncia, mas no esquea, claro, de digitar o nome correto quando
formos acessar o banco atravs do Delphi).
Nota: aconselhado que voc selecione o nome de banco de dados para o nome
do grupo de trabalho que voc estar usando. Porm, um nome diferente
aceitvel.
O passo seguinte, Opes de Gerenciamento, define a forma como o banco ser
gerenciado: centralmente atravs do Controle de Grade ou se localmente usando o
Controle de BD. Esses recursos fazem parte do OEM.
Nessa parte da criao do banco de dados possvel ativar as notificaes por
e-mail e a rotina diria automtica de backup. Para que o DBA seja avisado por
e-mail sempre que um evento importante ocorrer (backup finalizado, falta de
espao em disco, entre outros) informe o servidor SMTP e o endereo de e-
mail. Para realizar backup diariamente, informe o horrio, o nome do usurio e
a senha.
Nota: A rotina de backup consome grande quantidade de memria RAM e de CPU.
Justamente por isso, o horrio sugerido pela Oracle para incio do evento 2:00 da
manh, horrio em que a maioria das instituies est fechada.
Na tela seguinte, Credenciais de Banco de Dados devem ser especificadas as
senhas para os usurios SYS, SYSTEM, DBSNMP e SYSMAN. possvel criar uma
nica senha para todas as contas de usurios ou definir senhas diferentes para
cada uma delas.
Aps definir a(s) senha(s) clique novamente em Prximo para avanar para a tela
de Localizaes de Arquivos (local fsico onde os dados sero armazenados).
possvel selecionar diferentes localizaes para os arquivos do banco, bastando
selecionar uma das opes onde se deve especificar um local de armazenamento.
Para visualizar/alterar as variveis utilizadas como parmetro para os arquivos de
controle, de dados, deredo logs, entre outros, clique no boto Variveis de
Localizao de Arquivo.
Aconselhamos que sejam mantidas as opes padro, a menos que o leitor queira
utilizar outro disco (HD) para armazenar os dados. No prximo passo, so
especificadas as Configuraes de Recuperao.
A Oracle recomenda que os arquivos de log sejam arquivados em locais diferentes
e, de preferncia, em discos diferentes (imagine que o HD que contm a base de
dados sofra um problema fsico, no ser possvel retornar os dados). Selecione o
local onde os dados sero gravados e clique em Prximo.
Na etapa seguinte, Contedo do Banco de Dados, desmarque todas as opes,
exceto Oracle Text eRepositrio do Enterprise Manager. As opes desmarcadas
referem-se a aplicaes de Data Warehouse,Data Mining e geo-referenciamento.
A prxima etapa, a dcima, refere-se aos Parmetros de Inicializao. Devem ser
configurados parmetros como: memria, bloco de armazenamento (I/O), nmero
de processos, conjunto de caracteres e modo de conexo. Para ver todos os
padres, clique no boto Todos os Parmetros de Inicializao.
Na Tabela 4 esto alguns dos parmetros mais importantes, informaes sobre os
demais parmetros podem ser obtidas na prpria interface. Deixe os valores
conforme sugeridos pelo servidor.
Parmetro Descrio
OPEN_CURSORS Especifica o nmero mximo de cursores (reas
de contexto) abertos que uma sesso pode ter ao
mesmo tempo. Restringe o tamanho do cache de
cursores PL/SQL que a linguagem usa para evitar
nova anlise de instrues re-executadas por um
usurio. O valor deve ser alto o suficiente para
evitar que as aplicaes fiquem sem cursores
abertos.
Faixa de Valores: 1 - limite do SO.
Default: 64
BACKGROUND_DUMP_DEST Especifica o caminho (diretrio ou disco) em que
os arquivos de rastreamento so gravados para os
processos de segundo plano (LGWR, DBW etc.)
durante as operaes do Oracle. Define tambm a
localizao do arquivo de alerta do banco de
dados que registra eventos e mensagens
significativos.
Faixa de Valores: Qualquer nome de diretrio
vlido.
Default: ORACLE_HOME/rdbms/log (depende do
SO).
CLUSTER_DATABASE Definida como True para ativar a
opo clusters de Aplicao 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 vrios
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 diretrio que especifica a localizao
do dumpcentral (para UNIX).
Faixa de Valores: Qualquer nome de diretrio
vlido.
Default : ORACLE_HOME/dbs
DB_BLOCK_SIZE O tamanho (em bytes) de um bloco de banco de
dados. definido na criao do banco e no 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 padro.
Faixa de Valores: Pelo menos 16M.
Default: 48M
DB_FILE_MULTIBLOCK_READ_COUNT O nmero mximo de blocos lidos durante uma
operao de I/O (entrada/sada) que envolve uma
varredura seqencial completa. Obviamente,
depende do SO.
Default: 8
DB_CREATE_FILE_DEST e Localizao padro do arquivo backup e
DB_RECOVERY_FILE_DEST de recovery, respectivamente. Recomenda-se que
ambos estejam localizados em discos diferentes
para fins de proteo de dados e de desempenho.
PROCESSES Especifica o nmero mximo de processos de
usurios do SO que se conectam simultaneamente
a um Oracle Server.
Default: 150
SESSIONS Especifica o nmero total de sesses de usurios e
do sistema. O valor padro deve ser maior do que
PROCESSES para permitir sesses recursivas.
Faixa de Valores: Qualquer valor inteiro
Default: Derivado (1.1 * PROCESSES + 5)
Tabela 4. Parmetros de inicializao. Fonte: Oracle
Na pgina Armazenamento de BD so configuradas as localizaes das tablespaces,
dos arquivos de dados, segmentos de Rollback e Grupos de Redo Logs. Se possvel
informe espaos em discos diferentes para os dois ltimos.
A dcima segunda e ltima etapa permite, alm da criao do banco agora
configurado, a criao de umbanco de dados de gabarito baseado nas informaes
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 criao do banco vai depender exclusivamente do hardware,
portanto, dependendo do equipamento utilizado, o processo de criao pode ser
longo.
Configurao dos arquivos TNSNAMES e LISTENER
Os arquivos [Link] e [Link] so utilizados para armazenar as
informaes necessrias para que as estaes de trabalho (clientes) consigam
conectar-se ao servidor Oracle. Os arquivos esto armazenados na
pasta %ORACLE_HOME%\db_1\NETWORK\ADMIN.
Para cada banco de dados criado no servidor adicione no arquivo [Link] uma
seo idntica a mostrada na Listagem 1. Uma vez que o arquivo for criado em
uma mquina, copie-o para todas as mquinas cliente que trabalharo com o
banco.
Listagem 1. Informaes do arquivo [Link]
# Arquivo padro
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 = [Link])(PORT = 1521)))
(CONNECT_DATA =
(SERVICE_NAME = CLUBE)))
Tambm ser necessrio fazer uma pequena correo no arquivo [Link].
Localize no arquivo a seoSID_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
instalao escolhido tenha sido diferente do padro).
Listagem 2. Informaes do arquivo [Link]
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)))
Servios
Aps criar o banco, verifique os servios do servidor (Iniciar>Painel de
Controle>Ferramentas Administrativas>Servios). O Oracle iniciou
automaticamente o servio OracleDBConsoleCLUBE. Esse servio permite gerenciar
o banco de dados via browser (tente acessar o
endereo[Link] embora seja til, consome grande
quantidade de memria. Aconselha-se que esse servio seja parado e seu modo de
inicializao seja configurado como Manual.
Basicamente, so necessrios apenas dois servios para que o Oracle funcione
corretamente:OracleOraNomeInstalacaoTNSListener que realiza a conexo
e OracleServiceCLUBE que gerencia o banco de dados criado (o Oracle cria uma
instncia desse servio para instncia 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 emIniciar>Programas>Oracle>Desenvolvimento de
Aplicaes. Na tela inicial informe o login (SYS ou SYSTEM), a senha e o nome da
conexo (CLUBE nesse caso).
Nota: Evidentemente que um utilitrio de linha de comando no a melhor opo
para se trabalhar com o banco de dados. Na seo Links deste artigo so citadas
trs ferramentas que tornam esse trabalho bem menos rduo.
Realizada a identificao 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-primria (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
Criao 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 nmero seqencial. Seria o mesmo que o tipo de dado auto-
incremento presente em outros bancos, no fosse o caso dela no ser incrementada
automaticamente. Para saber o valor atual utiliza-se nome_sequence.CurrVal. Para
incrementar seu valor usado o comandonome_sequence.NextVal (um exemplo de
utilizao pode ser visto na Listagem 5).
Comandos avanados
O Oracle traz consigo uma srie de funes que so de grande valia para o
desenvolvedor. A seguir so mostrados alguns deles.
DECODE - Uma espcie de comando IF. Verifica o valor de um campo e retorna
uma expresso diferente para ele. Exemplo:
SELECT DECODE(tipo_pessoa,
'F', 'Pessoa Fsica',
'J', 'Pessoa Jurdica') 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 cdigo com cinco zeros esquerda
se for uma pessoa fsica ou com trs se for uma pessoa jurdica:
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 aps a
vrgula. No segundo,se o valor no for nulo, retorna o valor especificado aps a
primeira vrgula, sendo nulo retorna o valor do ltimo argumento. Exemplo:
SELECT NVL(codigo,0), NVL2(nome, 'No Nulo', 'Nulo')
FROM cliente
ADD_MONTHS, NEXT_DAY e LAST_DAY - Insere X ms (es) na data
especificada, seleciona o prximo dia do ms onde o dia da semana seja igual ao
passado no segundo argumento (em ingls obrigatoriamente) e retorna o ltimo dia
do ms 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, ms 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 espaos
do campo nome:
SELECT REPLACE(nome, ' ')
FROM cliente
MINUS - Especifica uma operao de subtrao de conjunto (A B). Pode ser
usado em substituio a expresses do tipo In ou Not In, entretanto sua execuo
muito mais rpida. Suponha que no banco de dados existisse uma tabela com o
ID de todos os clientes que esto em dvida com a empresa. Uma maneira de
mostrar os clientes no 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 ligao no diferente dos outros
bancos, de qualquer forma, mostraremos aqui como ela deve ser feita.
Conexo via BDE - Inicie uma nova aplicao 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 opo Oracle em Drive Name. Clique no boto Default e
altere as seguintes propriedades:
SERVER NAME= CLUBE
USER NAME= nome_usuario
SQLQRYMODE= server
PASSWORD= senha_usuario
Feche a janela de parmetros, e selecione True para a propriedade Connected. A
conexo via BDE est estabelecida. Agora basta utilizar os
componentes Table, Query e UpdateSQL da mesma forma que o leitor utiliza com
outros bancos.
Conexo via dbExpress - Assim como no BDE, a conexo via DBX idntica aos
demais bancos de dados. Entretanto, aqui preciso ressaltar que os drivers padro
do dbExpress possuem uma srie debugs. Para se livrar de falhas de conexo,
reconhecimento de tipos de dados e outra srie de problemas altamente
recomendado que o leitor utilize um driver de terceiros para realizar a conexo.
Uma outra opo o dbExpress Plus (veja edio 41).
Um bom driver o fornecido pela Core Lab ([Link]/dbx). Sua instalao
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 existncia. Como nem tudo na vida perfeito, preciso dizer que
esse driver no grtis.
Instalando ou no um driver de terceiro, a forma de conexo a mesma. Inicie
uma nova aplicao emFile>New>Application. Adicione um Data Module
(File>New>Data Module). Coloque um SQLConnection no Data Module. D um
duplo clique no componente, clique no boto Add Connection (representado pelo
sinal +) configure a propriedade Name como ClubeDelphi e selecione a
opo Oracle (Core Lab) em Drive Name.
Note que a opo Oracle tambm est na lista, ou seja, a instalao de drives de
terceiros, no exclui a possibilidade de conexo padro do DBX. Clique em OK e
altere os seguintes parmetros de conexo:
DataBase= CLUBE
User_Name= nome_usuario
Password= senha_usuario
Fecha a janela de parmetros e selecione True para a propriedade Connected para
estabelecer a conexo. Assim como no BDE, agora basta utilizar os componentes da
biblioteca como em qualquer outro banco de dados. A instalao do driver ainda
nos traz um novo componente na paleta dbExpress do Delphi, oCRSQLConnection.
Existem outras formas de acessar o Oracle a partir de aplicaes Delphi. Veja os
boxes Oracle Data Access Components e Acessando o Oracle no .NET.
Concluses
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 tambm
alguns comandos SQL exclusivos do Oracle.
Links
[Link]/technology/database
Site oficial do Banco de Dados Oracle
[Link]/technology/oramag/oracle/05-sep/[Link]
Artigo de Arup Nanda sobre TDE, tambm publicado na Oracle Magazine de
Set/Out 2005.
[Link]/sql_navigator
Site do SQL Navigator (ideal para programadores)
[Link]/toad
Site do TOAD (ideal para DBAs)
[Link]/[Link]
Site do PL/SQL Developer (para programadores)