需求:公司网站需要在北京网通和上海电信建两台Oracle10G服务器,数据必须实时同步,本来准备用物理镜向的RAC,但它对于数据通信占用流太大,而它的主要功能是做为分步式数据备份使用,而现在公司需求是两台数据时实同步,所以选择实时高级复制;
环境:Oracle版本10.2.0.1,安装路径无限制,北京glabol_name为:db.bj.com,上海glabol_name为:sh.bj.com
首先,数据库要具备高级复制功能(用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持)
查看是否支持高级手复制
select value from v$option where parameter='Advanced replication';.
一.数据库基本情况
因为上海和北京的网站都运用同一个SID,所以SID为一样,而sevice_name必须为同一域名;
数据库上海 版本oracle 10.2.0.1 数据库名sid:db 服务名:db.sh.com
数据库北京 版本oracle 10.1.0.3 数据库名sid:db 服务名:db.bj.com
主体定义站点上海: db
主体站点上海: db
北京IP:210.44.185.201
上海IP:222.74.85.193
注:主体定义站点指配置复制工作的站点
本例涉及的用户.
复制管理员:repadmin
应用用户:cqm
本例复制的对象:reptest 数据表
本例的先决条件:你需要设置好相应的参数,job_queue_processes需要大于0,global_name=true,并且建立相应的db link.
alter system set global_names=true scope=both;
二.在两个数据库上分别创建应用用户CQM
CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP;
GRANT DBA TO CQM;
三.在两个数据库上分别创建复制管事员用户REPADMIN
--创建repadmin用户管理复制环境
CREATE USER REPADMIN IDENTIFIED BY abc123;
ALTER USER REPADMIN DEFAULT TABLESPACE USERS;
ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;
GRANT connect, resource TO REPADMIN;
--授予repadmin用户权限可以管理当前站点中任何主体组
EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');
--授予repadmin用户权限可以为任何表创建snapshot logs
GRANT comment any table TO REPADMIN;
GRANT lock any table TO REPADMIN;
--指定repadmin用户为propagator,并授予执行任何procedure的权限
EXECUTE dbms_defer_sys.register_propagator('REPADMIN');
GRANT execute any procedure TO REPADMIN;
四.更改两个数据库的全局名称,如果一开始建库时就设好了service_name,这一步就可以不做了
上海:alter database rename global_name to db.sh.com;
北京:alter database rename global_name to db.bj.com;
五.在两个数据库上分别建立数据库链接:紫色为repadmin密码
上海db.sh.com:create public database link db.bj.com
connect to REPADMIN identified by abc123
using'(description=(address_list=(address=(protocol=tcp)(host=210.44.185.201
)(port=1521)))(connect_data=(sid=db
)(server=dedicated)))';
北京db.bj.com:create public database link db.sh.com
connect to REPADMIN identified by abc123
using'(description=(address_list=(address=(protocol=tcp)(host=222.74.85.193
)(port=1521)))(connect_data=(sid=db
)(server=dedicated)))';
六.在两个数据库的应用用户CQM下创建表
在数据库db.sh.com上用户CQM下,当然如果你的cqm用户已有数据表就可不再建表:注意,要进行复制的表必须有主键,高级复制的同步依据就是主键,所以主键为必要条件:
CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
insert into test(id) values(1);
在数据库db.bj.com上用户CQM下:
CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
七.在主体定义站点开始操作(数据库db.sh.com)
以REPADMIN登录数据库db
--创建复制组:
execute dbms_repcat.create_master_repgroup('repg');
--在复制组里加入复制对象:
execute
dbms_repcat.create_master_repobject(sname=>'cqm',oname=>'test',type=>'table',use_existing_object=>true,gname=>'repg',copy_rows=>false);
--对复制对象产生复制支持:
execute dbms_repcat.generate_replication_support('cqm','test','table');
--添加主体复制节点:
execute
dbms_repcat.add_master_database(gname=>'repg',master=>'db.bj.com',use_existing_objects=>true,copy_rows=>false,
propagation_mode => 'synchronous');
--在主体定义站点启动复制:
execute dbms_repcat.resume_master_activity('repg',true);
八.至此配置完成
测试
九:注意事项,在建好复制同步后,看两个数据的处理请求(用控制台进去后,点-分配-高级复制-管理中的拓朴图),要请他本身处理请求完成后(设置
的同步表越多,请求就越多,请慢慢等待),再测试数据同步,由于太心急,我做前几次时都在它本身处理请求没完成时测试老是测试不成功,直接至重设了好几
次;
十:后台设置;
如果想再加入其它表的同步
1.停止服务:execute dbms_repcat.suspend_master_activity(gname=>'repg');
2.添加复制对象:execute dbms_repcat.create_master_repobject(sname=>'cqm',oname=>'test1'
,type=>'table',use_existing_object=>true,gname=>'repg',copy_rows=>false);
3.为对像生成复制支持:execute dbms_repcat.generate_replication_support('cqm','test1
','table');
4.再启动服务:execute dbms_repcat.resume_master_activity('repg',true);
注意,如有多个对像,请重复执行2和3步骤;
相关问题:
数据库同步之后,随之而来的问题就是,如果数据库里每个表都是以自增ID为主键的话(oracle的自增字段为序列+触发器实现),而我们只设置表
同步,序列是没有办法进行同步的,而序列是只要查询一次就会自增加1,如果sh数据插入一条不成功,而第二第成功的话,就会形成ID不一致现象,如下所
示:
sh bj
表t_a,序列se_a,下一ID:1120 表t_a,序列se_a,下一ID:1120
插入失败:se_a也会+1为1121 而数据不成功也就不同步,bj还是1120
第二次插入成功:se_a+1为1122 数据成功同步,bj的se_a+1 为:1121
这样也就形成了北京和上海数据同步而ID不一致,如果你的表中使用了clob字段,这样的话clob字段也会为影响为null,
解决方案为:如果sh为主库,bj为负库,也就是说这个t_a的表只有上海为插入删除操作,北京只是查询,最简单的就是把北京的序列的触发器册除,
即可;如果上海和北京都对t_a表都有插入删除操作,也就是双向同步,那就要使上海和北京的ID序列不一样就行,如北京以1开始,而上海以
900000001开始,再修改触发器:
原触发器为:select se_a.nextval into:new.id from dual;
修改为:if :new.id is null then
select se_a.nextval into:new.id from dual;
end if;
即可;
相关推荐
本文将详细解析Oracle 10G多台服务器同步高级复制的关键概念、配置步骤以及实现过程,帮助读者深入理解并掌握这一重要技能。 ### Oracle 10G 高级复制概述 Oracle 10G的高级复制(Advanced Replication)是一种...
- **体系结构概述**:Oracle 10g 采用了先进的体系结构设计,支持网格计算,能够实现在多台服务器之间的负载均衡,并且可以通过集中管理的方式提高整体系统的可靠性和性能。 - **主要组件**: - **Automatic ...
### Oracle 10g DATAGUARD安装配置与维护 #### 1.1 Linux操作系统的安装和配置 在部署Oracle 10g DATAGUARD之前,需要确保Linux操作系统已经正确安装并配置好所需的环境。这里以Red Hat Enterprise Linux 5 (RHEL5...
本实验是在两台运行 Oracle11g 的 Linux 服务器上进行的,其数据文件采用了 ASM (Automatic Storage Management) 方式存储。具体的节点配置如下: - **节点1**: IP地址为 asm1192.168.100.80/24, Oracle 服务实例名...
RAC允许多台服务器(节点)同时访问同一数据库,如果一台服务器发生故障,其余服务器可以接管工作,保障服务不中断。 3. 真正应用集群(RAC):RAC是Oracle数据库提供的用于实现集群计算的技术,是高可用性解决方案...
1. **数据库架构**:Oracle 10g采用了一种称为多层客户-服务器架构,包括前端工具、中间件和数据库服务器。数据库服务器包含数据存储、查询处理、并发控制和安全性等核心组件。 2. **表空间与数据文件**:在Oracle ...
Oracle 10G 高级复制是Oracle数据库中一种强大的数据同步和灾难恢复技术,它允许数据在多个数据库之间实时或近实时地进行复制。在Oracle 10G中,高级复制提供了高度灵活和可定制的数据复制解决方案,适用于分布式...
RAC 10g指的是Oracle RAC的第10g版本,其中“g”可能是指“grid”,即网格计算。RAC允许多个服务器节点间共享访问同一个数据库,使得数据库服务可以提供更高的容错能力和更佳的负载均衡。 3. Oracle Automatic ...
Oracle 10G 卸载教程详解 Oracle Database 10g 数据库系统的卸载与...卸载 Oracle Database 10g 服务器需要逐步卸载 Oracle 集群同步服务、Oracle HTML DB 和 Oracle 数据库及其所有组件,并需要手工删除剩余的内容。
1. **网格计算**:Oracle 10g的主打概念之一,它允许将多台计算机连接成一个共享资源池,称为网格,提供高可扩展性和资源利用率。这使得企业可以轻松地管理和扩展其数据库环境。 2. **Real Application Clusters ...
### Oracle 10g RAC Grid, Services & Clustering 关键知识点解析 #### 一、Oracle RAC(Real Application Clusters)概述 Oracle RAC 是一种集群数据库技术,旨在为多实例环境提供高可用性和可扩展性解决方案。...
2. Oracle10g数据库复制功能:Oracle10g是一种数据库管理系统,其复制功能允许多个数据库之间通过局域网、广域网或Internet进行数据的同步和拷贝。Oracle10g数据库复制可以分为局域网复制、广域网复制和远程复制。...
6. **高级复制**:Oracle 10g的复制技术使得数据能够在多个数据库间同步,支持实时数据仓库和灾难恢复场景。 7. **物化视图**:物化视图是预先计算好的查询结果,可以提供快速的数据访问,特别适用于报表和分析应用...
Oracle 10g RAC (Real Application Clusters) 是一种高可用性和可伸缩性的数据库解决方案,允许多个实例同时访问同一数据库,从而提供卓越的性能和故障切换能力。在VMware虚拟机上安装Oracle 10g RAC,可以为测试和...
总的来说,Oracle GoldenGate V11.1.1.1.2在Oracle 11g数据库的Linux环境中提供了高级别的数据复制服务,通过详细的文档和工具,用户可以轻松地实现数据的实时同步和保护,从而保证业务的连续性和数据的完整性。...
Oracle10g的复制技术允许数据在不同数据库之间同步,包括Snapshot复制、Logical Standby和GoldenGate。Merge功能则用于合并多个数据源,实现数据集成。 9. Grid Computing架构: Oracle10g引入了Grid ...
复制技术将数据从一个数据库复制到另一个物理位置的数据库,这样查询和统计操作可以在独立的服务器上进行,减轻主数据库的压力,确保关键业务不受影响。 Oracle提供了三种复制技术:**高级复制(Advanced ...
Oracle 10g 开始支持网格计算,即多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中衡(Load Balance),按需增删结点,避免单点故障(Single Point of Failure)。 安装和管理 Oracle 10...
1. Real Application Clusters (RAC) - Oracle 10g的RAC功能允许多台服务器共享同一数据库实例,增强了高可用性和负载均衡。这意味着当一台服务器出现故障时,工作负载可以无缝地转移到其他节点,确保业务连续性。 ...