在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
Unsplash
一个。前言
此问题是上一篇文章” Oracle跨数据库一次实现指定表中数据的同步”中提到的问题的进一步扩展,考虑到数据的实时性要求相对较高,因此将其设置为定时同步有点不合适,并且需要改进升级以更改为实时同步。
严格来说,以下所述的方法无法实现实时同步。它是通过Oracle数据库创建同义词+ DBlink建立远程映射的。查看数据时,直接去查询源数据库中的表。
并且我一直在关注如何同步数据,但是我不认为可以建立映射。另外,还有一点需要说明,即在不添加,删除和修改操作的情况下,仅在查询操作的情况下同步目标数据库中的表,这也是解决使用同义词的问题的关键。
这种解决方案的出现是由于在CSDN问答过程中网民的热情回答。以下是问题的详细说明。
两个。问题描述
有两个Oracle数据库,它们排列在不同的服务器上,系统是Windows2003;
目前,它被称为主数据库和从数据库:
(1)主数据库:oracle_A;
(2)从数据库中:oracle_B;
oracle_A中的表table_A和oracle_B中的表_B 结构相同;
我在oracle_B中,将oracle_A数据库分配给有权访问oracle_A表table_A的用户,该用户仅具有查询权限;
另外,需要解释的一点是,在oracle_B上,您只需要查询table_B表,而无需其他任何添加,删除或更改。
场景结束。 我的问题是,当oracle_A中的table_A更改时,如何将实时更新同步到oracle_B的table_B?
我原来的处理方法:
通过建立远程连接DBLink + JOB定时任务+存储过程,可以更新定时同步,但是无法实时同步。
三。使用同义词+ DB_Link方法结果的步骤
可以选择使用同义词来解决此问题的原因。主要原因是问题描述中提到了一点,即我们只需要对同步表执行查询即可。这是使用同义词的重要元素。
以下是整个实验测试过程的详细模拟:
(1)首先创建一个仅对Oracle_A端的table_A具有查询功能的用户
(2)验证用户是否可以成功登录并访问授权表
注意:查询表时,请务必带上用户名,以指示该表下有哪个用户。
(3)创建一个远程连接DB_Link
(4)在Oracle_B端创建同义词
注意:
当BLOB字段包含在远程查询数据库中时,将报告以下错误。
** ORA-22992:无法使用从远程表中选择的LOB定位器**
发生此错误时,是因为跨数据库连接查询中的表中存在BLOB类型字段,因此必须注意,所有表中都存在blob类型字段,
无法连接的表从
中选择*
Blob类型的字段不能出现在脚本中。
如果必须导入这些blob型字段,则可以首先创建一个临时表,然后插入本地表,如下所示。在pl/sql中执行
第一步是建立一个临时表
创建全局临时表foo(X BLOB)
在提交时删除行;
步骤2插入本地表
插入foo中,从remoteTable @ dl_remote中选择blobcolumn;
四。学习经验
(1)提问时,您必须具有以下三个要点:
A.简洁; B.全面; C.系统
这三点实际上是脱机共享活动的一部分,该活动今晚参加了分手小组,分手者进行了拆解和共享。立即学习并立即出售,直接拿来解释我的问题。
实际上,对于早上的此类问题,我使用两种方法寻求帮助,一种是微信语音方法,另一种是发布方法。在语言问题上,他严重违反了上述三项,并且在发帖问题中注意到了这三点。这也提醒我,将来我应该更加注意语言表达。
(2)在提问时,请务必击中关键点并击中靶心
描述问题时,请务必说明要点。例如,对于上述问题,起初我什至都不在乎自己。我只需要查询table_B表。网友在向我确认详细信息的过程中仍然提到此问题。成为解决问题的关键。