资讯专栏INFORMATION COLUMN

关于TimesTen中对象变更小结

IT那活儿 / 1853人阅读
关于TimesTen中对象变更小结
一、背景介绍

由于近期的工作较多的集中于TimesTen内存库的迁移割接,为了熟悉TT库的主备库数据同步机制以及同步参数规则等等,通过对一套主备库新增表字段以及添加新表的方式进行了测试练习,以下是测试过程。


二、测试需求

1. TTUSER .BS_SP 增加字段:SYNC_SRC_KEY  行数:5412626 大小:1.65G

2. 新增的表

create table TTUSER.BS_SPSE
(
  KEY_ID NUMBER(18) not null,
  SYNC_SRC_KEY VARCHAR2 (50 BYTE) not null,
  ATTROID NUMBER(14) not null,
  ATTRID VARCHAR2(32 BYTE) not null,
  ATTRVALUE VARCHAR2(128 BYTE),
  STARTDATE DATE,
  ENDDATE DATE,
  SPSERVID VARCHAR2(32 BYTE),
  CANCELOID NUMBER(14)
)

 3. 新建表加索引

create unique index TTUSER.IDX_BS_SPSE_UIDon TTUSER.BS_SPSE (KEY_ID,ATTRID,SYNC_SRC_KEY,ATTROID);


三、检查内存库参数配置

Command> call ttconfiguration;----查看当前参数
< CacheAwtMethod, 1 >
< CacheAwtParallelism, 1 >
< CkptFrequency, 0 >
< CkptLogVolume, 256 >
< CkptRate, 0 >
< CkptReadThreads, 1 >
< CommitBufferSizeMax, 10 >
< ConnectionCharacterSet, US7ASCII >
< ConnectionName, sampledb >
< Connections, 245 >
< DDLReplicationAction, INCLUDE >
< DDLReplicationLevel, 2 >

< DataBaseCharacterSet, AL32UTF8 >
< DataStore, /timesten/ttuser/datads/sampledb >
< DynamicLoadEnable, 1 >
< DurableCommits, 0 >


四. 操作步骤介绍

1. 创建备份表

create table  TTUSER .BS_SP_0507 as select * from TTUSER .BS_SP;

2. 核对数据:

select count(1)from (SELECT *FROM  TTUSER .BS_SPminus SELECT *FROM TTUSER .BS_SP_0507);
select count(1)from (SELECT *FROM  TTUSER .BS_SP_0507minus SELECT *FROM  TTUSER .BS_SP);

3. 添加字段:

添加字段用删除表后修改建表语句将新字段加入重新建表的方式

alter session set ddl_replication_level=2;

说明:
DDLReplicationLevel 连接属性可以控制复制对象的行为。
DDLReplicationLevel = 1:不复制表,索引和同义词的create 和 drop,只复制复制表的添加和删除列操作
DDLReplicationLevel = 2: 缺省,复制表,索引和同义词的create 和 drop;DDLReplicationAction 必须设置为INCLUDE(缺省)
DDLReplicationLevel = 3:除了2 的所有行为外,还复制视图,序列,ttCacheUidPwdSet,以及可以为一个表加一个非空的列
alter session set ddl_replication_action=EXCLUDE;
truncate table TTUSER.BS_SP;
drop table  TTUSER.BS_SP;
4. 新建表结构

create table TTUSER.BS_SP (
        KEY_ID TT_BIGINT NOT NULL,
        SP_ID VARCHAR2(64 BYTE) NOT INLINE,
        SP_BIZ_ID VARCHAR2(64 BYTE) NOT INLINE,
        BIZ_TYPE VARCHAR2(32 BYTE) INLINE,
        PACKAGE_ID VARCHAR2(4 BYTE) INLINE,
        STATUS      TT_TINYINT,
        THRD_NUM VARCHAR2(20 BYTE) INLINE,
        AVAILTIME DATE NOT NULL,
        EXPIRETIME DATE,
        OID         TT_BIGINT NOT NULL DEFAULT 0,
        PRODUCT_OID TT_BIGINT,
    SYNC_SRC_KEY VARCHAR2(50 BYTE)
    );
create unique index TTUSER.PK_BS_SP on TTUSER.BS_SP (KEY_ID, OID);

-----添加字段新建表之后,主库表结构及索引几分钟的时间内自动同步到备库当中。

create table TTUSER.BS_SPSE
(
  KEY_ID NUMBER(18) not null,
  SYNC_SRC_KEY VARCHAR2 (50 BYTE) not null,
  ATTROID NUMBER(14) not null,
  ATTRID VARCHAR2(32 BYTE) not null,
  ATTRVALUE VARCHAR2(128 BYTE),
  STARTDATE DATE,
  ENDDATE DATE,
  SPSERVID VARCHAR2(32 BYTE),
  CANCELOID NUMBER(14)
);
create unique index TTUSER.IDX_BS_SPSE_UID on TTUSER.BS_SPSE (KEY_ID,ATTRID,SYNC_SRC_KEY,ATTROID);
------新建表之后,表结构会自动同步到备库。


五. 新增表加入复制关系

alter session set ddl_replication_level=2;
alter session set ddl_replication_action=EXCLUDE;
alter active standby pair include table TTUSER.BS_SP; ---调整asp关系同步
alter active standby pair include table TTUSER.BS_SPSE; ---调整asp关系同步

——主库已修改过的两个表放开asp关系中的同步为include之后,会自动同步到备库asp关系中(无需两边都执行)。


六. 数据回插操作

insert into TTUSER.BS_SP (KEY_ID,SP_ID,SP_BIZ_ID,BIZ_TYPE,PACKAGE_ID,STATUS,THRD_NUM,AVAILTIME,EXPIRETIME,OID,PRODUCT_OID)
select KEY_ID,SP_ID,SP_BIZ_ID,BIZ_TYPE,PACKAGE_ID,STATUS,THRD_NUM,AVAILTIME,EXPIRETIME,OID,PRODUCT_OID from TTUSER .BS_SP_0507;
commit;

注:主库insert之后,不会立即同步到备库,因为数据量大提交后会在备库产生大量的锁(如下),经过一段时间后(十分钟左右)锁会自动消失,之后查询备库数据会与主库一致,主备数据自动同步完成。

41982 0x2cf00f0          2030.1426   Active      Database  0x01312d0001312d00   IX    0
                                                   Row       BMUFVUAAACvjgcABiU   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAAiU   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAPiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAOiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcANiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAMiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcALiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAKiT   Xn    0 TTUSER.BS_SP
                                                   Row       BMUFVUAAACvjgcAJiT   Xn    0 TTUSER.BS_SP


七. 核对数据

select count(1) from (SELECT * FROM  TTUSER .BS_SP minus SELECT * FROM  TTUSER .BS_SP_0507);
select count(1) from (SELECT * FROM  TTUSER .BS_SP_0507 minus SELECT * FROM  TTUSER .BS_SP);


八. 收集统计信息

call ttOptEstimateStats(TTUSER.BS_SP,1,51 PERCENT);
call ttOptEstimateStats(TTUSER.BS_SPSE,1,51 PERCENT);


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129896.html

相关文章

  • Android开发经验实战总结

    摘要:以前一直想写一篇总结开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘。在需求都还没完成的时候把大量时间花在优化上是本末倒置的优化要用实际数据说话,借助测试工具进行检测如网易的腾讯的和,科大讯飞的,的。 以前一直想写一篇总结 Android 开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘。近日,思路较为明朗,于是重新操起键盘开始码...

    iflove 评论0 收藏0
  • 谈一谈Vuex

    摘要:是什么官方文档说道是一个专为应用程序开发的状态管理模式。触发之别名篇触发之对象展开运算符篇触发之对象展开运算符别名篇先引用官方文档的说法类似于,不同在于提交的是,而不是直接变更状态。 Vuex是什么 官方文档说道:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 什么是状态管理模式...

    nifhlheimr 评论0 收藏0
  • vue-router 实现分析

    摘要:而组件在创建时,又怎么会去调用呢这是由于将自身作为一个插件安装到了,通过注册了一个钩子函数,从而在之后所有的组件创建时都会调用该钩子函数,给了检查是否有参数,从而进行初始化的机会。 vue-router 是 Vue.js 官方的路由库,本着学习的目的,我对 vue-router 的源码进行了阅读和分析,分享出来给其他感兴趣的同学做个参考吧。 参考 源码:vuejs/vue-route...

    psychola 评论0 收藏0
  • PaaS大战一触即发 Oracle剑拔弩张

    摘要:和联合总裁及董事会成员将在下周宣布更多的战略。曾在去年月的大会上宣布了公共云计划,其中包含了和的相关功能,以及云服务和数据库云服务。目前已经表示将会把和整合进自身的公有云之中。但截至到目前,这些组件仍然处在预览阶段。 在当前的云计算时代,PaaS领域已经成为各大巨头必争之地。PaaS提供应用服务引擎,用户基于该应用服务引擎可构建该类的应用,典型的案例有Google App Engine、...

    刘永祥 评论0 收藏0
  • Vue用props给data赋初始值遇到的问题

    摘要:基于此,我们很自然的就想到中有监听作用的两个功能。正如在所说小结一下文章开头的问题是一个关于基本数据类型和引用数据类型赋值的问题在初始化时被递归遍历转化是用于实现双向绑定这么看来,二者是没有任何关系的。想当然和不加深究实为大忌,引以为戒。 2018-11-28更:文章发布后因为存在理解错误,经@Kim09AI同学提醒后做了调整,在此深表感谢。其他不足之处,还望不吝赐教。 前言 前段时间...

    luck 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<