我知道有很多次问过这个问题,但我无法弄清楚如何将这些信息应用到我的情况中。
我有两个数据库,我正在尝试与DB LINK连接。这些是:
数据库链接已由某人定义,名称为PE_DBLINK.WORLD。
我可以从我的机器访问这两个这些数据库,所以我看不出tnsnames.ora会受到什么影响。
然而,当我测试DB LINK时,我得到了名人:
链接:“PE_DBLINK.WORLD”错误:ORA-12154:TNS:无法解析 连接标识符指定
请指点我正确的方向,是否需要在BBEGMTD1服务器上修改tnsnames.ora?
根据@Chance评论,select * from ALL_DB_LINKS
返回:
PUBLIC
PE_DBLINK.WORLD
PRICING
OPEGMTP1.WORLD
03-NOV-11
PUBLIC
EBPROJ.WORLD
EBPROJ
MIDGMTP1
17-JUN-09
MYOPEGMTP1WORLD.WORLD
PRICING
(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=ORA04SOUK) (PORT=1521) ) (CONNECT_D
ATA= (SERVER=dedicated) (SERVICE_NAME=OPEGMTT1) ) ) )
16-DEC-11
这是TOAD中的TNSNames编辑器,用于显示详细信息:
答案 0 :(得分:4)
运行此命令以检查DBLink PE_DBLINK.WORLD的主机:
从ALL_DB_LINKS
检查该DBLink的HOST(即OPEGMTP1.WORLD)的tnsnames.ora。它位于(您的语言环境机器)
%ORACLE_HOME%\网络\管理员\的tnsnames.ora
如果在tnsnames.ora中找不到,请按以下方式添加:
OPEGMTP1.WORLD =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = ORA04SOUK)(PORT = 1521))(CONNECT_DATA =(SERVER =专用)(SERVICE_NAME = OPEGMTT)))
或者创建自己的DBLink:
创建数据库链接MYOPEGMTP1.WORLD 连接到用户IDENTIFIED BY密码 使用'(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = ORA04SOUK)(PORT = 1521))(CONNECT_DATA =(SERVER =专用)(SERVICE_NAME = OPEGMTT))))'
答案 1 :(得分:2)
在源数据库主机上检查有效的TNS条目。 DB Link是从RDBMS主机到RDBMS主机创建的,您的PC无关紧要。
答案 2 :(得分:1)
对于我来说,它工作正常,而无需对tnsnames.ora文件进行任何其他更改:
CREATE DATABASE LINK <link> CONNECT TO <user> IDENTIFIED BY <password> USING
'(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = <port>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <service_name>)
)
)';
答案 3 :(得分:0)
如果它是私人数据库链接,您需要以数据库链接所有者身份登录才能进行测试。
答案 4 :(得分:0)
如果您遇到与ORA-12514相关的任何问题。
方案:客户尝试使用DB链接从服务器B连接到服务器A,然后他得到ORA-12514错误。如果服务器A在服务器A的侦听器中没有SID_LIST_LISTENER条目(通常在升级后发生),则他可能会收到错误消息。
错误代码:ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务
解决方案:在(服务器A的)目标侦听器中添加SID_LIST_LISTENER条目
注意#你们中的大多数人都必须知道。
答案 5 :(得分:-1)
db_link是从数据库服务器到数据库服务器,而不是从客户端到服务器;所以请确保您的两个数据库服务器都有正确的服务tns条目。
数据库服务器上的