如何判断 Oracle 数据库是否已挂载和激活?

Mat*_*ons 6 oracle sql database

IANADBA,但我正在编写一个脚本,只要尚未激活 oracle 备用数据库,该脚本就会采取行动。我正在寻找的是两个查询(或查询集,如有必要)。

1 - 数据库是否已挂载(例如,有人做过“更改数据库挂载备用数据库”)

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
Run Code Online (Sandbox Code Playgroud)

目前,此实例正在积极恢复存档日志,但不是“实时”的。我仍在寻找一种方法来判断它是否没有作为备用数据库安装。

Mat*_*ons 9

我知道了!

来自 v$database 的 CONTROLFILE_TYPE 是关键

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 CURRENT
Run Code Online (Sandbox Code Playgroud)

相对

 SQL> select CONTROLFILE_TYPE from v$database; 

 CONTROL
 -------
 STANDBY
Run Code Online (Sandbox Code Playgroud)