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了