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

Posted

技术标签:

【中文标题】ORA-01034: ORACLE 不可用 ORA-27101: 共享内存领域不存在【英文标题】:ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 【发布时间】:2011-09-27 04:52:06 【问题描述】:

我在尝试使用服务名称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)
    )
  )

请告诉我该怎么做?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你能帮我在 Linux 中使用相同的命令集吗?我正在使用 RHEL。 @EKta: 对于 linux:只需使用 export ORACLE_SID=<your database name> 代替,其余相同 为什么当我尝试使用 'connect' cmd 连接时,我得到 ORA-27101,但是当我将 conn sys/sys 作为 sydba 时,我能够连接? 【参考方案2】:

有时,数据库不会正确挂载,所以我们需要手动挂载。为此,将其关闭并启动,然后安装。以 oracle 用户登录,然后运行以下命令:

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

【讨论】:

挂载然后闪回到以前的还原点为我修复它【参考方案3】:

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

【讨论】:

【参考方案4】:

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

echo %ORACLE_HOME%

然后

echo %ORACLE_SID%

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

查看 this page for more info

【讨论】:

这个答案足够接近触发我的解决方案。尽管我的 $ORACLE_HOME 和 $ORACLE_SID 变量是正确的,但我的进程正在调用一个名为错误 SID 的参数文件。【参考方案5】:
SQL> sqlplus "/ as sysdba"
SQL> startup

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

SQL> Quit

[oracle@hcis ~]$ lsnrctl start

【讨论】:

startup 似乎不起作用,似乎数据库设置问题SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/opt/oracle/product/12.2.0.1/dbhome_1/dbs/initxe.ora' 对于新安装的 Oracle 19c 数据库,在创建任何数据库以供使用之前,这有助于启动我的数据库。我没有注意到我没有启动它,我想知道 ORA-01034 是从哪里来的。【参考方案6】:

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

【讨论】:

【参考方案7】:

在cmd中运行:

sqlplus / as sysdba;

然后:

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

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

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

【讨论】:

【参考方案8】:

即使ORACLE_HOMEORACLE_SID 似乎设置正确,我也遇到了同样的错误。

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

# ❌ INCORRECT
export ORACLE_HOME=/usr/local/oracle/11gR2/

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

所以,即使看起来一切都配置得很好,请检查你的变量。

【讨论】:

【参考方案9】:

我在 SQLDeveloper “ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist”上创建连接时遇到了同样的问题

解决办法:

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”,更改目录/子目录权限为读/写并重启监听服务。 问题解决了。

【讨论】:

【参考方案10】:

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

如果这是 TLDR,请跳至“So to resolve:”!

我最初的症状是:

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

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

去掉,如下:

    编辑系统环境设置(Windows 键和启动 输入“env”,你应该会看到这个选项出现。 删除任何名为 ORACLE_HOME 的用户和系统环境变量,如果 展示。 (记下他们的价值观,主要是出于兴趣,但也可能是 如果您出于某种原因想将它们放回去,请使用!) 重新启动您的机器。不要只注销就搞砸 - 重新启动您的 机器。 Windows Oracle 安装默认使用 Windows 服务 并且您的安装目前非常糟糕 - 需要重新启动。

重新启动后,我能够收到除“无消息文件...”以外的错误消息,并可以开始查看问题所在。 将 ORACLE_SID 设置为 XE 并连接 @XE 我得到了这个页面中的错误,即以下症状:

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

另一个症状是: 启动“开始”页面时,它无法连接,出现未找到错误(如果我没记错的话),尽管 Windows 侦听器和 XE 服务正在启动。如另一个答案中所述,这可能是由于未启动 Windows 服务。在我的情况下,这些服务已启动,因此其他配置错误。

此时,我想我的安装可能由于存在错误的 ORACLE_HOME 环境属性而出现严重错误,我应该重新安装。 (以前的重新安装没有帮助,但这些都是在我注意到 ORACLE_HOME 系统环境属性之前(可能是我一年前设置的!)。

所以要解决:

    关闭所有查看 Oraclexe 安装目录的应用程序(editors/explorer/cmd 提示) 快速浏览添加/删除程序和卸载 OracleXe 仔细检查您是否没有在任何地方设置 ORACLE_HOME 环境属性,记住 - Windows 将使用注册表项来获取它。 重新启动(不要冒险 - 我们将长期致力于此!) 您确定没有 ORACLE_HOME 属性吗? 再次运行 Oracle 安装程序(作为本地管理员帐户,如果适用) 您应该能够对正常安装感到高兴。至少我做到了!

【讨论】:

【参考方案11】:

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

(1) 如果你使用 sid 下面是获取连接的语法:

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

(2) 如果使用服务名,获取连接的语法如下:

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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

希望您已经解决了您的问题。如果您仍然遇到问题,请再次检查您是否在域帐户下安装此 Oracle。我发现一个线程说在域帐户下安装时 Oracle XE 给出了同样的错误。请改用本地帐户。

来源:

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

【讨论】:

【参考方案14】:

在我的例子中,我只需要恢复一个 9 岁的服务器,而 Oracle 给了我这个错误。

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

我必须将我在/etc/hostname 中的名称放在/etc/hosts 中,并修复listener.ora 中使用的名称。

【讨论】:

【参考方案15】:

也可以试试直接启动:

sqlplus /nolog
conn / as sysdba
startup

【讨论】:

【参考方案16】:

我在尝试像这样启动 sqlplus 会话时看到了这个问题:

sqlplus /nolog
connect user/password

解决方法是删除/nolog 并转义user/password

sqlplus 'user/password'

【讨论】:

【参考方案17】:

SQL> sqlplus "/ as sysdba"

SQL> 启动

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

SQL> 退出

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

【讨论】:

您的答案对现有的相同答案有何补充?

以上是关于ORA-01034: ORACLE 不可用 ORA-27101: 共享内存领域不存在的主要内容,如果未能解决你的问题,请参考以下文章

windows10安装oracle11g报错ORA-01034ORA-01078

ORA-01034: ORACLE not available ORA-27101

oracle--安装报错

ORACLE数据库逐步解决ORA-12541ORA-01034和ORA-27101ORA-00119和ORA00132的过程

ORA-01034: ORACLE not available解决

服务器断电导致的ORACLE异常 : ORA-00214 ORA-01033 ORA-01034 ORA-00172 ORA-27101