当我尝试从远程主机(使用oracle Instant Client)连接到Oracle数据库时,出现以下错误:
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3640
Additional information: 1108778635
Process ID: 0
Session ID: 0 Serial number: 0
但是,主机上的ORACLE_HOME
和ORACLE_SID
的设置都正确,而且我可以轻松地从其主机连接数据库:
SQL*Plus: Release 12.1.0.2.0 Production on Wed Jul 10 09:20:09 2019
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Last Successful login time: Wed Jul 10 2019 09:13:57 +03:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
什么会导致这种行为? UPD: 远程数据库上侦听器的状态:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.71.2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 05-JUL-2019 08:56:16
Uptime 6 days 23 hr. 29 min. 47 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/12.1.0/dbhome_1/log/diag/tnslsnr/epyc-gbu2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.71.2)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "AGRO.GBUBDD.RU" has 1 instance(s).
Instance "AGRO", status UNKNOWN, has 1 handler(s) for this service...
UPD2: 我用于连接到远程数据库的命令:
sqlplus /nolog
connect system/oracle@192.168.71.2:1521/agro.gbubdd.ru
答案 0 :(得分:0)
这可能由于两个原因而发生。 1)Oracle数据库未正确启动。 2)没有剩余空间,数据库崩溃/停止工作。
要更正,请登录到远程数据库,并检查数据库是否已启动,并且有足够的空间供数据库执行操作。
要检查数据库是否打开,请在安装db的远程计算机上使用sql plus登录并运行查询以检查数据库状态。
答案 1 :(得分:0)
您的环境中设置的ORACLE_SID
仅与本地连接有关。该错误告诉您在运行SQL * Plus的计算机上没有使用该SID运行的数据库。它不了解远程数据库。
要进行远程连接,您需要告诉SQL * Plus如何访问远程数据库,通常是通过TNS条目或使用'easy connect' syntax。
您尚未包含远程数据库的任何详细信息,但是您需要执行以下操作:
sqlplus username@//database_host:listener_port/remote_service_name
或者以sqlplus /nolog
开头,然后使用connect
命令,如文档所示。
端口通常为1521,但可能有所不同,服务名称可能与SID相同。如果您在数据库服务器上运行lsnrctl services
或lsnrctl status
,则应该能够看到有效的服务名称以及侦听器正在使用的地址和端口。