ORA-01034:ORACLE不可用ORA-27101:共享内存域不存在

时间:2011-07-02 07:59:46

标签: oracle oracle11g ora-01034 ora-27101

尝试使用服务名orcl从客户端连接到服务器数据库时出现上述错误。当我使用其他服务名称dms

时,它正在连接

以下是我的listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = dms)
      (SERVICE_NAME = dms)
      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
#      (PROGRAM = extproc)
    )
  (SID_DESC =
     (SID_NAME = orcl)
     (SERVICE_NAME = dms)
    # (GLOBAL_DBANME = orcl)
      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
   #  (PROGRAM = extproc)
  )
  )


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521))

    )
  )

ADR_BASE_LISTENER = /home/oracle/app/oracle
and tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
     #(SERVICE_NAME = orcl.localdomain)
      (ORACLE_SID = dms)
      (SERVICE_NAME = orcl)
    )
  )

DMS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dms)
      (ORACLE_SID = dms)
    )
  )

请告诉我该怎么做?

16 个答案:

答案 0 :(得分:57)

打开命令提示符并执行以下命令:

set oracle_sid=DATABASE NAME
sqlplus /nolog
conn sys/sys as sysdba
shutdown abort
startup

答案 1 :(得分:18)

一段时间。数据库将无法正确安装,因此我们需要手动安装...为此,关闭它并启动它然后安装....运行以下命令

以oracle用户身份登录,然后

'sqlplus / as sysdba;'
'shutdown immediate;'
'startup nomount;'
'alter database mount;'
'alter database open;'

答案 2 :(得分:5)

确保您的ORACLE_HOME和ORACLE_SID正确无误 要在Windows中查看当前值,请在命令提示符下键入

echo %ORACLE_HOME%

然后

echo %ORACLE_SID%

如果值不是您当前的oracle home和SID,则需要更正它们。这可以在Windows环境变量中完成。

查看 this page for more info

答案 3 :(得分:2)

ORA-01034和ORA-27101通常表示您尝试连接的数据库实例已关闭,并且您没有以具有启动权限的用户身份进行连接。登录到服务器192.168.1.53并启动orcl实例,或让您的DBA为您执行此操作。

答案 4 :(得分:2)

我在SQLDeveloper上创建连接时面临同样的问题" ORA-01034:ORACLE不可用ORA-27101:共享内存领域不存在"

解决方案:

1.更新listene.ora文件以包含SID。

  

SID_LIST_LISTENER =

     
    

(SID_LIST =

         
      

(SID_DESC =

             
        

(SID_NAME = PLSExtProc)         (ORACLE_HOME = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)         (PROGRAM = extproc)         )         (SID_DESC =         (SID_NAME = CLRExtProc)         (ORACLE_HOME = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)         (PROGRAM = extproc)         )         (SID_DESC =         ((GLOBAL_DBNAME = XE.DB)         ((ORACLE_HOME = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)         ((SID_NAME = XE)         )         )

      
    
  
     

LISTENER =

     
    

(DESCRIPTION_LIST =

         
      

(DESCRIPTION =

             
        

(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1))         (ADDRESS =(PROTOCOL = TCP)(HOST = USMUMTBALAKDAS2.us.deloitte.com)(PORT = 1521))         )         )

      
    
  
     

DEFAULT_SERVICE_LISTENER =(XE)

Oraclexe目录可能将权限设置为" ReadOnly",更改目录/子目录读/写权限并重新启动侦听器服务。 问题解决了。

快乐的编码!干杯!!

答案 5 :(得分:2)

在Windows XP上遇到同样的问题。解决。 该错误是由于系统日志已满而引起的。 控制面板 - >管理工具 - >事件查看器 右键单击应用程序日志,清除所有事件,选择保存日志。 系统日志的过程相同。 重启,它应该工作。

答案 6 :(得分:2)

SQL> sqlplus "/ as sysdba"
SQL>startup
Oracle instance started
------
Database mounted.
Database opened.
Quit
[oracle@hcis ~]$ lsnrctl start

答案 7 :(得分:2)

即使ORACLE_HOME和ORACLE_SID似乎已正确设置,我也会遇到同样的错误。

问题出现在ORACLE_HOME中,它不应该以斜杠字符结尾。当我删除结束斜杠时,它开始正常工作。

## WRONG !!!
export ORACLE_HOME=/usr/local/oracle/11gR2/

## CORRECT
export ORACLE_HOME=/usr/local/oracle/11gR2

因此,即使看起来一切都配置正常,也请检查变量。

答案 8 :(得分:2)

在cmd中运行:

sqlplus / as sysdba;

然后:

SQL> create pfile='c:/init.ora' from spfile;

删除sga_target文件中的init.ora行,然后:

SQL> create spfile from pfile='c:/init.ora';
SQL> startup;

答案 9 :(得分:1)

我遇到了相同的shared memory realm does not exist症状(在Windows上),但原因不同。我刚刚安装了Oracle(XE)并经过一些故障排除后确定我的安装已损坏,因为我在安装时存在ORACLE_HOME环境属性。

如果这是TLDR,请跳至'解决方法:'!

我最初的症状是:

Message 850 not found; No message file for product=NETWORK, facility=NL

显然,Windows安装程序从注册表中读取ORACLE_HOME,并且不需要(当然在我的情况下不应该......)环境属性。

删除它,如下所示:

  1. 编辑系统环境设置(Windows键并启动 输入'env',你会看到这个选项出现。
  2. 删除名为ORACLE_HOME的所有用户和系统环境变量if 当下。 (记录他们的价值观,主要是出于兴趣,但可能是 如果你想因某种原因把它们放回来使用!)
  3. 重新启动计算机。只需注销即可捣乱 - 重启你的 机。 Windows Oracle安装默认使用Windows服务 并且您的安装目前非常糟糕 - 需要重新启动。
  4. 重新启动后,我能够获得除“无消息文件...”之外的错误消息,并且可以开始查看问题所在。 将ORACLE_SID设置为XE并连接@XE我得到了此页面中的错误,即以下症状:

    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    

    另一个症状是: 当启动'Get started'页面时,它无法连接,给出了一个未找到的错误(如果我没记错的话),尽管有Windows监听器& XE服务正在启动。如另一个答案所述,这可能是由于Windows服务未启动。在我的情况下,这些服务已经启动,因此其他一些配置错误。

    此时,我想可能我的安装刚刚出错,因为我应该重新安装我的糟糕的ORACLE_HOME环境属性。 (以前的重新安装没有帮助,但这些都是在我注意到ORACLE_HOME系统环境属性之前(可能是我一年前设置的!)。

    所以要解决:

    1. 关闭任何查看Oraclexe安装目录的应用程序(编辑器/资源管理器/ cmd提示)
    2. 快速浏览添加/删除程序并卸载OracleXe
    3. 仔细检查您是否在任何地方都没有设置ORACLE_HOME环境属性,请记住 - Windows将使用注册表项来获取它。
    4. 重新开始(不要冒险 - 我们长期参与其中!)
    5. 您确定没有ORACLE_HOME属性吗?
    6. 再次运行Oracle安装程序(如果适用,请使用本地管理员帐户)
    7. 你应该能够在工作安装中高兴。我做了,至少!

答案 10 :(得分:0)

您的listener.ora配置错误。没有orcl服务。

答案 11 :(得分:0)

我希望你已经解决了你的问题。如果仍有问题,请再次仔细检查是否在域帐户下安装此Oracle。我发现一个帖子说Oracle XE在域帐户下安装时会出现同样的错误。请改用本地帐户。

来源:

https://community.oracle.com/thread/2141735?start=0&tstart=0

答案 12 :(得分:0)

在这里,我只需要重新启动一台使用了9年的服务器,Oracle就给了我这个错误。

由于某种原因,服务器已被重命名,但是app/oracle/product/10.2.0/server/network/admin/listener.ora文件仍在声明带有旧主机的LISTENER。

我必须在/etc/hostname中输入与/etc/hosts中相同的名称,并且还要修复listener.ora中使用的名称。

答案 13 :(得分:0)

也可以尝试直接启动:

sqlplus /nolog
conn / as sysdba
startup

答案 14 :(得分:0)

浪费了很多时间后,我才知道连接数据库的语法有误。我使用的是冒号“ ”,而不是斜杠“ / ”。

(1)(如果您使用sid)是获得连接的语法:

**"jdbc:oracle:thin:@{hostname}:{port}:{SID}"**

(2)如果使用服务名称,则以下是获得连接的语法:

"**jdbc:oracle:thin:@//{hostname}:{port}/{servicename}**"

答案 15 :(得分:-1)

SQL> sqlplus“ /作为sysdba”

SQL>启动

  Oracle instance started
  ------
  Database mounted.
  Database opened.

SQL>退出

我也遇到了同样的问题。我尝试了上述步骤并 然后它对我有用。您可以尝试。