帮助!我是Oracle的新手,他试图访问我们为客户端继承的旧服务器上的数据库。
我确信我有oracle数据库和监听器已启动并正常工作,但在尝试访问sqlplus或exp命令时,我收到以下错误:
ORA-12162:TNS:网络服务名称指定错误
我已经编辑了tnsnames.ora文件,将主机更改为127.0.0.1,而不是外部网址,并且能够成功修改我的连接,但是没有进一步发展。
非常感谢任何建议或帮助。
答案 0 :(得分:15)
尝试设置Oracle SID
设置ORACLE_SID = 数据库名称
答案 1 :(得分:2)
您是在尝试本地连接(例如“sqlplus u / p”)还是网络连接(例如“sqlplus u /p@pnews10s.world”)?他们都给你同样的错误吗?
根据定义,TNSPING使用网络连接。我看到一些引用表明您在使用本地连接时可能会收到12612错误。这是一个可能的解释,为什么你看到SQLPlus但不是TNSPING的错误。如果是这样,请尝试改为建立网络连接。
本地连接不起作用可能是由于ORACLE_SID没有像John建议的那样正确设置,但是他的语法可能不适合您正在使用的shell。确保为给定的shell使用正确的方法,例如“export ORACLE_SID = name ”或“setenv ORACLE_SID name ”。
答案 2 :(得分:2)
Dave Costa向您提出了两个重要问题。您是尝试通过net8连接还是通过extproc本地连接?是否为本地计算机(127.0.0.1 - 环回设备)上的侦听器设置了extproc连接?
要使用net8或tcp连接协议,您需要指定user / pw @ tns_alias。要通过extproc本地连接,您应该指定oracle_sid参数,然后通过name / pw。
连接我还注意到tnsalias附加了.world域,但是sqlnet.ora文件不包含对NAMES.DEFAULT_DOMAIN的引用,因为它是“world”。
TNS_ADMIN的env参数是什么?确保您的工具正在查看正确的tnsnames.ora文件。太多时间人们修改一个tnsnames.ora,程序/软件正在查看另一个。
答案 3 :(得分:1)
我编辑了tnsnames.ora文件,将主机更改为127.0.0.1 而不是外部网址,并且能够成功地改变我的连接,但是我没有进一步发展。
最后一次发生在我身上(tnsping工作,但sqlplus没有,你得到的同样的错误信息),问题是有人从Windows机器上复制了tnsnames.ora文件,并留下了错误的换行代码
如果是这种情况,你需要做一些dos2unix。
这些文件非常对“正确”的空白和标签敏感。
有人应该向Oracle抱怨此事。
答案 4 :(得分:0)
在我的情况下,检查tnsnames.ora文件花了我几天的时间才能发现连接字符串中是否包含制表符或导致其失败的其他不可见的特殊字符。
答案 5 :(得分:0)
在我的情况下,问题是DSN和ServiceName在odbc.ini文件中配置为相同,这应该没问题,但是只有在更改了DSN名称之后,我才能连接到isql数据库。
答案 6 :(得分:0)
export ORACLE_SID = bvteng为我工作,其中bvteng是服务名称。