2

我知道这个问题被问了很多次,但我不太清楚如何将这些信息应用于我的情况。

我有两个数据库,我正在尝试使用 DB LINK 连接它们。这些是:

  • BBEGMTD1
  • OPEGMTP1.WORLD

数据库链接已由某人定义,名称为 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 编辑器,用于显示正在显示的详细信息:

在此处输入图像描述

4

6 回答 6

5
  1. 运行此命令检查 DBLink PE_DBLINK.WORLD 的主机:

    从 ALL_DB_LINKS 中选择 *

  2. 检查您的 tnsnames.ora 来自该 DBLink 的 HOST(即 OPEGMTP1.WORLD )。位于(您的语言环境机器)

    %ORACLE_HOME%\network\admin\tnsnames.ora

  3. 如果在您的 tnsnames.ora 中找不到,请像这样添加它:

    OPEGMTP1.WORLD = (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=ORA04SOUK) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=OPEGMTT1) )

  4. 或者创建自己的 DBLink:

    CREATE DATABASE LINK MYOPEGMTP1.WORLD Connect to user IDENTIFIED by password USING '(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=ORA04SOUK) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=OPEGMTT1) ) ) )'

于 2011-12-16T10:30:51.927 回答
4

它对我来说很好,无需对 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>)
    )
)';
于 2018-12-17T16:12:18.643 回答
2

在源数据库主机上检查有效的 TNS 条目。DB Link 是从 RDBMS Host 到 RDBMS Host 创建的,与您的 PC 无关。

于 2013-02-03T09:18:53.987 回答
0

如果是私有 DB 链接,则需要以 DB Link Owner 身份登录进行测试。

于 2014-09-15T20:00:50.123 回答
0

如果您遇到与 ORA-12514 相关的任何问题。

场景:客户尝试使用 DB 链接从服务器 B 连接到服务器 A,然后他收到 ORA-12514 错误。如果服务器 A 在服务器 A 的侦听器中没有 SID_LIST_LISTENER 条目(这通常发生在升级后),那么他可能会收到错误消息。

错误代码:ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务

解决方案:在目标侦听器(服务器 A)中添加 SID_LIST_LISTENER 条目

注意#你们中的大多数人必须知道。

于 2019-07-08T04:45:07.883 回答
-1

db_link 是从数据库服务器到数据库服务器,而不是从客户端到服务器;所以请确保您的两个数据库服务器都有正确的 tns 服务条目。

数据库服务器上的 tnsnames.ora 应该有用于服务的 tns 条目。

于 2015-11-19T19:28:50.837 回答