Você está na página 1de 47

BANCO DE DADOS

ADMINISTRAO
ORACLE

Prof. Marcos Alexandruk

ADMINISTRAO EM BANCO DE DADOS

SUMRIO
INTRODUO

03

ORACLE 9i SERVER: OVERVIEW

05

ARQUITETURA FSICA

08

ARQUITETURA LGICA

16

SEGMENTOS

25

TRANSAES

27

SEGMENTOS DE ROLLBACK / UNDO

30

NDICES

34

USURIOS, PRIVILGIOS E PAPIS

40

AUDITORIA

44

BACKUP E RESTORE

46

ADMINISTRAO EM BANCO DE DADOS


INTRODUO
BANCO DE DADOS
"Conjunto de programas que manipulam arquivos de dados." Scott Martin (projetista da
Oracle).
Arquitetura Cliente/Servidor (duas camadas)
A arquitetura cliente/servidor foi desenvolvida para trabalhar com ambientes
computacionais, nos quais um grande nmero de PCs, estaes de trabalho e servidores
especializados (de arquivos, de impresso, de banco de dados, etc.) e outros equipamentos
esto conectados via rede.
As mquinas clientes oferecem aos usurios as interfaces apropriadas para utilizar os
servidores, bem como o poder de processamento para executar as aplicaes locais.

Arquitetura Cliente/Servidor (trs camadas)


Muitas aplicaes para Web utilizam a arquitetura de trs camadas, que possui uma camada
intermediria entre o cliente e o servidor de banco de dados.
Essa camada intermediria, ou camada de meio, , algumas vezes, chamada de servidor de
aplicaes ou servidor Web. Esse servidor desempenha um papel intermedirio armazenando
as regras de negcio (procedimentos ou restries) que so usadas para acessar os dados do
servidor de banco de dados.

ADMINISTRAO EM BANCO DE DADOS


DBA Administrador de Banco de Dados
As principais funes do DBA so:

Definir a estrutura de armazenamento e a estratgia de acesso;


Servir de elo com os usurios;
Definir controles de segurana e integridade;
Definir a estratgia de backup e recuperao;
Monitorar o desempenho.

ADMINISTRAO DE BANCO DE DADOS


A administrao de banco de dados, seja ela manual, via SQL*Plus, ou visual, via OEM
(Oracle Enterprise Manager), baseia-se em sua maioria, nas vises de dados, que podem ser
de trs tipos, diferenciando-se pelos prefixos:
USER_... objetos cujo proprietrio (owner) o usurio conectado.
ALL_... objetos de propriedade do usurio conectado, alm daqueles aos quais o usurio
tem privilgios para acesso.
DBA_... todos os objetos do banco de dados.
BANCO DE DADOS ORACLE
Um banco de dados uma coleo de dados relacionados utilizada por uma ou mais
aplicaes informatizadas.
Fisicamente, um banco de dados Oracle um conjunto de arquivos em algum lugar do
disco. O local fsico desses arquivos irrelevante para as funes do banco de dados, mas no
para seu funcionamento.
Logicamente, o banco de dados Oracle dividido em um conjunto de contas de usurio
conhecido como schemas. Cada schema est associado a um ID de usurio. Sem um nome de
usurio, senha e privilgios vlidos, no possvel acessar informaes do banco de dados.

ADMINISTRAO EM BANCO DE DADOS


ORACLE 9i SERVER: OVERVIEW
O Oracle Server composto de duas partes bsicas:
Banco de Dados (Database)
Instncia (Instance)
O Banco de Dados representa os arquivos fsicos que armazenam os dados.
A Instncia composta pelas estruturas de memria1 e pelos processo de segundo plano
(background)2.
Cada Banco de Dados pode estar associado a uma Instncia. possvel que mltiplas
Instncias acessem um Banco de Dados, isto ocorre na configurao conhecida como RAC Real
Application Cluster.
O Banco de Dados possui uma estrutura fsica e uma estrutura lgica.
As estruturas lgicas representam os componentes que voc pode ver no Banco de Dados
Oracle (tabelas, ndices, etc.) e as estruturas fsicas representam os mtodos de
armazenamento utilizado internamente pelo Oracle (os arquivos fsicos). O Oracle mantm
separadamente as estruturas lgicas e fsicas. Por isso, as estruturas lgicas podem ser
idnticas independentemente da plataforma de hardware ou do sistema operacional.
ESTRUTURAS LGICAS
O Oracle divide o Banco de Dados em unidades menores para gerenciar, armazenar e
recuperar os dados de forma eficiente. Os itens a seguir apresentam um overview das
estruturas lgicas. Posteriormente, apresentaremos mais detalhes de cada uma delas.
TABLESPACES: O Banco de Dados est logicamente dividido, no nvel mais alto, em
estruturas menores chamadas Tablespaces. O DBA pode utilizar as Tablespaces para
organizar melhor o Banco de Dados (por aplicao, por funo, por departamento, etc.).
Esta diviso lgica ajuda a administrar uma parte do Banco de Dados sem afetar outras.
Cada Banco de Dados pode ter uma ou mais Tablespaces. Quando voc cria um novo Banco
de Dados, o Oracle pelo menos uma Tablespace: SYSTEM.
BLOCKS: O Bloco a menor estrutura de armazenamento do Oracle. O tamanho de um
Bloco normalmente um mltiplo do tamanho de um Bloco do Sistema Operacional. Um
bloco de dados corresponde a um nmero especfico de bytes. Seu tamanho baseado no
parmetro DB_BLOCK_SIZE e determinado quando o Banco de Dados criado.
EXTENTS: Formam o prximo nvel da estrutura lgica. So formados por um agrupamento
de blocos contguos.
SEGMENTS: Um Segmento composto por um conjunto de Extents alocados para uma
estrutura lgica: tabela, ndice, etc. Quando uma dessas estruturas criada, o Oracle aloca
um segmento contendo pelo menos um Extent, que por sua vez dever conter pelo menos
um Bloco. Um Segmento pode estar associado a uma nica Tablespace. A figura a seguir
apresenta a relao entre Tablespaces, Segments, Extents e Blocks.

As estruturas de memria so conhecidas como SGA (System Global Area) e PGA (Program
Global Area).

Os principais processos de segundo plano (background) so: Database Writer (DBW0), Log
Writer (LGWR), System Monitor (SMON), Process Monitor (PMON), Checkpoint Process (CKPT).
5

ADMINISTRAO EM BANCO DE DADOS


Um Schema3 uma estrutura lgica utilizada para agrupar objetos em um Banco de Dados.
Porm, um Schema no est relacionado diretamente a uma Tablespace ou qualquer outra
estrutura lgica apresentada at o momento. Os objetos pertencentes a um Schema podem
estar em diferentes Tablespaces, e uma Tablespace pode conter objetos pertencentes a
vrios Schemas. Os objetos de um Schema podem ser: tabelas, ndices, synonyms,
procedures, triggers, etc.

O Banco de Dados Oracle dividido em um conjunto de contas de usurio conhecido como


Schemas. Cada Schema est associado a um ID de usurio. Sem um nome de usurio, senha
e privilgios vlidos, no possvel acessar informaes do Banco de Dados.
6

ADMINISTRAO EM BANCO DE DADOS


ESTRUTURAS FSICAS
A estrutura fsica de um Banco de Dados consiste em trs tipos de arquivos:
DATA FILES: Contm todos os dados do Banco. Cada Banco de Dados formado por um ou
mais Data Files. Cada Data File est associado a uma nica Tablespace. Uma Tablespace
pode consitir de um ou mais Data Files.
REDO LOG FILES: Gravam todas alteraes nos dados do Banco. O Oracle possui dois ou
mais desses arquivos, porque eles so gravados de forma cclica. Atravs deles pode-se
obter informaes sobre os dados alterados. So fundamentais nas operaes de recovery.
aconselhvel manter cpias mltiplas destes arquivos de preferncia em discos diferentes.
CONTROL FILES: Cada Banco de Dados Oracle tem pelo menos um Control File. Eles
mantm informaes sobre a estrutura fsica do Banco de Dados. O Oracle manter mltiplas
cpias destes arquivos e recomenda-se esta prtica. O Control File contm o nome do
Banco de Dados e o timestamp de sua criao, bem como os nomes e localizao de todos
os Data Files e Redo Log Files.

ADMINISTRAO EM BANCO DE DADOS


ARQUITETURA FSICA
A arquitetura de banco Oracle inclui estruturas lgicas e fsicas que compem o Banco de
Dados.
O Servidor Oracle um RDBMS (Relational Database Management System) ou SGBDR
(Sistema de Gerenciamento de Banco de Dados Relacionais) que oferece uma abordagem
aberta, abrangente e integrada ao gerenciamento de informaes.
COMPONENTES PRINCIPAIS
H vrios processos, estruturas de memria e arquivos em um servidor Oracle. No entanto,
nem todos esses itens so usados durante o processamento de uma instruo SQL. Alguns so
utilizados para melhorar o desempenho do banco de dados, garantir que o mesmo possa ser
recuperado caso ocorra um erro de software ou hardware, ou executar outras tarefas
necessrias para a manuteno do banco de dados. O servidor Oracle consiste em uma
INSTNCIA Oracle e em um BANCO DE DADOS Oracle.

INSTNCIA
a combinao dos processos de segundo plano e das estruturas de memria (SGA). A
instncia deve ser iniciada para acessar os dados do banco de dados. Toda vez que uma
instncia iniciada, uma SGA (System Global Area rea global do sistema) alocada e os
processos de segundo plano do Oracle so iniciados.
8

ADMINISTRAO EM BANCO DE DADOS


Informaes importantes podem ser obtidas atravs da viso V$INSTANCE.
SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
------------ORCL
Memrias
PGA (Program Global Area)
Regio privativa de cada sesso na qual so armazenados dados temporrios, tais como:
variveis ou endereos de rotinas.
Cada conexo provoca a criao de uma pequena rea na PGA.
SGA (System Global Area)
SGA uma rea de memria usada para armazenar informaes de bancos de dados que
so compartilhadas pelos processos do banco de dados. Ela contm dados e controla
informaes para o servidor Oracle. Est alocada na memria virtual do computador no qual o
servidor Oracle foi instalado. A SGA consiste em diversas estruturas de memria:
Shared Pool: usado para armazenar instrues SQL mais executadas recentemente
(Library Cache / Shared SQL Area) e os dados do dicionrio de dados (Dictionary Cache)
mais usados. Essas instrues SQL podem ser submetidas por um processo de usurio, ou,
no caso de procedimentos armazenados, lidas do dicionrio de dados. A ocupao ocorre
segundo um algoritmo LRU (Least Recently Used), isto , os mais acessados ficam por mais
tempo.
Data Buffer Cache: usado para armazenar em blocos (Data Block Buffers) os dados mais
usados recentemente. Os dados so lidos e gravados nos arquivos de dados.
BLOCO: representa a menor unidade manipulvel para o banco.
Cada bloco pode estar em quatro estados:

LIVRE: Ainda no foi preenchido com algum dado proveniente de disco. No instante imediatamente
posterior abertura do banco, s h blocos livres.

OCUPADO: J foi preenchido. A ocupao tambm acontece segundo um algoritmo LRU (Least
Recently Used).

SUJO: J foi preenchido e alterado, portanto deve ser gravado em disco brevemente.

ROLLBACK: Possui um dado que poder ser reaproveitado caso a transao que o alterou seja
encerrada sem gravao.

Redo Log Buffer: usado para controlar as alteraes efetuadas no banco de dados pelo
servidor e pelos processos de segundo plano. Registra todas as transaes 'comitadas'.
Trata-se de uma lista circular, cujo contedo gravado periodicamente nos Redo Log Files.
As transaes no 'comitadas' residem em reas de rollback (memria ou disco).
A viso V$SGA revela diversas informaes sobre a configurao da SGA:
SELECT * FROM V$SGA;
NAME
VALUE
---------------------------------- -----------Fixed Size
49152
Variable Size
12906496
Database Buffers
2048000
Redo Buffers
73728

ADMINISTRAO EM BANCO DE DADOS


Processos de segundo plano (background)
Tm como finalidade principal integrar as estruturas de memria aos arquivos em disco.
Esses processos executam funes comuns que so necessrias para as solicitaes de
servio de usurios simultneos, sem comprometer a integridade e o desempenho do sistema.
Eles consolidam funes que, de outra forma, seriam tratadas por diversos programas Oracle
executados para cada usurio. Os processos de segundo plano executam tarefas de E/S e
monitoram outros processos Oracle, para oferecer maior paralelismo, o que aumenta o
desempenho e a confiabilidade.
PROCESSOS
Pequenos programas que executam tarefas especficas: integrao entre as estruturas de memria e os
arquivos em disco, conexo ao servidor, etc.
PROCESSO USURIO
Cada vez que ocorre uma conexo, dispara-se um processo usurio executado na estao cliente. Eles
tm a funo de encaminhar ao servidor as requisies do cliente.
PROCESSO SERVIDOR
Recebe as requisies de processos usurios e as encaminha ao servidor. Podem ser dedicados (um para
cada cliente) ou no. Neste caso, implementa-se o recurso MTS (Multi-threaded Server) que permite
compartilhar os processos servidores com vrios usurios.

Dependendo da configurao, uma instncia Oracle pode incluir vrios processos de


segundo plano, no entanto cada instncia inclui estes cinco processos de segundo plano
fundamentais:
O Database Writer (DBW0) grava os dados alterados do Data Buffer Cache nos Data Files.
O Log Writer (LGWR) grava as alteraes registradas no Redo Log Buffer nos Redo Log
Files.
O System Monitor (SMON) verifica a consistncia no banco de dados e, se necessrio, inicia
a recuperao do banco de dados quando ele aberto.
O Process Monitor (PMON) disponibiliza recursos se um dos processos Oracle falhar. Por
exemplo, limpa os processos de usurio que falharam e libera os recursos que o usurio
estava usando.
O Checkpoint Process (CKPT) atualiza as informaes de status do banco de dados nos
Control Files e nos Data Files, sempre que as alteraes efetuadas no Data Buffer Cache
ficam registradas no banco de dados de forma permanente.
O ltimo checkpoint pode ser verificado na viso: V$DATABASE.
SELECT NAME, CHECKPOINT_CHANGE# FROM DATABASE;
NAME CHECKPOINT_CHANGE
---- -----------------------------------------ORCL
402987
ALTER SYSTEM CHECKPOINT;
System altered.
SELECT NAME, CHECKPOINT_CHANGE# FROM DATABASE;
NAME CHECKPOINT_CHANGE
---- -----------------------------------------ORCL
402988
O processo seguinte, no imprescindvel, mas recomendvel:

10

ADMINISTRAO EM BANCO DE DADOS


ARCH (Archiver) copia o contedo de Redo Log Files para arquivos localizados em HDs ou
fitas. Como a gravao nos Redo Log Files cclica, o processo impede que algum registro
de transao se perca.
Para ver uma lista completa com os nomes de todos os processos de segundo plano
disponveis em seu banco de dados utilize a seguinte consulta:
SELECT NAME FROM V$BGPROCESS;
ARQUIVOS
Trs conjuntos de arquivos armazenam os dados fisicamente e controlam as diversas funes
do banco de dados Oracle:
Data Files
Control Files
Redo Log Files
Esses arquivos devem estar presentes, abertos e disponveis antes que quaisquer dados
possam ser acessados.
Data Files
Armazenam os dados (tabelas), os ndices e as reas temporrias e de rollback.
Esto sempre ligados a um tablespace.
Informaes sobre os data files so encontradas nas views V$DATAFILE (mais completa) e
V$DBFILE (apenas dois campos).
SELECT * FROM V$DBFILE;
FILE#
----2
3
4
1

NAME
-----------------------------------C:\ORACLE\ORADATA\TESTE\USERS01.DBF
C:\ORACLE\ORADATA\TESTE\INDX01.DBF
C:\ORACLE\ORADATA\TESTE\TMP01.DBF
C:\ORACLE\ORADATA\TESTE\SYSTEM01.DBF

Control Files
Armazenam a estrutura do banco de dados e seu sincronismo por meio do SCN (System
Change Number). Sem eles no possvel inicializar o banco de dados.
Quando ocorre um checkpoint ou quando h alteraes na estrutura do banco de dados, o
arquivo de controle atualizado
Informaes sobre os control files so encontradas na view V$CONTROLFILE.
SELECT NAME FROM V$CONTROLFILE;
NAME
----------------------------------------------C:\ORACLE\ORADATA\TESTE\CONTROL01.CTL
C:\ORACLE\ORADATA\TESTE\CONTROL02.CTL
C:\ORACLE\ORADATA\TESTE\CONTROL03.CTL
Redo Log Files
Mantm um histrico das transaes efetuadas, permitindo refazer as operaes no caso de
perda de dados.
exigido no mnimo dois destes arquivos, que so gravados de forma cclica: conforme o
espao em um dos arquivos se esgota, procede-se gravao no outro.
Se o banco de dados estiver no modo Archiving, quando um Redo Log File enche, antes de se
passar para o prximo Redo Log File, realizada uma cpia dele (.arc Archive Log File). Caso
contrrio, o Redo Log File sobrescrito.

11

ADMINISTRAO EM BANCO DE DADOS


Em ambiente de produo, o banco de dados sempre deve estar em Archiving Mode.
Informaes sobre os redo log files so encontradas nas views V$LOG e V$LOGFILE.
SELECT * FROM V$LOGFILE;
GROUP# STATUS MEMBER
------ ------ ---------------------------------2 STALE C:\ORACLE\ORADATA\TESTE\REDO02.LOG
1
C:\ORACLE\ORADATA\TESTE\REDO01.LOG
NOTA: O termo stale indica que o arquivo ainda no foi utilizado.
O Servidor Oracle utiliza outros arquivos que no fazem parte do banco de dados:
Parameter File
Define uma caracterstica de uma instncia Oracle como, por exemplo, parmetros que
dimensionam algumas estruturas de memria na SGA.
Password File
Autentica os usurios que tem permisso para inicializar e desativar uma instncia Oracle.
Archived Redo Log
So cpias off-line dos arquivos de redo log que podem ser necessrios para a recuperao
depois de falhas de mdia.
OFA (Optimal Flexible Architecture)
composta por um conjunto de diretrizes que facilitam a manuteno do banco de dados,
organizando os arquivos por tipo e uso.
Quando um banco removido, os diretrios com o nome daquele SID so removidos de dentro
dos diretrios admin e oradata.

12

ADMINISTRAO EM BANCO DE DADOS


Parmetros
O funcionamento de uma instncia determinado por parmetros que constam no arquivo
INITsid.ORA. Os mais importantes so:
DB_BLOCK_SIZE
2.048 bytes
Tamanho do bloco, menor unidade manipulvel. Para obter um valor timo, deve-se descobrir o
tamanho do bloco do Sistema Operacional. O DB_BLOCK_SIZE deve ser igual ou mltiplo desse valor.
No Windows NT, o tamanho de 4096 (4KB). Para mudar esse parmetro deve-se realizar a
exportao completa e recriar o banco.
DB_BLOCK_BUFFERS
1000
Tamanho do Database Buffer Cache: 1.000 X 2.048 = 2.000 KB. Por questes de performance, este
valor deve representar, no mximo, 2% do espao utilizado em disco pelo banco.
SHARED_POOL_SIZE
Tamanho da Shared Pool Area.

11.534.336 bytes

LOG_BUFFER
Tamanho do Redo Log Buffer.

8.192 bytes

Etapas
Antes que uma instncia esteja disponvel e um banco de dados aberto, deve-se passar pelos
seguintes estgios:
SQL*Plus: connect system/manager as sysdba
SHUTDOWN
shutdown
Instncia fechada
Banco fechado
NOMOUNT
startup nomount
Instncia aberta
Banco fechado
Ativam-se os processos background e aloca-se memria para a SGA. Aps essa operao
pode-se criar um Banco de Dados ou consertar Control Files.
MOUNT
alter database mount
Instncia aberta
Banco parcialmente aberto
Lem-se os Control Files e determina-se a localizao dos demais arquivos. Recuperao e
mudana da forma de arquivamento (processo ARCH) acontece aps essa operao.
OPEN
alter database open
Instncia aberta
Banco aberto
Abrem-se os Data Files e Redo Log Files. Usurios que no sejam DBA podem se conectar.

13

ADMINISTRAO EM BANCO DE DADOS


Estabelecendo uma conexo com um Banco de Dados
Trs tipos de conexes distintas:
O usurio estabelece logon no sistema operacional e inicia uma aplicao ou ferramenta que
acesse o banco de dados neste sistema.
O usurio inicia aplicao ou ferramenta em computador local e conecta-se atravs de uma
rede a uma instancia de banco de dados. Esta a configurao denominada Client/Server.
Conexo de trs camadas: o computador do usurio se comunica pela rede com uma
aplicao ou servidor de rede. Exemplo: O usurio executa um browser (Internet Explorer,
Opera, Firefox, etc.) para usar uma aplicao que reside em um servidor (Windows/IIS,
Linux/Apache, etc.) que recupera dados de um banco de dados Oracle com host Unix em
execuo.
Processando uma consulta (SELECT)
As consultas (SELECT) so distintas dos outros comandos DML, pois retornam resultados (uma
ou mais linhas), enquanto os outros comandos retornam apenas se houve xito ou no. Em
uma consulta existem trs estgios principais:
1. Analisando uma instruo SQL
Procura cpia da instruo SQL no Shared Pool.
Valida a instruo SQL (sintaxe).
Efetua pesquisas no dicionrio de dados para validar tabelas e campos (semntica).
Verifica os privilgios do usurio.
Determina o plano de execuo ideal para a instruo (ndices).
Armazena verso parseada (compilada) do comando.
Na fase de anlise apenas so feitos verificaes de erros que possam ocorrer antes da
execuo. Erros de converso de dados ou informao duplicada de chave primria so
tratadas na fase de execuo.
2. Executando a instruo SQL
Neste ponto, o servidor Oracle possui os recursos necessrios para a execuo dos comandos,
no caso de instruo SELECT, preparado o processo de recuperao de dados. Identifica as
linhas para extrao.

Leituras lgicas: blocos que j esto na memria (cache hit).


Leituras fsicas: blocos que no esto na memria. (cache miss)

3. Extraindo as linhas de uma consulta


Neste estgio as linhas so selecionadas e ordenadas se necessrio e passadas pelo servidor
ao usurio. Dependendo do nmero de linhas podem ser necessrios um ou mais processo de
extrao.
Processando uma instruo DML (INSERT, UPDATE, DELETE)
Uma instruo DML requer apenas duas fases de processamento:
1. Analisando uma instruo DML (Igual ao processo consulta SQL)
Procura cpia da instruo SQL no Shared Pool.
Valida a instruo SQL (Sintaxe).
Efetua pesquisas no dicionrio de dados para validar tabelas e campos.
Verifica os privilgios do usurio.
Determina o plano de execuo ideal para a instruo (ndices).

14

ADMINISTRAO EM BANCO DE DADOS


2. Executando a instruo DML
Se no houver blocos de rollback e dados no Data Buffer Cache, o processo de servidor far
sua leitura dos Data Files para o Cache de Buffer.
Processo de servidor bloqueia as linhas que sero modificadas.
No Redo Log Buffer, so registradas as alteraes a serem feitas no rollback e dados.

As alteraes de bloco de rollback registram os valores dos dados antes de serem modificados,
armazenam de forma que as instrues DML possam ser submetidas a rollback se necessrio.
As alteraes dos blocos de dados registram os novos valores de dados.

O Processo de servidor registra a imagem original do bloco de rollback e atualiza o bloco de


dados. Essas duas alteraes so efetuadas no cache de buffer do banco de dados.
Qualquer bloco alterado no cache de buffer ser marcado como buffer sujo, ou seja, os
buffers que no so iguais aos blocos correspondentes no disco.

REVISO
1. Descreva a arquitetura de trs camadas.
2. Quais as principais funes do DBA (Database Administrator)?
3. Tomando como base a arquitetura fsica, liste os componentes principais do Oracle.
4. O que instncia?
5. O que PGA?
6. O que SGA?
7. Quais os trs conjuntos de arquivos? Descreva-os.
8. Quais so os processos de segundo plano (background) essenciais para o funcionamento
do Oracle?
9. Qual a funo do processo ARCH?
10. Fale sobre as diferentes formas do usurio conectar-se ao Oracle.

LABORATRIO
1. Informe o nome e o status da INSTNCIA.
2. Obtenha os seguintes parmetros da SGA:
Fixed Size, Variable Size, Database Buffers, Redo Buffers
3. Verifique quais processos de segundo plano (background) esto disponveis.
4. Informe os nomes dos DATA FILES do Banco de Dados.
5. Informe os nomes dos CONTROL FILES do Banco de Dados.
6. Informe os nomes dos REDO LOG FILES do Banco de Dados.
7. Feche a INSTNCIA e o BANCO DE DADOS.
8. Abra somente a INSTNCIA e mantenha o BANCO DE DADOS fechado.
9. Monte o BANCO DE DADOS (sem abri-lo).
10. Abra o BANCO DE DADOS.

15

ADMINISTRAO EM BANCO DE DADOS


ARQUITURA LGICA
A estrutura lgica de um banco de dados Oracle inclui:
tablespaces
segmentos
extenses
blocos de dados

Os dados em um banco de dados Oracle so armazenados em TABLESPACES.


Um TABLESPACE pode pertencer a somente um BANCO DE DADOS.
Cada TABLESPACE consiste em um ou mais arquivos de dados: DATAFILES.
Um TABLESPACE pode consistir em um ou mais SEGMENTOS.
Os TABLESPACES podem ser colocados ON-LINE enquanto o banco de dados est em
execuo, e OFF-LINE para algumas atividades especiais.
TABLESPACES podem ter o status READ-WRITE ou READ-ONLY.
Existem tablespace de SYSTEM (Dicionrio de Dados) e NON-SYSTEM (dados e aplicaes
dos usurios).
DATAFILES so a implementao fsica dos TABLESPACES.
Cada DATAFILE pertence a um nico TABLESPACE.
Os DATAFILES so formados por um conjunto de BLOCOS (menor unidade manipulvel pelo
Oracle).
Os BLOCOS tm seu tamanho determinado na criao do BANCO DE DADOS e informado
atravs do parmetro DB_BLOCK_SIZE.
Um BLOCO no pertence a mais de um EXTENT ou DATAFILE.

16

ADMINISTRAO EM BANCO DE DADOS

O Oracle j vem com alguns TABLESPACES:


SYSTEM
UNDOTBS
TEMP
TOOLS
USERS
Quando um objeto de banco de dados (tabela, ndice, etc.) criado, ele designado a um
TABLESPACE por meio dos defaults de usurio ou das instrues especficas. Um SEGMENTO
criado naquele TABLESPACE para conter os dados associados quele objeto.
O espao que alocado ao SEGMENTO nunca liberado antes de o SEGMENTO ser excludo,
encolhido manualmente ou truncado.
Um SEGMENTO composto por EXTENSES, que so conjuntos contguos de BLOCOS do
Oracle.
Depois que as EXTENSES existentes no podem mais conter novos dados, o SEGMENTO
obter outra EXTENSO para dar suporte s inseres adicionais de dados feitas no objeto.
O processo de extenso continuar continuamente at que no haja mais espao disponvel
nos DATAFILES do TABLESPACE ou at que um nmero mximo interno de EXTENSES por
SEGMENTO seja atingido.
Quando um DATAFILE preenchido, ele pode ser estendido com base nas regras de
armazenamento definidas para ele.
Tipos de segmentos disponveis no Oracle:
TABLE
INDEX
ROLLBACK
TEMPORARY
PARTITION
CLUSTER
A quantidade de espao usado por um SEGMENTO determinada pelos PARMETROS DE
ARMAZENAMENTO. Esses parmetros so especificados quando um SEGMENTO criado e
podem ser alterado mais tarde.

17

ADMINISTRAO EM BANCO DE DADOS


Caso nenhum parmetro especfico de armazenamento seja dado no comando CREATE
TABLE, CREATE INDEX, CREATE CLUSTER ou CREATE ROLLBACK SEGMENT, o banco de dados
usar os parmetros default de armazenamento para o TABLESPACE no qual ele deve ser
armazenado.
Os valores default para os parmetros de armazenamento de cada TABLESPACE podem ser
consultados nas vises DBA_TABLESPACES:
SELECT * FROM DBA_TABLESPACES;
Quando um SEGMENTO criado ele adquire pelo menos uma EXTENSO. A EXTENSO
inicial armazenar os dados at no ter mais nenhum espao livre.
Voc pode usar a clusula PCTFREE para reservar dentro de cada BLOCO de cada EXTENSO uma
PORCENTAGEM DE ESPAO que estar disponvel para as atualizaes (UPDATES) das linhas existentes
do BLOCO.

Quando os dados adicionais so includos no SEGMENTO, este se estende obtendo uma


segunda EXTENSO com o tamanho especificado no parmetro NEXT.
O parmetro PCTINCREASE foi criado para minimizar o nmero de EXTENSES das tabelas
que podem crescer.
Um nmero diferente de zero para esse parmetro far com que o tamanho de cada
EXTENSO sucessiva aumente geometricamente de acordo com o fator especificado.
No h necessidade de usar um valor PCTINCREASE diferente de zero, a menos que o
volume de dados da tabela seja diferente daquele que o seu projeto pedia.
O PCTINCREASE no pode ser usado em TABLESPACES gerenciados LOCALMENTE.

O gerenciamento das EXTENSES podem ser feitos atravs de dois mtodos:


LOCALMENTE: nos TABLESPACES (a partir do Oracle 8i)
Atravs do DICIONRIO DE DADOS
GERENCIAMENTO LOCAL
Nos TABLESPACES gerenciados localmente, o TABLESPACE gerencia seu prprio espao
mantendo um bitmap em cada DATAFILE dos BLOCOS livres e utilizados ou dos conjuntos de
BLOCOS do DATAFILE.
Sempre que uma EXTENSO alocada ou liberada para reutilizao, o Oracle atualiza
(UPDATE) do bitmap para mostrar o status novo.
GERENCIAMENTO ATRAVS DO DICIONRIO DE DADOS
Em um TABLESPACE gerenciado por dicionrio sempre que uma EXTENSO alocada ou
liberada para reutilizao em um TABLESPACE, a entrada apropriada atualizada (UPDATED)
na tabela do Dicionrio de Dados.

CRIANDO UM TABLESPACE GERENCIADO LOCALMENTE


Para criar um TABLESPACE gerenciado localmente especifique a opo LOCAL na clusula
EXTENT MANAGEMENT:
CREATE TABLESPACE nome_do_tablespace
DATAFILE 'C:\Oracle\oradata\nome_do_datafile.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
Se a clusula UNIFORM SIZE for omitida, o default AUTOALLOCATE.
O SIZE default para UNIFORM 1MB.

18

ADMINISTRAO EM BANCO DE DADOS


Se voc especificar LOCAL em um comando CREATE TABLESPACE, no pode especificar uma
clusula DEFAULT STORAGE, MINEXTENTS ou TEMPORARY.
Se voc usar o comando CREATE TEMPORARY TABLESPACE para criar o TABLESPACE, pode
especificar EXTENT MANAGEMENT LOCAL.
Os TABLESPACES gerenciados localmente podem assumir parte das tarefas de
gerenciamento de espao executadas pelos DBAs nos TABLESPACES gerenciados por
dicionrio. Por causa de sua arquitetura eles tm menos chances de se fragmentar e seus
objetos tm menos chances de apresentar problemas relacionados a espao.
Voc no pode criar TABLESPACES SYSTEM gerenciados localmente no Oracle 8i ou 9i
quando cria o banco de dados. Esses TABLESPACES tambm no podem ser convertidos
posteriormente.
EXEMPLO:
CREATE TABLESPACE TBSP_PQ
DATAFILE 'C:\DATA_PQ.DBF' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM 1M;
CREATE TABLESPACE TBSP_MD
DATAFILE 'C:\DATA_MD.DBF' SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM 4M;
CREATE TABLESPACE TBSP_GD
DATAFILE 'C:\DATA_GD.DBF' SIZE 1000M
EXTENT MANAGEMENT LOCAL UNIFORM 16M;
Se voc tiver uma tabela pequena basta coloca-la no TABLESPACE TBSP_PQ. Se ficar muito
grande, voc pode move-la para o TABLESPACE TBSP_MD ou TBSP_GD.

CRIANDO UM TABLESPACE GERENCIADO ATRAVS DE DICIONRIO


SINTAXE:
CREATE TABLESPACE nome_do_tablespace
DATAFILE 'C:\Oracle\oradata\nome_do_datafile_1.dbf' SIZE int [K|M] [REUSE]
[AUTOEXTEND OFF|ON
NEXT
int [K|M]
MAXSIZE int [K|M|UNLIMITED],
DATAFILE 'C:\Oracle\oradata\nome_do_datafile_2.dbf' SIZE int [K|M] [REUSE]
MINIMUM EXTENT tamanho [K|M]
[LOGGING|NOLOGGING]
DEFAULT STORAGE (
INITIAL
int [K|M]
NEXT
int [K|M]
MINEXTENTS int
MAXEXTENTS int
PCTINCREASE int [0-100] )
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY];
DATAFILE
Indica um ou mais arquivos que constituiro o tablespace.
Deve-se especificar o path (caminho completo), o tamanho em KB (default) ou MB e a
possibilidade de reaproveitar um arquivo existente (reuse).
Raramente um tablespace ocupar menos que 1 MB.
AUTOEXTEND
Um arquivo pode ser automaticamente expandido por um valor fixo at um limite ou
indefinidamente. Esta clusula no recomendada.
Se voc no especificar esta clusula, os arquivos (datafiles) no sero estendidos
automaticamente.

19

ADMINISTRAO EM BANCO DE DADOS


LOGGING
Informa-se a criao dos segmentos do tablespace, que sero registrados no Redo Log por
default. A opo NOLOGGING realiza o contrrio.
DEFAULT STORAGE
Parmetros de armazenamento:
INITIAL
Tamanho do primeiro extent alocado (em bytes). Default: 10 KB.
NEXT
Quantos bytes sero alocados no momento da expanso. No h garantia de que sejam
contguos aos primeiros. Default: 10 KB.
MINEXTENTS
Quantos extents devero ser alocados na criao de um segmento. Default: 1.
MAXEXTENTS
Quantidade mxima de extents alocados por segmento. Recomenda-se que no passe de
10. Default: 121.
PCTINCREASE
Porcentagem de crescimento aplicada na expanso. Default: 50.
ONLINE | OFFLINE
Determina se a tablespace estar disponvel imediatamente aps a criao ou no
(OFFLINE).
O tablespace SYSTEM precisa estar ONLINE para dar permisso aos usurios.
necessrio estabelec-lo OFFLINE quando se deseja realizar uma tarefa como backup ou
como manuteno das tabelas.
PERMANENT | TEMPORARY
Determina se os dados que constaro do tablespace sero permanentes ou temporrios
(neste caso, sero dados transitrios, resultados de agrupamentos ou selees).
EXEMPLO:
CREATE TABLESPACE TESTE
DATAFILE 'C:\ORACLE\DATA\TAB1.DBF' SIZE 1 M,
'C:\ORACLE\DATA\TAB2.DBF' SIZE 1 M
DEFAULT STORAGE (INITIAL 100 K
NEXT
50 K
MINEXTENTS 1
MAXEXTENTS 10
PCTINCREASE 100)
EXTENT MANAGEMENT DICTIONARY;
NOTA: O diretrio destino j deve existir.
extents
1
2
3
4
5

tamanho
100
100
150
250
450

expande*
0
50
100
200
400

novo
100
150
250
450
850

* PCTINCREASE aumenta em 100% o valor anterior.


20

ADMINISTRAO EM BANCO DE DADOS


Para comprovar a criao:
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
TABLESPACE_NAME
----------------------------------------SYSTEM
USER_DATA
ROLLBACK_DATA
TEMPORARY_DATA
TESTE

ALTERANDO UM TABLESPACE
Incluir mais um data file:
ALTER TABLESPACE TESTE
ADD DATAFILE 'C:\ORACLE\DATA\TAB3.DBF' SIZE 1 M;
Tablespace altered.
SELECT FILE_NAME, BYTES, BLOCKS, STATUS
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'TESTE';
FILE_NAME
-----------------------C:\ORACLE\DATA\TAB1.DBF
C:\ORACLE\DATA\TAB2.DBF
C:\ORACLE\DATA\TAB3.DBF

BYTES
BLOCKS STATUS
------- ------ --------1048576
512 AVAILABLE
1048576
512 AVAILABLE
1048576
512 AVAILABLE

Mudar parmetro de armazenamento:


ALTER TABLESPACE TESTE
DEFAULT STORAGE (MAXEXTENTS 20 PCTINCREASE 50);
Tablespace altered.
SELECT TABLESPACE_NAME, MAX_EXTENDS, PCT_INCREASE
FROM DBA_TABLESPACE
WHERE TABLESPACE_NAME = 'TESTE';
TABLESPACE_NAME
MAX_EXTENDS
PCT_INCREASE
---------------------- ------------- -----------TESTE
20
50

ELIMINANDO UM TABLESPACE
DROP TABLESPACE name
[INCLUDING CONTENTS [AND DATAFILES] | CASCADE CONSTRAINTS];
INCLUDING CONTENTS
Realiza a excluso mesmo se houver algum segmento. A operao fracassar, caso existam
segmentos de rollback ou temporrios ativos. A opo AND DATAFILES apaga os arquivos
Data Files.
CASCADE CONSTRAINTS
Elimina constraints relacionados a tabelas na tablespace corrente que estejam em outra
tablespace.
DROP TABLESPACE TESTE;
Tablespace dropped.
21

ADMINISTRAO EM BANCO DE DADOS


SELECT TABLESPACE_NAME FROM DBA_TABLESPACE;
TABLESPACE_NAME
----------------------------------------SYSTEM
USER_DATA
ROLLBACK_DATA
TEMPORARY_DATA

VERIFICANDO ESPAOS LIVRES NOS TABLESPACES


SELECT TABLESPACE_NAME, SUM(BYTES) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME;
TABLESPACE_NAME
FREE_SPACE
------------------------------ ---------CWMLITE
14680064
DRSYS
12845056
EXAMPLE
196608
INDX
26148864
SYSTEM
88276992
TOOLS
4390912
UNDOTBS
197853184
USERS
26148864
8 linhas selecionadas.

DATA FILES
ALTERANDO AUTOEXTEND PARA 'OFF'
ALTER DATABASE
DATAFILE 'C:\ORACLE\DATA\TAB1.DBF'
AUTOEXTEND OFF;
ALTERANDO AUTOEXTEND PARA 'ON'
ALTER DATABASE
DATAFILE 'C:\ORACLE\DATA\TAB1.DBF'
AUTOEXTEND ON NEXT 100K MAXSIZE 2M;
ALTERANDO O TAMANHO DE UM DATA FILE
ALTER DATABASE
DATAFILE 'C:\ORACLE\DATA\TAB1.DBF'
RESIZE 2M;

22

ADMINISTRAO EM BANCO DE DADOS


REVISO
1. Tomando como base a arquitetura lgica, quais so os principais componentes do Oracle?
2. O que so TABLESPACES?
3. Um __________ pode pertencer a um nico Banco de Dados.
Cada TABLESPACE consiste em um ou mais DATAFILES.
Um __________ a menor unidade manipulvel pelo Oracle.
4. Quais TABLESPACES so normalmente criados por ocasio da instalao do Oracle?
5. A quantidade de espao usado por um segmento determinado pelos ________________.
6. O que acontecer se nenhum parmetro de armazenamento for informado num comando
CREATE TABLE?
7. Que comando deve ser utilizado para obter-se os valores default para os parmetros de
armazenamento?
8. Quando um segmento criado ele adquire pelo menos uma ____________.
9. Que parmetro quando diferente de zero far com que o tamanho de uma extenso
aumente geometricamente?
10. O gerenciamento das extenses pode ser feito atravs de dois mtodos. Quais?

LABORATRIO
1. Obtenha as seguintes informaes de cada TABLESPACE:

TABLESPACE_NAME
BLOCK_SIZE
INITIAL_EXTENT
NEXT_EXTENT
MIN_EXTENTS
MAX_EXTENTS
PCT_INCREASE
MIN_EXTLEN
STATUS [ONLINE|OFFLINE]
CONTENTS [PERMANENT|TEMPORARY]
LOGGING [LOGGING|NOLOGGING]
EXTENT_MAN [DICTIONARY|LOCAL]

2. Crie um TABLESPACE chamado TESTE com os seguintes parmetros:


DATAFILE: DATA1.DBF SIZE 20M
GERENCIAMENTO: LOCAL
EXTENTS: UNIFORM 512K
3. Verifique se o TABLESPACE realmente foi criado.
4. O comando acima criou um arquivo com o nome DATA1.DBF?
5. Qual o tamanho do arquivo DATA1.DBF?
6. Adicione um DATA FILE chamado DATA2.DBF com tamanho igual a 10 MB ao TABLESPACE
TESTE.
7. Obtenha as seguintes informaes dos DATA FILES da TABLESPACE TESTE:

FILE_NAME
BYTES
BLOCKS
STATUS

8. Elimine o TABLESPACE TESTE.

23

ADMINISTRAO EM BANCO DE DADOS


9. O que aconteceu com o arquivo DATA1.DBF?
10. Elimine os arquivos DATA1.DBF e DATA2.DBF.
11. Crie um TABLESPACE chamado TESTE com os seguintes parmetros:
DATAFILES: DATA1.DBF SIZE 2M e DATA2.DBF SIZE 2M
GERENCIAMENTO: DICIONRIO
DEFAULT STORAGE:
o INITIAL: 100 K
o NEXT: 50 K
o MINEXTENTS: 1
o MAXEXTENTS: 10
o PCTINCREASE: 25
12. Verifique se o TABLESPACE realmente foi criado.
13. Altere os seguintes parmetros de armazenamento default:
o MAXEXTENTS: 20
o PCTINCREASE: 50
14. Elimine o TABLESPACE TESTE.
15. Elimine os arquivos DATA1.DBF e DATA2.DBF.

24

ADMINISTRAO EM BANCO DE DADOS


SEGMENTOS
SEGMENTOS DE TABELA
So tambm chamados de SEGMENTOS DE DADOS, armazenam as linhas de dados
associados a tabelas ou clusters.
Cada SEGMENTO contm um BLOCO de cabealho que serve como um diretrio de espao
para o SEGMENTO.
Aps adquirir uma EXTENSO, ele mantm a EXTENSO at o SEGMENTO ser excludo ou
truncado.
NOTA: A excluso das linhas de uma tabela por meio de um comando DELETE no tem
impacto sobre a quantidade de espao que foi alocada para aquela tabela.
O nmero de EXTENTS aumentar at que:
1. o valor de MAXEXTENTS seja atingido (se houve um definido)
2. a cota do usurio no TABLESPACE seja atingida
3. o TABLESPACE ficar sem espao (se os DATAFILES no puderem se auto-estender)
Deve-se ajustar o parmetro PCTFREE para minimizar a quantidade de espao desperdiado
em um SEGMENTO DE DADOS.
O parmetro PCTFREE especifica a quantidade de espao que ser mantida livre dentro de
cada BLOCO. (O espao livre poder ser utilizado quando colunas com valores NULL forem
atualizadas para conter valores ou quando atualizaes para outros valores de linhas forarem
a linha a se estender.) A configurao adequada de PCTFREE especfica do aplicativo, uma
vez que ela depende da natureza das atualizaes que esto sendo executadas.
SEGMENTOS DE NDICE
Para minimizar a disputa, os ndices devem ser armazenados em um TABLESPACE separado
de suas tabelas associadas.
Eles podem ser excludos indiretamente se a tabela ou o cluster que eles indexam for
excludo.
Os segmentos dos ndices dos TABLESPACES gerenciados por DICIONRIO DE DADOS tm
clusula STORAGE que especificam os valores INITIAL, NEXT, MINEXTENTS, MAXEXTENTS e
PCTINCREASE.
A opo REBUILD do comando ALTER INDEX pode ser utilizada para alterar as configuraes
STORAGE e TABLESPACE de um ndice:
ALTER INDEX nome_do_indice REBUILD
TABLESPACE nome_do_tablespace
STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0);
NOTA: Durante o processo REBUILD, os ndices antigo e novo existiro no banco de dados.
Portanto, voc deve ter espao suficiente disponvel para armazenar ambos os ndices antes de
executar o comando ALTER INDEX REBUILD.
SEGMENTOS DE ROLLBACK
Quando os usurios inserem, atualizam ou excluem os dados, o Oracle preserva as imagens
dos dados anteriores alterao.
Toda consulta que iniciada antes do COMMIT da alterao ver a verso antiga dos dados,
enquanto a sesso que faz a alterao ver a verso nova.
Para oferecer essa consistncia de leitura, o Oracle oferece duas solues:
A primeira soluo, os SEGMENTOS DE ROLLBACK, est disponvel desde o Oracle 6.

25

ADMINISTRAO EM BANCO DE DADOS


O Oracle 9i inclui o gerenciamento automtico de UNDO como uma opo nova para a
consistncia de leitura dentro do banco de dados.
Pode-se utilizar os SEGMENTOS DE ROLLBACK ou os TABLESPACES de UNDO no Oracle 9i,
mas no se pode usar ambos ao mesmo tempo.
Para selecionar um mtodo de UNDO, utiliza-se o parmetro UNDO_MANAGEMENT no
arquivo de parmetros INIT.ORA.
Se UNDO_MANAGEMENT estiver definido como MANUAL os SEGMENTOS DE ROLLBACK
fornecero o gerenciamento de UNDO.
Se UNDO_MANAGEMENT estiver definido como AUTO, um TABLESPACE de UNDO (tambm
conhecido como UNDO GERENCIADO POR SISTEMA) fornecer o gerenciamento de UNDO.
SEGMENTOS TEMPORRIOS
Armazenam dados temporrios durante as operaes de classificao, UNION, etc.
Cada usurio tem um TABLESPACE temporrio especificado quando a conta criada ou
quando alterada com ALTER USER.
No Oracle 9i, TABLESPACES permanentes no podem ser usados como temporrios.
Quando um banco de dados criado, pode-se especificar um TABLESPACE temporrio
default para todos os usurios. Em um banco de dados existente, pode-se alterar o
TABLESPACE default com o comando ALTER DATABASE:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nome_da_tablespace;
Os usurios que foram indicados para um TABLESPACE default temporrio antigo sero
redirecionados para o novo TABLESPACE temporrio default.
Para ver o TABLESPACE temporrio atual execute a consulta:
SELECT PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';
PROPERTY_VALUE
-------------TEMP
Pode-se especificar um TABLESPACE como temporrio com o comando CREATE TEMPORARY
TABLESPACE. Um TABLESPACE temporrio no pode ser utilizado para conter nenhum
segmento permanente.
A primeira classificao a usar o TABLESPACE temporrio aloca um SEGMENTO temporrio
dentro do TABLESPACE. Quando a consulta concluda, o espao usado pelo SEGMENTO
temporrio no excludo. Em vez disso, o espao usado pelo SEGMENTO temporrio fica
disponvel para ser utilizado pelas outras consultas, permitindo assim que a operao de
classificao evite os custos da alocao e liberao de espao para os SEGMENTOS
temporrios.

26

ADMINISTRAO EM BANCO DE DADOS


TRANSAES
DEFINIO
Uma transao representa um conjunto de comandos cujo resultado ser gravado de uma vez.
Durante uma transao as linhas afetadas ficam presas (locked). Ela se inicia quando se
executa o primeiro comando SQL e termina nos seguintes casos:
COMMIT
ROLLBACK
Fim da sesso
Comando DDL ou DCL

Grava efetivamente os comandos INSERT, UPDATE e DELETE.


Desconsidera os comandos INSERT, UPDATE e DELETE.
Ocorre um COMMIT implcito.
Provocam o fim da transao corrente: COMMIT implcito ou
ROLLBACK (se houver qualquer problema durante a gravao
definitiva).

Um comando SET TRANSACTION inicia uma transao com o Banco de Dados que pode ser
read only ou read write. Ele somente pode ser usado aps um COMMIT ou ROLLBACK.
SET TRANSACTION
SET TRANSACTION READ ONLY NAME 'tr1';
Cenrio: Os usurios A, B e C esto conectados. O usurio A deseja emitir um longo relatrio,
envolvendo tabelas que esto sendo atualizadas por B e C. Neste caso, A deve iniciar sua
transao com o comando acima para "fotografar" os dados no incio da emisso do relatrio e
desconsiderar os COMMITs que B e C derem.
Em transaes read write, somente um usurio pode alterar uma tabela a cada vez. Enquanto
ele no encerrar sua transao, os demais usurios somente podem ver os dados como
estavam antes da transao modificadora comear. Quando o comando COMMIT executado,
as alteraes so gravadas, os valores antigos so perdidos e o lock desfeito.
COMMIT
Para efetivar as alteraes:
INSERT INTO cliente (codigo,nome)
VALUES (1,'Antonio Alves');
COMMIT;
SELECT nome FROM cliente;
NOME
-------------------------Antonio Alves
1 linha selecionada
ROLLBACK
Para descartar as alteraes:
INSERT INTO cliente (codigo,nome)
VALUES (2,'Beatriz Bernardes');
SELECT nome FROM cliente;
NOME
-------------------------Antonio Alves
Beatriz Bernardes
2 linhas selecionadas
27

ADMINISTRAO EM BANCO DE DADOS


ROLLBACK;
SELECT nome FROM cliente;
NOME
-------------------------Antonio Alves
SAVEPOINT
Para inserir "marcas" a fim de possibilitar um rollback de apenas partes da transao:
INSERT INTO cliente (codigo,nome)
VALUES (2,'Beatriz Bernardes');
Estabelecendo um SAVEPOINT:
SAVEPOINT incluir_ok;
Incluindo outra linha:
INSERT INTO cliente (codigo,nome)
VALUES (3,'Claudio Carvalho');
SELECT nome FROM cliente;
NOME
-------------------------Antonio Alves
Beatriz Bernardes
Claudio Carvalho
Voltando ao ponto marcado:
ROLLBACK TO incluir_ok;
SELECT nome FROM cliente;
NOME
-------------------------Antonio Alves
Beatriz Bernardes
Salvando as operaes realizadas:
COMMIT;
Terminada a transao, a marca eliminada. Criando uma marca com um nome j utilizado,
simplesmente ocorre uma substituio.

28

ADMINISTRAO EM BANCO DE DADOS


LABORATRIO
1. Crie uma tabela conforme a estrutura abaixo:
Nome da Tabela: ALUNO
RA
NOME

NUMBER
VARCHAR2

(9)
(40)

PRIMARY KEY

2. Insira a seguinte linha:


111222333,'Daniela Damasceno'
3. Utilize o comando COMMIT
4. Observe o resultado com o comando SELECT
5. Insira a seguinte linha:
222333444,'Ernesto Elizeu'
6. Observe o resultado com o comando SELECT
7. Utilize o comando ROLLBACK
8. Observe o resultado com o comando SELECT
9. Insira (novamente) a seguinte linha:
222333444,'Ernesto Elizeu'
10. Utilize o comando SAVEPOINT marca_ok;
11. Insira a seguinte linha:
333444555,'Fabio Fernandes'
12. Utilize o comando ROLLBACK TO marca_ok;
13. Observe o resultado com o comando SELECT
11. Insira (novamente) a seguinte linha:
333444555,'Fabio Fernandes'
14. Utilize qualquer comando DDL (CREATE, DROP) ou DCL (GRANT, REVOKE)
15. Utilize o comando ROLLBACK
16. Observe o resultado com o comando SELECT

29

ADMINISTRAO EM BANCO DE DADOS


SEGMENTOS DE ROLLBACK / UNDO
A verso 9i do Oracle introduziu a possibilidade de gerenciar os segmentos de Rollback
automaticamente atravs do SMU (System Managed Undo).
Convencionou-se denominar Rollback Segment os segmentos criados sob gerncia manual,
presente at a verso 8i e ainda possvel (embora no recomendvel) na verso 9i. Os Undo
Segments identificam os criados sob a gerncia automtica.
Essencialmente, ambos tm a mesma definio: uma rea especial destinada a guardar
contedos de blocos alterados por uma transao.
Quando uma transao (no READ ONLY) comea, reservado uma entrada em um segmento
de Rollback/Undo.
Uma transao no ocupa dois segmentos, porm um segmento pode conter vrias entradas
de transaes.
Outros extents so alocados medida que outros dados vo sendo alterados.
Na gerncia manual (Rollback Segments), os seguintes parmetros so especificados: INITIAL,
NEXT, MINEXTENTS e MAXEXTENTS. (PCTINCREASE no utilizado).
Um extent pode conter blocos de vrias transaes, entretanto cada bloco possui referncia a
uma nica transao.
Quando uma transao no pode mais adquirir espao dentro da extenso atual, o segmento
de rollback olha para a prxima extenso para saber se pode continuar gravando a entrada do
segmento de rollback nela.
Se a extenso atual for a ltima dentro do segmento de rollback, o banco de dados tentar
estender a entrada para a primeira extenso.
Entretanto, a prxima extenso j pode estar em uso. Neste caso, o segmento de rollback ser
forado a adquirir uma nova extenso.

extenso 1

SEGMENTO DE ROLLBACK
extenso 2
extenso 3
transao 1
extenso 1

extenso 4
transao 1
extenso 2

A transao 1 se iniciou na extenso 3 e preencheu a extenso 4.

extenso 1
transao 1
extenso 3

SEGMENTO DE ROLLBACK
extenso 2
extenso 3
transao 1
extenso 1

extenso 4
transao 1
extenso 2

Se a extenso 1 estiver disponvel, a transao 1 a utiliza.

extenso 1
em uso

SEGMENTO DE ROLLBACK
extenso 2
extenso 3
extenso 4
transao 1
transao 1
extenso 2
extenso 1

extenso 5
transao 1
extenso 3

Se a extenso 1 estiver em uso, o segmento de rollback se estender.


Quando uma transao termina, os extents que estavam ativos passam a estar inativos, isto ,
so liberados para que outra transao possa utiliz-los.

30

ADMINISTRAO EM BANCO DE DADOS


O tamanho da rea destinada a Segmentos de Rollback/Undo deve ser corretamente
dimensionada, j que durante uma longa transao, se no for possvel alocar uma extenso
ocorrer o seguinte erro:
ORA-1562: (unable to extend rollback segment)
Esta ocorrncia provocar o rollback da transao em questo.
Para que um segmento de Rollback/Undo possa receber requisies de transaes, ele deve
estar ONLINE:
select segment_name, tablespace_name, status
from dba_rollback_segs;
SEGMENT_NAME
------------SYSTEM
_SYSSMU1$
...
_SYSSMU10$

TABLESPACE_NAME
---------------SYSTEM
UNDOTBS

STATUS
------ONLINE
ONLINE

UNDOTBS

ONLINE

O comando acima foi disparado em um banco com SMU ativa.


Logo aps a criao do Banco de Dados e sua primeira Tablespace, SYSTEM, cria-se um
Segmento de Rollback tambm denominado SYSTEM. Caso nada se diga em contrrio, ser
estabelecida a SMU e criada uma Tablespace UNDOTBS que armazenar Segmentos de Undo.
Estando a SMU ativa, comandos outrora utilizados para manipulao de Segmentos de
Rollback ficam proibidos: CREATE, ALTER e DROP ROLLBACK SEGMENT, etc.
Os parmetros abaixo indicam a presena da SMU:
SHOW PARAMETERS UNDO;
NAME
---------------------undo_management
undo_retention
undo_suppress_errors
undo_tablespace

TYPE
--------string
integer
boolean
string

VALUE
-------AUTO
900
FALSE
UNDOTBS

NOTA: No exemplo acima undo_retention corresponde a 900 segundos.


Para alterar dinamicamente o parmetro UNDO_RETENTION utilize o comando:
ALTER SYSTEM SET UNDO_RETENTION=1200;

31

ADMINISTRAO EM BANCO DE DADOS


FLASHBACK QUERIES
Estando a SMU ativa, sob determinadas circunstncias, possvel recuperar o contedo de
uma tabela cujas linhas tenham sido excludas acidentalmente. Isto possvel atravs do novo
recurso denominado Flashback Queries que aproveita dados coletados nos Extents ainda no
expirados. Isto significa que as transaes que os utilizaram foram concludas a menos tempo
do que informa o parmetro undo_retention ou seus espaos ainda no foram ocupados.
A capacidade de recuperao restringe-se a cinco dias, sempre e quando Extents no tiverem
sido reutilizados ou no tiver acontecido algum comando DDL sobre a tabela que se deseja
recuperar.
Imagine que s 10:00 horas de uma manh ensolarada, tenham sido eliminados todos os
registros da tabela CLIENTES:
DELETE cliente;
COMMIT;
Agora, passados vinte minutos, descobrimos esta fatalidade.
Voltaremos no tempo! Como? Utilizando a rotina enable_at_time, presente no package
DBMS_FLASHBACK:
execute dbms_flashback.enable_at_time (sysdate 20/1440);
Este comando busca o estado das tabelas como estava h vinte minutos (um dia possui 1440
minutos).
Observe o resultado:
SELECT * FROM cliente;
IMPORTANTE: Restries aps habilitar uma janela no tempo:
Esto proibidos quaisquer comandos DDL, execute, update ou delete, ou seja, possvel
apenas consultar as tabelas;
A nica maneira de recuperar os dados consiste em criar um script que entre e saia do modo
Flashback.
Crie uma tabela chamada AUX_CLIENTE para receber provisoriamente os dados e execute, a
seguir, o bloco PL/SQL abaixo.
DECLARE
CURSOR C_CLIENTE IS
SELECT * FROM CLIENTE;
V_LINHA CLIENTE%ROWTYPE;
BEGIN
DELETE FROM AUX_CLIENTE;
COMMIT;
DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE -20/1440);
OPEN C_CLIENTE;
DBMS_FLASHBACK.DISABLE;
LOOP
FETCH C_CLIENTE INTO V_LINHA;
EXIT WHEN C_CLIENTE%NOTFOUND;
INSERT INTO AUX_CLIENTE VALUES (V_LINHA.CODIGO, V_LINHA.NOME);
END LOOP;
CLOSE C_CLIENTE;
COMMIT;
END;
A recuperao no precisa acontecer na mesma sesso responsvel pela perda.
Concluda a execuo dos comandos anteriores, possvel recarregar a tabela CLIENTE:
INSERT INTO cliente SELECT * FROM aux_cliente;

32

ADMINISTRAO EM BANCO DE DADOS


REVISO
1. Defina segmentos de rollback/undo.
2. O que acontece quando uma transao no pode mais adquirir espao dentro da extenso
atual?
3. O que acontece se, durante uma longa transao, no for possvel alocar uma extenso?
4. Quando utilizamos o comando SHOW PARAMETERS UNDO; obtemos, entre outros, o
seguinte parmetro UNDO_RETENTION. O que ele informa? Seu valor expresso em que
unidade de tempo?

LABORATRIO
1. Consulte as seguintes informaes sobre o segmento de UNDO de seu Banco de Dados:
1.1 Nomes dos segmentos
1.2 Nome do Tablespace
1.3 Status (online/offline)
2. Verifique se O SMU (System Managed Undo) est sendo utilizado.
3. Verifique o "tempo de vida" dos extents no SEGMENTO DE UNDO.
4. Altere dinamicamente o valar do parmetro UNDO_RETENTION de um segmento para
36000.
5. Execute uma Flashback Query.

33

ADMINISTRAO EM BANCO DE DADOS


NDICES
Estruturas especiais inseridas no Banco de Dados com o objetivo de melhorar o acesso s
tabelas.
ndices so utilizados durante um SELECT com as clusulas WHERE, ORDER BY e GROUP BY.
O Oracle cria automaticamente um ndice do tipo UNIQUE ao criar uma PRIMARY KEY, o qual
recebe o mesmo nome da CONSTRAINT.
TIPOS DE NDICES
RVORE B
Reduzem o I/O em disco utilizando uma estrutura de rvore-B (B*Tree) para localizar
rapidamente os dados.
Ao varrer a rvore-B, ele identifica a chave e recupera o seu ROWID (ponteiro para acesso ao
dado) localizando o registro rapidamente.
Os ndices tipo rvore-B so mais utilizados para melhorar o desempenho dos comandos
SELECT com colunas de valores exclusivos ou em sua grande parte distintos. relativamente
fcil para o Oracle manter este tipo de ndice quando os dados so alterados em uma coluna
indexada, tornando-o til para aplicativos de transaes on-line.
No entanto, esses ndices no so muito recomendveis para encontrar dados rapidamente nos
comandos de SELECT em situaes onde os valores na coluna indexada no so muito
distintos.
Sintaxe geral:
CREATE [UNIQUE] INDEX nomeindice
ON nometabela (nomecoluna [ASC|DESC] [,nomecoluna ...];
Quando criar ndices compostos, coloque primeiro a coluna mais usada.
OPES
UNIQUE
[ASC|DESC]

DESCRIO
O ndice no aceitar valores repetidos
Especifica a classificao ASC (ascendente), default, ou DESC (descendente)

Exemplo 1 (simples):
CREATE INDEX aluno_codturma_idx ON aluno (codturma);
Exemplo 2 (composto):
CREATE INDEX emp_dept_salario_idx ON emp (dept ASC, salario DESC);
ORDEM INVERTIDA
O ndice de ordem invertida o mesmo que o ndice de rvore-B com uma exceo: os dados
da coluna indexada so armazenados na ordem inversa. Assim, se um valor da coluna CODIGO
1003, a coluna do ndice de ordem invertida ser 3001.
Os benefcios deste tipo de ndice pode ser notado quando o comando SELECT contm termos
WHERE que utilizam comparaes de igualdade (SELECT * FROM itempedido WHERE codigo =
1003;), mas no em situaes onde comparaes de variao so utilizadas (SELECT * FROM
itempedido WHERE codigo BETWEEN 1002 AND 1004;). Isto ocorre porque as linhas
consecutivas so armazenadas longe umas das outras no ndice.

34

ADMINISTRAO EM BANCO DE DADOS


Sintaxe geral:
CREATE INDEX nomeindice
ON nometabela (nomecoluna) REVERSE;
Exemplo:
CREATE INDEX codprod_itempedido_idx ON itempedido (codprod) REVERSE;

CODPED
1
1
1
2
2
2

ITEMPEDIDO
CODPROD
1001
1002
1003
1004
1005
1006

QTDPROD
50
40
30
40
50
30

NDICE ITEMPEDIDO(CODPRODUTO)
CODPROD
ROWID
1001
2001
3001
4001
5001
6001
BITMAP
O ndice bitmap armazena uma entrada contendo cada valor distinto, os ROWIDs de incio e
fim (para indicar a variao de ROWIDs na tabela) e uma seqncia binria com a mesma
quantidade de bits que a de linhas na tabela.

Campus
Vila Maria
Memorial
Vergueiro

RA
112233
223344
334455
445566
556677
667788
778899
889900

ndice BITMAP na tabela ALUNO (CAMPUS)


ROWID incio
ROWID fim
AAAAvQAAGAAAA3yAAA
AAAAvQAAGZZZZ3yZZZ
AAAAvQAAGAAAA3yAAA
AAAAvQAAGZZZZ3yZZZ
AAAAvQAAGAAAA3yAAA
AAAAvQAAGZZZZ3yZZZ
ALUNO
NOME
CURSO
Antonio Alves
TGSI
Beatriz Bernardes
TGRCI
Claudio Carvalho
TGSI
Daniela Damasceno
TGRCI
Ernesto Eliseu
TGRCI
Flavia Fernandes
TGRCI
Higino Hipolito
TGRCI
Isabel Inacio
TGRCI

Nr bits = Nr linhas
10000110
01011000
00100001

CAMPUS
Vila Maria
Memorial
Vergueiro
Memorial
Memorial
Vila Maria
Vila Maria
Vergueiro

Os ndices bitmap melhoram o desempenho em situaes onde voc seleciona dados de uma
coluna cujos valores so muito repetidos e so pouco ou nunca alterados. Alterar o valor de
uma coluna armazenada em um ndice de bitmap requer que o Oracle trave o segmento inteiro
armazenando o ndice de bitmap para fazer a alterao.
Os ndices de mapas de bits s esto disponveis com a Enterprise Edition do Banco de Dados
Oracle. - Oracle Referncia para o BDA. p. 156
35

ADMINISTRAO EM BANCO DE DADOS


Sintaxe geral:
CREATE BITMAP INDEX nomeindice
ON nometabela (nomecoluna);
Exemplo:
CREATE BITMAP INDEX aluno_campus_idx ON aluno (campus);
BASEADO EM FUNO
O ndice baseado em funo desenvolvido para melhorar o desempenho de pesquisa,
tornando possvel definir um ndice que funciona onde seu termo WHERE contm operaes
em colunas.
Por exemplo, imagine que voc tem a tabela EMP com trs colunas: ID, NOME e SALARIO. A
coluna SALARIO tem um ndice rvore-B nela. No entanto, se voc emitir o comando:
SELECT * FROM emp WHERE (salario*1.05)>10000;
o Oracle ir ignorar o ndice realizando um 'scaneamento' completo na tabela.
Os ndices baseados em funo so teis nas situaes em que os comando SQL contm essas
operaes em seus termos WHERE.
Exemplo:
CREATE INDEX emp_func_idx ON emp (salario*1.05);
Para permitir o uso de ndices baseados em funo, voc deve emitir os dois comandos ALTER
SESSION a seguir:
ALTER SESSION SET QUERY_REWRITE_ENABLE = TRUE;
ALTER SESSION SET QUERY_REWRITE_INTEGRITY = TRUSTED;
OBTER INFORMAES

Confirmar a existncia do(s) ndice(s):

SELECT INDEX_NAME FROM USER_INDEXES;

Para obter outras informaes:

SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION, COLUMN_LENGTH


FROM USER_IND_COLUMNS
WHERE TABLE_NAME='ALUNO';
MOSTRAR O USO DE NDICES
ALTER INDEX aluno_codturma_idx MONITORING USAGE;
SELECT * FROM V$OBJECT_USAGE;
Nota: Se o ndice acima for do usurio SCOTT, voc dever conectar-se ao Oracle como
SCOTT. Se voc conectar-se como SYS para pesquisar V$OBJECT_USAGE, no ver
informaes para o ndice de SCOTT.

36

ADMINISTRAO EM BANCO DE DADOS


Situao 1 - O usurio faz a seguinte consulta:
SELECT * FROM aluno;
Ao realizarmos a consulta SELECT * FROM V$OBJECT_USAGE; o valor da coluna USED ser
NO, pois realizamos ou 'scaneamento' completo da tabela, no necessrio utilizar o ndice
aluno_codturma_idx.
Situao 2 - O usurio faz a seguinte consulta:
SELECT * FROM aluno WHERE codturma=12;
O valor da coluna USED ser YES, foi necessrio utilizar o ndice aluno_codturma_idx.
ELIMINAR UM NDICE
DROP INDEX aluno_cod_turma_idx;
Nota: Este comando no elimina ndices criados a partir de constraints.
TABELAS ORGANIZADAS POR NDICE
Uma tabela organizada por ndice (IOT) um ndice no qual uma linha inteira armazenada, e
no apenas os valores de chave da linha.
Em vez de armazenar um RowID para a linha, a chave primria tratada como o identificador
lgico da linha.
Deve-se especificar uma chave primria visto que os dados da tabela so classificados pela
chave primria.
Exemplo:
CREATE TABLE t1 (
codigo NUMBER(4) PRIMARY KEY,
nome VARCHAR2(20))
ORGANIZATION INDEX;

37

ADMINISTRAO EM BANCO DE DADOS


EXERCCIOS
Criar as tabelas conforme script abaixo:
CREATE TABLE FUNC (
CODFUNC NUMBER(4),
NOMEFUNC VARCHAR2(40),
CPFFUNC VARCHAR2(12),
SALFUNC NUMBER(8,2),
CODDEPT NUMBER(4),
RAMALFUNC NUMBER(8),
CONSTRAINT FUNC_PK PRIMARY KEY(CODFUNC),
CONSTRAINT FUNC_CPFFUNC_UN UNIQUE(CPFFUNC));
CREATE TABLE PROJ (
CODPROJ NUMBER(4),
NOMEPROJ VARCHAR2(20),
INICIOPROJ DATE,
FINALPROJ DATE,
VALORPROJ NUMBER(12,2),
GERPROJ NUMBER(4),
CONSTRAINT PROJ_PJ PRIMARY KEY(CODPROJ),
CONSTRAINT PROJ_GERPROJ_FK FOREIGN KEY(GERPROJ) REFERENCES FUNC(CODFUNC));
CREATE TABLE PROJFUNC (
CODPROJ NUMBER(4),
CODFUNC NUMBER(4),
CONSTRAINT PROJFUNC_PK PRIMARY KEY(CODPROJ,CODFUNC),
CONSTRAINT PROJFUNC_PROJ_FK FOREIGN KEY(CODPROJ) REFERENCES PROJ(CODPROJ),
CONSTRAINT PROJFUNC_FUNC_FK FOREIGN KEY(CODFUNC) REFERENCES FUNC(CODFUNC));
CENRIOS
1. Observou-se que so realizadas consultas freqentes na tabela FUNC utilizando como
parmetro o campo CPFFUNC. necessrio criar o seguinte ndice:
CREATE INDEX CPFFUNC_IDX ON FUNC(CPFFUNC)? Por que?
2. O departamento de recursos humanos constantemente est emitindo relatrios conforme
modelo a seguir com base na tabela FUNC:
NOMEFUNC
----------------------ANTONIO ALVES
CLAUDIO CARVALHO
DANIELA DAMASCENO
HIGINO HIPOLITO

SALFUNC
-------8500.00
5300.00
4200.00
3400.00

Crie o ndice adequado para este caso.


3. A gerncia de operaes faz vrias consultas nas quais necessrio apresentar os dados
ordenados pelo cdigo do projeto (CODPROJ) a partir da data de incio (INICIOPROJ) mais
recente.
O que voc poder fazer para melhorar o tempo de resposta a estas consultas?
4. A empresa tem cinco departamentos e um total de 650 funcionrios. No h previso a
curto e mdio prazo de aumento no nmero de departamentos. Freqentemente so
emitidas listas com os nomes dos funcionrios (NOMEFUNC) agrupados por departamento
(CODDEPT).
Crie um tipo de ndice adequado a este caso.

38

ADMINISTRAO EM BANCO DE DADOS


5. Para atender as necessidades da recepcionista, foi criado um pequeno aplicativo capaz de
consultar o ramal dos vrios funcionrios (RAMALFUNC). Para evitar o problema da
divergncia entre maisculas e minsculas, as consultas so feitas utilizando a funo
UPPER.
Exemplo: SELECT * FROM FUNC WHERE UPPER(NOMEFUNC) LIKE '%ANTONIO%';
No entanto, a recepcionista tem repetido que a consulta "est muito lenta".
Crie um ndice para ajudar a 'pobre moa'.
6. O aplicativo tambm capaz de informar nome do funcionrio a partir do ramal interno. A
empresa adotou uma soluo de VoIP (Voz sobre IP) e para padronizar, os dois primeiros
nmeros referem-se ao pas (Brasil = 55) os dois nmeros seguintes 'apontam' a cidade
(So Paulo = 11) e os quatro ltimos so reservados para designar cada equipamento.
Crie um ndice adequado para consultas atravs do campo RAMALFUNC.

39

ADMINISTRAO EM BANCO DE DADOS


USURIOS, PRIVILGIOS E PAPIS
USURIO: pessoa previamente cadastrada que deseja acessar o Oracle.
PRIVILGIO: autorizao para que o usurio acesse e manipule um objeto de banco de
dados. Exemplo: um usurio pode ter o privilgio de selecionar tabelas, porm no modificlas. Existem dois tipos de privilgios:
PRIVILGIOS DE SISTEMA: permisso de executar determinada ao em objetos de banco
de dados. Existem mais de cem tipos de privilgios associados a aes de banco de dados. O
nome do privilgio praticamente o nome da ao que ele executa.
PRIVILGIO DE OBJETO: direito de executar uma determinada ao em um objeto
especfico, por exemplo, o direito de incluir uma linha em uma tabela. Eles no se aplicam a
todos os objetos de banco de dados. Quando um usurio cria um objeto como uma tabela,
esta s pode ser visualizada por ele. Para que outro usurio possa ter acesso a ela,
necessrio que o proprietrio conceda privilgios a ele ou um papel que ir acessar a tabela.
PAPEL: Um papel (role) um grupo de privilgios associados a um nome que os identifica.
Dessa forma, em vez de conceder vrios privilgios a um nico usurio, voc pode criar um
papel que recebe os privilgios e, em seguida, atribu-lo ao usurio.
O Oracle 8i j tem preestabelecidos os seguintes usurios, senhas e papis:
USURIO
SCOTT
SYSTEM
SYS
DEMO

SENHA
TIGER
MANAGER
SYS
DEMO

PAPEL
CONNECT e RESOURCE
DBA
CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE e IMP_FULL_DATABASE
CONNECT e RESOURCE

CRIAR NOVOS USURIOS


1. Conectar-se como usurio system, senha manager:
CONNECT SYSTEM/MANAGER;
2. Criar o novo usurio:
CREATE USER aluno IDENTIFIED BY uninove;
Sintaxe completa:
CREATE USER nome_usuario
IDENTIFIED [BY senha | externally]
DEFAULT TABLESPACE nome_tablespace
TEMPORARY TABLESPACE nome_tablespace_temporaria
QUOTA numero_inteiro [K | M] ON nome_tablespace
PROFILE nome_profile
PASSWORD EXPIRE
ACCOUNT [LOCK | UNLOCK]
PASSWORD EXPIRE: Expira imediatamente a senha, obrigando o usurio a especificar uma
nova senha antes da primeira conexo.
3. Tentar conectar-se como novo usurio:
CONNECT aluno/uninove;
Ocorre um erro, pois o usurio no possui nenhum privilgio atribudo a ele.
DISTRIBUIR PRIVILGIOS
1. Conectar-se como usurio system, senha manager:
CONNECT SYSTEM/MANAGER;
2. Atribuir privilgio RESOURCE (criar tabelas, sequncias, procedures, triggers, ndices e
clusters):
GRANT RESOURCE TO aluno;
40

ADMINISTRAO EM BANCO DE DADOS


3. Conceder privilgio connect ao usurio aluno:
GRANT CONNECT TO aluno;
4. Conectar usurio aluno ao Oracle:
CONNECT aluno/uninove;
5. Criar uma tabela:
CREATE TABLE teste
(codigo number(3));
CONCEDER UM PRIVILGIO DE OBJETO PARA UM USURIO
Os privilgios concedidos podem ser:
PRIVILGIO
SELECT
INSERT
DELETE
UPDATE
INDEX
ALTER
ALL

DESCRIO
Seleciona dados de uma tabela ou de uma viso.
Insere linhas em uma tabela ou em uma viso.
Exclui linhas de uma tabela ou de uma viso.
Atualiza uma tabela (ou colunas especificadas).
Cria ou exclui ndices de uma tabela.
Altera uma tabela.
Exerce todos os privilgios acima.

Objetos que podem conceder privilgios: table, view, sequences, snapshots e synonym.
1. Conceder privilgio para acessar a tabela cursos:
CONNECT SCOTT/TIGER;
GRANT SELECT ON cursos TO aluno;
2. Conectar usurio aluno e tentar acessar a tabela:
CONNECT ALUNO/UNINOVE;
SELECT * FROM cursos;
Ocorre um erro, pois o usurio deve fornecer o esquema* dessa tabela.
* Para cada usurio existe um esquema (schema). Um esquema uma coleo de objetos:
tabelas, vises, sequncias, sinnimos, ndices, clusters, database links, snapshots,
procedures, functions e packages.
3. Acessar a tabela informando o esquema:
SELECT * FROM SCOTT.CURSOS;
VISUALIZAR TODOS USURIOS
SELECT * FROM ALL_USERS;
CRIAR UM NOVO PAPEL (ROLE)
CREATE ROLE basico;
CONCEDER PRIVILGIOS E PAPIS A UM PAPEL
Um papel pode receber privilgios que podem ser especficos ou de outros papis.
GRANT RESOURCE TO basico;
CONCEDER UM PAPEL A UM USURIO
GRANT basico TO aluno;
VISUALIZAR OS PAPIS DO USURIO ATUAL
SELECT * FROM USER_ROLE_PRIVS;

41

ADMINISTRAO EM BANCO DE DADOS


REVOGAR UM PRIVILGIO DE SISTEMA OU PAPEL CONCEDIDO
REVOKE basico FROM aluno;
REVOGAR UM PRIVILGIO DE OBJETO DE UM USURIO
REVOKE SELECT ON cursos FROM aluno;
EXCLUIR UM PAPEL
DROP ROLE basico;
EXCLUIR UM USURIO
DROP USER aluno <CASCADE>;
PROFILES
OBJETIVO: Controlar a utilizao dos recursos disponveis (tempo de CPU, tempo de conexo,
etc.)
Alguns limites cujos valores podem ser atribudos a um ou mais usurios:
SESSIONS_PER_USER
CONNECT_TIME
FAILED_LOGIN_ATTEMPTS

Sesses simultneas. Algumas aplicaes (exemplo: Oracle Forms) podem


chamar outra, o que provocaria uma nova sesso.
Tempo de conexo em minutos. O usurio s percebe que seu limite foi
esgotado ao tentar emitir um comando.
Quantas tentativas seguidas de login com insucesso causaro o bloqueio
da conta.

Sintaxe:
CREATE PROFILE nome_profile LIMIT
LIMITE_1 VALOR_1
LIMITE_2 VALOR_2
...
Exemplo:
CREATE PROFILE teste LIMIT
SESSIONS_PER_USER 1
CONNECT_TIME 3;
Para comprovar a criao do profile:
SELECT RESOURCE_NAME, LIMIT
FROM DBA_PROFILES
WHERE PROFILE = 'teste':
Alterar um profile:
ALTER PROFILE teste LIMIT
SESSIONS_PER_USER 2
CONNECT_TIME 5;
Habilitar um profile:
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;
Associar um usurio a um profile:
ALTER USER nome_usuario PROFILE nome_profile;

42

ADMINISTRAO EM BANCO DE DADOS


AUTENTICAO VIA SISTEMA OPERACIONAL
1. Verificar os parmetros de autenticao:
SHOW PARAMETERS AUTHENT
2. Alterar, se necessrio, o parmetro REMOTE_OS_AUTHENT para TRUE.
3. Criar um usurio que seja validado fora do Oracle (via sistema operacional):
CREATE USER OPS$ADMINISTRADOR IDENTIFIED EXTERNALLY;
4. Conectado como ADMINISTRADOR, realizar conexes com o Oracle:
CONNECT /
FUNO PARA VERIFICAR SENHA
A funo a seguir verifica a utilizao de senhas muito simples que poderiam comprometer a
segurana do banco de dados:
CREATE OR REPLACE FUNCTION VERIFICA_SENHA
(USERNAME
VARCHAR2,
PASSWORD
VARCHAR2,
OLD_PASSWORD VARCHAR2)
RETURN BOOLEAN IS
BEGIN
IF PASSWORD = USERNAME THEN
RAISE_APPLICATION_ERROR(-20001, 'SENHA IGUAL A USURIO');
END IF;
IF LENGTH(PASSWORD) < 8 THEN
RAISE_APPLICATION_ERROR(-20002, 'TAMANHO DA SENHA MENOR QUE OITO');
END IF;
IF NLS_LOWER(PASSWORD) IN ('oracle', 'banco','senha') THEN
RAISE_APPLICATION_ERROR(-20002, 'SENHA MUITO SIMPLES');
END IF;
RETURN(TRUE);
END;
/
IMPORTANTE: A funo VERIFICA_SENHA dever ser criada abaixo do esquema SYS.
CREATE PROFILE nome_profile LIMIT
PASSWORD_VERIFY_FUNCTION VERIFICA_SENHA;
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;
ALTER USER nome_usuario PROFILE nome_profile;

43

ADMINISTRAO EM BANCO DE DADOS


AUDITORIA
O Oracle tem a capacidade de fazer a auditoria das aes ocorridas no banco de dados.
H trs tipos de aes que podem ser auditadas:
Tentativas de login
Aes de banco de dados
Acessos de objetos
A princpio so registrados os comandos bem sucedidos ou no, mas isso pode ser modificado
quando cada tipo de auditoria configurado.
Para ativar a auditoria, devemos ajustar o parmetro esttico AUDIT_TRAIL atravs do
seguinte comando:
ALTER SYSTEM SET AUDIT_TRAIL=DB SCOPE=SPFILE;
Uma vez alterado o parmetro, devemos reiniciar a Instncia.
Para verificar as alteraes utilize o comando:
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'audit_trail';
Os valores possveis para AUDIT_TRAIL so os seguintes:
DB
OS
NONE

Ativa a auditoria e grava na tabela SYS.AUD$


Ativa a auditoria e grava no controle de auditoria do S.O. (sistema operacional).
Desativa a auditoria

A tabela SYS.AUD$ est associada ao tablespace SYSTEM e pode causar problemas de falta de
espao se os seus registros no forem periodicamente limpos. Por isso, os registros desta
tabela devem ser arquivados e, em seguida, a tabela deve ser truncada:
TRUNCATE TABLE SYS.AUD$;
Devemos conceder ao usurio que far as excluses na tabela SYS.AUD$ o seguinte privilgio:
GRANT DELETE_CATALOG_ROLE TO nome_do_usuario;

AUDITORIA DE LOGIN
Objetivo: Auditar cada tentativa de conexo ao banco de dados.
Utilizar o seguinte comando para iniciar a auditoria das tentativas de conexo que resultem em
sucesso ou no:
AUDIT SESSION;
Apenas para tentativas de conexo que resultem em sucesso:
AUDIT SESSION WHENEVER SUCCESSFUL;
Apenas para tentativas de conexo que resultem em falha:
AUDIT SESSION WHENEVER NOT SUCCESSFUL;
Os registros armazenados na tabela SYS.AUD$ podem ser visualizados com a viso de
dicionrio de dados DBA_AUDIT_SESSION:
SELECT OS_USERNAME, USERNAME, TERMINAL,
DECODE (RETURNCODE,'0','CONECTADO','1005','SUCESSO','1017','FALHA',RETURNCODE),
TO_CHAR(TIMESTAMP, 'DD-MM-YY HH24:MI:SS'),
TO_CHAR(LOGOFF_TIME, 'DD-MM-YY HH24:MI:SS')
FROM DBA_AUDIT_SESSION;
Para desativar a auditoria de sesso, use o comando NOAUDIT:
NOAUDIT SESSION;

44

ADMINISTRAO EM BANCO DE DADOS


AUDITORIA DE AO
Objetivo: Auditar qualquer ao que afete um objeto de banco de dados (tablespace, tabela,
ndice, etc.). As aes (create, alter e drop) que possam afetar esses objetos podem ser
agrupadas durante a auditoria.
Alguns objetos que podem ser auditados: INDEX, PROCEDURE (PROCEDURE, FUNCTION,
PACKAGE, LIBRARY), PROFILE, ROLE, SEQUENCE, SESSION, SYNONYM, TABLE, TABLESPACE,
TRIGGER, USER, VIEW.
Para saber quais so as aes que podem ser auditadas utilize o seguinte comando:
SELECT NAME FROM AUDIT_ACTIONS;
Utilizar o seguinte comando para fazer a auditoria de todos os comandos que afetem as
tabelas:
AUDIT TABLE;
Para desativar essa definio utilize o seguinte comando:
NOAUDIT TABLE;
Os registros podem ser visualizados com a viso DBA_AUDIT_OBJECT:
SELECT OS_USERNAME, USERNAME, TERMINAL,OWNER,OBJ_NAME,ACTION_NAME,
DECODE (RETURNCODE,'0','SUCESSO',RETURNCODE),
TO_CHAR(TIMESTAMP, 'DD-MM-YY HH24:MI:SS')
FROM DBA_AUDIT_OBJECT;

AUDITORIA DE OBJETO
Objetivo: Auditar aes de manipulao de dados (select, insert, update, delete) nos objetos.
Este tipo de auditoria pode ser feito por sesso ou por acesso:
BY SESSION
O registro de auditoria ser gravado uma vez para cada sesso.
BY ACCESS
O registro de auditoria ser gravado toda vez que o objeto for acessado. Usada de forma
limitada para medir o nmero de aes separadas que ocorrem durante um intervalo de tempo
especfico. Visto que pode sobrecarregar os processos de gravao, quando a medio for
concluda este tipo de auditoria deve ser revertido para BY SESSION.
Por exemplo, se um usurio executar trs declaraes UPDATE diferentes na mesma tabela, a
auditoria BY ACCESS resultaria em trs registros de auditoria (um para cada acesso de tabela).
A auditoria do tipo BY SESSION resultaria na gravao de apenas um registro de auditoria.
Utilizar o seguinte comando para fazer a auditoria por sesso dos comandos UPDATE na
tabela TESTE do usurio SCOTT:
AUDIT UPDATE ON SCOTT.TESTE BY SESSION;
Utilizar o seguinte comando para fazer a auditoria por acesso de todos os comandos INSERT
na tabela TESTE do usurio SCOTT:
AUDIT INSERT ON SCOTT.TESTE BY ACCESS;
Os registros podem ser visualizados com a consulta da viso DBA_AUDIT_OBJECT:
SELECT OS_USERNAME, USERNAME, TERMINAL,OWNER,OBJ_NAME,ACTION_NAME,
DECODE (RETURNCODE,'0','SUCESSO',RETURNCODE),
TO_CHAR(TIMESTAMP, 'DD-MM-YY HH24:MI:SS')
FROM DBA_AUDIT_OBJECT;
IMPORTANTE: Para proteger o controle de auditoria em SYS.AUD$ utilize o seguinte comando:
AUDIT ALL ON SYS.AUD$ BY ACCESS;
45

ADMINISTRAO EM BANCO DE DADOS


BACKUP E RESTORE
O Oracle trabalha com o seguinte esquema de backup / recover:

Lgica

Packages

Exportao/Importao
DBMS_LOGMNR_D e
DBMS_LOGMNR
DBMS_FLASHBACK

Tablespaces
Transportveis
Fsica

Cold
Mista

Hot

Recovery
Manager

O utilitrio EXP pode copiar todos os objetos de um banco,


de um determinado schema, tablespace ou tabela e
armazena o resultado em um arquivo binrio que pode ser
lido pelo utilitrio IMP.
Utiliza o recurso Log Miner. Por meio dele possvel
investigar os comandos presentes nos Redo Log Files ou
Archived Logs e at reverter seus efeitos.
A partir da leitura de segmentos de UNDO, permite obter
uma fotografia dos dados em algum ponto do passado
recente.
Combinando com cpias fsicas de arquivos, podem-se
utilizar EXP e IMP para copiar tablespaces entre bancos.
Estando o Banco e a Instncia fechados, copia todos os
arquivos, via S. O., para outro disco.
O Banco deve estar fechado, os arquivos copiados
fisicamente, porm, como o processo ARCH est ligado, a
recuperao pode ser feita at um determinado instante.
O Banco deve estar aberto e o processo Arch funcionando.
Trabalha em nvel de tablespaces que devem estar on-line.
mais indicado para bancos que nunca podem ficar
indisponibilizados. A tcnica mais eficiente j que a SGA
no precisa ser esvaziada.
Utiliza a ferramenta RMAN (Recovery Manager) que permite
fazer cpias e recuperao at em nvel de bloco. Como
interage com o Arquivo de Controle da Instncia, oferece
inmeras facilidades, como, por exemplo, informar h
quantos dias na foi feito o backup de uma determinada
tablespace.

EXP
EXPORTAO COMPLETA:
c:\>exp system/manager file=c:\temp\teste1.dmp full=y log=c:\temp\saida1.txt buffer=64000

EXPORTAO DE UM SCHEMA:
c:\>exp system/manager file=c:\temp\teste2.dmp owner=scott log=c:\temp\saida2.txt buffer=64000
compress=y

EXPORTAO DE DOIS SCHEMAS:


c:\>exp system/manager file=c:\temp\teste3.dmp owner=(scott,teste) log=c:\temp\saida3.txt
buffer=64000 compress=y

EXPORTAO DE UMA TABLESPACE:


c:\>exp system/manager file=c:\temp\teste4.dmp tablespaces=users log=c:\temp\saida4.txt
buffer=64000 compress=y

EXPORTAO DE UMA TABELA:


c:\>exp system/manager file=c:\temp\teste5.dmp tables=cliente log=c:\temp\saida5.txt
buffer=64000 compress=y

46

ADMINISTRAO EM BANCO DE DADOS


IMP
IMPORTAO COMPLETA:
c:\>imp system/manager file=c:\temp\teste1.dmp full=y log=c:\temp\saida1.txt buffer=64000
ignore=y commit=y

ignore: no necessrio que o banco esteja completamente vazio para fazer a importao
IMPORTAO DE UM SCHEMA:
c:\>imp system/manager file=c:\temp\teste2.dmp fromuser=scott touser=fulano
log=c:\temp\saida2.txt compress=y ignore=y commit=y

necessrio criar um usurio fulano que possua, no mnimo os papis connect e resource.
IMPORTAO DE UMA TABELA:
c:\>imp system/manager file=c:\temp\teste5.dmp tables=cliente log=c:\temp\saida5.txt
buffer=64000 ignore=y commit=y

47

Você também pode gostar