Oracle数据库链路
一、数据库链路的概念
数据库链路(database link),简称dblink,它是一个通道,是本地数据库与远程数据库之间的通道,通过dblink,在本地数据库中可以直接访问远程数据库的对象。
dblink不是应用程序与数据库之间的通道,而是数据库之间的通道。
二、创建dblink
1、创建dblink的权限
用dba权限登录数据库,授于用户create database link和create public database link权限。
语法:
grant create database link to 用户名;
grant create public database link to 用户名;
示例:
2、创建dblink的命令
语法:
create [public] database link 数据库链路名称
connect to 用户名
identified by 密码
using '远程数据库参数';
说明:
public:dblink的类型,缺省是当前用户私有的,只有当前用户可以使用该dblink,如果加上public选项,表示公用dblink,所有的数据库用户都可以使用。
数据库链路名称:给dblink起个名字。
用户名:远程数据库登录的用户名。
密码:远程数据库登录的用户的密码。
远程数据库参数:该参数的配置有两种方法:1)远程数据库的服务名,也就是本地数据库服务器上$ORACLE_HOME/network/admin/tnsnames.ora中配置的数据库服务名;2)不采用tnsnames.ora中的配置,直接指定远程数据库的参数。
3、用数据库服务名创建dblink
1)配置远程数据库服务名
远程数据库服务名在$ORACLE_HOME/network/admin/tnsnames.ora文件中配置,内容如下:
snorcl11g_198 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 118.89.50.198)(PORT = 1521))
)
(CONNECT_DATA =
(SID = snorcl11g)
(SERVER = DEDICATED)
)
)
2)测试远程数据库登录参数
3)创建dblink
用远程数据库服务名创建dblink,例如:
create database link dblink_01 connect to shqx identified by pwdidc using 'snorcl11g_198';
4)测试dblink
通过dblink获取远程数据库的时间。
4、不用数据库服务名创建dblink
如果不用数据库服务创建dblink,就不需要配置tnsnames.ora文件。
示例:
create database link dblink_02 connect to shqx identified by pwdidc using
'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 118.89.50.198)(PORT = 1521))
)
(CONNECT_DATA =
(SID = snorcl11g)
(SERVER = DEDICATED)
)
)';
dblink_01和dblink_02完全一样。
三、dblink的使用
如果要访问远程数据库的表或视图,在表和视图名之后附加@dblinkname就可以了。
访问远程数据库的dual表:
select sysdate from dual@dblink_01;
访问远程数据库的scott.emp表:
select * from scott.emp@dblink_02;
四、删除dblink
删除当前用户私有的dblink:
drop database link 数据库链路名;
删除公用的dblink:
drop public database link 公用数据库链路名;
五、应用经验
dblink的知识很容易掌握,用dblink访问远程数据库的对象很方便,但是,如果在程序中采用dblink对远程数据库的表进行增、删、改、查操作时一定要遵守一个原则:尽可能不要产生远程事务,因为数据库对远程的事务难以控制,也就是说,尽可能不要对远程数据库的表进行增、删、改操作,查询是没有问题的。
六、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道
如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?