文章目录
要访问另外一个数据库,本地数据库必须创建了远程数据库的dblink, 通过dblink可以像访问本地数据库一样访问远程数据库。
创建过程
创建:
create public database link FistDBlink
connect to dbName identified by dbPassword
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.4.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
查看是否创建成功:
select * from dba_db_links ;
使用dblink进行增删改查,语法一样,就是表名后面要加 @dblink名 ,如:
select * from dual@FistDBlink ; -- dual是虚表,也可以换成实际表名
删除dblink:
drop database link FistDBlink;
如果报错 ORA-02024: 未找到数据库链接
原因可能是:
1、就是没有这个dblink。
2、当前用户没有该dblink的删除权限。
其他
创建dblink还可以通过配置tnsnames.ora文件
就是sql中的引号部分,前面加个 库名 =
HELOWIN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = helowin)
)
)
连接报错
创建完毕后,执行select * from dual@MY_LINK; 报错:
ORA-03150: 数据库链接的通信通道的文件结尾
ORA-02063: 紧接着 line(起自 MYC2_LINK)
这说明连接不上。
可能原因:
1、密码不正确。(密码要全大写,如果小写要用双引号括起来)
2、create database link前面是否加了public,如果没加,owner是创建者,其他用户访问不到。
经查,未加public,因此访问不到。
pl/sql操作dblink
除了命令行外,pl/sql操作db_link也是很方便的。
工具 | 对象浏览器 | Database links | 右键 ,可以修改,删除,新建等。
命令行不能删除,pl/sql可以删除dblink
使用命令行删除提示找不到该dblink。
用pl/sql删除发现是可以的,真是柳暗花明。
访问dblink报错:ORA-00942: table or view does not exist ,preceding line from MY_LINK
提示信息为:
ORA-00942: table or view does not exist
preceding line from MY_LINK
很可能是dblink的用户没有该表的权限。 授权一下即可。