oracle高级复制
- 格式:doc
- 大小:47.00 KB
- 文档页数:16
数据库之间的表格复制例:从wxfctjdb复制表格到本机orcl数据库ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))WXFC =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))方法1:创建dblink1、登录本机orcl数据库打开cmd,输入 sqlplus sys/Oracle123 as sysdba 回车方法2:copy from1、登录本机orcl数据库打开cmd,输入sqlplus sys/Oracle123 as sysdba 回车2、复制表格copy from wxfctjdb/wxfctjdb@wxfc to wxfctjdb/wxfctjdb@orcl create fwdjmxb using select * from fwdjmxbcopy from wxfctjdb/wxfctjdb@wxfc create fwdjmxb using select * from fwdjmxbinsert into thp_reginfo select * from view_reginfo 表结构一样,数据复制create table a as select * from b 创建表create view view_a as select * from b 创建视图3、bat法select table_name from user_tables 查询当前用户下所有表名创建一个.sql文件copy from decision/decision@acfc create HOUSE_NATURE using select * from HOUSE_NATURE;copy from decision/decision@acfc create HTBA_CONTRACTBLD using select * from HTBA_CONTRACTBLD; 创建一个.dat文件,引用 .sql文件,log为输出日志文件@echo offsqlplus acfc/acfc@orcl @E:\1.sql > log.txtexit。
OracleSELECTINTO和INSERTINTOSELECT两种表复制语句详解在Oracle中select into from不可以使⽤,⽤create table select代替该功能在Sql Server中可以正常使⽤。
1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1注意:(1)要求⽬标表Table2必须存在,并且字段field,field2...也必须存在(2)注意Table2的主键约束,如果Table2有主键⽽且不为空,则 field1, field2...中必须包括主键(3)注意语法,不要加values,和插⼊⼀条数据的sql混了,不要写成:Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1)由于⽬标表Table2已经存在,所以我们除了插⼊源表Table1的字段外,还可以插⼊常量。
⽰例如下:--1.创建测试表create TABLE Table1(a varchar(10),b varchar(10),c varchar(10))create TABLE Table2(a varchar(10),c varchar(10),d int)--2.创建测试数据Insert into Table1 values('赵','asds','90')Insert into Table1 values('钱','asds','100')Insert into Table1 values('孙','asds','80')Insert into Table1 values('李','asds',null)select*from Table2--3.INSERT INTO SELECT语句复制表数据Insert into Table2(a, c, d) select a,c,5from Table1--4.显⽰更新后的结果select*from Table2--5.删除测试表drop TABLE Table1drop TABLE Table2例:-使⽤insert into select拷贝数据(注意红⾊部分,可以⾃动⽣成id序列值)insert into test2(id,testname,createtime,falg)select seq_test.nextval,t1.testname,t1.createtime,t1.falg from test1 t1;2.SELECT INTO FROM语句语句形式为:SELECT vale1, value2 into Table2 from Table1要求⽬标表Table2不存在,因为在插⼊时会⾃动创建表Table2,并将Table1中指定字段数据复制到Table2中。
《深入解析Oracle中的Copy From参数》在Oracle数据库中,Copy From参数是一个非常重要的功能,它可以帮助用户在不同的数据库之间轻松地复制数据。
通过Copy From参数,用户可以将数据从一个数据库复制到另一个数据库,而且操作相对简单,方便快捷。
一、Copy From参数的作用在Oracle数据库中,Copy From参数主要用于实现数据库之间的数据复制。
它可以帮助用户将一个数据库中的数据复制到另一个数据库中,无论是在同一个服务器上,还是在不同的服务器上,都可以轻松搞定。
这对于在不同数据库之间进行数据同步、数据迁移以及备份恢复非常有帮助。
二、使用Copy From参数的步骤1. 连接源数据库和目标数据库在使用Copy From参数进行数据复制之前,首先需要连接源数据库和目标数据库。
用户需要在源数据库中执行一些特定的命令来准备数据,然后连接目标数据库并执行Copy From参数命令来完成数据复制的操作。
2. 执行Copy From参数命令执行Copy From参数命令时,用户需要指定源数据库和目标数据库的连接信息,以及要复制的数据表和字段等相关信息。
在执行命令的过程中,用户还可以根据实际需求进行一些参数配置,如过滤条件、数据转换等,以满足不同的复制需求。
3. 监控复制过程在数据复制过程中,用户需要及时监控复制的进度和状态,以确保复制过程能够顺利进行。
如果在复制过程中出现了一些错误或者异常情况,用户还需要及时处理,以避免数据的丢失或者损坏。
三、Copy From参数的个人观点和理解Copy From参数是Oracle数据库提供的一个非常实用的功能,它可以帮助用户解决数据库之间数据复制的难题,简化了数据迁移和备份恢复的操作流程。
通过Copy From参数,用户可以高效快速地完成数据复制,减少了人工操作的繁琐,提高了工作效率,降低了出错的概率。
总结回顾:通过本文对Oracle数据库中Copy From参数的深入探讨和介绍,相信读者对于该功能有了更全面、更深入的理解。
一、什么是Oracle Copy?Oracle Copy是一种数据备份和复制技术,它可以将数据库中的数据复制到其他存储介质中,以便在需要时进行恢复或迁移。
Oracle Copy 可以用于在同一数据库实例中创建备份,也可以用于将数据复制到其他数据库实例中。
它是Oracle数据库管理中常用的工具之一,可以帮助用户更好地保护数据库中的数据,确保数据的安全和可靠性。
二、Oracle Copy的使用场景1.备份数据使用Oracle Copy可以将数据库中的数据备份到磁盘、磁带或云存储中,以防止数据丢失或损坏。
备份数据可以用于恢复意外删除或损坏的数据,也可以用于数据库迁移或升级。
2. 数据迁移当需要将数据库中的数据迁移到其他数据库实例中时,Oracle Copy可以帮助用户将数据复制到目标数据库中,保证数据的一致性和完整性。
这对于数据库升级、迁移或合并非常有用。
3. 数据复制有时用户需要将数据库中的部分数据复制到其他位置进行分析或处理,Oracle Copy可以帮助用户实现数据的复制和传输,确保目标数据的完整性和准确性。
4. 灾难恢复在数据库遭受灾难性损失时,可以使用Oracle Copy进行数据库恢复,将备份数据恢复到原始状态,以减少损失并确保业务的连续性。
5. 测试和开发在测试和开发环境中,可以使用Oracle Copy复制生产环境中的数据,以便开发人员进行测试和开发工作,而不会影响生产环境中的数据。
三、Oracle Copy的使用方法1. 使用RMAN备份Oracle提供了强大的备份和恢复工具RMAN(Recovery Manager),可以通过RMAN进行数据库备份和复制。
用户可以通过RMAN创建全量备份、增量备份或归档日志备份,以及将备份数据复制到其他位置。
2. 使用expdp和impdp工具expdp和impdp是Oracle提供的数据导出和导入工具,可以通过这些工具将数据库中的数据导出到文件中,然后再将导出的数据文件导入到其他数据库中,实现数据的复制和迁移。
高级复制什么是复制?简单地说复制就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。
高级复制,是在组成分布式数据库系统的多个数据库中复制和维护数据库对象的过程。
Oracle 高级复制允许应用程序更新数据库的任何副本,并将这些更改自动传递到其他数据库,同时确保全局事务处理的一致性和数据完整性。
同步复制,复制数据在任何时间在任何复制节点均保持一致。
如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。
这种技术适用于那些对于实时性要求较高的商业应用中。
异步复制,所有复制节点的数据在一定时间内是不同步的。
如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。
这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。
复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。
一、实现数据库复制的前提条件1、数据库支持高级复制功能您可以用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持。
2、数据库初始化参数要求①、db_domain = 指明数据库的域名(默认的是WORLD),这里可以用您公司的域名。
②、global_names = true它要求数据库链接(database link)和被连接的数据库名称一致。
现在全局数据库名:db_name+”.”+db_domain③、有跟数据库job执行有关的参数job_queue_processes = 1job_queue_interval = 60distributed_transactions = 10open_links = 4第一行定义SNP进程的启动个数为n。
系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
集群定义:集群是指用一组服务器运行一到多个应用程序。
简单的说,集群可以简单到只有两台服务器,在他们之间配置故障切换,如果一台服务器失效,由另一台服务器接管应用程序的处理。
集群也可以用来运行复杂的分布式系统:应用程序将数据分割成多个可管理的部分,每个部分都可以独立进行处理。
如果一台服务器失效,其他服务器不会受影响,失效节点的进程被重新分配到集群中的其他节点。
集群的三种分类:故障切换集群、分布式数据库系统、共享磁盘系统1.故障切换集群又可以分为两类:(1.1主动/被动集群、1.2 主动/主动集群)1.1主动/被动集群:任何时候都只有一台服务器拥有负载,辅助服务器以被动模式运行,时刻等待着主动服务器停机进而接管主服务器,它一直与主动服务器保持同步。
缺点:只有一个服务器拥有负载,资源浪费,效率低。
1.2 主动/主动集群:两台服务器同时都执行实际的任务。
每台服务器都同一个实例,同时又可以作为其他服务器上运行的实例的故障切换数据库。
缺点:需要对集群中的两台服务的规模进行规划,使其在故障切换时能够临时处理两个节点的任务。
集群中的两个节点随时都可能切换到另一方。
2.分布式数据库系统分布式数据库系统中,多个数据库服务器通过某种机制保持同步。
它又可以分为两类:(2.1副本数据库、2.2备用数据库)2.1副本数据库:由同一个数据库的多个副本组成。
有些副本是只读的,有些则可读写。
Oracle高级复制(Advanced Replication)是一种保持数据库同步的机制。
缺点:副本数据库同步保持数据库的多个同步复制需要消耗大量的资源。
如果启用了两阶段事物(two-phase)事务,数据库中的任何修改都要等到所有的分布数据库都确认以后才算完成,在数据更新量大的环境下容易出问题。
2.2备用数据库。
备用数据是活动数据库的事务一致性副本(transactionally consistent copy).在oracle10g 中,备用数据库是数据卫士(Data Guard)产品的一部分,可以使用重做数据(redo data)保持最新。
oracle 命令复制表结构及数据主键索引注释In Oracle, there are several ways to copy a table's structure, data, primary keys, indexes, and comments. Here are the methods you can use:1. Using CREATE TABLE AS SELECT statement:You can use the CREATE TABLE AS SELECT statement to create a new table with the same structure and data as an existing table.Example:CREATE TABLE new_table AS SELECT * FROM existing_table;This command will create a new table called "new_table" with the same structure and data as "existing_table".使用CREATE TABLE AS SELECT语句:您可以使用CREATE TABLE AS SELECT语句来创建一个具有与现有表相同的结构和数据的新表。
示例:CREATE TABLE new_table AS SELECT * FROM existing_table;这个命令将创建一个名为“new_table”的新表,该表的结构和数据与“existing_table”相同。
2. Using the EXPDP/IMPDP utility:You can use the Oracle Data Pump utility (EXPDP/IMPDP) to export and import tables with their structures, data, primary keys, indexes, and comments.Example:To export the table:expdp system/password@database_name tables=table_name directory=directory_name dumpfile=dumpfile_name.dmplogfile=log_file.logTo import the table:impdp system/password@database_name tables=table_name directory=directory_name dumpfile=dumpfile_name.dmplogfile=log_file.log使用EXPDP/ IMPDP实用程序:您可以使用Oracle Data Pump实用程序(EXPDP/ IMPDP)导出和导入带有其结构、数据、主键、索引和注释的表。
Oracle高级复制在开始之前,需要简单说明一下,目前公司有几个项目都采用Oracle作为数据库平台,并且有的项目使用到了Oracle的数据库复制技术,其中也遇到了一些问题,因此在这里,我对Oracle的复制技术谈一下我个人的理解,希望能够对采用Oracle数据库的项目组有所帮助。
其中在文中使用到的SQL脚本都是经过检验可以运行的。
首先简单介绍和数据库复制有关的基本概念,然后探讨Oracle数据复制技术中的几个重要模型,最后介绍Oracle的数据复制管理器以及如何利用它来配置和维护复制环境。
在文章的开头,我想首先简单谈一下复制的基本概念,也就是什么是复制?复制简单地说就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。
Oracle高级复制,也称为对称复制,第一次是在Oracle 7.1.6版本中出现的,在这之前的Oracle版本中,Oracle数据复制方法仅有只读快照形式的基本复制一种方法。
随着Oracle版本的每一次升级,数据复制的功能、管理以及速度等方面都得到了很大的改进和完善。
目前,由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。
1.基本概念1. 分布式数据库技术分布式数据库技术是目前我们经常提及的分布式计算的一个重要组成部分,该技术允许数据在多个服务器端共享。
采用分布式数据库技术,一个本地服务器可以存取不同物理地点的远程服务器上的数据;也可以使所有的服务器均可以持有数据的拷贝/复制,这样分布式系统中的所有服务器均可进行本地存取。
设计一个分布式计算解决方案首先需要考虑的问题就是应用的完整性、复杂性、性能和可用性以及响应时间等,同时还需要考虑的是对于不同的应用需求是采用实时存取远程数据还是采用延迟存取远程数据。
这对于数据复制来讲就是采取实时更新复制方案还是延迟数据复制方案。
2. 同步和异步的概念同步分发数据库技术是一种实时远程存取和实时更新数据的技术。
这种技术可以保证应用的完整性降低了应用的复杂性,但是如果系统存在网络存取速度很慢这样的问题,相应响应时间就会很慢。
异步分发数据库技术是一种延迟远程存取和延迟传播对数据更新的技术。
这种技术具有很高的可用性和很短的响应时间。
相比同步分发数据库技术就显得复杂一些,为了确保应用的完整性需要仔细考虑和设计。
对于实际的商业问题,必须权衡这两种技术的利弊最终选择最佳的解决方案,有些问题选用同步技术比较适合,也有一些问题采用异步技术是比较好的解决方案,还有一些问题必须综合这两种技术。
3. 复制的概念复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中以支持分布式应用,它是整个分布式计算解决方案的一个重要组成部分。
上面介绍了同步和异步的概念,这里针对复制也存在同步复制和异步复制的问题。
同步复制,复制数据在任何时间在任何复制节点均保持一致。
如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。
这种技术适用于那些对于实时性要求较高的商业应用中。
异步复制,所有复制节点的数据在一定时间内是不同步的。
如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。
这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。
复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。
4. 更新冲突在异步复制环境中,对于所有应用最关键的就是要确保数据的一致性。
我们来看下面这种情况会有什么后果发生呢?在同一时间对同一个表的同一行数据的同一列在两个不同的地点作更新。
这种情况就会发生称之为更新冲突的错误。
为保证数据的一致性,更新冲突必须被检测到并且处理以确保在不同地点的数据元素保持同样的值。
更新冲突可以通过限制"所有权" 到单一节点或者将更新某个特定数据元素的权利限制到某一具体节点的方法来避免。
2.Oracle数据复制应用模型为确保实际应用数据的一致性,必须在异步复制应用模型中考虑冲突避免或者冲突检测和消除的方法。
例如,对于一个实际商业应用,首先必须在逻辑上了解该商业应用采取的冲突避免方法和在某个节点有那些数据以及这些数据中那些是可更新的,而那些又是不可更新的。
在下面的这一部分中,我们首先将详细讨论两种常用的冲突避免方法:主站点所有权模型和动态所有权模型。
然后,讨论共享所有权模型以及这种模型引起的冲突检测和处理问题,最后,讨论针对Fail-over的复制配置,这种复制方案同时考虑了冲突避免和冲突检测与消除两种情况。
1. 主站点所有权主站点所有权,异步复制数据被一个单一节点"所有",这些要复制的数据仅能被该节点更新,其他节点向拥有该数据的主节点订阅(subscribe)数据,这意味着他们在本地系统上只能够存取这些复制数据的只读拷贝。
下面是一些这样的例子。
(1)决策支持系统(DSS)的联机事务处理数据的卸载。
来自一个或者多个OLTP系统的数据可以被卸载到一个独立的局部DSS中,用于只读分析(2)中央信息的分发。
产品信息,如价格列表等在总部节点上维护,然后将这些信息复制到远程销售办事处的只读产品目录系统中(3)远程信息的集中。
许多远程节点上的产品目录数据复制到总部节点,这里总部节点只需要有数据只读的权限一个主节点拥有一个表的完全所有权,而其他节点只能订阅这个表的只读拷贝。
也可以是多个主节点拥有同一个表的截然不同子集或者划分,而另一些节点则订阅这些子集或者划分的只读拷贝。
如,一个分布的产品目录系统可以让不同的销售办事处拥有一个表的属于自己的一个"水平"部分,如在客户(CUSTOMERS)表, 订单(ORDERS)表和目录(ITEMS)这些表中含有每个销售办事处为之服务的客户和产品信息。
中心总部节点可以通过订阅每个办事处拥有的数据来保持一个完整的所有产品和客户信息的只读拷贝。
2. 动态所有权动态所有权,异步更新将复制数据从一个节点移到另一个节点,而在该过程中,必须保证在同一时刻只有一个特定的节点可以对数据进行更新。
一个典型实际应用就是"海关订单处理系统",订单处理的典型步骤是,报关→同意→装运→开单→收单→入帐等。
应用模型可以执行其中的任何步骤,但必须保证各个不同模块的同一个数据应该在一个综合数据库中。
在该系统中,当且仅当订单的状态表明前一个步骤已经完成时,下一个应用模块才可以执行更新订单数据的操作。
例如,"装运"应用模块仅能在"报关"并且得到"同意"后才能被执行。
(Delphi中的DEMO程序中提供了一个简化版本演示程序)通过使用动态所有权复制模型,可以将一个系统分布在多个节点和数据库上,也就是说应用模型可以建立在不同的系统上。
我们还是来看上面的例子,"报关"和"批准"这两部分可以运行在一个系统上,"装运"在另一个系统上,"开单"和"收单"等又可在一个系统上。
在这个分布式系统中,数据可以被复制到不同的节点上,这些节点对复制的数据只要具有只读的权限即可。
如,利用复制,"报关"节点可以监视已经报关的订单处理过程。
前面讨论的主节点所有权和动态所有权复制模型具有一个共同的特征:在任何一个给定的时间点,只允许一个节点有更新数据的权利,而其余节点对于复制的数据拷贝仅有只读权限。
然而,还存在这样的情况,允许多个节点可以更新同一个数据,在极端情况下可以是在同一时刻,这就是所说的共享所有权。
3. 共享所有权共享所有权使用异步复制,这对于主节点和动态所有权模型来讲存在一些限制。
在共享所有权情况下,整个系统可以存在暂时的不一致,同时必须使用冲突检测和消除。
共享所有权模型相对于前面两种模型具有一些新的特点。
例如,对于前面我们讨论的那个采用具有水平划分主节点复制方案来的分布式"订单处理系统"的例子。
采用共享所有权模型,每个销售办事处都有库表中不同的水平划分,该库表含有每一个办事处为之服务的一些订单信息和与消费者有关的顾客信息。
每一个销售办事处只输入与自己有关的顾客订单情况,而不管其余顾客信息。
然而,在实际商业应用中,这个模型不是最佳的选择。
例如,这种情况,一个零售集团在一个大城市中可以有好几个商场。
顾客可能经常去离他们住的最近的那个商场,但是偶尔也可能到其他商场去购物。
这时,如果多家商场执行更新同一个顾客和其订单数据的信息,更新冲突就会发生。
所以在这种情况下必须要采用冲突检测和消除方案。
Oracle高级复制支持同时既考虑冲突避免又考虑冲突检测和消除的复制模型。
Oracle高级复制之所以又称为对称复制,其原因之一就是支持对称复制模型,也就是可以在任何地方更新,即所有的复制节点都可以进行更新处理。
为了避免冲突,一种方法就是将应用设计为将更新限制在一些特定的节点。
对于共享所有权,Oracle提供了自动冲突检测和消除方案。
4. 备用数据库(Fail-Over)异步复制通过将一个主系统数据复制到另一系统,可以起到对主系统的崩溃提供保护的作用,这也就是所说的Fail-Over系统,如果主系统出现问题,业务依旧可以通过复制数据库进行。
Oracle高级复制支持这种Fail-Over配置。
同时,Oracle也针对Fail-Over提供了另外两个可选的解决方案:Oracle并行服务器和备用数据库配置。
用户可以根据吞吐量、可用性、事务损失的可能性和其他一些如数据一致性、方法的局限性等参考指标来权衡选择合适的Fail-Over方案。
3.Oracle 高级复制配置Oracle高级复制即可支持基于整个表的复制也可支持基于部分表的复制两种复制方案。
这两种复制方案主要是通过Oracle的两种复制机制来完成的,即多主复制和可更新快照复制,同时还可以将这两种复制机制结合起来以满足不断变化的业务需求。
1. 多主复制多主复制方案支持全表在各个主节点间的对称复制,允许所有主节点对主表都有更新操作的权利。
任何一个主节点上的复制表的更新都会被传播并被直接应用到其他所有主表。
一个主节点出现问题,不会对其他主节点之间变化的传播造成影响。
多主复制采用一种称为"延迟远程过程调用(deferred remote procedure calls RPCs)"的机制作为主要的传播和应用变化的机制。
各节点之间变化的传播,既可以以基于事件的方式立即传播,也可以在某个特定的时间点,如在网络空闲时(如晚上)传播。
在传播变化时,如果其中的一个远端系统没有准备好,传播变化的延迟远程过程调用(RPCs)就会保存在其本地队列中,等到系统准备好以后再执行。