精华内容
下载资源
问答
  • 这三种环境的数据往往是不同步的,甚至存在QA和DEV数据与PRD是完全一致的情况。导致在QA环境进行测试还需要重新搭建数据模拟用户真实场景。为了解决这一问题,管理员通常会定期的进行三种环境的数据同步工作。同步...

    TC系统通常会有三种环境,PRD环境、QA环境和DEV环境。这三种环境的数据往往是不同步的,甚至存在QA和DEV数据与PRD是完全不一致的情况。导致在QA环境进行测试还需要重新搭建数据模拟用户真实场景。为了解决这一问题,管理员通常会定期的进行三种环境的数据同步工作。同步工作的一大内容就是数据库的同步。

    而目前常见的基于Oracle数据同步方式有如下几种:

    1. 数据泵进行逻辑备份与还原。

    2. 第三方工具备份与还原。

    此次文章为大家介绍一种基于Oracle的TC数据库同步方式,使用DBLINK进行TC数据库的同步。DBLINK全称database link,是一种数据库之间的单向连接,通常用来创建外部数据库的连接并对外部数据进行DML操作。借助这一特性,也可以用来还原数据库,优点就是快速且方便,不用在多个服务器之间来回切换传导数据;缺点就是无法还原数据结构复杂的数据库。对于TC来说,数据库的数据结构本身并不复杂,因此可以使用DBLINK进行还原,主要可以用来快速的同步PRD系统数据到QA系统和DEV系统。

    336030d9f849a2e882adaf390d24763c.png

    图1

    前提:

    TC系统数据库没有进行其他编程或开发,为原生环境(BMIDE部署也算作原生环境)。

    具体操作步骤如下:

    第一步,在被还原的系统通过sysdba创建public database link,命令如图2所示。其中syndb为DBLINK的名称,可以任意定义;connect to和identified by分别为为连接至目标数据库的用户和密码;using后跟数据库的连接。

    eeb2c3d34d1b8df73a81a1261b4716bc.png

    图2

    第二步,找到被还原数据库中和link数据库infodba用户同名的表,并全部drop,如图3至4所示。

    0e2b9692b74809888a9c352b4b5d627b.png

    图3

    0cebbe560bd9bfb167715fede4198fed.png

    图4

    第三步,通过DBLINK找出link数据库infodba用户的表,并使用link数据库infodba用户的表创建新表,如图5至6所示。

    722057c96bbbd12786438a5ef5776c48.png图5

    b8eb3dcd29ea49bad2ced3ac5dbff1c0.png

    图6最后一步,创建TC数据库的视图,使用导出的sql直接进行创建即可,如图7所示。

    9986ca2f5944fa8f40db1246295baa30.png

    图7

        至此TC的数据库就成功的从PRD系统导入到QA/DEV系统,只需要完成其他还原的操作就可以完成一次PRD系统同步到QA/DEV的工作了。

    展开全文
  • 话题:数据库同步为什么建议使用dblink方式回答:其实 dblink同步的情况非常常见。但是在Oracle的一些版本(如11.2.0.3)中有一个特别大的隐患。可能会导致scn增长过快,无法同步,并且该症状会通过dblink传染到与之...

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。

    话题:数据库同步为什么不建议使用dblink方式回答:其实 dblink同步的情况非常常见。但是在Oracle的一些版本(如11.2.0.3)中有一个特别大的隐患。可能会导致scn增长过快,无法同步,并且该症状会通过dblink传染到与之相关的所有数据库中。16年11月全国范围内就爆发了大范围的该。我当时所的也出现了很多这种故障。经过我本人的测试,除了重建库之外无解,网上说的升级啥的可以解决其实无效(升级到11.2.0.4可以预防,但已经发生的不能解决)。所以要分情况对待,如果该数据库版本有隐患且连接到它的其它数据库非常多非常复杂,dblink不建议。可以搜索错误码 ora-19706 可以详细了解该问题的具体情况

    参考回答:原因是:数据量多的话,oracle应该不知道断点续传功能的,如果数据库出问题(undo表空间不足、临时表空间不足、其他错误等)、网络处问题的话,无断点续传需要重新同步数据,牵扯到一个效率的问题。如果只是一点数据,用dblink没什么大问题。 但是如果涉及到有ddl一类的,整个级的,或者什么则的,这个时候就要自定义大量的触发器来实现。效率和准确都要花大量时间去验证。得不偿失,不如直接用现成的方去同步。

    话题:dblink怎么让两个数据库的数据同步回答:为方便完成指定数据表的同步作,可以采用dblink与merge结合的方法完成。作环境: 此数据库器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:1.在源库创建到目标库的dblinkcreate database link branch --输入所要创建dblink的名称,自定义 connect to dbuser identified by “password” --设置连接远程数据库的名和 using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称在创建dblink时,要注意,有时候可能会报名和错误,但实际们所输入的账户是正确的,此时就注意将的大小写按器上所设置的输入,并在前号加上双引号(器版本不同造成的)。2.成功后验证dblinkselect * from tb_bd_action@branch; --创建好rach库正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.3.通过merge语句完成表数据同步此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --从center将表merge到branch,同步的依据是两个表的pkwhen matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同则将指定表的值更新到目标表when not matched then --如果pk值不一至,则将源表中的数据整条入到目标表中insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);commit; --记得merge后必须commit,否则更改未能提交4.为方便每次需要同步时自动完成同步,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:a.创建merge夹b.先将merge语句写完整后,存到merge.sql中c.merge,后写入以下内容sqlplus user/password@serverip/database @"%cd%\merge.sql"话题:数据库同步为什么不建议使用dblink方式回答:原因是:数据量多的话,oracle应该不知道断点续传功能的,如果数据库出问题(undo表空间不足、临时表空间不足、其他错误等)、网络处问题的话,无断点续传需要重新同步数据,牵扯到一个效率的问题。如果只是一点数据,用dblink没

    参考回答:展开全部 原因是:数据量多的话,oracle应该不知道断点续传功能的,如果数据库出问题(undo表空间不足、临时表空间不足、其他错误等)、网络处问题的话,无断点续传需要重新同步数据,牵扯到一个效率的问题。如果只是一点数据,用dblink没什么大问题。 但是如果涉及到有ddl一类的,整个级的,或者什么则的,这个时候就要自定义大量的触发器来实现。效率和准确都要花大量时间去验证。得不偿失,不如直接用现成的方去同步。话题:请教一下高手,同步数据为什么不用dblink而要用etl工具呢?回答:ETLETL即数据抽取(Extract)、转换(Tranorm)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题 的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。数据仓库系统中有可能存在着大量的dblink,etlETLETL即数据抽取(Extract)、转换(Tranorm)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题 的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。数据仓库系统中有可能存在着大量的

    话题:使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决回答:lob类的字段在plsql developer和sqlplus里是不能直接显示的 如果是10g或者是以上版本的话 clob 应该是可以用to_char()进行转换lob类型的话 可以用utl_raw.cast_to_varchar2进行转换 你试试!话题:dblink怎么让两个数据库的数据同步回答:为方便完成指定数据表的同步作,可以采用dblink与merge结合的方法完成。作环境: 此数据库器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:1

    参考回答:展开全部 为方便完成指定数据表的同步作,可以采用dblink与merge结合的方法完成。作环境: 此数据库器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:1.在源库创建到目标库的dblinkcreate database link branch --输入所要创建dblink的名称,自定义 connect to dbuser identified by “password” --设置连接远程数据库的名和 using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称在创建dblink时,要注意,有时候可能会报名和错误,但实际们所输入的账户是正确的,此时就注意将的大小写按器上所设置的输入,并在前号加上双引号(器版本不同造成的)。2.成功后验证dblinkselect * from tb_bd_action@branch; --创建好rach库正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.3.通过merge语句完成表数据同步此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --从center将表merge到branch,同步的依据是两个表的pkwhen matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同则将指定表的值更新到目标表when not matched then --如果pk值不一至,则将源表中的数据整条入到目标表中insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);commit; --记得merge后必须commit,否则更改未能提交4.为方便每次需要同步时自动完成同步,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:a.创建merge夹b.先将merge语句写完整后,存到merge.sql中c.merge,后写入以下内容 sqlplus user/password@serverip/database @"%cd%\merge.sql"话题:oracle dblink scn值会相互同步吗回答:这个问题只在打了2012年1月份CPU补丁才会出现,A的SCN是100 ,B 是500 ,步成500打上最新的PSU就不会有这个BUG

    话题:只需要的情况下,为什么数据库之间要进行数据同步?为什么不直回答:dblink使用与跨库的, 这里的跨库通常是指不同的器上的数据库, 而不是同一个器上的不同实例, 因此使用dblink通常会产生网络IO, 这个速度就会很慢了dblink明显的优势就是你到的数据是即时的数据库同步一般有两个原因, 一个是为了,一个是为了减轻网络压力, 在A数据库上可以做很多业务, 但是最终的结果同步到B上去, 仅仅进行(A可以不对外), 这样即使B遭受了也不会造成什么损失或者, A器上主要进行业务处理, 如果和业务处理同在A上进行,势必会导致带宽紧的问题,因此可以将数据同步到其他器上,这样可以分流一大部分带宽占用

    展开全文
  • 在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件http://bbs.csdn.net/topics/330104541用dblink、触发器实现两个数据库的同步。在本地数据库中,有一张带clob字段的表,新增的记录无法同步到远程数据库。...

    在线QQ客服:1922638

    专业的SQL Server、MySQL数据库同步软件

    http://bbs.csdn.net/topics/330104541

    用dblink、触发器实现两个数据库的同步。

    在本地数据库中,有一张带clob字段的表,新增的记录无法同步到远程数据库。

    触发器不可以直接访问远程数据库表中的clob字段。

    在本地数据库中,创建一个结构相同的全局临时表。

    将新增的记录插入到临时表。

    将临时表中的记录以insert into tableName@dblinkName select * from temp的形式插入到远程数据库。

    —创建全局临时表

    create global temporary table temp as select *from t_office_messages;

    —创建触发器

    create orreplace

    trigger “T_OFFICE_MESSAGES_TRIGGER”

    after insert on T_OFFICE_MESSAGES —触发事件

    for eachrow

    —行级触发器

    begin

    if inserting then

    insert into temp

    (message_id,

    msg_title,

    accessory,

    msg_send_per_id,

    msg_send_per_name,

    msg_send_date,

    msg_is_enable,

    msg_content,

    msg_already_date,

    msg_receivers,

    msg_isold,

    isdel,

    isstarmark)

    values

    (:new.message_id,

    :new.msg_title,

    :new.accessory,

    :new.msg_send_per_id,

    :new.msg_send_per_name,

    :new.msg_send_date,

    :new.msg_is_enable,

    :new.msg_content,

    :new.msg_already_date,

    :new.msg_receivers,

    :new.msg_isold,

    :new.isdel,

    :new.isstarmark);

    insert into dzzw.t_office_messages@dzzwdblink

    select * from temp where message_id=

    :new.message_id;

    end if;

    end;

    展开全文
  • ■什么情况用数据库集成网络安全性可控交互数据量大对方系统要求使用数据库集成■ 注意事项尽量涉及直接ddl操作若需要涉及更新插表等此操作,建议封装成函数、或存储过程再授权避免全量授权操作,针对特定目标对象...
    58c5bbf49d42145e8b2803e21deed5b6.png

    简介

    ■ 说明 

    两台不同的数据库服务器,从一台数据库服务器连接另一台数据库服务器,并可访问特定授权的对象(比如表、视图、存储过程、函数、序列、同义词等等),这就是常见的数据库集成。

    3c548d61bf8607e9853bfd66d8a827b0.png

    ■什么情况用数据库集成

    • 网络安全性可控

    • 交互数据量大

    • 对方系统要求使用数据库集成

    ■ 注意事项

    • 尽量不涉及直接ddl操作

    • 若需要涉及更新插表等此操作,建议封装成函数、或存储过程再授权

    • 避免全量授权操作,针对特定目标对象进行授权,

    • 提供的权限的帐户密码需严格保密,可定时更新同步

    • 集成需要有接口卡或接口文档登记

    Dblink

    Dblink创建完后,可以直接访问对方数据库,需提供外部系统的授权用户和TNS

    常用的DBlink操作如下:

    ■Dblink 查询

    对已创建好的dblink对象进行查询

    --DBLINK对象

    SELECT owner,

           object_name

      FROM dba_objects

     WHERE object_type = 'DATABASE LINK';

    --或者

    --DBlink查询

    SELECT *

      FROM dba_db_links;

    ■ Dblink 创建

    创建DBlink,需外围系统提供TNS与权限账户密码。

    --创建dblink

    create public database link dblinkname connect to username identified by password

       using '(DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = database_ip)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVICE_NAME =servicename)

    )

    )';

    ■ Dblink 使用 

    例如已经创建了一个DBLINK 【dblinkname】 可查询对方系统已授权的table_owner下的某个表table_name,可如下:

    --使用dblink

    select * from table_owner.table_name@dblinkname

    ■ Dblink 删除 

    注意:用户有create public database link 或者create database link 权限.

    --删除dblink

    drop public database link dblinkname;

    ■ Dblink对象授权控制

    提供权限方,针对数据具体对象的授权,常用例子,

    --创建用户

    CREATE USER 用户名

      IDENTIFIED BY 用户密码;

    GRANT create session TO 用户名;

    ALTER USER mstar_rpt ENABLE EDITIONS;

    --授权查询任何表(慎用)

    grant select any table to 用户名;

    --修改用户密码

    alter user 用户名 identified by 用户密码

    ---授权查询视图

    create or replace synonym 用户名.cux_xxx_v for apps.cux_xxx_v;

    grant select on 用户名.cux_xxx_v to 用户名;

    --授权使用存储过程PKG

    grant execute on apps.cux_xxxx_utl to 用户名 with grant option;

    --授权增删改查(慎用)

    GRANT INSERT,UPDATE,DELETE ON CUX.CUX_FND_INTG_TMP_LINES TO HFMS;

    CREATE SYNONYM HFMS.FMS_FND_INTG_TMP_LINES FOR CUX.CUX_FND_INTG_TMP_LINES;

    --授权使用序列

    GRANT SELECT ON CUX.CUX_FND_INTG_TMP_LINES_S TO HFMS;

    CREATE SYNONYM HFMS.FMS_FND_INTG_TMP_LINES_S FOR CUX.CUX_FND_INTG_TMP_LINES_S;

    集成接口

    数据库集成需注意哪些?

    接口卡记录,包括以下几点:

    ■ 传输方式 

    异步:

    DBLINK接口一般为异步接口,无需实时处理反馈

    同步:

    能实时反馈处理状态,例如为通过DBlink调用pkg中的存储过程逻辑,有及时的处理信息反馈

    ■ 触发条件 

    触发条件有两种:自动、定时。

    • 自动:

      例如,当单据状态变更的时候需第一时间将单据状态推送至对方系统。

    • 定时:

      例如,设置定时请求,定时推数或抓数。

    ■ 传输频率 

    在做DBLINK接口集成的时候,也需要考虑对象调用的频率。特别是涉及到ddl操作的DBLINK接口,频繁的调用可能会动对系统表空间、磁盘空间、应用IO读写、后台日志等造成压力。

    例如,项目上原本有个数据收集计算程序并发请求,并会输出报表。客户有需求将统计收集的数据dblink给另外一个系统使用,同时提供并发请求触发的方法。

    集成后外围系统为了及时刷新数据,定时频繁调用该请求方法,造成IO读写占用比较大,且日志与输出文件给磁盘造成一定的压力。

    ■日传输数据量

    统计估算每日会产生的数据量,把控接口程序、系统的稳定性。

    ■业务字段 

    业务所需的字段,按照业务场景梳理得出。

    集成方式

    ■ 概念 

    • ‘推’式:

      指由提供数据的一方将数据主动推送到接收数据一方的数据库接口表中。

    • ‘拉’式:

      是指主动获取对方系统的数据库表中的数据,将数据获取后放置接口表,然后进行数据处理。

    ■ 对比分析 

    推拉模式特点比较图表分析cae2547665858a7f00f3d60ec927f896.pngd7d7453f0bab12b5f5a3d26ec571934e.png

    作者:吴焱辉

    审核:董乃浩、姚昆

    编辑:张玉

    展开全文
  • 数据量多的话,oracle应该知道断点续传功能的,如果对方数据库出问题(undo表空间不足、临时表空间不足、其他错误等)、网络处问题的话,无断点续传需要重新同步数据,牵扯到一个效率的问题。 如果只是复制一点...
  • 程序同步到执行结束时的目标表所有数据按任何字段排序,只判断并记录row_number()到日志表,中断后重新执行可继续同步,如果目标表频繁读写,保证数据完全正常,故最好是目标表变动情况下执行同步。...
  • 在数据库同步中我们经常会用到DBLink方式。DBLink可以将物理上存放于网络的多个数据库在逻辑上当成一个单一的大数据库。开发人员无需关心数据库的网络分布,就能很方便的实现从不同数据库之间读取数据。如何在Oracle...
  • 需要在两个数据库之间同步数据,因此在一段数据库上做了一个dblink,用存储过程使用dblink的表,把数据跟新到本地同时更新远程数据库的表,但是在存储过程中遇到的问题是:  CURSOR c1 is select * from ...
  • 在网上看过很多方法,都适用,最后使用游标实现! CREATE OR REPLACE PROCEDURE PROC_LONG_CALL AS  v_stu_count int; --统计信息数量  V_ERROR_INFO VARCHAR2(4000); BEGIN  DECLARE  CURSOR contract_cur ...
  • 一个正在开发的项目用到OCILIB操作oracle数据库,需要定时插入大量位置数据,同时需要向其他不同的远程数据库实例进行同步插入数据,而远程数据库表结构中用到oracle自定义对象类型SDO_GEOMETRY,在批量插入时能对...
  • 实时的最好直接使用dblink来获取数据。它与视图的区别是MV是自动刷新或者手动刷新的,View不用刷新,MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,view中保存数据。创建物化视图的SQL:CREATE...
  • 基于数据库归档日志的同步属于实时数据同步,如开源mysql可使用Canal利用主从自动同步机制实时采集binlog,对于商业软件Oracle数据库的日志格式不是公开的,没有开源解决方案,选择引进Oracle数据集成产品组件Oracle...
  • 公司有个项目需要把原来的MySQL 数据库 换成 Postgre数据库,做一下记录。 环境介绍 服务操作系统是Centos7,数据库的版本是Postgesql10 使用过程 在使用mysql数据库时,使用...抽取外部数据使用dblink和extension...
  • 我们知道,在 oracle中,可以建立 dblink 以解决 不同 数据库(异域)之间的数据交互问题,在MySQL中有类似的功能吗? 希望达到的目的:在 MySQL 的存储过程中,连接远程数据库,并能做到对远程数据库的 增删改查 ...
  • 因最近工作上,测试服需要同步生产的一部分数据,如果使用全表导入显然已合适。 最快的办法就是,两个服务之间通过federated引擎跨服务查询 首先在测试服 需要链接到远程服的 mysql 检查 mysql 的federated引擎...
  • 1、 跨网络进行增量同步数据,即隔着网闸,网络能直连,使用dblink、主从库等方案解决了; 2、 源表跟目标表字段名称可以一致,但表名称要一致(表名称一致也可以实现); 3、 自定义增量的控制字段,可以是...
  •    在原有同步进程里新增同步表的时候,考虑到源端表上可能会有事务,数据是实时变化的,能单纯的使用expdp直接导出再导入,这样可能会导致丢失数据或者数据重复冲突。针对这种情况,有两种方法可以实现在原有...
  • 公司机房要搬,现有环境为Oracle RAC,计划在新机房部署一套...3、先将旧库导出,然后导到新库,通过dblink、merge into手动实现表数据同步, 需要手动同步的表不是很多。 知道还有什么简单、快速的数据迁移方法。
  • 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数据变化可能,数据不一致的情况),也可以通过dblink数据实时查询(较损耗线上数据库性能),一般最好的方式是通过建立物化视图,然后通过schedual job完成...
  • Oracle物化视图详解

    2018-02-28 18:53:00
    一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数据变化可能,数据不一致的情况),也可以通过dblink数据实时查询(较损耗线上数据库性能),一般最好的方式是通过建立物化视图,然后通过schedual job...
  • MybatisPlus中调用Oracle存储过程

    千次阅读 2019-12-31 08:58:11
    由于需要将新数据同步到另外的数据库,所以需要使用dblink进行操作,但是dblink支持写入操作,因此需要调用写好的存储过程才能实现将新数据插入新数据的同时插入旧数据库。 准备工作 预先准备好新旧两个数据库 旧...
  • 最近在项目中做了一个关于系统与系统之间数据同步的业务,之前使用jndi远程调用的方式实现了这个同步功能,但总是感觉速度很慢,而且很稳定,现将其修改成dblink+存储过程方式,特对存储过程及游标做了相应学习,此处...
  • 其中D1,D2是由我管理维护,D3没有直接的访问权限,我们是通过把D3环境的表的select权限赋给user1用户来进行访问的,现在需要定期的把D3上的表结构和数据同步到D1和D3上供开发人员和测试人员模拟生产环境使用。...
  • 如果未来使用数据ETL工具,虽然可以在抽取的过程中就完成大量的计算操作,但是考虑到这种工作方式需要相关系统都在线的情况下才能进行计算处理,对开发调试的环境要求较高,并且在上线运行后如果出现故障,还需要...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

不使用dblink同步数据