Database
如何判斷 Oracle 數據庫是否已掛載和啟動?
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;
如果值為:
- ‘MOUNTED’,您的數據庫已安裝。
- ‘READ WRITE’,那麼您可以假設它已被啟動。
- ‘READ ONLY’ 那麼它可能會以只讀模式打開以進行查詢,但未啟動。
- 使用活動數據保護時“僅適用於應用”。
在初級:
select database_role from v$database; DATABASE_ROLE ---------------- PRIMARY
在奴隸上:
OPEN_MODE -------------------- -------------------- MOUNTED or READ ONLY WITH APPLY
可能還有其他值,我不確定。
高溫高壓