运维日记|oracle goldengate之dblink小贴士 – 作者:database

前言

对于dblink,相信大家都不陌生。当用户需要跨本地数据库访问另外一个数据库的数据时,可以在本地数据库中创建远程数据库的dblink,通过dblink可以像访问本地数据库一样访问远程数据库中的数据。

dblink为跨数据库的访问带来了很多便利,但是也存在部分缺陷。比如大量使用dblink查询,造成web项目的连接数不够,导致系统无法正常运行;比如今年6月份scn兼容性级别变化造成的大量dblink业务不可用等。

今天小编就要和大家聊一聊dblink在ogg中的表现。

OGG中的dblink并不能被自动同步,目标端若要使用dblink,需要手工添加。

对于Public dblink,只要在目标库上建好,则不影响ogg的同步。但是,对于Private dblink,即使在目标库上创建了,还是会出现如下类似报错:

image.png

报错提示ogg在执行以下的语句时,SQL<create table zmy.”TEST20191108″ as select * from zmy.CLASSINFO@test_pri>

报错<ORA-02019: connection description for remote database not found>

小编在目标数据库上检查dblink test_pri,确认该dblink信息和源库一致,且通过该dblink可以正常查询源库数据库的数据。

image.png

既然手工测试dblink是没有问题的,那为什么ogg不能执行该语句呢?

根据上面的信息,我们发现dblink TEST_PRI的所属用户是zmy,这是一个Private dblink

小知识●dblink

image.png

了解了私有dblink后,我们就不难发现为什么会报这个错了。OGG在同步的时候是通过管理用户来执行这些语句的,而对于私有dblink,其他用户没有权限使用,从而出现了这个报错。

那就跟着小编来进一步验证吧。

我们在目标数据库上创建一个同名public dblink TEST_PRI

image.png

确认dblink已经创建后,再次启动复制进程,问题解决,可以正常同步。

限于篇幅,我们不再对dblink详细展开,最后小结一下:

小结

1、OGG中的dblink并不能被自动同步,目标端同步用户所私有的dblink并不能够被管理用户所管理,必须将私有的dblink改为公有的OGG才能正常运行。

2、每次使用 dblink查询的时候,均会与远程数据库创建一个连接,dblink不会自动释放这个连接,如果是大量使用dblink查询,会造成连接数不够,导致系统无法正常运行。使用dnlink时要注意关闭连接。

参考文献:

Oracle® Database Administrator’s Guide 11g Release 2 (11.2)

How to Close a Database Link (DBLINK) Connection (文档 ID 473635.1)


美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

来源:freebuf.com 2020-06-08 11:47:11 by: database

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论