蒙在股里 发表于 2015-1-16 22:38:53

MSSQL网站制作之利用dbms_rectifier_diff办理初级复制中...

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。初级|办理|数据|成绩利用dbms_rectifier_diff办理初级复制中的数据抵触成绩作者:eygle出处:http://blog.eygle.com日期:January19,2005
«Oracle基于工夫点的恢复|Blog首页|关于Oracle的抵触办理机制的研讨»

良多时分在初级复制中大概存在数据抵触和纷歧致征象。
Oracle供应的dbms_rectifier_diff包能够用于办理该抵触。

以下经由过程实例来讲明一下该Package的用法。

1.创立复制组及复制工具


SQL>executedbms_repcat.create_master_repgroup(rep_tt);
PL/SQLproceduresuccessfullycompleted
SQL>selectgname,master,statusfromdba_repgroup;
GNAMEMASTERSTATUS
---------------------------------------------
REP_TTYQUIESCED






SQL>executedbms_repcat.create_master_repobject(sname=>hawa,oname=>test,type=>table,use_existing_object=>true,gname=>rep_tt,copy_rows=>false);

PL/SQLproceduresuccessfullycompleted

SQL>
SQL>executedbms_repcat.generate_replication_support(hawa,test,table);

PL/SQLproceduresuccessfullycompleted

SQL>selectgname,master,statusfromdba_repgroup;

GNAMEMASTERSTATUS
---------------------------------------------
REP_TTYQUIESCED

SQL>select*fromdba_repobject;

SNAMEONAMETYPESTATUSGENERATION_STATUSIDOBJECT_COMMENTGNAMEMIN_COMMUNICATIONREPLICATION_TRIGGER_EXISTSINTERNAL_PACKAGE_EXISTSGROUP_OWNERNESTED_TABLE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HAWATESTTABLEVALIDGENERATED8620REP_TTYYYPUBLICN
HAWATEST$RPPACKAGEVALID8641SYSTEM-GENERATED:REPLICATIONREP_TTPUBLIC
HAWATEST$RPPACKAGEBODYVALID8677SYSTEM-GENERATED:REPLICATIONREP_TTPUBLIC

3rowsselected

SQL>
SQL>executedbms_repcat.add_master_database(gname=>rep_tt,master=>AUTHAA.COOLYOUNG.COM.CN,use_existing_objects=>true,copy_rows=>false,propagation_mode=>synchronous);

PL/SQLproceduresuccessfullycompleted


SQL>executedbms_repcat.resume_master_activity(rep_tt,true);

PL/SQLproceduresuccessfullycompleted

SQL>select*fromdba_repgroup;

SNAMEMASTERSTATUSSCHEMA_COMMENTGNAMEFNAMERPC_PROCESSING_DISABLEDOWNER
-------------------------------------------------------------------------------------------
REP_TTYNORMALREP_TTNPUBLIC

2.创立保留抵触数据的数据表

a.missing_rows表用以保留抵触行
SQL>createtablehawa.missing_rows_test
2as
3select*fromhawa.testwhere1=0;

Tablecreated

b.用于保留缺掉行地位及rowid
SQL>createtablehawa.MISSING_LOCATION_TEST(
2presentVARCHAR2(128),
3absentVARCHAR2(128),
4r_idROWID);

Tablecreated

3.利用dbms_rectifier_diff.DIFFERENCES查找缺掉纪录


SQL>begindbms_rectifier_diff.DIFFERENCES(
2SNAME1=>HAWA,
3ONAME1=>TEST,
4REFERENCE_SITE=>AVATAR.COOLYOUNG.COM.CN,
5SNAME2=>HAWA,
6ONAME2=>TEST,
7COMPARISON_SITE=>AUTHAA.COOLYOUNG.COM.CN,
8WHERE_CLAUSE=>NULL,
9COLUMN_LIST=>NULL,
10MISSING_ROWS_SNAME=>HAWA,
11MISSING_ROWS_ONAME1=>MISSING_ROWS_TEST,
12MISSING_ROWS_ONAME2=>MISSING_LOCATION_TEST,
13MISSING_ROWS_SITE=>AVATAR.COOLYOUNG.COM.CN,
14MAX_MISSING=>500,
15COMMIT_ROWS=>100
16);
17end;
18/
PL/SQLproceduresuccessfullycompleted





抵触纪录被保留在我们创立的指定表中
SQL>selectcount(*)fromhawa.missing_rows_test;

COUNT(*)
----------
172

共有172条差别纪录

SQL>selectcount(*)fromhawa.test;

COUNT(*)
----------
548

SQL>selectcount(*)fromhawa.test@authaa;

COUNT(*)
----------
376

SQL>selectcount(*)fromhawa.missing_location_test;

COUNT(*)
----------
172

4.利用DBMS_RECTIFIER_DIFF.RECTIFY举行数据整合

起首必要注重的是:
RECTIFY历程利用DIFFERENCES发生的数据举行数据调剂。
在第一个表中存在,在第二个表中不存在的数据将被拔出第二张表。
在第二个表中存在,在第一个个表中不存在的数据将被从第二张表中删除。

别的,在这个数据改正过程当中,你可使用dbms_repcat.suspend_master_activity将复制组临时挂起。
如许便于包管数据完全性。
但这不是必需的,假如复制一向激活,大概会有新的抵触呈现。

SQL>BEGINDBMS_RECTIFIER_DIFF.RECTIFY(2SNAME1=>HAWA,3ONAME1=>TEST,4REFERENCE_SITE=>AVATAR.COOLYOUNG.COM.CN,5SNAME2=>HAWA,6ONAME2=>TEST,7COMPARISON_SITE=>AUTHAA.COOLYOUNG.COM.CN,8COLUMN_LIST=>NULL,9MISSING_ROWS_SNAME=>HAWA,10MISSING_ROWS_ONAME1=>MISSING_ROWS_TEST,11MISSING_ROWS_ONAME2=>MISSING_LOCATION_TEST,12MISSING_ROWS_SITE=>AVATAR.COOLYOUNG.COM.CN,13COMMIT_ROWS=>10014);15END;16/PL/SQLproceduresuccessfullycompletedSQL>selectcount(*)fromhawa.test@authaa;COUNT(*)----------548SQL>selectcount(*)fromhawa.test;COUNT(*)----------548



数据改正完成今后,数据会主动从missing_rows表中删除。

SQL>selectcount(*)fromhawa.missing_rows_test;

COUNT(*)
----------
0

SQL>
Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用

再见西城 发表于 2015-1-19 20:25:11

光写几个SQL实在叫无知。

变相怪杰 发表于 2015-1-25 22:36:35

总感觉自己还是不会SQL

乐观 发表于 2015-2-4 10:26:27

所以你总能得到相应的升级版本,来满足你的需求。

飘灵儿 发表于 2015-2-9 22:07:08

可以动态传入参数,省却了动态SQL的拼写。

若相依 发表于 2015-3-9 16:48:14

也可谈一下你是怎么优化存储过程的?

谁可相欹 发表于 2015-3-17 00:10:23

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

再现理想 发表于 2015-3-23 09:15:37

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
页: [1]
查看完整版本: MSSQL网站制作之利用dbms_rectifier_diff办理初级复制中...