如何检查Oracle数据库是否启动?


14

对于我们的应用程序,我们有一个用于连接到Oracle数据库的配置文件(URL,用户名,密码)。

该应用程序需要2-5分钟才能启动。如果数据库有问题,我会在日志中看到此错误,但是我必须等待2-5分钟。这是很多时间。

因此,我想快速简单地找到一种确定数据库是否正常且在线的方法。

你知道我该怎么做吗?

Answers:


17

如果运行以下查询:

SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

它应该返回:

INSTANCE_NAME    STATUS       DATABASE_STATUS
---------------- ------------ -----------------
YOUR_DBASE       OPEN         ACTIVE

12

ps -ef | grep pmon

PMON(进程监视器)进程检查所有其他后台进程。然后,您必须检查警报日志以进行进一步调查。


4

首先,您需要知道用户名和密码才能连接到数据库进行第2步

  1. 检查oracle进程运行情况:

    在Un * x上:

    ps -ef|grep pmon

    在Windows上:

    tasklist|findstr /i oracle

    如果命令在任何情况下都返回输出,即如果您的环境中正在运行pmon / oracle进程,则数据库正在运行。

  2. 转到ORACLE_HOME/bin并运行:

     ./sqlplus /nolog

    如果登录后出现错误,则数据库不会运行:

    SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 31 21:61:61 2014
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    Enter user-name: oracle
    Enter password: 
    ERROR:
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Linux-x86_64 Error: 2: No such file or directory
    Process ID: 0
    Session ID: 0 Serial number: 0

1
Windows上sqlplus的开始将是sqlplus / nolog
IgorVuković17年

3

您应该使用/编写将连接到服务器的脚本,并查看数据库是否在线。在这里,Oracle员工将为您提供帮助。只需从批处理/ shell脚本执行它(请参阅从SQL命令行运行脚本)并查看其输出。如果一切都好,那么您有答案。

或者只是尝试使用SQL * Plus客户端。


0

对数据库运行实际查询也是明智的。这只是确保您可以连接和查询。我将使它变得非常简单和快速,例如:

SELECT pk_column 
  FROM sometable
WHERE rownum <= 1

0

PMON将检查所有bg进程

ps -ef|grep pmon

另外,我们可以检查数据库是否正在运行。

ps -ef|grep mydb

-1

要检查数据库的一般状态,我建议:

  1. 检查数据库进程是否正在运行。例如,从Unix shell运行:

    $ ps -ef | grep pmon

    将显示正在运行的数据库,启动时间以及每个Oracle用户启动的数据库。

  2. 使用$ ps -ef | grep tns和检查监听器是否正在运行$ lsnrctl status LISTENER

  3. 选择gv$resource_limit将显示数据库是否达到某些配置的限制。

  4. 要检查是否有任何数据库错误,应检查alert.log

有关更多详细信息,请参阅我的博客文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.