Como posso saber se um banco de dados Oracle está montado e ativado?

6

IANADBA, mas estou escrevendo um script que entrará em ação enquanto o banco de dados Oracle Standby não estiver ativado. O que estou procurando é duas consultas (ou conjuntos de consultas, se necessário).

1 - O banco de dados está montado (como em alguém que fez "alter database mount standby database")

2 - Como posso saber se o banco de dados está ativado (como em "alter database activate standby database")?

Como mencionei, estou procurando por consultas, mas se houver uma maneira de contar no sistema, também estou aberto a isso. Obrigado!

Atualizar

Eu peguei a sugestão abaixo (modificada, levemente, porque estou lidando com o Oracle 8i, e eu entendo isso:

 SQL>  SELECT INSTANCE_NAME, DATABASE_STATUS, INSTANCE_ROLE from v$instance; 

 INSTANCE_NAME    DATABASE_STATUS   INSTANCE_ROLE
 ---------------- ----------------- ------------------
 RGR01            ACTIVE            PRIMARY_INSTANCE

Neste momento, esta instância está recuperando ativamente logs de arquivamento, mas não está "ativa". Ainda estou procurando uma maneira de saber se ele não está montado como um banco de dados em espera.

    
por Matt Simmons 09.07.2009 / 19:42

5 respostas

9

Eu entendi!

CONTROLFILE_TYPE do v $ database é a chave

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 CURRENT

versus

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 STANDBY
    
por 09.07.2009 / 21:34
3

Isso funciona para uma espera física, Oracle 10g (e superior)

SELECT open_mode FROM v $ database;

Se o valor for:

  1. 'MOUNTED', seu banco de dados está montado.
  2. 'READ WRITE', então você pode assumir que ele foi ativado.
  3. 'READ ONLY', então ele pode ser aberto para consulta no modo somente leitura, mas não ativado.
  4. 'LER APENAS COM APLICAR' ao usar o dataguard ativo.

No primário:

select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

No escravo:

OPEN_MODE
--------------------    --------------------
MOUNTED              or READ ONLY WITH APPLY

Também pode haver outros valores, não tenho certeza.

HTH

    
por 09.07.2009 / 20:52
1

Isso pode ser excessivamente simplista para o que você procura, já que eu não estou muito familiarizado com os bancos de dados de espera

mas, enquanto a instância estiver ativa, você poderá consultar a visualização v $ instance e obter o status do banco de dados, por exemplo

SELECT INSTANCE_NAME, DATABASE_STATUS, INSTANCE_ROLE, ACTIVE_STATE FROM v$instance;
    
por 09.07.2009 / 20:00
0

Você poderia monitorar as conexões com o banco de dados via netstat / lsof? Provavelmente você notaria clientes começando a usá-lo.

Você também pode ver o log de arquivamento desses comandos.

    
por 09.07.2009 / 20:02
0

Eu realmente não sei a resposta para esta pergunta - "Como posso saber se um banco de dados Oracle é montado e ativado?", mas eu tenho que postar a resposta para que as pessoas saibam que por favor não se engane as respostas deste post porque a maioria está muito enganada .

  • Aqueles que estão dizendo que usam "v $ instance", estão absolutamente errados porque isso dirá se "instance" está montado ou começando ou ativo ou não. Observe que banco de dados e instância do banco de dados são coisas diferentes , portanto, se você não sabe a diferença, leia melhor e leia também sobre o Oracle RAC e o Oracle Data Gurard .

  • Aqueles que você está dizendo usar select CONTROLFILE_TYPE from v$database; também não estão certos porque, de acordo com Oracle esta coluna informa sobre as informações do arquivo de controle e informa se o banco de dados está no modo de espera ou no modo ativo, o que é diferente se o banco de dados foi montado ou se o banco de dados está ativo.

Como eu disse, acho muito importante entender a diferença entre o banco de dados e a instância do banco de dados e também saber o que é o Oracle RAC e o Oracle Data Gurard.

Suponha que eu tenha um banco de dados primário e outro banco de dados de databguard em standby, e os dois bancos de dados / instâncias estejam ativos para uso, mas veja a diferença das capturas de tela abaixo:

Banco de dados principal:

Bancodedadosdeproteçãodedadosemespera:

    
por 13.12.2016 / 23:37