配置流复制应用(10g+from linux to aix)
5.3.1综述
根据和应用工程师的沟通,了解到数据库的情况如下。
当前数据库的数据量为300G左右,数据库存在多张大表,都是blob字段的。
经过测试,如果采取传统的导入导出的方式进行数据迁移,在停止系统应用后,从源库导出数据耗时
在8小时左右,把数据导入目库又需耗时8小时,这样需要业务数据库停机达16小时,不能满足实
际的生产环境的要求。
考虑到这次的迁移方式是异构系统之间的(linux to aix),我们最终决定采取流复制方案来进
行数据迁移。
5.3.2迁移步骤:
- 在AIX平台的RAC数据库上,建立源库的数据库用户
- 建立与源库同名的表空间,并为表空间赋予相应的datafile
- 把表空间赋予相应的用户,
- 在目标库上建立listener.ora,tnsnames.ora
- 开启源库的归档,设置流复制相关的初始化参数.
- 重启源库,使第5步设置的参数生效。(源库重启时间<10分钟)
- 在目库配置流复制(队列表、队列、应用进程)
- 在源库配置流复制(队列表、队列、capture process,propagation process)
- 首次同步(export 用参数<源> import<用参数>)
- 在源端启动捕获进程
5.3.3详细迁移步骤
create pfile='/home/oracle/pfile.ora' from spfile;
||||||||||||||||||||||||||||||||||||||||||||||
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;
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
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';
alter system set log_archive_format ='bsp1921_%t_%s_%r.arc' scope=spfile sid='bsp1921';
alter system set log_archive_format ='bsp1922_%t_%s_%r.arc' scope=spfile sid='bsp1922';
---set the database to archive log mode;
--- startup the reset of the nodes;
Alter database rename global_name to bsp192.src;
Alter database rename global_name to bsp.dst;
CREATE TABLESPACE logmnr_tbs DATAFILE ‘/dev/raw/raw67' SIZE 15600M;
BEGIN DBMS_LOGMNR_D.SET_TABLESPACE('logmnr_tbs'); END;
alter database add supplemental log data (PRIMARY KEY, UNIQUE, FOREIGN KEY) columns;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;(耗时很长>30分钟)
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'); /* 赋予流管理特权 */
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'); /* 赋予流管理特权 */
(ADDRESS = (PROTOCOL = TCP)(HOST = server67-v)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = server68-v)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = zhyw1v)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = zhyw2v)(PORT = 1521))
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';
IDENTIFIED BY VALUES '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;
ALTER USER GIAPSYS DEFAULT ROLE ALL;
-- 1 System Privilege for GIAPSYS
GRANT UNLIMITED TABLESPACE TO GIAPSYS;
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;
ALTER USER GIAPLOG DEFAULT ROLE ALL;
-- 1 System Privilege for GIAPLOG
GRANT UNLIMITED TABLESPACE TO GIAPLOG;
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;
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;
ALTER USER JLSYS DEFAULT ROLE ALL;
-- 1 Object Privilege for JLSYS
GRANT SELECT ON GIAPSYS.USER_LIST TO JLSYS;
DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_user => 'ADMSR'); --队列用户
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'); --源库名
apply_user => 'GIAPUSER'); --应用进程要应用到的用户
parameter => 'DISABLE_ON_ERROR',
SELECT decode(status, 'ENABLED', 1, 0) INTO v_started
FROM DBA_APPLY WHERE APPLY_NAME = 'A01';
DBMS_APPLY_ADM.START_APPLY(apply_name => 'A01');
源端(队列表、队列、capture process,propagation process)
# souce db 在目库中建立queue MSQ01(队列名 MSQ01,队列表名 MST,队列用户 为ADMSR)
DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_user => 'ADMSR'); --队列用户
#设置捕获规则 (要捕获用户名为 GIAPUSER,捕获进程名 MC01,捕获的队列名,源数据库名 BSP192.SRC)
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');
#设置传播参数(传播对应的用户名为GIAPUSER,传播进程名 M2XP01,传播的源队列为 MSQ01,传播的目标队列为 XDQ01)
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name => 'GIAPUSER', --要传播改变的用户名
source_queue_name => 'ADMSR.SQ001', --传播的源队列
destination_queue_name => 'ADMSR.DQ01@BSP.DST', --传播的目队列
include_dml => true, --建立dml规则
include_ddl => true, --建立ddl规则
source_database => 'BSP192.SRC',
首次同步(export 用参数<源> import<用参数>)
# initiation 对数据进行初始化(在源库把用户EXP出来,选择 object_consistent=y)
||||||||||||||||||||||||||||||||||||||||||||||
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;
select instance_number into :instno from sys.v_$instance;
# heartbeat table check 查看源库和目库的心跳表数据,是否一致了。
connect admsr/admsr@BSP192.DST
alter session set nls_date_format='YYMMDD[HH24:MI:SS]';
select global_name, name, rqsj from global_name left join (select * from giapuser.htbt) on 1=1 union
同样方法,对另外两个用户,jiaplog,jiapsys做基于用户的流复制。并用EM随时观察流复制的健康状态。
CREATE OR REPLACE PROCEDURE giapuser.TMP100323_SP_DELDUP_RXXX
CURSOR C1 IS SELECT RXZJ,TS FROM giapuser.tmp100323_RY_RXXX;
'select * from giapuser.'||tname||'@bsp192.src minus select * from giapuser.'||tname||';'
and data_type not like '%ROWID%'
drop table tmp100325_minus_ry_rxxx purge;
create table tmp100325_minus_ry_rxxx as
-- 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
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
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;
insert into giapuser.JCJ_SJRY@bsp.dst select * from giapuser.JCJ_SJRY
where SJ_RYBH in (select SJ_RYBH from tmp100325_minus_sj_rybh);
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
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);
insert into giapuser.RY_JBXX@bsp.dst select * from giapuser.RY_JBXX
where RYBH in (select RYBH from tmp100325_minus_RY_JBXX);
drop table tmp100325_minus_JG_CYRY purge;
create table tmp100325_minus_JG_CYRY as
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
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);
insert into giapuser.JG_CYRY@bsp.dst select * from giapuser.JG_CYRY
where CYRY_BH in (select CYRY_BH from tmp100325_minus_JG_CYRY);
配置流复制应用(10g+from linux to aix)相关推荐
- PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)
转发来源: PostgreSQL的集群技术比较:https://iwin.iteye.com/blog/2108807 参考:https://blog.csdn.net/yaoqiancuo3276/ ...
- Slide:配置Oracle 10g双向流复制
配置Oracle 10g 双向流复制 View more documents from Maclean Liu 本文转自maclean_007 51CTO博客,原文链接:http://blog.51c ...
- postgresql流复制配置
环境说明 示例环境 主机名 IP 角色 系统版本 数据目录 pg版本 master 192.168.174.200 主库 CentOS Linux release 7.4.1708 (Core) /v ...
- 【ORACLE 高可用】ORACLE STREAM 基于用户的流复制配置 案例
基于用户的流复制配置 案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 Global_name: ...
- 【ORACLE 高可用】 ORACLE STREAM 基于单表的流复制 配置 案例
ORACLE STREAM 演示基于单表的流复制案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 ...
- Postgresql Hot_Standby 流复制 基于Linux 对postgresql 和 linux 会基本的操作
Master 192.168.1.10 2.在master上安装数据库,并且初始化数据库,在slave上安装数据库,(不用初始化数据库) 3.在master上创建流复制用户: <span sty ...
- Pacemaker+Corosync PostgreSQL流复制HA的部署(pha4pgsql)
简介 在众多的PostgreSQL HA方案中,流复制HA方案是性能,可靠性,部署成本等方面都比较好的,也是目前被普遍采用的方案.而用于管理流复制集群的工具中,Pacemaker+Corosync又是 ...
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署...
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署 前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: P ...
- ORACLE 几种同步灾备手段(OGG,ADG,DSG,高级复制,流复制,logmnr)
目前所接触的Oracle 的灾备以及同步手段主要有ADG,OGG,DSG,高级复制,流复制以及自主开发的基于logmnr的数据同步软件,各有优劣.各自评价如下: 1. ADG,最常用的同城,异地灾备解 ...
最新文章
- Projects(子查询、连接,分组,聚合)
- jQuery得事件绑定
- linux如何关掉正在启动的服务器,Linux服务管理(如何关闭或禁用不需要的服务)?...
- DeepMind的脑补AI再获新技能:看文字知场景、复杂环境、连续视频……
- SRv6技术课堂(一):SRv6概述
- 虚机使用技巧几则(经验交流)
- 自学机器学习,怎么才能找到工作啊?至少要避开十大雷区
- JavaScript Window窗口对象
- 1.什么是方法 2.方法定义俩变量求和打印 3.改进上面的 (在调用里面改值相加) 4.形参与实参 5.计算长方形周长 定义一个方法并打印出来 6.定义一个方法 计算圆的面积打印出来
- C语言入门必刷100题合集之每日一题(1-20)
- 万能通用!权限系统就该这么设计!
- .NET导出Excel(复杂表头)
- Flink 结合 布隆过滤器(BloomFilter) 实现去重
- 基于MPLAB X IDE配置位设置讲解
- (转)用AGG实现高质量图形输出(一)
- activiti6官方示例笔记
- JavaScript的valueOf()方法
- 原来单词还能这样背.......
- 智能热流体仿真软件AICFD 2023R1新版本功能介绍
- 智能蓝牙血压计方案设计与开发