SQL> execute dbms_repcat.create_master_repobject(sname=>'hawa',oname=>'test', type=>'table',use_existing_object=>true,gname=>'rep_tt',copy_rows=>false);
PL/SQL procedure successfully completed
SQL>
SQL> execute dbms_repcat.generate_replication_support('hawa','test','table');
PL/SQL procedure successfully completed
SQL> select gname, master, status from dba_repgroup;
GNAME MASTER STATUS
------------------------------ ------ ---------
REP_TT Y QUIESCED
SQL> select * from dba_repobject;
SNAME ONAME TYPE STATUS GENERATION_STATUS ID OBJECT_COMMENT GNAME MIN_COMMUNICATION REPLICATION_TRIGGER_EXISTS INTERNAL_PACKAGE_EXISTS GROUP_OWNER NESTED_TABLE
------------------------------ ------------------------------ ---------------- ---------- ----------------- ---------- -------------------------------------------------------------------------------- -----------------
HAWA TEST TABLE VALID GENERATED 8620 REP_TT Y Y Y PUBLIC N
HAWA TEST$RP PACKAGE VALID 8641 SYSTEM-GENERATED: REPLICATION REP_TT PUBLIC
HAWA TEST$RP PACKAGE BODY VALID 8677 SYSTEM-GENERATED: REPLICATION REP_TT PUBLIC
3 rows selected
SQL>
SQL> execute dbms_repcat.add_master_database(gname=>'rep_tt',master=>'AUTHAA.COOLYOUNG.COM.CN',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous');
PL/SQL procedure successfully completed
SQL> execute dbms_repcat.resume_master_activity('rep_tt',true);
PL/SQL procedure successfully completed
SQL> select * from dba_repgroup;
SNAME MASTER STATUS SCHEMA_COMMENT GNAME FNAME RPC_PROCESSING_DISABLED OWNER
-------- ------------------ ---- ------ ---- ---- -----------------------------------------------
REP_TT Y NORMAL REP_TT N PUBLIC
2.创建保存冲突数据的数据表
a.missing_rows表用以保存冲突行
SQL> create table hawa.missing_rows_test
2 as
3 select * from hawa.test where 1=0;
Table created
b.用于保存缺失行位置及rowid
SQL> create table hawa.MISSING_LOCATION_TEST (
2 present VARCHAR2(128),
3 absent VARCHAR2(128),
4 r_id ROWID);
Table created
3.使用dbms_rectifier_diff.DIFFERENCES查找缺失记录
SQL> begin dbms_rectifier_diff.DIFFERENCES(
2 SNAME1 =>'HAWA',
3 ONAME1 =>'TEST',
4 REFERENCE_SITE =>'AVATAR.COOLYOUNG.COM.CN',
5 SNAME2 =>'HAWA',
6 ONAME2 =>'TEST',
7 COMPARISON_SITE =>'AUTHAA.COOLYOUNG.COM.CN',
8 WHERE_CLAUSE =>NULL,
9 COLUMN_LIST =>NULL,
10 MISSING_ROWS_SNAME =>'HAWA',
11 MISSING_ROWS_ONAME1 =>'MISSING_ROWS_TEST',
12 MISSING_ROWS_ONAME2 =>'MISSING_LOCATION_TEST',
13 MISSING_ROWS_SITE =>'AVATAR.COOLYOUNG.COM.CN',
14 MAX_MISSING =>500,
15 COMMIT_ROWS =>100
16 );
17 end;
18 /
PL/SQL procedure successfully completed
|
冲突记录被保存在我们创建的指定表中
SQL> select count(*) from hawa.missing_rows_test;
COUNT(*)
----------
172
共有172条差异记录
SQL> select count(*) from hawa.test;
COUNT(*)
----------
548
SQL> select count(*) from hawa.test@authaa;
COUNT(*)
----------
376
SQL> select count(*) from hawa.missing_location_test;
COUNT(*)
----------
172
4.使用DBMS_RECTIFIER_DIFF.RECTIFY进行数据整合
首先需要注意的是:
RECTIFY过程使用DIFFERENCES产生的数据进行数据调整。
在第一个表中存在,在第二个表中不存在的数据将被插入第二张表。
在第二个表中存在,在第一个个表中不存在的数据将被从第二张表中删除。
另外,在这个数据纠正过程中,你可以使用dbms_repcat.suspend_master_activity将复制组暂时挂起。
这样便于保证数据完整性。
但这不是必须的,如果复制一直激活,可能会有新的冲突出现。
SQL> BEGIN DBMS_RECTIFIER_DIFF.RECTIFY(
2 SNAME1 =>'HAWA',
3 ONAME1 =>'TEST',
4 REFERENCE_SITE =>'AVATAR.COOLYOUNG.COM.CN',
5 SNAME2 =>'HAWA',
6 ONAME2 =>'TEST',
7 COMPARISON_SITE =>'AUTHAA.COOLYOUNG.COM.CN',
8 COLUMN_LIST =>NULL,
9 MISSING_ROWS_SNAME =>'HAWA',
10 MISSING_ROWS_ONAME1 =>'MISSING_ROWS_TEST',
11 MISSING_ROWS_ONAME2 =>'MISSING_LOCATION_TEST',
12 MISSING_ROWS_SITE =>'AVATAR.COOLYOUNG.COM.CN',
13 COMMIT_ROWS =>100
14 );
15 END;
16 /
PL/SQL procedure successfully completed
SQL> select count(*) from hawa.test@authaa;
COUNT(*)
----------
548
SQL> select count(*) from hawa.test;
COUNT(*)
----------
548
|
数据矫正完成以后,数据会自动从missing_rows表中删除。
SQL> select count(*) from hawa.missing_rows_test;
COUNT(*)
----------
0
SQL>
相关推荐
例如,你可以使用DBMS_XMLDOM.newDoc()来创建一个新的XML文档对象,使用DBMS_XMLDOM.parseXML()将XML字符串解析成DOM树,然后通过DBMS_XMLDOM.getElementsByTagName()等方法对DOM树进行查询和操作。 DBMS_XMLPARSER...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
例如,可以使用`DBMS_LOB.WRITE`在INSERT或UPDATE语句中修改LOB值,或者使用`DBMS_LOB.APPEND`在已有的LOB后面添加新内容。 学习`DBMS_LOB`包的过程中,了解其每个过程和函数的参数含义、使用场景和返回值非常重要...
### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...
1. **对于分区表**:建议使用 `DBMS_STATS` 而不是 `ANALYZE` 语句,因为 `DBMS_STATS` 支持并行处理、可以收集整个分区表的数据以及单个分区的数据,并且可以在不同级别上计算统计信息。 2. **对于非分区表**:同样...
值得注意的是,文档中还提到了重建数据库作为备选方案,但这是最后的手段,因为它涉及到整个数据库的数据丢失和恢复过程,通常只有在无法通过常规方法解决问题时才考虑。 综上所述,这个问题的核心是Oracle数据库中...
### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...
在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了Java应用程序的企业来说尤为重要。本文将详细介绍如何利用`dbms_java`包来...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
在实际应用中,DBMS_LOCK常用于解决以下问题: 1. **并发控制**:在复杂的应用场景中,可能需要对特定资源进行精细的并发控制,例如在批量更新或者长时间运行的事务中。 2. **避免死锁**:通过预定义和管理锁,...
深入探讨 Advanced Replication 中的冲突解决机制,包括如何使用 dbms_rectifier_diff 包来自动解决数据冲突。 1. **dbms_rectifier_diff 包的使用方法** - 了解该包提供的函数和过程,如 `dbms_rectifier_diff....
在这个项目中,"DBMS_c.rar" 提供了一个使用 C 语言实现的简单 DBMS 框架,名为 "DBMS_c",特别强调了用 C 语言来构建数据库系统的能力。C 语言以其高效和灵活性著称,这使得它成为编写底层系统软件的理想选择,尽管...
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
44. **DBMS_METADATA.FETCH_CLOB**: 从元数据缓存中获取CLOB类型的元数据。 45. **DBMS_METADATA.SET_CLOB**: 将CLOB数据放入元数据缓存。 46. **DBMS_METADATA.GET_TRANSFORM_HINT**: 获取特定对象的转换提示。 ...
在使用 DBMS_REDEFINITION 包时,需要注意执行权限,需要拥有 EXECUTE_CATALOG_ROLE 角色、CREATE ANY TABLE 权限、ALTER ANY TABLE 权限、DROP ANY TABLE 权限、LOCK ANY TABLE 权限、SELECT ANY TABLE 权限。...
"DBMS.rar_dbms_dbms_java_dbms_java_plus"这个标题暗示了我们关注的焦点:使用Java实现对DBMS(特别是Oracle数据库)的操作,并且具有类似SQL*PLUS的功能。SQL*PLUS是Oracle公司提供的一个命令行工具,用于执行SQL...
虽然DBMS_STATS提供了许多优点,但在某些情况下,如收集分区索引统计信息时可能会出现性能下降(问题:使用DBMS_STATS收集分区索引统计信息时的慢性能)。这可能需要调整收集策略,例如,使用更精细的采样方法或者在...