Вы находитесь на странице: 1из 88

Universidade Federal de Pernambuco

Graduao em Cincia da Computao


Centro de Informtica

ADMINISTRAO DE SISTEMAS DE GERENCIAMENTO


DE BANCO DE DADOS: UM ESTUDO NO ORACLE 10G
TRABALHO DE GRADUAO

Aluno: Marcellus Antonius de Castro Tavares (mact@cin.ufpe.br)


Orientador: Fernando da Fonseca de Souza (fdfd@cin.ufpe.br)
Recife, 5 de outubro de 2006.

Agradecimentos
minha famlia pelo apoio durante toda a minha vida e minha
namorada, por todo o carinho e pela pacincia que ela teve comigo durante todo
esse semestre.

Resumo
O desempenho do Sistema de Gerenciamento de Banco de Dados
(SGBD) est diretamente relacionado com a eficincia das aplicaes. No
contexto atual, sistemas computacionais tm se tornado cada vez mais
importantes nos negcios e a eficincia deles pode ser decisiva para o sucesso
do empreendimento, principalmente no que se refere aos negcios on-line.
O trabalho apresentado nessa monografia aborda tpicos sobre
administrao de sistema de gerenciamento de banco de dados. Sero
enfatizados principalmente, tcnicas de administrao que tm influncia direta
sobre a performance e a estabilidade do SGBD Oracle Database 10g
[ORCL10G].

Abstract
The performance of the Database Management System (DBMS) is directly
related to the efficiency of the applications. In the current context, computational
systems have become very important in businesses and their efficiency can be
decisive for the success of the company, especially when the business is totally
on-line.
This monograph focuses on topics about the administration of Databases
Management System. The project will emphasize on administration techniques
that have direct influence on the performance and the stability of the DBMS
Oracle Database 10g [ORCL10G].

Sumrio
1

Introduo................................................................... 10
1.1
1.2

Objetivo............................................................................................................. 11
Estrutura do Trabalho ....................................................................................... 11

Arquitetura do Oracle 10g............................................ 12


2.1
Estruturas de armazenamento lgico ................................................................ 12
2.1.1
Tablespaces ............................................................................................... 12
2.1.2
Blocos ....................................................................................................... 13
2.1.3
Extenses .................................................................................................. 13
2.1.4
Segmentos ................................................................................................. 14
2.2
Estruturas lgicas do banco de dados ............................................................... 15
2.2.1
Tabelas ...................................................................................................... 15
2.2.2
ndices ....................................................................................................... 17
2.2.3
Seqncias................................................................................................. 18
2.2.4
Vises........................................................................................................ 19
2.2.5
Usurios/Esquemas ................................................................................... 20
2.3
Estruturas de armazenamento fsico ................................................................. 21
2.3.1
Arquivos de parmetro de inicializao.................................................... 22
2.3.2
Arquivo de controle .................................................................................. 22
2.3.3
Arquivos de redo log ................................................................................ 24
2.3.4
Arquivos de dados..................................................................................... 25
2.4
Estruturas de memria ...................................................................................... 25
2.4.1
System Global Area .................................................................................. 25
2.5
Processos em segundo plano............................................................................. 26

Gerenciamento do Oracle 10g ...................................... 29


3.1
Gerenciamento de Tablespaces......................................................................... 29
3.1.1
Tablespaces Permanentes.......................................................................... 29
3.1.2
Tablespace Temporrio............................................................................. 30
3.1.3
Tablespace de undo................................................................................... 32
3.2
Gerenciamento de Armazenamento.................................................................. 32
3.2.1
Criao de tablespaces .............................................................................. 32
3.2.2
Alterao de tablespaces ........................................................................... 34
3.2.3
Movendo arquivos de dados ..................................................................... 36
3.2.4
Movendo arquivos de controle.................................................................. 38
3.3
Monitoramento do uso de espao ..................................................................... 39
3.3.1
Blocos, extenses e segmentos no Oracle................................................. 40
3.3.2
Vises de Dicionrio e de Desempenho Dinmico................................... 43
3.3.3
Recursos Disponveis no Oracle 10g ........................................................ 46
3.3.4
Gerenciamento do tablespace SYSAUX .................................................. 49
3.3.5
Gerenciamento de arquivos de redo log ................................................... 50
3.3.6
Gerenciamento de espao Segment Advisor.......................................... 51
3.3.7
Uso de ndices ........................................................................................... 53
3.3.8
Resumable Space Allocation .................................................................... 55
5

3.3.9
3.3.10

Automatizao de tarefas com o Scheduler .............................................. 57


Gerenciamento de Transaes com o Tablespace Undo........................... 58

Ajuste de banco de dados ............................................. 64


4.1
Ajuste de SQL................................................................................................... 64
4.1.1
Impacto do ordenamento sobre a carga de dados ..................................... 65
4.1.2
Clusters ..................................................................................................... 65
4.1.3
Planos de explicao ................................................................................. 66
4.2
Ajuste do uso de memria................................................................................. 67
4.2.1
Ajustando o tamanho da SGA................................................................... 69
4.3
Ajuste do acesso a dados................................................................................... 71
4.3.1
Identificando linhas encadeadas ............................................................... 71
4.3.2
Tabelas organizadas por ndice................................................................. 72
4.4
Ajuste do armazenamento fsico....................................................................... 73

Oracle Grid .................................................................. 74


5.1
Oracle Application Server 10g.......................................................................... 75
5.2
Oracle Database 10g ......................................................................................... 76
5.3
Oracle Enterprise Manager Grid Control.......................................................... 78
5.3.1
Oracle Management Agent - OMA........................................................... 79
5.3.2
Oracle Management Service - OMS ......................................................... 80
5.3.3
Oracle Management Repository - OMR ................................................... 81
5.4
Grid Control Console........................................................................................ 81

6
7

Concluso ....................................................................86
Referncias.................................................................. 87

Lista de figuras
Figura 2.1 Estruturas de armazenamento fsico. Fonte: [LONEY05] ........................... 21
Figura 3.1 Contedo do tablespace SYSAUX............................................................... 30
Figura 3.2 Edio de tablespaces ................................................................................... 35
Figura 3.3 Edio do arquivo de dados.......................................................................... 35
Figura 3.4 Adicionando arquivo de dados ..................................................................... 36
Figura 3.5 Blocos, extenses e segmentos. Fonte: [DAWES05]................................... 40
Figura 3.6 Formato do bloco Oracle. Fonte: [ORCLCONCEPTS] ............................... 41
Figura 3.7 Descrio da viso DBA_TABLESPACES................................................. 44
Figura 3.8 Descrio da viso DBA_SEGMENTS ....................................................... 44
Figura 3.9 Descrio da viso DBA_FREE_SPACE .................................................... 45
Figura 3.10 Criao de um tablespace de undo. ............................................................ 59
Figura 3.11 Adicionando arquivo de dados ao tablespace de undo. .............................. 60
Figura 3.11- Definio da estratgia de alocao de espao no tablespace de undo. ....... 60
Figura 3.12 Interface principal da ferramenta Undo Advisor no Enterprise Manager .. 63
Figura 3.13 - Interface da ferramenta Undo Advisor no Enterprise Manager .................. 63
Figura 4.1 Estimativa dos valores da shared pool.......................................................... 70
Figura 5.1 Componentes do Grid Control. Fonte: [OEMSG05] ................................... 79
Figura 5.2 Oracle Management Agent. Fonte: [OEMSG05]......................................... 80
Figura 5.3 Oracle Management Service. Fonte: [OEMSG05]....................................... 81
Figura 5.3 - Grid Control Console: Home ........................................................................ 82
Figura 5.4 - Grid Control Console: Targets ...................................................................... 82
Figura 5.5 - Grid Control Console: Deployments............................................................. 83
Figura 5.6 - Grid Control Console: Alerts ........................................................................ 84
Figura 5.7 - Grid Control Console: Jobs........................................................................... 84
Figura 5.8 - Grid Control Console: Management System ................................................ 85

Lista de quadros
Quadro 2.1 Vises de dicionrios de dados ................................................................... 20
Quadro 2.2 Vises de desempenho dinmico ................................................................ 20
Quadro 2.3 Criao do SPFILE a partir do PFILE ........................................................ 22
Quadro 2.4 Backup do arquivo de controle ................................................................... 23
Quadro 2.5 Exibio do valor do parmetro USER_DUMP_TEST.............................. 23
Quadro 2.6 Especificao dos arquivos de controle ...................................................... 23
Quadro 3.1 Criao de grupos temporrios ................................................................... 31
Quadro 3.2 Definio de um grupo de tablespaces temporrio como padro ............... 31
Quadro 3.3 Remoo de grupos temporrios................................................................. 32
Quadro 3.4 Comando para a criao de tablespaces...................................................... 33
Quadro 3.5 Comando para a localizao dos arquivos de dados do tablespace ............ 37
Quadro 3.6 Comando para iniciar o banco de dados (modo MOUNT)......................... 37
Quadro 3.7 Comando para atualizar as referncias aos arquivos de dados (ALTER
DATABASE).................................................................................................................... 37
Quadro 3.8 Comando para abrir o banco de dados........................................................ 37
Quadro 3.9 Comando de alterao da tabela para modo offline.................................... 38
Quadro 3.10 - Comando para atualizar as referncias aos arquivos de dados (ALTER
TABLESPACE)................................................................................................................ 38
Quadro 3.11 Parmetros de inicializao relacionados ao OMF................................... 47
Quadro 3.12 Comando para criao de grupos de disco de redundncia normal .......... 48
Quadro 3.13 Comando CREATE TABLESPACE (referncia ao arquivo de dados /
ambiente ASM)................................................................................................................. 49
Quadro 3.14 Comando para a seleo dos ocupantes do tablespace SYSAUX ............ 49
Quadro 3.15 Consulta para seleo do procedure para movimentao dos componentes
do tablespace SYSAUX.................................................................................................... 50
Quadro 3.16 Comando para movimentao dos componentes do tablespace SYSAUX
........................................................................................................................................... 50
Quadro 3.17 Comando para habilitar o movimento de linhas de uma tabela ................ 51
Quadro 3.18 Configurao do Segment Advisor........................................................... 52
Quadro 3.19 Consulta s recomendaes do Segment Advisor .................................... 53
Quadro 3.20 Seleo da ao sugerida pelo Segment Advisor...................................... 53
Quadro 3.21 Comando para monitorar a utilizao do ndice ....................................... 54
Quadro 3.23 Consulta viso V$OBJECT_USAGE sobre a utilizao do ndice ....... 54
Quadro 3.24 Comando para a reconstruo de ndice ................................................... 55
Quadro 3.25 Comando para listagem de transaes suspensas ..................................... 56
Quadro 3.26 Vises utilizadas no monitoramento do tablespace de undo. ................... 61
Quadro 3.27 Clculo para estimar o tamanho do tablespace de undo ........................... 62
Quadro 4.1 Comando para gerao do plano de consulta.............................................. 66
Quadro 4.2 Seleo do plano de execuo..................................................................... 67
Quadro 4.3 Consultas no shared pool que mais utilizam E/S ........................................ 68
Quadro 4.4 Parmetros de memria............................................................................... 69
Quadro 4.5 Estimando o tamanho do shared pool ......................................................... 70
Quadro 4.6 Linhas encadeadas em uma tabela .............................................................. 71

Quadro 4.7 Reconstruo de uma IOT .......................................................................... 73


Quadro 5.1- Modificao to tamanho do shared pool em um ambiente RAC.................. 77
Quadro 5.2 Parmetros de inicializao do RAC .......................................................... 78

1 Introduo
Sistemas computacionais tm se tornado extremamente crticos para o
mundo corporativo. Ocorre um aumento crescente da dependncia entre
negcios

os

sistemas

de

informao.

Muitas

novas

geraes

de

empreendimentos como lojas virtuais, baseiam-se e dependem inteiramente da


disponibilidade dessa infra-estrutura de Tecnologia da Informao (TI).
Para

sobreviver no

mercado e

se manterem

competitivas,

as

organizaes devem procurar cada vez mais um aumento de eficincia e


produtividade. Sistemas de TI, como parte estratgica da empresa, tm um
papel fundamental nessa conquista.
Dentre os sistemas computacionais utilizados pelas empresas, destacamse os sistemas de gerenciamento de banco de dados (SGBD). Seu desempenho
est em grande parte relacionado com o desempenho das aplicaes.
Por estar presente na maioria das solues corporativas, como mostra a
tabela 1, o SGBD da Oracle [ORCL], mais especificamente a sua ltima verso,
o Oracle Database 10g, foi escolhido como objeto de estudo deste trabalho.
Tabela 1 - Venda mundial de Sistemas de Gerenciamento de Banco de Dados Relacionais
(Valores em milhes de dlares)

Companhia

2005

Diviso do mercado (%)


2005

2004

Diviso do mercado (%)


2004

Oracle

6,721.1

48.6

6,234.1

48.9

IBM

3,040.7

22.0

2,860.4

22.4

Microsoft

2,073.2

15.0

1,777.9

13.9

Teradata

440.7

3.2

412.1

3.2

Sybase

407.0

2.9

382.8

3.0

Outros

1,134.7

8.2

1,090.4

8.5

Total

13,817.4

100.0

12,757.8

100.0

Fonte: Gartner Dataquest (Maio 2006) [GARTNER]

10

1.1 Objetivo
Esse trabalho tem como objetivo auxiliar os Administradores de Banco de
Dados (ABD) ou DBA (da sigla em Ingls Database Administrator) na tarefa de
administrao do SGBD Oracle 10g.
Inicialmente ser feito um estudo da arquitetura Oracle e posteriormente
sero abordados diversos assuntos relacionados administrao do Oracle 10g
como boas prticas de administrao que visam aumentar a estabilidade e
confiabilidade do sistema, tcnicas utilizadas para se maximizar o desempenho
do sistema, entre outros. Ao longo do trabalho, a ferramenta Oracle Enterprise
Manager Database Control [OEMDBC] ser utilizada para a execuo de boa
parte das tarefas administrativas.

1.2 Estrutura do Trabalho


Alm deste captulo introdutrio, o trabalho encontra-se assim dividido:
Captulo 2 - Aborda conceitos sobre a arquitetura do SGBD Oracle como
estruturas de armazenamento e de memria.
Captulo 3 - Trata da administrao do Sistema de Gerenciamento Oracle
10g, apresenta as tcnicas relacionadas administrao que tm influncia na
performance do sistema.
Captulo 4 Discute o ajuste do banco de dados, neste captulo so
identificados os elementos que podem ser ajustados de modo a melhorar o
desempenho geral do sistema.
Captulo 5 Faz um estudo da arquitetura e das ferramentas do sistema
Oracle 10g que do suporte a arquitetura de computao em grade
[TAURION04] e de que forma toda essa estrutura pode contribuir na melhoria da
performance e estabilidade do sistema.
Captulo 6 Concluso e sugestes de trabalhos futuros.

11

2 Arquitetura do Oracle 10g


O servidor de banco de dados Oracle composto de uma ou mais base
de dados e uma instncia. Embora esses termos sejam erroneamente utilizados
de forma equivalente, seus conceitos so bastante diferentes.
Um banco de dados uma coleo de dados em disco. No Oracle, esses
dados podem estar em um ou mais arquivos de dados no servidor de banco de
dados. Alm dos arquivos de dados, o banco de dados composto de outros
dois tipos de arquivos: o arquivo de controle e o arquivo de redo log. O arquivo
de controle essencial para o funcionamento da base de dados, ele
continuamente escrito e contm metadados sobre a base e seu status atual. Os
arquivos de redo log so indispensveis para a recuperao da base em caso
de falha, pois neles so guardados os histricos das operaes na base de
dados.
Vrias estruturas fsicas e lgicas tambm fazem parte do banco de
dados, sendo a tabela a mais comum entre essas estruturas lgicas.
Uma instncia um grande bloco de memria alocado, a SGA (System
Global Area), juntamente com processos em background que interagem entre a
SGA e o banco de dados.

2.1 Estruturas de armazenamento lgico


2.1.1 Tablespaces
Os arquivos de dados do banco de dados so agrupados em uma ou
mais estruturas lgicas chamadas tablespace (espao de tabela). O arquivo de
dados, porm, deve pertencer a uma e somente uma tablespace.
O espao de tabela pode ser classificado como temporrio no sentido de
que os segmentos salvos neste espao so temporrios. Tablespaces

12

temporrios so utilizados para trabalho de classificao e criao de ndices,


por exemplo.
Tablespaces podem ser gerenciados de duas formas: por dicionrio ou
localmente.
Quando uma tablespace gerenciada pelo dicionrio as extenses
(extents) so alocadas e desalocadas de acordo com inseres e delees em
tabelas do dicionrio, o que provoca um overhead maior porque mesmo que os
usurios e aplicaes possuam suas tabelas no tablespace USERS, por
exemplo, o tablespace administrativo SYSTEM ainda teria que ser acessado
para o gerenciamento desses dados nas tabelas. Isso cria um nmero maior nas
requisies de E/S e pode ser um problema grande para comandos que fazem
muitas operaes de atualizao no banco.
Em uma tablespace gerenciada localmente a alocao e desalocao dos
extents so realizadas atravs de mapas de bits no prprio tablespace.
No Oracle 10g, se o tablespace administrativo SYSTEM for administrado
localmente, todos os outros tambm devem ser.

2.1.2 Blocos
Os blocos so as menores unidades de armazenamento de um banco de
dados no Oracle 10g. O tamanho medido em bytes e especificado no
parmetro de inicializao DB_BLOCK_SIZE. O tamanho do bloco deve ser um
mltiplo do tamanho de bloco do sistema operacional para que as operaes de
E/S ocorram de modo eficiente.

2.1.3 Extenses
A extenso est um nvel acima na hierarquia dos agrupamentos lgicos
no banco de dados no Oracle10g. A extenso consiste de um ou mais blocos
alocados a um tipo de objeto especfico (tabela ou ndice).

13

2.1.4 Segmentos
Os segmentos consistem em um conjunto de extenses. O segmento
contm todos os dados de um agrupamento lgico dentro de um tablespace. Por
exemplo, para cada tabela o Oracle aloca uma ou mais extenses para formar
um segmento de dados da tabela, para cada ndice ocorre essa mesma
alocao das extenses para formar o segmento de ndice.
Existem no Oracle quatro tipos de segmentos:


Segmento de dados
Um nico segmento de dados agrupa todos os dados de
uma tabela no banco, exceto nos casos de tabelas particionadas
ou clustetizadas, onde cada partio armazenada em um
segmento;

Segmento de ndice
Para todos os ndices no particionados tem-se tambm
segmentos de ndice que armazenam seus dados;

Segmento temporrio
Durante o processamento das queries do usurio o Oracle
precisa frequentemente de um espao de armazenamento
temporrio para a execuo de uma operao SQL [SQL]
(Structured Query Language). Esse espao em disco alocado
automaticamente e chamado de segmento temporrio.
Operaes de ordenao, por exemplo, normalmente fazem
uso desse espao;

Segmento de rollback
Os segmentos de rollback ainda existem no Oracle 10g
apenas no tablespace SYSTEM. Nas verses anteriores do Oracle
esse segmento era criado para salvar valores anteriores de uma
operao de manipulao de dados para o caso da necessidade
da transao ter de ser revertida, os segmentos tambm eram
utilizados durante a operao de recuperao do banco.

14

Entretanto, essa funcionalidade j obsoleta no Oracle 10g


e no estar mais disponvel nas verses futuras, pelo fato do
Automatic Undo Management tratar de modo automtico da
alocao e gerenciamento dos segmentos de rollback dentro do
tablespace de undo.

2.2 Estruturas lgicas do banco de dados


O que ser discutido nessa seo so algumas das mais importantes
estruturas lgicas gerenciadas pelo Oracle 10g.

2.2.1 Tabelas
A

tabela

unidade

mais

bsica

de

armazenamento.

Independentemente de seu tipo, seus dados sero armazenados em linhas e


colunas.
Abaixo so listados alguns tipos de tabelas encontrados no Oracle:


Tabelas relacionais
A tabela relacional a mais comum. Suas linhas contm
uma ou mais colunas de tipos e comprimentos diversos. As linhas
no so organizadas em ordem, a ordenao feita por heap;

Tabelas organizadas por ndice


Nas tabelas organizadas por ndice o que ocorre que as
linhas da tabela so armazenadas em um ndice de rvore B de
forma que cada n do ndice contenha a coluna chaveada.
A vantagem na utilizao desse tipo de tabela est no fato
da busca por uma linha em particular da tabela ocorrer de modo
mais eficiente.
A desvantagem na utilizao nesse tipo de estrutura que
ela no aplicvel para as tabela que no possuam chave
primria, como tabelas que armazenam registros de log, por
exemplo. Outro inconveniente reside no fato desse tipo de tabela
no poder ser membro de um cluster;
15

Tabelas de objeto
As tabelas de objeto so uma estratgia OO (object-oriented
orientada a objeto) para banco de dados.
As suas linhas contm objetos ou instanciaes de tipos
definidos pelo usurio. As linhas de uma tabela de objetos podem
ser recuperadas pelo seu OID (object id identificador do objeto);

Tabelas clusterizadas
As tabelas clusterizadas podem ser uma estratgia para
maximizar o desempenho de consultas que fazem referncia a
duas ou mais tabelas que frequentemente so acessadas juntas.
Tome-se

como

exemplo

duas

tabelas:

empregados

departamentos que possuem a coluna id_departamento em


comum, ao criar as tabelas, o Oracle armazenar seus blocos de
forma separada. Clusterizando, o Oracle rene os dados nos
mesmos blocos tendo como chave de juno uma coluna em
comum denominada CLUSTER KEY. Os benefcios so listados
abaixo:
Reduo de E/S;
Diminuio do tempo de acesso s tabelas clusterizadas; e
Menor

custo

plano

de

execuo

de

SQL.

Na clusterizao, o valor de cluster key (coluna de juno


das tabelas clusterizadas) armazenado apenas uma vez
independentemente do nmero de linhas que contenham o
mesmo valor de juno. Com isso necessrio menor
armazenamento de dados relacionados de uma tabela e
ndice, o que no acontece em tabelas no clusterizadas.


Tabelas particionadas
A melhor prtica a ser adotada em tabelas grandes (maiores
que 2GB) o particionamento. Uma tabela pode ser particionada
ou subparticionada em n partes menores. Particionar uma tabela

16

traz uma melhoria no desempenho das consultas sobre essa


tabela, alm de tornar o seu gerenciamento mais fcil.
Isso traz um grande benefcio ao DBA. Se uma partio de
uma tabela estiver em um volume de disco corrompido, as outras
parties ainda estaro disponveis para consulta enquanto esse
volume reparado.
Cada linha em uma tabela particionada existe em somente
uma partio. O que determina em que partio essa linha ser
encontrada ou adicionada o que se chama de chave de partio.
As parties dividem-se em trs tipos: parties por
intervalo, nas quais ocorre uma diviso em intervalos para os
possveis valores das chaves, por lista na qual os valores das
chaves so distribudos em grupos de valores distintos. e por hash
na qual as linhas so distribudas equilibradamente entres as
parties com base em uma funo de hashing.

2.2.2 ndices
Os ndices so utilizados na otimizao de consultas. Durante a insero
de dados em uma tabela, as linhas podem ser inseridas em quaisquer blocos.
Desse modo, quando ocorre um busca por uma linha especfica, a tabela inteira
precisa ser lida.
Assim, os ndices so criados com intuito de eliminar essa varredura
completa na tabela na inteno de se encontrar a linha.
O que ocorre aps a criao do ndice que quando uma consulta
submetida, o ndice para tabela primeiramente lido e o identificador da linha
retornado. Por meio desse identificador, chamado de rowid, a linha certa
encontrada na tabela.
A criao de um ndice tem impacto direto nas operaes de INSERT e
DELETE nas tabelas, pois cada criao ou deleo de uma linha
acompanhada de uma mesma operao na estrutura de ndices. Isso acarreta

17

um overhead maior nessas operaes e, portanto a criao dos ndices deve ser
feita de maneira ordenada.
Existem vrios tipos de ndice, cada qual adequado a um tipo particular
de tabela ou aplicao:
ndices nicos
a forma mais comum de ndice B*Tree1. Freqentemente ele
utilizado para impor restrio de chave primria de uma tabela;
ndices no-nicos
Utilizado para acelerar o acesso tabela sem impor restrio
de unicidade. Esse tipo de ndice criado por padro se nenhuma
outra palavra chave for utilizada em sua construo;
ndices de chave inversa
Nesse tipo de ndice, todos os bytes em cada valor de chave da
coluna

so

invertidos.

objetivo

dessa

operao

visa

balanceamento da rvore de ndices.


ndice de mapa de bits
Esse tipo de ndice tem uma estrutura significantemente
diferente de um B*Tree no que se refere ao n de folha do ndice. Ele
armazena uma string de bits para cada valor possvel da coluna que
est sendo indexada. O comprimento dessa string mesmo do
nmero de linhas da tabela sendo indexada.
Portanto, esse tipo de ndice recomendvel para colunas de
baixa cardinalidade (conjunto de valores exemplo sexo: M/F).

2.2.3 Seqncias
Uma seqncia utilizada para atribuir nmeros seqenciais, que so
garantidamente nicos, caso a seqncia no seja redefinida.
Seqncias

podem

gerar

nmeros,

com

intervalos

entre

eles

especificados, de at 38 dgitos e essa gerao pode ser ascendente ou


descendente.
1

Um index B*Tree consiste de nveis de blocos. Com cada nvel contendo ponteiros para o nvel mais baixo e

com um conjunto de blocos folhas no ltimo nvel. [BTREE]

18

2.2.4 Vises
As vises so uma forma de se apresentar os dados de uma tabela ou de
uma juno delas. As consultas subjacentes, necessrias para a apresentao
dos dados so transparentes para os usurios dessa viso.
Em uma viso regular, onde no ocorre o armazenamento de dados, essa
consulta subjacente executada toda vez que a viso acessada. Uma
extenso viso regular a viso materializada, na qual ocorre o
armazenamento dos dados. Esse tipo de viso traz o benefcio de um menor
tempo de resposta para consulta sobre os seus dados, j que a consulta
subjacente no executada durante o acesso a viso.
O Oracle armazena em tabelas do sistema dados sobre a prpria base de
dados. Exemplos dessas informaes incluem os nomes de todas as tabelas na
base de dados, as colunas, os nomes, os tipos dessas tabelas, nmero de linhas
que a tabela contm informaes relacionadas segurana, que informam, por
exemplo, que usurios tm acesso a que elementos da tabela.
Esses dados relacionados prpria base de dados so chamados de
metadados.
Com intuito de facilitar o acesso a esses metadados, o Oracle forma
vises dessas tabelas. Uma base de dados do Oracle 10g contm dois tipos de
vises que com esses metadados:
Vises de dicionrio de dados
Essas vises possuem nomes que comeam com DBA_, ALL_
e USER_.
As diferenas entre elas podem ser ilustradas utilizando a viso
do dicionrio de dados da DBA_TABLES (Quadro 2.1). Ela mostra
informaes de todas as tabelas da base de dados. A ALL_TABLES
mostra apenas as tabelas que um usurio em particular do banco
possui ou tem acesso. A USER_TABLES mostra somente os objetos
que o usurio possui.

19

Quadro 2.1 Vises de dicionrios de dados

Viso

Descrio

DBA_TABLES

Mostra os nomes e informaes de armazenamento fsico


sobre todas as tabelas do banco de dados

DBA_USERS

Mostra informaes sobre todos os usurios do banco de


dados

DBA_VIEWS

Mostra informaes sobre todas as vises do banco de


dados

DBA_TAB_COLUMNS

Mostra todos os nome e tipos das colunas das tabelas do


banco de dados

Vises de desempenho dinmico


Essas vises possuem nomes que comeam com V$. Elas
possuem um contedo mais dinmico e fornecem dados atualizados
sobre o banco de dados. Um exemplo dessas vises pode ser visto na
tabela abaixo.
Quadro 2.2 Vises de desempenho dinmico

Viso

Descrio

V$DATABASE

Contm informaes sobre o prprio banco de dados.

V$OPTION

Mostra quais componentes opcionais esto instalados no banco


de dados.

V$SQL

Mostra informaes sobre as instrues SQL dos usurios.

2.2.5 Usurios/Esquemas
O usurio a pessoa que tem acesso ao SGBD Oracle. Quando um
usurio criado, ele no possui nenhum objeto. Entretanto, assim que os
usurios criem os objetos eles faro parte de um esquema que ter o mesmo
nome do usurio.

20

Um esquema pode possuir qualquer tipo de objeto no banco de dados. O


proprietrio do esquema ou o DBA poder conceder acessos a esses objetos a
outros usurios no banco de dados.
O acesso ao banco de dados por parte do usurio somente garantido se
esse for autenticado. Existem trs mtodos de autenticao disponvel no Oracle
10g: autenticao de banco de dados, autenticao de sistema operacional e
autenticao de rede. Essa ltima baseada em um soluo conhecida como
Public Key Infrastructure e, para que esse servio esteja disponvel, o Oracle
Advanced Security [OSECURITY] deve estar instalado.

2.3 Estruturas de armazenamento fsico


O banco de dados Oracle formado por algumas estruturas de
armazenamento fsico no disco.
Alguns desses arquivos armazenam dados do usurio como, por
exemplo, os arquivos de log de redo e os arquivos de dados. Outros contm
meta informaes sobre o prprio banco de dados, como o caso do arquivo de
controle. O relacionamento entre essas estruturas ilustrado na figura 2.1.

Figura 2.1 Estruturas de armazenamento fsico. Fonte: [LONEY05]

21

2.3.1 Arquivos de parmetro de inicializao


Durante a inicializao da base de dados o arquivo de inicializao lido.
Existem dois tipos de arquivos de inicializao: o PFILE, arquivo texto,
conhecido pelo nome init.ora, e o SPFILE, arquivo de parmetro do servidor,
spfile.ora.
Durante a inicializao, a instncia primeiramente procura pelo SPFILE,
caso no encontre o PFILE lido.
O SPFILE na verdade uma verso binria no PFILE. Quando se utiliza o
SPFILE a grande vantagem reside na auto-otimizao da base. H diversos
parmetros que tem seus valores modificados e quando essas mudanas
ocorrem em nvel de SPFILE, as alteraes se tornam persistentes e os
parmetros modificados sero reutilizados em caso de reinicializao da base.
possvel se criar o SPFILE a partir do PFILE pelo seguinte comando:
Quadro 2.3 Criao do SPFILE a partir do PFILE

create SPFILE from PFILE;

2.3.2 Arquivo de controle


O arquivo de controle, como dito, onde so mantidos os metadados
sobre a prpria base de dados. Ele um arquivo binrio necessrio para que o
banco seja iniciado e opere com sucesso.
O arquivo de controle lido para validao antes mesmo da base ser
colocada no ar e seu contedo modificado continuamente pelo sistema. Todas
as alteraes feitas estrutura do banco de dados so imediatamente refletidas
no arquivo.
Por ser to importante para o funcionamento do sistema, o arquivo de
controle pode e deve ser multiplexado.
Essa multiplexao pode ser feita de duas maneiras:

22

Via comando copy do prprio sistema operacional; ou


Atravs do comando:
Quadro 2.4 Backup do arquivo de controle

alter database backup controlfile to trace;

Esse comando gera um arquivo texto contendo um script SQL que pode
ser utilizado para recriar o arquivo de controle. Esse arquivo criado no diretrio
especificado no parmetro do arquivo de inicializao USER_DUMP_TEST.
Esse valor poder ser obtido pela instruo:
Quadro 2.5 Exibio do valor do parmetro USER_DUMP_TEST

show parameter user_dump_test;

Aps a multiplexao necessrio que o sistema seja informado que


existem outras cpias que podem ser lidas caso o original no seja encontrado
ou esteja corrompido. Para isso, o comando abaixo deve ser executado:
Quadro 2.6 Especificao dos arquivos de controle

alter system set control_files =


caminho/ctrl01.ctl,
caminho/ctrl02.ctl,
caminho/ctrl03.ctl scope=SPFILE;

Como exemplos de informaes contidas no arquivo de controle podem


ser citados:
Nome do banco de dados;
Nome e localizaes dos arquivos de dados e de redo log;
Histrico de redo log;
Localizao e estado dos logs arquivados; e
23

Localizao e o estado dos backups feitos pelo RMAN (Recovery


Manager).
Essas informaes esto disponveis nas diversas vises dinmicas do
sistema.

2.3.3 Arquivos de redo log


Os arquivos de log de redo so utilizados para armazenar um histrico de
transaes que modificam a base de dados. Todas as modificaes que
ocorrem na base primeiramente so registradas no buffer de redo log e
posteriormente nos arquivos de log de redo.
Cada banco de dados gerenciados pelo Oracle deve possuir pelo menos
dois arquivos de log de redo pelo fato do Oracle utiliz-los de maneira circular.
Quando um arquivo de log de redo preenchido o prximo arquivo da fila
marcado como current e passa a ser utilizado. Enquanto o arquivo de log for
necessrio para a recuperao da instncia, ele marcado como ACTIVE, caso
contrrio ele marcado como INACTIVE.
Os arquivos de log esto organizados em grupos. Existem pelo menos
dois grupos de arquivo em cada base de dados gerenciadas pelo Oracle. Os
grupos por sua vez so formados por membros que contm exatamente a
mesma informao. Por razo de segurana, os membros devem ser
armazenado em discos diferentes.
O nmero mximo de grupos definido no parmetro MAXLOGFILES. O
nmero mximo de membros por sua vez,

definido pelo parmetro

MAXLOGMEMBERS. Esses parmetros so informados na instruo de criao


da base.
Quando ocorre um falha na instncia Oracle, pode acontecer que os
blocos no cache do buffer do banco de dados ainda no tenham sido gravados
nos arquivos de dados, ento, quando a instncia reiniciada, as entradas no
arquivo de log de redo so aplicadas aos arquivos de dados para restaurar o
banco de dados de modo a garantir a consistncia.

24

2.3.4 Arquivos de dados


So nos arquivos de dados onde ficam armazenadas as tabelas, ndices,
dados temporrios, dicionrio de dados, entre outros.
Cada base de dados deve possuir pelo menos um arquivo de dados,
cada arquivo de dados corresponde a somente um tablespace. Porm, um
espao de tabela pode conter mais de um arquivo de dados.
O arquivo de dado pode ser criado com a opo AUTOEXTEND. Isso
significa que o arquivo automaticamente expandido de tamanho caso seu
limite de armazenamento seja atingido.

2.4

Estruturas de memria
2.4.1 System Global Area

Como dito anteriormente, a SGA (System Global Area), faz parte da


instncia do SGBD Oracle. A SGA composta de algumas subreas, dentre as
quais podemos citar:
Caches de Buffer
nessa parte da memria que ficam armazenados os blocos
dos dados recm lidos do disco que foram solicitados por uma
instruo de select ou os dados que foram recm modificados pelo
usurio.
O tamanho dessa rea de memria pode ser alterado no
arquivo de inicializao atravs do parmetro DB_CACHE_SIZE;
Shared Pool (Pool compartilhado)
O Pool compartilhado dimensionado pelo parmetro de
inicializao SHARED_POOL_SIZE. Essa rea da memria
composta de duas subcaches importantes, descritas a seguir: a cache
de biblioteca, rea onde ficam armazenadas informaes sobre
instrues SQL. Essa cache compartilhada por todos os usurios.
25

Portanto, os usurios podem, potencialmente, compartilhar uma


mesma instruo SQL, juntamente com seu plano de execuo. A
outra cache a de dicionrio de dados que armazena uma coleo de
dados das tabelas administrativas do sistema (SYSTEM e SYS);
Buffer de Log de redo
Este buffer a rea de armazenamento do histrico. Qualquer
operao de modificao na base registrada. Esses registros das
operaes so mantidos em memria at que eles sejam escritos nos
arquivos de log;
Stream Pool
Contem estruturas de dados e controle que do suporte ao
recurso Oracle Streams. Esse recurso gerencia, em um ambiente
distribudo, o compartilhamento de dados; e
Program Global Area
Esta uma rea de memria alocada para um processo.
Dependendo da configurao do servidor (dedicado ou compartilhado)
a configurao da PGA pode variar.
Em um servidor compartilhado, usurios compartilham uma
conexo com o banco, minimizando o uso de memria no servidor
mas afetando o tempo de resposta para as solicitaes do usurio.
Nesse ambiente, a SGA que contm informaes sobre sesses do
usurio em vez da PGA.
Em um ambiente dedicado, cada usurio tem a sua prpria
conexo com o banco. A PGA nesse caso guarda informaes sobre a
sesso.

2.5

Processos em segundo plano

Quando uma instncia colocada no ar, vrios processos que rodam em


background so iniciados. So eles:

26

Database Writer (DBWR)


Escreve os blocos modificados do cache database buffer para
os arquivos de dados fsicos. O DBWR no precisa escrever os dados
a cada comando COMMIT, pois otimizado para minimizar o E/S.
Geralmente o DBWR escreve os dados para o disco se muitos dados
so lidos para o cache do database buffer na SGA e no existe
espao livre para esses novos dados. Os dados menos recentemente
usados so escritos para os arquivos de dados em primeiro lugar;
Log Writer (LGWR)
Escreve todas as entradas de redo log para o disco. Os dados
de redo log so armazenados em memria no redo log buffer cache,
na SGA. No momento em que uma transao for efetivada com o
comando COMMIT e o redo log buffer estiver preenchido, o LGWR
escreve as entradas de redo log nos arquivos redo log apropriados.
A um tempo especfico, todos os dados do database buffer
cache modificados so escritos em disco pelo processo DBWR; este
evento chamado de checkpoint. O processo checkpoint
responsvel para informar ao processo DBWR o momento de gravar
os dados em disco. O DBWR tambm atualiza os arquivos de controle
do banco de dados para indicar o mais recente checkpoint. O
processo CKPT opcional; se ele no estiver presente, o LGWR
assume sua responsabilidade;
System Monitor
Este processo efetua a recuperao da instncia em caso de
falhas, durante a sua inicializao. Em um sistema com mltiplas
instncias (como na configurao Oracle Parallel Server [OPS], por
exemplo), o processo SMON de uma instncia tambm pode executar
a recuperao de outras instncias que podem ter falhado. Ele
tambm limpa os segmentos temporrios que no esto sendo
usados, liberando memria, e recupera qualquer transao pendente

27

no caso de uma falha em arquivos fsicos ou mesmo no disco. O


processo de recuperao dessas transaes executado pelo
processo SMON quando a tablespace afetada volta a ficar disponvel;
Process Monitor
O process monitor (PMON) executa a recuperao do processo
de um usurio quando esse processo falha. Ele limpa a rea de
memria e libera os recursos que o processo do usurio estava
usando.

PMON tambm

verifica

processo

despachante

(dispatcher) e os processos servidores (server processes) e os


reinicializa se tiver acontecido qualquer falha;
ARCn
O processo archiver (ARCH) copia os arquivos redo log para
fita ou mesmo outro disco, no momento em que um deles torna-se
completo. Esse processo geralmente est presente quando o banco
de dados est sendo utilizado no modo ARCHIVELOG.
RECO
O

processo

recoverer

(RECO)

usado

para

resolver

transaes distribudas pendentes causadas por uma falha na rede


em um sistema de bancos de dados distribudos. A certos intervalos
de tempo, o processo RECO do banco de dados local tenta conectarse ao banco de dados remoto para automaticamente completar e
efetivar a transao (COMMIT) ou descartar (ROLLBACK) a poro
local de uma transao pendente em um sistema distribudo.

28

3 Gerenciamento do Oracle 10g


Algumas das atribuies mais importantes do administrador de banco de
dados garantir a estabilidade do SGBD e um bom desempenho do mesmo.
Esse captulo, portanto, aborda conceitos e tcnicas que auxiliam o DBA na
execuo dessas tarefas no Oracle 10g.

3.1 Gerenciamento de Tablespaces


Um bom gerenciamento dos tablespaces tem influncia direta na
desempenho do Oracle 10g. Saber administr-los, portanto, uma tarefa
fundamental na vida do administrador do banco de dados.
Existem dois tipos de tablespaces no Oracle 10g: o temporrio e o
permanente.

3.1.1 Tablespaces Permanentes


Os tablespaces permanentes so aqueles que contm segmentos que
persistem alm da durao de uma sesso ou transao.
Como exemplo de tablespaces permanentes pode-se citar o SYSTEM e o
SYSAUX. Esses dois espaos nunca devem conter segmentos de usurios por
dois motivos: por questes de organizao, de no se misturar dados
administrativos com dados do usurio e para se evitar um gargalo de E/S devido
uma alta disputa por blocos nesse espao.
O contedo do espao SYSAUX pode ser visualizado utilizando-se o
Oracle Enterprise Manager Database Control, EM.

29

Figura 3.1 Contedo do tablespace SYSAUX

comum analisar atravs do EM as disputas de E/S nos tablespaces. Ao


se identificar os hotspots, em alguns casos o DBA, na tentativa de solucionar o
problema, deve mover blocos de um tablespace para outro.
Para se evitar um possvel problema desse tipo, algumas sugestes
devem ser seguidas. Como exemplo dividir os segmentos em diferentes
espaos de tabela com base nos seus tipos, tamanhos e freqncias de acesso.
Sendo assim deve-se ter:
Separao, em diferentes tablespaces, os segmentos grandes dos
pequenos.
Tablespaces distintos para cada aplicao.
Uma separao dos segmentos de tabela de seus ndices.
Separao das vises materializadas das tabelas base.

3.1.2 Tablespace Temporrio


No Oracle 10g possvel se definir mais de um tablespace temporrio
ativo no banco de dados, porm, como somente um tablespace temporrio pode
30

ser atribudo para cada usurio, sesses desse usurio s podero utilizar esse
tablespace. Isso pode causar um problema de desempenho pela disputa de E/S
como mencionado anteriormente.
Por essa razo, o Oracle d suporte ao recurso de grupos de espao de
tabela temporrio, que significam na verdade, uma lista de espaos de tabela.
A grande vantagem na utilizao desse recurso vem do fato de se poder
ter mltiplas sesses de um usurio utilizando diferentes tablespaces
temporrios em um mesmo grupo para a realizao de suas operaes de
classificao. Isso particularmente bastante til quando podemos alocar discos
fsicos distintos para cada tablespace, reduzindo drasticamente a disputa de E/S
naqueles segmentos.
O grupo deve conter pelo menos um tablespace temporrio. Abaixo
ilustrada a criao do grupo temporrio grupotmp a partir de trs tablespaces
(tmp1, tmp2, tmp3) previamente criados.
Quadro 3.1 Criao de grupos temporrios

alter tablespace tmp1 tablespace group grupotmp;


alter tablespace tmp2 tablespace group grupotmp;
alter tablespace tmp3 tablespace group grupotmp;

O comando para se definir a utilizao desse grupo de tablespace


temporrio como padro para os usurios recm criados o mesmo para se
definir um tablespace temporrio aos usurios.
Quadro 3.2 Definio de um grupo de tablespaces temporrio como padro

alter database default temporary tablespace grupotmp;

Para a remoo de um grupo de tablespace, deve-se descartar todos os


seus membros. Para isso, atribumos aos membros outro grupo ou grupo
nenhum (string ).

31

Quadro 3.3 Remoo de grupos temporrios

alter tablespace tmp1 tablespace group ;


alter tablespace tmp2 tablespace group ;
alter tablespace tmp3 tablespace group ;

3.1.3 Tablespace de undo


O tablespace de undo utilizado pelo Oracle para reverter transaes e
fornecer consistncia para as instrues de SELECT que so executadas sobre
tabelas que esto sendo modificadas. Esse tablespace tambm fornece dados
utilizados pelo recurso Oracle Flashback.
O tablespace de undo guarda dados dos registros antes que estes sejam
atualizados ou excludos de modo que se uma sesso do usurio falhar antes
dele fazer o COMMIT ou ROLLBACK, essa modificaes so revertidas.
Esse tablespace especificamente ser estudado mais adiante nesse
trabalho.

3.2 Gerenciamento de Armazenamento


No tpico anterior foi abordado o gerenciamento de tablespaces, mas no
foi visto como cri-las, por exemplo. Neste tpico sero discutidos os aspectos
fsicos de um banco de dados e como gerenci-los de modo que se possa
maximizar o desempenho do SGBD.

3.2.1 Criao de tablespaces


Ser tomada como assunto de estudo nesse tpico a criao de
tablespaces permanentes. A criao dos outros tablespaces so bastante
semelhantes.
O comando SQL para a criao mostrado abaixo:

32

Quadro 3.4 Comando para a criao de tablespaces

CREATE [BIGFILE | SMALLFILE] TABLESPACE <nome_tablespace>


DATAFILE '<caminho_e_nome_arquivo>'
SIZE <integer><K | M | G | T> [REUSE]
AUTOEXTEND <OFF | ON>
BLOCKSIZE <bytes>
[<LOGGING | NOLOGGING>][FORCE LOGGING]
[ DEFAULT <COMPRESS | NOCOMPRESS>]
EXTENT MANAGEMENT LOCAL UNIFORM SIZE <tamanho_extent>
SEGMENT SPACE MANAGEMENT AUTO
<ONLINE | OFFLINE>;

A criao do tablespace envolve alguns conceitos importantes. No


momento de sua criao, pode-se especificar se esse uma tablespace bigfile
ou smallfile. Com o smallfile pode-se especificar mais de um arquivo de dados e
assim minimizar os riscos de perda do arquivo de dados. No tipo bigfile apenas
um arquivo de dados pode ser especificado, porm este pode ser muito maior
que um arquivo de dados de uma tabela smallfile. Um espao de tabela bigfile
pode ter um arquivo de dados to grande quanto 128TB.
Quanto ao gerenciamento dos extents, ele pode ser automtico ou no.
Quando este automtico pode-se especificar o tamanho de crescimento do
arquivo de dados no parmetro SIZE.
A opo de logging permite habilitar a gerao de entradas de redo para
segmentos contidos no tablespace, o que ocasiona um grande impacto na carga
de dados principalmente. A opo de logging em um tablespace pode ser
sobrescrita durante a criao de um objeto nesse tablespace (tabelas, ndices,
etc). Para que isso possa ser evitado, a opo force logging pode ser
especificada.
A clusula SEGMENT SPACE MANAGEMENT permite especificar de que
forma os espaos livres e utilizados dentro segmento sero gerenciados. As
duas possveis opes so:

33

MANUAL
Essa opo significa usar free lists. Elas so listas de blocos de
dados que contm espaos disponveis. Essa opo chamada de
manual porque preciso que seja especificado manualmente alguns
parmetros para a criao dos objetos no tablespace (PCTUSED,
FREELISTS e FREELISTS GROUPS) ; e
AUTO
O gerenciamento automtico mais eficiente. Ele elimina a
necessidade de se especificar parmetros na criao de objetos.
O gerenciamento automtico utiliza bitmaps para gerenciar os
espaos livres nos segmentos. Neste caso, utilizado um mapa que
informa o status de cada bloco dentro do segmento.

3.2.2 Alterao de tablespaces


Tanto a tarefa de criao quanto a de a manuteno dos
tablespaces pode ser facilitada utilizando-se a ferramenta EM.
Abaixo, na figura 3.2, 3.3 e 3.4, sero mostradas algumas telas da
ferramenta EM durante a realizao de algumas operaes de manuteno.

34

Figura 3.2 Edio de tablespaces

Figura 3.3 Edio do arquivo de dados

35

Figura 3.4 Adicionando arquivo de dados

3.2.3 Movendo arquivos de dados


A alterao da localizao dos arquivos de dados s vezes se faz
necessria para se melhorar o desempenho de E/S do banco de dados. Para
realizar essa tarefa, o DBA tem duas opes: atravs de comandos SQL como
alter database ou ALTER TABLESPACE ou atravs do EM.
O comando alter tablespace no funciona para a movimentao dos
arquivos de dados das tablespaces administrativas (SYSTEM e SYSAUX), dos
espaos de tabelas temporrios e de undo on-line. Neste caso o comando
ALTER DATABASE deve ser utilizado.
Abaixo so mostrados os passos para a execuo desses comandos.

ALTER DATABASE
1. Localizar os arquivos de dados atravs das vises (V$DATAFILE e
V$TABLESPACE)

36

Quadro 3.5 Comando para a localizao dos arquivos de dados do tablespace

select d.name
from v$datafile d join v$tablespace t using (ts#)
where t.name = EXAMPLE;

2. Desativar a instncia (o usurio deve estar logado como sysdba)


3. Utilizar os comandos do SO para movimentar os arquivos
4. Abrir o banco de dados no modo MOUNT
Quadro 3.6 Comando para iniciar o banco de dados (modo MOUNT)

startup mount;

5. Utilizar o comando ALTER DATABASE para alterar as referncias


aos arquivos de dados
Quadro 3.7 Comando para atualizar as referncias aos arquivos de dados
(ALTER DATABASE)

alter database rename file caminho_antigo/example01.dbf to


novo_caminho/example01.dbf;

6. Abrir o banco de dados no modo OPEN


Quadro 3.8 Comando para abrir o banco de dados

alter database open;

ALTER TABLESPACE
sempre prefervel que se utilize esse comando ao mover arquivos de
dados de tablespaces diferentes dos acima descritos. A razo para isso que o
banco de dados, exceto pelo tablespace que est sendo modificado, continua
disponvel durante toda a operao.

37

1. Colocar o tablespace em modo offline.

Quadro 3.9 Comando de alterao da tabela para modo offline

alter tablespace users offline;

2. Utilizar os comandos do SO para movimentar os arquivos


3. Utilizar o comando ALTER TABLESPACE para atualizar as
referncias ao arquivo de dados.
Quadro 3.10 - Comando para atualizar as referncias aos arquivos de dados (ALTER
TABLESPACE)

alter tablespace rename datafile


caminho_antigo/users01.dbf to
novo_caminho/users01.dbf;

4. Colocar o tablespace em modo online

3.2.4 Movendo arquivos de controle


Os arquivos de controle so indispensveis para o funcionamento da
instncia. Devido a sua importncia, multiplex-los, como dito no captulo
anterior, uma boa alternativa na tentativa de se preservar esses arquivos.
importante que caso algum arquivo de controle seja corrompido, ele possa ser
substitudo por outro, possivelmente localizado em algum outro volume de disco.

38

3.3 Monitoramento do uso de espao


Muitas vezes o DBA se depara com problemas de gerenciamento de
espao. Saber como evit-los ou resolv-los , tambm, uma tarefa primordial
na vida do DBA.
Os problemas de gerenciamento normalmente so alocados em trs
categorias: espao insuficiente em um tablespace, espao insuficiente para
segmentos temporrios e muito ou pouco espao de undo alocado.

Espao insuficiente em um tablespace


Esse problema acontece quando o tablespace no definido com o
atributo AUTOEXTEND. Neste caso, a quantidade total de dados que o
tablespace pode armazenar fica limitada quantidade total de espao dos
arquivos que a compe.
Se o atributo AUTOEXTEND for definido, os arquivos de dados que
compem o tablespace crescero automaticamente para atender s solicitaes.
Isso claramente, limitado pela capacidade de armazenamento do disco.
Uma boa prtica por parte do DBA , portanto, monitorar o uso desse
espao para detectar tendncias e assim assegurar espao suficiente de
armazenamento para as futuras solicitaes.

Espao insuficiente para segmentos temporrios


O espao de tabela temporrio utilizado nas operaes de classificao
ou mesclagem de dados. Quando um usurio submete uma operao de
classificao, construes de ndices, consultas distinct ou union ao servidor, o
Oracle armazena nos segmentos temporrios resultados intermedirios dessas
operaes que no podem ser realizadas em memria.
Caso no haja espao de armazenamento suficiente nesse espao
temporrio e ele no poder ser auto-estendido, a consulta do usurio falhar.

39

Muito ou pouco espao de undo alocado


O espao de tabela de undo contm segmentos utilizados para reverter
transaes no-confirmadas e para oferecer consistncia de leitura a consultas
de longa durao (que comeam antes de modificaes ocorrerem em uma
tabela).
Da mesma forma que espaos de tabela temporrio, o objetivo do
gerenciamento desse espao garantir espao livre suficiente mas sem alocar
mais que o necessrio.

3.3.1 Blocos, extenses e segmentos no Oracle


No captulo anterior esses elementos foram definidos. Neste tpico, eles
sero discutidos em mais detalhes.

Figura 3.5 Blocos, extenses e segmentos. Fonte: [DAWES05]

Blocos
Como dito, os blocos so as menores unidades de armazenamento do
Oracle. O formato do bloco apresentado abaixo:

40

Figura 3.6 Formato do bloco Oracle. Fonte: [ORCLCONCEPTS]

No cabealho encontram-se informaes como tipo de dados que est


armazenado no bloco dados ou ndice. A seo diretrios de tabela contm
informaes relativas tabela com linhas no bloco. Um bloco somente pode
conter linhas provenientes de uma nica tabela ou entradas provenientes de um
nico ndice. Uma exceo a essa regra ocorre quando a tabela clusterizada.
Nesse caso, o diretrio identifica todas as tabelas com linhas nesse bloco. O
diretrio de linhas traz detalhes sobre linhas especficas das entradas de tabela
ou de ndices no bloco.
Quando um bloco alocado, o espao livre est disponvel para novas
linhas e para as atualizaes das linhas j existentes. O espao est disponvel
para novas inseres at o limite definido no bloco pelo parmetro PCTFREE,
especificado quando o segmento criado. Quando este limite atingido,
nenhuma insero permitida.

41

Uma linha pode se distribuir por mais de um bloco se o tamanho da linha


for maior que o tamanho do bloco ou se a linha modificada no couber mais no
bloco original.
No primeiro caso, a linha ser armazenada em uma cadeia de blocos.
Esse caso pode ser inevitvel se uma linha contiver colunas que excedam o
tamanho do bloco. No Oracle 10g, o tamanho mximo do bloco 32KB.
No segundo caso, o Oracle far uma migrao dos dados da linha inteira
para um novo bloco e deixar no primeiro um ponteiro que apontar para essa
nova localizao. Isso pode vir a ser um problema porque um segmento com
muitas linhas migradas pode causar problemas de desempenho de E/S, uma
vez que o nmero de blocos necessrios para satisfazer consulta pode dobrar.
Nesses casos, ajustar o valor do PCTFREE ou reconstruir a tabela pode vir a ser
uma soluo.

Extenses
A extenso o prximo nvel de alocao de espao. A extenso consiste
de um conjunto de blocos.
No momento da criao de uma tabela, uma extenso inicial criada.
Posteriormente, se necessrio, extenses incrementais vo sendo alocadas.
Essas extenses incrementais podem ter ou no o mesmo tamanho da
extenso inicial.
Essa diferena definida no momento da criao do tablespace atributo
UNIFORM.
Quando essa alocao das extenses no uniforme, ela pode ser
automaticamente dimensionada pelo Oracle (AUTOALLOCATE). O Oracle utiliza
um algoritmo de alocao de espao que visa diminuir a fragmentao do
tablespace.
Quando a autoalocao do espao utilizada, os parmetros de
armazenamento (INITIAL, NEXT, PCTINCREASE e MINEXTENTS) so
utilizados apenas como parmetros para o algoritmo interno do Oracle.

42

Segmentos
As extenses descritas acima so alocadas para um nico segmento que
por sua vez est contido dentro de um nico tablespace.
O segmento representa um s tipo de objeto no banco de dados, seja ele
uma tabela, uma partio, um cluster, um ndice, ou um segmento temporrio.
O modo de como o espao dentro do segmento gerenciado depende de
como o tablespace que contm o segmento foi criado. Se o tablespace for
gerenciado por dicionrio, o Oracle utiliza freelists para o gerenciamento do
espao. Caso o tablespace seja gerenciado localmente, h duas maneiras de se
fazer esse gerenciamento: freelists ou mapa de bits. fortemente recomendado
pela Oracle que esse espao seja gerenciado por mapas de bits por questes de
desempenho, pois permitido um maior nmero de acessos concorrentes aos
mapas de bits em comparao com as freelists.
Caso o gerenciamento do espao seja realizado pelos mapas de bits, as
instrues PCTUSED, FREELIST e FREELIS GROUP declaradas no momento
da criao de uma tabela ou ndice sero ignoradas.

3.3.2 Vises de Dicionrio e de Desempenho Dinmico


Algumas

vises,

tpico

abordado

no

captulo

anterior,

so

frequentemente utilizadas pelo DBA para se ter um entendimento do uso do


espao em disco. A seguir sero citadas algumas dessas vises, suas
descries e suas funcionalidades.

DBA_TABLESPACES
Esta viso contm informaes sobre os espaos de tabela. Ela possui
uma linha para cada tablespace seja nativo ou conectado atravs de outro
banco de dados, sua descrio mostrada na figura 3.7.

43

Figura 3.7 Descrio da viso DBA_TABLESPACES

DBA_SEGMENTS
Nesta viso esto representados os segmentos de dados. De modo
semelhante viso DBA_TABLESPACES, apresenta uma linha para cada
segmento de dados. Esta viso bastante til para se obter informaes sobre o
dono do objeto e o tablespace onde ele est armazenado. Sua descrio
mostrada na figura 3.8.

Figura 3.8 Descrio da viso DBA_SEGMENTS

44

DBA_FREE_SPACE
Esta viso, descrita na figura 3.9, est dividida pelo nmero de arquivo de
dados dentro do tablespace. Uma consulta til sobre esta viso seria para se
analisar a quantidade de bytes livres em cada tablespace.

Figura 3.9 Descrio da viso DBA_FREE_SPACE

DBA_TRESHHOLDS
Esta viso apresenta uma lista das diferentes mtricas que do uma
estimativa da sade do banco de dados e especifica uma condio sob a qual
um alerta ser emitido se a mtrica alcanar o limiar ou exceder um valor
especificado.
A manuteno dos valores dessa viso, em geral, feita utilizando a
ferramenta EM, porm o Oracle disponibiliza um conjunto de blocos PL/SQL
(DBMS_SERVER_ALERT) para configurar esses valores sem o auxlio da
interface. A configurao e obteno desses valores podem ser obtidos atravs
das funes SET_THRESHOLD e GET_THRESHOLD respectivamente.
As mensagens de alerta podem ser lidas atravs dos pacotes DBMS_AQ
e DBMS_AQDM ou o DBA pode configurar o banco para que essas mensagens
sejam automaticamente enviadas para ele por e-mail.
45

Na instalao padro da base, alguns limiares j vm pr-configurados,


exemplo:
Mais de 1200 cursores concorrentes abertos;
Se um espao de tabela estiver mais de 85% cheio (alerta) ou mais de
97% (crtico) cheio; e
Se o nmero de processos concorrentes alcanar 80% do valor
especificado no parmetro de inicializao PROCESSES.

3.3.3 Recursos Disponveis no Oracle 10g


O Oracle 10g dispe de recursos que auxiliam o DBA na tarefa de
gerenciamento do espao. Eles so abordados a seguir.

Oracle Managed Files (OMF)


O OMF um recurso que visa facilitar o controle dos arquivos fsicos do
sistema operacional. Sem este recurso, por exemplo, o DBA aps a excluso de
um espao de tabela se via obrigado a ter de excluir os arquivos de dados
manualmente. Para a execuo dessa tarefa, ele devia ter em mente, ou
identificar atravs de consultas as vises de dicionrios e as localizaes desses
arquivos.
Desse modo, o OMF cria e exclui automaticamente esses arquivos e
tambm assegura que os mesmos sejam identificados unicamente. Essa ltima
funcionalidade evita a corrupo de dados, principalmente durante a criao
inadvertida de novos arquivos de dados com o mesmo nome com a clusula
REUSE.
Os arquivos no-OMF podem coexistir sem problemas com os arquivos
OMF. A converso de um arquivo no-OMF para OMF simples. O que o DBA
precisa fazer configurar alguns parmetros de inicializao, descritos no
quadro 3.11, e assim, pode ser feita a criao dos novos arquivos como OMF.

46

Quadro 3.11 Parmetros de inicializao relacionados ao OMF

Parmetro de Inicializao

Descrio

DB_CREATE_FILE_DEST

Diretrio de arquivo do sistema operacional onde os


arquivos de dados e tempfiles so criados se nenhum
nome de caminho for especificado no comando CREATE
TABLESPACE.
Esse local utilizado para arquivos de redo log e arquivos
de controle se DB_CREATE_ONLINE_LOG_DEST_n no
for especificado.

DB_CREATE_ONLINE_LOG_DEST_n

Especifica a localizao padro para armazenar arquivos


de redo log e arquivos de controle quando nenhum nome
de caminho especificado para arquivos de redo log ou
arquivos de controle em tempo de criao do banco de
dados. At cinco destinos podem ser especificados com
esse parmetro, permitindo at cinco arquivos de controle
multiplexados e cinco membros de cada grupo de redo log.

DB_RECECOVERY_FILE_DEST

Define o nome de caminho padro no sistema de arquivos


do servidor onde backups RMAN, redo logs arquivados em
repositrios de arquivos e logs de flashback esto
localizados. Tambm utilizado para arquivos redo log e
arquivos de controle se nenhum DB_CREATE_FILE_DEST
nem DB_CREATE_ONLINE_LOG_DEST_n for
especificado.

Automatic Storage Management (ASM)


O ASM tambm um recurso que simplifica a administrao dos
arquivos. Com o ASM permitido ao administrador referenciar um grupo de
discos ao invs de apenas discos individuais.
O ASM prov funcionalidades como espelhamento e armazenamento
seguro. Por exemplo: durante a criao dos arquivos de dados, estes so
distribudos automaticamente entre o grupo de discos ASM. Com isso, o
desempenho das consultas aumenta, pois a E/S balanceada entre os vrios
discos.
Um grupo de discos no ASM gerenciado como uma nica entidade. Os
discos podem ser adicionados ou removidos de um grupo sem a necessidade de
se desativa o banco de dados. Quando isto acontece, o ASM se encarrega de

47

fazer novamente o balanceamento dos arquivos entre os discos de modo a


maximizar o desempenho de E/S.
Existem trs tipos de grupos de discos no ASM: de redundncia normal,
de alta redundncia e redundncia externa.
A diferena entre os dois primeiros tipos est no nmero de grupos de
falha. O primeiro utiliza dois grupos de falhas e o segundo utiliza pelo menos
trs. No terceiro tipo, a redundncia fornecida por outro mecanismo, como por
exemplo, um array de armazenamento (RAID).
A criao da instncia ASM pode ser feita pelo assistente de criao de
base de dados. Durante a criao necessria a especificao do parmetro de
inicializao INSTANCE_TYPE, que no caso ser ASM.
Depois da criao da instncia ASM, devem ser criados os grupos de
discos. A sintaxe para a criao de um grupo de discos de redundncia normal
exibida a seguir:
Quadro 3.12 Comando para criao de grupos de disco de redundncia normal

CREATE DISKGROUP disk_group_1 NORMAL REDUNDANCY


FAILGROUP failure_group_1 DISK
'/devices/diska1' NAME diska1,
'/devices/diska2' NAME diska2,
FAILGROUP failure_group_2 DISK
'/devices/diskb1' NAME diskb1,
'/devices/diskb2' NAME diskb2;

Nesse caso, ao contrrio do que possa parecer, o disco b1 e o disco b2


no so espelhamentos dos discos a1 e a2. O ASM se utiliza de todos os discos
para a criao de um sistema tolerante a falhas. Por exemplo: um arquivo
pertencente ao grupo de disco acima pode ser criado no disco a1 com uma
cpia em b2 ou criado em b1 com uma cpia em a2. Uma ocorrncia de falha
em um grupo no acarretar indisponibilidade, uma vez que todos os arquivos
esto devidamente espelhados.

48

Para a criao de um tablespace no ambiente ASM, o comando CREATE


TABLESPACE deve fazer referncia ao grupo de discos, como mostrado do
quadro 3.13.
Quadro 3.13 Comando CREATE TABLESPACE (referncia ao arquivo de dados /
ambiente ASM)
CREATE TABLESPACE
SIZE 1024M

tbls1

DATAFILE

+disk_group_1/user_data_1

Como o grupo de discos utiliza um sistema de arquivos virtual, esse


espelhamento pode ser bastante til quando se trata dos arquivos de redo logs,
backups, no quadro 3.14 ilustrada a criao de um grupo de arquivos de redo
logs de tamanho 50MBytes:

3.3.4 Gerenciamento do tablespace SYSAUX


Como mencionado em tpicos anteriores, o tablespace SYSAUX um
espao administrativo auxiliar ao tablespace SYSTEM. O SYSAUX armazena
diversos componentes, entre eles: Enterprise Manager Repository, Oracle
Intermedia, Oracle Data Mining.
Esses componentes podem ser identificados atravs de uma consulta a
viso V$SYSAUX_OCCUPANTS, como mostrado no quadro 3.14.
Quadro 3.14 Comando para a seleo dos ocupantes do tablespace SYSAUX

SELECT occupant_name, occupant_desc, space_usage_kbytes


FROM V$SYSAUX_OCCUPANTS;

O espao de tabela SYSAUX no essencial para o funcionamento da


base. Caso esse tablespace seja colocado off-line, apenas esses componentes
no estaro mais disponveis.
Por

questes

de

desempenho

de

E/S,

monitoramento

gerenciamento desse tablespace importante. A consulta exibida na caixa

49

anterior solicita informaes sobre o espao utilizado em kbytes pelo


componente (space_usage_kbytes) e o resultado desse campo pode informar ao
DBA se necessrio a movimentao desse componente para um espao de
tabela dedicado.
O Oracle disponibiliza alguns procedures para auxiliar o DBA na
execuo dessa tarefa.
A

coluna

MOVE_PROCEDURE

da

mesma

viso

(V$SYSAUX_OCCUPANTS) mostra ao DBA que procedure deve ser executada


para a transferncia do componente.
Quadro 3.15 Consulta para seleo do procedure para movimentao dos componentes
do tablespace SYSAUX

SELECT occupant_name, move_procedure


FROM V$SYSAUX_OCCUPANTS;

A movimentao do componente ento realizada dessa forma:


Quadro 3.16 Comando para movimentao dos componentes do tablespace
SYSAUX

EXECUTE nome_da_procedure(tablespace_destino)

3.3.5 Gerenciamento de arquivos de redo log


Uma preocupao que o DBA precisa ter quanto ao gerenciamento de
espao de objetos que existem fora do banco de dados, como o caso do
armazenamento dos arquivos de log em repositrios de arquivos.
No modo ARCHIVELOG, o arquivo de log de redo copiado para os
destinos, especificados pelo parmetro LOG_ARCHIVE_DEST_n.
O arquivo de log que est sendo copiado precisa que essa cpia seja
realizada com sucesso para o nmero de destinos mnimo especificado no

50

parmetro LOG_ARCHIVE_MIN_SUCCED_DEST. Caso isso no seja possvel


(uma causa dessa falha poderia ser falta de espao no destino) o banco de
dados suspenso.

3.3.6 Gerenciamento de espao Segment Advisor


O Oracle possui um conjunto de ferramentas predefinidas que auxiliam o
administrador do banco na identificao de problemas relacionados a espao em
disco no banco de dados, abordaremos a ferramenta Segment Advisor.
O Segment Advisor um recurso que realiza anlises sobre a
fragmentao de espaos de tabela, segmentos ou objetos no banco de dados.
A fragmentao do espao, que ocorre em virtude das operaes de
manipulao, poder ser desfeita atravs de operaes de reduo sobre esses
objetos.
Reduzir um segmento significa dizer que o Oracle disponibiliza o espao
livre desse segmento para outro segmento no tablespace. Um efeito dessa
operao o aprimoramento das futuras operaes sobre o segmento. H uma
otimizao da utilizao do cache, uma vez que menos blocos precisam estar no
cache para satisfazer as operaes sobre o segmento.
Para que o Oracle possa reduzir uma tabela, por exemplo, necessrio
que se habilite o movimento das linhas dessa tabela. Isso conseguido atravs
do comando ALTER TABLE, mostrado no quadro 3.17.
Quadro 3.17 Comando para habilitar o movimento de linhas de uma tabela

alter table nome_da_tabela enable row movement;

Como exemplo do uso desse e de outros recursos abordados em tpicos


posteriores, vamos tomar a anlise da tabela fictcia RH.EMPREGADO.
Para que o Segment Advisor analise a tabela, preciso configur-lo. Isso
feito atravs da execuo de um bloco PL/SQL, como ilustra o quadro 3.18:

51

Quadro 3.18 Configurao do Segment Advisor

declare
name varchar2(100);
descr varchar2(500);
obj_id number;
begin
name := ;
descr := Check RH.EMPREGADO;
dbms_advisor.create_task(Segment Advisor, :task_id, name,
descry, NULL);
dbms_advisor.create_object(name,
TABLE,
RH,
EMPREGADO,
NULL, NULL, obj_id);
dbms_advisor.set_task_parameter(name,
RECOMMEND_ALL,
TRUE);
dbms_advisor.execute_task(name);
end;

A procedure DBMS_ADVISOR.CREATE_TASK especifica o tipo de


advisor, que no caso o Segment Advisor. A procedure retorna um id, nico
para a tarefa e um nome gerado para o programa que chama.
Dentro da tarefa, identificada pelo nome, indicamos o objeto a ser
analisado com DBMS_ADVISOR_CREATE_OBJECT. Os atributos para essa
procedure variam de acordo com o tipo de objeto. Para o objeto do tipo tabela,
necessrio a especificao apenas no esquema e o nome da tabela.
Os

parmetros

passados

para

procedimento

DBMS_ADVISOR.SET_TASK_PARAMETER serve para informar a quantidade


de recomendaes que desejamos obter do Segment Advisor. No caso, foi
solicitada a obteno de todas as recomendaes. O terceiro parmetro
utilizado para desativar (false) ou ativar (true) as recomendaes para a tarefa.
A execuo da tarefa do Segment Advisor apenas iniciada com a
chamada do procedimento DBMS_ADVISOR.EXECUTE_TASK.
O resultado da operao do Segment Advisor, ou seja, suas
recomendaes, podem ser encontradas nas vises DBA_ADVISOR_FINDINGS
e DBA_ADVISOR_RECOMENDATIONS. A identificao dessas recomendaes
feita atravs no id da tarefa.

52

SQL> print task_id;


TASK_ID
----------6

Quadro 3.19 Consulta s recomendaes do Segment Advisor

SQL>
more_info

select

owner,

task_id,

task_name,

type,

message,

from DBA_ADVISOR_FINDINGS
where task_id = 6;

A viso DBA_ADVISOR_ACTION informa o script necessrio para


realizar a operao de reduo.
Quadro 3.20 Seleo da ao sugerida pelo Segment Advisor

SQL> select owner, task_id, task_name, command, attr1


from DBA_ADVISOR_ACTIONS
where task_id = 6;

A reduo das tabela no necessita espao extra de armazenamento,


nem impede a sua utilizao durante a operao. Alm disso, todos os ndices
presentes na tabela so mantidos.

3.3.7

Uso de ndices

O uso de ndices em tabelas diminui muito o tempo de respostas nas


operaes de seleo de seus elementos. Porm algum dos ndices criados no
banco de dados podem estar sendo subutilizados e que sua no existncia faria
mais sentido quando se leva em considerao o espao ocupado pelo ndice e o
overhead existente durante as operaes de modificaes na tabela (uma
insero numa tabela leva a uma criao de uma entrada no ndice).

53

Por esse motivo, o DBA tem a sua disposio a viso de desempenho


dinmico V$OBJECT_USAGE, a qual monitora a utilizao dos objetos na base
de dados.
O tpico anterior, tomamos como exemplo a tabela EMPREGADO do
esquema RH. Considerando que existe um ndice nessa tabela que referencia o
id do trabalho do empregado, pode-se analisar a utilizao desse ndice
alterando o ndice e ativando o monitoramento de utilizao, como mostrado no
quadro 3.21.
Quadro 3.21 Comando para monitorar a utilizao do ndice

SQL> alter index RH.EMPREGADO_ID_TRAB monitoring usage;

Aps um perodo de operaes sobre o banco, pode-se verificar na viso


se o ndice est realmente sendo utilizado, com o comando do quadro 3.24.
Quadro 3.23 Consulta viso V$OBJECT_USAGE sobre a utilizao do ndice

SQL> select * from V$OBJECT_USAGE;

O ndice ainda pode ser analisado com relao ao uso eficiente de


espao.
O comando a seguir pode ser utilizado periodicamente para se verificar se
o uso do espao alocado para o ndice se torna ineficiente.
SQL> analyse index RH.EMPREGADO_ID_TRAB validate structure
Index analysed.
SQL> select pct_used from index_stats where name =
EMPREGADO_ID_TRAB
PCT_USED
-------20

54

No caso exibido, verifica-se que o ndice utiliza apenas 20% do espao a


ele destinado. Em casos de desempenho insastifatrio, deve-se realizar a
operao de reconstruo do ndice, como mostrado no quadro 3.24.
Quadro 3.24 Comando para a reconstruo de ndice

SQL> alter index RH.EMPREGADO_ID_TRAB rebuild;

3.3.8 Resumable Space Allocation


Algumas longas operaes como imports e processos batch podem falhar
devido impossibilidade do servidor alocar mais espao (extenses) para os
objetos. Isto pode ocorrer devido ao fato do objeto ter atingido o limite de
extenses disponvel, de no haver espao no tablespace para a expanso do
objeto ou a cota de espao do usurio ter sido excedida.
Em verses anteriores do Oracle, operaes desse tipo teriam que ser
reexeutadas, possivelmente com alguns rollbacks manuais sobre as operaes
previamente executadas que falharam.
No Oracle 10g, possvel evitar esse tipo de problema no sentido que
existe um recurso, o Resumable Space Allocation, que possibilita a suspenso
dessas operaes de longa durao em casos de falha de alocao de espao.
O DBA pode, portanto, tornar essas instrues retomveis alterando o
parmtro de inicializao RESUMABLE_TIMEOUT com um valor, em segundos,
maior que zero.
Um usurio pode ativar operaes retomveis, em nvel de sesso,
atravs do comando abaixo:

SQL> alter session enable resumable timeout 3600;

55

Isso significa dizer que a operao que no tenha espao suficiente ser
suspensa por 3600 segundos (1 hora) para que a condio de falta de espao
seja reparada. Caso isso no acontea, a transao ir falhar.
Como exemplo, ser analisada a cpia de uma tabela de um tablespace
para outro. No caso a seguir, as linhas da tabela EMPREGADO, que contm os
dados dos funcionrios da filial, esto sendo inseridas em outra tabela que
contm informaes sobre todos os funcionrios da organizao.

SQL> insert into RH.EMPREGADOS_ORGANIZACAO


select * from RH.EMPREGADO;

Em caso de falha por falta de espao, uma notificao do sistema


alertaria o usurio quanto ao problema e a transao falharia. Para a instruo
anterior, a seguinte mensagem seria exibida:

*
ERROR at line 1
ORA-01653: unable to extend table RH.EMPREGADOS_ORGANIZACAO by X
in tablespace Y

A soluo, portanto, para problemas desse tipo, seria utilizar o


Resumable Space Allocation.
Com o recurso ativado, a mensagem diferiria e informaria ao usurio e ao
DBA (este pode receber uma notificao via e-mail) que a transao seria
suspendida.
Atravs da viso DBA_RESUMABLE, o DBA pode verificar que
transaes esto suspensas por falta de espao:
Quadro 3.25 Comando para listagem de transaes suspensas

SQL> select user_id, instance_id, status, name, error_msg


from DBA_RESUMABLE;

56

A partir disso, o DBA poderia aumentar o tamanho do tablespace para dar


suporte a s operaes. Essa mudana iria refletir na viso, no sentido de que
status da transao passaria de SUSPENDED para NORMAL.
Como mencionado anteriormente, o DBA pode ser notificado via e-mail
sobre a suspenso das transaes. necessrio para isso, a definio de um
trigger de sistema. Um exemplo ilustrado abaixo:

CREATE OR REPLACE TRIGGER resumable_notify


after suspend on database
DECLARE
-- variveis
BEGIN
-- altera o intervalo para a soluo do problema para 2h
dbms_resumable.set_timeout(7200);
-- envia o e-mail
utl_mail.send (dba@...);
END;

3.3.9 Automatizao de tarefas com o Scheduler


Embora a execuo desses e de outros recursos possam ser executados
a qualquer momento, o Oracle, atravs do pacote DBMS_SCHEDULER, pode
automatiz-los com o intuito de prevenir e capturar problemas antes que eles
causem uma falha no sistema.
O DMS_SCHEDULER traz novos recursos e funcionalidades em relao
ao anterior, o DBMS_JOB. Ele contm procedimentos de criao, remoo de
jobs (uma tarefa a ser executada, podendo ser um bloco PL/SQL, um cdigo
binrio, uma aplicao Java ou um script shell), alm de facilitar a repetio
automtica das execues de trabalhos como o CREATE_SCHEDULE e o
particionamento

desse

trabalho

em

categorias

atravs

da

procedure

CREATE_JOB_CLASS.

57

3.3.10 Gerenciamento de Transaes com o Tablespace


Undo
Como dito anteriormente o tablespace de undo utilizado para realizar
rollbacks de transaes, fornecer dados consistentes para leitura e tambm
utilizado nas operaes de flashback.

Rollback
Toda transao no Oracle pode ser revertida. Para que isso ocorra
quando uma operao de manipulao de dados submetida, os valores
antigos alterados por esta so armazenados no tablespace de undo.
Quando a transao precisa ser revertida, o Oracle utiliza os registros de
undo correspondentes no tablespace para desfazer todas as operaes contidas
pertencentes transao e, por fim, libera os blocos nas linhas afetadas.

Consistncia de Leitura
Fornecer consistncia de leitura significa dizer que um usurio que est
lendo dados de uma tabela que est sendo modificada por outro usurio, no
ver essa modificao at que o segundo confirme (COMMIT) sua transao.
Os segmentos de undo so, portanto, utilizados para reconstruir os blocos
de dados a uma verso de leitura consistente.
A execuo dessa operao pode levantar erros do tipo snapshot too old
devido ao fato de no haver mais espao para o armazenamento dos segmentos
na tabela de undo.

58

Operaes de Flashback
Algumas operaes de flashback como: flashback table - que restaura
uma tabela de acordo com um ponto do tempo no passado, flashback query que permite a visualizao de uma coluna em um perodo do passado e o
pacote DBMS_FLASHBACK utilizam dados do tablespace de undo.

Gerenciamento e monitoramento do tablespace


O processo de criao e manuteno do tablespace de undo
semelhante ao de qualquer outro tablespace. Abaixo so mostrados alguns
passos do processo de criao do tablespace utilizando a ferramenta Enterprise
Manager, nas figuras 3.10, 3.11 e 3.12.

Figura 3.10 Criao de um tablespace de undo.

59

Figura 3.11 Adicionando arquivo de dados ao tablespace de undo.

Figura 3.11- Definio da estratgia de alocao de espao no tablespace de undo.

Um banco de dados pode ter mais de um tablespace de undo, porm


apenas um pode estar ativo para a instncia em qualquer perodo de tempo.
60

Configuraes como essas algumas vezes ocorrem quando o Oracle


configurado sobre mais de um disco e com um tablespace em cada um. Porm,
esse formato no muito comum. O ideal que se tenha um nico tablespace
de undo grande o suficiente para tratar das cargas das transaes.
O monitoramento do tablespace de undo por sua vez, feito atravs de
consultas as vises de desempenho dinmico. O quadro abaixo mostra algumas
dessas vises.
Quadro 3.26 Vises utilizadas no monitoramento do tablespace de undo.

Viso

Descrio
Todos os segmentos de undo no banco de dados incluindo
DBA_UNDO_EXTENTS seus tamanhos, extenses, tablespaces em que residem.
V$UNDO_STAT

A quantidade de uso de undo para o banco de dados em


intervalos de 10 minutos.

V$ROLLSTAT

As estatsticas dos segmentos de rollback, incluindo o


tamano e status.

V$TRANSACTION

Contm uma linha para cada transao ativa para a instncia.

Existem trs tipos de dados em um tablespace de undo: ativos, expirados


e os no utilizados.
Dados ativos ou no expirados so aqueles que fornecem consistncia de
leitura. Quando todas as consultas que precisam dos dados de undo se
completam e o perodo de reteno desses dados expirou, os dados ativos se
tornam expirados. Os dados expirados por sua vez ainda podem ser utilizados
durante a execuo de outros servios do Oracle, como o flashback.
Os dados no utilizados o espao no utilizado do tablespace de undo.
Para prevenir erros, o tamanho do tablespace de undo, como dito
anteriormente, deve ser grande o suficiente para se armazenar todas as
imagens de todos os dados provenientes das transaes ativas que ainda no
foram confirmadas.

61

O tamanho correto do tablespace de undo pode ser dimensionado de


maneiras diferentes, como destacado abaixo.

Mtodo manual
O DBA pode estimar o tamanho do espao de tabela de undo utilizando a
seguinte frmula:
Quadro 3.27 Clculo para estimar o tamanho do tablespace de undo

undo_tablespace = UR * UPS + overhead

Na formula, UR, equivale em segundos reteno dos dados


(especificado no parmetro de inicializao UNDO_RETENTION), UPS o
nmero mximo e blocos de undo utilizados por segundo e o overhead um
nmero muito pequeno em relao ao total e representa os metadados de undo.

Undo Advisor
O undo advisor um recurso que automatiza a parte do ajuste do espao
para o tablespace de undo. Ele pode ser utilizado por meio da interface do EM
ou atravs dos pacotes PL/SQL de forma semelhante ao Segment Advisor
discutido na seo 3.3.6. Abaixo, nas figuras 3.12 e 3.13 ilustramos algumas
etapas do gerenciamento do undo advisor na ferramenta EM.

62

Figura 3.12 Interface principal da ferramenta Undo Advisor no Enterprise Manager

Figura 3.13 - Interface da ferramenta Undo Advisor no Enterprise Manager

63

4 Ajuste de banco de dados


Nenhum ambiente dispe de uma capacidade infinita de computao. O
que deve acontecer que os desenvolvedores, juntamente com o DBA, durante
o ciclo de vida da aplicao tentem minimizar essas limitaes fsicas das
aplicaes (tamanho da memria, tempo de resposta das consultas) e fazer com
que elas no afetem o desempenho dos negcios.
O ajuste do desempenho do SGBD , portanto, parte integrante desse
processo. No captulo anterior foram discutidas atividades relacionadas ao
planejamento e gerenciamento dos objetos do banco de dados. Neste captulo
ser abordado o ajuste de alguns tpicos, categorizados por reas, e de que
forma eles podem influenciar no desempenho das aplicaes.

4.1

Ajuste de SQL

O tempo de resposta das consultas SQL est diretamente relacionado


com a eficincia das aplicaes. Desse modo, o DBA deve estar envolvido na
reviso das consultas SQL escritas pelos desenvolvedores.
O passo mais importante para o ajuste de SQL minimizar o caminho de
pesquisa que o SGBD utiliza para realizar as consultas. A maioria das tabelas no
Oracle possui um identificador de linha, o rowId. Esse identificador possui
informaes sobre a localizao fsica da linha (arquivo, o bloco do arquivo e a
linha do bloco). Quando uma consulta executa sem selees, ou seja, sem a
clusula where, o banco realiza uma varredura completa na tabela (full table
scan), lendo cada bloco da tabela.
Quando se deseja selecionar linhas especficas, o SGBD pode utilizar
ndices que auxiliem e acelerem a recuperao dessas linhas. O que o ndice faz
mapear valores lgicos em uma tabela para os seus rowId.
O ndice tambm pode ser utilizado para se mapear vrias colunas, o
chamado ndice concatenado.
O DBA Oracle tambm deve estar preocupado com a ordenao dos
dados da tabela. fundamental que essas linhas das tabelas sejam ordenadas,

64

caso seja freqente a utilizao de consultas por intervalo (seleo de valores


em um intervalo especificado). Neste caso, a ordenao pode ter um impacto
fundamental no desempenho, uma vez que menos dados so lidos para a
resoluo da consulta.

4.1.1 Impacto do ordenamento sobre a carga de dados


Em tabelas indexadas, a ordenao das linhas da tabela pode ter um
impacto substancial (50%) sobre a melhoria de desempenho nas operaes de
insero.
Quando um ndice aumenta, o Oracle aloca novos blocos. Quando h um
ordenamento, a nova entrada do ndice adicionada ao ltimo bloco no ndice.
Caso esse bloco esteja cheio, h uma alocao de espao para um novo bloco e
o novo ndice inserido nesse bloco. H, portanto, pouco impacto sobre o
desempenho nessa operao.
O que ocorre quando a tabela est desordenada que quando h a
insero de uma nova entrada de ndice, essas novas entradas so gravadas
em blocos de ns de ndice j existentes. Se houver pouco espao nesse bloco,
as entradas desse bloco sero divididas em duas. Metade ser mantida no bloco
original e a outra metade ser gravada no novo bloco. Essa operao bastante
custosa e como conseqncia, o desempenho piora durante as cargas e as
consultas devido ao fato do ndice conter mais espao no utilizado, exigindo
que mais blocos seja lidos para o mesmo nmero de leituras de entrada.

4.1.2 Clusters
Quando duas tabelas so frequentemente consultadas ao mesmo tempo,
o uso de cluster pode ser a melhor alternativa para se melhorar o desempenho.
Os clusters armazenam linhas a partir de mltiplas tabelas nos mesmos blocos
de dados fsicos, com base na chave do cluster.
Um cluster de hash armazena uma linha em um local especfico com
base no seu valor na coluna da chave de cluster. Quando uma linha vai ser

65

inserida, o valor da sua chave utilizado para determinar em qual bloco ele deve
ser armazenado. Isso facilita a resoluo das consultas, devido ao fato da
anlise dessa chave levar ao bloco que precisa ser recuperado.
Os clusters de hash so bastante teis para se melhorar o desempenho
das consultas por equivalncia - consultas nas quais o valor de uma coluna
comparado com um valor exato.

4.1.3 Planos de explicao


J foi discutido que a chave para o ajuste de SQL minimizar o caminho
de pesquisa que o SGBD utiliza para realizar as consultas. O DBA determina
esse caminho por meio do comando EXPLAIN PLAN.
O comando EXPLAIN PLAN avalia o caminho da execuo da consulta e
coloca sua sada na tabela PLAN_TABLE. Como exemplo, pode-se observar a
consulta abaixo:
Quadro 4.1 Comando para gerao do plano de consulta

explain plan
for
select contato_id from contato
where nome like %M;

O comando, portanto, informa ao banco que ele deve explicar o seu plano
de execuo para a consulta. Opcionalmente, pode-se rotular esse plano de
explicao na tabela PLAN_TABLE atravs da clusula set statement_ID.
A tabela de plano deve estar disponvel para o usurio que deseja
executar este comando. Durante a instalao, o Oracle cria o script necessrio
para a criao da tabela o arquivo o utlxplan.sql.
A consulta tabela PLAN_TABLE deve ser realizada atravs do
procedimento DBMS_XPLAN.

66

Quadro 4.2 Seleo do plano de execuo

select * from table (DBMS_XPLAN.DISPLAY);


PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost |
----------------------------------------------------------------------------|
0 | SELECT STATEMENT
|
|
1 |
40 |
1 |
|
1 | TABLE ACCESS BY INDEX ROWID| CONTATO
|
1 |
40 |
1 |
|
2 |
INDEX RANGE SCAN
| CONTATO_INDEX |
1 |
|
1 |
-----------------------------------------------------------------------------

O plano de execuo, portanto, informa que operaes o SGBD teve de


realizar para resolver a consulta.
No plano mostrado anteriormente, pode-se observar que a cada passo
um custo atribudo. Os valores de custo devem ser analisados pelo DBA e,
assim, identificar que passo contribui com o maior custo para a consulta. Desse
modo, o DBA pode tentar contornar o problema atravs de modificaes de
SQL, alteraes no projeto do banco de dados, entre outros.
Em alguns casos, ndices so criados no SGBD e no so utilizados, o
que no ocorre no exemplo mostrado nos quadros 4.1 e 4.2. Atravs do plano
de execuo, o DBA pode ter uma idia de quais ndices esto sendo
subutilizados.

4.2

Ajuste do uso de memria

O DBA Oracle pode se fazer valer de um conjunto de ferramentas


STATSPACK, que ser discutido mais adiante, e de outras tabelas de dicionrio
de dados para identificar reas problemticas na alocao de memria do banco
de dados.
Quando a memria est corretamente dimensionada, o Oracle mantm os
dados acessados com mais freqncia na memria, isso reduz a quantidade de
leituras fsicas, maximizando, assim, o desempenho.

67

Atravs da viso V$SQL, o DBA pode observar o nmero de leituras


lgicas e fsicas para cada consulta atualmente no shared pool, bem como o
nmero de vezes que cada consulta foi executada.
O script a seguir mostra um exemplo de consulta viso V$SQL que
exibe as consultas no shared pool que mais utilizam E/S.
Quadro 4.3 Consultas no shared pool que mais utilizam E/S

select buffer_gets, disk_reads, executions,


buffer_gets/executions b_e,
SQL_text
from V$SQL
order by disk_reads desc;

A SGA, como estudada anteriormente, composta por subreas, dentre


as quais se destaca o cache de buffer e a shared pool.
O cache de buffer, por sua vez, tambm subdividido em mltiplas reas:
DEFAULT cache
rea da memria destinada para os objetos que utilizam o
tamanho padro de bloco do SGBD;
KEEP cache
rea da memria destinada aos objetos que devem sem
mantidos em memria todas as vezes;
RECYCLE cache
rea dedicada a objetos que devem ser removidos da memria
rapidamente;
BLOCK-SIZE-SPECIFIC caches
Para cada tamanho no padro de bloco do SGBD, deve haver
um cache para armazenar objetos.
Por padro, a tabela utiliza o pool DEFAULT, mas o DBA pode especificar
um pool para a tabela diferente do padro atravs do parmetro buffer_pool
dentro da clusula storage da tabela.
No Oracle 10g, o DBA pode utilizar o Automatic Shared Memory
Management (ASMM) [ASMM]. A ativao desse recurso feita atravs da
68

especificao de um valor diferente de zero para o parmetro de inicializao


SGA_TARGET

(todos

os

caches

adicionados).

Os

outros

parmetros

relacionados ao cache como DBA_CACHE_SIZE, SHARED_POOL_SIZE e


LARGE_POOL_SIZE serviro apenas como os limites mais baixos para o
algoritmo de ajuste automtico de memria.
O monitoramento do tamanho dos caches pode ser feito atravs da viso
V$SGASTAT.

4.2.1 Ajustando o tamanho da SGA


O ajuste da SGA pode ser automtico, conforme discutido anteriormente,
ou manual.
Para a configurao manual, o DBA deve configurar o parmetro
SGA_MAX_SIZE, que define o tamanho da SGA.
Na configurao manual, o DBA pode configurar os tamanhos para os
caches individualmente. Essa configurao pode ser realizada dinamicamente
por meio do comando alter system. No quadro 4.4 so listados os parmetros
que podem ser especificados pelo DBA.
Quadro 4.4 Parmetros de memria

Parmetro

Descrio

SGA_MAX_SIZE

O tamanho mximo da SGA

SHARED_POOL_SIZE

O tamanho do pool compartilhado

DB_BLOCK_SIZE

Esse ser o tamanho padro de bloco do banco de dados

DB_CACHE_SIZE

O tamanho do cache especificado em bytes

DB_nK_BLOCK_SIZE

Se utilizar mltiplos tamanhos de bloco do banco de dados dentro de um


nico banco de dados, deve-se especificar um valor do parmetro
DB_CACHE_SIZE e pelo menos um valor de DB_nK_BLOCK_SIZE. Por
exemplo, se o tamanho padro de bloco do banco de dados for 4K, podese especificar um cache para os espaos de tabela com tamanho de
bloco 8K por meio do parmetro DB_8K_BLOCK_SIZE

69

Quando as reas da SGA so corretamente dimensionadas, o


desempenho das consultas e do SGBD como um todo pode ser dramaticamente
melhorado.
A shared pool deve ser suficientemente grande o suficiente para
armazenar as consultas mais frequentemente solicitadas.
O DBA pode fazer consultas viso V$SHARED_POOL_ADVICE para
ter uma idia de qual seria o tamanho ideal da shared_pool. O script abaixo
exemplifica uma possvel consulta a essa viso.
Quadro 4.5 Estimando o tamanho do shared pool
set lines
set pages
column
column
column
column
column
column
column

100
999
c1
c2
c3
c4
c5
c6
c7

heading
heading
heading
heading
heading
heading
heading

'Pool |Size(M)'
'Size|Factor'
'Est|LC(M) '
'Est LC|Mem. Obj.'
'Est|Time|Saved|(sec)'
'Est|Parse|Saved|Factor'
'Est|Object Hits'
format 999,999,999

SELECT
shared_pool_size_for_estimate
shared_pool_size_factor
estd_lc_size
estd_lc_memory_objects
estd_lc_time_saved
estd_lc_time_saved_factor
estd_lc_memory_object_hits
FROM
v$shared_pool_advice;

Pool
Size
Size(M)
Factor
---------- ---------48
.5
64
.6667
80
.8333
96
1
112
1.1667
128
1.3333
144
1.5
160
1.6667
176
1.8333
192
2

c1,
c2,
c3,
c4,
c5,
c6,
c7

Est
Est LC
Saved
Saved
Est
LC(M)
Mem. Obj.
(sec)
Factor Object Hits
---------- ---------- ---------- ---------- ----------48
63
78
93
100
100
100
100
100
100

20839
28140
35447
43028
46755
46755
46755
46755
46755
46755

1459645
1459645
1459645
1459645
1459646
1459646
1459646
1459646
1459646
1459646

1
1
1
1
1
1
1
1
1
1

135,756,032
135,756,101
135,756,149
135,756,253
135,756,842
135,756,842
135,756,842
135,756,842
135,756,842
135,756,842

Figura 4.1 Estimativa dos valores da shared pool

70

Os resultados na figura 4.1 mostram uma variao no tamanho da


shared_pool e algumas estatsticas que do ao DBA uma boa noo do
tamanho ideal do pool.

4.3

Ajuste do acesso a dados


4.3.1 Identificando linhas encadeadas

Para cada bloco de dados, o Oracle reserva dentro do bloco um espao


livre especificado pelo parmetro pctfree. Esse espao utilizado quando o
comprimento das linhas j armazenadas no bloco estendido via o comando
update.
Quando esse espao insuficiente, ou a linha desse bloco movida para
outro bloco ou essa linha encadeada para um novo bloco de dados.
O encadeamento est diretamente ligado ao desempenho, uma vez que o
Oracle precisa realizar um nmero maior de leituras fsicas para retornar os
dados pertencentes a uma mesma linha lgica.
O encadeamento pode ser evitado atravs da configurao correta do
parmetro pctfree.
O Oracle tem por padro o valor 10 para esse parmetro. O DBA deve
ento, durante a criao dos segmentos, aumentar esse valor, principalmente se
a aplicao frequentemente atualizar valores nulos para valores no nulos.
O DBA pode utilizar o comando analyse para coletar informaes sobre
os objetos no banco. O comando analyse tem uma opo que informa as linhas
encadeadas em uma tabela.
Quadro 4.6 Linhas encadeadas em uma tabela

analyse
CHAINED_ROWS;

table

nome_da_tabela

list

chained

rows

into

71

Para que esse comando seja realizado com sucesso, a tabela


CHAINED_ROWS deve existir no esquema do usurio. O Oracle, durante a
instalao, cria alguns scripts. O script para a criao dessa tabela est no
arquivo utlchain.sql.
Um consulta a essa tabela mostrar as linhas da tabela que esto
encadeadas. Caso esse nmero seja alto, fundamental que a tabela seja
reconstruda com um valor mais alto para o pctfree.

4.3.2

Tabelas organizadas por ndice

Nas tabelas organizadas por ndice (Index-organized tables - IOT), a linha


inteira da tabela armazenada no ndice, ao contrrio de valores chave
especificados para uma linha, como acontece na criao de um ndice normal.
IOT so na verdade ndices.
Nas IOT, as linhas so armazenadas e classificadas pelos valores da
chave primria e, ao contrrio do que ocorre com a combinao tabela/ndice em
que um acesso baseado no ndice requer um acesso de tabela, nas IOT
somente ela acessada.
As IOT oferecem recursos adicionais que servem de suporte para a
maximizao do desempenho:
Overflow area o DBA pode configurar para que os dados da chave
primria sejam armazenados separadamente dos da linha. Se os
dados das linhas excederem o espao disponvel, eles sero movidos
dinamicamente para uma rea de estouro (overflow). O ideal que
essa rea de estouro esteja em um espao de tabela separado, o que
ajuda a distribuir a E/S associada com a tabela;
Secondary indexes O DBA pode criar ndices secundrios nas IOT.
Nesse caso, o Oracle utilizar os valores da chave primria como
rowId lgicos para as linhas; e

72

Reduced storage requirements Na relao tabela/ndice, os valores


da chave so armazenados em dois lugares. Nas IOT isso no
acontece, reduzindo os requisitos de armazenamento.
Para a criao de uma IOT deve-se utilizar a clusula organization index
durante a criao da tabela.
A IOT, da mesma forma que ocorre com ndices, pode se tornar
fragmentada. Em geral, recomendado pela Oracle que se evite a utilizao de
IOT se os dados forem mais longos que 75% do tamanho do bloco. Quanto
maior o comprimento das linhas e quanto mais transaes so realizadas em um
IOT, mais freqentemente ela precisar ser reconstruda. Para reconstruir uma
IOT deve ser utilizada a clusula move do comando ALTER TABLE.
Quadro 4.7 Reconstruo de uma IOT

alter table EMPREGADO_IOT


move tablespace DATA
overflow tablespace DATA_OVERFLOW

4.4

Ajuste do armazenamento fsico

A E/S deve ser balanceada pelo maior nmero de dispositivos possvel.


Por padro, o DBA deve seguir a soluo SAME Stripe and mirror everything
[SAME]. Os limites de throughput de E/S so os limites-chave a serem vencidos.
Assim, distribuir E/S por vrios discos permite tirar proveito dos throughputs
combinados dos vrios discos.

73

5 Oracle Grid
A idia central da computao em grade (grid computing) pensar a
computao como uma utilidade, em outras palavras, para um usurio,
consumidor de dados de uma aplicao, no deve interessar onde esses dados
esto ou de que forma eles so recuperados ou processados, o que importa
realmente que ele possa requisit-los quantas vezes for necessrio.
Do ponto de vista computacional, o conceito de grid envolve alocao de
recursos, compartilhamento de informaes e alta disponibilidade. A alocao
de recursos se refere disponibilidade de recursos. Ela garante, por exemplo,
que todas as requisies dos usurios esto conseguindo obter recursos
necessrios para o processamento. O conceito de compartilhamento de
informaes est relacionado com a distribuio da informao. Este
compartilhamento garante que as informaes que os usurios precisam estaro
disponveis quando e onde for preciso. Por fim, a alta disponibilidade garante
que todo esse poder computacional est sempre disponvel para requisies.
O Oracle 10g oferece um conjunto de ferramentas que do suporte a grid
computing. So elas: Oracle Application Server 10g OAS [OAS], Oracle
Database 10g, Oracle Collaboration Sute 10g [OCS] e o Oracle Enterprise
Manager.
A infra-estrutura que d suporte a grid computing construda baseada
em dois conceitos:
Implementao de um a partir de muitos Construo de uma
entidade lgica a partir de um cluster de mquinas. O objetivo dessa
arquitetura a distribuio do trabalho entre as mquinas do cluster,
proporcionando ao grid uma maior disponibilidade, escalabilidade e
desempenho. Nesse contexto fazem parte as ferramentas Oracle
Application Server 10g e o Oracle Database 10g.

74

Administrar muitos como um A administrao do grid realizada


atravs de uma entidade lgica. A administrao do grid no Oracle
realizada atravs da ferramenta Oracle Enterprise Manager 10g Grid
Control.
Apesar deste captulo tratar da arquitetura do grid Oracle e das
ferramentas que do suporte ao grid no Oracle 10g, o texto focar o Oracle
Database 10g. Ser discutido principalmente como SGBD Oracle 10g d suporte
arquitetura grid.

5.1 Oracle Application Server 10g


O Oracle Application Server 10g (OAS) ferramenta desenvolvida pela
Oracle para a execuo de aplicaes no ambiente grid.
O OAS consiste de quatro componentes principais: Oracle Container para
J2EE (OC4J) [OC4J], plataforma para o desenvolvimento e publicao de
aplicaes corporativas escritas em Java; Oracle JDeveloper [OJD], um
ambiente de desenvolvimento de aplicaes Java integrado; Oracle Application
Development Framework (ADF) [OADF], framework embutido no JDeveloper
baseado no design pattern Model-View-Controller; e o Oracle TopLink [OTL] que
prov uma camada de persistncia que simplifica a forma como as aplicaes
J2EE acessam dados atravs de mapeamento objeto-relacional.
O Application Server possui algumas caractersticas que merecem
destaque em relao execuo de aplicaes em ambientes grid.
Software Provisioning
Em um ambiente de computao em grid tpico existe uma
quantidade ilimitada de servidores. A instalao e a manuteno
manual de

softwares

nesses

servidores

uma

atividade

praticamente invivel. O Application Server fornece meios de se


automatizar esse processo.

75

User Provisioning
O Application Server oferece uma ferramenta de gerenciamento
de usurios (Security Management Console), utilizada na criao
de usurios, papis e privilgios, e de certificados (Certification
Authority), utilizada para certificar usurios. O controle dos
usurios nas aplicaes realizado atravs de um login nico
(Single Sign On).
Gerenciamento da carga de trabalho
O Application Server possui o Workload Management vem
integrado ao e isso possibilita ao DBA o gerenciamento da carga
de trabalho fornecendo uma maior escalabilidade e disponibilidade.

5.2 Oracle Database 10g


O SGBD Oracle 10g d suporte a arquitetura grid de diversas maneiras:
Real Application Clusters (RAC)
Um SGBD RAC altamente escalonvel e disponvel. O RAC
distribui carga de trabalho do SGBD entre as mltiplas instncias
do grid. Desse modo, uma falha em um dos ns do cluster no
afeta as sesses dos clientes. O que acontece durante a falha de
um dos ns apenas um aumento do tempo de resposta para as
transaes dos clientes.
Uma instncia RAC , de vrias formas, diferente de uma
instncia standalone. Essas diferenas se refletem em alguns
parmetros de inicializao especficos em instncias RAC e em
vises de dicionrios.
O arquivo de parmtro do servidor (SPFILE), em um ambiente
RAC, compartilhado entre as mltiplas instncias. Dentro do
SPFILE o DBA pode atribuir valores diferentes para cada instncia.

76

Por exemplo, se um parmetro de inicializao for o mesmo para


todas as instncias do cluster, ele deve ser prefixado como *.
Caso contrrio, o parmetro deve ser prefixado com o nome do n.
No exemplo do quadro 5.1 ilustrada a modificao do
tamanho do shared pool para uma instncia especfica:
Quadro 5.1- Modificao to tamanho do shared pool em um ambiente RAC

SQL> select sid, name, value


2
from v$spparamter where name = shared_pool_size;
SID
------*

NAME
---------------shared_pool_size

VALUE
----------65614720

SQL> alter system set shared_pool_size = 48M


2
scope=spfile sid=rac2;

SQL> select sid, name, value


2
from v$spparamter where name = shared_pool_size;
SID
NAME
VALUE
------- ---------------- ----------*
shared_pool_size
65614720
rac2 shared_pool_size 50331648

Alguns parmetros de inicializao so utilizados apenas em


um ambiente RAC. Mesmo que esses parmetros existam em
qualquer instncia, em um ambiente que no seja RAC, eles so
nulos.
No quadro 5.2 so mostrados os parmetros de inicializao
relacionados ao RAC.

77

Quadro 5.2 Parmetros de inicializao do RAC


Parmetro de Inicializao

Descrio

INSTANCE_NUMBER

Nmero nico identificando a instncia do cluster.

INSTANCE_NAME

Nome nico dessa instncia desntro do cluster, em geral, o nome do


cluster com um sufixo numrico

CLUSTER_DATABASE

TRUE se a instncia estiver participando de um ambiente RAC

CLUSTER_DATABASE_INSTANCES

Nmero de instncias configurado para esse cluster

ACTIVE_INSTANCE_COUNT

Especifica a instncia primria em um cluster de dois ns, do contrrio,


o nmero de instncias do cluster

MAX_COMMIT_PROPAGATION_DELAY

Controla a velocidade com que as transaes confirmadas so


propagadas para outros ns

Em um ambiente de uma nica instncia, todas as vises de


desempenho dinmico que iniciam com V$ tm uma viso
correspondente que inicia com GV$, com a coluna adicional
INST_ID sempre configurada como 1. J em um ambiente RAC, o
nmero de linhas da tabela multiplicado de acordo como o
nmero de instncias do cluster.
ASM
O ASM, como exposto em tpicos anteriores, possibilita um
fcil gerenciamento e balanceamento da carga de E/S.

5.3 Oracle Enterprise Manager Grid Control


O Oracle Enterprise Manager Grid Control [OEMGC] prov um framework
completo para administrao e monitoramento do grid.
O Grid Control fornece ao DBA, por meio de uma interface web uma viso
de todo o grid, incluindo seu status e alertas de pontos problemticos da
estrutura, por exemplo.

78

Ele consiste de trs componentes principais:


Oracle Management Repository (OMR)
Um ou mais Oracle Management Service (OMS)
Um ou mais Oracle Management Agent (OMA)
Esse componentes so ilustrados na figura 5.1

Figura 5.1 Componentes do Grid Control. Fonte: [OEMSG05]

5.3.1 Oracle Management Agent - OMA


o responsvel pelo gerenciamento e comunicao entre o Grid Control
e todos os alvos gerenciados (managed targets).
Alvos gerenciados so as entidades controladas pelo Grid. Os alvos
podem ser adicionados ou removidos do Grid Control conforme o necessrio.
So exemplos de alvos:
Oracle Databases;
Oracle Database Listeners;
Oracle Application Servers;
Oracle Applications; e
Oracle Collaboration Sute.
79

O OMA ilustrado na figura 5.2.

Figura 5.2 Oracle Management Agent. Fonte: [OEMSG05]

Os alvos mais comuns so predefinidos como parte nativa do produto.


Porm outros alvos podem ser personalizados para o controle atravs de uma
API aberta fornecida pelo Grid Control.
Existe um OMA instalado em cada servidor e ele responsvel pelo
gerenciamento de todos os seus alvos. O OMA executa tarefas como: a coleta
de informaes sobre a disponibilidade, configurao e performance do alvo.
Essas informaes so comunicadas ao OMS atravs do protocolo http.

5.3.2 Oracle Management Service - OMS


O OMS uma aplicao web, escrita em Java (J2EE), que roda sobre o
Oracle Application Server para o controle do grid.
O OMS constitudo de trs componentes principais:
Oracle HTTP Server (OHS) [OHS];
Oracle Application Server Container para J2EE (OC4J); e
OracleAS Web Cache [OASWC].
Um esquema que representa o OAS apresentado na figura 5.3.

80

Figura 5.3 Oracle Management Service. Fonte: [OEMSG05]

Pela figura, pode-ser perceber que o DBA se conecta ao Grid Control


atravs do OHA e do OracleAS Web Cache.
O OMS periodicamente armazena informaes recebidas pelos agentes
no OMR.

5.3.3 Oracle Management Repository - OMR


O OMR reside no SGBD Oracle. O repositrio constitudo de
aproximadamente 4.000 objetos que so armazenados em dois tablespaces
pertencentes ao esquema SYSMAN.
Esses objetos contm informaes sobre os administradores do Grid
Control, alvos e aplicaes gerenciadas por ele.

5.4 Grid Control Console


Nas figuras 5.3, 5.4, 5.5, 5.6 e 5.7 so ilustradas algumas telas do Grid
Control.

81

Figura 5.3 - Grid Control Console: Home

A tela inicial do Grid Control apresenta ao DBA sub-abas para o controle


do grid como alvos, distribuies, alertas e jobs.
Atravs de um grfico pizza o Grid Control ilustra a disponibilidade dos
alvos gerenciados.

Figura 5.4 - Grid Control Console: Targets

82

A aba alvos mostra todos os alvos monitorados pelo Grid Control. A partir
dessa tela o DBA pode tomar aes sobre cada alvo especfico.

Figura 5.5 - Grid Control Console: Deployments

Em grandes grids, a configurao uma tarefa que consome muito tempo


do DBA. O Grid Control facilita um pouco a configurao atravs da sesso
deployments do Grid Control.
Nesta sesso o DBA pode controlar as configuraes dos servidores,
aplicar patches s aplicaes, clonar banco de dados, entre outros.

83

Figura 5.6 - Grid Control Console: Alerts

Pela pgina de alertas, o DBA rapidamente informado sobre pendncias


no grid. Selecionando-se qualquer um alerta, o Grid Control leva o DBA para
uma pgina de mtricas e que mtricas levaram a criao do alerta.
Ao selecionar o alvo, o link leva o DBA diretamente para a pgina de
monitoramento do alvo.

Figura 5.7 - Grid Control Console: Jobs

84

Jobs automatizam tarefas como backups de bancos, de estatsticas, etc.


A pgina Jobs do Grid Control um meio do DBA criar, remover ou editar jobs
para o grid.

Figura 5.8 - Grid Control Console: Management System

A tela Managed System d ao DBA uma viso da performance o status


de toda a infra-estrutura grid, incluindo o management agents, management
services, e o management repository.

85

6 Concluso
Este trabalho realizou um estudo sobre os principais tpicos relacionados
a administrao do SGBD Oracle Database 10g. Inicialmente foram discutidos
os principais conceitos relacionados arquitetura Oracle, que serviu de base
terica durante o restante do trabalho.
Foram vistas tcnicas de armazenamento e de monitoramento do uso de
espao que impactam diretamente na estabilidade e desempenho do SGBD.
Para exemplificar tarefas relacionadas ao gerenciamento do SGBD foi utilizada a
ferramenta de gerenciamento Enterprise Manager. Foram discutidas tambm
algumas das principais solues de ajuste do Oracle 10g de modo a maximizar a
performance do mesmo.
Por fim, foi estudado o Oracle Grid, sua arquitetura e ferramentas de
gerenciamento. Foram vistos tpicos como Real Application Clusters, estratgia
que assegura a alta disponibilidade e eficincia do sistema.
Como trabalho futuro, a sugesto a realizao de testes de performance
de modo demonstrar o ganho de desempenho com as tcnicas apresentadas
nesse trabalho e tambm

um estudo semelhante sobre a administrao do

Oracle Grid.

86

7 Referncias
[ASMM] Automatic Shared Memory Management. Endereo:
http://www.oracle.com/technology/obe/obe10gdb/manage/memmgmt/memmgmt.
htm
[BTREE] B*Tree. Endereo:
http://www.orafaq.com/glossary/faqglosb.htm
[DAWES05] DAWES, Chip. BRYLA, Bob. OCA: Oracle 10g Administration Study
Guide, 2005.
[GARTNER] Gartner Dataquest. Endereo:
http://www.gartner.com/it/products/research/dataquest.jsp
[GPO] Grupo de Profissionais Oracle. Endereo:
http://www.profissionaloracle.com.br/
[LONEY05] LONEY, Kevin. Oracle 10g. O manual do DBA, 2005.
[OADF] Oracle Application Development Framework. Endereo:
http://www.oracle.com/technology/products/adf/index.html
[OAS] Oracle Application Server. Endereo:
http://www.oracle.com/appserver/index.html
[OASWC] Oracle Application Server Web Cache 10g. Endereo:
http://www.oracle.com/technology/products/ias/web_cache/index.html
[OCS] Oracle Collaboration Suite. Endereo:
http://download-east.oracle.com/docs/cd/B19306_01/em.102/b16241/
Collaboration_Suite_Management.htm
[OC4J] Oracle Application Server Containers for J2EE (OC4J). Endereo:
http://download-east.oracle.com/docs/cd/B10467_16/tour/j2ee_oc4j.htm
[OEMDBC] Oracle Enterprise Manager Database Control Endereo:
http://www.oracle.com/enterprise_manager/index.html
[OEMGC] Oracle Enterprise Manager 10g Grid Control. Endereo:
http://www.oracle.com/technology/products/oem/index.html
[OEMSG] Oracle Enterprise Manager 10g Grid Control. Student Guide, 2005.

87

[OHS] Oracle HTTP Server. Endereo:


http://downloadeast.oracle.com/docs/cd/B14117_01/server.101/b12255/overview.htm
[OJD] Oracle JDeveloper. Endereo:
http://www.oracle.com/tools/jdev_home.html
[OPS] Oracle Parallel Server. Endereo:
http://download-east.oracle.com/docs/cd/A87860_01/doc/paraserv.817/a76968/psintro.htm

[ORCL] Oracle. Endereo:


http://www.oracle.com
[ORCLAW] Oracle Database 10g: Administration Workshop, 2005.
[ORCLCONCEPTS] Oracle Database Concepts, 10g Relase 1.
[ORCL10G] Oracle Database 10g. Endereo:
http://www.oracle.com/technology/products/database/oracle10g/index.html
[ORCL2D] Oracle Database 2 Day DBA Course.
[OSECURITY] Oracle Advanced Security. Endereo:
http://www.oracle.com/technology/deploy/security/aso/index.html
[OTL] Oracle TopLink. Endereo:
http://www.oracle.com/tools/toplink_adf.html
[SAME] SAME. Endereo:
http://searchstorage.techtarget.com/tip/1,289483,sid5_gci929549,00.html
[SQL] SQL. Endereo:
http://www.w3schools.com/sql/default.asp
[TAURION04] TAURION, Cezar. Grid Computing. Um novo paradigma
computacional, 20004.

88

Вам также может понравиться