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

45 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值