欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 11g 中告警日志的位置

发布时间:2024/8/26 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Oracle 11g 中告警日志的位置 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Oracle 11g 中告警日志的位置

首先介绍2个新名词
Automatic Diagnostic Repository (ADR)一个存放数据库诊断日志、跟踪文件的目录,称作ADR base,对应初始化参数DIAGNOSTIC_DEST,如果设置了ORACLE_BASE环境变量,DIAGNOSTIC_DEST等于 ORACLE_BASE,如果没有设置ORACLE_BASE,则等与ORACLE_HOME/log。
SQL> show parameter DIAGNOSTIC
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /oracle/oracle二.aelrt xml file
在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。
这两份log文件的位置分别是V$DIAG_INFO中的Diag Alert 和Diag Trace 对应的目录。1.通过查询v$diag_info视图获得ADR相关的信息
代码:
sys@ora11g>select * from v$diag_info;
INST_ID NAME VALUE
------- ---------------------- ----------------------------------------------
1 Diag Enabled TRUE
1 ADR Base /oracle/u01/app/oracle
1 ADR Home /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g
1 Diag Trace /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace
1 Diag Alert /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/alert
1 Diag Incident /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/incident
1 Diag Cdump /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/cdump
1 Health Monitor /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/hm
1 Default Trace File /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_3968.trc
1 Active Problem Count 0
1 Active Incident Count 0
11 rows selected.
2.其中Diag Trace对应的目录为文本格式的警告日志,及我们经常习惯使用的日志
代码:
ora11g@RHEL53 /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace$ls -l alert_ora11g.log
-rw-r----- 1 oracle oinstall 72513 Feb 27 14:29 alert_ora11g.log
3.其中Diag Alert对应的目录为XML格式的警告日志
代码:
ora11g@RHEL53 /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/alert$ls -l log.xml
-rw-r----- 1 oracle oinstall 327254 Feb 27 14:29 log.xml
4.我习惯将查看警告日志定义为同名alert在操作系统上直接查看
代码:
ora11g@RHEL53 /home/oracle$alias alert
alias alert='tail -200f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
5.使用同名进行查看
代码:
ora11g@RHEL53 /home/oracle$alert      错误现象
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

解决方案

假如TNSPING SID正常, 服务启动正常没有出现“启动中”这些现象

可以尝试
C:\>oradim -delete -sid sfis
C:\>oradim -new -sid sfis -startmode auto -pfile d:\pfile\initsfis.ora

或者

启动数据库

原因 

Oracle Database的主机被异常关机,或者重新安装部分Oracle软件,造成SERVICE损坏,所以删除重建可以解决。

     

一. 问题描述

在一次数据库灾难恢复过程中,数据库恢复到一个新的环境里,并且数据库已经成功启动了,可以在服务器上登录与访问。但客户端在访问时却报了ORA-27101的错误,无法通过定义数据库连接串远程连接到这个数据库。在数据库服务器上,定义一个访问本地数据库的连接串,使用这个连接串连接也报同样的错误。

错误的现象与现场如下:

$export ORACLE_SID=Port

本地可以使用管理员登录,数据库为open状态


$sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Feb 18 09:44:01 2011

Copyright (c) 1982, 2006, Oracle.All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> select open_mode from v$database;

OPEN_MODE

----------

READ WRITE

服务器与客户端的连接串定义如下:

$more $ORACLE_HOME/network/admin/tnsnames.ora

。。。。。。

port =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =10.192.215.77 )(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = port)

)

)

通过tnsping命令测试连接,服务器和客户端都是正常的,如下:

$ tnsping port

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =10.192.215.77)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = port)))

OK (90 msec)

通过sqlplus进行远程登录,报下面的错误:

$ sqlplus user1/pwd1@port

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

IBM AIX RISC System/6000 Error: 2: No such file or directory

Enter user-name:

二. 问题分析

首先检查数据库服务器的文件系统的操作权限,发现没有问题;

接着检查服务器的网络状况,也没有发现问题;

在ORACLE METALINK 网站上找到一遍文章,ID=122183.1,在该文中提到了listener.ora文件中,SID_NAME是大小写敏感的,如下:

Database Connections Fail With ORA-27101 Shared Memory Realm Does Not Exist [ID 122183.1]

For remote (TCP/listener) connections:

  • Review the listener.ora currently used to startup the listener and verify the ORACLE_HOME value is correct for all listed Oracle databases. If the ORACLE_HOME points to a different Oracle version then what was used when the database was created, then this error can occur.
  • Likewise, review the listener.ora currently used to startup the listener and verify the SID_NAME value is correct and has the right value (the SID_NAME is case sensitive).
  • 检查数据库服务器的LISTENER.ORA文件,发现SID_NAME大小写书写错误了.

    $more $ORACLE_HOME/network/admin/listener.ora

    SID_LIST_LISTENER=

    (SID_LIST =

    (SID_DESC =

    (GLOBAL_DBNAME = PORT)

    (SID_NAME = PORT)

    )

    )

    LISTENER =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.192.215.77)(PORT =1522))

    )

    而数据库的实例名称为Port,通过查询系统进程的名称可以确认

    $ps -ef|grep ora

    。。。。。。

    oracle 19261210Dec 09- 16:12 ora_cjq0_Port

    oracle22143610Dec 09- 13:55 ora_pmon_Port

    oracle28695610Dec 09-7:41 ora_mman_Port

    oracle29919010Dec 09- 15:24 ora_mmon_Port

    到此找到了问题的根源,原来是数据库监听配置文件的内容配置不当(SID_NAME没有注意大小写),导致了通过定义数据库连接串无法远程访问数据库的故障

    三. 问题解决

    修改监听器配置文件,内容修改如下:

    $more $ORACLE_HOME/network/admin/listener.ora

    SID_LIST_LISTENER=

    (SID_LIST =

    (SID_DESC =

    (GLOBAL_DBNAME = Port)

    (SID_NAME = Port)

    )

    )

    LISTENER =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.192.215.77)(PORT =1522))

    )

    重新启动监听器,如下:

    $lsnrctl start listener

    在服务器与客户端进行数据库连接,可以成功登录了,如下:

    $ sqlplus user1/pwd1@port

    SQL*Plus: Release 10.2.0.3.0 - Production on Fri Feb 18 09:44:01 2011

    Copyright (c) 1982, 2006, Oracle.All Rights Reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    问题等到解决,笔者重新查阅了ORACLE 的HELP 文档,在network相关的章节,找不到SID_NAME 需要注意大小写的说明,只能在METALINK文档中可以查到相关的说明。

        我的数据库ora10g for linux停机后,重启启动正常,但应用程序联入数据库时失败报以下错:
    Caused by: java.sql.SQLException: ORA-01034: ORACLE not available 
    ORA-27101: shared memory realm does not exist 
    Linux Error: 2: No such file or directory 

    查询数据库是正常的已启动:
    SQL> select status from v$instance;

    STATUS
    ------------
    OPEN

    SQL> 

    通过仔细回想最近对数据库作了什么操作,仅修改过profile呀。原profile如下:
    #oracle 10g
    TMP=/tmp; export TMP
    TMPDIR=$TMP; export TMPDIR
    ORACLE_BASE=/ora10g/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/10.2/; export ORACLE_HOME
    ORACLE_SID=ora10g; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    PATH=/usr/sbin:$PATH; export PATH
    PATH=$ORACLE_HOME/bin:$PATH; export PATH
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
    if [$USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
           ulimit -p 16384
           ulimit -n 65536
         else
          ulimit -u 16384 -n 65536
        fi
      fi

    我在另一次oracle安装时发现ORACLE_HOME=$ORACLE_BASE/product/10.2/; export ORACLE_HOME这个设置会导致安装时自动识别出的$ORACLE_HOME会是
    $ORACLE_BASE/product/10.2// 所以把原安装的数据库profile中的ORACLE_HOME=$ORACLE_BASE/product/10.2/;修改成了ORACLE_HOME=$ORACLE_BASE/product/10.2;最近将老数据重启之后就应用联不上了报上面的错:
    Caused by: java.sql.SQLException: ORA-01034: ORACLE not available 
    ORA-27101: shared memory realm does not exist 
    Linux Error: 2: No such file or directory 

    后来将其修改回来就好了。

    不过在metalink上查到的都不是上面的解决办法,觉得很怪   刚重装了个Oracle 9, 今天用sqlplus连的时候报下面的error: > export ORACLE_SID=OTA26
    > sqlplus /nologSQL*Plus: Release 9.2.0.7.0 - Production on Sat Jan 13 16:34:00 2007Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.SQL> conn GCSCADMIN/GCSCADMIN
    ERROR:
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Linux Error: 2: No such file or directory
     查了一下,发现oracle装在/opt/oracle/product/9ir2下,但是为了方便建立了一个link,是/opt/oracle/9.2.0。在listener.ora里设置的是 ORACLE_HOME=/opt/oracle/9.2.0,但是在用户的环境变量里设置的是 ORACLE_HOME=/opt/oracle/product/9ir2。这样虽然两个ORACLE_HOME指向了同一个目录,但是Oracle会认为这是两个不同的ORACLE_HOME,从而报错。 将用户环境变量和listener.ora里的ORACLE_HOME设成完全一样的就可以避免这个error     ORA-27101: shared memory realm does not exist  

    2010-12-01 15:18:00|  分类:oracle问题|  标签:|字号大中小 订阅

    csdn网友,求助


    引用:
    SQL> conn 
    请输入用户名: gzdw 
    输入口令: 
    ERROR: 
    ORA-01034: ORACLE not available 
    ORA-27101: shared memory realm does not exist 
    SQL> conn /as sydba 
    已连接到空闲例程。 
    SQL> select * from v$instance 
    2 ; 
    select * from v$instance 

    第 1 行出现错误: 
    ORA-01034: ORACLE not available


    SQL> select * from v$instance 
    这一句都出错,是很显然的问题,数据库连第一步nomount都还没有成功,

    也就是load spfile文件还没有成功,

    oracle在启动的时候,分为三步,详细可以参考帖子 
    层层深入,步步探究-Oracle的启动模式详探 

    原因可能是 
    1. spfile文件损坏,根据你的提示应该不是 
    2. 内存设置过大,很有可能是这个问题。

    解决方法 
    SQL> create pfile='c:mypfile.ora' from spfile; 
    File created.

    把你的spfile文件导出到指定的pfile文件,打开pfile文件 
    修改其中的内存选项 
    sga_target和sga_max_size选项,选择小一些,修改好后,保存

    然后运行 
    SQL>startup pfile='c:mypfile.ora' nomount; 尝试启动到nomount 
    如果可以启动到nomount,表示我们已经修改成功,

    备份你的spfile文件,spfile文件在ORACLE_HOME/database下

    备份后 
    运行 
    SQL>create spfile from pfile='c:mypfile.ora'; 
    用pfile生成新的spfile文件。

    现在可以shutdown immediate 
    然后用 
    SQL>startup q启动了

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/inthirties/archive/2009/09/17/4560897.aspx

     

     

    今天正常启动Oracle服务后,打开SQL*Plus,用SCOTT登录时提示:

    ORA-01034: ORACLE not available

    ORA-27101: shared memory realm does not exist。

     

    从网上搜了一下,原因肯定是哪个启动参数出了问题。于是按照如下的步骤解决:

    1: 用SYS用户登录:conn / as sysdba

    2:从SPFILE文件创建PFILE文件(因为SPFILE文件是二进制的,而PFILE是文本文件)

    create pfile='d:\aa.ora' from spfile;

    3: 打开aa.ora文件,适当修改某些参数。

    4:从修改后的PFILE文件创建SPFILE文件

    create spfile from pfile='d:\aa.ora';

    5: 打开数据库

    startup

     

    注意:1:最好在修改修文件前先备份一下。

    2:如何判断哪个参数不正常呢?可以在修改前先STARTUP一下,应该有提示

     

     

    问题描述 
    =======

    在试图启动或连接数据库的时候 ,Oracle报告下列错误: 
    ERROR: 
    ORA-27101 Shared memory realm does not exist 
    ORA-01034 ORACLE not available

    基本解释 
    ======= 
    Error: ORA-27101 
    Text: shared memory realm does not exist 
    ------------------------------------------- 
    Cause: Unable to locate shared memory realm 
    Action: Verify that the realm is accessible


    原因: 
    机器加入了域,或者安装了多个实例 
    如何解决 
    =======

    这个问题其实用一句话就可以说清楚:

    ORACLE_HOME或者ORACLE_SID设置不正确。

    在以前的版本中,如果 ORACLE_SID不正确,一般都只提示ORA-01034。Oracle 8.1.7 给出一个额外的信息:ORA-27101。

    ->如果是Unix,在Shell里把ORACLE_SID设置正确即可(注意大小写敏感的问题)。 
      此外,检查ORACLE_HOME环境变量。如何检查参考如下的命令:

    % echo $ORACLE_SID 
    % ps -ef |grep smon

    ->如果是Windows,一般都是因为系统中有多个实例造成的。

     可以在命令行下  C:\>set ORACLE_SID=DEMO

     把这里的 DEMO换为你相应的实例名。

     如果还不行的话,检查注册表中的 ORACLE_HOME。


      此外,在Windows环境下有的时候连接不上远程的数据库,会报告如此的错误。

    解决办法是把 sqlnet.ora文件中的 
      SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS换为NONE. 
    或者使用Net Assistant进入后 本地->概要文件->Oracle Advanced Security选项卡把NTS从右边删除掉。 
    最后重新启动数据库或者重新启Oracle的服务就OK了

    总结

    以上是生活随笔为你收集整理的Oracle 11g 中告警日志的位置的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。