【问题标题】:Installation of Oracle Express Ediion 18c on Ubuntu 18.04 Server - Connection problem在 Ubuntu 18.04 服务器上安装 Oracle Express Edition 18c - 连接问题
【发布时间】:2020-03-29 11:59:20
【问题描述】:

安装
数据库版本:Oracle 18c XE
在虚拟机管理器中运行的 Ubuntu 18.04 服务器上

问题
安装 Oracle XE 18c 后,我以用户 oracle 身份登录并启动监听器

lsnrctl start

当我尝试连接时出现以下问题:

A.使用:

sqlplus / as sysdba

=>

ERROR:
ORA-12547: TNS:lost contact

B.使用:

sqlplus oracle@ubu-srv as sysdba  

=>

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 

检查监听器:

lsnrctl status 

=>

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 28-MAR-2020 22:05:40  
Copyright (c) 1991, 2018, Oracle.  All rights reserved.  
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ubu-srv)(PORT=1521)))

STATUS of the LISTENER

Alias                     LISTENER  
Version                   TNSLSNR for Linux: Version 18.0.0.0.0 - Production  
Start Date                28-MAR-2020 21:28:33  
Uptime                    0 days 0 hr. 37 min. 6 sec  
Trace Level               off  
Security                  ON: Local OS Authentication  
SNMP                      OFF  
Default Service           XE  
Listener Parameter File   /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora  
Listener Log File         /opt/oracle/diag/tnslsnr/ubu-srv/listener/alert/log.xml  
Listening Endpoints Summary...  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ubu-srv)(PORT=1521)))  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))  
The listener supports no services  
The command completed successfully  

listener.ora 的内容:

  # listener.ora Network Configuration File: /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora  
  # Generated by Oracle configuration tools.  

DEFAULT_SERVICE_LISTENER = XE  

LISTENER =  
  (DESCRIPTION_LIST =  
    (DESCRIPTION =  
      (ADDRESS = (PROTOCOL = TCP)(HOST = ubu-srv)(PORT = 1521))  
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
    )  
  )  

tnsnames.ora 的内容:

  # tnsnames.ora Network Configuration File: /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora  
  # Generated by Oracle configuration tools.  

LISTENER_XE =  
  (ADDRESS = (PROTOCOL = TCP)(HOST = ubu-srv)(PORT = 1521))  

【问题讨论】:

    标签: express installation connection ubuntu-18.04 oracle18c


    【解决方案1】:

    数据库似乎没有在运行,或者它已经向网络侦听器注册。如果数据库正在运行,您应该会在运行“lsnrctl status”时看到列出的几个服务,如下所示:

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbhost.example.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 18.0.0.0.0 - Production
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Default Service           XE
    Listener Parameter File   /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
    Listener Log File         /opt/oracle/diag/tnslsnr/dbhost/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbhost.example.com)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=dbhost.example.com)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
    Services Summary...
    Service "77f81bd10c818208e053410cc40aef5a" has 1 instance(s).
      Instance "XE", status READY, has 1 handler(s) for this service...
    Service "XE" has 1 instance(s).
      Instance "XE", status READY, has 1 handler(s) for this service...
    Service "XEXDB" has 1 instance(s).
      Instance "XE", status READY, has 1 handler(s) for this service...
    Service "xepdb1" has 1 instance(s).
      Instance "XE", status READY, has 1 handler(s) for this service...
    The command completed successfully
    

    您根本不需要为您的选项 A 运行侦听器,从同一主机连接,但您需要设置 ORACLE_SID 环境变量以匹配您想要的数据库(容器或可插入数据库)的 SID连接到。要连接到容器数据库,如手动启动所有数据库服务,您可以这样做:

    export ORACLE_SID=XE
    sqlplus / as sysdba
    

    对于选项 B,通过网络连接,您的连接字符串也会出现格式错误;除了主机名之外,它通常还应包括一个服务名称(最少)。有关示例,请参见此处:https://docs.oracle.com/en/database/oracle/oracle-database/18/sqpug/starting-SQL-Plus.html#GUID-A33231E7-9180-4544-A055-411209FD0363

    sqlplus username@[//]host[:port][/service_name]
    sqlplus pdb_admin@ubu-srv:1521/xepdb1
    

    也就是说,Oracle 未通过 Ubuntu Linux 认证,因此无法保证结果。您应该在 CentOS、Red Hat 或 Oracle Linux 上运行它。支持的 Linux 版本的完整列表在这里:https://docs.oracle.com/en/database/oracle/oracle-database/18/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html#GUID-E5C0A90E-7750-45D9-A8BC-C7319ED934F0

    【讨论】:

    • 监听器没有列出服务名称,因为数据库很可能根本没有运行。您必须有服务名称才能连接;你以后不会明白的。
    • 非常感谢您的详细回答。我尝试了您解释的两个版本的 sqlplus-connect。第一个结果是ERROR:ORA-12547: TNS:lost contact ,第二个结果是ORA-12514: TNS:listener does not currently know of service requested in connect descriptor。我认为提示是上面列出的lsnrctl status => The listener supports no services。但我不知道下一步该尝试什么。
    • 启动数据库。它没有运行,所以没有什么可以连接的。这就是为什么听者说没有注册的服务。
    • 如果数据库本身无法启动,请使用支持的操作系统(不是 Ubuntu)并重新安装。
    • 我会继续尝试在 Ubuntu 18.04 上安装。同时我会留下这个问题。
    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多