Установка Oracle Express Ediion 18 c на сервер Ubuntu 18.04 - проблема с подключением - PullRequest
1 голос
/ 29 марта 2020

Установка
Версия БД: Oracle 18 c XE
на Ubuntu 18.04 Сервер, работающий внутри Virtual Machine Manager

Проблема
После установки Oracle XE 18 c Я вхожу в систему как пользователь 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))  

1 Ответ

1 голос
/ 29 марта 2020

Не похоже, что база данных запущена или зарегистрирована на прослушивателе сети. Если база данных работала, вы должны увидеть несколько служб, перечисленных при запуске «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-A8B C -C7319ED934F0

...