Instância do Oracle AI Database

Este capítulo explica a natureza de uma instância do banco de dados Oracle, os arquivos de parâmetro e diagnóstico associados a uma instância e o que ocorre durante a criação e a abertura e o fechamento de um banco de dados.

Observação: para os fins deste capítulo, o termo "banco de dados" refere-se a um banco de dados contêiner (CDB) multitenant, a menos que seja observado o contrário.

Introdução à Instância do Oracle AI Database

Instância do banco de dados é um conjunto de estruturas de memória que gerenciam arquivos de banco de dados.

No nível físico, um CDB é um conjunto de arquivos em disco criados pela instrução CREATE DATABASE. Um CDB contém um ou mais PDBs criados pelo usuário. Um PDB contém seu próprio conjunto de arquivos de dados dentro do conjunto geral de arquivos de dados que pertencem ao CDB. A instância do banco de dados gerencia os dados associados ao CDB e seus PDBs e atende seus usuários.

Cada CDB em execução está associado a pelo menos uma instância do banco de dados Oracle. Como existe uma instância na memória e um banco de dados (no sentido mais restrito de termo) é um conjunto de arquivos em disco, uma instância pode existir sem um banco de dados e um banco de dados pode existir sem uma instância.

Estrutura da Instância do Banco de Dados

Quando uma instância é iniciada, o Oracle AI Database aloca uma área de memória chamada SGA (System Global Area) e inicia um ou mais processos em segundo plano.

A SGA serve para várias finalidades, incluindo as seguintes:

Os processos da Oracle executados em um único computador compartilham a SGA. A forma como os processos Oracle se associam à SGA varia de acordo com o sistema operacional.

Uma instância de banco de dados também inclui processos em segundo plano e processos de servidor. Cada processo tem sua própria memória dedicada considerada como parte da instância. A instância continua a funcionar quando os processos do servidor são encerrados.

O gráfico a seguir mostra os principais componentes de uma instância do banco de dados Oracle.

Figura 1: Instância do Banco de Dados

Descrição da ilustração cncpt325.png

Consulte Também:

Configurações da Instância do Banco de dados

O Oracle AI Database é executado em uma configuração de instância única ou em uma configuração do Oracle Real Application Clusters (Oracle RAC). Essas configurações são mutuamente exclusivas.

Em uma configuração de instância única, existe uma relação de um para um entre o banco de dados e uma instância do banco de dados. No Oracle RAC, existe um relacionamento de um para muitos entre o banco de dados e as instâncias do banco de dados.

A figura a seguir mostra possíveis configurações de instância de banco de dados.

Figura 2: Configurações da Instância do Banco de Dados

Descrição da ilustração cncpt296.gif

Seja em uma configuração de instância única ou do Oracle RAC, uma instância de banco de dados está associada a apenas um banco de dados por vez. Você pode iniciar uma instância de banco de dados e montar (associar a instância a) um banco de dados, mas não montar dois bancos de dados simultaneamente com a mesma instância. Observação: Este capítulo discute uma configuração de banco de dados de instância única, a menos que seja observado o contrário.

Várias instâncias podem ser executadas simultaneamente no mesmo computador, cada uma acessando seu próprio banco de dados. Por exemplo, um computador pode hospedar dois bancos de dados distintos: prod1 e prod2. Uma instância de banco de dados gerencia prod1, enquanto outra gerencia prod2.

Consulte Também: Oracle Real Application Clusters Administration and Deployment Guide para obter informações específicas do Oracle RAC

Instâncias de Leitura/Gravação e Leitura Somente

Cada instância de banco de dados é somente para leitura/gravação ou somente para leitura.

Uma instância de banco de dados de leitura/gravação, que é o padrão, pode processar DML e suportar conexões diretas de aplicativos cliente. Por outro lado, uma instância de banco de dados somente leitura pode processar consultas, mas não suporta conexões DML de modificação (UPDATE, DELETE, INSERT e MERGE) ou conexões diretas com o cliente.

Observação: Salvo indicação em contrário neste manual, todas as referências às instâncias do banco de dados são para ler/gravar instâncias.

Nas releases anteriores, todas as instâncias de banco de dados, a menos que acessassem um banco de dados stand-by, eram de leitura/gravação. A partir do Oracle Database 12c Release 2 (12.2), as instâncias somente para leitura e leitura/gravação podem coexistir em um único banco de dados. Essa configuração é útil para instruções SQL paralelas que consultam e modificam dados, porque as instâncias de leitura/gravação e somente leitura podem consultar, enquanto as instâncias de leitura/gravação modificam.

Ao contrário das instâncias de leitura/gravação, as instâncias somente para leitura têm as seguintes características:

Para designar uma instância como somente para leitura, defina o parâmetro de inicialização INSTANCE_MODE como READ_ONLY. O valor padrão do parâmetro é READ_WRITE.

Consulte Também:

Duração de uma Instância do Banco de Dados

Uma instância de banco de dados começa quando é criada com o comando STARTUP e termina quando é encerrada.

Durante esse período, uma instância de banco de dados pode se associar a um e somente um banco de dados. Além disso, a instância pode montar um banco de dados apenas uma vez, fechá-lo apenas uma vez e abri-lo apenas uma vez. Depois que um banco de dados tiver sido fechado ou encerrado, você deverá iniciar uma instância diferente para montar e abrir esse banco de dados.

A tabela a seguir ilustra uma instância do banco de dados tentando reabrir um banco de dados que ele fechou anteriormente.

Tabela 1 Duração de uma Instância

Instrução Explicação
SQL> STARTUP
 ORACLE instance started.

  Total System Global Area 468729856 bytes
 Fixed Size 1333556 bytes
 Variable Size 440403660 bytes
 Database Buffers 16777216 bytes
 Redo Buffers 10215424 bytes
 Database mounted.
 Database opened.
O comando STARTUP cria uma instância, que monta e abre o banco de dados.
SQL> SELECT
  TO_CHAR(STARTUP_TIME,'MON-DD-RR HH24:MI:SS')
  AS "Inst Start Time" FROM V$INSTANCE;

  Inst Start Time
 ------------------
 JUN-18-14 13:14:48
Esta consulta mostra a hora em que a instância atual foi iniciada.
SQL> SHUTDOWN IMMEDIATE
A instância fecha o banco de dados e é encerrada, encerrando a vida útil dessa instância.
SQL> STARTUP
 Oracle instance started.
 . . .
O comando STARTUP cria uma nova instância e monta e abre o banco de dados.
SQL> SELECT
  TO_CHAR(STARTUP_TIME, 'MON-DD-RR HH24:MI:SS')
 AS "Inst Start Time" FROM V$INSTANCE;

  Inst Start Time
 ------------------
 JUN-18-14 13:16:40
Esta consulta mostra a hora em que a instância atual foi iniciada. O horário inicial diferente mostra que essa instância é diferente da que faz shutdown do banco de dados.

Identificação de uma Instância do Banco de Dados

Várias instâncias de banco de dados podem residir em um único host. Portanto, é necessário ter um meio de especificar qual instância você deseja acessar. As regras OFA (Oracle Optimal Flexible Architecture) são um conjunto de diretrizes de configuração criadas para garantir instalações Oracle bem organizadas. Os exemplos nesta seção pressupõem uma arquitetura OFA.

Essa seção contém os seguintes tópicos:

Diretório do Oracle Base

O diretório do Oracle base armazena os binários para produtos Oracle.

O diretório do Oracle Base é o diretório home do banco de dados para proprietários de instalação do Oracle AI Database. Pode haver muitas instalações do Oracle AI Database em um host e muitos proprietários de instalação de software do Oracle AI Database.

O exemplo a seguir mostra o diretório do Oracle base da conta de usuário do sistema operacional oracle:

/u01/app/oracle

No caminho anterior, /u01/ é o ponto de montagem e /u01/app/ é a subárvore do software aplicativo.

Consulte Também: Oracle AI Database Installation Guide for Linux para obter uma visão geral do Oracle base

Diretório Oracle Home

O Oracle home é o local do software para um banco de dados Oracle.

Especifique um novo diretório do Oracle home para cada nova instalação do software Oracle AI Database. A partir do Oracle Database 21c, o Oracle home é somente para leitura. O Oracle home armazena arquivos estáticos, como binários.

Por padrão, o diretório do Oracle home é um descendente dentro da árvore de diretórios do Oracle base (ORACLE_BASE). Você pode instalar esta release ou releases anteriores do software de banco de dados, mais de uma vez no mesmo host, em diferentes diretórios do Oracle home dentro de um único Oracle base. Vários bancos de dados, de diferentes versões e de propriedade de diferentes contas de usuário, podem coexistir simultaneamente.

O exemplo a seguir mostra os nomes de caminho completos de três Oracle homes diferentes, todos dentro do mesmo diretório do Oracle base de /u01/app/oracle/:

/u01/app/oracle/product/19.3.0/dbhome_1
/u01/app/oracle/product/19.3.0/dbhome_2
/u01/app/oracle/product/20.1.0/dbhome_1

A parte do nome do caminho após o Oracle base (/u01/app/oracle/) inclui o número da release do produto (por exemplo, 19.3.0) e o diretório relativo do Oracle home (por exemplo, dbhome_1). O diretório /u01/app/oracle/product/19.3.0/ contém dois Oracle homes separados: dbhome_1 e dbhome_2.

O diretório Oracle base home (ORACLE_BASE_HOME), localizado em ORACLE_BASE/homes/home_name, armazena arquivos dinâmicos específicos de um Oracle home. O diretório de configuração do Oracle base (ORACLE_BASE_CONFIG), que é compartilhado por todos os Oracle homes em um Oracle base, armazena arquivos dinâmicos específicos da instância.

No exemplo a seguir, o primeiro caminho é um Oracle home e o segundo caminho é o Oracle base home para este Oracle home:

/u01/app/oracle/product/20.1.0/dbhome_1
/u01/app/oracle/homes/dbhome_1

Consulte Também: Oracle AI Database Installation Guide for Linux para obter uma visão geral do Oracle home

Oracle System Identifier (SID)

O Identificador do Sistema (SID) é um nome exclusivo para uma instância de banco de dados Oracle em um host específico.

No UNIX e Linux, o Oracle AI Database usa os valores do SID e do Oracle home para criar uma chave para a memória compartilhada. Além disso, o Oracle AI Database usa o SID por padrão para localizar o arquivo de parâmetros de inicialização, que localiza arquivos relevantes, como os arquivos de controle do banco de dados.

Na maioria das plataformas, a variável de ambiente ORACLE_SID define o SID e a variável ORACLE_HOME define o Oracle home. Ao estabelecer conexão com uma instância de banco de dados, os clientes podem especificar o SID em uma conexão do Oracle Net ou usar um nome de serviço de rede. O Oracle AI Database converte um nome de serviço de rede em ORACLE_HOME e ORACLE_SID.

Os arquivos específicos da instância são armazenados separadamente no Oracle base. Os arquivos cujos nomes incluem o SID residem no subdiretório dbs do diretório de configuração do Oracle base (ORACLE_BASE_CONFIG). Por causa dessa separação, você pode criar um banco de dados usando o software em um Oracle home existente e, em seguida, iniciar uma instância desse banco de dados usando o software que reside em um novo Oracle home.

Consulte Também:

Visão Geral do Serviço Database Instance Startup and Shutdown

Uma instância do banco de dados fornece ao usuário acesso a um banco de dados. A instância e o banco de dados podem estar em vários estados.

Visão Geral da Inicialização de Instância e Banco de Dados

Normalmente, você inicia manualmente uma instância e, em seguida, monta e abre o banco de dados, tornando-o disponível para os usuários. Você pode usar o comando STARTUP do SQL*Plus, o Oracle Enterprise Manager (Enterprise Manager) ou o utilitário SRVCTL para executar essas etapas.

Para iniciar uma instância de banco de dados usando o Oracle Net, o seguinte deve ser verdadeiro:

O listener cria um servidor dedicado, que pode iniciar a instância do banco de dados.

O gráfico a seguir mostra o banco de dados que está progredindo de um estado de shutdown para um estado de open.

Figura 3: Sequência de Inicialização de Instância e Banco de Dados

Descrição da ilustração cncpt212.gif

Um banco de dados passa pelas fases a seguir quando passa de um estado de shutdown para um estado de banco de dados aberto.

Tabela 2 Etapas na Inicialização da Instância

Fase Estado de Montagem Descrição Para Saber Mais
1 Instância iniciada sem montar o banco de dados A instância foi iniciada, mas ainda não está associada a um banco de dados. "Como uma Instância é Iniciada"
2 Banco de dados montado A instância é iniciada e associada a um banco de dados por meio da leitura de seu arquivo de controle. O banco de dados é fechado para os usuários. "Como um Banco de Dados É Montado"
3 Abertura do banco de dados A instância é iniciada e associada a um banco de dados aberto. Os dados contidos nos arquivos de dados podem ser acessados por usuários autorizados. "Como um Banco de Dados É Aberto"

Consulte Também:

Conexão com Privilégios de Administrador

A inicialização e o shutdown do banco de dados são opções administrativas avançadas restritas a usuários que se conectam ao Oracle AI Database com privilégios de administrador.

Os usuários normais não têm controle sobre o status atual de um banco de dados Oracle. Dependendo do sistema operacional, uma das seguintes condições estabelece privilégios de administrador para um usuário:

Os seguintes privilégios especiais de sistema permitem o acesso a uma instância de banco de dados mesmo quando o banco de dados não está aberto:

O controle dos privilégios anteriores está fora do próprio banco de dados. Quando você se conecta a um banco de dados com o privilégio de sistema SYSDBA, está no esquema de propriedade de SYS. Quando você se conecta como SYSOPER, está no esquema público. Os privilégios SYSOPER são um subconjunto de privilégios SYSDBA.

Consulte Também:

Como uma Instância é Iniciada

Quando o Oracle AI Database inicia uma instância, ela passa por estágios.

As etapas são as seguintes:

  1. Pesquisa um arquivo de parâmetros do servidor em um local padrão específico da plataforma e, se não for encontrado, um arquivo de parâmetros de inicialização de texto (especificar STARTUP com os parâmetros SPFILE ou PFILE substitui o comportamento padrão)

  2. Lê o arquivo de parâmetros para determinar os valores dos parâmetros de inicialização

  3. Aloca a SGA com base nas definições do parâmetro de inicialização

  4. Inicia os processos em segundo plano da Oracle

  5. Abre o log de alerta e os arquivos de rastreamento e grava todas as definições de parâmetro explícitas na sintaxe de parâmetro válida do log de alerta

Nesse estágio, nenhum banco de dados está associado à instância. Os cenários que exigem um estado NOMOUNT incluem a criação do banco de dados e determinadas operações de backup e recuperação.

Consulte Também: Oracle AI Database Administrator's Guide para saber como gerenciar parâmetros de inicialização usando um arquivo de parâmetros do servidor

Como um Banco de Dados é Montado

A instância monta um banco de dados para associar o banco de dados a essa instância.

Para montar o banco de dados, a instância obtém os nomes dos arquivos de controle do banco de dados especificados no parâmetro de inicialização do CONTROL_FILES e abre os arquivos. O Oracle AI Database lê os arquivos de controle para localizar os nomes dos arquivos de dados e os arquivos de redo log on-line que ele tentará acessar ao abrir o banco de dados.

Em um banco de dados montado, o banco de dados é fechado e pode ser acessado apenas por administradores de banco de dados. Os administradores podem manter o banco de dados fechado durante a conclusão de operações de manutenção específicas. No entanto, o banco de dados não está disponível para operações normais.

Se o Oracle AI Database permitir que várias instâncias montem o mesmo banco de dados simultaneamente, a definição do parâmetro de inicialização CLUSTER_DATABASE poderá disponibilizar o banco de dados para várias instâncias. O comportamento do banco de dados depende da definição:

Consulte Também:

Como um Banco de Dados É Aberto

A abertura de um banco de dados montado o disponibiliza para a operação normal do banco de dados.

Qualquer usuário válido pode se conectar a um banco de dados aberto e acessar suas informações. Normalmente, um administrador de banco de dados abre o banco de dados para disponibilizá-lo para uso geral.

Quando você abre o banco de dados, o Oracle AI Database executa as seguintes ações:

Consulte Também:

Modo Somente para Leitura

Por padrão, o banco de dados é aberto no modo de leitura/gravação. Nesse modo, os usuários podem fazer alterações nos dados, gerando redo no redo log on-line. Como alternativa, você pode abrir no modo somente leitura para evitar a modificação de dados por transações do usuário. Observação: Por padrão, um banco de dados stand-by físico é aberto no modo somente leitura.

O modo somente leitura restringe o acesso do banco de dados a transações somente leitura, que não podem ser gravadas em arquivos de dados ou em arquivos de redo log on-line. No entanto, o banco de dados pode executar a recuperação ou operações que alteram o estado do banco de dados sem gerar o redo. Por exemplo, no modo somente leitura:

Consulte Também:

Verificações de Arquivo de Banco de Dados

Se algum dos arquivos de dados ou arquivos de redo log não estiver presente quando a instância tentar abrir o banco de dados ou se os arquivos estiverem presentes, mas falharem nos testes de consistência, o banco de dados retornará um erro. A recuperação de mídia pode ser necessária.

Consulte Também: Oracle AI Database Backup and Recovery User's Guide para obter uma visão geral do backup e da recuperação

Visão Geral do Shutdown do Banco de Dados e da Instância

Em um caso de uso típico, você faz shutdown manualmente do banco de dados, tornando-o indisponível para os usuários enquanto executa tarefas de manutenção ou outras tarefas administrativas. Você pode usar o comando SHUTDOWN do SQL*Plus ou o Enterprise Manager para executar essas etapas.

A figura a seguir mostra a progressão de um estado aberto para um desligamento consistente.

Figura 4: Sequência de Shutdown da Instância e do Banco de Dados

Descrição da ilustração cncpt281.gif

O Oracle AI Database executa automaticamente as etapas a seguir sempre que um banco de dados aberto é submetido a shutdown consistente.

Tabela 3 Etapas no Shutdown Consistente

Fase Estado de Montagem Descrição Para Saber Mais
1 Banco de dados fechado O banco de dados é montado, mas os arquivos de dados on-line e os arquivos de redo log são fechados. "Como um Banco de Dados Está Fechado"
2 Banco de dados desmontado A instância foi iniciada, mas não está mais associada ao arquivo de controle do banco de dados. "Como um Banco de Dados É Desmontado"
3 Shutdown da instância do banco de dados A instância do banco de dados não foi mais iniciada. "Como uma Instância é Shutdown"

O Oracle AI Database não passa por todas as etapas anteriores em uma falha de instância ou pelo SHUTDOWN ABORT, que encerra imediatamente a instância.

Modos de Shutdown

Um administrador de banco de dados com privilégios SYSDBA ou SYSOPER pode fazer shutdown do banco de dados usando o comando SQL*Plus SHUTDOWN ou o Enterprise Manager. O comando SHUTDOWN tem opções que determinam o comportamento de shutdown.

A tabela a seguir resume o comportamento dos diferentes modos de desligamento.

Tabela 4 Modos de Shutdown do Banco de Dados

Comportamento do Banco de Dados ABORTAR IMMEDIATE TRANSACIONAL NORMAL
Permite novas conexões de usuário Não Não Não Não
Aguarda até o término das sessões atuais Não Não Não Sim
Esperas até o fim das transações atuais Não Não Sim Sim
Executa um ponto de verificação e fecha arquivos abertos Não Sim Sim Sim

As instruções SHUTDOWN possíveis são:

Consulte Também:

Como um Banco de Dados É Fechado

A operação de fechamento do banco de dados está implícita em um shutdown do banco de dados. A natureza da operação depende se o shutdown do banco de dados é normal ou anormal.

Como um Banco de Dados É Fechado Durante o Shutdown Normal

Quando um banco de dados é fechado como parte de uma SHUTDOWN com qualquer opção diferente de ABORT, o Oracle AI Database grava dados na SGA nos arquivos de dados e nos arquivos de redo log on-line.

Depois, o banco de dados fecha os arquivos de dados on-line e os arquivos de redo log on-line. Todos os arquivos de dados off-line de tablespaces off-line já foram fechados. Quando o banco de dados é reaberto, qualquer tablespace que estava off-line permanece off-line.

Nesse estágio, o banco de dados está fechado e inacessível para operações normais. Os arquivos de controle permanecem abertos após o banco de dados ser fechado.

Como um Banco de Dados é Fechado Durante um Shutdown Anormal

Caso ocorra um encerramento anormal ou SHUTDOWN ABORT, a instância de um banco de dados aberto fecha e fecha o banco de dados instantaneamente.

Em um shutdown anormal, o Oracle AI Database não grava dados nos buffers da SGA nos arquivos de dados e arquivos de redo log. A reabertura subsequente da base de dados requer a recuperação de instância, que o Oracle AI Database executa automaticamente.

Como um Banco de Dados É Desmontado

Após o banco de dados ser fechado, o Oracle AI Database desmonta o banco de dados para desassociá-lo da instância.

Depois que um banco de dados é desmontado, o Oracle AI Database fecha os arquivos de controle do banco de dados. Nesse ponto, a instância do banco de dados permanece na memória.

Como uma Instância é Shutdown

A etapa final no shutdown do banco de dados está fazendo shutdown da instância. Quando a instância do banco de dados é encerrada, a SGA deixa de ocupar memória e os processos em segundo plano são encerrados.

Em circunstâncias incomuns, o shutdown de uma instância do banco de dados pode não ocorrer corretamente. Estruturas de memória não podem ser removidas da memória ou um dos processos em segundo plano não pode ser encerrado. Quando existirem remanescentes de uma instância anterior, uma inicialização de instância subsequente poderá falhar. Nessas situações, você pode forçar a nova instância a começar removendo os remanescentes da instância anterior e, em seguida, iniciando uma nova instância ou emitindo uma instrução SHUTDOWN ABORT.

Em alguns casos, a própria limpeza do processo pode encontrar erros, o que pode resultar no encerramento do PMON (process monitor) ou da instância. O parâmetro de inicialização dinâmica INSTANCE_ABORT_DELAY_TIME especifica quantos segundos atrasar uma falha de instância gerada internamente. Esse atraso lhe dá a chance de responder. O banco de dados grava uma mensagem no log de alerta quando o encerramento atrasado é iniciado. Em algumas circunstâncias, ao permitir que determinados recursos do banco de dados sejam colocados em quarentena, a instância pode evitar o encerramento.

Consulte Também:

Visão Geral de Pontos de Verificação

Um ponto de verificação é um mecanismo crucial em shutdowns consistentes do banco de dados, recuperação de instância e operação do Oracle AI Database em geral.

O termo tem os seguintes significados relacionados:

Finalidade dos Pontos de Verificação

O Oracle AI Database usa pontos de verificação para atingir vários objetivos.

As metas incluem o seguinte:

Quando o Oracle AI Database Inicia Pontos de Verificação

O processo de checkpoint (CKPT) é responsável por gravar checkpoints nos cabeçalhos do arquivo de dados e no arquivo de controle.

Pontos de verificação ocorrem em uma variedade de situações. Por exemplo, o Oracle AI Database usa os seguintes tipos de pontos de verificação:

Outros tipos de checkpoints incluem checkpoints de recuperação de instância e mídia e checkpoints quando objetos de esquema são eliminados ou truncados.

Consulte Também:

Visão Geral da Recuperação de Instância

Recuperação de instância é o processo de aplicar registros no redo log on-line aos arquivos de dados para reconstruir as alterações feitas após o checkpoint mais recente.

A recuperação de instância ocorre automaticamente quando um administrador tenta abrir um banco de dados que foi submetido a shutdown inconsistente anteriormente.

Finalidade da Recuperação da Instância

A recuperação da instância garante que o banco de dados esteja em um estado consistente após uma falha na instância. Os arquivos de um banco de dados podem ser deixados em um estado inconsistente por causa de como o Oracle AI Database gerencia alterações no banco de dados.

Um thread de refazer é um registro de todas as alterações geradas por uma instância. Um banco de dados de instância única tem um thread de redo, enquanto um banco de dados Oracle RAC tem vários threads de redo, um para cada instância do banco de dados.

Quando uma transação é submetida a commit, o processo de gravação de log (LGWR) grava as entradas de redo restantes na memória e o SCN da transação no redo log on-line. No entanto, o processo de gravador de banco de dados (DBW) grava blocos de dados modificados nos arquivos de dados sempre que é mais eficiente. Por este motivo, as alterações não confirmadas podem existir temporariamente nos arquivos de dados enquanto as alterações confirmadas ainda não existem nos arquivos de dados.

Se uma instância de um banco de dados aberto falhar, por causa de uma instrução SHUTDOWN ABORT ou de um encerramento anormal, as seguintes situações poderão resultar:

A recuperação de instância usa somente arquivos de redo log on-line e arquivos de dados on-line atuais para sincronizar os arquivos de dados e garantir que eles sejam consistentes.

Consulte Também:

Quando o Oracle AI Database Executa a Recuperação de Instâncias

A necessidade de recuperação da instância depende do estado dos threads de redo.

Um thread de redo é marcado como aberto no arquivo de controle quando uma instância do banco de dados é aberta no modo de leitura/gravação e é marcado como fechado quando a instância é submetida a shutdown consistentemente. Se os threads de redo forem marcados como abertos no arquivo de controle, mas nenhuma instância ativa conter os enfileiramentos de thread correspondentes a esses threads, o banco de dados exigirá a recuperação da instância.

O Oracle AI Database executa a recuperação da instância automaticamente nas seguintes situações:

O processo em segundo plano SMON executa a recuperação da instância, aplicando o redo on-line automaticamente. Nenhuma intervenção do usuário é necessária.

Consulte Também:

Importância dos Checkpoints para Recuperação de Instância

A recuperação de instância usa pontos de verificação para determinar quais alterações devem ser aplicadas aos arquivos de dados. A posição do ponto de verificação garante que cada alteração confirmada com um SCN menor que o SCN do ponto de verificação seja salva nos arquivos de dados.

A figura a seguir ilustra o thread de redo no redo log on-line.

Figura 5: Posição do Checkpoint no Redo Log On-line

Descrição da ilustração cncpt282.gif

Durante a recuperação da instância, o banco de dados deve aplicar as alterações que ocorrem entre a posição do checkpoint e o final do thread de redo. Conforme mostrado na Figura 16-5, algumas alterações podem já ter sido gravadas nos arquivos de dados. No entanto, somente as alterações com SCNs inferiores à posição do ponto de verificação são garantidas em disco.

Consulte Também: Guia de Ajuste de Desempenho do Oracle AI Database para saber como limitar o tempo de recuperação da instância

Fases de Recuperação de Instância

A primeira fase da recuperação da instância é chamada de recuperação em cache ou avançando e reaplica todas as alterações registradas no redo log on-line aos arquivos de dados.

Como o redo log on-line contém dados de undo, o roll forward também gera novamente os segmentos de undo correspondentes. A transferência continua por meio de quantos arquivos de redo log on-line forem necessários para antecipar o banco de dados no tempo. Após a transferência, os blocos de dados contêm todas as alterações confirmadas registradas nos arquivos de redo log on-line. Esses arquivos também podem conter alterações não confirmadas que foram salvas nos arquivos de dados antes da falha ou que foram gravadas no redo log on-line e introduzidas durante a recuperação do cache.

Após a transferência, as alterações com commit não deverão ser desfeitas. O Oracle AI Database usa a posição do checkpoint, que garante que todas as alterações confirmadas com um SCN inferior ao SCN do checkpoint sejam salvas no disco. O Oracle AI Database aplica blocos de undo para fazer rollback de alterações não confirmadas em blocos de dados que foram gravados antes da falha ou introduzidos durante a recuperação do cache. Essa fase é chamada de reversão ou recuperação de transação.

A figura a seguir ilustra o rollback e o rollback, as duas etapas necessárias para se recuperar de uma falha na instância do banco de dados.

Figura 6: Etapas Básicas de Recuperação de Instância: Fazendo Roll Forward e Fazendo Roll Back

Descrição da ilustração cncpt196.gif

O Oracle AI Database pode fazer rollback de várias transações simultaneamente, conforme necessário. Todas as transações que estavam ativas no momento da falha são marcadas como encerradas. Em vez de aguardar que o processo SMON reverta as transações encerradas, novas transações podem reverter blocos individuais para obter os dados necessários.

Consulte Também:

Visão Geral de Arquivos de Parâmetros

Para iniciar uma instância de banco de dados, o Oracle AI Database deve ler um arquivo de parâmetro do servidor, que é recomendado, ou um arquivo de parâmetro de inicialização de texto, que é uma implementação legada. Esses arquivos contêm uma lista de parâmetros de configuração.

Para criar um banco de dados manualmente, inicie uma instância com um arquivo de parâmetros e emita uma instrução CREATE DATABASE. Assim, o arquivo de instância e parâmetro pode existir mesmo quando o próprio banco de dados não existe.

Parâmetros de Inicialização

Parâmetros de inicialização são parâmetros de configuração que afetam a operação básica de uma instância. A instância lê os parâmetros de inicialização de um arquivo na inicialização.

O Oracle AI Database fornece muitos parâmetros de inicialização para otimizar sua operação em diversos ambientes. Apenas alguns desses parâmetros devem ser definidos explicitamente porque os valores padrão são geralmente adequados.

Grupos Funcionais de Parâmetros de Inicialização

Os parâmetros de inicialização se enquadram em diferentes grupos funcionais.

A maioria dos parâmetros de inicialização pertence a um dos seguintes grupos:

Os parâmetros variáveis são de particular interesse para os administradores de banco de dados porque eles podem usar esses parâmetros para melhorar o desempenho do banco de dados.

Parâmetros Básicos e Avançados de Inicialização

Os parâmetros de inicialização são divididos em dois grupos: básico e avançado.

Normalmente, você deve definir e ajustar apenas os aproximadamente 30 parâmetros básicos para obter um desempenho razoável. Os parâmetros básicos definem características como o nome do banco de dados, os locais dos arquivos de controle, o tamanho do bloco do banco de dados e o tablespace de undo.

Em situações raras, a modificação dos parâmetros avançados pode ser necessária para o desempenho ideal. Os parâmetros avançados permitem que DBAs especialistas adaptem o comportamento do Oracle AI Database para atender a requisitos exclusivos.

O Oracle AI Database fornece valores no arquivo de parâmetros de inicialização inicial fornecido com o software de banco de dados ou conforme criado para você pelo DBCA (Database Configuration Assistant). Você pode editar esses parâmetros de inicialização fornecidos pela Oracle e adicionar outros, dependendo da sua configuração e de como planeja ajustar o banco de dados. Para parâmetros de inicialização relevantes não incluídos no arquivo de parâmetros, o Oracle AI Database fornece padrões.

Consulte Também:

Arquivos de Parâmetros do Servidor

Um arquivo de parâmetros do servidor é um repositório para parâmetros de inicialização.

Um arquivo de parâmetros do servidor tem as seguintes características principais:

Um arquivo de parâmetros do servidor elimina a necessidade de manter vários arquivos de parâmetros de inicialização de texto para aplicativos cliente. Um arquivo de parâmetros do servidor é inicialmente criado com base em um arquivo de parâmetros de inicialização de texto usando a instrução CREATE SPFILE. Ele também pode ser criado diretamente pelo Assistente de Configuração de Banco de Dados.

Consulte Também:

Arquivos de Parâmetros de Inicialização de Texto

Um arquivo de parâmetros de inicialização de texto é um arquivo de texto que contém uma lista de parâmetros de inicialização.

Esse tipo de arquivo de parâmetros, que é uma implementação legada do arquivo de parâmetros, tem as seguintes características principais:

O arquivo de parâmetros de inicialização de texto contém uma série de pares key=value, um por linha. Por exemplo, uma parte de um arquivo de parâmetro de inicialização pode ter a seguinte aparência:

db_name=sample
control_files=/disk1/oradata/sample_cf.dbf
db_block_size=8192
open_cursors=52
undo_management=auto
shared_pool_size=280M
pga_aggregate_target=29M
.
.
.

Para ilustrar os problemas de gerenciabilidade que os arquivos de parâmetros de texto podem criar, suponha que você use computadores clienta e clientb e deve ser capaz de iniciar o banco de dados com o SQL*Plus em qualquer computador. Nesse caso, dois arquivos de parâmetros de inicialização de texto separados devem existir, um em cada computador, conforme mostrado na Figura 16-7. Um arquivo de parâmetros de servidor resolve o problema da proliferação de arquivos de parâmetros.

Figura 7: Vários Arquivos de Parâmetros de Inicialização

Descrição da ilustração cncpt247.gif

Consulte Também:

Modificação dos Valores do Parâmetro de Inicialização

Você pode ajustar os parâmetros de inicialização para modificar o comportamento de um banco de dados. A classificação de parâmetros como estáticos ou dinâmicos determina como eles podem ser modificados.

A tabela a seguir resume as diferenças.

Tabela 5 - Parâmetros de Inicialização Estática e Dinâmica

Característica Estático Dinâmico
Requer modificação do arquivo de parâmetros (texto ou servidor) Sim Não
Requer reinicialização da instância do banco de dados antes que a definição entre em vigor Sim Não
Descrito como "Modificável" na entrada do parâmetro de inicialização do Oracle AI Database Reference Não Sim
Modificável somente para o banco de dados ou a instância Sim Não

Os parâmetros estáticos incluem DB_BLOCK_SIZE, DB_NAME e COMPATIBLE. Os parâmetros dinâmicos são agrupados em parâmetros de nível de sessão, que afetam somente a sessão de usuário atual, e parâmetros de nível de sistema, que afetam o banco de dados e todas as sessões. Por exemplo, MEMORY_TARGET é um parâmetro no nível do sistema, enquanto NLS_DATE_FORMAT é um parâmetro no nível da sessão.

O escopo de uma alteração de parâmetro depende de quando a alteração entra em vigor. Quando uma instância tiver sido iniciada com um arquivo de parâmetros do servidor, você poderá usar a instrução ALTER SYSTEM SET para alterar valores para parâmetros no nível do sistema da seguinte forma:

O banco de dados imprime o novo valor e o valor antigo de um parâmetro de inicialização no log de alerta. Como medida preventiva, o banco de dados valida as alterações do parâmetro básico para evitar que valores inválidos sejam gravados no arquivo de parâmetros do servidor.

Consulte Também:

Visão Geral dos Arquivos de Diagnóstico

O Oracle AI Database inclui uma infraestrutura de capacidade de diagnóstico de falhas para prevenir, detectar, diagnosticar e resolver problemas de banco de dados. Os problemas incluem erros críticos, como bugs de código, corrupção de metadados e corrupção de dados do cliente.

Os objetivos da infraestrutura avançada de diagnóstico de falhas são os seguintes:

Repositório de Diagnóstico Automático

O ADR (Automatic Diagnostic Repository) é um repositório baseado em arquivo que armazena dados de diagnóstico de banco de dados, como arquivos de rastreamento, log de alerta, log DDL e relatórios do Health Monitor.

As principais características do ADR incluem:

As características precedentes permitem que os clientes e o Suporte da Oracle correlacionem e analisem dados de diagnóstico em várias instâncias, componentes e produtos da Oracle.

O ADR está localizado fora do banco de dados, o que permite que o Oracle AI Database acesse e gerencie o ADR quando o banco de dados físico estiver indisponível. Uma instância de banco de dados pode criar o ADR antes de um banco de dados ter sido criado.

Problemas e Incidentes

O ADR rastreia proativamente problemas, que são erros críticos no banco de dados.

Erros críticos manifestam-se como erros internos, como ORA-600, ou outros erros graves. Cada problema tem uma chave de problema, que é uma string de texto que descreve o problema.

Quando um problema ocorre várias vezes, o ADR cria um incidente com marca de data/hora para cada ocorrência. Um incidente é identificado exclusivamente por um ID do incidente numérico. Quando ocorre um incidente, o ADR envia um alerta de incidente ao Enterprise Manager. O diagnóstico e a resolução de um erro crítico geralmente começa com um alerta de incidente.

Como um problema pode gerar muitos incidentes em um curto período de tempo, o ADR aplica o controle de inundação à geração de incidentes após determinados limites serem atingidos. Um incidente controlado por inundação gera uma entrada de log de alerta, mas não gera despejos de incidentes. Dessa forma, o ADR informa que um erro crítico está em andamento sem sobrecarregar o sistema com dados de diagnóstico.

Consulte Também: Oracle AI Database Administrator's Guide para obter informações detalhadas sobre a infraestrutura de diagnóstico de falhas

Estrutura ADR

A base ADR é o diretório raiz ADR.

A base do ADR pode conter vários homes do ADR, em que cada home do ADR é o diretório raiz de todos os rastreamentos de dados de diagnóstico, dumps, o log de alerta etc. para uma instância de um produto ou componente Oracle. Por exemplo, em um ambiente Oracle RAC com armazenamento compartilhado e Oracle ASM, cada instância do banco de dados e cada instância do Oracle ASM tem seu próprio home do ADR. A Figura 16-8 ilustra a hierarquia de diretórios ADR de uma instância do banco de dados. Outros homes do ADR para outros produtos ou componentes Oracle, como Oracle ASM ou Oracle Net Services, podem existir nessa hierarquia, na mesma base do ADR.

Figura 8: Estrutura de Diretórios ADR para uma Instância do Oracle AI Database

Descrição da ilustração admin077.gif

Como o exemplo do Linux a seguir mostra, quando você inicia uma instância com um SID exclusivo e um nome de banco de dados antes de criar um banco de dados, o Oracle AI Database cria o ADR por padrão como uma estrutura de diretório no sistema de arquivos do host. O SID e o nome do banco de dados fazem parte do nome do caminho para arquivos no Home do ADR.

Exemplo 16-1 Criação de ADR

% setenv ORACLE_SID osi
% echo "DB_NAME=dbn" > init.ora
% sqlplus / as sysdba
.
.
.
Connected to an idle instance.

SQL> STARTUP NOMOUNT PFILE="./init.ora"
ORACLE instance started.

Total System Global Area  146472960 bytes
Fixed Size                  1317424 bytes
Variable Size              92276176 bytes
Database Buffers           50331648 bytes
Redo Buffers                2547712 bytes

SQL> COL NAME FORMAT a21
SQL> COL VALUE FORMAT a60
SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;

NAME                  VALUE
--------------------- --------------------------------------------------------
Diag Enabled          TRUE
ADR Base              /d1/3910926111/oracle/log
ADR Home              /d1/3910926111/oracle/log/diag/rdbms/dbn/osi
Diag Trace            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace
Diag Alert            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/alert
Diag Incident         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/incident
Diag Cdump            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/cdump
Health Monitor        /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/hm
Default Trace File    /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/osi_ora_29229.trc
Active Problem Count  0
Active Incident Count 0
ORACLE_HOME           /d1/3910926111/oracle
Attention Log         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/attention_osi.log
13 rows selected.

Log de Alertas

Cada banco de dados tem um log de alerta, que é um arquivo que contém um log cronológico de mensagens e erros do banco de dados.

O conteúdo do log de alerta inclui o seguinte:

Se uma operação administrativa for bem-sucedida, o Oracle AI Database gravará uma mensagem no log de alerta como "concluída" junto com um timestamp.

O Oracle AI Database cria um log de alerta no subdiretório alert mostrado na Figura 16-8 quando você inicia uma instância de banco de dados pela primeira vez, mesmo que nenhum banco de dados tenha sido criado ainda. Este arquivo está no formato XML. O subdiretório trace contém um log de alerta somente texto.

Consulte V$DIAG_INFO para localizar o log de alertas.

Log de Atenção

Cada banco de dados tem um log de atenção, contendo eventos críticos e altamente visíveis do banco de dados.

O log de atenção inclui apenas eventos críticos e altamente visíveis do banco de dados, permitindo que você identifique um alerta e execute a ação apropriada. Cada mensagem de log de atenção tem vários atributos, incluindo público-alvo, causa e uma ação a ser tomada. O log de atenção fornece informações no seguinte formato:

O Oracle AI Database cria um log de atenção chamado attention_ORACLE_SID.log no subdiretório trace mostrado na Figura 16-8. Você também pode consultar V$DIAG_INFO para localizar o log de atenção.

Log DDL

O log DDL tem o mesmo formato e comportamento básico do log de alerta, mas contém apenas instruções DDL e detalhes. O banco de dados grava informações DDL em seu próprio arquivo para reduzir a desordem no log de alertas.

Os registros de log DDL são textos DDL, opcionalmente aumentados com informações complementares. Existe um registro de log para cada instrução DDL. O log DDL é armazenado no subdiretório log/ddl do home do ADR.

Arquivos de Rastreamento

Um arquivo trace é um arquivo que contém dados de diagnóstico usados para investigar problemas. Além disso, os arquivos de rastreamento podem fornecer orientação para ajustar aplicativos ou uma instância.

Tipos de Arquivos de Rastreamento

Cada servidor e processo em segundo plano podem gravar periodicamente em um arquivo de rastreamento associado. Os arquivos contêm informações sobre o ambiente de processo, status, atividades e erros.

O recurso de rastreamento SQL também cria arquivos de rastreamento, que fornecem informações de desempenho sobre instruções SQL individuais. Você pode ativar o rastreamento de um identificador de cliente, serviço, módulo, ação, sessão, instância ou banco de dados de várias maneiras. Por exemplo, você pode executar os procedimentos apropriados no pacote DBMS_MONITOR ou definir eventos.

Consulte Também:

Locais dos Arquivos de Rastreamento

O ADR armazena arquivos de rastreamento no subdiretório trace. Os nomes dos arquivos de rastreamento dependem da plataforma e usam a extensão .trc.

Normalmente, os nomes dos arquivos de rastreamento do processo em segundo plano do banco de dados contêm o Oracle SID, o nome do processo em segundo plano e o número do processo do sistema operacional. Um exemplo de arquivo de rastreamento para o processo RECO é mytest_reco_10355.trc.

Os nomes dos arquivos de rastreamento do processo do servidor contêm o Oracle SID, a string ora e o número do processo do sistema operacional. Um exemplo de nome de arquivo de rastreamento de processo do servidor é mytest_ora_10304.trc.

Às vezes, os arquivos de rastreamento têm arquivos de metadados de rastreamento correspondentes, que terminam com a extensão .trm. Esses arquivos contêm informações estruturais chamadas mapas de rastreamento que o banco de dados usa para pesquisa e navegação.

Consulte Também:

Segmentação de arquivos de rastreamento

Quando o tamanho do arquivo de rastreamento é limitado, o banco de dados pode dividi-lo automaticamente em um máximo de cinco segmentos. Os segmentos são arquivos separados com o mesmo nome do arquivo de rastreamento ativo, mas com um número de segmento anexado, como em ora_1234_2.trc.

Cada segmento é normalmente 20% do limite definido por MAX_DUMP_FILE_SIZE. Quando o tamanho combinado de todos os segmentos excede o limite, o banco de dados exclui o segmento mais antigo (embora nunca o primeiro segmento, que pode conter informações relevantes sobre o estado inicial do processo) e, em seguida, cria um novo segmento vazio.

Consulte Também: Oracle AI Database Administrator's Guide para saber como controlar o tamanho dos arquivos de rastreamento

Dumps de Diagnóstico

Um arquivo de dump de diagnóstico é um tipo especial de arquivo de rastreamento que contém informações detalhadas pontuais sobre um estado ou uma estrutura.

Um traço tende a ser a saída contínua de dados de diagnóstico. Em contraste, um dump é normalmente uma saída única de dados de diagnóstico em resposta a um evento.

Rastrear Despejos e Incidentes

A maioria dos despejos ocorre por causa de incidentes.

Quando um incidente ocorre, o banco de dados grava um ou mais dumps no diretório de incidentes criado para o incidente. Os despejos de incidentes também contêm o número do incidente no nome do arquivo.

Durante a criação do incidente, um aplicativo pode executar um despejo de estado de heap ou do sistema como parte de uma ação. Nesses casos, o banco de dados anexa o nome do dump ao nome do arquivo de incidente em vez do nome do arquivo de rastreamento padrão. Por exemplo, devido a um incidente em um processo, o banco de dados cria o arquivo prod_ora_90348.trc. Um dump no incidente gera o arquivo prod_ora_90348_incident_id.trc, em que incident_id é o ID numérico do incidente. Uma ação de dump de heap criada como parte do incidente gera o arquivo de dump de heap prod_ora_90348_incident_id_dump_id.trc, em que dump_id é o ID numérico do dump de rastreamento.