Buscar

BANCO DE DADOS E GESTÃO DA INFORMAÇÃO

Prévia do material em texto

SISTEMA DE ENSINO
BANCO DE DADOS 
E GESTÃO DA 
INFORMAÇÃO
Banco de Dados Oracle e PL/SQL
Livro Eletrônico
2 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Sumário
Banco de Dados Oracle e PL/SQL ...........................................................................................................................3
1. Conceitos de Banco de Dados Oracle ...............................................................................................................3
1.1. Introdução ao Banco de Dados Oracle .........................................................................................................3
1.2. Acesso a Dados Oracle .........................................................................................................................................6
1.3. Gerenciamento de Transações Oracle .........................................................................................................7
1.4. Arquitetura do Banco de Dados Oracle ......................................................................................................9
1.5. Estruturas de Armazenamento de Banco de Dados Oracle ..........................................................14
2. PL/SQL ...........................................................................................................................................................................29
Programação do Lado do Servidor ......................................................................................................................30
Visão Geral do PL/SQL ................................................................................................................................................31
Visão Geral de Gatilhos (Triggers) .....................................................................................................................37
Resumo ................................................................................................................................................................................41
Questões de Concurso ...............................................................................................................................................43
Gabarito ..............................................................................................................................................................................49
Gabarito Comentado ...................................................................................................................................................50
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
3 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
BANCO DE DADOS ORACLE E PL/SQL
1. ConCeitos de BanCo de dados oraCle
O banco de dados Oracle (Oracle DB) é um sistema de gerenciamento de banco de dados 
relacional (RDBMS, Relational Database Management System) da Oracle Corporation.
O Oracle é um dos SGBDs mais utilizados em aplicações corporativas. Robusto, confiável 
e seguro, a qualidade dessa solução justifica o investimento feito para poder explorar os recur-
sos do produto.
1.1. introdução ao BanCo de dados oraCle
Toda organização tem informações que devem ser armazenadas e gerenciadas para aten-
der aos seus requisitos. Por exemplo, uma organização deve coletar e manter registros dos 
seus funcionários, e esta informação deve estar disponível para aqueles que dela necessitam, 
por exemplo, uma área de recursos humanos.
Um sistema de informação é um sistema formal para armazenar e processar informações. 
Um sistema de informação pode ser um conjunto de caixas de papelão contendo pastas de papel 
manilha juntamente com regras de como armazenar e recuperar as pastas. No entanto, a maioria 
das empresas hoje usa um banco de dados para automatizar seus sistemas de informação.
Um banco de dados é uma coleção organizada de informações tratadas como uma unida-
de. A finalidade de um banco de dados é coletar, armazenar e recuperar informações relacio-
nadas para uso por aplicativos de banco de dados.
Sistema de Gerenciamento de Banco de Dados (SGBD)
Um sistema de gerenciamento de banco de dados (SGBD) é um software que controla o 
armazenamento, organização e recuperação de dados.
Normalmente, um SGBD tem os seguintes elementos:
• Código do kernel: este código gerencia a memória e o armazenamento do SGBD.
• Repositório de metadados: esse repositório geralmente é chamado de dicionário de dados.
• Linguagem de consulta: essa linguagem permite que os aplicativos acessem os dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
4 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Um aplicativo de banco de dados é um programa de software que interage com um banco 
de dados para acessar e manipular dados.
A primeira geração de sistemas de gerenciamento de banco de dados (SGBD) incluiu os 
seguintes tipos:
• Hierárquico: um banco de dados hierárquico organiza os dados em uma estrutura de 
árvore. Cada registro-pai possui um ou mais registros-filho, semelhante à estrutura de 
um sistema de arquivos.
• Rede: um banco de dados de rede é semelhante a um banco de dados hierárquico, exceto 
que os registros têm um relacionamento muitos-para-muitos em vez de um para muitos.
Os sistemas de gerenciamento de banco de dados (SGBD) anteriores armazenavam dados 
em relacionamentos rígidos e predeterminados. Como não existia nenhuma linguagem de defi-
nição de dados, era difícil alterar a estrutura dos dados. Além disso, esses sistemas careciam 
de uma linguagem de consulta simples, o que dificultava o desenvolvimento de aplicativos.
Modelo Relacional
Um banco de dados relacional é um banco de dados que está em conformidade com o 
modelo relacional. O modelo relacional tem os seguintes aspectos principais:
• Estruturas: objetos bem definidos armazenam ou acessam os dados de um banco de 
dados.
• Operações: ações claramente definidas permitem que os aplicativos manipulem os da-
dos e as estruturas de um banco de dados.
• Regras de integridade: as regras de integridade controlam as operações nos dados e 
estruturas de um banco de dados.
Um banco de dados relacional armazena dados em um conjunto de relações simples. Uma 
relação é um conjunto de tuplas. Uma tupla é um conjunto não ordenado de valores de atributos.
Uma tabela é uma representação bidimensional de uma relação na forma de linhas (tuplas) 
e colunas (atributos). Cada linha em uma tabela tem o mesmo conjunto de colunas. Um banco 
de dados relacional é um banco de dados que armazena dados em relações (tabelas). Por exem-
plo, um banco de dados relacional pode armazenar informações sobre funcionários da empresa 
em uma tabela de funcionários, uma tabela de departamentos e uma tabela de salários.
Sistema de Gerenciamento de Banco de Dados Relacional (RDBMS)
O modelo relacional é a base para um sistema de gerenciamento de banco de dados rela-
cional (SGBDR). Um SGBDR pode mover dados para um banco de dados, armazenar os dados 
e os recuperar os dados para que os aplicativos possam manipulá-los.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição,sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
5 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Um SGBDR distingue entre os seguintes tipos de operações:
• Operações lógicas: nesse caso, um aplicativo especifica qual conteúdo é necessário. 
Por exemplo, um aplicativo solicita um nome de funcionário ou adiciona um registro de 
funcionário a uma tabela.
• Operações físicas: nesse caso, o SGBDR determina como as coisas devem ser feitas e 
realiza a operação. Por exemplo, depois que um aplicativo consulta uma tabela, o banco 
de dados pode usar um índice para localizar as linhas solicitadas, ler os dados na memó-
ria e executar muitas outras etapas antes de retornar um resultado ao usuário. O RDBMS 
armazena e recupera dados para que as operações físicas sejam transparentes para os 
aplicativos de banco de dados.
O banco de dados Oracle é um SGBDR. Um SGBDR que implementa recursos orientados a 
objetos, como tipos definidos pelo usuário, herança e polimorfismo, é chamado de sistema de 
gerenciamento de banco de dados relacional de objeto (SGBDOO). O banco de dados Oracle 
estendeu o modelo relacional para um modelo relacional de objeto, possibilitando armazenar 
modelos de negócios complexos em um banco de dados relacional.
Objetos de Esquema
Uma característica de um SGBDR é a independência do armazenamento físico de dados 
das estruturas lógicas de dados.
No banco de dados Oracle, um esquema de banco de dados é uma coleção de estruturas 
de dados lógicos ou objetos de esquema. Um usuário de banco de dados possui um esquema 
de banco de dados, que tem o mesmo nome que o nome de usuário.
Objetos de esquema são estruturas criadas pelo usuário que se referem diretamente aos 
dados no banco de dados. O banco de dados suporta muitos tipos de objetos de esquema, 
sendo os mais importantes as tabelas e os índices.
Um objeto de esquema é um tipo de objeto de banco de dados. Alguns objetos de banco 
de dados, como perfis e funções, não residem em esquemas.
Tabelas - Uma tabela descreve uma entidade, como “Funcionários”. Você define uma ta-
bela com um nome de tabela, como “Funcionários”, e um conjunto de colunas. Em geral, cada 
coluna irá possuir um nome, um tipo de dados e uma largura ao criar a tabela. Uma tabela é 
um conjunto de linhas. Uma coluna identifica um atributo da entidade descrita pela tabela, en-
quanto uma linha identifica uma instância da entidade. Por exemplo, os atributos da entidade 
de funcionários correspondem a colunas para ID de funcionário e sobrenome. Uma linha iden-
tifica um funcionário específico. Opcionalmente, você pode especificar uma regra, chamada de 
restrição de integridade, para uma coluna. Um exemplo é uma restrição NOT NULL, que força 
a coluna a conter um valor em cada linha, não aceitando valores vazios (NULL).
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
6 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Índices – Um índice é uma estrutura de dados opcional que você pode criar em uma ou 
mais colunas de uma tabela. Os índices podem aumentar o desempenho da recuperação de 
dados. Ao processar uma solicitação, o banco de dados pode usar os índices disponíveis para 
localizar as linhas solicitadas com eficiência. Os índices são úteis quando os aplicativos geral-
mente consultam uma linha específica ou um intervalo de linhas. Os índices são logicamen-
te e fisicamente independentes dos dados. Assim, você pode descartar e criar índices sem 
nenhum efeito nas tabelas ou outros índices. Todos os aplicativos continuam funcionando 
depois que um índice é descartado.
1.2. aCesso a dados oraCle
Um requisito geral para um SGBD é aderir aos padrões aceitos da indústria para uma lin-
guagem de acesso a dados.
O SQL é uma linguagem declarativa baseada em conjunto que fornece uma interface para 
um SGBDR como o banco de dados Oracle. As linguagens procedurais, como C, descrevem 
como as coisas devem ser feitas. O SQL não é procedimental e descreve o que deve ser feito.
Linguagem de Consulta Estruturada (SQL)
O SQL é a linguagem padrão ANSI para bancos de dados relacionais. Todas as operações 
nos dados em um banco de dados Oracle são executadas usando instruções SQL. Por exem-
plo, você usa SQL para criar tabelas e consultar e modificar dados em tabelas.
Uma instrução SQL pode ser pensada como um programa de computador ou uma ins-
trução muito simples, mas poderoso. Os usuários especificam o resultado que desejam (por 
exemplo, os nomes dos funcionários), não como derivá-lo. Uma instrução SQL é uma string de 
texto SQL, como o seguinte:
As instruções SQL permitem que você execute as seguintes tarefas:
• Consultar dados.
• Inserir, atualizar e excluir linhas em uma tabela.
• Criar, substituir, alterar e soltar objetos.
• Controlar o acesso ao banco de dados e seus objetos.
• Garanta consistência e integridade do banco de dados.
O SQL unifica as tarefas anteriores em uma linguagem consistente. O Oracle SQL é uma 
implementação do padrão ANSI. O Oracle SQL oferece suporte a vários recursos que vão além 
do SQL padrão.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
7 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
PL/SQL e Java
PL/SQL é uma extensão procedural do Oracle SQL.
O PL/SQL é integrado ao banco de dados Oracle, permitindo que você use todas as instruções, 
funções e tipos de dados SQL do banco de dados Oracle. Você pode usar PL/SQL para controlar o 
fluxo de um programa SQL, usar variáveis e escrever procedimentos de tratamento de erros.
Um dos principais benefícios do PL/SQL é a capacidade de armazenar a lógica do aplicativo 
no próprio banco de dados. Um procedimento ou função PL/SQL é um objeto de esquema que 
consiste em um conjunto de instruções SQL e outras construções PL/SQL, agrupadas, armaze-
nadas no banco de dados e executadas como uma unidade para resolver um problema especí-
fico ou executar um conjunto de tarefas relacionadas. O principal benefício da programação do 
lado do servidor é que a funcionalidade integrada pode ser implantada em qualquer lugar.
O banco de dados Oracle também pode armazenar unidades de programa escritas em 
Java. Um procedimento armazenado Java é um método Java publicado em SQL e armaze-
nado no banco de dados para uso geral. Você pode chamar programas PL/SQL existentes de 
Java e programas Java de PL/SQL.
1.3. GerenCiamento de transações oraCle
O gerenciamento de transações é o uso de transações para garantir a simultaneidade e a 
consistência dos dados.
Transações
O banco de dados Oracle foi projetado como um banco de dados multiusuário. O banco de 
dados deve garantir que vários usuários possam trabalhar simultaneamente sem corromper 
os dados uns dos outros.
Uma transação é uma unidade de trabalho lógica e atômica que contém uma ou mais ins-
truções SQL.
Um SGBDR deve ser capaz de agrupar instruções SQL para que todas sejam confirmadas, 
o que significa que são aplicadas ao banco de dados, ou todas revertidas, o que significa que 
foram desfeitas.
Uma ilustração da necessidade de transações é uma transferência de fundos de uma conta 
poupança para uma conta corrente. A transferência consiste nas seguintes operações separadas:• Diminua a conta poupança.
• Aumente a conta corrente.
• Registre a transação no diário de transações.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
8 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
O banco de dados Oracle garante que todas as três operações sejam bem-sucedidas ou fa-
lhem como uma unidade. Por exemplo, se uma falha de hardware impedir a execução de uma 
instrução na transação, as outras instruções deverão ser revertidas.
As transações são um recurso que diferencia o banco de dados Oracle de um sistema de ar-
quivos. No caso de um sistema de arquivos, se você executar uma operação atômica que atualiza 
vários arquivos e se o sistema falhar no meio, os arquivos não serão consistentes. Em contraste, uma 
transação move um banco de dados Oracle de um estado consistente para outro. O princípio básico 
de uma transação é “tudo ou nada”: uma operação atômica é bem-sucedida ou falha como um todo.
Simultaneidade dos Dados
Um requisito de um SGBDR multiusuário é o controle de simultaneidade de dados, que é o 
acesso simultâneo dos mesmos dados por vários usuários.
Sem qualquer tipo de controle de concorrência, os usuários poderiam alterar os dados de 
forma inadequada, comprometendo a integridade dos dados. Por exemplo, um usuário pode 
atualizar uma linha enquanto um usuário diferente a atualiza simultaneamente.
Se vários usuários acessarem os mesmos dados, uma maneira de gerenciar a concorrência é 
fazer com que os usuários esperem. No entanto, o objetivo de um SGBD é reduzir o tempo de espera 
para que seja inexistente ou insignificante. Todas as instruções SQL que modificam dados devem 
proceder com a menor interferência possível. As interações destrutivas, que são interações que 
atualizam dados incorretamente ou alteram estruturas de dados subjacentes, devem ser evitadas.
O banco de dados Oracle usa bloqueios (locks) para controlar o acesso simultâneo aos 
dados. Um bloqueio é um mecanismo que impede a interação destrutiva entre transações que 
acessam um recurso compartilhado. Os bloqueios ajudam a garantir a integridade dos dados 
enquanto permitem o máximo acesso simultâneo aos dados.
Consistência dos Dados
No banco de dados Oracle, cada usuário deve ter uma visão consistente dos dados, in-
cluindo alterações visíveis feitas pelas próprias transações de um usuário e transações confir-
madas de outros usuários. Por exemplo, o banco de dados deve evitar o problema de leitura 
suja (dirty read), que ocorre quando uma transação vê alterações não confirmadas feitas por 
outra transação simultânea.
O banco de dados Oracle sempre impõe consistência de leitura em nível de instrução, o 
que garante que os dados retornados por uma única consulta sejam confirmados e consis-
tentes em um único ponto no tempo. Dependendo do nível de isolamento da transação, esse 
ponto é a hora em que a instrução foi aberta ou a hora em que a transação começou. O recurso 
Oracle Flashback Query permite especificar esse momento explicitamente.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
9 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
O banco de dados também pode fornecer consistência de leitura para todas as consultas 
em uma transação, conhecida como consistência de leitura em nível de transação. Nesse 
caso, cada instrução em uma transação vê dados do mesmo ponto no tempo, que é o momen-
to em que a transação começou.
1.4. arquitetura do BanCo de dados oraCle
Um servidor de banco de dados é a chave para o gerenciamento de informações.
Em geral, um servidor de banco de dados gerencia de forma confiável uma grande quanti-
dade de dados em um ambiente multiusuário, para que os usuários possam acessar simulta-
neamente os mesmos dados. Um servidor de banco de dados também impede o acesso não 
autorizado e fornece soluções eficientes para recuperação de falhas.
Banco de Dados e Instância
Um servidor de banco de dados Oracle consiste em um banco de dados e pelo menos uma 
instância de banco de dados.
Como uma instância e um banco de dados estão intimamente conectados, o termo banco 
de dados Oracle às vezes se refere à instância e ao banco de dados. Em sentido estrito, os 
termos têm os seguintes significados:
Banco de dados – É um conjunto de arquivos, localizados em disco, que armazenam da-
dos do usuário. Esses arquivos de dados podem existir independentemente de uma instância 
de banco de dados. A partir do banco de dados Oracle 21c, “banco de dados” refere-se espe-
cificamente aos arquivos de dados de um banco de dados de contêiner multilocatário (CDB), 
banco de dados plugável (PDB) ou contêiner de aplicativo.
Instância de banco de dados – É um conjunto nomeado de estruturas de memória que geren-
ciam arquivos de banco de dados. Uma instância de banco de dados consiste em uma área de me-
mória compartilhada, chamada de área global do sistema (SGA) e um conjunto de processos em 
segundo plano. Uma instância pode existir independentemente dos arquivos de banco de dados.
Arquitetura Multitenant
A arquitetura multitenant permite que um banco de dados Oracle seja um CDB.
Um contêiner é uma coleção de esquemas, objetos e estruturas relacionadas em um ban-
co de dados de contêiner multilocatário (CDB). Dentro de um CDB, cada contêiner tem um ID 
e um nome exclusivos.
Um CDB inclui nenhum, um ou muitos bancos de dados conectáveis (PDBs) criados pelo 
cliente e contêineres de aplicativos. Um PDB é uma coleção portátil de esquemas, objetos de 
esquema e objetos não esquema que aparecem para um cliente Oracle Net como um banco 
de dados separado. Um contêiner de aplicativo é um componente CDB opcional criado pelo 
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
10 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
usuário que armazena dados e metadados para um ou mais back-ends de aplicativo. Um CDB 
inclui nenhum ou mais contêineres de aplicativos.
Cada banco de dados Oracle deve conter ou poder ser contido por outro banco de dados. 
Por exemplo, um CDB contém PDBs e um contêiner de aplicativo contém PDBs de aplicativo. 
Um PDB está contido em um CDB ou contêiner de aplicativo e um contêiner de aplicativo está 
contido em um CDB.
A partir do banco de dados Oracle 21c, um banco de dados de contêiner multilocatário 
(CDB)é a única arquitetura com suporte. Nas versões anteriores, a Oracle suportava bancos de 
dados não-contêiner (não CDBs).
CDB – Um CDB contém um ou mais PDBs e contêineres de aplicativos criados pelo usuário.
No nível físico, um CDB é um conjunto de arquivos: arquivo de controle, arquivos de redo log on-
line e arquivos de dados. A instância do banco de dados gerencia os arquivos que compõem o CDB.
A figura a seguir mostra um CDB e uma instância de banco de dados associada:
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilizaçãocivil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
11 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A figura acima mostra o SGA. Dentro do SGA estão o Database Buffer Cache, Redo Log 
Buffer, Shared Pool, Large Pool, Fixed SGA, Java Pool e Streams Pool. À direita do SGA estão 
os processos em segundo plano PMON, SMON, RECO, MMON, MMNL e outros. Abaixo do SGA 
estão DBWn, CKPT, LGWR, ARCn e RVWR. Abaixo do SGA estão o PGA e o Processo do Ser-
vidor. O Processo Servidor está conectado a um Processo Cliente. À direita do Processo do 
Cliente estão os Arquivos de Banco de Dados (Arquivos de Dados, Arquivos de Controle, Redo 
Log Online), Redo Log Arquivado e Flashback Log.
PDB – Um PDB é uma coleção portátil de esquemas, objetos de esquema e objetos que 
não são de esquema que aparecem para um aplicativo como um banco de dados separado.
No nível físico, cada PDB possui seu próprio conjunto de arquivos de dados que armaze-
nam os dados para o PDB. O CDB inclui todos os arquivos de dados dos PDBs contidos nele e 
um conjunto de arquivos de dados do sistema que armazenam metadados para o próprio CDB.
Para mover ou arquivar um PDB, você pode desconectá-lo. Um PDB desconectado consis-
te nos arquivos de dados do PDB e em um arquivo de metadados. Um PDB desconectado não 
é utilizável até que seja conectado a um CDB.
A figura a seguir mostra um CDB chamado MYCDB:
Fisicamente, o MYCDB é um banco de dados Oracle, no sentido de um conjunto de arqui-
vos de dados associados a uma instância. O MYCDB tem uma instância de banco de dados, 
embora várias instâncias sejam possíveis no Oracle Real Application Clusters e um conjunto 
de arquivos de banco de dados.
O MYCDB contém dois PDBs: hrpdb e salespdb. Conforme mostrado na figura acima, es-
ses PDBs aparecem para seus respectivos aplicativos como bancos de dados independentes 
e separados. Um aplicativo não sabe se está se conectando a um CDB ou PDB.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
12 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Para administrar o próprio CDB ou qualquer PDB dentro dele, você pode se conectar à raiz 
do CDB. A raiz é uma coleção de esquemas, objetos de esquema e objetos sem esquema aos 
quais pertencem todos os PDBs e contêineres de aplicativos.
Contêineres de aplicativos – É um contêiner opcional criado pelo usuário em um CDB que 
armazena dados e metadados para um ou mais aplicativos.
Nesse contexto, um aplicativo é um conjunto nomeado e com versão de dados e metadados 
comuns armazenados na raiz do aplicativo. Por exemplo, o aplicativo pode incluir definições de 
tabelas, exibições, contas de usuário e pacotes PL/SQL comuns a um conjunto de PDBs.
De certa forma, um contêiner de aplicativo funciona como um CDB específico do aplicativo 
dentro de um CDB. Um contêiner de aplicativo, como o próprio CDB, pode incluir vários PDBs 
de aplicativo e permite que esses PDBs compartilhem metadados e dados. No nível físico, um 
contêiner de aplicativo possui seu próprio conjunto de arquivos de dados, assim como um PDB.
Por exemplo, uma implantação de SaaS pode usar vários PDBs de aplicativos, cada um para 
um cliente separado, que compartilham metadados e dados de aplicativos. Por exemplo, na figu-
ra a seguir, sales_app é o modelo de aplicativo na raiz do aplicativo. O aplicativo PDB nomeado 
cust1_pdb contém dados de vendas apenas para o cliente 1, enquanto o aplicativo PDB nomea-
do cust2_pdb contém dados de vendas apenas para o cliente 2. Conectar, desconectar, clonar e 
outras operações em nível de PDB estão disponíveis para PDBs de clientes individuais.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
13 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Arquitetura de Fragmentação
O Oracle Sharding é uma técnica de dimensionamento de banco de dados baseada no par-
ticionamento horizontal de dados em vários PDBs. Os aplicativos percebem o pool de PDBs 
como um único banco de dados lógico.
Os principais benefícios do sharding para aplicativos OLTP incluem escalabilidade linear, 
contenção de falhas e distribuição de dados geográficos. A fragmentação é adequada para 
implantação no Oracle Cloud. Ao contrário de armazenamentos de dados NoSQL que imple-
mentam sharding, o Oracle Sharding oferece os benefícios de sharding sem sacrificar os re-
cursos de um SGBDR corporativo.
Em uma arquitetura de sharding, cada CDB é hospedado em um servidor dedicado com 
seus próprios recursos locais, CPU, memória, flash ou disco. Você pode designar um PDB 
como um shard. Os fragmentos de PDB de diferentes CDBs formam um único banco de dados 
lógico, conhecido como banco de dados fragmentado. Dois fragmentos no mesmo CDB não 
podem ser membros do mesmo banco de dados fragmentado. No entanto, dentro do mesmo 
CDB, um PDB pode estar em um banco de dados fragmentado e outro PDB pode estar em um 
banco de dados fragmentado separado.
O particionamento horizontal envolve a divisão de uma tabela de banco de dados em frag-
mentos para que cada fragmento contenha a tabela com as mesmas colunas, mas um sub-
conjunto diferente de linhas. Uma tabela dividida dessa maneira também é conhecida como 
tabela fragmentada.
A figura a seguir mostra uma tabela fragmentada horizontalmente particionada em três 
fragmentos, cada um dos quais é um PDB em um CDB separado:
Um caso de uso é distribuir dados de contas de clientes em vários CDBs. Por exemplo, um 
cliente com ID 28459361 pode pesquisar seus registros. A figura a seguir mostra uma arqui-
tetura possível. A solicitação do cliente é roteada por meio de um pool de conexões, onde os 
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
14 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
diretores de fragmentação (ouvintes de rede) direcionam a solicitação para o fragmento PDB 
apropriado, que contém todas as linhas do cliente.
1.5. estruturas de armazenamento de BanCo de dados oraCle
Um banco de dados pode ser considerado de uma perspectiva física e lógica.
Dados físicos são dados visíveis no nível do sistema operacional. Por exemplo, utilitários 
do sistema operacional, como os comandos ls e ps do Linux, que podem listar arquivos e pro-
cessos de banco de dados. Dados lógicos, como uma tabela, são significativos apenas para o 
banco de dados. Uma instrução SQL pode listar as tabelas em um banco de dados Oracle, mas 
um utilitário do sistema operacional não pode.
O banco de dados possui estruturas físicas e estruturas lógicas. Como as estruturas físi-
cas e lógicas são separadas, você pode gerenciar o armazenamento físico de dados sem afe-
tar o acesso às estruturas de armazenamento lógico. Por exemplo, renomear um arquivo de 
banco de dados físico não renomeia as tabelas cujos dados estão armazenados nesse arquivo.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meiose a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
15 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Estruturas de Armazenamento Físico
As estruturas físicas do banco de dados são os arquivos que armazenam os dados. Um 
banco de dados Oracle é um conjunto de arquivos que armazenam dados Oracle em armaze-
namento persistente.
Ao executar um comando CREATE DATABASE, você cria um CDB. Os seguintes arquivos 
são criados:
• Arquivos de dados e arquivos temporários: Cada CDB possui um ou mais arquivos de 
dados físicos, que contêm todos os dados do banco de dados. Os dados de estruturas 
lógicas de banco de dados, como tabelas e índices, são armazenados fisicamente nos ar-
quivos de dados. Um arquivo de dados é um arquivo físico em armazenamento persisten-
te que foi criado pelo banco de dados Oracle e contém estruturas de dados como tabelas 
e índices. Um arquivo temporário é um arquivo de dados que pertence a um tablespace 
temporário. O banco de dados grava dados nesses arquivos em um formato proprietário 
da Oracle que não pode ser lido por outros programas. Quando você cria um PDB, o PDB 
tem seu próprio conjunto de arquivos de dados dentro do conjunto geral de arquivos de 
dados que compõe o CDB. Por exemplo, você pode criar um CDB chamado mycdb e, em 
seguida, criar dois PDBs dentro dele, hrpdb e salespdb. Nesse caso, mycdb teria seu pró-
prio conjunto de arquivos de dados e arquivos temporários, como hrpdb e salespdb.
• Arquivos de controle: Cada CDB possui um arquivo de controle. Um arquivo de controle 
contém metadados que especificam a estrutura física do banco de dados, incluindo 
o nome do banco de dados e os nomes e locais dos arquivos do banco de dados. Um 
arquivo de controle é um arquivo raiz que rastreia os componentes físicos do CDB. Os 
PDBs não possuem seus próprios arquivos de controle separados.
• Arquivos de redo log online: Cada CDB tem um redo log online, que é um conjunto de dois ou 
mais arquivos de redo log online. Um redo log online é composto de entradas de redo (tam-
bém chamadas de registros de redo log), que registram todas as alterações feitas nos dados. 
O redo log online é um conjunto de arquivos contendo registros de alterações feitas nos da-
dos dentro do CDB. Os PDBs não têm seus próprios arquivos de redo log online separados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
16 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Uma instância de banco de dados é um conjunto de estruturas de memória que gerenciam 
arquivos de banco de dados em um CDB. A figura a seguir mostra o relacionamento entre a 
instância e os arquivos que ela gerencia:
Ao executar um comando CREATE PLUGGABLE DATABASE em um CDB, você cria um PDB. 
O PDB contém um conjunto dedicado de arquivos de dados dentro do CDB. Um PDB não 
possui um arquivo de controle dedicado e separado e um redo log online, esses arquivos são 
compartilhados pelos PDBs.
Estruturas de Armazenamento Lógico
O banco de dados Oracle aloca espaço lógico para todos os dados no banco de dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
17 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
As unidades lógicas de alocação de espaço de banco de dados são blocos de dados, 
extensões, segmentos e tablespaces. Em um nível físico, os dados são armazenados em ar-
quivos de dados em disco. Os dados nos arquivos de dados são armazenados em blocos do 
sistema operacional.
A figura a seguir é um diagrama entidade-relacionamento para armazenamento físico e 
lógico. A notação do pé de galinha representa uma relação um-para-muitos:
Um segmento contém uma ou mais extensões, cada uma contendo vários blocos de dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
18 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A figura a seguir mostra os relacionamentos entre blocos de dados, extensões e segmen-
tos em um tablespace. Neste exemplo, um segmento tem duas extensões armazenadas em 
arquivos de dados diferentes.
Do nível mais baixo de granularidade ao mais alto, o banco de dados Oracle armazena da-
dos da seguinte forma:
• Um bloco de dados (data block) é a menor unidade lógica de armazenamento de dados no 
banco de dados Oracle. Um bloco de dados lógicos corresponde a um número específico 
de bytes de armazenamento persistente, por exemplo, 2 KB. Os blocos de dados são as 
menores unidades de armazenamento que o banco de dados Oracle pode usar ou alocar.
• Uma extensão (extent) é um conjunto de blocos de dados logicamente contíguos alocados 
para armazenar um tipo específico de informação. Na figura anterior, a extensão de 24 KB 
possui 12 blocos de dados, enquanto a extensão de 72 KB possui 36 blocos de dados.
• Um segmento (segment) é um conjunto de extensões alocadas para um objeto de ban-
co de dados específico, como uma tabela. Por exemplo, os dados da tabela “Funcioná-
rios” são armazenados em seu próprio segmento de dados, enquanto cada índice da 
tabela “Funcionário” é armazenado em seu próprio segmento de índice. Cada objeto de 
banco de dados que consome armazenamento consiste em um único segmento.
• Um espaço de tabela (tablespace) é uma unidade de armazenamento de banco de da-
dos que contém um ou mais segmentos. Cada segmento pertence a um e apenas um 
tablespace. Assim, todas as extensões de um segmento são armazenadas no mesmo 
tablespace. Dentro de um tablespace, um segmento pode incluir extensões de vários 
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
19 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
arquivos de dados, conforme mostrado na figura anterior. Por exemplo, uma extensão 
para um segmento pode ser armazenada em users01.dbf, enquanto outra é armazenada 
em users02.dbf. Uma única extensão nunca pode abranger arquivos de dados.
Arquivos Gerenciados pelo Oracle (Oracle Managed Files) e Arquivos Gerencia-
dos pelo Usuário
O Oracle Managed Files é uma estratégia de nomenclatura de arquivos que permite espe-
cificar operações em termos de objetos de banco de dados em vez de nomes de arquivos. Por 
exemplo, você pode criar um tablespace sem especificar os nomes de seus arquivos de dados.
O Oracle Managed Files elimina a necessidade de administradores gerenciarem direta-
mente os arquivos do sistema operacional em um banco de dados. O Oracle ASM requer Ora-
cle Managed Files.
Esse recurso não afeta a criação ou nomeação de arquivos administrativos, comoarqui-
vos de rastreamento, arquivos de auditoria e logs de alerta.
Com arquivos gerenciados pelo usuário, você gerencia diretamente os arquivos do siste-
ma operacional no banco de dados. Você toma as decisões sobre a estrutura e a nomenclatura 
do arquivo. Por exemplo, ao criar um tablespace, você define o nome e o caminho dos arquivos 
de dados do tablespace.
Por meio dos parâmetros de inicialização, você especifica o diretório do sistema de arqui-
vos para um tipo específico de arquivo. O recurso Oracle Managed Files garante que o banco 
de dados crie um arquivo exclusivo e o exclua quando não for mais necessário. O banco de 
dados usa internamente interfaces de sistema de arquivos padrão para criar e excluir arquivos 
para arquivos de dados e arquivos temporários, arquivos de controle e arquivos relacionados à 
recuperação armazenados na área de recuperação rápida.
O Oracle Managed Files não elimina a funcionalidade existente. Você pode criar novos 
arquivos enquanto administra manualmente os arquivos antigos. Assim, um banco de dados 
pode ter uma mistura de Oracle Managed Files e arquivos gerenciados pelo usuário.
Oracle Automatic Storage Management (Oracle ASM)
O Oracle ASM é uma solução de armazenamento de alto desempenho e fácil gerencia-
mento para arquivos do banco de dados Oracle. O Oracle ASM é um gerenciador de volume 
e fornece um sistema de arquivos projetado exclusivamente para uso pelo banco de dados.
Para usar o Oracle ASM, você aloca discos particionados para o banco de dados Oracle 
com preferências para distribuição e espelhamento. O Oracle ASM gerencia o espaço em dis-
co, distribuindo a carga de E/S por todos os recursos disponíveis para otimizar o desempenho 
e eliminar a necessidade de ajuste manual de E/S. Por exemplo, você pode aumentar o tama-
nho do disco do banco de dados ou mover partes do banco de dados para novos dispositivos 
sem precisar desligar o banco de dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
20 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Componentes de Armazenamento Oracle ASM
O banco de dados Oracle pode armazenar um arquivo de dados como um arquivo Oracle 
ASM em um grupo de discos Oracle ASM. Dentro de um grupo de discos, o Oracle ASM expõe 
uma interface de sistema de arquivos para arquivos de banco de dados.
A figura a seguir mostra os relacionamentos entre os componentes de armazenamento 
em um banco de dados que usa o Oracle ASM. O diagrama descreve o relacionamento entre 
um arquivo Oracle ASM e um arquivo de dados, embora o Oracle ASM possa armazenar outros 
tipos de arquivos. A notação do pé de galinha representa uma relação um-para-muitos.
A figura acima ilustra os seguintes conceitos do Oracle ASM:
• ASM Disk (Discos Oracle ASM): Um disco Oracle ASM é um dispositivo de armazena-
mento provisionado para um grupo de discos Oracle ASM. Um disco Oracle ASM pode 
ser um disco físico ou partição, um número de unidade lógica (LUN) de uma matriz de 
armazenamento, um volume lógico ou um arquivo conectado à rede. Os discos Oracle 
ASM podem ser adicionados ou descartados de um grupo de discos enquanto o banco 
de dados está em execução. Ao adicionar um disco a um grupo de discos, você atribui 
um nome de disco ou o disco recebe um nome de disco Oracle ASM automaticamente.
• ASM Disk Group (Grupos de Discos Oracle ASM): Um grupo de discos Oracle ASM é 
uma coleção de discos Oracle ASM gerenciados como uma unidade lógica. As estrutu-
ras de dados em um grupo de discos são independentes e consomem algum espaço em 
disco em um grupo de discos. Dentro de um grupo de discos, o Oracle ASM expõe uma 
interface de sistema de arquivos para arquivos de banco de dados Oracle. O conteúdo 
dos arquivos armazenados em um grupo de discos é distribuído uniformemente, ou dis-
tribuído, para eliminar pontos de acesso e fornecer desempenho uniforme nos discos.
• ASM File (Arquivos Oracle ASM): Um arquivo Oracle ASM é um arquivo armazenado em 
um grupo de discos Oracle ASM. O banco de dados Oracle se comunica com o Oracle 
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
21 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
ASM em termos de arquivos. O banco de dados pode armazenar arquivos de dados, 
arquivos de controle, arquivos de redo log online e outros tipos de arquivos como arqui-
vos Oracle ASM. Quando solicitado pelo banco de dados, o Oracle ASM cria um arquivo 
Oracle ASM e atribui a ele um nome que começa com um sinal de mais (+) seguido por 
um nome de grupo de discos, como em +DISK1.
• ASM Extent (Extensões Oracle ASM): Uma extensão Oracle ASM é uma seção de um 
arquivo Oracle ASM. Um arquivo Oracle ASM consiste em uma ou mais extensões de 
arquivo. Cada extensão do Oracle ASM consiste em uma ou mais unidades de alocação 
em um disco específico. Uma extensão Oracle ASM é diferente da extensão usada para 
armazenar dados em um segmento.
• ASM Allocation Unit (Unidades de Alocação Oracle ASM): Uma unidade de alocação 
Oracle ASM é a unidade fundamental de alocação em um grupo de discos. Uma unida-
de de alocação é o menor espaço em disco contíguo que o Oracle ASM aloca. Uma ou 
mais unidades de alocação formam uma extensão Oracle ASM.
Instâncias Oracle ASM
Uma instância Oracle ASM é uma instância especial do Oracle que gerencia discos 
Oracle ASM.
As instâncias do Oracle ASM e do banco de dados exigem acesso compartilhado aos dis-
cos em um grupo de discos do Oracle ASM. As instâncias do Oracle ASM gerenciam os meta-
dados do grupo de discos e fornecem informações de layout de arquivo para as instâncias do 
banco de dados. As instâncias de banco de dados direcionam a E/S para discos Oracle ASM 
sem passar por uma instância Oracle ASM.
Uma instância Oracle ASM é construída com a mesma tecnologia que uma instância de 
banco de dados. Por exemplo, uma instância do Oracle ASM tem uma área global do sistema 
(SGA) e processos em segundo plano semelhantes aos de uma instância de banco de dados. 
No entanto, uma instância do Oracle ASM não pode montar um banco de dados e executa me-
nos tarefas do que uma instância de banco de dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
22 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A figura a seguir mostra uma configuração de nó único com uma instância Oracle ASM e 
duas instâncias de banco de dados, cada uma associada a um banco de dados de instância 
única diferente. A instância Oracle ASM gerencia os metadados e fornece alocação de espaço 
para os arquivos Oracle ASM que armazenam os dados dos dois bancos de dados. Um grupo 
de discos Oracle ASM tem quatro discos Oracle ASM e o outro tem dois discos. Ambas as 
instâncias de banco de dados podem acessar os grupos de discos.
Armazenamento de Arquivos de Memória Persistente do Oracle (PMEM Filestore)
PMEM é memória persistente endereçável por byte. O Oracle Persistent Memory Filestore 
(PMEM Filestore) pode armazenar arquivos de dados, arquivos de redo log online e arquivosde controle.
As consultas podem ler bytes diretamente do PMEM sem primeiro migrar blocos para o 
cache de buffer do banco de dados. Esse mecanismo de alto desempenho evita redundância 
de dados e E/S desnecessárias.
Um armazenamento de arquivos PMEM não pode armazenar arquivos de rastreamento, 
arquivos de auditoria ou arquivos de parâmetros do servidor. Os tipos de arquivo suportados 
para PMEM são semelhantes aos tipos para Oracle ASM.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
23 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Na pirâmide de armazenamento tradicional, PMEM fica entre DRAM, que não é persistente, 
e Flash, que é persistente (não volátil).
O cache do buffer do banco de dados reside na DRAM. Os processos Oracle têm acesso en-
dereçável por byte direto a blocos em um armazenamento de arquivos PMEM, que são mapeados 
para o cache de buffer do banco de dados. O mecanismo de mapeamento é invocado automati-
camente quando você coloca um arquivo de dados em um armazenamento de arquivos PMEM.
O banco de dados Oracle usa um algoritmo interno para decidir se os blocos de dados vão migrar 
do armazenamento de arquivos PMEM para DRAM. Os motivos típicos para a migração incluem mo-
dificações de DML, consistência de leitura e acesso mais rápido para blocos de dados ativos.
Para criar um armazenamento de arquivos PMEM, use o comando CREATE PMEM FILESTORE.
O armazenamento de arquivos PMEM é montado automaticamente após sua criação. O 
armazenamento de arquivos PMEM aparece no ponto de montagem especificado como se 
fosse um sistema de arquivos nativo.
O parâmetro de inicialização PMEM_FILESTORE especifica um armazenamento de arquivos 
PMEM que a instância de banco de dados monta automaticamente quando é iniciada. O parâ-
metro é definido como um par ordenado de strings. A primeira string na lista de valores de parâ-
metro é o diretório onde o PMEM Filestore está montado. A segunda string é o arquivo de apoio.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
24 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Arquivos de Dados
No nível do sistema operacional, o banco de dados Oracle armazena dados em estruturas 
chamadas de arquivos de dados. Todo banco de dados Oracle, seja um CDB ou PDB, deve ter 
pelo menos um arquivo de dados.
O banco de dados Oracle armazena fisicamente os dados do tablespace em arqui-
vos de dados.
Cada objeto de esquema não particionado e cada partição de um objeto são armazenados 
em seu próprio segmento, que pertence a apenas um tablespace. Por exemplo, os dados de 
uma tabela não particionada são armazenados em um único segmento, que por sua vez é ar-
mazenado em um tablespace.
Tablespaces e arquivos de dados estão intimamente relacionados, mas têm diferenças 
importantes:
• Cada tablespace consiste em um ou mais arquivos de dados, que estão em conformida-
de com o sistema operacional no qual o banco de dados Oracle está sendo executado.
• Os dados de um banco de dados são armazenados coletivamente nos arquivos de da-
dos que estão localizados em cada tablespace do banco de dados.
• Um segmento pode abranger um ou mais arquivos de dados, mas não pode abranger 
vários tablespaces.
• Um CDB deve ter os tablespaces SYSTEM e SYSAUX. Cada PDB dentro de um CDB tem 
seus próprios tabelspaces SYSTEM e SYSAUX. O banco de dados Oracle aloca automa-
ticamente os primeiros arquivos de dados de qualquer banco de dados para o tablespa-
ce SYSTEM durante a criação do banco de dados.
O tablespace SYSTEM contém o dicionário de dados, um conjunto de tabelas que contém 
metadados do banco de dados. Normalmente, um banco de dados também possui um tables-
pace de undo e um tablespace temporário (geralmente denominado TEMP).
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
25 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A figura a seguir mostra o relacionamento entre tablespaces, arquivos de dados e segmentos:
Um tablespace permanente contém objetos de esquema persistentes. Objetos em tables-
paces permanentes são armazenados em arquivos de dados.
Um tablespace temporário contém objetos de esquema apenas durante uma sessão. Os 
tablespaces temporários gerenciados localmente têm arquivos temporários, que são arquivos 
especiais projetados para armazenar dados em operações de hash, classificação e outras. Os 
arquivos temporários também armazenam dados do conjunto de resultados quando existe 
espaço insuficiente na memória.
Cada arquivo de dados está online (disponível) ou offline (indisponível).
É possível alterar a disponibilidade de arquivos de dados individuais ou arquivos temporários 
colocando-os offline ou online. O banco de dados não pode acessar arquivos de dados offline até 
que eles sejam colocados online. Os arquivos de dados podem ser colocados offline por vários 
motivos, incluindo a execução de backups offline ou a corrupção de blocos. O banco de dados 
coloca um arquivo de dados offline automaticamente se o banco de dados não puder gravar nele.
Como um arquivo de dados, um tablespace em si está offline ou online. Quando você co-
loca um arquivo de dados offline em um tablespace online, o próprio tablespace permanece 
online. Você pode tornar todos os arquivos de dados de um tablespace temporariamente in-
disponíveis colocando o próprio tablespace offline.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
26 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A partir do Oracle Database 12c, você pode usar a instrução ALTER DATABASE MOVE 
DATAFILE para mover um arquivo de dados online de um arquivo físico para outro enquanto o 
banco de dados está aberto e acessando o arquivo.
O banco de dados Oracle cria um arquivo de dados para um tablespace alocando a quantida-
de especificada de espaço em disco mais a sobrecarga para o cabeçalho do arquivo de dados.
O cabeçalho do arquivo de dados contém metadados sobre o arquivo de dados, como seu 
tamanho e ponto de verificação SCN (checkpoint). O SCN (System Change Number) é um nú-
mero em formato atômico mantido pelo Oracle para registrar quais alterações foram feitas no 
seu banco de dados.
Cada cabeçalho contém um número de arquivo absoluto, que identifica exclusivamente o 
arquivo de dados no banco de dados, e um número de arquivo relativo, que identifica exclusi-
vamente um arquivo de dados em um tablespace.
A figura a seguir ilustra os diferentes tipos de espaço em um arquivo de dados. Com o 
tempo, atualizações e exclusões de objetos em um tablespace podem criar bolsões de espaço 
vazio que individualmente não são grandes o suficiente para serem reutilizados para novos 
dados. Esse tipo deespaço vazio é chamado de espaço livre fragmentado.
A figura acima descreve um arquivo de dados como camadas. A camada superior é o cabe-
çalho do arquivo de dados. As segunda, quinta e sexta camadas são usadas. A última camada 
é livre (formatada, mas nunca usada). As terceira, quarta e sétima camadas são livres (usadas 
anteriormente, atualmente não utilizadas).
Arquivos de Controle
O arquivo de controle do banco de dados é um pequeno arquivo binário associado a ape-
nas um CDB. Cada CDB possui um arquivo de controle único, embora várias cópias idênticas 
sejam permitidas. Os PDBs não possuem arquivos de controle separados.
O banco de dados Oracle usa o arquivo de controle para localizar arquivos de banco de 
dados e gerenciar o estado do banco de dados em geral.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
27 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Um arquivo de controle contém informações como:
• O nome do banco de dados e o identificador exclusivo do banco de dados (DBID).
• O carimbo de hora da criação do banco de dados.
• Informações sobre arquivos de dados, arquivos de redo log online e arquivos de redo log 
arquivados.
• Informações do espaço de tabela.
• Backups RMAN.
O arquivo de controle tem as seguintes finalidades:
• Ele contém informações sobre arquivos de dados, arquivos de redo log online e assim 
por diante que são necessários para abrir o banco de dados. O arquivo de controle ras-
treia as alterações estruturais no banco de dados. Por exemplo, quando um administra-
dor adiciona, renomeia ou descarta um arquivo de dados ou arquivo de redo log online, 
o banco de dados atualiza o arquivo de controle para refletir essa alteração.
• Ele contém metadados que devem estar acessíveis quando o banco de dados não está 
aberto. Por exemplo, o arquivo de controle contém informações necessárias para recu-
perar o banco de dados, incluindo pontos de verificação (checkpoints).
O banco de dados Oracle lê e grava no arquivo de controle continuamente durante o uso 
do banco de dados e deve estar disponível para gravação sempre que o banco de dados esti-
ver aberto. Por exemplo, a recuperação de um banco de dados envolve a leitura do arquivo de 
controle dos nomes de todos os arquivos de dados contidos no banco de dados.
As informações sobre o banco de dados são armazenadas em diferentes seções do arqui-
vo de controle. Cada seção é um conjunto de registros sobre um aspecto do banco de dados.
Por exemplo, uma seção no arquivo de controle rastreia arquivos de dados e contém um 
conjunto de registros, um para cada arquivo de dados. Cada seção é armazenada em vários blo-
cos de arquivos de controle lógico. Os registros podem abranger blocos dentro de uma seção.
O arquivo de controle contém os seguintes tipos de registros:
• Registros circulares de reutilização: Contém informações não críticas que podem ser 
substituídas, se necessário. Quando todos os slots de registro disponíveis estiverem 
cheios, o banco de dados expande o arquivo de controle para liberar espaço para um 
novo registro ou substitui o registro mais antigo. Os exemplos incluem registros sobre 
arquivos de redo log arquivados e backups RMAN.
• Registros de reutilização não circulares: Contém informações críticas que não mudam 
com frequência e não podem ser substituídas. Exemplos de informações incluem ta-
blespaces, arquivos de dados, arquivos de log de redo online e threads de redo. O banco 
de dados Oracle nunca reutiliza esses registros, a menos que o objeto correspondente 
seja removido do tablespace.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
28 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Redo Log Online
A estrutura mais importante para recuperação é o redo log online, que consiste em dois 
ou mais arquivos pré-alocados que armazenam alterações no banco de dados à medida que 
ocorrem. O redo log online registra as alterações nos arquivos de dados.
O banco de dados mantém arquivos de redo log online para proteção contra perda de dados. 
Especificamente, após uma falha de instância, os arquivos de redo log online permitem que o banco 
de dados Oracle recupere dados confirmados que ainda não foram gravados nos arquivos de dados.
Os processos do servidor gravam todas as transações de forma síncrona no buffer de 
redo log, que o processo LGWR grava no redo log online. O conteúdo do redo log online inclui 
transações não confirmadas e instruções de gerenciamento de esquema e objeto.
O redo log online para uma instância de banco de dados é chamado de redo thread.
Em configurações de instância única, apenas uma instância acessa um banco de dados, 
portanto, apenas um redo thread está presente. Em uma configuração do Oracle Real Applica-
tion Clusters (Oracle RAC), no entanto, várias instâncias acessam simultaneamente um banco 
de dados, com cada instância tendo seu próprio redo thread. Um redo thread separado para 
cada instância evita a contenção de um único conjunto de arquivos de redo log online.
Um redo log online consiste em dois ou mais arquivos de redo log online. O banco de dados 
Oracle requer um mínimo de dois arquivos para garantir que um arquivo esteja sempre dis-
ponível para gravação caso o outro arquivo esteja em processo de limpeza ou arquivamento.
O banco de dados Oracle apenas um arquivo de redo log online por vez para armazenar 
registros gravados no buffer de redo log.
O arquivo de redo log online no qual o processo de gravação de log (LGWR) está gravando 
ativamente é chamado de arquivo de redo log online atual.
Uma alternância de log (log switch) ocorre quando o banco de dados para de gravar em 
um arquivo de redo log online e começa a gravar em outro. Normalmente, uma troca ocorre 
quando o arquivo de redo log online atual está cheio e a gravação deve continuar. No entanto, 
você pode configurar as alternâncias de log (log switchs) para ocorrer em intervalos regu-
lares, independentemente se o arquivo de redo log online atual está preenchido, e forçar as 
alternâncias de log manualmente.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
29 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
O gravador de log grava em arquivos de log de redo online de forma circular. Quando o gra-
vador de log preenche o último arquivo de redo log online disponível, o processo grava no pri-
meiro arquivo de log, reiniciando o ciclo. A figura abaixo ilustra a escrita circular do redo log:
Os números na figura acima mostram a sequência na qual o LGWR grava em cada arquivo 
de redo log online. O banco de dados atribui a cada arquivo um novo número de sequência de 
log quando um log é alternado e os gravadores de log começam a gravar nele. Quando o banco 
de dados reutiliza um arquivo de redo log online, esse arquivo recebe o próximo número de 
sequência de log disponível.
Os arquivos de log de redo online contêm registros de redo.
Um registro de redo é composto de um grupo de vetores de alteração, cada um dos quais 
descreve uma alteraçãoem um bloco de dados.
2. Pl/sql
PL/SQL é um acrônimo para a expressão inglesa Procedural Language/Structured Query 
Language, trata de uma extensão da linguagem padrão SQL para o SGBD Oracle. Ela foi criada 
pela Oracle para facilitar e acelerar o tratamento e a persistência de dados, aplicando lógica de 
programação unificada a comandos nativos SQL do banco de dados.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
30 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
ProGramação do lado do servidor
Em uma linguagem não procedural como SQL, o conjunto de dados a ser operado é especifica-
do, mas não as operações a serem executadas ou a maneira pela qual elas devem ser executadas.
Em um programa de linguagem procedural, a maior parte da execução de instruções de-
pende de instruções anteriores ou subsequentes e de estruturas de controle, como loops ou 
ramificações condicionais, que não estão disponíveis no SQL.
Para uma ilustração da diferença entre linguagens procedurais e não procedurais, supo-
nha que a seguinte instrução SQL consulte a tabela “Funcionários” (employees):
A instrução solicita dados, mas não aplica lógica aos dados. No entanto, suponha que 
você queira que um aplicativo determine se cada funcionário no conjunto de dados merece um 
aumento com base no salário e no desempenho do departamento. Uma condição necessária 
para um aumento é que o funcionário não tenha recebido mais de três aumentos nos últimos 
cinco anos. Se for solicitado um aumento, o aplicativo deve ajustar o salário e enviar um e-mail 
ao gerente, caso contrário, o aplicativo deve atualizar um relatório.
O problema é, como os aplicativos de banco de dados procedurais que exigem lógica con-
dicional e controle de fluxo de programa podem usar SQL, as abordagens básicas de desenvol-
vimento são as seguintes:
• Use a programação do lado do cliente para incorporar instruções SQL em aplicativos 
escritos em linguagens procedurais, como C, C++ ou Java. Você pode colocar instru-
ções SQL no código-fonte e enviá-las a um pré-compilador ou tradutor Java antes da 
compilação. Como alternativa, você pode eliminar a etapa de pré-compilação e usar 
uma API como Java Database Connectivity (JDBC) ou Oracle Call Interface (OCI) para 
permitir que o aplicativo interaja com o banco de dados.
• Use a programação do lado do servidor para desenvolver lógica de dados que reside 
no banco de dados. Uma aplicação pode invocar explicitamente subprogramas arma-
zenados (procedimentos e funções), escritos em PL/SQL ou Java. Você também pode 
criar um gatilho (trigger), que é chamado de unidade de programa que é armazenado no 
banco de dados e chamado em resposta a um evento específico.
O principal benefício da programação do lado do servidor é que a funcionalidade incorpo-
rada ao banco de dados pode ser implantada em qualquer lugar. O banco de dados, e não o 
aplicativo, determina a melhor maneira de realizar tarefas em um determinado sistema ope-
racional. Além disso, os subprogramas aumentam a escalabilidade centralizando o proces-
samento de aplicativos no servidor, permitindo que os clientes reutilizem o código. Como as 
chamadas de subprogramas são rápidas e eficientes, uma única chamada pode iniciar um 
subprograma armazenado com uso intensivo de computação, reduzindo o tráfego de rede.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
31 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
visão Geral do Pl/sql
A PL/SQL fornece uma linguagem procedural armazenada do lado do servidor que é fácil 
de usar, integrada com SQL, robusta, portátil e segura. Você pode acessar e manipular dados 
do banco de dados usando objetos procedurais chamados unidades PL/SQL.
As unidades PL/SQL geralmente são categorizadas da seguinte forma:
• Um subprograma PL/SQL é um bloco PL/SQL que é armazenado no banco de dados e 
pode ser chamado pelo nome de um aplicativo. Quando você cria um subprograma, o ban-
co de dados analisa o subprograma e armazena sua representação analisada no banco 
de dados. Você pode declarar um subprograma como um procedimento ou uma função.
• Um bloco PL/SQL anônimo é um bloco PL/SQL que aparece em seu aplicativo e não é 
nomeado ou armazenado no banco de dados. Em muitos aplicativos, os blocos PL/SQL 
podem aparecer onde quer que as instruções SQL apareçam.
O compilador e o interpretador PL/SQL são incorporados ao Oracle SQL Developer, oferecen-
do aos desenvolvedores um modelo de desenvolvimento consistente e otimizado no cliente e no 
servidor. Além disso, os procedimentos armazenados PL/SQL podem ser chamados de vários 
clientes de banco de dados, como Pro*C, JDBC, ODBC ou OCI, e do Oracle Reports e Oracle Forms.
Subprogramas PL/SQL
Um subprograma PL/SQL é um bloco PL/SQL nomeado que permite ao chamador fornecer 
parâmetros que podem ser somente entrada, somente saída ou valores de entrada e saída.
Um subprograma resolve um problema específico ou executa tarefas relacionadas e serve 
como um bloco de construção para aplicativos de banco de dados modulares e de fácil manu-
tenção. Um subprograma é um procedimento PL/SQL ou uma função PL/SQL. Procedimentos 
e funções são idênticos, exceto que as funções sempre retornam um único valor para o cha-
mador, enquanto os procedimentos não.
Um subprograma armazenado autônomo é um subprograma criado no nível do esquema 
com a instrução CREATE PROCEDURE ou CREATE FUNCTION. Os subprogramas definidos em 
um pacote são chamados de subprogramas de pacote e são considerados parte do pacote.
O banco de dados armazena subprogramas no dicionário de dados como objetos de es-
quema. Um subprograma tem uma especificação, que inclui descrições de quaisquer parâme-
tros, e um corpo.
Este exemplo mostra parte de uma instrução de criação para o procedimento PL/SQL inde-
pendente “Contrata_Funcionario” (hire_employees). O procedimento insere uma linha na tabela 
“Funcionario” (employees).
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
32 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Os usuários podem executar um subprograma interativamente de várias maneiras.
As opções são:
• Usando uma ferramenta Oracle, como SQL*Plus ou SQL Developer.
• Chamando-o explicitamente no código de um aplicativo de banco de dados, como um 
Oracle Forms ou um aplicativo pré-compilador.
• Chamando-o explicitamente no código de outro procedimento ou gatilho.
A figura a seguir mostra diferentes aplicativos de banco de dados chamando o procedi-
mento “Contrata_Funcionario” (hire_employees).
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
33 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
Como alternativa,um usuário privilegiado pode usar o Oracle Enterprise Manager ou 
SQL*Plus para executar o procedimento “Contrata_Funcionario” (hire_employees) usando uma 
instrução como a seguinte:
A instrução anterior insere um novo registro para “TSMITH” na tabela “Funcionario” (employees).
Um procedimento armazenado (stored procedure) depende dos objetos referenciados em seu 
corpo. O banco de dados rastreia e gerencia automaticamente essas dependências. Por exemplo, 
se você alterar a definição da tabela “Funcionario” (employees) referenciada pelo procedimento 
“Contrata_Funcionario” (hire_employees) de uma maneira que afetaria esse procedimento, o pro-
cedimento deverá ser recompilado para validar se ainda funciona conforme projetado. Normal-
mente, o banco de dados administra automaticamente esse gerenciamento de dependência.
Pacotes PL/SQL
Um pacote PL/SQL é um grupo de subprogramas relacionados, junto com os cursores e variá-
veis que eles usam, armazenados juntos no banco de dados para uso contínuo como uma unidade. 
Subprogramas empacotados podem ser chamados explicitamente por aplicativos ou usuários.
O banco de dados Oracle inclui muitos pacotes fornecidos que estendem a funcionalidade 
do banco de dados e fornecem acesso PL/SQL aos recursos SQL. Por exemplo, o pacote UTL_
HTTP permite chamadas HTTP de PL/SQL e SQL para acessar dados na Internet. Você pode 
usar os pacotes fornecidos ao criar aplicativos ou como fonte de ideias ao criar seus próprios 
procedimentos armazenados.
Você cria um pacote em duas partes: a especificação e o corpo.
A especificação do pacote declara todas as construções públicas do pacote, enquanto o 
corpo do pacote define todas as construções (públicas e privadas) do pacote.
O exemplo a seguir mostra parte de uma instrução que cria a especificação de pacote para 
“Funcionario_Gerencia” (employees_management), que encapsula vários subprogramas usa-
dos para gerenciar um banco de dados de funcionários. Cada parte do pacote é criada com 
uma instrução diferente.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
34 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
A especificação declara a função “Contrata_Funcionario” (hire_employees), os procedimen-
tos “Demite_Funcionario” (fire_employees) e “Aumenta_Salario” (salary_raise). Todos esses ob-
jetos de programa público estão disponíveis para usuários que têm acesso ao pacote.
A instrução CREATE PACKAGE BODY define objetos declarados na especificação. O corpo 
do pacote deve ser criado no mesmo esquema que o pacote. Depois de criar o pacote, você 
pode desenvolver aplicativos que chamem qualquer um desses procedimentos ou funções 
públicas ou gerem qualquer uma das exceções públicas do pacote.
Gatilhos (triggers) de banco de dados, subprogramas armazenados, programas de aplicati-
vos 3GL e ferramentas Oracle podem fazer referência ao conteúdo do pacote.
A figura a seguir mostra os aplicativos de banco de dados invocando procedimentos e 
funções no pacote “Funcionario_Gerencia” (employees_management).
Os aplicativos de banco de dados chamam explicitamente os procedimentos empacota-
dos conforme necessário. Após receber os privilégios para o pacote “Funcionario_Gerencia” 
(employees_management), um usuário pode executar explicitamente qualquer um dos proce-
dimentos contidos nele.
Blocos Anônimos PL/SQL
Um bloco anônimo PL/SQL é uma unidade PL/SQL sem nome e não persistente.
Os usos típicos para blocos anônimos incluem:
• Iniciando chamadas para subprogramas e construções de pacotes.
• Isolando o tratamento de exceções.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
35 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
• Gerenciando o controle aninhando código em outros blocos PL/SQL.
Blocos anônimos não têm as vantagens de reutilização de código dos subprogramas 
armazenados.
Um bloco anônimo consiste em uma parte declarativa opcional, uma parte executável e 
um ou mais manipuladores de exceção opcionais. O exemplo de bloco anônimo a seguir sele-
ciona o sobrenome de um funcionário em uma variável e imprime o nome:
O banco de dados Oracle compila o bloco PL/SQL e o coloca no pool compartilhado da 
SGA, mas não armazena o código-fonte ou a versão compilada no banco de dados para reu-
tilização além da instância atual. Ao contrário dos gatilhos (triggers), um bloco anônimo é 
compilado toda vez que é carregado na memória.
Construções de Linguagem PL/SQL
Os blocos PL/SQL podem incluir uma variedade de construções de linguagem PL/SQL di-
ferentes. Essas construções, incluindo o seguinte:
• Variáveis e constantes: Você pode declarar essas construções em um procedimento, 
função ou pacote. Você pode usar uma variável ou constante em uma instrução SQL ou 
PL/SQL para capturar ou fornecer um valor quando necessário.
• Cursores: Você pode declarar um cursor explicitamente em um procedimento, função 
ou pacote para facilitar o processamento orientado a registros de dados do banco de 
dados Oracle. O mecanismo PL/SQL também pode declarar cursores implicitamente.
• Exceções: A PL/SQL permite que você manipule explicitamente condições de erro inter-
nas e definidas pelo usuário, chamadas exceções, que surgem durante o processamen-
to do código PL/SQL.
A PL/SQL pode executar instruções SQL dinâmicas cujo texto completo não é conhecido até 
o tempo de execução. As instruções SQL dinâmicas são armazenadas em cadeias de caracteres 
que são inseridas ou criadas pelo programa em tempo de execução. Essa técnica permite criar 
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
https://www.grancursosonline.com.br
https://www.grancursosonline.com.br
36 de 63www.grancursosonline.com.br
Banco de Dados Oracle e PL/SQL
BANCO DE DADOS E GESTÃO DA INFORMAÇÃO
Sérgio Sierro
procedimentos de propósito geral. Por exemplo, você pode criar um procedimento que opera em 
uma tabela cujo nome não é conhecido até o tempo de execução.
Coleções e Registros PL/SQL
Muitas técnicas de programação usam tipos de coleção como arrays, bags, listas, tabelas 
aninhadas, conjuntos e árvores.
Para dar suporte às técnicas de coleta em aplicativos de banco de dados, a PL/SQL forne-
ce os tipos de dados TABLE e VARRAY. Esses tipos permitem declarar matrizes associativas, 
tabelas aninhadas e matrizes de tamanho variável.
Uma coleção PL/SQL é um grupo ordenado de elementos, todos do mesmo tipo.
Cada elemento possui um subscrito exclusivo que determina sua posição na coleção. Para 
criar uma coleção, você primeiro define um tipo de coleção e, em seguida, declara uma variá-
vel desse tipo.
As coleções funcionam como os arrays encontrados na maioria das linguagens de progra-
mação de terceira geração. Além disso, as coleções podem ser passadas como parâmetros. 
Assim, você pode usá-los para mover colunas de dados para dentro e para fora de tabelas de 
banco de dados ou entre aplicativos do lado do cliente e subprogramas armazenados.
Um registro PL/SQL é uma variável composta que pode armazenar valores de dados de 
diferentes tipos, semelhantes a um tipo de estrutura em C, C++ ou Java. Os registros são úteis 
para armazenar dados das linhas

Continue navegando