如何判断 Oracle 数据库是否已安装并激活?

如何判断 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

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

答案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. '读写',那么您可以假设它已被激活。
  3. '只读' 那么它可能以只读模式打开以供查询,但不会被激活。
  4. 使用活动数据保护时,‘只读且应用’。

在主服务器上:

select database_role from v$database;

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

在从站上:

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

可能还有其他价值,我不确定。

高血压

答案3

我真的不知道这个问题的答案——“如何知道 Oracle 数据库是否已安装并激活?”,但是我必须发布答案,让人们知道,请不要被这篇文章的答案误导,因为大多数答案都是严重错误的

  • 那些说使用“v$instance”的人是完全错误的,因为这将告诉您“实例”是否已安装或正在启动或处于活动状态。请注意,数据库和数据库实例是不同的东西,所以如果你不知道区别,那么最好阅读,也阅读关于Oracle RAC 和 Oracle 数据保护

  • 你所说的使用select CONTROLFILE_TYPE from v$database;也是不正确的,因为根据甲骨文此列讲述控制文件信息,并告诉数据库是否处于待机模式还是活动模式,这与数据库是否已安装或数据库是否处于活动状态不同。

正如我说的,我认为了解数据库和数据库实例之间的区别以及了解什么是 Oracle RAC 和 Oracle Data Gurard 非常重要。

假设我有一个主数据库和另一个备用 databguard 数据库,并且两个数据库/实例都处于活动状态可供使用,但从下面的屏幕截图中可以看出区别:

主数据库:

在此处输入图片描述

备用数据保护数据库:

在此处输入图片描述

答案4

您能通过 netstat/lsof 监控数据库连接吗?想必您会注意到客户端开始使用它。

您还可以查看这些命令的存档日志。

相关内容