database - Oracle SID 和服务名称;连接问题

标签 database linux oracle oracle11g

我正在尝试通过 sql developer 连接到远程服务器上的 oracle 数据库。我将连接详细信息复制到 tnsnames,并且能够连接到数据库。

但是我有另一个与 sqldeveloper 相同的数据库应用程序,当我尝试建立连接时,我不断收到此错误。此应用程序使用需要主机名和 SID 的 oracle jdbc 瘦客户端。

我收到以下错误:

java.sql.SQLException:监听器拒绝连接并出现以下错误: ORA-12505, TNS: 监听器当前不知道连接描述符中给定的 SID

在进行故障排除时,我更改了 sqldeveloper 中的 tns 选项,并选择了基本选项以找出问题所在,我意识到由于正确的服务名称而无法连接到db 通过 SID 名称甚至通过 sqldeveloper。

我已经使用了一些数据库查询来找出 SID 名称,但我仍然不断收到相同的错误。请帮我解决问题。

谢谢你的时间..

最佳答案

ORA-12505 表示您的客户端传递了服务器端监听器的 SID 完全不认识。

10G及以上无需配置server端即可使用EZ connect 像这样:

sqlplus hr@liverpool:1521/DEMO

hr is the user name
liverpool is the server name
1521 is the port the listener for the DB is listening on
DEMO is the database SID

(或)

如果您仍想使用 tnsnames.ora,请尝试从您的客户端运行 tnsping SID。

在 LINUX 上,您还可以让 ORACLE 从本地读取一个 tnsnames.ora 文件 路径 - 只需将 TNS_ADMIN 设置为您的 tnsnames.ora 文件所在的目录。

否则需要在$ORACLE_HOME/network/admin配置tnsnames.ora 在客户端


如果您需要知道数据库 SID,请使用:

从 dual 中选择 sys_context('userenv','db_name');

查看此网址:

Checking oracle sid and database name

关于database - Oracle SID 和服务名称;连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691628/

相关文章:

mysql - 旋转轮系统的数据库模型

database - 与 Web 应用程序一起使用的最佳关系数据库管理系统 (DBMS) 是什么?

database - 在 postgres 中创建表空间时权限被拒绝

linux - 使用bash根据文件名(日期)移动日志文件

c++ - 在 Qt 中错误显示 : "Fault Module Name: Qt5Cored.dll" in win 7 and when debugging : "segmentation fault" in centos linux and win 7

sql - 需要在sybase中创建pivot脚本

php - 如何更新数据库的单个列而不删除其以前的数据?

c++ - 编译 ROS ORB_SLAM2 时 undefined reference

oracle - 如何使用Oracle DMP文件?

oracle - Oracle 数据库旧数据删除技术