【问题标题】:SQL*Plus connection SetUp: ORA-12154 ErrorSQL*Plus 连接设置:ORA-12154 错误
【发布时间】:2018-11-06 09:05:48
【问题描述】:

很抱歉这个菜鸟问题,但我是 Oracle SQL 软件的新手。

我一直在尝试创建与我的数据库 student 的连接(在 SQL Developer 上创建),但由于我使用的是将连接到服务器的客户端计算机,因此变得相当混乱。

以下是有关连接的信息:

连接名称:LARGER123

用户名:LARGER123

主机名:uxkg265.admin.plent

端口:1520

SID:ticp5076

客户端计算机用户名:r5678

当我打开 SQL Plus 提示符时,我尝试了几种用户名组合以建立连接,但得到相同的错误 ORA-12154 错误

我认为这可能是我在用户名字段上设置内容的方式,所以我按照 Oracle 网站上的说明进行操作:

https://docs.oracle.com/database/121/ADMQS/GUID-1A15D322-B3AC-426A-86A1-EB7590930687.htm#ADMQS045

基本上它告诉以这种方式“构建”用户名结构:

   nick@"dbhost.example.com/orcl.example.com"

其中:“nick” 是用户; "dbhost.example.com" 是主机; "orcl.example.com" 是数据库。

因此,按照示例,我以这种方式输入用户名并出现错误:

   LARGER123@"uxkg265.admin.plent/student"

我尝试了不同的方法,包括 PortSID,但没有成功。

你对我的错误有更好的了解吗?

【问题讨论】:

  • 这些是公开的网络吗?您可能想清理您的网络/用户名

标签: oracle oracle-sqldeveloper sqlplus


【解决方案1】:

你确定有人在你试图连接的地方监听吗?我建议您先使用 telnet 进行测试。

你说你的服务器的域名是“uxkg265.admin.plent”

nslookup uxkg265.admin.plent

我刚刚检查了我的IP地址,发现:

$ nslookup $(hostname)
Server:         xxx.xxx.xxx.xxx
Address:        xxx.xxx.xxx.xx##53
Name:   mydomain.myorg.com
Address: 192.168.56.1

我刚刚尝试连接到我的 oracle 实例并得到:

$ telnet  192.168.56.1 1521
Trying 192.168.56.1...
Connected to 192.168.56.1
Escape character is '^]'.
^]
telnet> quit
Connection closed.

如果我尝试到错误的端口,我会得到:

$ telnet  192.168.56.1 1522
Trying 192.168.56.1...
telnet: connect to address 192.168.56.1: Connection refused

我能够连接到:

sqlplus myoracle/testpass@192.168.56.1:1521/UPGR

其中 UPGR 是服务名称。

我也可以联系到:

sqlplus myoracle/testpass@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.1)(PORT=1521))(CONNECT_DATA=(SID=UPGR)))"

使用 UPGR 作为 SID。

最初我遇到了一些麻烦,因为我的 Oracle Linux 版本启用了 iptables,这使我无法使用 sqlplus 进行连接。禁用此保护后,我就可以使用 Oracle。

sudo service iptables stop
sudo chkconfig iptables off

(请记住,iptables 是有目的的。对于我在 VirtualBox 中的 PC 上运行的测试系统,将其关闭是可以的。对于其他系统,可能不是。)

【讨论】:

  • 我尝试了 telnet,但提示被清除了,尽管窗口标题显示为 telnet 10.89.133.98,但什么也没有出现。要退出或返回提示,我只需输入回车即可。
  • 总是得到:ERROR:ORA-12154: TNS:could not resolve the connect identifier specified
  • 既然你有IP地址,用sqlplus试试会很有趣:sqlplus LARGER123/@"(description=(address_list=(address=(protocol=TCP)(host=10.89.133.98)(port=1521)))(service_name=(SID=ticp5076)))"。这与“TNS..resolve”有关。很有趣。
  • 当您尝试 sqlplus ... 需要多长时间才能收到错误?是马上还是超过 30 秒?
  • 您是否有权访问服务器计算机上的命令提示符?我想知道你是否也会在那里得到同样的TNS:could not resolve 错误。
【解决方案2】:

ORA-12154 是 TNS:could not resolve the connect identifier specified,但您可能没有使用 TNS 来解析连接标识符:您是否在客户端计算机上编辑了 tnsnames.ora 文件并为您尝试连接的 SID 创建了一个条目至?应该不会吧。

不要选择 SID,而是选择“服务名称”并将 Oracle SID 放在那里。对于“基本”连接类型,应该明确使用主机/端口和服务名称来建立连接,而不是依赖 TNS 来查找(解析)SID。

【讨论】:

  • 基本连接根本不会在客户端查看 tnsname - 但如果多租户,则需要使用 sid 上的服务进行 12c 和更高的连接
  • 我把以下内容: ORCL = (description= (address_list= (address = (protocol = TCP)(host = uxkg265.admin.plent)(port = 1521)) ) (service_name = (SID =ticp5076) ) )
  • 并尝试使用“Service Name =”而不是“service_name”,但没有成功。对不起,我的菜鸟疑虑......
  • 这可能是端口号混淆的问题吗?在您的原始帖子中,您声称端口号是 1520,在您的屏幕截图中您使用的是 1520,但 SQL*Net 侦听器的默认端口是 1521 - 您的问题会像端口号的拼写错误一样简单吗?
  • 尝试:ORCL = (description= (address= (protocol= tcp) (host= uxkg265.admin.plent) (port= 1521)) (connect_data= (service_name= ticp5076))) - 但请仔细检查正确的端口号。
猜你喜欢
  • 2021-10-23
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
相关资源
最近更新 更多