Sunteți pe pagina 1din 12

SGBD ORACLE

Edgar Roque
Leandro Farias
Manoel Serafim Neto
Rodrigo da Silva Gonçalves
Thiago da Silva Gonçalves

Instituto Ensino Superior da Paraíba – IESP


Faculdade de Tecnologia da Paraíba – FATEC

Resumo
Oracle Corporation é uma companhia que desenvolve softwares corporativos. Neste
artigo será abordado o seu principal produto, o sistema de gestão de bancos de dados
relacionais chamado Oracle. Um breve histórico desde sua criação até as versões atuais;
principais empresas mundiais que o utiliza; tipos de dados existentes em suas
aplicações; plataformas que rodam o Banco de Dados e algumas funções peculiares.
Abstract
Oracle Corporation is a company that develops enterprise software. This article will
address the main product, the management system relational database called Oracle. A
brief history since its inception to the present version, leading companies using it, kind
of existing data in their applications, platforms that run the database and some features
peculiar.

1. História da Oracle e Perfil Empresarial [1]


Oracle Corporation fundada em 1977 tendo como fundador Larry Ellison, Bob Miner e
Ed Oates, os co-fundadores. Atende acerca de 345 mil organizações em todo o mundo,
entre elas, 98 das empresas que figuram na lista da Revista Fortune 100. Atualmente
conta com 85 mil em todo o mundo. A Oracle criou a linguagem de programação
PL/SQL1, utilizada no processamento de transações. A versão Oracle Database 11g é a

1
PL/SQL (Expressão inglesa Procedural Language/Structured Query Language) é uma extensão da linguagem padrão SQL para o SGBD Oracle da
Oracle Corporation. É uma Linguagem Procedural da Oracle que estende a linguagem SQL. Permite que a manipulação de dados seja incluída em
unidades de programas. Blocos de PL/SQL são passados e processados por uma PL/SQL É a linguagem básica para criar programas complexos e
poderosos, não só no banco de dados, mas também em diversas ferramentas Oracle.

1
última (2007) lançada pela Oracle Corporation. Existe também uma versão livre, Oracle
Database 10g Express Edition, disponível para download na internet. Fundada em 1º de
setembro de 1988, a Oracle do Brasil, tem sede em São Paulo (SP) e filiais em Belo
Horizonte (MG), Brasília (DF), Porto Alegre (RS) e Rio de Janeiro (RJ). A Oracle do
Brasil conta com mais de 600 parceiros. Alguns clientes no País: Alcoa, TAM, Ticket,
Tigre, Telefonica, General Motors, Sky Brasil, L'Óreal, CVC, Banco Toyota, Schahin
Engenharia, entre outros.

2. Tipos de Dados Oracle [2]


a) Tipos de Dados Caracteres: CHAR (size) – Um campo de tamanho fixo para
caracteres. Pode chegar ao máximo de 2000 bytes. Em outras palavras, pode
armazenar 2000 caracteres. Se o tamanho não for especificado o valor padrão de
um byte será assumido; NCHAR (size) – Um campo de tamanho fixo para
caracteres, onde o conjunto de caracteres (character set) é determinado por sua
definição. O tamanho máximo desse campo é de 2000 caracteres. O objetivo é
trabalhar com caracteres Unicode; VARCHAR2 (size) - Um campo de tamanho
variável para caracteres. Pode armazenar no máximo 4000 bytes; NVARCHAR2
(size) - Um campo de tamanho variável para caracteres, onde o conjunto de
caracteres (character set) é determinado por sua definição. O tamanho máximo
desse campo é de 4000 caracteres. O objetivo é trabalhar com os caracteres
Unicode; LONG - Um campo de tamanho variável para caracteres. O objetivo é
armazenar textos longos. Pode armazenar no máximo 2GB.
b) Tipos de Dados Numéricos: NUMBER (precisão, escala) - Um campo de
tamanho variável. Precisão é o número total de dígitos que irão compor as casas
decimais. Precisão pode se encontrar na faixa de 1 a 38. Escala pode se
encontrar na faixa de -84 a 127. Se os 2 parâmetros forem informados o número
é de ponto flutuante. Se apenas um parâmetro for informado torna-se um número
inteiro.
c) Tipos de Dados Data e Hora: DATE - Um campo de data fixo de 7 bytes que é
usado para armazenar datas. A faixa de datas que podem ser armazenadas é a
seguinte: 01/01/4712 A.C. a 31/12/9999 D.C.; TIMESTAMP (precisão) -
Campo de tamanho variável na faixa de 7 a 11 bytes, que é usado para
representar um valor data/hora. Ele inclui tanto a data quanto a hora. A precisão
determina quantos números comporão os segundos. A precisão dos segundos

2
varia de 0 a 9 com o padrão 6; TIMESTAMP (precisão) WITH TIME ZONE -
Campo de tamanho fixo de 13 bytes, que representa um valor data/hora e
também armazena a time zone; TIMESTAMP (precisão) WITH LOCAL TIME –
Campo de tamanho variável na faixa de 7 a 11 bytes. É similar ao tipo anterior.
A diferença é que ele armazena a time zone do banco de dados e recupera a time
zone do cliente.
d) Tipos de Dados Intervalos: INTERVAL DAY (day_precision) TO SECOND
(second_precision) - Campo de tamanho fixo de 11 bytes que representa um
período de tempo. Ele inclui dias, meses, horas, minutos e segundos;
INTERVAL YEAR (year_precision) TO MONTH - Campo de tamanho fixo de
5 bytes que representa um período de tempo. Inclui anos e meses.
e) Tipos de Dados Binários: RAW (size) - Campo de tamanho variável que
armazena dados em formato binário. O tamanho máximo para esse tipo é de
2000 bytes; LONG RAW - Campo de tamanho variável que armazena dados em
formato binário. O tamanho máximo para esse tipo é 2 GB; BLOB - Binary
Large Object é um campo que armazena dados binários não estruturados. Seu
tamanho máximo é de 4 GB; CLOB - Caracter Large Object é um campo que
armazena caracteres até um tamanho máximo de 4 GB; NCLOB - National
Character Large Object é um campo que armazena caracteres comuns e
Unicode e pode chegar a 4GB; BFILE - Um arquivo binário externo. O tamanho
máximo é de 4 GB. Esse tamanho também é limitado pelo S.O.
f) Tipos de Dados Rows: ROWID - Um tipo de dado que contem dados binários e
é utilizado para representar o endereço de um registro; UROWID - Universal
ROWID é o tipo de dado usado para armazenar o endereço lógico e físico de um
registro de uma tabela organizada por índice.

3. Tipos de Plataformas possíveis de rodar o Banco de Dados Oracle [3]


O banco de dados Oracle Database roda nos seguintes sistemas operacionais: Apple
Mac OS X Server; HP HP-UX: PA-RISC, Itanium; HP Tru6464 UNIX: Alpha; HP
Open V MS: Alpha, Itanium; IBM AIX5L: IBM POWER; IBM z/OS: zSeries; Linusx:
x86-64, PowerOC, zSeries, Itanium; Microsoft Windows: x86, x86-64, Itanium; Sun
Solaris: SPARC, x86, x-86-64

3
4. Versões existentes no mercado [4]
Além das diferentes versões do software de gerenciamento de banco de dados Oracle, a
Oracle Corporation subdivide seu produto em "edições" variáveis - aparentemente por
razões de marketing e controle de licenças.
 Standard Edition (SE) contém a funcionalidade básica de banco de dados. A
Oracle Corporation licencia este produto na base de usuários ou de sockets,
normalmente para servidores com um à quatro UCPs 2. Se o número de UCPs
exceder 4, o usuário deve migrar para a licensa Enterprise. SE não possui limite
de memória e pode utilizar clusterização com o Oracle RAC sem custo
adicional.
 Enterprise Edition (EE) inclue mais funcionalidades que a 'Standard Edition',
especialmente nas áreas de performance e segurança. A Oracle Corporation
licencia este produto na base de usuários ou de núcleos de processamento,
normalmente para servidores com um ou mais UCPs. EE não tem limite de
memória e pode utilizar clusterização usando o software Oracle RAC.
 Standard Edition One, introduzido com o Oracle 10g, possui algumas restrições
de funcionalidades adicionais. A Oracle Corporation comercializa-o para uso
em sistemas com uma ou duas UCPs. Ela não possui limitações de memória.
 Express Edition ('Oracle Database XE'), introduzido em 2005, oferece o Oracle
10g livre para distribuição nas plataformas Windows e Linux (com uma
limitação de apenas 150 MB e restrita ao uso de apenas uma UCP, um máximo
de 4 GB de dados de usuário e 1 GB de memória). O suporte para esta versão é
feito exclusivamente através de fóruns on-line, sem o suporte da Oracle.
 Oracle Personal Edition fornece a funcionalidade de "alto fim" da Enterprise
Edition mas é comercializada (e licenciada) para desenvolvedores específicos
que trabalham em estações de trabalho pessoais.
 Oracle Database Lite, destinada para rodar em dispositivos móveis. O banco de
dados, localizado parcialmente no dispositivo móvel, pode sincronizar com uma
instalação baseada em servidor.

2
Central Processing Unit (Unidade central de processamento, em português) ou o processador é a parte de um sistema de computador que executa
as instruções de um programa de computador, e é o elemento primordial na execução das funções de um computador.

4
5. Funções internas do BD Oracle [5]
A Oracle oferece através da linguagem PL/SQL muitos recursos para utilização e
tratamentos de dados, como funções matemáticas, de datas e caracteres. A maioria dos
sistemas de informações da atualidade precisam manipular seus dados e necessitam
dessas funções para consultar seu histórico.
O armazenamento e consulta de dados, o próprio SGBD oferece recursos. Estes recursos
são funções que contém parâmetros de formatação permitindo a manipulação de
conteúdo como, data, caracteres e valores numéricos no servidor do banco de dados.
A tabela abaixo ilustra algumas funções de manipulação de caracteres.
Tabela 1
Funções de manipulação de String(caracter)
LOWER(string) Converte uma string em caixa alta para caixa baixa.
Select LOWER(nome) from Funcionario
INITCAP(string) Converte a primeira letra da palavra em maiúscula
Select INITCAP(nome) from funcionario
CONCAT(string) Serve para juntar as colunas em apenas uma sequência.
Select CONCAT(CONCAT(nome,´- ´), endereço) from
funcionario

A tabela abaixo ilustra algumas funções de manipulação de data.


Tabela 2
Funções de manipulação de data
DATEDIFF (parte, data Subtrai a data inicial da data final, indicando o
inicial, data final) resultado na unidade definida em "parte".
Select nome, DATEDIFF (year, datanasc, GetDate())
idade from funcionario
DATENAME (parte, data) Retorna o nome da parte de uma data.
Select nome, DATENAME (MONTH, datanasc)
MesDeNasc from Funcionario
MONTHS_BETWEEN Retorna a diferença de duas datas em meses.
(data1, data2) Select nome, round(MONTHS_BETWEEN('2010-10-
20', '2002-05-08'), 1) qtdMes from funcionario
where codigo = 4

5
A tabela abaixo ilustra algumas funções de matemática.
Tabela 3
Funções matemáticas
ROUND(numero, precisão) Arredonda o número fornecido de acordo com a
precisão informada.
Select salario, ROUND(salario, -2) from funcionario
MOD(numero, divisor) Retorna o resto de uma divisão.
Select salario, MOD(salario,3) from funcionario
POWER(numero, potência) Retorna o valor elevado à potência informada.
Select salario, POWER(salario, 2) from funcionario

6. Procedures [6]
Uma procedure nada mais é do que um bloco PL/SQL nomeado. Pode ser compilado e
armazenado no banco de dados como um objeto de schema. Graças a essa característica
as procedures são de fácil manutenção, o código é reutilizável e permitem que
trabalhemos com módulos de programa. A sintaxe básica de uma procedure é:

CREATE [OR REPLACE] PROCEDURE [schema.]nome_da_procedure


[(parâmetro1 [modo1] tipodedado1,
parâmetro2 [modo2] tipodedado2,
...)]
IS|AS
Bloco PL/SQL

Onde:
REPLACE - indica que caso a procedure exista ela será eliminada e substituída pela
nova versão criada pelo comando; BLOCO PL/SQL - inicia com uma cláusula BEGIN
e termina com END ou END nome_da_procedure; NOME_DA_PROCEDURE -
indica o nome da procedure; PARÂMETRO - indica o nome da variável PL/SQL que
é passada na chamada da procedure ou o nome da variável que retornará os valores da
procedure ou ambos. O que irá conter em parâmetro depende de MODO; MODO -
Indica que o parâmetro é de entrada (IN), saída (OUT) ou ambos (IN OUT). É
importante notar que IN é o modo default, ou seja, se não declararmos nada o modo do
nosso parâmetro será, automaticamente, IN; TIPODEDADO - indica o tipo de dado do
parâmetro. Pode ser qualquer tipo de dado do SQL ou do PL/SQL. Pode usar
referências como %TYPE, %ROWTYPE ou qualquer tipo de dado escalar ou

6
composto. Atenção: não é possível fazer qualquer restrição ao tamanho do tipo de dado
neste ponto; IS|AS - a sintaxe do comando aceita tanto IS como AS. Por convenção
usamos IS na criação de procedures e AS quando estivermos criando pacotes; BLOCO
PL/SQL - indica as ações que serão executadas por aquela procedure.

 Exemplo de Criação:
CREATE PROCEDURE stp_Cidade (
P_codigo Cidade.Codigo%Type,
P_nome Cidade.nome%Type,
P_uf Cidade.uf%Type,
P_pais Cidade.pais%Type) IS
BEGIN
Delete Cidade Where Codigo = P_codigo;
END;

 Exemplo de Alteração:
REPLACE PROCEDURE stp_Cidade (
P_codigo Cidade.Codigo%Type,
P_nome Cidade.nome%Type,
P_uf Cidade.uf%Type,
P_pais Cidade.pais%Type) IS
BEGIN
Delete Cidade Where Codigo = P_codigo;
END;

 Exemplo de Exclusão:
DROP PROCEDURE stp_Cidade;

7. Funções [7]
Uma função no Oracle é muito semelhante a uma procedure. Ambos aceitam
argumentos, que podem ter qualquer modo. Ambos são formas diferentes de blocos de
PL/SQL, com seções declarativas, executável e de exceções. Ambos podem ser
armazenados na base de dados e declarados num bloco. Porém, uma chamada de
procedure é uma instrução PL/SQL por si só, enquanto que uma chamada de função é
chamada como parte de uma expressão.

 Sintaxe das Funções


A sintaxe para criar uma função armazenada é muito semelhante a sintaxe de um
procedure.

7
Create [OR REPLACE] FUNCTION nome_função
[(argumento[{IN | OUT | IN OUT}] tipo,

[(argumento[{IN | OUT | IN OUT}] tipo,
RETURN tipo_retorno { IS | AS }
corpo_funcao

Em que nome_função e o nome da função, argumento e tipo são iguais ao dos


procedures, tipo_retorno e o tipo do valor que a função devolve e corpo_função é o
bloco de PL/SQL que contém o código da função. Tal como nas procedures, a lista de
argumentos é opcional.

Para alterar uma função:


ALTER FUNCTION [schema.]função
|[COMPILE [DEBUG]]
|[nome_parâmetro = valor_parâmetro]|[REUSE SETTINGS];

Para excluir uma função:


Drop FUNCTION nome_função;

8. Índices (index) [8]


Os index são mecanismos criados pelos bancos de dados para melhorar a recuperação
das informações contidas nas tabelas.
 Utilização
Um Exemplo clássico de utilização é quando queremos encontrar um número ou um
nome em uma tabela, primeiro faz uma busca no nó Root depois parte para o nó
intermediário onde ele faz uma busca na cabeças de dados, localizado desse, para o
nível chamado de folha retornado o registro.
 Quais são os tipos e como criar um index.
Encontramos dois tipos de index conhecidos como clustered ou nonclustered, onde
teremos em uma tabela só um index clustered que geralmente é criado quando criamos a
primary key (chave primaria) permitido assim que na mesma tabela tenhamos vários
indexs nonclustered, onde para podemos criar um index temos que obedecer o seguintes
critério de 16 colunas e o tamanho do nível de index de aproximadamente 900 bytes.
Index Clustered: Como falamos anteriormente o index clustered é um index criado
geralmente quando criamos uma primary key (chave Primaria). Ele Possui uma
ordenação a nível de tabela.

8
Index Non-Clustered: Possui uma ordenação a nível de página possuindo as mesmas
restrições dos index clustered.
As vezes temos que recuperar as informações das tabelas o mais rápido possível porém
as vezes usamos os index em uma determinada consulta, porém não obtemos as
informações com a rapidez que foram solicitadas, para tentar solucionar esse problema
foi inserido a opção de filtro, tal opção só é demonstrada quando usamos os index em
conjunto da clausula ‘Where’ podendo aumentar a performance.
Para trabalhar com clausula ‘Where’ em conjunto com index temos algumas restrições:
 Não podemos usar Non-Clustered.
 Não podemos usar colunas computadas.
Temos sempre que ter o cuidado quando trabalhamos com index para não deixa as
paginas de dados chegarem ao seu tamanho máximo, para auxiliar, o banco possui duas
opções, a Fillfactor e a Pad_Index, onde a opção FillFactor especifica uma
porcentagem de espaço livre nos níveis, onde esse espaço será usado na criação ou
recriação de um index e quando usamos o Pad_Index estamos aplicando a porcentagem
de espaço livre do nível FillFactor nos níveis intermediário.
Outro recurso na criação de index que é muito importante na hora de criá-lo é a cláusula
‘With On Line’ que por padrão vem desativada, se não ativarmos essa cláusula no
momento que fomos criar um index tudo ocorre normalmente, porém quando
precisamos recriar algum index não conseguiremos fazer qualquer seleção ou alteração
nos dados das tabelas, pois ficar bloqueado o acesso as informações.

A sintaxe básica para a criação de um index é:


CREATE [ TIPO ] INDEX [NOME]
ON [TABELA]
(COLUNAS)

Onde:
Tipo - Os index podendo ser unique, clustered ou no clustered; Nome - Nome que
devemos da ao index; Tabela - Nome da entidade que ira criar o index; Colunas -
Nome das colunas que iremos usar respeitando as restrições.

9. Trigers [9]
São procedimentos que podem ser gravados em Java, PL/SQL ou C. São executados (ou
disparados) implicitamente quando uma tabela é modificada, um objeto é criado ou

9
ocorrem algumas ações de usuário ou de sistema de banco de dados. As triggers são
similares as stored procedures diferindo, apenas, na maneira como são chamadas. A
trigger é executada implicitamente quando ocorre algum evento de trigger, enquanto a
stored procedure deve ser executado explicitamente.
Ex.:
CREATE OR REPLACE TRIGGER Print_salary_changes
BEFORE DELETE OR INSERT OR UPDATE ON Emp_tab
FOR EACH ROW
WHEN (new.Empno > 0)
DECLARE
sal_diff number;
BEGIN
[…]
END;

10. Transação [10]


Uma transação é uma unidade lógica de trabalho que contém uma ou mais instruções
SQL. Os efeitos de todas as instruções SQL em uma transação podem ser todos commit
(aplicado ao banco de dados) ou todos de rolled back (desfeito a partir do banco de
dados). A transação termina quando ela é confirmada ou revertida, quer explicitamente
um COMMIT ou ROLLBACK declaração ou implicitamente quando uma instrução DDL é
emitido. Para ilustrar o conceito de transações, consideremos um banco de dados
bancários. Quando um cliente do banco transfere dinheiro de uma conta poupança para
uma conta corrente, a transação pode consistir em três operações distintas: diminuir a
conta poupança; incremento da conta corrente; registrar a transação no diário de
transações.
O banco de dados deve permitir duas situações. Se todas as três instruções SQL podem
ser executadas para manter as contas em equilíbrio, os efeitos da transação podem ser
aplicados ao banco de dados. No entanto, se um problema, tais como insuficiência de
fundos, número de conta inválida, ou uma falha de hardware impede que uma ou duas
das declarações no término da transação, toda a transação deve ser revertida de modo
que o saldo de todas as contas estão corretas.
 Transações Commit
Commit de uma transação significa tornar permanentes as alterações realizadas
pelas instruções SQL dentro da transação.
Committing significa que um usuário tenha solicitado explicitamente ou
implicitamente que as mudanças na operação torna-se permanente. Um pedido

10
explícito significa que o usuário publicou um COMMIT comunicado. Um pedido
implícito pode ser feita através do término normal de uma aplicação ou em
linguagem de definição, por exemplo. As alterações introduzidas pelas instruções
SQL da sua transação se tornam permanentes e visíveis a outros usuários somente
após sua transação for confirmada. Somente os usuários de outras operações que
começou depois vão ver as alterações confirmadas.
 Nível de instrução Rollback
Se em algum momento durante a execução de uma instrução SQL acontecer um erro,
todos os efeitos da declaração são revertidas. O efeito da reversão é como se essa
afirmação nunca tivesse sido executado. Esta operação é um nível de rollback.
Um exemplo de erro descoberto durante a instrução é tentar inserir um valor duplicado
em uma chave primária. SQL único envolvido em um impasse (concorrência para os
mesmos dados) também pode causar um nível de rollback.

11. Vantagens e desvantagens Oracle [11]


Vantagens: Grande otimização de performance para dados em grande quantidade;
Robustez, segurança dos dados, confiabilidade, organização racionalizada e grande
capacidade de expansão (escalabilidade) do sistema; Permite carregamento de diversos
tipos de dados binários como, por exemplo, imagens em geral, filmes, sons, etc.; Trata-
se de um sistema naturalmente multi-usuário, permitindo a edição, atualização, consulta
simultânea de dados/mapas/metadados por diversas pessoas, inclusive via
internet/intranet (com o uso de sistemas de disponibilização, como o ArcIMS); Permite
a criação de programas que fazem carregamento automático de informações, verificação
de consistência, limpeza entre outras funções, através de funções internas do banco;
Permite intercâmbio com diversas tecnologias (programação de interfaces em
linguagens de programação com VB, C, Java, ESRI/aml).

Desvantagens: Exige especialização técnica, seja para administração do banco (tarefas


como backup/recovery, performance tunning, gerenciamento de usuários/segurança,
etc.), bem como para atividades como programação para geração de saídas adequadas e
derivação de dados; Alto custo da licença e do hardware necessário para rodar os
softwares (uma licença Oracle Standard Server mais um módulo Spatial (opcional),
uma licença de ESRI ArsSDE e uma licença de Windows 2000 ou Unix – só para a
parte do servidor).

11
12. Referências
[1]http://www.oracle.com/global/br/corporate/pressroom/FACTSHEET_Brasil_Abril.p
df (acesso em 15/09/2010)
[2]http://pt.efreedom.com/Question/1-1377797/Lista-de-tipos-de-dados-Oracle (acesso
em 14/09/2010)
[3] http://www.oracle.com/index.html (acesso em 14/10/2010)
[4]http://www.oracle.com/global/br/corporate/pressroom/FACTSHEET_Brasil_Abril.p
df (acesso em 15/10/2010)
[5]http://pgdocptbr.sourceforge.net/pg80/sql-createfunction.html (acesso em
23/10/2010)
[6]http://www.linhadecodigo.com.br/artigo/335/PL_SQLProcedures-e-
Fun%C3%A7%C3%B5es.aspx (acesso em 16/11/2010)
[7]http://www.linhadecodigo.com.br/artigo/335/PL_SQLProcedures-e-
Fun%C3%A7%C3%B5es.aspx (acesso em 16/11/2010)
[8]http://www.devmedia.com.br/post-15590-Trabalhado-com-Index-SQL-
SERVER.html (acesso em 22/10/2010)
[9]http://www.linhadecodigo.com.br/artigo/322/oracletrigger.aspx (acesso em
16/11/2010)
[10]http://download.oracle.com/docs/cd/B10501_01/server.920/a96524/c17trans.htm
(acesso em 16/11/2010)
[11]http://www.youblisher.com/p/55209-Trabalho-Banco-de-Dados-Oracle/ (acesso em
16/11/2010)

12

S-ar putea să vă placă și