zoukankan      html  css  js  c++  java
  • Oracle高级复制

    在开始之前,需要简单说明一下,目前公司有几个项目都采用Oracle作为数据库平台,并且有的项目使用到了Oracle的数据库复制技术,其中也遇到了一些问题,因此在这里,我对Oracle的复制技术谈一下我个人的理解,希望能够对采用Oracle数据库的项目组有所帮助。其中在文中使用到的SQL脚本都是经过检验可以运行的。
      首先简单介绍和数据库复制有关的基本概念,然后探讨Oracle数据复制技术中的几个重要模型,最后介绍Oracle的数据复制管理器以及如何利用它来配置和维护复制环境。 
      在文章的开头,我想首先简单谈一下复制的基本概念,也就是什么是复制?复制简单地说就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。Oracle高级复制,也称为对称复制,第一次是在Oracle 7.1.6版本中出现的,在这之前的Oracle版本中,Oracle数据复制方法仅有只读快照形式的基本复制一种方法。随着Oracle版本的每一次升级,数据复制的功能、管理以及速度等方面都得到了很大的改进和完善。目前,由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。 
    1.基本概念
    1. 分布式数据库技术
    分布式数据库技术是目前我们经常提及的分布式计算的一个重要组成部分,该技术允许数据在多个服务器端共享。采用分布式数据库技术,一个本地服务器可以存取不同物理地点的远程服务器上的数据;也可以使所有的服务器均可以持有数据的拷贝/复制,这样分布式系统中的所有服务器均可进行本地存取。
    设计一个分布式计算解决方案首先需要考虑的问题就是应用的完整性、复杂性、性能和可用性以及响应时间等,同时还需要考虑的是对于不同的应用需求是采用实时存取远程数据还是采用延迟存取远程数据。这对于数据复制来讲就是采取实时更新复制方案还是延迟数据复制方案。 
    2. 同步和异步的概念 
    同步分发数据库技术是一种实时远程存取和实时更新数据的技术。这种技术可以保证应用的完整性降低了应用的复杂性,但是如果系统存在网络存取速度很慢这样的问题,相应响应时间就会很慢。 
    异步分发数据库技术是一种延迟远程存取和延迟传播对数据更新的技术。这种技术具有很高的可用性和很短的响应时间。相比同步分发数据库技术就显得复杂一些,为了确保应用的完整性需要仔细考虑和设计。 
    对于实际的商业问题,必须权衡这两种技术的利弊最终选择最佳的解决方案,有些问题选用同步技术比较适合,也有一些问题采用异步技术是比较好的解决方案,还有一些问题必须综合这两种技术。 
    3. 复制的概念 
    复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中以支持分布式应用,它是整个分布式计算解决方案的一个重要组成部分。上面介绍了同步和异步的概念,这里针对复制也存在同步复制和异步复制的问题。 
    同步复制,复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。 
    异步复制,所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。 
    4. 更新冲突 
    在异步复制环境中,对于所有应用最关键的就是要确保数据的一致性。我们来看下面这种情况会有什么后果发生呢?在同一时间对同一个表的同一行数据的同一列在两个不同的地点作更新。这种情况就会发生称之为更新冲突的错误。为保证数据的一致性,更新冲突必须被检测到并且处理以确保在不同地点的数据元素保持同样的值。更新冲突可以通过限制"所有权" 到单一节点或者将更新某个特定数据元素的权利限制到某一具体节点的方法
     
    *************************************************************
     
    为了使公司oracle数据库 不让其他用户导出,如何操作
     
    -- 如果是用数据泵导出和导入的话
    所有的Oracle用户都可以在默认情况下使用数据泵实用程序。但是,必须有特殊的权限EXP_FULL_DATABASE和IMP_FULL_DATABASE才能执行高级任务。这些角色的授予将使你成为一个授权用户。并能够执行以下任务:
    -- *(01). 导出和导入用户所拥有的数据库对象;
    -- *(02). 加入并修改由其他用户启动的作业;
    -- *(03). 在数据泵导入作业中使用所有新的重映射的功能。
     
    如罗兄所说:移除导出数据泵权限
     
    当然前提是有权限,没有权限的话怎么导出
     
     
     
    ***********************************************************
    PL/SQL Developer导入导出数据库方法及说明
     
    PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍。
    导出步骤:
    1 tools ->export user object 选择选项,导出.sql文件。
    2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件。
    导入步骤:
    注:导入之前最好把以前的表删除,当然导入另外数据库除外。
    1 tools->import tables->SQL Inserts 导入.sql文件。
    2 tools->import talbes->Oracle Import然后再导入dmp文件。
    一些说明:
    Tools->Export User Objects导出的是建表语句(包括存储结构)。
    Tools->Export Tables里面包含三种导出方式,三种方式都能导出表结构以及数据,如下:
    Oracle Export
    Sql Insert
    pl/sql developer
    第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广 。
    第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)。
    第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出,不能用编辑器查看。
  • 相关阅读:
    Hash详解
    手写2048
    20180429模拟赛T1——添边问题
    题解:UVA1025 A Spy in the Metro
    20180418模拟赛T2——Gym
    20180418模拟赛T1——Seq
    学习:中国剩余定理
    20180414模拟赛T2——拼图
    20180414模拟赛T1——BEAD
    学习:树状数组
  • 原文地址:https://www.cnblogs.com/huapox/p/3251516.html
Copyright © 2011-2022 走看看