Arquitetura Oracle - Pedro F. Carvalho

Propaganda
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Aula 2 – Arquitetura Oracle
Instancia Oracle
Uma instância Oracle é composta de estruturas de memória e processos. Sua
existência é temporária na memória RAM e nas CPUs. Quando você desliga a instância
em execução, todos os vestígios de sua existência desaparecem. O banco de dados é
composto de arquivos físicos no disco. Esteja ele em execução ou parado, os arquivos
permanecem. Assim, o tempo de vida da instância é apenas o período de usa
permanência na memória: ela pode ser iniciada e parada. Por outro lado, o banco de
dados, uma vez criado, persiste indefinidamente até que você deliberadamente exclua
os arquivos que estão associados ao banco de dados.
Os processos que compõem a instancia são conhecidos como processos de
segundo plano BACKGROUND, porque estão presentes e em execução o tempo todo
enquanto a instancia esta ativa. Esses processos são autoadministrado, embora em
alguns casos o DBA possa influenciar alguns deles.
•
•
•
•
Um usuário interage com um processo de usuário
Um processo de usuário interage com um processo de servidor (PGA)
Um processo de servidor interage com uma instância (SGA)
Uma instância interage com o Banco de Dados
SGA – System Global Area
Essa é a área alocada na inicializção da instância e liberada no desligamento,
ela é compartilhada e seus elementos poderm ser redimensionados enquanto a
instância esta em execução, tanto automaticamente ou com a intervenção de um DBA.
Dinâmica e definida pelo parâmetro SGA_MAX_SIZE
PGA – Program Global Area OU Area Global de Sistema
É uma área privada da sessão, ela inicia-se quando um processo de servidor é
estabelecido, nela são armazenados variáveis, endereços de rotinas e etc.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Database Buffer Cache
É uma area de trabalho no Oracle para de armazenamento de dados. Ao
atualizar os dados, as sessões dos usuários não atualizam diretamente o no disco. Os
blocos que conêm os dados de interess são primeiramente copiados no cache de
Buffer. As alterações como inserção, exclusão e alteração são feiras primeiro nesta
área. É uma área compartilhada a todos os usuários, seu tamanho pode ser ajustado
dinamicamente e pode ser gerenciado automaticamente. O pocesso LRU(qual o meno
utilizado) define em qual bloco de memória será copiado as informações do disco. Seus
blocos de memórias podem ser :
•
•
•
•
DIRTY (SUJO) quando a imagem do cache não é a mesma imagem do
disco
CLEAN (LIMPO) quando a imagem do cache é igual a do disco
PINNED (FIXO) quando sessões tentam escrever no mesmo bloco, a uma
espera
FREE or UNUSED os blocos ainda não foram atualizados
Suas informações são gravadas em disco pelo processo DBWRITER e tambem
uando há muitos blocos sujos, existe outros casos em que os blocos são gravados em
disc mas isso veremos mais isso a frente.
Redo Log Buffer
É uma área de memória que armazena todas as modificações relizadas em
dados (instruções DM), essa área é a garantia de que os dados nunca serão perdidos,
suas informações são gravadas nos arquivos de regolgs(veremos mais a frente). Essa
área é pequena em relação a outras, pois eu armazenmento dura muito pouco tempo,
por padrão é escolhido seu tamanho pelo numero de processadores na CPU. É ma area
circular de armazenamento. O processo LOGWRITER grava informações nos arquivos
de REDOLOG. A instrução commit faz com que seus dados sejam gravados nos
arquivos de REDOLOG, quand seus arquivos estão com 1/3 cheios e antes de um
DBWRITER gravar.
Shared Pool
A shared pool é uma porção de memória compartilhada que contém as áreas
chamadas shared SQL, estruturas de memória compartilhadas que contêm os
comandos SQL que estão sendo executados pelos múltiplos usuários conectados a um
banco de dados. Essas áreas compartilhadas shared SQL contêm informações como o
texto e a forma interpretada dos comandos SQL, a fase de análise dos comandos SQL
e seus planos de execução, informações do dicionário de dados e de geradores de
números seqüenciais. Uma única área shared SQL pode ser compartilhada por diversas
aplicações que usam o mesmo comando definido na área compartilhada de comandos
SQL, deixando assim mais área em memória disponível para os outros usuários e
melhorando a performance de execução de um comando, já que o plano de execução
já está definido e o ORACLE não precisa defini-lo novamente. A shared pool contém
ainda o data dictionary cache, com as informações do dicionário de dados, e o
sequence cache, com as informações dos geradores de números seqüenciais. Um
cursor é um nome ou ponteiro para a memória associada a um comando específico.
Muitas aplicações ORACLE tiram proveito dos cursores.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Large Pool (opcional)
Utilizado para armazenar grandes estruturas de memória que não estão
relacionadas diretamente ao processamento de instruções SQL, como por exemplo
blocos de dados copiados durante operações de backup e recovery. Seu tamanho é
dinamico e pode ser gerenciado automticamente.
Java Pool
Utilizado para armazenar código Java, somente é necessário se sua paplicação
for exectar procedures javas armazenadas no banco de dados
Streams Pool
Utilizado para manter estruturas de dados e controle do recurso Oracle Streams
Servidores Compartilhados
PROCESSOS DE SEGUNDO PLANO – BACKGROUND
Processos em Segundo Plano
- Os processos em segundo plano (background processes) de uma instância
executam funções comuns que são necessárias para atender as solicitações de serviço
de usuários simultâneos, sem comprometer a integridade e o desempenho do sistema.
- Eles consolidam funções que, de outra forma, seriam tratadas por diversos
programas Oracle executados para cada usuário.
- Ele executam tarefas de I/O e monitoram outros processos Oracle para oferecer
maior paralelismo, o que aumenta o desempenho e a confiabilidade.
- Dependendo da configuração, uma instância Oracle pode incluir vários processos de
segundo plano, no entanto cada instância inclui cinco processos de segundo plano
fundamentais. São Eles:
O Database Writer (DBW0) é responsável por gravar dados alterados do buffer
cache do banco de dados nos arquivos de dados. O DBWriter grava quando possuir
nenhum buffer livre, muitos buffer sujos, um checkpoint e m time de 3 segundos.
Quando uma transação realiza um comit ele não faz nada.
O Log Writer (LGWR) grava as alterações registradas no buffer de redo log nos
arquivos de redo log. Sera usado quando um commit for emitido quando os arquivos
de red estão 1/3 cheios e antes do DBWRITER ser utiliado
O Monitor de Sistema (SMON, System Monitor) verifica a consistência no banco
de dados e, se necessário, inicia a recuperação do banco de dados quando ele é
aberto.
O Monitor de Processo (PMON, Process Monitor) disponibiliza recursos se um dos
processos Oracle falhar. Se sua sessão terinar de forma anormal, ele executará um
processo de rollback
O Checkpoint Process (CKPT) é responsável pela atualização das informações de
status do banco de dados nos arquivos de controle e nos arquivos de dados, sempre
que as alterações efetuadas no cache de buffer ficam registradas no banco de dados
de forma permanente.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
O Recovery Process (RECO) Uma transação ditribida é uma transação que envolve
atualização em dis u mais banco de dados, este processo viabiliza isso ex
SQL > UPDATE EMPLOYEES SET SALARY = 900
UPDATE EMPLOYYES@EV SET SALARY = 800
Archive (Arch) processo que grava os arquivos de redolog nos arquivos de archive,
ele grava quando um redolog esta cheio.
ARQUIVOS DE DADOS
*Arquivos de Dados (Data Files)
- Os arquivos de dados contém os dados do banco, e eles são armazenados em tabelas
definidas pelo usuário. Além disto, nos arquivos de dados também são armazenados o
dicionário de dados, as imagens anteriores de dados alterados, índices e outros tipos
de estruturas. Um banco de dados Oracle deve conter no mínimo um arquivo de
dados.
*Características dos Arquivos de Dados
- Os arquivos de dados podem estar associados a apenas um banco de dados Oracle. Um ou mais arquivos de dados formam uma unidade lógica chamada tablespace.
*Redo Logs
- Os redo logs armazenam as mudanças efetuadas no banco de dados para possibilitar
a recuperação dos dados em caso de falhas. Um banco de dados Oracle deve possuir
no mínimo dois arquivos de redo log.
*Arquivos de Controle (Control Files)
- Os arquivos de controle contém as informações necessárias para manter e verificar a
integridade do banco de dados. Por exemplo, o arquivo de controle é utilizado para
identificar os arquivos de dados e os arquivos de redo log. Um banco de dados Oracle
deve possuir no mínimo um arquivo de controle.
*Outros Arquivos Importantes
- O servidor Oracle também faz uso de outros arquivos que não fazem parte do banco
de dados:
Arquivo de Parâmetros (Parameter File)
-define as características da instância Oracle. Por exemplo, ele contém parâmetros que
definem o tamanho das estruturas de memória da SGA
Arquivo de Senhas (Password File)
-faz a validação de quais usuários tem permissão de fazer start up e shutdown na
instância Oracle
+ Arquivos de Redo Log Arquivados (Archived Redo Log Files)
-são cópias off-line dos arquivos de redo log, que podem ser necessários em um
processo de recuperação de falhas de mídia
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
ESTRUTURAS LOGICAS E FISICAS DE UM BANCO
Tablespaces:
– Um tablespace pertence a apenas um database
– Cada tablespace consiste de um ou mais arquivos do sistema operacional
– Tablespaces podem ser colocados online enquanto o database está sendo executado
– Exceto pelo tablespace SYSTEM, um tablespace pode ser colocado offline enquanto o
database está sendo executado
– Tablespaces podem trocar seu status entre read-write e read-only
Segments:
– Um segmento é um espaço alocado para um tipo específico de uma estrutura lógica
em um tablespace
– Exemplos de segmentos:
• Table segment
• Index segment
• Temporary segment
• Rollback segment
– Segmentos de dados podem se espalhar por múltiplos arquivos que pertencem a um
mesmo tablespace
Extents:
– Um extent é um número contíguo de blocos
– Cada tipo de segmento é composto de um ou mais extents
– Um extent deve estar em um data file
Data Blocks:
– A menor porção de dados de um database é um bloco
– Um bloco de dados corresponde a um ou mais blocos do sistema operacional
– O tamanho de um bloco pode ser especificado pelo parâmetro de inicialização
DB_BLOCK_SIZE quando o banco de dados é criado
Execícios Auxiliares
1 – Determine se a instância esta em RAC :
SQL> SELECT PARALLEL FROM V$INSTANCE
2 – Determine o banco de dados esta protegido por um banco em StandBy
SQL> SELECT PROTECTION_LEVEL FROM V$INSTANCE
3 – Determine se os recursos de Streams foi configurado no banco de dados
SQL> SELECT * FROM DBA_STREAMS_ADMINISTRATOR
4 – Determine o tamanho atual dos componentes de sua SGA
SQL> SELECT COMPONENT, CRRENT_SIZE, MIN_IZE, MAX_SIZE
FROM V$SGA_DYNAMIC_COMPONENTS;
5 – Determine quais os processos em execução
SQL> SELECT PROGRAM FROM V$SESSION ORDER BY PROGRAM
6 –Faça consulta nas views
V$DATABASE
V$CONTROLFILE
V$LOG
V$LOGFILE
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
V$TABLESPACE
V$DATAFILE
Download