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
3
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
4
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
5
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 memria
1
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.




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

2
Os principais processos de segundo plano (background) so: Database Writer (DBW0), Log
Writer (LGWR), System Monitor (SMON), Process Monitor (PMON), Checkpoint Process (CKPT).
ADMINISTRAO EM BANCO DE DADOS
6
Um Schema
3
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.


















3
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
7
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
8
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.
ADMINISTRAO EM BANCO DE DADOS
9
Informaes importantes podem ser obtidas atravs da viso V$INSTANCE.

SELECT I NSTANCE_NAME FROM V$I NSTANCE;

I NSTANCE_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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fi xed Si ze 49152
Var i abl e Si ze 12906496
Dat abase Buf f er s 2048000
Redo Buf f er s 73728

ADMINISTRAO EM BANCO DE DADOS
10
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, CHECKPOI NT_CHANGE# FROM DATABASE;

NAME CHECKPOI NT_CHANGE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ORCL 402987

ALTER SYSTEM CHECKPOI NT;

Syst emal t er ed.

SELECT NAME, CHECKPOI NT_CHANGE# FROM DATABASE;

NAME CHECKPOI NT_CHANGE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ORCL 402988

O processo seguinte, no imprescindvel, mas recomendvel:

ADMINISTRAO EM BANCO DE DADOS
11
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$DBFI LE;

FI LE# NAME
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2 C: \ ORACLE\ ORADATA\ TESTE\ USERS01. DBF
3 C: \ ORACLE\ ORADATA\ TESTE\ I NDX01. DBF
4 C: \ ORACLE\ ORADATA\ TESTE\ TMP01. DBF
1 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$CONTROLFI LE;

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.
ADMINISTRAO EM BANCO DE DADOS
12
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$LOGFI LE;

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.



ADMINISTRAO EM BANCO DE DADOS
13
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 11.534.336 bytes
Tamanho da Shared Pool Area.

LOG_BUFFER 8.192 bytes
Tamanho do Redo Log Buffer.

Etapas

Antes que uma instncia esteja disponvel e um banco de dados aberto, deve-se passar pelos
seguintes estgios:


SQL*Pl us: connect syst em/ manager as sysdba


SHUTDOWN
shut down
Instncia fechada
Banco fechado

NOMOUNT
st ar t up 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
al t er dat abase 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
al t er dat abase open
Instncia aberta
Banco aberto

Abrem-se os Data Files e Redo Log Files. Usurios que no sejam DBA podem se conectar.


ADMINISTRAO EM BANCO DE DADOS
14
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).

ADMINISTRAO EM BANCO DE DADOS
15
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.





ADMINISTRAO EM BANCO DE DADOS
16
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.
ADMINISTRAO EM BANCO DE DADOS
17



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.
ADMINISTRAO EM BANCO DE DADOS
18
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_t abl espace
DATAFI LE ' C: \ Or acl e\ or adat a\ nome_do_dat af i l e. dbf ' SI ZE 10M
EXTENT MANAGEMENT LOCAL UNI FORM SI ZE 256K;

Se a clusula UNIFORM SIZE for omitida, o default AUTOALLOCATE.
O SIZE default para UNIFORM 1MB.
ADMINISTRAO EM BANCO DE DADOS
19
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
DATAFI LE ' C: \ DATA_PQ. DBF' SI ZE 10M
EXTENT MANAGEMENT LOCAL UNI FORM 1M;

CREATE TABLESPACE TBSP_MD
DATAFI LE ' C: \ DATA_MD. DBF' SI ZE 100M
EXTENT MANAGEMENT LOCAL UNI FORM 4M;

CREATE TABLESPACE TBSP_GD
DATAFI LE ' C: \ DATA_GD. DBF' SI ZE 1000M
EXTENT MANAGEMENT LOCAL UNI FORM 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_t abl espace
DATAFI LE ' C: \ Or acl e\ or adat a\ nome_do_dat af i l e_1. dbf ' SI ZE i nt [ K| M] [ REUSE]
[ AUTOEXTEND OFF| ON
NEXT i nt [ K| M]
MAXSI ZE i nt [ K| M| UNLI MI TED] ,
DATAFI LE ' C: \ Or acl e\ or adat a\ nome_do_dat af i l e_2. dbf ' SI ZE i nt [ K| M] [ REUSE]
MI NI MUM EXTENT t amanho [ K| M]
[ LOGGI NG| NOLOGGI NG]
DEFAULT STORAGE (
I NI TI AL i nt [ K| M]
NEXT i nt [ K| M]
MI NEXTENTS i nt
MAXEXTENTS i nt
PCTI NCREASE i nt [ 0- 100] )
[ ONLI NE| OFFLI NE]
[ 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.

ADMINISTRAO EM BANCO DE DADOS
20
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
DATAFI LE ' C: \ ORACLE\ DATA\ TAB1. DBF' SI ZE 1 M,
' C: \ ORACLE\ DATA\ TAB2. DBF' SI ZE 1 M
DEFAULT STORAGE ( I NI TI AL 100 K
NEXT 50 K
MI NEXTENTS 1
MAXEXTENTS 10
PCTI NCREASE 100)
EXTENT MANAGEMENT DI CTI ONARY;

NOTA: O diretrio destino j deve existir.

extents tamanho expande* novo
1 100 0 100
2 100 50 150
3 150 100 250
4 250 200 450
5 450 400 850

* PCTINCREASE aumenta em 100% o valor anterior.
ADMINISTRAO EM BANCO DE DADOS
21
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 DATAFI LE ' C: \ ORACLE\ DATA\ TAB3. DBF' SI ZE 1 M;

Tabl espace al t er ed.

SELECT FI LE_NAME, BYTES, BLOCKS, STATUS
FROM DBA_DATA_FI LES
WHERE TABLESPACE_NAME = ' TESTE' ;

FI LE_NAME BYTES BLOCKS STATUS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
C: \ ORACLE\ DATA\ TAB1. DBF 1048576 512 AVAI LABLE
C: \ ORACLE\ DATA\ TAB2. DBF 1048576 512 AVAI LABLE
C: \ ORACLE\ DATA\ TAB3. DBF 1048576 512 AVAI LABLE

Mudar parmetro de armazenamento:

ALTER TABLESPACE TESTE
DEFAULT STORAGE ( MAXEXTENTS 20 PCTI NCREASE 50) ;

Tabl espace al t er ed.

SELECT TABLESPACE_NAME, MAX_EXTENDS, PCT_I NCREASE
FROM DBA_TABLESPACE
WHERE TABLESPACE_NAME = ' TESTE' ;

TABLESPACE_NAME MAX_EXTENDS PCT_I NCREASE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TESTE 20 50

ELIMINANDO UM TABLESPACE

DROP TABLESPACE name
[ I NCLUDI NG CONTENTS [ AND DATAFI LES] | CASCADE CONSTRAI NTS] ;

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;

Tabl espace dr opped.
ADMINISTRAO EM BANCO DE DADOS
22
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CWMLI TE 14680064
DRSYS 12845056
EXAMPLE 196608
I NDX 26148864
SYSTEM 88276992
TOOLS 4390912
UNDOTBS 197853184
USERS 26148864

8 l i nhas sel eci onadas.

DATA FILES

ALTERANDO AUTOEXTEND PARA 'OFF'

ALTER DATABASE
DATAFI LE ' C: \ ORACLE\ DATA\ TAB1. DBF'
AUTOEXTEND OFF;

ALTERANDO AUTOEXTEND PARA 'ON'

ALTER DATABASE
DATAFI LE ' C: \ ORACLE\ DATA\ TAB1. DBF'
AUTOEXTEND ON NEXT 100K MAXSI ZE 2M;

ALTERANDO O TAMANHO DE UM DATA FILE

ALTER DATABASE
DATAFI LE ' C: \ ORACLE\ DATA\ TAB1. DBF'
RESI ZE 2M;

ADMINISTRAO EM BANCO DE DADOS
23
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:
DATAFI LE: DATA1. DBF SI ZE 20M
GERENCI AMENTO: LOCAL
EXTENTS: UNI FORM 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.
ADMINISTRAO EM BANCO DE DADOS
24
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.




ADMINISTRAO EM BANCO DE DADOS
25
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 I NDEX nome_do_i ndi ce REBUI LD
TABLESPACE nome_do_t abl espace
STORAGE ( I NI TI AL 1M NEXT 1M PCTI NCREASE 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.
ADMINISTRAO EM BANCO DE DADOS
26
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_t abl espace;

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_PROPERTI ES
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.

ADMINISTRAO EM BANCO DE DADOS
27
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 Grava efetivamente os comandos INSERT, UPDATE e DELETE.
ROLLBACK Desconsidera os comandos INSERT, UPDATE e DELETE.
Fim da sesso Ocorre um COMMIT implcito.
Comando DDL ou DCL
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 TRANSACTI ON READ ONLY NAME ' t r 1' ;

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:

I NSERT I NTO cl i ent e ( codi go, nome)
VALUES ( 1, ' Ant oni o Al ves' ) ;
COMMI T;

SELECT nome FROM cl i ent e;

NOME
- - - - - - - - - - - - - - - - - - - - - - - - - -
Ant oni o Al ves

1 l i nha sel eci onada

ROLLBACK

Para descartar as alteraes:

I NSERT I NTO cl i ent e ( codi go, nome)
VALUES ( 2, ' Beat r i z Ber nar des' ) ;

SELECT nome FROM cl i ent e;

NOME
- - - - - - - - - - - - - - - - - - - - - - - - - -
Ant oni o Al ves
Beat r i z Ber nar des

2 l i nhas sel eci onadas
ADMINISTRAO EM BANCO DE DADOS
28
ROLLBACK;

SELECT nome FROM cl i ent e;

NOME
- - - - - - - - - - - - - - - - - - - - - - - - - -
Ant oni o Al ves

SAVEPOINT

Para inserir "marcas" a fim de possibilitar um rollback de apenas partes da transao:

I NSERT I NTO cl i ent e ( codi go, nome)
VALUES ( 2, ' Beat r i z Ber nar des' ) ;

Estabelecendo um SAVEPOINT:

SAVEPOI NT i ncl ui r _ok;

Incluindo outra linha:

I NSERT I NTO cl i ent e ( codi go, nome)
VALUES ( 3, ' Cl audi o Car val ho' ) ;

SELECT nome FROM cl i ent e;

NOME
- - - - - - - - - - - - - - - - - - - - - - - - - -
Ant oni o Al ves
Beat r i z Ber nar des
Cl audi o Car val ho

Voltando ao ponto marcado:

ROLLBACK TO i ncl ui r _ok;

SELECT nome FROM cl i ent e;

NOME
- - - - - - - - - - - - - - - - - - - - - - - - - -
Ant oni o Al ves
Beat r i z Ber nar des

Salvando as operaes realizadas:

COMMI T;

Terminada a transao, a marca eliminada. Criando uma marca com um nome j utilizado,
simplesmente ocorre uma substituio.















ADMINISTRAO EM BANCO DE DADOS
29
LABORATRIO

1. Crie uma tabela conforme a estrutura abaixo:

Nome da Tabela: ALUNO

RA NUMBER ( 9) PRI MARY KEY
NOME VARCHAR2 ( 40)

2. Insira a seguinte linha:

111222333, ' Dani el a Damasceno'

3. Utilize o comando COMMIT

4. Observe o resultado com o comando SELECT

5. Insira a seguinte linha:

222333444, ' Er nest o El i zeu'

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, ' Er nest o El i zeu'

10. Utilize o comando SAVEPOINT marca_ok;

11. Insira a seguinte linha:

333444555, ' Fabi o Fer nandes'

12. Utilize o comando ROLLBACK TO marca_ok;

13. Observe o resultado com o comando SELECT

11. Insira (novamente) a seguinte linha:

333444555, ' Fabi o Fer nandes'

14. Utilize qualquer comando DDL (CREATE, DROP) ou DCL (GRANT, REVOKE)

15. Utilize o comando ROLLBACK

16. Observe o resultado com o comando SELECT











ADMINISTRAO EM BANCO DE DADOS
30
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.

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

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

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

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

SEGMENTO DE ROLLBACK
extenso 1 extenso 2 extenso 3 extenso 4 extenso 5
em uso
transao 1
extenso 1
transao 1
extenso 2
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.




ADMINISTRAO EM BANCO DE DADOS
31
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: ( unabl e t o ext end r ol l back 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:

sel ect segment _name, t abl espace_name, st at us
f r omdba_r ol l back_segs;

SEGMENT_NAME TABLESPACE_NAME STATUS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SYSTEM SYSTEM ONLI NE
_SYSSMU1$ UNDOTBS ONLI NE
. . .
_SYSSMU10$ UNDOTBS ONLI NE

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:

SHOWPARAMETERS UNDO;

NAME TYPE VALUE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
undo_management st r i ng AUTO
undo_r et ent i on i nt eger 900
undo_suppr ess_er r or s bool ean FALSE
undo_t abl espace st r i ng 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_RETENTI ON=1200;


















ADMINISTRAO EM BANCO DE DADOS
32
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 cl i ent e;
COMMI T;

Agora, passados vinte minutos, descobrimos esta fatalidade.
Voltaremos no tempo! Como? Utilizando a rotina enabl e_at _t i me, presente no package
DBMS_FLASHBACK:

execut e dbms_f l ashback. enabl e_at _t i me ( sysdat e 20/ 1440) ;

Este comando busca o estado das tabelas como estava h vinte minutos (um dia possui 1440
minutos).
Observe o resultado:

SELECT * FROM cl i ent e;

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_CLI ENTE I S
SELECT * FROM CLI ENTE;
V_LI NHA CLI ENTE%ROWTYPE;
BEGI N
DELETE FROM AUX_CLI ENTE;
COMMI T;
DBMS_FLASHBACK. ENABLE_AT_TI ME( SYSDATE - 20/ 1440) ;
OPEN C_CLI ENTE;
DBMS_FLASHBACK. DI SABLE;
LOOP
FETCH C_CLI ENTE I NTO V_LI NHA;
EXI T WHEN C_CLI ENTE%NOTFOUND;
I NSERT I NTO AUX_CLI ENTE VALUES ( V_LI NHA. CODI GO, V_LI NHA. NOME) ;
END LOOP;
CLOSE C_CLI ENTE;
COMMI T;
END;

A recuperao no precisa acontecer na mesma sesso responsvel pela perda.
Concluda a execuo dos comandos anteriores, possvel recarregar a tabela CLIENTE:
I NSERT I NTO cl i ent e SELECT * FROM aux_cl i ent e;
ADMINISTRAO EM BANCO DE DADOS
33
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.


ADMINISTRAO EM BANCO DE DADOS
34
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 [ UNI QUE] I NDEX nomei ndi ce
ON nomet abel a ( nomecol una [ ASC| DESC] [ , nomecol una . . . ] ;

Quando criar ndices compostos, coloque primeiro a coluna mais usada.

OPES DESCRIO
UNIQUE O ndice no aceitar valores repetidos
[ASC|DESC] Especifica a classificao ASC (ascendente), default, ou DESC (descendente)

Exemplo 1 (simples):

CREATE I NDEX al uno_codt ur ma_i dx ON al uno ( codt ur ma) ;

Exemplo 2 (composto):

CREATE I NDEX emp_dept _sal ar i o_i dx ON emp ( dept ASC, sal ar i o 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.

ADMINISTRAO EM BANCO DE DADOS
35

Sintaxe geral:

CREATE I NDEX nomei ndi ce
ON nomet abel a ( nomecol una) REVERSE;

Exemplo:

CREATE I NDEX codpr od_i t empedi do_i dx ON i t empedi do ( codpr od) REVERSE;

ITEMPEDIDO
CODPED CODPROD QTDPROD
1 1001 50
1 1002 40
1 1003 30
2 1004 40
2 1005 50
2 1006 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.

ndice BITMAP na tabela ALUNO (CAMPUS)
Campus ROWID incio ROWID fim Nr bits = Nr linhas
Vila Maria AAAAvQAAGAAAA3yAAA AAAAvQAAGZZZZ3yZZZ 10000110
Memorial AAAAvQAAGAAAA3yAAA AAAAvQAAGZZZZ3yZZZ 01011000
Vergueiro AAAAvQAAGAAAA3yAAA AAAAvQAAGZZZZ3yZZZ 00100001

ALUNO
RA NOME CURSO CAMPUS
112233 Antonio Alves TGSI Vila Maria
223344 Beatriz Bernardes TGRCI Memorial
334455 Claudio Carvalho TGSI Vergueiro
445566 Daniela Damasceno TGRCI Memorial
556677 Ernesto Eliseu TGRCI Memorial
667788 Flavia Fernandes TGRCI Vila Maria
778899 Higino Hipolito TGRCI Vila Maria
889900 Isabel Inacio TGRCI 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
ADMINISTRAO EM BANCO DE DADOS
36

Sintaxe geral:

CREATE BI TMAP I NDEX nomei ndi ce
ON nomet abel a ( nomecol una) ;

Exemplo:

CREATE BI TMAP I NDEX al uno_campus_i dx ON al uno ( 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 ( sal ar i o*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 I NDEX emp_f unc_i dx ON emp ( sal ar i o*1. 05) ;

Para permitir o uso de ndices baseados em funo, voc deve emitir os dois comandos ALTER
SESSION a seguir:

ALTER SESSI ON SET QUERY_REWRI TE_ENABLE = TRUE;

ALTER SESSI ON SET QUERY_REWRI TE_I NTEGRI TY = TRUSTED;

OBTER INFORMAES

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

SELECT I NDEX_NAME FROM USER_I NDEXES;

Para obter outras informaes:

SELECT I NDEX_NAME, COLUMN_NAME, COLUMN_POSI TI ON, COLUMN_LENGTH
FROM USER_I ND_COLUMNS
WHERE TABLE_NAME=' ALUNO' ;

MOSTRAR O USO DE NDICES

ALTER I NDEX al uno_codt ur ma_i dx MONI TORI NG USAGE;

SELECT * FROM V$OBJ ECT_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.




ADMINISTRAO EM BANCO DE DADOS
37

Situao 1 - O usurio faz a seguinte consulta:

SELECT * FROM al uno;

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 al uno WHERE codt ur ma=12;

O valor da coluna USED ser YES, foi necessrio utilizar o ndice aluno_codturma_idx.

ELIMINAR UM NDICE

DROP I NDEX al uno_cod_t ur ma_i dx;

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 t 1 (
codi go NUMBER( 4) PRI MARY KEY,
nome VARCHAR2( 20) )
ORGANI ZATI ON I NDEX;



ADMINISTRAO EM BANCO DE DADOS
38
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) ,
CONSTRAI NT FUNC_PK PRI MARY KEY( CODFUNC) ,
CONSTRAI NT FUNC_CPFFUNC_UN UNI QUE( CPFFUNC) ) ;

CREATE TABLE PROJ (
CODPROJ NUMBER( 4) ,
NOMEPROJ VARCHAR2( 20) ,
I NI CI OPROJ DATE,
FI NALPROJ DATE,
VALORPROJ NUMBER( 12, 2) ,
GERPROJ NUMBER( 4) ,
CONSTRAI NT PROJ _PJ PRI MARY KEY( CODPROJ ) ,
CONSTRAI NT PROJ _GERPROJ _FK FOREI GN KEY( GERPROJ ) REFERENCES FUNC( CODFUNC) ) ;

CREATE TABLE PROJ FUNC (
CODPROJ NUMBER( 4) ,
CODFUNC NUMBER( 4) ,
CONSTRAI NT PROJ FUNC_PK PRI MARY KEY( CODPROJ , CODFUNC) ,
CONSTRAI NT PROJ FUNC_PROJ _FK FOREI GN KEY( CODPROJ ) REFERENCES PROJ ( CODPROJ ) ,
CONSTRAI NT PROJ FUNC_FUNC_FK FOREI GN 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 I NDEX CPFFUNC_I DX 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 SALFUNC
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ANTONI O ALVES 8500. 00
CLAUDI O CARVALHO 5300. 00
DANI ELA DAMASCENO 4200. 00
HI GI NO HI POLI TO 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.

ADMINISTRAO EM BANCO DE DADOS
39
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) LI KE ' %ANTONI O%' ;
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.



ADMINISTRAO EM BANCO DE DADOS
40
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 modific-
las. 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 SENHA PAPEL
SCOTT TIGER CONNECT e RESOURCE
SYSTEM MANAGER DBA
SYS SYS CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE e IMP_FULL_DATABASE
DEMO DEMO CONNECT e RESOURCE

CRIAR NOVOS USURIOS
1. Conectar-se como usurio system, senha manager:
CONNECT SYSTEM/ MANAGER;
2. Criar o novo usurio:
CREATE USER al uno I DENTI FI ED BY uni nove;
Sintaxe completa:
CREATE USER nome_usuar i o
I DENTI FI ED [ BY senha | ext er nal l y]
DEFAULT TABLESPACE nome_t abl espace
TEMPORARY TABLESPACE nome_t abl espace_t empor ar i a
QUOTA numer o_i nt ei r o [ K | M] ON nome_t abl espace
PROFI LE nome_pr of i l e
PASSWORD EXPI RE
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 al uno/ uni nove;
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 al uno;
ADMINISTRAO EM BANCO DE DADOS
41
3. Conceder privilgio connect ao usurio aluno:
GRANT CONNECT TO al uno;
4. Conectar usurio aluno ao Oracle:
CONNECT al uno/ uni nove;
5. Criar uma tabela:
CREATE TABLE t est e
( codi go number ( 3) ) ;


CONCEDER UM PRIVILGIO DE OBJETO PARA UM USURIO

Os privilgios concedidos podem ser:

PRIVILGIO DESCRIO
SELECT Seleciona dados de uma tabela ou de uma viso.
INSERT Insere linhas em uma tabela ou em uma viso.
DELETE Exclui linhas de uma tabela ou de uma viso.
UPDATE Atualiza uma tabela (ou colunas especificadas).
INDEX Cria ou exclui ndices de uma tabela.
ALTER Altera uma tabela.
ALL 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/ TI GER;
GRANT SELECT ON cur sos TO al uno;

2. Conectar usurio aluno e tentar acessar a tabela:

CONNECT ALUNO/ UNI NOVE;
SELECT * FROM cur sos;

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 basi co;

CONCEDER PRIVILGIOS E PAPIS A UM PAPEL

Um papel pode receber privilgios que podem ser especficos ou de outros papis.

GRANT RESOURCE TO basi co;

CONCEDER UM PAPEL A UM USURIO

GRANT basi co TO al uno;

VISUALIZAR OS PAPIS DO USURIO ATUAL

SELECT * FROM USER_ROLE_PRI VS;

ADMINISTRAO EM BANCO DE DADOS
42
REVOGAR UM PRIVILGIO DE SISTEMA OU PAPEL CONCEDIDO

REVOKE basi co FROM al uno;

REVOGAR UM PRIVILGIO DE OBJETO DE UM USURIO

REVOKE SELECT ON cur sos FROM al uno;

EXCLUIR UM PAPEL

DROP ROLE basi co;

EXCLUIR UM USURIO

DROP USER al uno <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
Sesses simultneas. Algumas aplicaes (exemplo: Oracle Forms) podem
chamar outra, o que provocaria uma nova sesso.
CONNECT_TIME
Tempo de conexo em minutos. O usurio s percebe que seu limite foi
esgotado ao tentar emitir um comando.
FAILED_LOGIN_ATTEMPTS
Quantas tentativas seguidas de login com insucesso causaro o bloqueio
da conta.

Sintaxe:

CREATE PROFI LE nome_pr of i l e LI MI T
LI MI TE_1 VALOR_1
LI MI TE_2 VALOR_2
. . .

Exemplo:

CREATE PROFI LE t est e LI MI T
SESSI ONS_PER_USER 1
CONNECT_TI ME 3;

Para comprovar a criao do profile:

SELECT RESOURCE_NAME, LI MI T
FROM DBA_PROFI LES
WHERE PROFI LE = ' t est e' :

Alterar um profile:

ALTER PROFI LE t est e LI MI T
SESSI ONS_PER_USER 2
CONNECT_TI ME 5;

Habilitar um profile:

ALTER SYSTEM SET RESOURCE_LI MI T=TRUE SCOPE=BOTH;

Associar um usurio a um profile:

ALTER USER nome_usuar i o PROFI LE nome_pr of i l e;



ADMINISTRAO EM BANCO DE DADOS
43
AUTENTICAO VIA SISTEMA OPERACIONAL

1. Verificar os parmetros de autenticao:

SHOWPARAMETERS 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$ADMI NI STRADOR I DENTI FI ED 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 FUNCTI ON VERI FI CA_SENHA
( USERNAME VARCHAR2,
PASSWORD VARCHAR2,
OLD_PASSWORD VARCHAR2)
RETURN BOOLEAN I S
BEGI N
I F PASSWORD = USERNAME THEN
RAI SE_APPLI CATI ON_ERROR( - 20001, ' SENHA I GUAL A USURI O' ) ;
END I F;
I F LENGTH( PASSWORD) < 8 THEN
RAI SE_APPLI CATI ON_ERROR( - 20002, ' TAMANHO DA SENHA MENOR QUE OI TO' ) ;
END I F;
I F NLS_LOWER( PASSWORD) I N ( ' or acl e' , ' banco' , ' senha' ) THEN
RAI SE_APPLI CATI ON_ERROR( - 20002, ' SENHA MUI TO SI MPLES' ) ;
END I F;
RETURN( TRUE) ;
END;
/

IMPORTANTE: A funo VERIFICA_SENHA dever ser criada abaixo do esquema SYS.

CREATE PROFI LE nome_pr of i l e LI MI T
PASSWORD_VERI FY_FUNCTI ON VERI FI CA_SENHA;

ALTER SYSTEM SET RESOURCE_LI MI T=TRUE SCOPE=BOTH;

ALTER USER nome_usuar i o PROFI LE nome_pr of i l e;


ADMINISTRAO EM BANCO DE DADOS
44
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 AUDI T_TRAI L=DB SCOPE=SPFI LE;

Uma vez alterado o parmetro, devemos reiniciar a Instncia.

Para verificar as alteraes utilize o comando:

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = ' audi t _t r ai l ' ;

Os valores possveis para AUDIT_TRAIL so os seguintes:

DB Ativa a auditoria e grava na tabela SYS.AUD$
OS Ativa a auditoria e grava no controle de auditoria do S.O. (sistema operacional).
NONE 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_usuar i o;

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:

AUDI T SESSI ON;

Apenas para tentativas de conexo que resultem em sucesso:

AUDI T SESSI ON WHENEVER SUCCESSFUL;

Apenas para tentativas de conexo que resultem em falha:

AUDI T SESSI ON 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, TERMI NAL,
DECODE ( RETURNCODE, ' 0' , ' CONECTADO' , ' 1005' , ' SUCESSO' , ' 1017' , ' FALHA' , RETURNCODE) ,
TO_CHAR( TI MESTAMP, ' DD- MM- YY HH24: MI : SS' ) ,
TO_CHAR( LOGOFF_TI ME, ' DD- MM- YY HH24: MI : SS' )
FROM DBA_AUDI T_SESSI ON;

Para desativar a auditoria de sesso, use o comando NOAUDIT:

NOAUDI T SESSI ON;


ADMINISTRAO EM BANCO DE DADOS
45
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 AUDI T_ACTI ONS;

Utilizar o seguinte comando para fazer a auditoria de todos os comandos que afetem as
tabelas:

AUDI T TABLE;

Para desativar essa definio utilize o seguinte comando:

NOAUDI T TABLE;

Os registros podem ser visualizados com a viso DBA_AUDIT_OBJECT:

SELECT OS_USERNAME, USERNAME, TERMI NAL, OWNER, OBJ _NAME, ACTI ON_NAME,
DECODE ( RETURNCODE, ' 0' , ' SUCESSO' , RETURNCODE) ,
TO_CHAR( TI MESTAMP, ' DD- MM- YY HH24: MI : SS' )
FROM DBA_AUDI T_OBJ ECT;

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:

AUDI T UPDATE ON SCOTT. TESTE BY SESSI ON;

Utilizar o seguinte comando para fazer a auditoria por acesso de todos os comandos INSERT
na tabela TESTE do usurio SCOTT:

AUDI T I NSERT ON SCOTT. TESTE BY ACCESS;

Os registros podem ser visualizados com a consulta da viso DBA_AUDIT_OBJECT:

SELECT OS_USERNAME, USERNAME, TERMI NAL, OWNER, OBJ _NAME, ACTI ON_NAME,
DECODE ( RETURNCODE, ' 0' , ' SUCESSO' , RETURNCODE) ,
TO_CHAR( TI MESTAMP, ' DD- MM- YY HH24: MI : SS' )
FROM DBA_AUDI T_OBJ ECT;

IMPORTANTE: Para proteger o controle de auditoria em SYS.AUD$ utilize o seguinte comando:

AUDI T ALL ON SYS. AUD$ BY ACCESS;
ADMINISTRAO EM BANCO DE DADOS
46
BACKUP E RESTORE

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

Lgica Exportao/Importao
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.
DBMS_LOGMNR_D e
DBMS_LOGMNR
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.
Packages
DBMS_FLASHBACK
A partir da leitura de segmentos de UNDO, permite obter
uma fotografia dos dados em algum ponto do passado
recente.
Tablespaces
Transportveis
Combinando com cpias fsicas de arquivos, podem-se
utilizar EXP e IMP para copiar tablespaces entre bancos.
Fsica Cold
Estando o Banco e a Instncia fechados, copia todos os
arquivos, via S. O., para outro disco.

Mista
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.

Hot
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.
Recovery
Manager
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 syst em/ manager f i l e=c: \ t emp\ t est e1. dmp f ul l =y l og=c: \ t emp\ sai da1. t xt buf f er =64000

EXPORTAO DE UM SCHEMA:

c: \ >exp syst em/ manager f i l e=c: \ t emp\ t est e2. dmp owner =scot t l og=c: \ t emp\ sai da2. t xt buf f er =64000
compr ess=y

EXPORTAO DE DOIS SCHEMAS:

c: \ >exp syst em/ manager f i l e=c: \ t emp\ t est e3. dmp owner =( scot t , t est e) l og=c: \ t emp\ sai da3. t xt
buf f er =64000 compr ess=y

EXPORTAO DE UMA TABLESPACE:

c: \ >exp syst em/ manager f i l e=c: \ t emp\ t est e4. dmp t abl espaces=user s l og=c: \ t emp\ sai da4. t xt
buf f er =64000 compr ess=y

EXPORTAO DE UMA TABELA:

c: \ >exp syst em/ manager f i l e=c: \ t emp\ t est e5. dmp t abl es=cl i ent e l og=c: \ t emp\ sai da5. t xt
buf f er =64000 compr ess=y

ADMINISTRAO EM BANCO DE DADOS
47
IMP

IMPORTAO COMPLETA:

c: \ >i mp syst em/ manager f i l e=c: \ t emp\ t est e1. dmp f ul l =y l og=c: \ t emp\ sai da1. t xt buf f er =64000
i gnor e=y commi t =y

ignore: no necessrio que o banco esteja completamente vazio para fazer a importao

IMPORTAO DE UM SCHEMA:

c: \ >i mp syst em/ manager f i l e=c: \ t emp\ t est e2. dmp f r omuser =scot t t ouser =f ul ano
l og=c: \ t emp\ sai da2. t xt compr ess=y i gnor e=y commi t =y

necessrio criar um usurio fulano que possua, no mnimo os papis connect e resource.

IMPORTAO DE UMA TABELA:

c: \ >i mp syst em/ manager f i l e=c: \ t emp\ t est e5. dmp t abl es=cl i ent e l og=c: \ t emp\ sai da5. t xt
buf f er =64000 i gnor e=y commi t =y

Você também pode gostar