Conceitos básicos da arquitetura do Oracle Uma instância Oracle consiste na System Global Area (SGA) e um conjunto de processos de segundo plano (background processes). Quando uma instância é iniciada, o banco de dados cria um processo de segundo plano necessário para atender as solicitações de usuário concorrentes. A instância Oracle é composta de : processos de segundo plano: que geram e aplicam as relações entre as estruturas físicas e as estruturas de memória. Existem duas categorias: o os processos de segundo plano obrigatórios : DBWN, PMON, CKPT, LGWR, SMON o os processos de segundo plano facultativos : ARCn, LMDn, RECO, CJQ0, LMON, Snnn, Dnnn, Pnnn, LCKn, QMNn estruturas de memória: se compõe, basicamente, de duas áreas de memória: o a área de memória alocada à SGA (System Global Area): ela é alocada no início da instância e representa um componente fundamental de uma instância Oracle. É constituída de várias áreas da memória: a área de memória compartilhada (shared pool) o cache dos buffers do banco de dados (data buffer cache) o buffer de logs (redo log buffer) assim como outras estruturas para a gestão das trancas externas (lock), internas (latch), dados estatísticos, etc... Eventualmente, também podemos configurar na SGA a área de memória LARGE POOL a área de memória Java o a área de memória alocada à PGA (Program Global Area): ela é alocada no início do processo do servidor. Ela é reservada a todos os processos do usuário que se conecte ao banco de dados Oracle e liberada, no fim do processo.
Definições dos termos mais utilizados: SGA Ou Área Global do Sistema, é uma área de memória usada para armazenar informações de Banco de Dados que são compartilhadas pelos processos do Banco de Dados. Ela contém Dados e controla informações para o Servidor Oracle, também ela está alocada na memória virtual do computador no qual o Servidor Oracle reside. Pool Compartilhado (Shared Pool) É usado para armazenar as instruções SQL mais executadas recentemente e os Dados do Dicionário de Dados mais usados. Composto pelos seguintes componentes respectivamente, Shared SQL & PL/SQL e Data Dictionary Cache. Cachê de Buffer de Dados (Data Buffer Cache) É usado para armazenar os Dados mais usados recentemente, os Dados são lidos e gravados nos Arquivos de Dados. O cache de buffer de dados (Data Buffer Cache) armazena os dados do usuário utilizados mais recentemente. Este cache contém a lista de gravação (dados modificados, mas não gravados no disco) e a lista de gravação lru (least recently used). Lru - buffer sujos, retidos (atualmente em uso), buffers livres. Buffer dos Logs (Redo Log Buffer) É usado para controlar as alterações efetuadas no Banco de Dados pelo Servidor e pelos processos de segundo plano. * 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. - 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 no data buffer cache do banco de dados nos data files (arquivos de dados). - O Log Writer (LGWR) grava as alterações registradas no buffer de redo log nos redo log files. - 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) Limpa o Cache de buffer do banco de dados juntamente com quaisquer outros recursos que a conexão de usuário estava utilizando. - O Checkpoint Process (CKPT) é responsável pela atualização das informações de status do banco de dados nos arquivos de controle, nos arquivos de dados e nos arquivos de logs, sempre que as alterações efetuadas no data buffer cachê ficam registradas no banco de dados de forma permanente. Durante um ponto de verificação, o CKPT atualiza o cabeçalho dos seguintes arquivos (para refletir o último SCN-System Change Number): Control Files, Data Files e Redo Log Files. Um ponto de verificação ocorre automaticamente toda vez que ocorre uma alternação dos arquivos de redo log. * Processos de segundo plano opcionais: ARCn LMDn QMNn CJQ0 LMON RECO Dnnn LMS Snnn LCKn Pnnn
Como funciona internamente o Oracle quando uma consulta SQL é executada? 1. Suponha que seja executado o comando SQL abaixo (assuma que o valor antigo do salário era R$ 1000,00): UPDATE EMP SET salario = 1500,00 WHERE codemp = 3; 2. A primeira atividade a realizar é alocar o comando executado na área de memória compartilhada (Shared Pool), especificamente no componente Shared SQL & PL/SQL, onde este comando será analisado em relação a sua sintaxe. Além disso, o processo servidor verificará os privilégios do usuário que está executando este comando, para identificar se pode ou não executar o mesmo. Por outro lado, no componente Data Dictionary Cache serão alocados os dados das tabelas do sistema necessários para realizar o processamento do comando SQL. 3. Logo após, os dados das linhas da tabela EMP, afetadas pelo comando SQL, são alocadas no Data Buffer Cache, para aplicar as mudanças nesta área de memória. O comando SQL é processado e os dados são alterados em memória, especificamente no Data Buffer Cache, onde o dado antigo (R$ 1000,00) será marcado como Dirty (sujo) e o novo dado (R$ 1500,00) será registrado. Além disso, essas alterações serão registradas no Redo Log Buffer. 4. Este comando SQL provavelmente estará dentro de um conjunto de comandos, que forma parte de uma transação. Portanto, depois de executar este comando, devem ser executados os seguintes até executar o comando de efetivação da transação (comando COMMIT). Quando executar o COMMIT, o processo Log Writer é ativado, quem é o responsável por escrever os dados que estão no Redo Log Buffer para os Redo Log Files.
5. Depois de executar o comando COMMIT, provavelmente vão ser executadas outras transações. Dentro deste contexto, em algum determinado momento (especificamente quando acontece um SWITCH entre os arquivos online redo logs) será ativado o processo Checkpoint (CKPT) que escreverá nos cabeçalhos dos arquivos de dados, de controle e dos redo logs, confirmando as transações que foram efetivadas com sucesso. Além disso, o Database Writer (DBWR) grava os dados do Data Buffer Cache para os Data Files. Somente neste momento será atualizado o salário do empregado de código 3 em disco com o valor de R$ 1500,00.