我遇到远程Oracle数据库服务器的问题,它在Windows中运行,我的客户端在linux上运行
如果我使用带有ORACLE_SID的sqlplus,它可以正常工作
sqlplus my_user/my_pass@REMOTEDB
但是,如果我通过使用ORACLE_SID环境变量执行相同操作,则会出现此错误:
export ORACLE_SID = REMOTEDB
sqlplus my_user/my_pass
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
这是我的tnsnames.ora文件
REMOTEDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.150)(PORT = 1521))
)
(CONNECT_DATA =
(SID = REMOTEDB)
(SERVER = DEDICATED)
)
)
这是我的listener.ora文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oracle\product\11.2.0\dbhome)
# (PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\11.2.0\dbhome\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = REMOTEDB)
(ORACLE_HOME = C:\oracle\product\11.2.0\dbhome)
# (PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\11.2.0\dbhome\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.150)(PORT = 1521))
)
)
我真的坚持这个,任何建议都会受到赞赏
答案 0 :(得分:1)
ORACLE_SID仅适用于使用BEQ适配器的本地数据库(使用管道而不是网络套接字实现)。如果要连接到远程数据库,请使用TWO_TASK。 (并且不要质疑名称TWO_TASK,它有历史原因; - )
例如,请参阅http://ora-exp.blogspot.de/2007/06/oraclesid-and-twotask-environment_21.html(它有点陈旧但不过时)。