【发布时间】:2020-01-30 15:44:03
【问题描述】:
我正在尝试在 oracle 中创建一个 dblink,但它显示错误。
我有一个数据库 orcl1,我想连接到另一个数据库 etlsr,它是我创建的下一个数据库。
在这个 etlsr 数据库中,我在 sys 中创建了一个简单的表名 person 并插入了一个数据。
现在,我再次连接到 orcl1 并想连接到 etlsr 数据库,但在我尝试时没有发生
select * from person@ETLSR;
但它给我带来了错误:
*
Error at line 1
ORA-02019: connection description for remote database not found
所以,我想创建一个 db 链接,所以我尝试了:(我从 orcl1 尝试了这些)
CREATE DATABASE LINK sales
CONNECT TO sys IDENTIFIED BY ashwin
USING 'SALES';
我在 tnsname 文件中添加为:
SALES =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SALES_PRD)
)
)
所以,当我尝试时:
select * from person@SALES;
我收到错误:
ORA-12154: TNS:could not resolve the connect identifier specified
为什么会出现这个错误?这个 dblink 创建有什么解决方案吗?不使用 dblinks 也可以访问其他数据库的表吗?
Tnsnames.ora
# tnsnames.ora Network Configuration File: E:\oracle\app\AshwinPC\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
TEST=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
sqlnet.ora
# sqlnet.ora Network Configuration File: E:\oracle\app\AshwinPC\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
【问题讨论】:
-
是您显示的 tnsnames,它是否位于托管“orcl1”的数据库服务器上?请记住,使用 db 链接时,使用该链接的数据库充当另一个数据库的客户端,因此与客户端相关的配置(如 sqnet.ora 和 tnsnames.ora)必须在该计算机上,而不是您的工作站上。跨度>
-
我在同一台 PC 上使用这两个数据库。是不是可以在同一台电脑上创建fblink?
-
是的,在同一台机器上拥有多个数据库,它们之间有数据库链接是完全可能的。我只是想确保您了解在 tnsnames 中进行查找的“客户端”实际上是 orcl1 数据库本身,因此您需要在定位 tnsnames 时考虑到这一点。向我们展示 sqlnet.ora 的内容,以及参数 'db_domain' 的值。这些会影响在 tnsnames.ora 中查找内容的方式。
-
好的,我已经添加了 tnsnames.ora 和 slqnet.ora
-
@Randomguy - 您包含的
tnsnames.ora没有SALES的条目?您单独显示的条目似乎也有错误的服务名称(不是etlsr),但如果这是唯一的问题,那将给出不同的错误。
标签: database oracle oracle11g dblink