暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于TimesTen中对象变更小结

IT那活儿 2021-06-05
417
一、背景介绍
由于近期的工作较多的集中于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那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论