您好,欢迎来到九壹网。
搜索
您的当前位置:首页db2增删表分区

db2增删表分区

来源:九壹网
由于在项目中在delete许多大表的数据,起初采用不写日志的方式,后在集成测试时发现,如果有在delete过程中出现中断,这时这个表就不能再用了,必须drop后重建,风险性比较大,后来经过查找资料,请教dba后采用另一种方法,修改大表的建表语句,使之变成分区表,然后进行detach把分区数据到临时表中,删除临时表,这个就达到删除数据目的了,下面我列出具体的操作步骤及相应的shell脚本。 1.创建分区表,INCLUSIVE(包含),exclusive(不包含) CREATE TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" ( \"REPORT_DATE\" DATE, \"MA_ACCT_NO\" VARCHAR(100), \"TRANS_DATE\" DATE,

\"ORG_UNIT_ID\" VARCHAR(15), \"ORG_PROD_ID\" VARCHAR(15), \"CURR_CD\" VARCHAR(15), \"ACCT_NO\" VARCHAR(15), \"TRANS_NUM\" VARCHAR(15), \"TRANS_NO\" VARCHAR(15), \"TRANS_DIF\" VARCHAR(15), \"DEPOSIT_CHAR\" VARCHAR(15), \"DEPOSIT_BAL\" DECIMAL(18,2), \"TRANS_AMT\" DECIMAL(18,2), \"TRANS_TYPE\" CHARACTER(1), \"FLG\" CHARACTER(1), \"RATE\" DECIMAL(18,6), \"TRXMEM\" DECIMAL(4,0) )

IN \"MA_DATA\" INDEX IN \"MA_INDEX\"

PARTITION BY RANGE ( \"REPORT_DATE\" NULLS LAST ) ( PARTITION PART0 STARTING '2010-12-10' INCLUSIVE ENDING '2010-12-20' INCLUSIVE ) ;

ALTER TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" DATA CAPTURE NONE LOCKSIZE ROW APPEND OFF NOT VOLATILE;

COMMENT ON TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" IS '活期交易明细表'; COMMENT ON \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" ( \"REPORT_DATE\" IS '数据日期',

\"MA_ACCT_NO\" IS '管会账号', \"TRANS_DATE\" IS '营业日期', \"ORG_UNIT_ID\" IS '行所号', \"ORG_PROD_ID\" IS '业务品种 ', \"CURR_CD\" IS '币别', \"ACCT_NO\" IS '帐号', \"TRANS_NUM\" IS '交易序号', \"TRANS_NO\" IS '交易代号', \"TRANS_DIF\" IS '交易区别', \"DEPOSIT_CHAR\" IS '存款性质 ', \"DEPOSIT_BAL\" IS '存款余额', \"TRANS_AMT\" IS '交易金额', \"TRANS_TYPE\" IS '交易别', \"FLG\" IS '连动标志', \"RATE\" IS '汇率' );

GRANT CONTROL ON TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" TO USER \"DB2INST2\";

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,

INDEX, REFERENCES ON TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" TO USER \"DB2INST2\" WITH GRANT OPTION;

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,

INDEX, REFERENCES ON TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" TO USER \"DB2INST2\" WITH GRANT OPTION;

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,

INDEX, REFERENCES ON TABLE \"MABAS\".\"BAS_MID_TRANS_LIST_CK_BAK\" TO USER \"MAPUB\" WITH GRANT OPTION;

2.增加分区,注意这里的INCLUSIVE,exclusive,这时只有2011-01-31的数据可以进行insert alter

table

MABAS.BAS_MID_TRANS_LIST_CK_BAK

add

partition

LIST_CK_bak0131 STARTING '2011-01-31' INCLUSIVE ENDING '2011-02-01' exclusive 3.insert 数据 insert

into

MABAS.BAS_MID_TRANS_LIST_CK_BAK

select

*

from

MABAS.BAS_MID_TRANS_LIST_CK where report_date=date('2011-01-31'); 4.转移分区到临里表

alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK detach partition LIST_CK_bak0131 into MABAS.BAS_MID_TRANS_LIST_CK_BAK1

5.删除生成的分区迁移表,注意这时分区表的分区(LIST_CK_bak0131)己经不存在了,如果要insert必须新增该分区

drop table MABAS.BAS_MID_TRANS_LIST_CK_BAK1

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务