Pedro F. Carvalho Analista de Sistemas contato@pedrofcarvalho

Propaganda
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
ESTRUTURAS DE ARMAZENAMENTO
Instance
Na instância são executados processos e espaços em memória, estes permitem ao
Oracle cumprir com seu papel de manter a integridade, confidencialidade e
disponibilidade
dos
dados
armazenados.
A instância fica alocada na memória compartilhada (shared memory) e é a combinação
do System Global Area (SGA) com os processos background Oracle.
Por ser fundamental no funcionamento do banco de dados (BD), a arquitetura e a
descrição dos caches e processos da instância serão tratados em posts posteriores, por
enquanto fiquemos com a visão geral que a instância é usada para gerência e acesso
ao
banco
de
dados.
Database
Segundo Loney e Bryla, “database é uma coleção de dados em disco em um ou mais
arquivos em servidor de banco de dados que coleta e mantém informações
relacionadas”.
Para um banco de dados (database) ser usado ele precisa ser montado, ou seja,
associado a uma instância. Antes disso, os dados estão inacessíveis a qualquer usuário
ou
aplicação.
Separar a instância do banco é apenas uma forma didática de explicar, pois, na
prática, esta separação não ocorre. No entanto, pode acontecer de haver múltiplas
instâncias rodando na mesma máquina, cada uma associada ao seu banco de dados
físico.
Nota do autor: costuma existir uma confusão entre banco de dados (database) e o
servidor de BD. Pode-se dizer que o servidor de BD é a associação do banco de dados
com a instância.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Schema
Representa a coleção de vários objetos de um usuário de banco de dados como, por
exemplo, tabelas, índices, seqüências, sinônimos etc. São associados a um banco de
dados
na
razão
de
vários
esquemas
para
um
BD.
Tablespace
e
Datafile
Um banco de dados é armazenado logicamente em uma ou mais tablespaces que, por
sua vez, é armazenada fisicamente no disco em um ou mais arquivos para cada
tablespace.
Segment
Os objetos do Banco (tabelas, índices, etc) são armazenados como segmentos.
Existem
diferentes
tipos
de
segmentos,
como:
- Data segments (segmento de dados): armazena os dados das tabelas não
clusterizadas. Para tabelas particionadas, cada partição tem seu segmento de dados.
-
Index
segments:
segmentos
de
índices.
Vale
a
regra
da
partição.
- Undo segments (de undo): a informação deste segmento é usado para gerar a leitura
consistente e, durante o recovery, o rollback de informações não “comitadas”.
- Temporary segments (temporários): usadas quando um comando SQL precisa de
uma
área
temporária
para
completar
a
execução.
A
relação
é
de
um
ou
mais
segmentos
para
um
tablespace.
Extent
Cada segmento contém um ou mais extents, que são grupos de blocos de dados
contíguos
(ou
adjacentes).
Por exemplo, quando se cria uma tabela, o BD aloca um número inicial de extents para
o segmento, quando estes extents enchem, o BD automaticamente aloca um número
incremental de extents. (Estes valores são configuráveis pela clausula STORAGE do
comando CREATE TABLE ou ALTER TABLE ou podem ser otimamente dimensionados
pelo
Oracle).
É
DB
importante
notar
que
Block
cada
extent
e
só
pode
estar
OS
em
um
data
file.
Block
Blocos de banco de dados é o menor nível de granularidade e é onde as informações
são
armazenadas.
O DB Bloco é um múltiplo do OS Block (bloco do sistema operacional) e o tamanho é
definido por uma variável (DB_BLOCK_SIZE) no momento da criação do tablespace.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
• Tablespace SYSTEM:
O tablespace SYSTEM é considerado um tablespace permanente, além disso,
todos os segmentos que precisam ser mantidos por um usuário ou uma
aplicação além dos limites de uma sessão ou transação devem ser
armazenados em um tablespace permanente.
Os segmentos de um usuário nunca devem residir neste tablespace. A partir
do Oracle 10g, é possível especificar um tablespace permanente padrão além
do recurso de especificar um temporário padrão no Oracle 9i. Também a partir
do Oracle 10g, o este tablespace é gerenciado localmente por padrão, ou seja,
toda a utilização de espaço é gerenciada por um *segmento de bitmap na
primeira parte do primeiro arquivo de dados do tablespace. Usar tablespace
gerenciados localmente remove parte da disputa ou concorrência que pode ser
gerada neste tablespace porque operações de alocação e desalocação de
espaço não precisam usar tabelas de dicionário de dados.
Para verificar se o tablespace SYSTEM é gerenciado localmente ou não, entre
com a seguinte consulta e verifique a coluna EXTENT_MANAGEMENT:
<!--[if
!supportLineBreakNewLine]--
>
<!--[endif]-->
O tablespace SYSTEM é responsável por armazenar o dicionário de dados e
seus respectivos objetos (metadados). Quantos mais objetos forem criados
nos bancos de dados de uma instância Oracle, maior será este tablespace.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
• Tablespace SYSAUX:
Como o tablespace anterior, o SYSTEM, este não deve ter segmentos de
usuários. O conteúdo deste tablespace são membros de processos realmente
auxiliares, por isso, caso haja algum processo que esteja ocupando muito
espaço neste tablespace, interessante pensar em trocá-lo de lugar. O
monitoramento poderá ser realizado através do EM Database Control.
Este tablespace auxiliar não existe nas versões anteriores ao Oracle 10g e foi
criado especialmente para aliviar o tablespace SYSTEM de segmentos
associados a algumas aplicações do próprio banco de dados como o Oracle
ultra search, Oracle Text e até mesmo segmentos relacionados ao
funcionamento do Oracle Enterprise Manager entre outros.
Como resultado da criação do tablespace SYSAUX, alguns dos gargalos de I/O
freqüentemente associados ao tablespace SYSTEM foram reduzidos ou
eliminados. Vale salientar, que o este tablespace não pode se colocado em
modo offline e é parte integrante obrigatória em todos os bancos de dados a
partir do Oracle 10g. Existe uma visão no dicionário de dados que exibe os
dados relacionados com os ocupantes atuais neste tablespace:
• Tablespace temporários:
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Segundo Rodrigo Almeida, uma das atuais autoridades em Oracle, a
tablespace temporária, ou como nós conhecemos por TEMP, é utilizada para
armazenar informações de ordenação (SORT) ou para armazenar dados de
tabelas temporárias (CREATE TEMPORARY TABLE). A principio, a Tablespace
Temporária tem seu lugar físico reservado no servidor, determinado pelo DBA,
porém, sua principal função no banco de dados é auxiliar a memória do Oracle
(SGA), em seu principal componente, o SORT_AREA_SIZE.
É possível ter mais de um tablespace temporário ativo e online no banco de
dados, mas até o Oracle 10g, várias sessões do mesmo usuário usariam o
mesmo tablespace temporário, pois, apenas um tablespace temporário padrão
poderia ser atribuído a um usuário. Para resolver esse possível problema de
gargalo, podemos na versão 11g, utilizar grupos de tablespace temporários.
Um grupo de tablespaces temporários deve consistir em ao menos um
tablespace temporário e ele não pode ser vazio. Uma vez que um grupo de
tablespaces temporários não tenha membros, ou seja, não tenha nenhum
tablespace, ele deixará de existir.
Ao invés de se atribuir a um usuário apenas um tablespace, podemos atribuir
um grupo deles. Interessante observar que um grupo com três tablespaces
poderá ceder espaço para organização dos dados de uma consulta A (esta que
poderá utilizar ORDER BY, GROUP BY, DISTINCT, UNION, INTERSECT e/ou
MINUS) e os outros tablespaces continuarão disponíveis para realizar o mesmo
trabalho, de forma paralela, para outras consultas deste mesmo usuário.
A criação de um grupo de tablespaces temporários é muito simples. Após
criarmos os tablespaces, aqui neste exemplo chamaremos de TMP_1, TMP_2 e
TMP_3, alteramos os mesmo para adicionar ao grupo TMP_GROUP:
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Neste momento, o grupo de tablespaces temporários, chamado de
TMP_GROUP contém três membros. Para eliminar um grupo de tablespaces,
primeiramente teremos que eliminar os seus membros; a eliminação dos
membros de um grupo de tablespaces poderá ser realizada atribuindo uma
string vazia ao seu grupo:
Como um grupo de tablespaces temporários somente existirá se tiver pelo
menos um tablespace, neste momento ele já não mais existe. Para checarmos
os grupos de tablespaces temporários que existem em servidor de bancos de
dados Oracle:
• Tablespace de UNDO:
Esse tablespace que contém seus segmentos de reconstrução em versões
anteriores ao Oracle 9i chamado de RBS (tablespace de rollback), possui a
capacidade de recuperar transações incompletas ou abortadas. Um segmento
de undo é usado para salvar o valor antigo qparcialuando um processo altera
dados de um banco de dados. Ele armazena a localização dos dados e também
os dados da forma como se encontravam antes da modificação.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Embora um banco de dados possa ter mais de um tablespace de UNDO,
apenas um poderá estar ativo em um dado momento. Caso este necessite de
mais espaço a AUTOEXTEND não estiver ativado, um novo arquivo de dados
poderá ser adicionado.
• Tablespace BIGFILE:
Um tablespace BIGFILE facilita a administração do banco de dados porque
consiste em apenas um arquivo de dados. Um único arquivo deste tipo de
tablespace poderá chegar até 128TB de tamanho se o tamanho de bloco do
tablespace for 32K.
Tablespaces gerenciados localmente
As extensões são gerenciadas no tablespace através de bitmaps. Cada bit no
bitmap corresponde a um bloco ou um grupo de blocos. Quando uma extensão é
alocada ou liberada para reutilização, as alterações do servidor Oracle valores do
bitmap para mostrar o novo estatuto dos blocos.
Tablespace gerenciadas pelo Dicionário
As extensões são gerenciadas pelo dicionário de dados. O servidor atualiza as
tabelas do Oracle adequada no dicionário de dados sempre que uma extensão é
alocada ou não alocado. Isto é para compatibilidade com versões anteriores, é
recomendável que você use tablespaces gerenciados localmente.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Status de uma Tablespace
Offline: Você pode fazer um Habbo tabela de modo que esta parte do banco de dados
está temporariamente indisponível para uso geral. O resto do banco de dados é aberta
e disponível para os usuários acessarem dados. Quando você colocá-lo offline, você
pode usar as seguintes opções:
Normal: A tablespace pode ser tirado do ar, normalmente, se não existem condições
de erro para qualquer um dos arquivos de dados do tablespace. Banco de Dados
Oracle garante que todos os dados são gravados no disco, tendo um posto de controle
para todos os arquivos de dados do tablespace como leva-los offline.
Temporária: A tablespace pode ser tirado do ar temporariamente, mesmo se não
houver condições de erro para um ou mais arquivos do tablespace. Oracle Database
tem os arquivos de dados (que ainda não estão offline) offline, realizando
checkpointing sobre eles como se faz isso. Se não houver arquivos off-line, mas você
usa a cláusula temporária, a recuperação de mídia não é obrigada a trazer a tabela online. No entanto, se um ou mais arquivos do tablespace estiver offline por causa de
erros de gravação, e você toma o tablespace offline temporariamente, o tablespace
requer
recuperação
antes
que
você
pode
trazer
de
volta
online.
Imediata: Uma tablespace pode ser tirado do ar imediatamente, sem banco de dados
Oracle, tendo um posto de controle em qualquer um dos arquivos de dados. Quando
você especificar imediato, os meios de recuperação para as tablespace é necessária
antes que a tabela pode ser colocado online. Você não pode tomar uma tablespace
offline imediatamente se o banco de dados está sendo executado no modo no archive.
Você não pode tomar uma tablespace offline imediatamente se o banco de dados está
sendo
executado
no
modo
NOARCHIVELOG.
Para recuperar: A configuração PARA RECUPERAR foi substituído. A sintaxe é
suportado para compatibilidade com versões anteriores
Oracle Managed Files (OMF)
Gere directamente criação de arquivos e exclusão ao nível do sistema
operacional. As operações são especificadas em termos de objetos de banco de dados
ao invés de nomes. Oracle internamente usa sistema de arquivos padrão de interfaces
para criar e excluir arquivos conforme necessário para as estruturas de banco de
dados, tais como tablespaces, arquivos de log redo on-line e arquivos de controle.
Os administradores precisam especificar o diretório de sistema do arquivo a ser
utilizado para um determinado tipo de arquivo. Depois disso, a Oracle consegue criar
arquivos originais quando necessário e também elimina os arquivos que não são
necessários. As vantagens incluem:
* Não há necessidade de se preocupar com os nomes de arquivo e armazenamento.
A Oracle fornece um nome de arquivo exclusivo.
* Elimina a necessidade para o DBA para gerenciar diretamente os arquivos do
sistema operacional.
* Permite operações a serem especificadas em termos de objetos e não os arquivos.
* Reduz a possibilidade de substituição de um arquivo. Evita a corrupção acidental de
arquivos de dados.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
* Reduz o desperdício de espaço em disco consumido pelos arquivos obsoletos.
Quando uma tabela for interrompida, os arquivos relevantes são removidos
automaticamente no nível do host.
Os parâmetros de inicialização a seguir especificam a localização do arquivo:
* Db_create_file_dest: Define a localização do sistema de arquivos padrão do diretório
onde o Oracle cria arquivos de dados ou arquivos temporários quando não há
especificação do arquivo é dado na instrução de criação do objeto.
* Db_create_online_log_dest_n: Define a localização do sistema de diretório de
arquivo padrão para arquivos de log redo on-line e arquivos de controle quando não há
especificação do arquivo é dado na instrução de criação.
Este parâmetro de
inicialização pode ser usado várias vezes em que n especifica uma cópia multiplexada
do arquivo de log on-line ou controle refazer.
Note que o diretório de sistema de arquivo especificado por um desses parâmetros já
deve existir. Oracle não criá-la. O diretório também deve ter permissões para
permitir a Oracle para criar os arquivos nele. O local padrão é usado sempre que um
local não é explicitamente especificado para a operação de criar um arquivo. Oracle
cria o arquivo, e assim criado um arquivo é um arquivo de gestão da Oracle. O
exemplo a seguir define / u01/oracle/data/applic como o diretório padrão para usar ao
criar arquivos de gestão da Oracle:
DB_CREATE_FILE_DEST = '/ u01/oracle/data/applic'
Por padrão, esse local seria aplicável para arquivos de dados, arquivos temporários,
arquivos de redo log on-line e arquivos de controle. No entanto, o parâmetro de
inicialização db_create_online_log_dest_n podem ser incluídos no arquivo de
parâmetros de inicialização para identificar a localização predefinida para o servidor de
banco de dados online para criar arquivos de log e refaz arquivos de controle. Por
exemplo:
DB_CREATE_ONLINE_LOG_DEST_1
=
'/
u03/oracle/redo/applic'
DB_CREATE_ONLINE_LOG_DEST_2 = '/ u04/oracle/redo/applic'
Além disso, a localização DB_CREATE também pode ser alterado com o comando
ALTER SYSTEM.
Por exemplo, os seguintes comandos mudar o local do diretório OMF para '/
u05/oracle/data/applic, e cria um novo espaço de tabela.
ALTER
SYSTEM
DB_CREATE_FILE_DEST = '/ u05/oracle/data/applic;
CREATE
TABLESPACE
tbs_1;
#
cria
CREATE
TABLESPACE
DATAFILE AUTOEXTEND ON 800M MAXSIZE;
SET
def.size
de
100MB
tbs_3
Para mais informações, consulte o capítulo sobre a utilização do Oracle Managed Files
no Oracle Database 10g Administrator's Guide do.
Com os sistemas de RAC, a instalação OMF só pode ser usado se o sistema de cluster
está utilizando o sistema de arquivo cluster. A disponibilidade do sistema de arquivos
de cluster com um conjunto de sistemas de arquivos montados, permite que um
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
diretório para ser configurada para arquivos OMF. O DBCA também suporta Oracle
Managed Files para sistemas operacionais que oferecem suporte a um sistema de
arquivo cluster.
ASM AUTOMATIC STORAGE MANAGER
Automatic Storage Manager (ASM) é um gerenciador de volumes e ao mesmo tempo
um sistema de arquivos para banco de dados Oracle o qual suporta configurações do
tipo single-instance e RAC. O ASM é uma solução alternativa de gerenciamento de
volume de discos, sistemas de arquivos e raw devices.
O ASM utiliza agrupamento de discos para armazenar arquivos de dados; um ASM disk
group nada mais é do que uma coleção de discos os quais o ASM gerencia como se
fosse apenas uma unidade de disco. Dentro de um disk group, os arquivos de banco de
dados Oracle são apresentados em uma interface semelhante ao sistema de arquivos
unix e linux. O conteúdo dos arquivos são eventualmente redistribuidos para evitar
gargalos e garantir estabilidade de desempenho. Seu desempenho é semelhante ao
desempenho de raw devices.
Voce pode adicionar ou remover discos de um disk group sem interromper o serviço de
banco de dados. Quando você remove ou adiciona discos de um disk group, o ASM
automaticamente redistribui os arquivos e, conseqüentemente elimina a necessidade
de parada de serviços para redistribuição de conteúdos.
O gerenciador ASM possui flexíveis opções de espelhamento. ASM normal e alta
redundância de disk groups, espelhamentos tipo two-way e three-way
respectivamente. Permite o uso de redundância externa do tipo RAID.
O ASM também utiliza o Oracle Managed Files (OMF) para simplificar o gerenciamento
de arquivos banco de dados. O OMF automaticamente cria os arquivos em sua
respectivas pastas. Além disso, atribui nomes aos arquivos e remove-os,
defragmentando áreas de disco, quando as tablespaces ou arquivos são excluídos.
O ASM simplifica as tarefas de administração de storage consolidando os dados de
storage em um reduzido grupo de discos. Isso possibilita a unificação do storage para
diversos bancos de dados e oferece melhorias de desempenhos dos processos de
leitura e gravação em discos.
Os arquivos ASM podem ser configurados com outros gerenciadores de storage , como
raw devices e sistemas de arquivos de terceiros. Isto simplifica a integração do ASM
com os demais sistemas de armazenamento já existentes.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Exercícios Adicionais :
1 – Descubra os segmentos contidos no banco
SQL> SELECT SEGMENT_TYPE, COUNT(1) FROM DBA_SEGMENTS
GROUP BY SEGMENT_TYPE
ORDER BY SEGMENT_TYPE
2 – Saiba qual a tablespace default para criação de objetos
SQL > select default_tablespace from user_users;
3 – Saiba as caracteristicas de um segmento
SQL > select segment_name,segment_type,tablespace_name,bytes,blocks,extents
from user_segments
where segment_name='CLIENTE';
4 – Vamos Criar uma TableSpace:
SQL>
CREATE
TABLESPACE
RECURSOS_HUMANOS
datafile
‘/oracle/oradata/RH_01.dbf’ size 100m autoextend on next 100m maxsize 4096m;
OBS1: repare que o nome da nossa tablespace no exemplo acima se chama
RECURSOS_HUMANOS e nosso primeiro data file adicionado a nossa tablespace se
chama RH_01.dbf. Podemos analisar que são nomes explicativos e de fácil
identificação, como deve ser.
Vamos adicionar um Data File:
Ex2.:
ALTER
TABLESPACE
RECURSOS_HUMANOS
add
datafile
SQL>
‘/u02/oradata/RH_02.dbf’ size 100m autoextend on next 200m maxsize 4096m;
OBS2: repare que neste exemplo acima estamos adicionando um outro Data File há
uma TableSpace já existente e estamos dando continuidade a sequência dos Data Files
como pode ser observado no exemplo. Além disto observe que estou passando outro
caminho para este outro Data File, isto para me dá uma maior segurança com os
dados. Esta é uma boa prática de Administração Oracle.
Download