我目前正在参与一个项目,我的任务是配置来自Ubuntu 22.04x86_64服务器到名为 的内部 Oracle DB 服务器myOracleDB
。
首先,ping myOracleDB
运行正常,因此服务器可以互相看到。为了排除网络问题,我们还允许所有端口上的所有进一步连接。因此,下一步是安装oracle client
。为此,我按照较旧的 Ubuntu16.04x86_64
服务器上的安装进行操作,在那里我可以sqlplus User@dbConn
毫无问题地运行,并且一切正常。
因此,我首先下载了
oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm
oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
oracle-instantclient19.6-odbc-19.6.0.0.0-1.x86_64.rpm
oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm
。
之后,我将它们转换为 Debian 软件包,sudo alien --scripts --target="x86_64"
并通过成功安装sudo gdebi
。dpkg --list
现在我看到了
ii oracle-instantcli 19.6.0.0.0-2 amd64 Oracle Instant Client Basic package
ii oracle-instantcli 19.6.0.0.0-2 amd64 Development header files for Oracle Ins
ii oracle-instantcli 19.6.0.0.0-2 amd64 Oracle Instant Client ODBC
ii oracle-instantcli 19.6.0.0.0-2 amd64 Oracle Instant Client SQL*Plus package
然后我进行了如下配置:
cat /etc/ld.so.conf.d/oracle.conf
给出/usr/lib/oracle/19.6/client64/lib/
。(sudo ldconfig
也在运行)export TNS_ADMIN=$ORACLE_PATH/network/admin
和ORACLE_PATH=/usr/lib/oracle/19.6/client64/lib
- 下面
$ORACLE_PATH/network/admin
有一个tnsnames.ora
包含
tnsnames.ora
:
dbConn =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myOracleDB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYSN)
)
)
最后我导出了一些变量:export
LD_LIBRARY_PATH=/usr/lib/oracle/$ORACLE_VER/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export ORACLE_HOME=$ORACLE_PATH
export ORACLE_SID=MYSN
export PATH=$PATH:$ORACLE_HOME/bin
使用这些设置,在我的旧服务器(Ubuntu 16.04)上,连接工作正常。但是,当我sqlplus User@dbConn
在当前机器上使用时,我得到了
ERROR:
ORA-12541: TNS:no listener
我可能会添加以下信息:旧的和当前的 Ubuntu 服务器在不同的子网中运行。有什么想法可能导致此问题吗?同样,两台 Ubuntu 计算机上的配置文件绝对相同。尽管如此,我也会在使用其他版本的 instantclient 时遇到相同的错误19.6
(例如21.7
:)。