57

尝试使用服务名称从客户端连接到服务器数据库时出现上述错误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)
    )
  )

请告诉我该怎么办?

4

17 回答 17

93

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

set oracle_sid=DATABASE NAME
sqlplus /nolog
conn sys/sys as sysdba
shutdown abort
startup
于 2014-09-11T10:03:18.780 回答
32

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

sqlplus / as sysdba;
shutdown immediate;
startup nomount;
alter database mount;
alter database open;
于 2014-09-16T07:19:52.777 回答
5

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

于 2011-07-02T09:23:28.890 回答
5

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

echo %ORACLE_HOME%

然后

echo %ORACLE_SID%

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

查看此页面了解更多信息

于 2012-02-28T15:37:19.750 回答
5
SQL> sqlplus "/ as sysdba"
SQL> startup

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

SQL> Quit

[oracle@hcis ~]$ lsnrctl start
于 2017-05-30T05:36:20.313 回答
3

在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;
于 2019-02-04T10:47:06.390 回答
3

即使ORACLE_HOMEandORACLE_SID似乎设置正确,我也发生了同样的错误。

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

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

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

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

于 2017-09-02T15:43:38.023 回答
3

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

于 2016-12-27T14:26:33.220 回答
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 ”,更改目录/子目录权限为读/写并重新启动监听服务。问题解决了。

于 2015-10-03T10:55:49.120 回答
1

我遇到了相同的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 并且不需要(当然在我的情况下不应该......)环境属性。

删除它,如下所示:

  1. 编辑系统环境设置(Windows 键并开始输入“env”,您应该会看到此选项出现。
  2. 删除任何名为 ORACLE_HOME 的用户和系统环境变量(如果存在)。(记下它们的值,主要是出于兴趣,但如果您出于某种原因想将它们放回去,可能会有用!)
  3. 重新启动您的机器。不要只是注销 - 重新启动您的机器。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 系统环境属性之前(可能是我在一年前设置的!)。

所以要解决:

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

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

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

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

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

"**jdbc:oracle:thin:@//{hostname}:{port}/{servicename}**"
于 2020-12-10T13:32:29.317 回答
0

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

于 2011-07-11T03:00:35.210 回答
0

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

出于某种原因,服务器已被重命名,但app/oracle/product/10.2.0/server/network/admin/listener.ora文件仍在用旧的 HOST 声明一个 LISTENER。

我必须在 . 中输入相同的名称/etc/hostname/etc/hosts并修复listener.ora.

于 2019-11-17T14:34:49.630 回答
0

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

资源:

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

于 2017-05-06T03:11:22.057 回答
0

也试试直接启动:

sqlplus /nolog
conn / as sysdba
startup
于 2020-08-01T11:15:23.820 回答
0

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

sqlplus /nolog
connect user/password

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

sqlplus 'user/password'
于 2021-12-09T17:33:41.873 回答
-1

SQL> sqlplus "/ as sysdba"

SQL> 启动

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

SQL> 退出

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

于 2020-09-08T12:33:29.380 回答