Oracle データベースがマウントされアクティブ化されているかどうかはどうすればわかりますか?

Oracle データベースがマウントされアクティブ化されているかどうかはどうすればわかりますか?

IANADBA ですが、Oracle スタンバイ データベースがアクティブ化されていない限りアクションを実行するスクリプトを作成しています。探しているのは、2 つのクエリ (または必要に応じてクエリのセット) です。

1 - データベースはマウントされていますか (つまり、誰かが「alter database mount standby database」を実行しましたか)

2 - データベースがアクティブ化されているかどうかはどうすればわかりますか (「alter database activate standby database」のように)?

先ほども申し上げたように、私は質問を探していますが、システム内で判断する方法があれば、それも構いません。ありがとうございます!

アップデート

私は以下の提案を採用しました (Oracle 8i を扱っているため、若干修正しました)。その結果、次のようになりました。

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

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

現在、このインスタンスはアーカイブ ログをアクティブに回復していますが、「ライブ」ではありません。スタンバイ データベースとしてマウントされていないかどうかを確認する方法をまだ探しています。

答え1

わかった!

v$databaseのCONTROLFILE_TYPEがキーです

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 CURRENT

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 STANDBY

答え2

これは、フィジカルスタンバイ、Oracle 10g(およびそれ以降)で機能します。

v$databaseからopen_modeを選択します。

値が次の場合:

  1. 「MOUNTED」、データベースがマウントされました。
  2. 「READ WRITE」であれば、アクティブ化されていると想定できます。
  3. 「読み取り専用」の場合、クエリ用に読み取り専用モードで開かれますが、アクティブ化されません。
  4. アクティブ データガードを使用する場合は、「READ ONLY WITH APPLY」を使用します。

プライマリの場合:

select database_role from v$database;

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

スレーブの場合:

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

他にも値があるかもしれませんが、よくわかりません。

HTH

答え3

「Oracleデータベースがマウントされアクティブ化されているかどうかはどうすればわかりますか?」という質問に対する答えは本当にわかりませんが、この投稿の回答のほとんどがひどく間違っているので、誤解されないように人々に知らせるために回答を投稿する必要があります。

  • 「v$instance」を使用すると言う人は完全に間違っています。なぜなら、それは「instance」がマウントされているか、起動しているか、アクティブかどうかを示すからです。データベースとデータベースインスタンスは異なるものであることに注意してください違いが分からない場合は、読んでみてください。Oracle RAC および Oracle Data Guard

  • あなたが使用しているselect CONTROLFILE_TYPE from v$database;と言っているものも正しくありません。オラクルこの列は制御ファイル情報を示し、データベースがスタンバイ モードかアクティブ モードかを示します。これは、データベースがマウントされているかどうかや、データベースがアクティブかどうかとは異なります。

先ほども述べたように、データベースとデータベース インスタンスの違いを理解し、Oracle RAC と Oracle Data Gurard が何であるかを知ることは非常に重要だと思います。

プライマリ データベースと別のスタンバイ データベースがあり、両方のデータベース/インスタンスがアクティブで使用可能であるとします。ただし、以下のスクリーン ショットから違いを確認してください。

プライマリデータベース:

ここに画像の説明を入力してください

スタンバイ データ ガード データベース:

ここに画像の説明を入力してください

答え4

netstat/lsof 経由でデータベースへの接続を監視できますか? おそらく、クライアントがそれを使い始めていることに気付くでしょう。

これらのコマンドのアーカイブ ログを監視することもできます。

関連情報