尝试在内部连接到 Oracle,获取空闲实例?
所以我有一个 Oracle 实例,并且我知道它正在该系统上运行,我已经向 oracle 用户授予了 su 权限,并且我正在尝试使用“/ as sysdba”进行连接。 但是,当我连接时,它说该实例处于空闲状态。 我知道数据库已启动并打开,因为我的应用程序正在与它通信。 我的路径(ORACLE_HOME 等)可能不正确:知道哪个不正确的设置可能会导致这种情况吗?
% sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 8 09:23:22 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
09:23:22 SQL> Disconnected
% ps -ef | grep smon
oracle 6961 1 0 Nov 05 ? 1:24 ora_smon_ORA003
%
So I have an Oracle instance, and I know it's running on this system, I've su'd to the oracle user, and I'm trying to connect using "/ as sysdba". However, when I do connect, it says the instance is idle. I know the database is up and opened, because my application's talking to it. My paths (ORACLE_HOME, etc.) might be incorrect: any idea which incorrect setting might result in this?
% sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 8 09:23:22 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
09:23:22 SQL> Disconnected
% ps -ef | grep smon
oracle 6961 1 0 Nov 05 ? 1:24 ora_smon_ORA003
%
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
确保 ORACLE_HOME 设置与服务器启动时完全相同,我在Solaris 上的oracle 9.2.0.5.0 上看到过这个问题,
这是两个不同的事情,并且会导致本地连接问题。
make sure you have your ORACLE_HOME setup exactly the same as when the server was started, I've seen this problem with oracle 9.2.0.5.0 on solaris,
is two different things, and will result in issues connecting locally.
这意味着数据库实例未安装或打开。 执行startup命令并查看是否出现任何错误。
that means that the database instance is not mounted nor open. Execute the startup command and see if any errors appear.
谢谢。 它确实是 ORACLE_HOME 变量末尾的额外前斜杠。
就我而言,请参阅奇怪的地方 - 我登录到服务器并尝试连接,但收到上述错误。 我知道实例已启动并且数据库已打开。 所以检查了 ORACLE_HOME 因为我有点意识到这种可能性。 我看到的是 ORACLE_HOME 很好(即末尾没有多余的前斜杠)。 然后,在我尝试了很多之后,当我读到这篇文章时,它让我震惊。 数据库是通过使用额外的前斜杠设置的 ORACLE_HOME 启动的。 所以DB是从
ORACLE_HOME=/u01/app/oracle/product/10.2.0.3/
一直以来,我都在尝试
ORACLE_HOME=/u01/app/oracle/product/10.2.0.3
:(
再次感谢。
thanks. it indeed was that extra front slash at the end in ORACLE_HOME variable.
In my case, see the wierdness - I logged in to the server and tried connecting but got the above error. I knew that instance was up and DB was opened. So checked the ORACLE_HOME because I was sort of aware about this possibility. What I saw was that ORACLE_HOME was fine (i.e. no extra front slash at the end). Then after trying a lot when I read this thread, it struck me. The DB was started with ORACLE_HOME set with that extra front slash. So DB was started with
ORACLE_HOME=/u01/app/oracle/product/10.2.0.3/
and all the while, I was trying with
ORACLE_HOME=/u01/app/oracle/product/10.2.0.3
:(
Thanks again.
数据库不能同时处于空闲状态和被应用程序使用。 看来 sqlplus 会话必须连接到与应用程序不同的实例。 尝试在连接语句中指定连接标识符,如下所示:
The database cannot be idle and in use by your application at the same time. It seems like the sqlplus session must be connected to a different instance than the application. Try specifying the connect identifier in the connect statement as follows:
在 *nix 系统上大小写很重要,因此请确保您的 ORACLE_SID 与实例名称完全匹配。 在这种情况下,ORA003 与 ora003 不同。
Case is significant on *nix systems, so make sure your ORACLE_SID exactly matches the instance name. In this case, ORA003 is NOT the same as ora003.
尝试从机器控制台
我知道在 Windows 上有一个命令来创建一个服务来为您启动一个实例,
oradmin -new -sid %ORACLE_SID% -intpwd %oracle_pwd% -startmode A
try from the machine console
I know on windows there is a command to create a service to start up an instance for you,
oradmin -new -sid %ORACLE_SID% -intpwd %oracle_pwd% -startmode A
我有同样的问题。
通过删除 ORACLE_HOME 末尾多余的“/”解决了这个问题。
感谢分享 - 如果没有这个博客,诊断和解决这个问题真的很困难。
I had the same problem.
By removing the extra "/" at the end of ORACLE_HOME solved it.
Thanks for sharing - it would have been really difficult to diagnose and resolve this problem in the absence of this blog.
尝试使用
sqlplus sys/sys as sysdba
登录,输出应该如下所示:\n
Try this Login with
sqlplus sys/sys as sysdba
OUTPUT SHOULD BE LIKE:\n
好的,这是我发现的有关实例空闲的信息
它与 spfile 有关。有时您的
init.ora
位于其他位置,尝试搜索
init.ora
,找到位置后尝试该代码
startup spfile="C:\location";
它会说实例已启动。
好吧,那对我有用
Ok here's what i've Found out about instance idle
it has to do with the spfile.. sometimes your
init.ora
is located somewhere elsetry to search for
init.ora
, once you found the locationtry that code
startup spfile="C:\location";
it will say that instance started.
well that one worked for me
我在指定错误的 SID(xe 而不是 XE)时遇到了同样的问题。
如果使用 rpm 安装数据库,请检查 /etc/inid.d/oracle 中的所有环境
I had same issue while specify wrong SID (xe instead of XE).
If you install database with rpm, check all enviroment at /etc/inid.d/oracle
问题可能是由于数据库极其繁忙而无法打开会话。
在这种情况下,使用任何用户(甚至虚拟用户)连接一个
sqlplus dummy/dummy
都会给您带来实际问题,但不会给您带来空闲实例。
The problem can be if the session could not be opened due to extremally busy database.
in this case connection using any user even dummy one
sqlplus dummy/dummy
would give you actual problem but not idle instance.
我尝试了 sqlplus dummy/dummy,它给了我实际的问题(内存不足)。 我使内存可用,并且能够毫无问题地登录。
I tried sqlplus dummy/dummy and it gave me the actual issue (out of memory). I made memory available and I was able to login without any issue.
只需输入:
然后
just type :
then