如何判斷Oracle資料庫是否已安裝並啟動?

如何判斷Oracle資料庫是否已安裝並啟動?

IANADBA,但我正在編寫一個腳本,只要 oracle 備用資料庫尚未激活,該腳本就會採取行動。我正在尋找的是兩個查詢(或一組查詢,如果需要的話)。

1 - 資料庫是否已安裝(例如,是否有人執行“alter database mountstandby database”)

2 - 如何判斷資料庫是否已啟動(如“alterdatabaseactivatestandbydatabase”)?

正如我所提到的,我正在尋找查詢,但如果系統中有一種方法可以告訴我,我也對此持開放態度。謝謝!

更新

我採納了下面的建議(稍作修改,因為我正在處理 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. 'READ ONLY' 那麼它可能會以唯讀模式開啟以供查詢,但不會啟動。
  4. 使用活動資料防護時「唯讀並套用」。

在小學:

select database_role from v$database;

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

在奴隸上:

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

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

華泰

答案3

我真的不知道這個問題的答案 - “如何判斷 Oracle 資料庫是否已安裝並啟動?”,但是我必須發布答案,讓人們知道,請不要被這篇文章的答案誤導,因為大多數答案都是嚴重錯誤的

  • 那些說使用「v$instance」的人絕對是錯誤的,因為這將告訴「instance」是否已安裝、正在啟動或處於活動狀態。請注意,資料庫和資料庫實例是不同的東西,所以如果您不知道差異,那麼最好閱讀,並且還閱讀有關Oracle RAC 和 Oracle Data Guard

  • 你所說的使用select CONTROLFILE_TYPE from v$database;也不正確,因為根據甲骨文該列講述控製文件訊息,並告知資料庫處於備用模式還是活動模式,這與資料庫是否已安裝或資料庫是否處於活動狀態不同。

就像我說的,我認為了解資料庫和資料庫實例之間的差異以及了解什麼是 Oracle RAC 和 Oracle Data Gurard 非常重要。

假設我有一個主資料庫和另一個備用 databguard 資料庫,並且兩個資料庫/實例都處於活動狀態可供使用,但請從下面的螢幕截圖中看到差異:

主資料庫:

在此輸入影像描述

備用資料衛士資料庫:

在此輸入影像描述

答案4

您可以透過 netstat/lsof 監視與資料庫的連線嗎?想必您會注意到客戶開始使用它。

您也許也可以查看這些指令的存檔日誌。

相關內容