Database

如何判斷 Oracle 數據庫是否已掛載和啟動?

  • December 13, 2016

IANADBA,但我正在編寫一個腳本,只要沒有啟動 oracle 備用數據庫,它就會採取行動。我正在尋找的是兩個查詢(或查詢集,如有必要)。

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

目前,此實例正在積極恢復存檔日誌,但不是“實時”的。我仍在尋找一種方法來判斷它是否沒有作為備用數據庫安裝。

我得到了它!

v$database 中的 CONTROLFILE_TYPE 是關鍵

SQL> select CONTROLFILE_TYPE from v$database; 

CONTROL
-------
CURRENT

相對

SQL> select CONTROLFILE_TYPE from v$database; 

CONTROL
-------
STANDBY

這適用於物理備用,Oracle 10g(和更高版本)

從 v$database 中選擇 open_mode;

如果值為:

  1. ‘MOUNTED’,您的數據庫已安裝。
  2. ‘READ WRITE’,那麼您可以假設它已被啟動。
  3. ‘READ ONLY’ 那麼它可能會以只讀模式打開以進行查詢,但未啟動。
  4. 使用活動數據保護時“僅適用於應用”。

在初級:

select database_role from v$database;

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

在奴隸上:

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

可能還有其他值,我不確定。

高溫高壓

引用自:https://serverfault.com/questions/38488