不同服务器间的Oracle数据同步
- 格式:docx
- 大小:284.08 KB
- 文档页数:6
同步数据库时间的命令同步数据库时间是指将数据库服务器的时间与其他服务器或设备的时间保持同步,以确保在多个系统之间记录和处理时间相关的事务时的一致性。
这主要涉及将数据库服务器的系统时间进行调整,以确保其与其他服务器或设备的系统时间一致。
同步数据库时间的命令可以基于特定的数据库管理系统(DBMS)和操作系统(OS)进行设置。
以下是一些常用的同步数据库时间的命令示例:1. MySQL数据库的时间同步命令:在MySQL数据库中,可以使用以下命令来同步数据库服务器的时间:```mysql> SET GLOBAL time_zone = '+08:00';```此命令将数据库服务器的时区设置为UTC+8,即东八区的时间,您可以根据需要进行调整。
2. Oracle数据库的时间同步命令:在Oracle数据库中,可以使用以下命令来同步数据库服务器的时间:```SQL> ALTER DATABASE SET TIME_ZONE='Asia/Shanghai';```该命令将数据库服务器的时区设置为亚洲/上海时区,您可以根据需要进行调整。
3. SQL Server数据库的时间同步命令:在SQL Server数据库中,可以使用以下命令来同步数据库服务器的时间:```USE master;GOEXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE;GOEXEC sys.sp_configure N'default time zone', N'+08:00' RECONFIGURE WITH OVERRIDE;GO```该命令将数据库服务器的时区设置为UTC+8,即东八区的时间,您可以根据需要进行调整。
4. PostgreSQL数据库的时间同步命令:在PostgreSQL数据库中,可以使用以下命令来同步数据库服务器的时间:```postgres=# ALTER DATABASE yourdatabase SET timezone TO 'Asia/Shanghai';```该命令将数据库服务器的时区设置为亚洲/上海时区,您可以根据需要进行调整。
基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。
Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件。
第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。
下面对这些技术逐一进行介绍。
一、DataGuard数据同步技术DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。
DataGuard 提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。
在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。
最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的数据保护等级。
在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。
最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交。
这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。
Oracle双机热备架构方案一想到Oracle双机热备,我脑海中立刻浮现出那些无数个夜晚,灯火通明的数据中心,以及那些为了保证数据安全、系统稳定而奋斗的工程师们。
在这个方案中,我们要解决的问题是如何确保关键业务数据的实时备份和快速恢复,下面就是我构思这个方案的过程。
我们需要明确Oracle双机热备的架构。
Oracle双机热备,顾名思义,就是两台服务器互为备份,一台为主机,另一台为备机。
当主机发生故障时,备机能够迅速接管主机的业务,保证业务的连续性。
1.架构设计(1)硬件设备我们需要两台性能相近的服务器,最好是同一型号,这样可以减少硬件兼容性问题。
服务器需要具备较高的处理能力,以满足业务需求。
(2)存储设备为了实现数据的实时备份,我们需要使用共享存储设备。
这里有两种选择:磁盘阵列和存储网络。
磁盘阵列可以提供较高的数据读写速度,但成本较高;存储网络则相对便宜,但性能略有不足。
根据实际需求,我们可以选择合适的存储方案。
(3)网络设备为了实现数据的实时同步,我们需要搭建一个高速网络。
这里建议使用万兆以太网,以保证数据传输速度。
2.软件配置(1)操作系统(2)Oracle数据库在两台服务器上安装Oracle数据库,并配置好数据库实例。
为了保证数据的一致性,我们需要使用OracleDataGuard来实现实时数据备份。
(3)集群管理软件为了实现故障切换,我们需要使用集群管理软件。
这里推荐使用OracleClusterware,它可以帮助我们实现快速的故障切换和恢复。
3.实施步骤(1)搭建硬件环境我们需要将两台服务器连接到共享存储设备,并配置好网络设备。
(2)安装操作系统在两台服务器上安装相同的操作系统,并配置好网络参数。
(3)安装Oracle数据库在两台服务器上安装Oracle数据库,并配置好数据库实例。
(4)配置OracleDataGuard在主机上创建一个物理备份,然后将备份传输到备机。
在备机上配置OracleDataGuard,实现实时数据备份。
数据库的数据迁移和同步数据库的数据迁移和同步是在不同数据库之间转移和更新数据的重要过程。
这些过程可以确保数据的安全性、一致性和完整性,在数据迁移和同步过程中,需要考虑到多个因素,如数据量、数据类型、数据一致性和数据处理效率等。
本文将介绍数据库数据迁移和同步的基本概念、常见方法和相关注意事项。
一、数据迁移的概念和目的数据迁移是指将数据从一个数据库系统迁移到另一个数据库系统的过程。
数据迁移的目的可以是为了更换数据库系统、升级数据库版本或者将数据从一个服务器迁移至另一个服务器。
数据迁移的主要任务是将数据迁移到新系统中,并保持数据的完整性和一致性。
二、数据迁移的方法1. 导出-导入方法导出-导入方法是最常见和简单的数据迁移方法之一。
首先,在源数据库中使用导出命令将数据导出为一个文件,然后在目标数据库中使用导入命令将文件中的数据导入。
这种方法适用于小数据量的迁移,但对于大数据量的迁移来说,导出-导入的过程可能非常耗时和复杂。
2. 数据库链接方法数据库链接方法通过建立源数据库和目标数据库之间的链接,直接将数据从源数据库传输到目标数据库。
这种方法可以减少数据迁移的时间和复杂性,并且可以实时同步源数据库和目标数据库的数据。
但是,如果源数据库和目标数据库之间的网络连接不稳定或者数据量过大,可能会影响数据的传输效率和完整性。
3. 第三方工具方法第三方工具方法是借助于专业的数据迁移工具,通过图形界面或命令行操作实现数据的迁移。
这种方法相对于其他方法来说更加灵活和高效,可以根据具体需求选择合适的工具。
例如,Oracle提供了Data Pump和GoldenGate等工具,可以方便地进行数据迁移和同步操作。
三、数据同步的概念和目的数据同步是指在多个数据库之间保持数据的一致性和完整性的过程。
数据同步的主要目的是在不同的数据库之间实时共享和更新数据,以确保数据的准确性和同步性。
数据同步可以在源数据库更新时自动同步到目标数据库,也可以通过定时任务定期同步。
数据库中的数据迁移与同步工具比较数据迁移和同步是在数据库管理和应用开发中常见的任务,以实现数据在不同环境中的迁移和保持数据一致性。
随着技术的不断发展,出现了许多数据库中的数据迁移和同步工具。
本文将就几个常见的数据迁移和同步工具进行比较,分析其优缺点及适用场景。
一、工具一:Oracle Data PumpOracle Data Pump是Oracle数据库自带的数据迁移和备份工具,可快速导入和导出数据。
它支持将数据导出为二进制格式,以提高传输效率。
同时,Oracle Data Pump还支持对数据进行压缩和加密,以增强数据的安全性。
但是,由于Oracle Data Pump是Oracle专用工具,只能用于Oracle数据库之间的迁移和同步,不适用于其他数据库。
优点:性能高、功能强大、支持数据压缩和加密。
缺点:只适用于Oracle数据库。
适用场景:Oracle数据库之间的数据迁移和同步。
二、工具二:MySQL ReplicationMySQL Replication是MySQL数据库自带的数据同步工具,通过将数据从一个MySQL数据库复制到另一个MySQL数据库,实现数据的同步。
MySQL Replication支持主从模式,其中一个MySQL服务器为主服务器,其他服务器为从服务器。
主服务器上的数据更改将被自动复制到从服务器上,从而保持数据一致性。
但是,MySQL Replication不支持跨数据库迁移,只能用于MySQL数据库之间的同步。
优点:简单易用、可实现数据的实时同步。
缺点:只适用于MySQL数据库。
适用场景:MySQL数据库之间的数据同步。
三、工具三:MongoDB Data ReplicationMongoDB Data Replication是MongoDB数据库自带的数据同步工具,通过将数据从一个MongoDB数据库复制到另一个MongoDB数据库,实现数据的同步。
MongoDB Data Replication支持主从模式和副本集模式。
如何将SQLServer2005中的数据同步到Oracle中有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:SELECT*FROM m sdb.dbo.MSdatatype_m appingsSELECT*FROM m sdb.dbo.sysdatatypem appings来查看SQLServer和其他数据库系统的数据类型对应关系。
第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。
根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
2.建立链接服务器。
我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
具体做法参见我以前的文章/studyzy/archive/2006/12/08/690307.html3.使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。
比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:DELETE FROM MIS..MIS.CONTRACT_PROJECT--清空Oracle表中的数据INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中SELECT contract_id,project_code,actual_moneyFROM contract_project如果报告成功,那么我们的数据就已经写入到Oracle中了。
oracle主从同步原理Oracle主从同步是企业级数据同步中最常用的方法之一,它可以保证跨地域或跨数据中心的数据一致性,应用于数据库热备份、大数据分析等场景。
本文将介绍oracle主从同步的原理、实现方式、优势和注意事项。
1.主从同步原理在oracle主从同步中,将有多个数据库实例作为参与者,其中一个数据库实例作为主数据库,其余的数据库实例都是从数据库。
主数据库负责所有的更新操作,从数据库通过重复主数据库的操作来保持数据同步。
当主数据库上数据发生变化,就会通过日志文件传到从数据库中,使从数据库与主数据库达成最新一致性。
2.实现方式Oracle主从同步可以通过多种方式实现,包括物理备份、数据复制、数据提取等多种方式。
其中,数据复制是其中一种使用最为广泛的方式。
数据复制是指在多个Oracle数据库之间复制表中的数据的过程。
它通过在主库上创建某种类型的复制方案来实现,将具有共同被复制的表的初始数据从源库传送到一个或多个目标库,然后根据需要实时或定期地传送源库的所有更改。
在数据复制同步进程中,要通过启用多种选项来保证和控制数据的复制过程,从而确保同步的一致性和完整性。
例如,每种复制方式都有不同的复制参数和选项,如同步或异步复制、实时或定期复制、保留或丢弃冲突数据等。
可以根据业务需求来选择一种或多种复制方案,以适应不同的同步策略和应用场景。
3.优势Oracle主从同步有以下优势:(1)数据的高可用性。
当主数据库出现故障时,从数据库可以顶替主数据库的工作,保证业务的正常运行。
(2)数据的分布性。
可以将数据在不同的机器上分布存储,提高了内存的利用率,缓解了单台机器压力,提高系统的可扩展性。
(3)数据的备份性。
同步复制可以建立和更新多个备份,保证数据完整和安全性,增强系统的数据保护能力。
(4)数据的读写分离性。
可以将主数据库用于写操作,从数据库用于读操作,提高数据库的性能和并发度。
4.注意事项Oracle主从同步也有其注意事项:(1)同步延迟。
oracle 数据库表同步方法Oracle数据库是一种关系型数据库管理系统,可以用于存储和管理大量数据。
在日常的数据库管理工作中,经常会遇到需要将数据从一个表同步到另一个表的情况。
本文将介绍几种常见的Oracle数据库表同步方法。
方法一:使用INSERT INTO SELECT语句INSERT INTO SELECT语句可以将一个表的数据插入到另一个表中。
首先,我们需要创建目标表,确保目标表的结构与源表相同。
然后,使用INSERT INTO SELECT语句将源表的数据插入到目标表中。
该方法适用于数据量较小、结构相同的表之间的同步。
方法二:使用MERGE语句MERGE语句可以同时执行插入、更新和删除操作,可以将源表的数据同步到目标表中。
首先,我们需要创建目标表,确保目标表的结构与源表相同。
然后,使用MERGE语句将源表的数据同步到目标表中。
该方法适用于数据量较大、需要同时进行插入、更新和删除操作的表之间的同步。
方法三:使用Oracle GoldenGateOracle GoldenGate是一种高性能的数据同步和复制工具,可以实现实时的、零数据丢失的数据同步。
使用Oracle GoldenGate可以将源表的数据实时同步到目标表中,并保持数据的一致性。
该工具适用于对数据同步要求较高的场景,但需要购买和配置相应的许可证和环境。
方法四:使用Oracle Data PumpOracle Data Pump是Oracle数据库自带的一种数据导入导出工具,可以将表数据导出为二进制文件,然后再导入到目标表中。
使用Oracle Data Pump可以将源表的数据导出为.dmp文件,然后再导入到目标表中。
该方法适用于数据量较大、需要跨不同数据库实例进行数据同步的场景。
方法五:使用外部表外部表是一种特殊的表,它不存储数据,而是通过定义外部表和数据文件的映射关系,实现对外部文件中数据的查询和操作。
可以使用外部表将数据从源表同步到目标表。
goldengate原理摘要:1.GoldenGate 原理概述2.GoldenGate 的工作原理3.GoldenGate 的优缺点4.GoldenGate 的应用场景5.GoldenGate 的未来发展趋势正文:1.GoldenGate 原理概述GoldenGate(GG)是一种基于数据库日志的数据复制技术,主要用于实现实时数据流复制和数据同步。
它将数据库中的数据变更记录成日志,并通过网络传输给其他服务器,从而实现数据在不同服务器之间的实时同步。
GoldenGate 是Oracle 公司开发的,最初用于实现其RAC(Real Application Clusters)系统的数据同步,后来扩展到支持其他数据库系统。
2.GoldenGate 的工作原理GoldenGate 的工作原理可以概括为以下几个步骤:(1)数据捕获:GG 会在源数据库上捕获数据变更,这些变更包括插入、更新和删除操作。
(2)日志记录:捕获到的数据变更会被记录到名为“重做日志”的文件中。
这些日志记录了数据的变更历史,可以用于恢复数据和实现数据同步。
(3)日志传输:GG 会将重做日志通过网络传输到目标服务器。
目标服务器上的GG 实例会根据这些日志来更新本地的数据。
(4)数据应用:目标服务器上的GG 实例会按照重做日志中的顺序和操作类型,将数据变更应用到本地数据库。
这样,目标服务器上的数据就与源数据库保持了一致。
3.GoldenGate 的优缺点优点:(1)实时数据同步:GoldenGate 可以实现数据在源数据库和目标数据库之间的实时同步,保证了数据的一致性。
(2)数据安全性高:GG 通过记录数据变更日志来实现数据同步,即使出现故障,也可以通过回滚日志来恢复数据。
(3)支持多种数据库:GG 不仅可以支持Oracle 数据库,还可以支持其他主流数据库系统,如MySQL、SQL Server 等。
缺点:(1)资源消耗大:GG 需要捕获、记录、传输和应用大量的数据变更日志,会占用较多的系统资源。
利⽤OGG实现Oracle数据库双向同步环境:服务器⼀(RAC实例⼀的任意⼀个节点)IP地址: 10.19.100.91Oracle数据库版本 11.2.0.4Oracle数据库实例名 aegisdbOracle数据库端⼝ 1521待同步数据库schema aegisOGG端⼝ 7809服务器⼆(RAC实例⼆的任意⼀个节点)IP地址: 10.19.100.92Oracle数据库版本 11.2.0.4Oracle数据库实例名 aegisdbOracle数据库端⼝ 1521待同步数据库schema aegisOGG端⼝ 7809Oracle GoldenGate版本12.2.0.1数据库连接串(tnsname.ora⽂件,2台服务器配置上相同):AEGISDB91 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.19.100.91)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = aegisdb)))AEGISDB92 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.19.100.92)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = aegisdb)))在两个服务器的Oracle数据库上各创建表⽤于测试同步$ sqlplus aegis/123456SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 521:26:362016Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> create table t1(col1 number);Table created.SQL> create table t2(col1 varchar2(10),col2 number);Table created.⼀、安装前准备此步骤需要在两台服务器上都执⾏1. 配置环境变量[oracle@localhost ~]$ more /home/oracle/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1export ORACLE_SID=aegisdbexport OGG_HOME=/u01/app/oggexport PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH:$HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME1. 创建Oracle GoldenGate软件⽬录mkdir /u01/app/ogg1. 准备安装⽂件$ cd /opt/Oracle/$ unzip fbo_ggs_Linux_x64_shiphome.zip⼆、安装Oracle GoldenGate此步骤需要在两台服务器上都执⾏这⾥使⽤SecureCRT + Xmanager的图形界⾯来安装Oracle GoldenGate。
在两台oracle数据库之间测试成功,下面就总结一下吧:
需求:
现有两台oracle数据库服务器A和B(A,B可以是在同一内网,也可以是在互联网上的两台独立机器)。
A和B里有都有testable表,结构一样,现需要当A库中的testable表变化时,B库里的testable也相应变化数据
A服务器A1表结构如下:
B服务器A2表结构如下:
我的解决方案:
在A中建立到B库的链接,然后对要同步的表做一个同义synonym,最后建一个触发器,就可以完成了。
当然,你所用的当前的用户要有相应的权限去执行这些操作。
当从A向B同步数据时,应该在A上做所有的设置:
1,为保证连接到另一台远程服务器的数据库,你需要建立一个DB Link,但是,这里要注意语法格式,using +"connect string",这个connect string应该是存在于oracle服务器的TNSNAMES.ORA文件里,监听程序将从这里获取远方服务器
的ip地址等信息,我定义了一个'ORCL'的connect string如下:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.251)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mychoice)
)
)
把它存到你的TNSNAMES.ORA文件里。
2,然后就可以定义DB Link了:
create public database link connect to 用户名
identified by "密码"
using 'ORCL';
例如:
using'ORCL';
PL/SQL效果如下图:
3,建立synonym(同义)
create or replace synonym TEST01
for MYCHOICE.TESTABLE@; 例如:
PL/SQL效果如下:
建立完了以后,你可以通过:
select * from test01
上面的语句相当于在B服务器上执行:
select * from testable
4,封建触发器:
当A中的testable表变化时(这里只考虑插入操作),就会触发向远程的B库的testable 也插入相应的数据:
create or replace trigger rtest
after insert on testable
for each row
begin
insert into test01 (something) values (:new.something);
end;
例如:
end;
PL/SQL效果:
ok,现在我们可以测试一下,你在A库中往testable表中插入一条记录,看看B库中是不是也相应的增加了
------------------------------
以下是本人亲测步骤,其中建立synonym时无法通过,可是我用的变通的方式使得两个不同地址的表成功同步,之后我再研究用synonym同步的方式
--1:在tnsname.ora中建立connect string.使得ora能监听到远端ora服务
--2:定义DB link:
--create public database link connect to tfs identified by cjtfs888 using '153tfs';
--3:建立synonym:
--create or replace synonym test01 for CJTFS.t_synonym@; --目前synonym貌似不行,就用以下语句测试可以通过:
--select * from t_synonym@;
--4:建立触发器
--create or replace trigger rtest after insert on t_synonym
--for each row
--begin
--insert into test01(something) values(:new.something);
--end;
--------
-----------
--------------实体测试--------------------------------------
--create or replace trigger rtest after insert on t_synonym
--for each row
--begin
--insert into t_synonym@(id,name)
values(:new.id,:);
--end;
------------------
--修改
create or replace trigger synupd
after update on test
for each row
declare
begin
update t_synonym@ set password = :new.password where username = :ername;
end synupd;
create or replace trigger syndel
after delete on test
for each row
declare
-- local variables here
begin
delete from t_synonym@ where
username=:ername;
end syndel;
--执行完,可以测试一下
--------------------------------------
--查看创建的synonym
--select * from dba_synonyms where db_link is not null
--测试是否连接成功
--select * from dual@
--查看创建的连接
--select owner,object_name from dba_objects where object_type='DATABASE LINK';。