【问题标题】:How do I check if a database is running in read only mode?如何检查数据库是否以只读模式运行?
【发布时间】:2013-12-10 00:29:33
【问题描述】:

如何检查 oracle 数据库是否以只读模式运行?

我正在查看下面的 api 方法,但无论数据库是否处于只读模式,它都会返回 false。 这个方法的源代码,除了返回 false 什么都不做。

http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDatabaseMetaData.html#isReadOnly__

感谢任何帮助!

【问题讨论】:

  • 当 JDBC 驱动程序告诉您不是只读模式时,为什么您认为数据库处于只读模式?可以以只读模式启动数据库,但这非常非常罕见。
  • 你控制数据库吗?一种明显但蛮力的方法是尝试更新表中的一行并查看它是否成功。您可以为此目的留出一张表,其中只有一行,其中不包含任何有意义的数据。
  • @Gilbert, David - 谢谢,我想到了这一点,但我想把它作为最后的选择,无论如何都会记住这一点。
  • @JustinCave 最初的问题是,我们有 2 个数据库来支持 JBOSS 作为 APP 服务器的故障转移。由于某些原因,在少数情况下甚至主数据库都没有关闭,jboss 切换到辅助数据库,而辅助数据库仍处于只读模式,这导致应用程序失败。

标签: java oracle


【解决方案1】:

试试:

select open_mode from v$database;

【讨论】:

  • 谢谢,这是一个简单的方法,但是我们使用的数据库用户没有权限查询这个表。这就是为什么我尝试使用任何 API(如果有的话)。
  • 抱歉,我不是 Java 人,所以,我无法为您提供 Java API 选项。正如其他人建议的那样,您可以尝试 DML,然后检查 ORA-016000 错误。如果在 DML 尝试时得到 ORA-016000,则数据库是只读的。
猜你喜欢
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
相关资源
最近更新 更多