Processos e Gerenciamento de Instâncias Oracle
Classificado em Computação
Escrito em em
português com um tamanho de 17,8 KB
1. Descrição detalhada de eventos e processos
Descreva detalhadamente, com suas palavras, os eventos abaixo citando áreas de memória e processos de segundo plano envolvidos:
a) Comando SELECT
Para executar esse comando, é necessário passar por três estágios de processamento:
- Análise: Procura uma cópia existente da instrução SQL no pool compartilhado; valida a instrução SQL verificando sua sintaxe; efetua pesquisas no dicionário de dados para validar definições de tabela e coluna; adquire bloqueios de análise em objetos, de forma que as definições não se alterem durante a análise da instrução; verifica os privilégios do usuário para acessar os objetos de esquema mencionados; determina o plano de execução ideal para a instrução; carrega a instrução e o plano de execução em uma área SQL compartilhada.
- Execução: Identifica as linhas selecionadas.
- Extração: Retorna linhas para o processo de usuário.
b) Comando DML
Esse comando requer apenas duas fases de processamento:
- Análise: Igual à fase de análise no processamento de uma consulta (Comando SELECT).
- Execução: Se ainda não houver blocos de rollback e dados no cache de buffer, o processo de servidor fará sua leitura dos arquivos de dados para o cache de buffer. Após isso, o processo de servidor bloqueia as linhas que serão modificadas. Em seguida, no buffer de redo log, o processo de servidor registra as alterações a serem feitas no rollback e nos dados (As alterações do bloco de rollback registram os valores dos dados antes de serem modificados. O bloco de rollback é usado para armazenar a imagem original dos dados, de forma que as instruções DML possam ser submetidas a rollback se necessário; após isso, as alterações dos blocos de dados registram os novos valores dos dados). Por fim, o processo servidor registra a imagem original do bloco de rollback e atualiza o bloco de dados. Essas duas alterações são efetuadas no cache de buffer do banco de dados. Qualquer bloco alterado no cache de buffer será marcado como buffer sujo, ou seja, buffers que não são iguais aos blocos correspondentes no disco.
c) Recuperação de uma instância
Consiste nas etapas a seguir:
- Rollforward: Para recuperar dados que não foram registrados nos arquivos de dados, mas que foram registrados no redo log on-line. Esses dados não foram gravados em disco por causa da perda da SGA durante falha na instância. Durante esse processo, o SMON (Monitor de Sistema) lê os arquivos de redo log e aplica as alterações registradas aos blocos de dados. Como toda transação submetida a commit foi gravada nos redo logs, esse processo recupera completamente essas transações.
- Abrir o banco de dados: Permite que os usuários estabeleçam logon. Qualquer dado que não esteja bloqueado por transações irrecuperáveis fica disponível imediatamente.
- Rollback: Submete a rollback as transações não submetidas a commit. Elas são processadas pelo SMON ou pelos processos de servidor individuais quando acessam os dados bloqueados.
d) Criação de um banco de dados Oracle
Dependendo do sistema operacional, um banco de dados pode ser criado automaticamente como parte da instalação. Você pode usar esse banco de dados inicial ou apagá-lo e criar um novo manualmente. Durante a migração de uma versão anterior do Oracle, a criação do banco de dados é necessária apenas caso seja preciso um banco de dados totalmente novo. O comando CREATE DATABASE inicia a criação dos arquivos de controle, arquivos de redo log e estrutura do dicionário de dados que o servidor Oracle necessita para acessar o banco de dados.
2. Estágios de inicialização de uma instância Oracle
- SHUTDOWN
- NOMOUNT: Instância iniciada.
- MOUNT: Arquivo de controle aberto para essa instância.
- OPEN: Todos os arquivos abertos como descrito pelo arquivo de controle dessa instância.
3. Explicação do processo de recuperação de instância
Consiste nas etapas de Rollforward, abertura do banco de dados e Rollback de transações não confirmadas, conforme detalhado anteriormente.
4. Por que iniciar uma instância no modo NOMOUNT?
Este estágio inicializa a instância sem montar o banco de dados. Isso significa que todas as estruturas de memória e os processos de segundo plano estão posicionados, mas ainda sem ter um banco de dados associado. É através deste estágio que é possível criar um banco de dados Oracle ou recriar arquivos de controle.
5. Formas de exibir os valores atuais dos parâmetros
Existem duas formas principais:
SHOW PARAMETER control;SELECT name FROM v$parameter WHERE name LIKE '%control%';