oracle数据同步方案与实现:

如何在两个oracle服务器之间交换数据?
来源:无忧模板 作者:网络编辑 更新时间:2010-08-09 18:10 点击:次

方案一:建立两个数据库之间的DATA_LINK,直接将新数据写入另一数据库

方案二:使用SQL *PLUS的COPY命令

方案三:使用eXP/imp工具,增量导出/导入

方案四:在主机2上建立Stand By Database

方案五:使用Oracle的高级复制选项

   表的连接是指在一个SQL语句中通过表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的连接主要可分四种,分别为相等连接,外连接,不等连接和自连接,本文将主要从以下几个典型的例子来分析Oracle表的四种不同连接方式:

  1. 相等连接

  通过两个表具有相同意义的列,可以建立相等连接条件。

  只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。

  例 查询员工信息以及对应的员工所在的部门信息;

  SELECT * FROM EMP,DEPT;
  SELECT * FROM EMP,DEPT
  WHERE EMP.DEPTNO = DEPT.DEPTNO;

  REM 显示工资超过2000的员工信息以及对应的员工的部门名称。

  2. 外连接

  对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。

  外连接采用(+)来识别。

  A) 左条件(+) = 右条件;

  代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。

  此时也称为"右外连接".另一种表示方法是:

  SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 连接条件

  B) 左条件 = 右条件(+);

  代表除了显示匹配相等连接条件的信息之外,还显示左条件所在的表中无法匹配相等连接条件的信息。

  此时也称为"左外连接".

  SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 连接条件

  例 显示员工信息以及所对应的部门信息

  --无法显示没有部门的员工信息

  --无法显示没有员工的部门信息

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

  --直接做相等连接:

  SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;
  SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  REM 显示员工信息以及所对应的部门信息,显示没有部门的员工信息

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);
  SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  3. 不等连接

  两个表中的相关的两列进行不等连接,比较符号一般为>,<,...,BETWEEN.. AND..

  REM SALGRADE
  --DESC SALGRADE;
  --SELECT * FROM SALGRADE;

  REM 显示员工的编号,姓名,工资,以及工资所对应的级别。

  SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP
  WHERE EMP.SAL BETWEEN LOSAL AND HISAL;

  REM 显示雇员的编号,姓名,工资,工资级别,所在部门的名称;

  SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE
  WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;

  4. 自连接

  自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。下面介绍一下自连接的方法:

  将原表复制一份作为另一个表,两表做笛卡儿相等连接。

  例 显示雇员的编号,名称,以及该雇员的经理名称

  SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER

  WHERE WORKER.MGR = MANAGER.EMPNO;

--------------------------------------

实现oracle中的表A与oracle中的表B保持数据同步
10 [ 标签:oracle表, 数据同步 ] 指尖淡淡忧伤 2010-03-02 17:47
当我在给表A做插入、更新、删除的操作的时候。同时更新表B的数据。使表B的数据与表A一致。

这个要通过触发器来完成···
补充回答:
CREATE OR REPLACE TRIGGER trg_add_emp_info --触发器名字
BEFORE INSERT --insert就是插入 还可以 update和 delete
ON 表名
FOR EACH ROW
begin

end

--------------------------------------
Oracle数据导入导出imp/exp命令
--如何在oracle中导入dmp数据库文件?
2006/2/16 zhanghua first create                            
    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中  安装目录\ora81\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
  exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
  exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
   exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
  exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
 也可以在上面命令后面 加上 compress=y 来实现。
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
  imp system/manager@TEST  file=d:\daochu.dmp
  imp aichannel/aichannel@HUST full=y  file= d:\data\newsmgnt.dmp ignore=y
  上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
  在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
注意:
 1、在进行导入恢复时,如果是全部导入的话,就需要将原有的用户删除,这样此用户所拥有的数据就可以直接被删除了,否则在进导入时会下面的错误提示( ORACLE error 2291 encountered )那是因为与原有一些表,或主键出现冲突所致,所以再重新建立此用户,再导入数据就可以了。
  2、在从导出文件中只导入某个表时,一定要使用该用户导入,比如只将ghb用户的user_id表导入,imp
[email=ghb/123@test.sid.com]ghb/123@test.sid.com[/email]
file=/tmp/ghb_2006.dmp tables=(user_id)
注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
  DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
     DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
     imp userid=system/manager full=y file=*.dmp
     或者 imp userid=system/manager full=y file=filename.dmp
执行示例:
F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp
屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表                  "INNER_NOTIFY"          4行被导入
准备启用约束条件...
成功终止导入,但出现警告。
附录二:
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
 先建立import9.par,
 然后,使用时命令如下:imp parfile=/filepath/import9.par
 例 import9.par 内容如下:
       FROMUSER=TGPMS        
       TOUSER=TGPMS2     (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)          
       ROWS=Y
       INDEXES=Y
       GRANTS=Y
       CONSTRAINTS=Y
       BUFFER=409600
       file==/backup/ctgpc_20030623.dmp
       log==/backup/import_20030623.log

第三方数据导入导出工具:一般会用到Toad或者plSql外部工具,

转载于:https://blog.51cto.com/tengzhaoyong/1398105

oracle数据库同步交换的方法相关推荐

  1. DSG-RealSync Oracle数据库同步复制及容灾技术简述

    DSG-RealSync Oracle数据库同步复制及容灾技术简述 1 为什么需要数据复制 1.1 信息系统存在的问题及需求 随着计算机应用系统的爆炸式发展,业务量迅速增加,业务种类日益复杂,企业必须 ...

  2. 数据分片排序oracle,基于ORACLE数据库的海量数据脱敏方法与流程

    本发明涉及一种数据脱敏方法,尤其涉及一种基于oracle数据库的海量数据脱敏方法. 背景技术: oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管 ...

  3. oracle分页的方法,Oracle数据库分页的集中方法(三种方法)

    在 做项目中用到了分页,下面说一下oracle分页的方法; 采用伪列 rownum 查询前10条记录 [sql] select * from t_user t where ROWNUM <10; ...

  4. ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法

    ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 10小时前 ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 分类: ASP.NET| ...

  5. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  6. 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法

    linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...

  7. sqlplus命令行登录oracle数据库的N种方法盘点

    欢迎访问我的个人博客IT废柴,本文永久链接移至:sqlplus命令行登录oracle数据库的N种方法盘点 sqlplus有几种登陆方式Oracle数据库, 比如: 1.以操作系统权限认证的oracle ...

  8. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法

    Oracle数据库的数据迁移方法 发表于:2008-04-14来源:作者:点击数: 随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统 ...

  9. oracle数据库导入txt,oracle数据库导入TXT文件方法介绍

    客户端连接数据库导入 1. 安装有oracle客户端,配好监听. 2. 以oracle数据库app用户的表user_svc_info为例 CREATE TABLE USER_SVC_INFO( PHO ...

最新文章

  1. 查看mysql 默认端口号和修改端口号
  2. hdu1174(3维射线与圆是否相交)
  3. [MySQL FAQ]系列 — 线上环境到底要不要开启query cache
  4. 关于c/c++/obj-c的混合使用 (2010-06-22 10:05:33)
  5. unbuntu 启动任务脚本_Ubuntu下服务启动脚本编写
  6. 多功能笔记工具Notability创建甜甜圈图案的趣味教程
  7. 变革中的技术——2010-2011回顾与展望
  8. 邻接矩阵实现(有向邻接矩阵)、(无向邻接矩阵) 基于C++
  9. 不动产房屋结构代码_不动产单元设定与代码编制规则
  10. 苏州大学计算机考研复试机试,2014年苏州大学计算机考研经验
  11. Linux之进程管理——查看进程
  12. ltm4650_LTM4650IY-1APBF_代理全新进口【linear】现货商
  13. 运维排查篇 | 访问nginx出现403错误
  14. 企业微信批量操作工具1.0
  15. java native函数库_Java 层调用 Native 层函数的两种方式
  16. 苏州新导化工厂人员定位系统功能真的如此强大?当然强大,定位准确
  17. kubernetes容灾备份工具velero
  18. 【信管1.3】计算机网络基础(一)网络标准与协议
  19. vmware12虚拟机中ubuntu16.04安装搜狗输入法
  20. java looper_java-无法在某些设备上尚未调用Looper.prepare...

热门文章

  1. Jdk11,Jdk12的低延迟垃圾收集器ZGC
  2. 修改CentOS yum源
  3. zookeeper快速入门——部署
  4. Ubuntu上Vim安装NERDTree插件操作步骤
  5. 开源库nothings/stb的介绍及使用(图像方面)
  6. 【FFmpeg】结构体详解(二):AVStream、AVPacket、AVOutputFormat
  7. 鸿蒙系统首批更新机器,鸿蒙系统升级名单
  8. c++ 测试串口速率_Raspberry Pi Zero W:串口(UART)的配置和使用
  9. 怎么修改php.in的时间,melongin怎么设置
  10. android bitmap 转drawable,android Drawable转换成Bitmap失败