如何实现两个Oracle数据库的数据同步

如何实现两个Oracle数据库的数据同步,第1张

为方便完成指定数据表的同步 *** 作,可以采用dblink与merge结合的方法完成。

*** 作环境: 此数据库服务器ip为19216819676,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:

1在源库创建到目标库的dblink

create database link branch     --输入所要创建dblink的名称,自定义 

  connect to dbuser identified by “password”  --设置连接远程数据库的用户名和密码 

  using '19216819676/branch';  --指定目标数据库的连接方式,可用tns名称

在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。

2成功后验证dblink

select from tb_bd_action@branch; --查询创建好的brach库

正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表

3通过merge语句完成表数据同步

此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:

merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (bpk=cpk)  --从center将表merge到branch,同步的依据是两个表的pk

when matched then  update set bsqlscripe=csqlscripe,bauthor=cauthor  --如果pk值是相同则将指定表的值更新到目标表

when not matched then   --如果pk值不一至,则将源表中的数据整条插入到目标表中

insert values (cpk, cfk, ccreatetime, clastmodifytime,cauthor,cmodule,cdeleteflag, cscripttype);

commit;               --记得merge后必须commit,否则更改未能提交

4为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:

a创建merge文件

b先将merge语句写完整后,存到mergesql文件中

c新建mergebat文件,编辑后写入以下内容

sqlplus user/password@serverip/database @"%cd%\mergesql"

以下是对Oracle中的数据库基本常用命令进行了总结介绍 需要的朋友可以过来参考下  

得到数据库名和创建日期 SELECT name created log_mode open_mode FROM v$database;

ORACLE数据库的计算机的主机名 ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息 SELECT host_name instance_name version FROM v$instance;

为了知道oracle数据库版本的一些特殊信息 select from v$version;

获取控制文件名字 select from v$controlfile;

得到Oracle数据库的重做日志配置信息 SELECT group# members bytes status archived FROM v$log; select GROUP# MEMBER from v$logfile;

获取oracle的每个重做日志(成员)文件所存放的具 置 select from v$logfile;

知道ORACLE数据库的备份和恢复策略和归档文件的具 置 archive log list

知道ORACLE数据库中到底有多少表空间以及每个表空间的状态 select tablespace_name block_size status contents logging from dba_tablespaces; select tablespace_name status from dba_tablespaces;

知道每个表空间存在哪个磁盘上以及文件的名字等信息 SELECT file_id file_name tablespace_name status bytes from dba_data_files; select file_name tablespace_name from dba_data_files;

知道Oracle数据库系统上到底有多少用户和都是什么时候创建的 select username created from dba_users; select username DEFAULT_TABLESPACE from dba_users;

从控制文件中取出信息涉及到以下一些相关的命令

复制代码 代码如下: select from v$archived select from v$archived_log select from v$backup select from v$database select from v$datafile select from v$log select from v$logfile select from v$loghist select from v$tablespace select from v$tempfile

控制文件由两大部份组成 可重用的部份和不可重用的部分 可重用的部分的大小可用 CONTROL_FILE_RECORD_KEEP_TIME 参数来控制 该参数的默认值为 天 即可重用的部份的内容保留 天 一周之后这部份的内容可能被覆盖 可重用的部份是供恢复管理器来使用的 这部份的内容 可以自动扩展 Oracle数据库管理员可以使用CREAT DATABASE或 CREAT CONTROLFILE语句中的下列关键字(参数)来间接影响不可重用的部份的大小

复制代码 代码如下: MAXDATAFILES MAXINSTANCES MAXLOGFILES MAXLOGHISTORY MAXLOGMEMBERS

查看控制文件的配置 SELECT type record_size records_total records_used  FROM v$controlfile_record_section;

如果您的显示被分成了两部分 您需要使用类似于set pagesize 的SQLPlus命令先格式化输出 有关的格式化输出命令有以下这些 record_size   为每个记录的字节数 records_total 为该段所分配的记录个数 records_used 为该段所使用的记录个数

知道控制文件中的所有数据文件(DATAFILE) 表空间(TABLESPACE) 和重做日志(REDO LOG)所使用的记录情况 SELECT type record_size records_total records_used FROM  v$controlfile_record_section WHERE type IN ( ‘DATAFILE ‘TABLESPACE ‘REDO LOG );

获取控制文件名字 select value from v$parameter where name = control_files ; 或者 select from v$controlfile

如何在一个已经安装的Oracle数据库中添加或移动控制文件呢 以下是在一个已经安装的Oracle数据库中添加或移动控制文件的具体步骤

a 利用数据字典v$controlfile来获取现有控制文件名字

b 正常关闭Oracle数据库

c 将新的控制文件名添加到参数文件的CONTROL_FILES参数中

d 使用 *** 作系统的复制命令将现有控制文件复制到指定位置

e 重新启动Oracle数据库

f 利用数据字典v$controlfile来验证新的控制文件名字是否正确

g 如果有误重做上述 *** 作 如果无误删除无用的旧控制文件

注 如果您使用了服务器初始化参数文件(SPFILE) 您不能关闭Oracle数据库而且应该在第 步使用alter system set control_files的Oracle命令来改变控制文件的位置

复制代码 代码如下: SQL> alter system set control_files = ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL SCOPE=SPFILE;

由于控制文件是一个极其种要的文件 除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外 在数据库的结构变化之后 您应立即对控制文件进行备份 可以用Oracle命令来对控制文件进行备份 alter database backup controlfile to ‘D:\backup\control bak ;

您也可将备份到一个追踪文件中 该追踪文件包含有重建控制文件所需的SQL语句 可使用以下SQL语句来产生这一追踪文件 alter database backup controlfile to trace;

lishixinzhi/Article/program/Oracle/201311/19116

exp本地导出与imp本地导入

exp命令:

1 exp username/psw@TEST file=d:testdmp full=y2 exp username/psw@TEST file=d:testdmp owner=(ly)3 exp username/psw@TEST file= d:testdmp tables=(grid1,grid2)1其中一是将Test(与某一数据库对应的oracle服务名)数据库进行整体导出2将属于用户ly的所有表导出

3将表grid1,与grid2导出

d:testdmp是导出的文件地址

imp命令:

1 imp system/psw@TEST file=d:testdmp

2 imp system/psw@TEST full=y file=d:testdmp ignore=y3 imp system/psw@TEST file=d:testdmp tables=(grid1)ignore=y表示如果被导入的数据库中某个表已经存在就忽略不导入那个表3表示只导入grid1这个表

在导入导出前要先测试下对应的数据库是否是通的:tnsping test来测试,同样test是服务名所有命令可在cmd下执行

用exp/imp远程 *** 作数据库

对ORACLE数据库进行远程 *** 作,假设数据库在1921681110上,具体方法如下:

一、在客户端创建和服务端对应的服务名

方法1:

修改tnsnamesora文件

加入远程服务器的命名:

Sql代码

TEST_ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 1921681110)(PORT = 1521)))

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

方法2:

在oracle客户端,打开net manager。

创建一个服务命名TEST_ORCL,主机IP为:1921681110,服务名orcl,端口1521二、测试远程服务器是否畅通

进入到cmd后,执行命令:tnsping TEST_ORCL。

三、远程 *** 作数据库

导出:

Sql代码

1:exp username/password@TEST_ORCL file=bak_filepath2:exp username/password@TEST_ORCL full=y file=bak_filepathusername 用户名,password 密码,TEST_ORCL 客服端服务名,bak_filepath 备份文件存放的路径导入:

Sql代码

1:imp username/password@TEST_ORCL file=bak_filepath full=y2:imp username/password@TEST_ORCL/database_name file=bak_filepath full=y3:imp username/password@TEST_ORCL file=bak_filepath fromuser=fromadmin touser=toadminusername 用户名,password 密码,TEST_ORCL 客服端服务名,bak_filepath 备份文件存放的路径fromadmin 备份数据的用户名,toadmin 还原数据库的用户名。database_name 还原到那个数据库上full=y 将数据库整体导出,包括表结构等。

eXP和IMP是Oracle提供的一种逻辑备份工具。逻辑备份创建数据库对象的逻辑拷贝并存入一个二进制转储文件。这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。此备份方式是通过Oracle的实用工具export和import来实施的, export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。通过此工具可以衍生出多种功能, 比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。

也可以采用专业的容灾备份软件对ORACLE数据进行备份。实时数据备份的软件现在很多,CDP容灾备份方案(备特佳备份软件)在RPO和RTO两项指标上优势明显,可以实现数据的实时备份,保障业务系统的连续性。有数据级和应用级两种容灾方案。

课程综述

本课程为管理工业界最先进的信息系统的数据库管理员开发能力,学员将学会备份和恢复Oracle数据库,动手实验将会给你带来真实技术环境中的体验,开发基本的网络管理技巧,使用Oracle恢复管理器简化职责。本课程将为Oracle数据库管理员关于Oracle网络管理和备份、恢复 *** 作带来坚实的基础。

学员将学会在数据库间传输数据和使用实用程序执行管理活动。学员将学习网络概念和配置参数,以排除一些常见的网络问题。在动手实验中,学员将学会配置网络参数使得数据库客户端和工具可以和Oracle数据库服务器通讯。

本课程也满足提供备份和恢复技术,和检查各种备份,失败,还原和恢复场景,学员将学会在关键任务企业中的基于各种商业需求的备份方法,使用多种策略和Oracle恢复管理器执行备份、还原和恢复 *** 作。

l内容纲要

网络概述

基本的Oracle网络架构

基本的Oracle网络服务器端配置

基本的Oracle网络客户器端配置

Oracle共享服务器的使用和配置

备份和恢复概述

实例和媒体恢复结构

数据库存档模式的配置

Oracle恢复管理器(RMAN)概述和配置

用户管理备份

RMAN备份

用户管理的完全恢复

RMAN完全恢复

用户管理非完全恢复

RMAN非完全恢复

RMAN知识库维护

RMAN目录的创建和维护

数据库间传输数据

使用SQLLoader来加载数据

案例研究

l学员受益

从事Oracle数据库服务器的网络 *** 作和数据备份恢复管理,尤其是备份 *** 作。

l目标学员

数据库管理人员、开发人员、测试人员、数据库最终用户。

l学员条件

参加过“Oracle9i/10g数据库管理基础I”课程的学习。

可以用exp语句导出。

1、在本地oracle下找到tnsnamesora文件,一般在~\oracle\product\1020\db_1\network\ADMIN目录下。

2、打开tnsnamesora文件(文本方式打开即可),添加如下内容:

bendi =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 数据库端口号))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = 数据库服务名)

    )

  )

其中“bendi”可自定义,然后还需要知道远程数据库IP地址,数据库端口号,及数据库服务名。

3、本地打开命令提示符,输入以下内容:

exp 数据库用户名/密码@本地实例名 file=路径:\文件名dmp log=路径:\日志名log owner=数据库所属用户

4、敲击电脑回车键,等待导出结束即可。

以上就是关于如何实现两个Oracle数据库的数据同步全部的内容,包括:如何实现两个Oracle数据库的数据同步、Oracle数据库基本常用命令汇总、如何导出远程oracle数据库中的表结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9543699.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存