两台oracle10g数据库,如何才能进行数据同步

请教oracle高手,我有两台oracle10G版本的数据库,为了减少服务器的压力,新增了一台服务器,两台机器都是oracle10g版本的,但我要求我写入进来的数据两台服务器能同步,即时的更新。请求这方面的资料支援,谢谢了。

第1个回答  2013-03-28
分布实现Oracle数据库的实时数据复制的步骤是这样的:

在具体的实现之前,首先要做好设计与规划。这就需要细致分析具体的业务情况,设计出一套能够满足业务需要的方案。通常在设计过程中,需要确定出要建立的数据库站点,各站点的类型,需要复制的数据对象,以及同步方式、冲突解决方案等内容。

在设计完成之后,就可具体来实现数据复制,数据复制的实现主要包括以下几步:

(1)创建复制站点;
(2)创建组对象;
(3)配置冲突解决方案。

下面我们举一个例子来说明各步具体需要完成的工作。在这个例子中我们采用多主控站点复制方式,设有两个主控站点和两个共享数据表。两个主控站点分别为:处理站点(cl.world)和解释站点(js.wo rld);两个数据表为测区( survey)和测线( line)。

STEP1 创建复制站点:

(1)首先以SYSTEM身份登陆主站点数据库cl.worldCONNECT system/manager@cl.world;
(2)创建用户—复制管理员,并为该用户授权复制管理员负责复制站点的创建和管理,每个复制站点都必须创建复制管理员以下为引用的内容:
 CREATE USER repadmin IDENTIFIED BY repadmin;
BEGIN
 DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);
END;

(3)为本站点指定传播者(传播者负责将本地最新更新的数据传播到其他站点上):
BEGIN
 DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);
END;

(4)为本站点指定接收者(接收者负责接收其他站点上的传播者传送过来的数据):
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
 username => ’repadmin’,
 privilege_type => ’receiver’,
 list_of_gnames => NULL);
END;
(5)确定清除时间:
为了使传送过来事务队列不致过大,需要将成功加载的事务从事物队列里清除掉,这里设定每小时清除一次:
CONNECT repadmin/repadmin@cl.world
BEGIN
 DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => ’SYSDATE + 1/24’,
delay_seconds => 0);
END;
在建立好站点cl.world后,以同样的方法创建站点js. world。
(6)创建各主控站点之间的调度链接:
创建各主控站点之间的调度链接需要先在各主控站点间建立数据库链接,之后为每个数据库链接定义调度时间。
首先,在处理站点上建立与解释站点的数据库链接,这里需要先建立一个公用数据库链接,供其他私有数据库链接来使用。

以下为引用的内容:

CONNECT SYSTEM/MANAGER@cl.world
CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;
CONNECT repadmin/repadmin@cl.world
CREATE DATABASE LINK js.world CONNECT TO repadmin
IDENTIFIED BY repadmin;

同样,在解释站点上建立与处理站点的数据库链接。

以下为引用的内容:

CONNECT SYSTEM/MANAGER@js.world
CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;
CONNECT repadmin/repadmin@js.world
CREATE DATABASE LINK cl.world CONNECT TO repadmin
IDENTIFIED BY repadmin;

调度链接确定本站点上的事务向其他站点发送的频度,下面的代码为10分钟一次:

以下为引用的内容:

CONNECT repadmin/repadmin@cl.world
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => ’js.world’,
interval => ’SYSDATE + (1/144)’,
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;

在解释站点上做相同的工作STEP2 创建主控组在复制环境中,Oracle用组来管理复制对象。通过将相关的复制对象放在一个组里,从而方便对大量数据对象的管理。

这里我们假设用户模式integr ation 在处理站点和解释站点都已存在,而且表测区(survey )和测线(line)也已经创建。

(1)创建主控组对象 以下为引用的内容:

CONNECT repadmin/repadmin@cl.world
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => ’inte_repg’);
END;
 
(2)向主控组中添加数据对象,将测区表survey加入到组inte_repg中以下为引用的内容:

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => ’inte_repg’,
type => ’TABLE’,
oname => ’survey’,
sname => ’integration’,
use_existing_object => TRUE,
copy_rows => FALSE);
END;

以同样的方法将测线表line加入到组inte_repg中。

(3)在主控组中添加其他参与复制的站点,数据库之间的同步方式在此指定以下为引用的内容:

BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => ’inte_repg’,
master => ’js.world’,
use_existing_objects => TRUE,
copy_rows => FALSE,
propagation_mode => ’ASYNCHRONOUS’);
END;

(4)如果可能出现冲突,则需要配置冲突解决方案。

(5)为每个对象生成复制支持,以下为引用的内容:

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => ’integration’,
oname => ’survey’,
type => ’TABLE’,
min_communication => TRUE);
END;

测线表line也一样。
(6)重新开始复制以下为引用的内容:

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => ’inte_repg’);
END;

以同样的方式设置解释站点。设置成功后,数据复制过程就宣告完毕,库中的数据就可进行复制。

两台oracle10g数据库,如何才能进行数据同步
(1)首先以SYSTEM身份登陆主站点数据库cl.worldCONNECT system\/manager@cl.world;(2)创建用户—复制管理员,并为该用户授权复制管理员负责复制站点的创建和管理,每个复制站点都必须创建复制管理员以下为引用的内容:CREATE USER repadmin IDENTIFIED BY repadmin;BEGIN DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_...

oracle 10g 如何跨机器备份到11g上
1、首先你不要动你的老机器 2、搭建你的新机器操作系统等环境 3、在新的机器上安装你的数据库11G 4、停止建立在老机器上的应用程序 5、把老机器上的数据迁移到新的机器上面去:这个方式比较多,大至有以下几种方式:(1)通过expdp\/impdp方式进行导出导入 (2)通过impdp network_link方式进行导入 ...

Oracle 10g,创建了两个数据库ORCL和CATALOG,为什么只能连接上ORCL,而...
你当前只能连接一个实例的。oracle不像SQLServer。如果你想在不同的所属对象下建立表或其他对象。就要创建schema或是user即可。主要是我不太懂你这么做的目的是什么?

如何完整备份ORACLE 10g数据库并恢复到另一个机器上
SQL> host cp \/oracle\/10g\/oracle\/product\/10.2.0\/oradata\/oralife\/*.dbf \/oracle\/10g\/oracle\/bakup\/database\/ --备份所有数据文件 SQL> alter database backup controlfile to '\/oracle\/10g\/oracle\/bakup\/database\/oralife.ctl'; --备份控制文件 Database altered.SQL> alter system archive ...

oracle备份的数据库如何自动拷贝到另一台服
Oracle10G数据库中,数据库文件的备份与恢复可以有很多的方式来实现,这里介绍一种基于用户管理的备份与恢复。基于用户管理的备份是指使用OS命令来备份数据库物理文件。备份数据库 数据库一致性备份:关闭数据库以后备份数据库物理文件,这时数据文件scn值完全一致,所以称之为数据库的一致性备份或冷备份,适用...

oracle10g数据库和SQL数据库能装在同一个系统里吗?
可以的,他们之间没有什么冲突的地方 。Oracle Server是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。每个Server由一个 Oracle DB和一个 Oracle Server实例组成。它具有场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle数据库对应...

怎样将oracle10g数据库里面的表导入到11g中
将oracle10g数据导入到oracle11g中方式如下:一、将数据导出。1、win键+R键,输入cmd,打开命令提示符。2、输入如下语句:exp 用户名\/密码@实例名 file=路径\\文件名.dmp log=路径\\日志名.log owner=所属用户3、等待数据导出完毕。二、将数据导入oracle11g。1、win键+R键,输入cmd,打开命令提示符。

如何实现oracle11g和oracle10g的数据互相导入导出
1.在oracle11g 服务器命令行中用expdp 导出数据 expdp ts\/ts@orcl directory=expdp_dir dumpfile=tianshan.dmp logfile=tianshan.log version=10.2.0.1.0 (schemas=ccense)2.在oracle10g 服务器DOS 命令行中用IMPDP 导入数据:把oracle11g 的备份文件放到oracl10g 服务器的impdp_dir 目录中,并创建...

如何定时同步oracle表到sql server
1、两台不同服务器;2、从oracle10g定时同步(每天凌晨2:00)到sqlserver2005;3、处于安全性考虑,客服方不提供sqlserver2005的账户密码,只需我们提供数据集;4、双方程序语言都为java;在这些前提下我提出了几套方案,仅供参考:a:如果oracle能在客户服务器上访问,由oracle方提供接口给客户服务器...

我本机上的是oracle10g的,远程数据库是9i的,请问能导出远程的数据吗...
能导出。首先你先建立远程的监听,然后通过plsql连远程机器,然后在通过“工具”-》“数据导出”来导出数据。导出路径也可以选择!

相似回答