5.3.1综述

根据和应用工程师的沟通,了解到数据库的情况如下。

当前数据库的数据量为300G左右,数据库存在多张大表,都是blob字段的。

经过测试,如果采取传统的导入导出的方式进行数据迁移,在停止系统应用后,从源库导出数据耗时

在8小时左右,把数据导入目库又需耗时8小时,这样需要业务数据库停机达16小时,不能满足实

际的生产环境的要求。

考虑到这次的迁移方式是异构系统之间的(linux to aix),我们最终决定采取流复制方案来进

行数据迁移。

5.3.2迁移步骤:

在目标库准备迁移环境:

  1. 在AIX平台的RAC数据库上,建立源库的数据库用户
  2. 建立与源库同名的表空间,并为表空间赋予相应的datafile
  3. 把表空间赋予相应的用户,
  4. 在目标库上建立listener.ora,tnsnames.ora

在源库准备数据迁移条件

  1. 开启源库的归档,设置流复制相关的初始化参数.
  2. 重启源库,使第5步设置的参数生效。(源库重启时间<10分钟)
  3. 在目库配置流复制(队列表、队列、应用进程)
  4. 在源库配置流复制(队列表、队列、capture process,propagation process)
  5. 首次同步(export 用参数<源> import<用参数>)
  6. 在源端启动捕获进程

验证流复制,调试应用

  1. 在源端配置心跳表
  2. 比对数据(数据割接当晚),确认迁移成功
  3. 修改应用对应到目库

5.3.3详细迁移步骤

1)对数据库的spfile进行备份:

create pfile='/home/oracle/pfile.ora' from spfile;

2)修改初始化参数

||||||||||||||||||||||||||||||||||||||||||||||

b.1 流复制环境准备

alter system set global_names=true scope = both;

alter system set compatible='10.2.0.3' scope=spfile;

alter system set job_queue_processes = 10 scope=both;

alter system set aq_tm_processes=1 scope=both;

alter system set logmnr_max_persistent_sessions=2 scope=spfile;

alter system set parallel_max_servers=135 scope=both;

alter system set open_links=4 scope=spfile;

alter system set sga_target = 4g scope=spfile;

alter system set streams_pool_size = 0 scope=both;

alter system set statistics_level='TYPICAL' scope=both;

alter system set undo_retention=3600 scope=both;

alter system set "_job_queue_interval"=1 scope=spfile;

show parameters global_names;

alter database force logging;

|||||||||||||||||||||||||||||||||||||||||||||||||||||||

3>改动了上面的参数后,重新启动数据库:

4>设置数据库为归档模式:

conn / as sysdba

ALTER SYSTEM SET log_archive_dest_1='LOCATION=/arch1'  scope=spfile sid='bsp1921';

ALTER SYSTEM set log_archive_dest_1='LOCATION=/arch2' scope=spfile sid='bsp1922';

---for node1

alter system set log_archive_format ='bsp1921_%t_%s_%r.arc' scope=spfile sid='bsp1921';

---for node2

alter system set log_archive_format ='bsp1922_%t_%s_%r.arc' scope=spfile sid='bsp1922';

--shutdown all nodes;

conn / as sysdba

shutdown immediate;

---set the database to archive log mode;

startup mount

alter database archivelog;

alter database open;

--- startup the reset of the nodes;

conn / as sysdba

修改全局库名:

源库

Alter database rename global_name to bsp192.src;

目库

Alter database rename global_name to bsp.dst;

在源库为日志挖掘建立独立的表空间:

connect / as sysdba;

CREATE TABLESPACE logmnr_tbs DATAFILE ‘/dev/raw/raw67' SIZE 15600M;

BEGIN  DBMS_LOGMNR_D.SET_TABLESPACE('logmnr_tbs'); END;

/

源端使能数据库级补充日志登载:

connect / as sysdba;

alter database add supplemental log data (PRIMARY KEY, UNIQUE, FOREIGN KEY) columns;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;(耗时很长>30分钟)

建流管理用户和授权(源端、目端都有):

||||||||||||||

源端

connect / as SYSDBA

REM 流管理用户使用独立的表空间:

create user ADMSR identified by ADMSR;

CREATE TABLESPACE admsr_tbs DATAFILE '/dev/raw/raw68 ' SIZE 15600M;

ALTER USER admsr DEFAULT TABLESPACE sradm_tbs QUOTA UNLIMITED ON sradm_tbs;

GRANT DBA to ADMSR;   /* 10g要求dba角色以简化配置 */

exec DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('ADMSR'); /* 赋予流管理特权 */

||||||||||||

目端

connect / as SYSDBA

REM 流管理用户使用独立的表空间:

create user ADMSR identified by ADMSR;

CREATE TABLESPACE sradm_tbs DATAFILE '/dev/rlv_raw96_16g' SIZE 15600M;

ALTER USER admsr DEFAULT TABLESPACE sradm_tbs QUOTA UNLIMITED ON sradm_tbs;

GRANT DBA to ADMSR;   /* 10g要求dba角色以简化配置 */

exec DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('ADMSR'); /* 赋予流管理特权 */

修改源库和目库的tnsnames.ora

修改tnsnames.ora

|||||||||||||||||||||

src =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = server67-v)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = server68-v)(PORT = 1521))

(LOAD_BALANCE = yes)

)

(CONNECT_DATA =

(SERVICE_NAME = bsp192)

)

)

dst =

(DESCRIPTION =

(ADDRESS_LIST =

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

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

(LOAD_BALANCE = yes)

)

(CONNECT_DATA =

(SERVICE_NAME = bsp192)

)

)

建立db_link

||||||||||||||||||||||||||||

源端做下面操作

||||||||||||

connect  admsr/admsr ; /* 以下在源端建到目库的db link */

create database link bsp.dst connect to admsr identified by admsr using 'dst';

||||||||||||

目端做下面操作

connect admsr/admsr;  /* 以下在目端建到源库的db link */

create database link bsp192.src connect to admsr identified by admsr using 'src';

准备目端的互置用户

DROP USER GIAPUSER CASCADE;

CREATE USER GIAPUSER

IDENTIFIED BY VALUES 'giapuser'

DEFAULT TABLESPACE bspdata

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 3 Roles for GIAPUSER

GRANT DBA TO GIAPUSER;

GRANT CONNECT TO GIAPUSER;

GRANT RESOURCE TO GIAPUSER;

ALTER USER GIAPUSER DEFAULT ROLE ALL;

-- 2 System Privileges for GIAPUSER

GRANT UNLIMITED TABLESPACE TO GIAPUSER;

GRANT SELECT ANY TABLE TO GIAPUSER;

-- 3 Object Privileges for GIAPUSER

GRANT DELETE, SELECT, UPDATE ON GIAPSYS.MSG_HISTORY TO GIAPUSER;

GRANT DELETE, INSERT ON GIAPSYS.MSG_QUEUE TO GIAPUSER;

GRANT SELECT ON GIAPSYS.SECT_SEQUENCE TO GIAPUSER;

把其他相关用户也建立起来

CREATE USER GIAPSYS

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPSYS

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 1 Role for GIAPSYS

GRANT DBA TO GIAPSYS;

ALTER USER GIAPSYS DEFAULT ROLE ALL;

-- 1 System Privilege for GIAPSYS

GRANT UNLIMITED TABLESPACE TO GIAPSYS;

在目端把这些用户建立起来。

GIAPCOUT  (不导出数据)

DROP USER GIAPCOUNT CASCADE;

CREATE USER GIAPCOUNT

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPCOUNT

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 3 Roles for GIAPCOUNT

GRANT DBA TO GIAPCOUNT;

GRANT CONNECT TO GIAPCOUNT;

GRANT RESOURCE TO GIAPCOUNT;

ALTER USER GIAPCOUNT DEFAULT ROLE ALL;

-- 1 System Privilege for GIAPCOUNT

GRANT UNLIMITED TABLESPACE TO GIAPCOUNT;

-- 2 Object Privileges for GIAPCOUNT

GRANT SELECT ON GIAPUSER.JCJ_CJXX TO GIAPCOUNT;

GRANT SELECT ON GIAPUSER.JCJ_JJXX TO GIAPCOUNT;

GIAPLOG (导出日志)

DROP USER GIAPLOG CASCADE;

CREATE USER GIAPLOG

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPLOG

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 1 Role for GIAPLOG

GRANT DBA TO GIAPLOG;

ALTER USER GIAPLOG DEFAULT ROLE ALL;

-- 1 System Privilege for GIAPLOG

GRANT UNLIMITED TABLESPACE TO GIAPLOG;

HNSYS (导出日志)

DROP USER HNSYS CASCADE;

CREATE USER HNSYS

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPDATA

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 1 Role for HNSYS

GRANT CONNECT TO HNSYS WITH ADMIN OPTION;

ALTER USER HNSYS DEFAULT ROLE ALL;

-- 1 System Privilege for HNSYS

GRANT SELECT ANY TABLE TO HNSYS WITH ADMIN OPTION;

-- 4 Object Privileges for HNSYS

GRANT SELECT ON SYS.V_$MYSTAT TO HNSYS;

GRANT SELECT ON SYS.V_$SESSION TO HNSYS;

GRANT SELECT ON SYS.V_$SESSTAT TO HNSYS;

GRANT SELECT ON SYS.V_$STATNAME TO HNSYS;

JLCX (导出日志)

DROP USER JLCX CASCADE;

CREATE USER JLCX

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPTEST

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 2 Roles for JLCX

GRANT RESOURCE TO JLCX;

GRANT CONNECT TO JLCX;

ALTER USER JLCX DEFAULT ROLE ALL;

-- 2 System Privileges for JLCX

GRANT UNLIMITED TABLESPACE TO JLCX;

GRANT SELECT ANY TABLE TO JLCX;

-- 1 Object Privilege for JLCX

GRANT INSERT, SELECT, UPDATE ON GIAPSYS.USER_LIST TO JLCX;

JLSYS (导出日志)

DROP USER JLSYS CASCADE;

CREATE USER JLSYS

IDENTIFIED BY VALUES 'oracle'

DEFAULT TABLESPACE BSPDATA

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

-- 1 Role for JLSYS

GRANT CONNECT TO JLSYS;

ALTER USER JLSYS DEFAULT ROLE ALL;

-- 1 Object Privilege for JLSYS

GRANT SELECT ON GIAPSYS.USER_LIST TO JLSYS;

配置流复制

流互置配置

目端(队列表、队列、应用进程)

# destination db 目标库操作,建立queue  XDQ01(队列表XDT,队列用户ADMSR,队列名XDQ01),建立rules(用户为GIAPUSER,源库名为    # BSP192.SRC), ,流应用进程 XA01(进程名 XA01,应用到的用户GIAPUSER),修改APPLY的参数(应用进程名,出现应用错误的时候默认丢弃)

#打开这个job

connect admsr/admsr

BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(

queue_table => 'DT',                  --队列表

queue_name  => 'DQ01',                --队列

queue_user  => 'ADMSR');               --队列用户

END;

/

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(

schema_name  => 'GIAPUSER',          --要应用的用户

streams_type => 'APPLY',          --流类型为应用进程

streams_name => 'A01',           --应用进程名

queue_name   => 'ADMSR.DQ01',    --应用进程从其出列LCRs的队列名

include_dml  => true,             --建立缺省DML规则

include_ddl  => true,             --建立缺省DDL规则

source_database => 'BSP192.SRC');      --源库名

END;

/

BEGIN

DBMS_APPLY_ADM.ALTER_APPLY(

apply_name => 'A01',       --应用进程名

apply_user => 'GIAPUSER');     --应用进程要应用到的用户

END;

/

BEGIN

DBMS_APPLY_ADM.SET_PARAMETER(

apply_name  => 'A01',

parameter   => 'DISABLE_ON_ERROR',

value        => 'N' );

END;

/

DECLARE

v_started number;

BEGIN

SELECT decode(status, 'ENABLED', 1, 0) INTO v_started

FROM DBA_APPLY WHERE APPLY_NAME = 'A01';

if (v_started = 0) then

DBMS_APPLY_ADM.START_APPLY(apply_name  => 'A01');

end if;

END;

/

源端(队列表、队列、capture process,propagation process)

# souce db 在目库中建立queue MSQ01(队列名 MSQ01,队列表名 MST,队列用户 为ADMSR)

connect  admsr/admsr;

BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(

queue_name  =>'SQ001',    --队列名

queue_table =>'ST',      --队列表名

queue_user => 'ADMSR');   --队列用户

END;

/

#设置捕获规则 (要捕获用户名为 GIAPUSER,捕获进程名 MC01,捕获的队列名,源数据库名 BSP192.SRC)

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(

schema_name  => 'GIAPUSER',       --要捕获的用户名

streams_type => 'CAPTURE',     --流类型为捕获

streams_name => 'C001',        --捕获进程名

queue_name   => 'ADMSR.SQ001', --捕获进程要入列LCR的队列名

include_dml  => true,          --增加DML规则

include_ddl  => true,          --增加DDL规则

source_database => 'BSP192.SRC');

END;

/

#设置传播参数(传播对应的用户名为GIAPUSER,传播进程名 M2XP01,传播的源队列为 MSQ01,传播的目标队列为 XDQ01)

#源数据库的名字为BSP192.SRC

BEGIN

DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(

schema_name                => 'GIAPUSER',              --要传播改变的用户名

streams_name               => 'P001',             --传播名

source_queue_name          => 'ADMSR.SQ001',        --传播的源队列

destination_queue_name     => 'ADMSR.DQ01@BSP.DST',  --传播的目队列

include_dml                => true,                 --建立dml规则

include_ddl                => true,                 --建立ddl规则

source_database            => 'BSP192.SRC',

queue_to_queue             => false);

END;

/

首次同步(export 用参数<源> import<用参数>)

# initiation 对数据进行初始化(在源库把用户EXP出来,选择 object_consistent=y)

nohup exp USERID=system/oracle@src OWNER=GIAPUSER FILE=BSP192.SRC_giapuser.dmp LOG=BSP192.SRC_giapuser_exp.log OBJECT_CONSISTENT=Y STATISTICS = NONE BUFFER=157286400 &

||||||||||||||||||||||||||||||||||||||||||||||

#对数据进行初始化,在目标库把源库导出的数据导入

nohup imp USERID=system/oracle@dst FULL=Y CONSTRAINTS=Y FILE=BSP192.SRC_giapuser.dmp IGNORE=Y COMMIT=Y LOG=BSP192.SRC_giapuser_imp.log STREAMS_INSTANTIATION=Y BUFFER=157286400 &

把giapuser下的trigger 禁止

使用toad做相关操作

capture 启动

SQL> exec dbms_capture_adm.start_capture(capture_name=>'C02');

PL/SQL procedure successfully completed.

源端互置用户中建立心跳表

源端管理用户作业定期更新心跳表

# heartbeat table 在源库建立心跳表(giapuser下的 htbt 表)

connect admsr/admsr@BSP192.SRC

alter session set nls_date_format='YYMMDD[HH24:MI:SS]';

create table giapuser.htbt(name varchar2(10) not null,  rqsj date default sysdate not null);

alter table giapuser.htbt add constraint PK_HTBT primary key (name);

grant update,insert on giaplog.htbt to sradm;

#建立一个job,在源库不断更新心跳表的数据(admsr)

set serveroutput on

variable jobno number;

variable instno number;

begin

select instance_number into :instno from sys.v_$instance;

dbms_job.submit(:jobno, 'update giapuser.htbt set rqsj=sysdate;', trunc(sysdate+1/24/60,'MI'), 'trunc(SYSDATE+1/24/60,''MI'')', TRUE, :instno);

commit;

end;

# heartbeat table check  查看源库和目库的心跳表数据,是否一致了。

connect admsr/admsr@BSP192.DST

alter session set nls_date_format='YYMMDD[HH24:MI:SS]';

set linesize 120

select global_name, name, rqsj from global_name left join (select * from giapuser.htbt) on 1=1  union

select global_name, name, rqsj from global_name@BSP.DST left join (select * from giapuser.htbt@BSP.DST) on 1=1 ;

同样方法,对另外两个用户,jiaplog,jiapsys做基于用户的流复制。并用EM随时观察流复制的健康状态。

当晚数据迁移:

做数据比对操作:

在目库把RY_RXXX的重复值删除的存储过程:

CREATE OR REPLACE PROCEDURE giapuser.TMP100323_SP_DELDUP_RXXX

AS

CURSOR C1 IS SELECT RXZJ,TS FROM giapuser.tmp100323_RY_RXXX;

BEGIN

FOR REC_C1 IN C1 LOOP

DELETE FROM giapuser.RY_RXXX

WHERE  RXZJ=REC_C1.RXZJ

and rownum<REC_C1.TS;

END LOOP;

END;

/

|||||||||||||

spool on之后写全库比对的脚本:

select

'select * from giapuser.'||tname||'@bsp192.src minus select * from giapuser.'||tname||';'

from

(

select distinct table_name tname from dba_tab_columns where owner='GIAPUSER' and data_type not in ('BLOB')

and data_type not like '%ROWID%'

)

|||||||||||||||||

开始做相关表的比对

drop table tmp100325_minus_ry_rxxx purge;

create table tmp100325_minus_ry_rxxx as

select RYBH,GMSFHM,XM,SLH,TXLY,RXFW,SFJD,TXSM,CZDW,CZR,WRITETIME,RXZJ,RXXB,RXCSRQ,RXMZ,RXRYSX,RXRYLB,XMPY,CZBS,CZSJ

from  giapuser.RY_RXXX

minus

select RYBH,GMSFHM,XM,SLH,TXLY,RXFW,SFJD,TXSM,CZDW,CZR,WRITETIME,RXZJ,RXXB,RXCSRQ,RXMZ,RXRYSX,RXRYLB,XMPY,CZBS,CZSJ

from  giapuser.RY_RXXX@bsp.dst

--exp USERID=giapuser/oracle buffer=102400000 file=exp_TMP_RY_RXXX_20091108.dmp LOG=exp_TMP_RY_RXXX_20091108.log  /

--    COMPRESS=N ROWS=Y DIRECT=N recordlength=65535 FEEDBACK=10 tables=/(TMP_RY_RXXX_20091108/)

-- 源库

drop table tmp100325_minus_sj_rybh purge;

create table tmp100325_minus_sj_rybh as

select SJ_RYBH,SJ_CJBH,SJ_SJRYBH,SJ_GMSFHM,SJ_XM,ZZBH,XZZ,SJ_KY,SJ_WFSS,SJ_SJRYLB,RAS,SJ_BGRYZSRGX,SJ_ZSLYJGK,

SJ_QKQK,SJ_SYS,SJ_JBS,SJ_XDS,SZ_ZSDD,SJ_TBDW,SJ_TBR,SJ_TBSJ,SJ_CXSJ,SJ_CXLY,SJ_CXTBR,SJ_CXSPR,SJ_CXDW,

SJ_ZLRQK,SJ_FXQZ,SJ_FXJD,SJ_FXSJ,SJ_QZZL,SJ_TLYXQ,SJ_RLRXM,SJ_RLRXB,SJ_RLRSFZH,SJ_RLSJ,SJ_RLQK,CZDW,

CZR,CZSJ,CZBS from giapuser.JCJ_SJRY

minus

select SJ_RYBH,SJ_CJBH,SJ_SJRYBH,SJ_GMSFHM,SJ_XM,ZZBH,XZZ,SJ_KY,SJ_WFSS,SJ_SJRYLB,RAS,SJ_BGRYZSRGX,SJ_ZSLYJGK,

SJ_QKQK,SJ_SYS,SJ_JBS,SJ_XDS,SZ_ZSDD,SJ_TBDW,SJ_TBR,SJ_TBSJ,SJ_CXSJ,SJ_CXLY,SJ_CXTBR,SJ_CXSPR,SJ_CXDW,

SJ_ZLRQK,SJ_FXQZ,SJ_FXJD,SJ_FXSJ,SJ_QZZL,SJ_TLYXQ,SJ_RLRXM,SJ_RLRXB,SJ_RLRSFZH,SJ_RLSJ,SJ_RLQK,CZDW,

CZR,CZSJ,CZBS from giapuser.JCJ_SJRY@bsp.dst;

delete from giapuser.JCJ_SJRY@bsp.dst where SJ_RYBH in (select SJ_RYBH from tmp100325_minus_sj_rybh);

-- 0 rows

insert into giapuser.JCJ_SJRY@bsp.dst select * from giapuser.JCJ_SJRY

where SJ_RYBH in (select SJ_RYBH from tmp100325_minus_sj_rybh);

-- 2 rows

drop table tmp100325_minus_RY_JBXX purge;

create table tmp100325_minus_RY_JBXX as

select RYBH,RYZZBH,HH,GMSFHM,XM,XMPY,HKLB,TSHK,YHZGX,CYM,CYMPY,YWX,YWM,ZJZL,ZJHM,BMCH,

BMCHPY,XB,MZ,CSRQ,CSSJ,CSZMBH,CSDQ,CSQX,CSXZ,JHRYSFZH,JHRYXM,JHGXY,JHRESFZH,JHREXM,

JHGXE,FQSFZH,FQXM,MQSFZH,MQXM,POSFZH,POXM,JGDQ,JGQX,JGXZ,QFRQ,YXQX,ZJXY,ZZMM,WHCD,

HYZK,BYZK,SG,XX,SF,ZC,ZW,ZY,ZYLB,FWCS,LXDH,ZWSP,SWRQ,SWZXRQ,SWZXLB,SWZMBH,HJDBH,

GJDQ,HJQH,HJZRQ,HJXZ,ZZDBH,ZZDQH,ZZDZRQ,ZZDXZ,SJJZDQH,SJJZDZRQ,SJJZDXZ,ZZSY,ZZCS,

ZZZBH,ZZZQFRQ,ZZZJZRQ,QZZL,QZHM,QZYXQ,TLSY,RJSJ,NLKSJ,QTQX,QTZZXZ,GMLSZHY,GMLSZHE,

LSXMY,LSXMPYY,LSXME,LSXMPYE,LSXMS,LSXMPYS,HSLBS,HYLBS,HDQLBS,HSXLBS,HXZLBS,LKBSRQ,

LKBSYY,QWGJDQ,QWSSQX,QWXXDZ,ZWBH,DNABH,WFSBBH,XXJB,RYLB,RYSX,SFZX,RHQK,BZ,DJSJ,

SLSJ,CZDW,CZR,CZBS,CZSJ from giapuser.RY_JBXX

minus

select RYBH,RYZZBH,HH,GMSFHM,XM,XMPY,HKLB,TSHK,YHZGX,CYM,CYMPY,YWX,YWM,ZJZL,ZJHM,BMCH,

BMCHPY,XB,MZ,CSRQ,CSSJ,CSZMBH,CSDQ,CSQX,CSXZ,JHRYSFZH,JHRYXM,JHGXY,JHRESFZH,JHREXM,

JHGXE,FQSFZH,FQXM,MQSFZH,MQXM,POSFZH,POXM,JGDQ,JGQX,JGXZ,QFRQ,YXQX,ZJXY,ZZMM,WHCD,

HYZK,BYZK,SG,XX,SF,ZC,ZW,ZY,ZYLB,FWCS,LXDH,ZWSP,SWRQ,SWZXRQ,SWZXLB,SWZMBH,HJDBH,

GJDQ,HJQH,HJZRQ,HJXZ,ZZDBH,ZZDQH,ZZDZRQ,ZZDXZ,SJJZDQH,SJJZDZRQ,SJJZDXZ,ZZSY,ZZCS,

ZZZBH,ZZZQFRQ,ZZZJZRQ,QZZL,QZHM,QZYXQ,TLSY,RJSJ,NLKSJ,QTQX,QTZZXZ,GMLSZHY,GMLSZHE,

LSXMY,LSXMPYY,LSXME,LSXMPYE,LSXMS,LSXMPYS,HSLBS,HYLBS,HDQLBS,HSXLBS,HXZLBS,LKBSRQ,

LKBSYY,QWGJDQ,QWSSQX,QWXXDZ,ZWBH,DNABH,WFSBBH,XXJB,RYLB,RYSX,SFZX,RHQK,BZ,DJSJ,

SLSJ,CZDW,CZR,CZBS,CZSJ from giapuser.RY_JBXX@bsp.dst;

delete from giapuser.RY_JBXX@bsp.dst where RYBH in (select RYBH from tmp100325_minus_RY_JBXX);

-- 4 rows deleted

insert into giapuser.RY_JBXX@bsp.dst select * from giapuser.RY_JBXX

where RYBH in (select RYBH from tmp100325_minus_RY_JBXX);

-- 4 rows created

drop table tmp100325_minus_JG_CYRY purge;

create table tmp100325_minus_JG_CYRY as

select CYRY_BH,CYRY_RYBH,CYRY_JGBH,CYRY_GMSFHM,CYRY_XM,CYRY_ZZBH,CYRY_XZZ,CYRY_SX,CYRY_BMMC,CYRY_GZLY,CYRY_PYQX,

CYRY_ZW,CYRY_SJ,CYRY_QTLXDH,RAS,CYRY_ZSQK,CYRY_PCSYJ,CYRY_PXZH,CYRY_PXZS,CYRY_ZXYY,CYRY_ZXBS,CYRY_ZXRQ,

CYRY_ZDFWDXLB,CYRY_BWCS,CYRY_ZYGX,CYRY_ZDRTLB,CYRY_KZCS,CYRY_ZYWT,CYRY_BZ,CZDW,CZR,CZSJ,CYRY_DJDW,

CYRY_DJR,CYRY_DJRQ,CZBS from giapuser.JG_CYRY

minus

select CYRY_BH,CYRY_RYBH,CYRY_JGBH,CYRY_GMSFHM,CYRY_XM,CYRY_ZZBH,CYRY_XZZ,CYRY_SX,CYRY_BMMC,CYRY_GZLY,CYRY_PYQX,

CYRY_ZW,CYRY_SJ,CYRY_QTLXDH,RAS,CYRY_ZSQK,CYRY_PCSYJ,CYRY_PXZH,CYRY_PXZS,CYRY_ZXYY,CYRY_ZXBS,CYRY_ZXRQ,

CYRY_ZDFWDXLB,CYRY_BWCS,CYRY_ZYGX,CYRY_ZDRTLB,CYRY_KZCS,CYRY_ZYWT,CYRY_BZ,CZDW,CZR,CZSJ,CYRY_DJDW,

CYRY_DJR,CYRY_DJRQ,CZBS from giapuser.JG_CYRY@bsp.dst;

delete from giapuser.JG_CYRY@bsp.dst where CYRY_BH in (select CYRY_BH from tmp100325_minus_JG_CYRY);

-- 0 rows deleted

insert into giapuser.JG_CYRY@bsp.dst select * from giapuser.JG_CYRY

where CYRY_BH in (select CYRY_BH from tmp100325_minus_JG_CYRY);

-- 2 rows created

配置流复制应用(10g+from linux to aix)相关推荐

  1. PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)

    转发来源: PostgreSQL的集群技术比较:https://iwin.iteye.com/blog/2108807 参考:https://blog.csdn.net/yaoqiancuo3276/ ...

  2. Slide:配置Oracle 10g双向流复制

    配置Oracle 10g 双向流复制 View more documents from Maclean Liu 本文转自maclean_007 51CTO博客,原文链接:http://blog.51c ...

  3. postgresql流复制配置

    环境说明 示例环境 主机名 IP 角色 系统版本 数据目录 pg版本 master 192.168.174.200 主库 CentOS Linux release 7.4.1708 (Core) /v ...

  4. 【ORACLE 高可用】ORACLE STREAM 基于用户的流复制配置 案例

    基于用户的流复制配置 案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 Global_name: ...

  5. 【ORACLE 高可用】 ORACLE STREAM 基于单表的流复制 配置 案例

    ORACLE STREAM 演示基于单表的流复制案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 ...

  6. Postgresql Hot_Standby 流复制 基于Linux 对postgresql 和 linux 会基本的操作

    Master 192.168.1.10 2.在master上安装数据库,并且初始化数据库,在slave上安装数据库,(不用初始化数据库) 3.在master上创建流复制用户: <span sty ...

  7. Pacemaker+Corosync PostgreSQL流复制HA的部署(pha4pgsql)

    简介 在众多的PostgreSQL HA方案中,流复制HA方案是性能,可靠性,部署成本等方面都比较好的,也是目前被普遍采用的方案.而用于管理流复制集群的工具中,Pacemaker+Corosync又是 ...

  8. 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署...

    再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署 前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: P ...

  9. ORACLE 几种同步灾备手段(OGG,ADG,DSG,高级复制,流复制,logmnr)

    目前所接触的Oracle 的灾备以及同步手段主要有ADG,OGG,DSG,高级复制,流复制以及自主开发的基于logmnr的数据同步软件,各有优劣.各自评价如下: 1. ADG,最常用的同城,异地灾备解 ...

最新文章

  1. Projects(子查询、连接,分组,聚合)
  2. jQuery得事件绑定
  3. linux如何关掉正在启动的服务器,Linux服务管理(如何关闭或禁用不需要的服务)?...
  4. DeepMind的脑补AI再获新技能:看文字知场景、复杂环境、连续视频……
  5. SRv6技术课堂(一):SRv6概述
  6. 虚机使用技巧几则(经验交流)
  7. 自学机器学习,怎么才能找到工作啊?至少要避开十大雷区
  8. JavaScript Window窗口对象
  9. 1.什么是方法 2.方法定义俩变量求和打印 3.改进上面的 (在调用里面改值相加) 4.形参与实参 5.计算长方形周长 定义一个方法并打印出来 6.定义一个方法 计算圆的面积打印出来
  10. C语言入门必刷100题合集之每日一题(1-20)
  11. 万能通用!权限系统就该这么设计!
  12. .NET导出Excel(复杂表头)
  13. Flink 结合 布隆过滤器(BloomFilter) 实现去重
  14. 基于MPLAB X IDE配置位设置讲解
  15. (转)用AGG实现高质量图形输出(一)
  16. activiti6官方示例笔记
  17. JavaScript的valueOf()方法
  18. 原来单词还能这样背.......
  19. 智能热流体仿真软件AICFD 2023R1新版本功能介绍
  20. 智能蓝牙血压计方案设计与开发

热门文章

  1. 如何使用hbuilder快速生成一个直接打开网站的app
  2. echarts柱状图柱体使用图片
  3. 小数点如何用计算机二进制表示,计算机二进制小数点表示法
  4. Android 意图(Intent)
  5. Intent意图的深入
  6. 使用Qt二次开发周立功CAN(一)
  7. 带宽,吞吐量描述与区别 影响吞吐量因素
  8. 学习游戏动漫、人物建模收入前景怎么样?
  9. Node.js 的微任务处理(基于Node.js V17)
  10. 元宇宙黑马来袭 海姆达尔Heimdallr 开启链游新玩法