Oracle数据泵同步数据方式简要步骤

合集下载

Oracle数据库同步技术

Oracle数据库同步技术

基于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数据库表是保证数据库数据安全的重要措施之一。

本文将介绍几种备份Oracle数据库表的方法,帮助用户选择适合自己的备份方式。

一、使用数据泵导出表数据数据泵是Oracle提供的一个强大的工具,可以将表数据导出为一个可移植的二进制文件。

使用数据泵导出表数据的步骤如下:1. 连接到数据库:使用SQL*Plus或SQL Developer等工具连接到Oracle数据库。

2. 导出表数据:运行以下命令导出表数据:```expdp username/password@connect_string tables=table_name directory=directory_name dumpfile=dumpfile_name.dmp```其中,username是数据库用户名,password是密码,connect_string是数据库连接字符串,table_name是要导出的表名,directory_name是存储导出文件的目录,dumpfile_name是导出文件的名称。

3. 导出结果:数据泵将会导出表数据,并保存在指定的目录中的导出文件中。

二、使用INSERT语句备份表数据除了使用数据泵,还可以使用INSERT语句将表数据备份到另一个表中。

这种方法适用于小型数据库,备份过程如下:1. 创建备份表:在同一个数据库中创建一个与原表结构相同的备份表。

```CREATE TABLE backup_table AS SELECT * FROM original_table WHERE 1=0;```2. 备份数据:运行以下命令将表数据备份到备份表中。

```INSERT INTO backup_table SELECT * FROM original_table;```注意,这个命令会将原表的所有数据复制到备份表中。

三、使用Oracle备份工具除了以上两种方法,还可以使用Oracle备份工具进行表数据备份。

oracle 数据泵 备份 步骤

oracle 数据泵 备份 步骤

oracle 数据泵备份步骤Oracle 数据泵是一种用于备份和恢复数据库的工具,它可以将数据库对象和数据导出到一个二进制文件中,然后再将其导入到另一个数据库中。

下面将详细介绍使用Oracle数据泵进行数据库备份的步骤。

1.创建目录对象:在备份数据库之前,首先要在数据库中创建一个目录对象,用于存储导出和导入文件。

可以使用以下SQL语句来创建目录对象:```sqlCREATE DIRECTORY e某p_dir AS '/backup/dump';```其中,'e某p_dir'是目录对象的名称,'/backup/dump'是目录对象在操作系统中的路径。

2.创建数据库备份任务:可以使用e某pdp命令来创建并执行数据库备份任务。

以下是一个创建数据库备份任务的示例:```sql```其中,system是数据库用户名,password是数据库密码,dbname是数据库实例名,e某p_dir是上一步创建的目录对象名,backup.dmp是导出文件的名称,full=y表示导出整个数据库,logfile是导出日志文件的名称。

3.执行备份任务:运行上述命令后,将会开始执行数据库备份任务,导出的数据将保存到指定的目录对象中。

在此过程中,可以通过查看日志文件来跟踪导出的进度和错误信息。

4.导入备份文件:如果需要将备份文件导入到另一个数据库中,可以使用impdp命令来执行导入任务。

以下是一个导入备份文件的示例:```sql```其中,system是目标数据库的用户名,password是密码,dbname是目标数据库的实例名,e某p_dir是之前创建的目录对象名,backup.dmp 是导出文件的名称,logfile是导入日志文件的名称,full=y表示完全导入整个数据库。

5.执行导入任务:运行上述命令后,将开始导入备份文件的过程,将数据导入到目标数据库中。

在此过程中,可以查看日志文件以了解导入的进度和错误信息。

oracle数据迁移方法

oracle数据迁移方法

oracle数据迁移方法Oracle数据迁移是将现有的Oracle数据库中的数据、表结构以及相关的约束条件等迁移到另一个Oracle数据库中的过程。

在实际的数据迁移中,存在以下几种常见的方法和工具:1.手动数据迁移:手动数据迁移是一种基本的迁移方法,它需要手工编写SQL语句完成数据迁移的操作。

这种方法适用于迁移的数据量较小的情况,迁移过程相对简单。

迁移操作可以分为以下几个步骤:-创建目标数据库-创建目标数据库的表结构,包括表、索引、约束等-导出源数据库中的数据-将导出的数据文件导入到目标数据库中手动数据迁移方法的优点是灵活性高,适用于各种复杂情况下的迁移操作。

但是由于需要手工编写SQL语句,容易出现错误,对于数据量较大的迁移任务来说,效率较低。

2. Oracle迁移工具:Oracle官方提供了多个数据迁移工具,如Oracle Data Pump和Oracle GoldenGate等。

- Oracle Data Pump是一个用于高效迁移数据和元数据的工具。

它支持全库导出和导入,可以将源数据库中的数据、表结构、存储过程等导出为二进制文件,然后通过网络或者直接复制文件的方式导入到目标数据库中。

Oracle Data Pump在迁移时可以进行数据过滤、表空间映射等操作,可以对数据进行压缩和加密等处理。

- Oracle GoldenGate是一个实时数据复制和数据同步工具,它可以在源数据库和目标数据库之间实时同步数据,保证两个数据库的数据一致性。

GoldenGate可以进行额外的数据转换和过滤操作,支持多种复杂的迁移场景,如异构数据库迁移、分布式迁移等。

3.第三方迁移工具:除了Oracle官方提供的工具,还有一些第三方的数据迁移工具,如TOAD、SQL Developer等。

这些工具提供了可视化的操作界面,可以简化迁移操作的过程,提高效率。

-TOAD是一款功能强大的数据库管理工具,具有数据导入导出、数据比较、数据同步等功能。

oracle 数据库表同步方法

oracle 数据库表同步方法

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文件,然后再导入到目标表中。

该方法适用于数据量较大、需要跨不同数据库实例进行数据同步的场景。

方法五:使用外部表外部表是一种特殊的表,它不存储数据,而是通过定义外部表和数据文件的映射关系,实现对外部文件中数据的查询和操作。

可以使用外部表将数据从源表同步到目标表。

dataxoracle数据同步到oracle(异库同步传输)

dataxoracle数据同步到oracle(异库同步传输)

dataxoracle数据同步到oracle(异库同步传输)由于要实现两个不同数据源的同步,datax可以⾼效的传输,故在做海量数据同步和迁移时,可以考虑此⽅法,其中json⽂件如下。

{"job": {"setting": {"speed": {"channel": 3,"byte": 1048576},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "oraclereader","parameter": {"username": "yrH5SM8rgxfgfTYB","password": "mmdfsQ8kTgfghfg","splitPk": "","connection": [{"querySql": ["select t.ins_order_id,t.request_type,t.trad_time,t.app_time from poqx.TRADE_ORDER_HIS t where 1=1 and t.create_time >= trunc(sysdate -1 ,'dd') and t.create_time < trunc(sysdate ,'dd') " ],"jdbcUrl": ["jdbc:oracle:thin:@192.168.81.63:1521:sxyuzs"]}]}},"writer": {"name": "oraclewriter","parameter": {"username": "nE+PjgfgJZb+RbE","password": "ariudyjdkes73A9","column": ["\"INS_ORDER_ID\"","\"REQUEST_TYPE\"","\"TRAD_TIME\"","\"APP_TIME\""],"preSql": ["delete from i_w.TRADE_INSURANCE_ORDER_HIS t where t.create_time >= trunc(sysdate -1 ,'dd') and t.create_time < trunc(sysdate ,'dd')"],"connection": [{"table": ["TRADE_ORDER_HIS"],"jdbcUrl": "jdbc:oracle:thin:@//192.168.32.10:1521/oppdb"}]}}}]}}。

orcleAndqad数据互同步方法

orcleAndqad数据互同步方法

方法一利用DB2联合数据库Oracle联合表WPS_EXEC_SEQUENCE_TAB,WPS_ERPBOM,WPS_ERPPART,WPS_ERPSUPPLIERQAD联合表首先安装QAD数据库驱动,运行ERP系统客户端程序clienthelper.exe,安装QAD测试库驱动. 通过ODBC连接,建立数据源xydcseq_mstr,xydcbom_mstr,xydcvend_mstr,xydcpt_mstr存储过程过程P_READ_QADTOORACLE依次利用游标读取QAD联合数据库中的表,检查是否有记录更新,有则同步到oracle数据库中对应表对应记录CREATE PROCEDURE DB2ADMIN.P_READ_QADTOORACLE ( )-------------------------------------------------------------------------- SQL 存储过程------------------------------------------------------------------------BEGIN-------------------------------------------------------------------------- 主同步表变量------------------------------------------------------------------------DECLARE dgno varchar(50);DECLARE execstate INTEGER;DECLARE executes INTEGER;-------------------------------------------------------------------------- BOM表变量------------------------------------------------------------------------DECLARE bomerpno varchar(50);DECLARE bompdmno varchar(50);DECLARE bomerppartno varchar(50);DECLARE bompdmpartno varchar(50);DECLARE bomstate INTEGER;DECLARE bomrmks varchar(80);-------------------------------------------------------------------------- 零件表变量------------------------------------------------------------------------DECLARE parterppartno varchar(50);DECLARE partstate INTEGER;DECLARE partrmks varchar(80);-------------------------------------------------------------------------- 供应商表变量------------------------------------------------------------------------DECLARE supperppartno varchar(50);DECLARE suppcode varchar(50);DECLARE suppstate INTEGER;DECLARE supprmks varchar(80);DECLARE tmpSQL varchar(1000);DECLARE count1 INTEGER;DECLARE count2 INTEGER;DECLARE count3 INTEGER;DECLARE count4 INTEGER;DECLARE errsql varchar(2000);DECLARE v_Message V ARCHAR(2000);------------------------------------------------------------------------------ 游标定义,主表只读取最新的10条设变进行处理,其它表通过设变号读取----------------------------------------------------------------------------declare cur1 cursor for SELECT designNO, Execute FROM DB2ADMIN.WPS_EXEC_SEQUENCE_TAB where Execute<1 order by GTime;declare curtemp cursor WITH RETURN TO CALLER FOR S1;DECLARE exit handler FOR sqlexceptionbegin--开始异常处理V ALUES ('设变号:'||dgno||' 错误描述:'||errsql )INTO v_Message;--设置存储过程返回值SIGNAL SQLSTATE '99999'SET MESSAGE_TEXT =v_Message;end;set count1= (select count(*) from (SELECT designNO, Execute FROM DB2ADMIN.WPS_EXEC_SEQUENCE_TAB where Execute<1 order by GTime) as a);open cur1;while count1>0 dofetch cur1 into dgno,executes;if(executes<0) then goto A;end if;set execstate=(select xydcseq_exec from DB2ADMIN.xydcseq_mstr where xydcseq_no=dgno); if (execstate>0) then-- set dgno=''''||dgno||'''';set errsql='更新[WPS_EXEC_SEQUENCE_TAB]出错!';update WPS_EXEC_SEQUENCE_TAB set Execute =execstate where designno=dgno;----------------bom表set count2=(select count(*) from xydcbom_mstr where xydcbom_nbr=dgno);set tmpSQL='select xydcbom_fg, xydcbom_pdmfg, xydcbom_pdm_part, xydcbom_erp_part , xydcbom_status, xydcbom_rmks from xydcbom_mstr wherexydcbom_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count2>0 dofetch curtemp into bomerpno, bompdmno, bompdmpartno, bomerppartno, bomstate,bomrmks;if(bomstate>0) thenset errsql='更新[wps_erpbom]出错!';update wps_erpbom set execueState=char(bomstate),remark=bomrmks where designNO=dgno and erpProductNO=bomerpno and pdmProductNO=bompdmno and pdmPartNO= bompdmpartno and eprPartNO= bomerppartno;end if;set count2=count2-1;End while;Close curtemp;----------------零件表set count3=(select count(*) from xydcpt_mstr where xydcpt_nbr =dgno);set tmpSQL='select xydcpt_part, xydcpt_status, xydcpt_rmks from xydcpt_mstr where xydcpt_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count3>0 dofetch curtemp into parterppartno, partstate,partrmks;if(partstate>0) thenset errsql='更新[wps_erppart]出错!';update wps_erppart set execueState=char(partstate),remark=partrmks where designno=dgno and erpPartNO= parterppartno;end if;set count3=count3-1;End while;Close curtemp;----------------供应商表set count4=(select count(*) from xydcvend_mstr where xydcvend_nbr =dgno);set tmpSQL='select xydcvend_part, xydcvend_code, xydcvend_status, xydcvend_rmks from xydcvend_mstr where xydcvend_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count4>0 dofetch curtemp into supperppartno, suppcode,suppstate,supprmks;if(suppstate>0) thenset errsql='更新[WPS_ERPSupplier]出错!';update WPS_ERPSupplier set execueState=char(suppstate),remark=supprmks where designno=dgno and erpPartNO= supperppartno and supplierCode= suppcode;end if;set count4=count4-1;End while;Close curtemp;end if;set count1=count1-1;end while;A:Close cur1;end过程P_SYN_QAD ( )CREATE PROCEDURE DB2ADMIN.P_SYN_QAD ( )-------------------------------------------------------------------------- SQL 存储过程------------------------------------------------------------------------BEGINDECLARE tmpSQL varchar(1000);DECLARE errsql varchar(2000);DECLARE tmp varchar(500);DECLARE dgno varchar(50);DECLARE gtime varchar(50);DECLARE executes INTEGER;DECLARE count1 INTEGER;DECLARE count2 INTEGER;DECLARE count3 INTEGER;DECLARE state1 INTEGER;-------------------------------------------------------------------------- BOM表变量------------------------------------------------------------------------DECLARE bomerpno varchar(50);DECLARE bompdmno varchar(50);DECLARE bomerppartno varchar(50);DECLARE bompdmpartno varchar(50);DECLARE bomstate INTEGER;DECLARE bomrmks varchar(80);-------------------------------------------------------------------------- 零件表变量------------------------------------------------------------------------DECLARE parterppartno varchar(50);DECLARE partstate INTEGER;DECLARE partrmks varchar(80);-------------------------------------------------------------------------- 供应商表变量------------------------------------------------------------------------DECLARE supperppartno varchar(50);DECLARE suppcode varchar(50);DECLARE suppstate INTEGER;DECLARE supprmks varchar(80);DECLARE v_Message V ARCHAR(2000);------------------------------------------------------------------------------ 游标定义,主表只读取最新的10条设变进行处理,其它表通过设变号读取------------------------------------------------------------------------------declare cur1 cursor for select designNO, GTime, Execute from (SELECT rownumber() over(order by GTime) as m, designNO, GTime, Execute FROM DB2ADMIN.WPS_EXEC_SEQUENCE_TAB where Execute<1) as a;declare cur1 cursor for SELECT designNO, GTime, Execute FROM DB2ADMIN.WPS_EXEC_SEQUENCE_TAB where Execute<1 order by GTime;declare curtemp cursor WITH RETURN TO CALLER FOR S1;DECLARE exit handler FOR sqlexceptionbegin--开始异常处理V ALUES ('设变号:'||dgno||' 错误描述:'||errsql )INTO v_Message;--设置存储过程返回值SIGNAL SQLSTATE '99999'SET MESSAGE_TEXT =v_Message;end;set count1= (select count(*) from (SELECT designNO, GTime, Execute FROM DB2ADMIN.WPS_EXEC_SEQUENCE_TAB where Execute<1 order by GTime) as a);open cur1;while count1>0 dofetch cur1 into dgno,gtime, executes;-----------------主表if(executes<0) then goto A;end if;set count2=(select count(*) from DB2ADMIN.xydcseq_mstr where xydcseq_no=dgno);if(count2<1) thenset errsql='插入[xydcseq_mstr]出错!';insert into DB2ADMIN.xydcseq_mstr(xydcseq_no, xydcseq_date, xydcseq_exec) values(dgno,date(gtime), executes);else/*set state1=(select xydcseq_exec from DB2ADMIN.xydcseq_mstr where xydcseq_no=dgno);if(state1>0) thenset errsql='更新[WPS_EXEC_SEQUENCE_TAB]出错!';update WPS_EXEC_SEQUENCE_TAB set Execute =state1 where designno=dgno;commit;end if;*/end if;------------------BOM表set count2=(select count(*) from DB2ADMIN. xydcbom_mstr where xydcbom_nbr=dgno);set count3=(select count(*) from DB2ADMIN. wps_erpbom where designno=dgno);if(count2<1 and count3>0) thenset errsql='插入[Xydcbom_mstr]出错!';--错误sql=insert into DB2ADMIN. Xydcbom_mstr(select designNO, erpProductNO, pdmProductNO, Area, pdmPartNO, colorDivision, colorCode, eprPartNO, cast(char(numBefore) as decimal(10,2)), useArea, useAreaRate, workshop, cast(char(workShopNum) as decimal(10,2)), date(effectiveDate),date(expireDate) ,structureType , cast(char(wasteRate) as decimal(10,2)) ,cast(char(orderAheadDate) as INTEGER), cast(char(execueState) as INTEGER), remark from wps_erpbom where designno='||dgno||')';insert into DB2ADMIN. Xydcbom_mstr(select designNO, erpProductNO, pdmProductNO, Area, pdmPartNO, colorDivision, colorCode, eprPartNO, cast(char(numBefore) as decimal(10,2)), useArea, useAreaRate, workshop, cast(char(workShopNum) as decimal(10,2)), date(effectiveDate),date(expireDate),structureType , cast(char(wasteRate) as decimal(10,2)) ,cast(char(orderAheadDate) as INTEGER), cast(char(execueState) as INTEGER), remark from wps_erpbomwhere designno=dgno);else/*set tmpSQL='select xydcbom_fg, xydcbom_pdmfg, xydcbom_pdm_part, xydcbom_erp_part , xydcbom_status, xydcbom_rmks from xydcbom_mstr where xydcbom_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count2>0 dofetch curtemp into bomerpno, bompdmno, bompdmpartno, bomerppartno, bomstate,bomrmks;if(bomstate>0) thenset errsql='更新[wps_erpbom]出错!';update wps_erpbom set execueState=char(bomstate),remark=bomrmks where designNO=dgno and erpProductNO=bomerpno andpdmProductNO=bompdmno and pdmPartNO= bompdmpartno and eprPartNO= bomerppartno;commit;end if;set count2=count2-1;End while;Close curtemp;*/end if;---------------零件表set count2=(select count(*) from DB2ADMIN. xydcpt_mstr where xydcpt_nbr=dgno);set count3=(select count(*) from DB2ADMIN. wps_erppart where designno=dgno);if(count2<1 and count3>0) thenset errsql='插入[xydcpt_mstr]出错!';--错误sql=insert into DB2ADMIN. xydcpt_mstr(select designNO, erpPartNO, erpPartName, unit, productType, itemType, site, location, cast(char(mainDate) as smallint), cast(char(planOrder) as smallint), orderPrinciple, cast(char(orderLifecycle) as INTEGER), cast(char(safeStockLevel) as decimal(10,2)), supplier, purchaseOrProduce , cast(char(isUseOldPart) as smallint), cast(char(jit) as smallint) , pt_chr07, cast(char(execueState) as INTEGER), remark from wps_erppart where designno='||dgno||')';insert into DB2ADMIN. xydcpt_mstr(select designNO, erpPartNO, erpPartName, unit, productType, itemType, site, location, cast(char(mainDate)as smallint), cast(char(planOrder) as smallint), orderPrinciple, cast(char(orderLifecycle) as INTEGER), cast(char(safeStockLevel) as decimal(10,2)),supplier, purchaseOrProduce , cast(char(isUseOldPart) as smallint), cast(char(jit) as smallint) , pt_chr07, cast(char(execueState) as INTEGER), remark fromwps_erppart where designno=dgno);else/*set tmpSQL='select xydcpt_part, xydcpt_status, xydcpt_rmks from xydcpt_mstr where xydcpt_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count2>0 dofetch curtemp into parterppartno, partstate,partrmks;if(partstate>0) thenset errsql='更新[wps_erppart]出错!';update wps_erppart set execueState=char(partstate),remark=partrmks where designno=dgno and erpPartNO= parterppartno;commit;end if;set count2=count2-1;End while;Close curtemp;*/end if;--------------供应商表set count2=(select count(*) from DB2ADMIN. xydcvend_mstr where xydcvend_nbr=dgno);set count3=(select count(*) from DB2ADMIN. WPS_ERPSupplier where designno=dgno);if(count2<1 and count3>0) thenset errsql='插入[xydcvend_mstr]出错!';--错误sql=insert into DB2ADMIN. xydcvend_mstr(select designNO, erpPartNO, supplierCode, supplierName, supplierChgType, cast(char(packNum) as decimal(10,2)), cast(char(numOfDays) as INTEGER), cast(char(lifecycle) as INTEGER) , sdt , cast(char(supply) as decimal(10,2)) , date(supplyStartDate), assmbleNO,cast(char(execueState) as INTEGER), remark from WPS_ERPSupplier where designno='||dgno||')';insert into DB2ADMIN. xydcvend_mstr(select designNO, erpPartNO, supplierCode, supplierName, supplierChgType, cast(char(packNum) as decimal(10,2)), cast(char(numOfDays) as INTEGER), cast(char(lifecycle) as INTEGER) , sdt , cast(char(supply) as decimal(10,2)) , date(supplyStartDate),assmbleNO,cast(char(execueState) as INTEGER), remark from WPS_ERPSupplier where designno=dgno);else/*set tmpSQL='select xydcvend_part, xydcvend_code, xydcvend_status, xydcvend_rmks from xydcvend_mstr where xydcvend_nbr='''||dgno||'''';PREPARE S1 from tmpSQL;Open curtemp;While count2>0 dofetch curtemp into supperppartno, suppcode,suppstate,supprmks;if(suppstate>0) thenset errsql='更新[WPS_ERPSupplier]出错!';update WPS_ERPSupplier set execueState=char(suppstate),remark=supprmks where designno=dgno and erpPartNO= supperppartno andsupplierCode= suppcode;commit;end if;set count2=count2-1;End while;Close curtemp;*/end if;set count1=count1-1;--commit;end while;A:Close cur1;end利用DB2复制功能建立两个Capture 控制服务器DB2(中转服务器)建立一个DB2的capture服务器Oracle(非DB2服务器)注册昵称WPS_EXEC_SEQUENCE_TAB,WPS_ERPBOM,WPS_ERPPART,WPS_ERPSUPPLIER建立一个Apply 控制服务器建立虚拟预定集(可以正常运行的,具体源和目标无所谓.执行频率暂设为5分钟一次.该预定集功能主要为定时执行自定义的存储过程P_READ_ORACLETOQAD将数据由oracle同步到QAD)建立虚拟预定集(可以正常运行的,具体源和目标无所谓.执行频率暂设为5分钟一次.该预定集功能主要为定时执行自定义的存储过程P_READ_QADTOORACLE将数据由QAD同步到oracle)搭建部署图。

oracle 数据泵使用技巧

oracle 数据泵使用技巧

oracle 数据泵使用技巧Oracle 数据泵是一个非常强大的工具,用于在Oracle数据库之间导入和导出数据。

它提供了一种快速和高效的方式,可以将数据从一个数据库迁移到另一个数据库,或者备份和还原数据。

在本文中,我将分享一些使用Oracle数据泵的技巧,希望对您有所帮助。

让我们来了解一下数据泵的基本概念和术语。

数据泵由两个主要组件组成:导出(expdp)和导入(impdp)。

导出是将数据从源数据库导出到文件系统的过程,而导入是将数据从文件系统导入到目标数据库的过程。

在导出和导入过程中,可以使用各种参数和选项来控制数据的导出和导入行为。

一、导出数据1. 导出整个数据库要导出整个数据库,可以使用以下命令:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp full=y```其中,username是数据库用户的名称,password是用户的密码,database_name是数据库的服务名,directory_name是导出文件保存的目录,dumpfile_name.dmp是导出文件的名称。

通过设置full参数为y,可以导出整个数据库。

2. 导出指定的表如果只需要导出特定的表,可以使用tables参数来指定要导出的表的名称:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name```其中,table_name是要导出的表的名称。

可以通过逗号分隔多个表的名称。

3. 导出指定的数据有时候,可能只需要导出表中的部分数据。

可以使用query参数来指定要导出的数据的条件:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name query=condition```其中,condition是指定要导出的数据的条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle数据泵同步数据方式简要步骤1、Oracle数据泵简介
Data Pump 反映了整个导出/导入过程的完全革新。

不使用常见的 SQL 命令,而是应用专有 API(direct path api etc) 来以更快得多的速度加载和卸载数据。

以下步骤为从容灾数据库(源端)上,按照用户或者数据表的模式将数据同步到测试数据库(目标端)上的简要步骤。

应用数据泵做数据同步的前提条件是:
1、在源端数据库主机上有足够大的空间存储导出的数据
文件,要求提前对导出的数据文件大小做评估,看预
留多少空间。

2、在目标端主机上也要保证有足够的空间存放导入的数
据文件
3、源端和目标端导入导出所用的数据库用户及密码(明
文)
2、Oracle数据泵数据表同步方式和用户同步方式
2.1.指定数据表同步方式(导出、导入)
以同步客服测试数据库为例:
源端数据库主机:10.220.33.112(存放目录:/dataapp1/expdp)
目标端数据库主机:10.220.64.71(存放目录:/oracle/imp)
导出:
1.滤出需要同步的数据表列表,评估需要同步的表大小,在源端
及目标端主机上留出所需的数据文件的空间。

2.登录(oracle/oracle)源端数据库主机(10.220.3
3.112),执行:
$sqlplus / as sysdba
登录数据库,执行如下语句:
>create directory dpdata2 as '/dataapp1/expdp ';
>grant read, write on directory dpdata2 to kf;
3.按照表名导出的语句如下:
$expdp kf/kf@rzkfdb1new tables=co_task,co_task_log,……directory=dpdata2 dumpfile=par%U.dmp parallel=15;
参数说明:tables------要导出的数据表名
Directory------数据文件导出的路径
Dumpfile---------导出的数据文件命名%为通配符,按照导出的进程数递增 Parallel----------数据泵支持多进程导出方式
4.此语句执行后观察在对应的目录是否有*.dmp类别的文件生成导入:
1.数据泵导入操作是在导出操作基础上进行的,在导入操作之前,
需要在目标数据库上建立与源端相同的表空间、schema等元素。

2.登录(oracle)目标端10.220.64.71数据库主机,执行
$Sqlplus / as sysdba
登录数据库,执行如下语句:
>create directory dpdata5 as '/oracle/imp';
>grant read, write on directory dpdata2 to kf;
3.把导出的*.dmp文件,传递到导入数据目录/oracle/imp,执行:
$impdp kf/kf@kfcsdb directory=dpdata5 dumpfile=par%U.dmp parallel=15 remap_tablespace=TS_KF:KFCSDB_DATA_TBS01,TS_KF_LOG:KFCSDB_DATA_TBS01;
参数说明:tables------要导出的数据表名
Directory------数据文件导出的路径
Dumpfile---------导出的数据文件命名%为通配符,按照导出的进程数递增 Parallel----------数据泵支持多进程导出方式
remap_tablespace----------数据泵支持指定表空间导入
4.导入过程中需要注意,数据泵在同步数据库会将表结构、表数
据、表索引全部导入,这时需要考虑表空间的问题。

由于测试
数据库目前给各个数据库只建立了一个默认的表空间,所以目
前需要将从容灾导出的数据重定向到测试环境的表空间,语句
为:
remap_tablespace=TS_KF:KFCSDB_DATA_TBS01,TS_KF_LOG:KFCSDB_DATA_TBS01
2.2.指定用户同步方式(导出、导入)
以同步ESOP测试数据库为例:
源端数据库主机:10.220.33.71(存放目录:/dataapp1/expdp)
目标端数据库主机:10.220.64.69(存放目录:/oracle/imp)
导出:
1.登录(oracle/oracle)源端数据库主机(10.220.33.71),执行:
$Sqlplus / as sysdba
登录数据库,执行如下语句:
>create directory dpdata2 as '/dataapp1/expdp ';
>grant read, write on directory dpdata2 to esop;
2.按照表名导出的语句如下:
$expdp esop/esop@crmcsdb schemas=esop directory=dpdata2 dumpfile=par%U.dmp parallel=10 ;
3.此语句执行后观察在对应的目录是否有*.dmp类别的文件生成
导入:
1.登录(oracle)目标端10.220.64.69数据库主机,执行
$Sqlplus / as sysdba
登录数据库,执行如下语句:
>create directory dpdata2 as '/oracle/imp';
>grant read, write on directory dpdata2 to esop;
2.把导出的*.dmp文件,传递到导入数据目录/oracle/imp,执行:
$ impdp esop/esop@crmcsdb directory=dpdata2 dumpfile=par%U.dmp SCHEMAS=esop parallel=10 remap_tablespace=TS_TEST_01:CRMCSDB_DATA_TBS01;
3.导入过程中需要注意,数据泵在同步数据库会将表结构、表数
据、表索引全部导入,这时需要考虑表空间的问题。

由于测试数据库目前给各个数据库只建立了一个默认的表空间,所以目前需要将从容灾导出的数据重定向到测试环境的表空间,语句为:
remap_tablespace=TS_TEST_01:CRMCSDB_DATA_TBS01。

相关文档
最新文档