某局点分区表索引优化方案

 

.操作背景
按照要求,业务数据库的分区表应为本地索引而不能为全局索引,如果为全局索引, 当维护人员对分区表进行维护的时候,将导致分区索引失效而影响业务,而业务数据库中存在一些分区表索引为全局索引情况。为保持系统的健壮运行,需对分区表索引进行优化操作。
二.    操作计划参与人员
 

三.操作准备

1 得出符合条件的待操作的分区表:
执行语句
SELECT distinct table_name FROM USER_INDEXES A
WHERE A.table_name IN(SELECT B.table_name FROM USER_TABLES B WHERE B.partitioned = 'YES') AND A.partitioned = 'NO'
得出符合条件的待操作的分区表,此次需要优化的表有 2 个:
TABLE,TABLE2
2 准备好新建备份表建表脚本:
新建和现网待操作分区表数据结构相一致的 2 个新表,新增表名为现网表名 +BAK, 例如 TABLE1BAK ;新增索引名称为现网索引名 +1 ,如原索引 INDEX 新增名称为 INDEX1
四.    操作步骤

五.    详细操作步骤:
1.用PL/SQL工具连接需要加载的数据库,在选择输入用户名和密码的界面中输入数据库的业务库的用户名和密码以及数据库的SID,显示登录成功。
 
2.在PL/SQL下执行脚本新建2个待分区表的备份表和索引,共建立2个表及相应索引:TABLE1BAK,TABLE2BAK
具体脚本newtable.txt见附件
 
3.在PL/SQL中逐个修改现网表表名,格式为现网表名+日期。修改后2个现网表名变更为TABLE10628,TABLE20628,
为不影响业务,每修改一现网表名就需立刻重命名相对应的备份表名为现网相表名,修改后的2个备份表则变更为TABLE1,TABLE2开始承载现网业务,此时就可以对TABLE10628,TABLE20628进行操作了。
 
4.在PL/SQL中对各分区表索引执行删除操作,删除完成后对各分区表重新建立本地索引。具体要操作的表为:TABLE10628,TABLE20628.
 
5.本地索引建立完毕后,恢复备份表和现网表为原表名。即将TABLE1,TABLE2变更回TABLE1BAK,TABLE2BAK;将TABLE10628,TABLE20628
变更回TABLE1和TABLE2。为使对业务的影响降到最低,需要每恢复一备份表表名就需要立刻恢复对应现网表名。
 
6.在对各分区表重建索引的过程中,现网入库数据都入到了各对应的备份表中。当本地索引重建完成后,需要将操作时间内各备份表中现网数据导入到现网数据表。
7.验证是否重建本地索引成功,执行语句
SELECT distinct table_name FROM USER_INDEXES A
WHERE A.table_name IN(SELECT B.table_name FROM USER_TABLES B WHERE B.partitioned = 'YES') AND A.partitioned = 'NO',如返回结果为空,则证明修改成功。
 
8.在加载完所有脚本后,进行一段时间的观察,确认无误后进行现场清理,删除2个备份表;
六.    系统影响
正常情况下该操作对业务无影响;
七.    操作其他问题说明
Ø        如操作失败,必须保证系统原有的正常业务功能在6:00全部恢复。
Ø        操作完成后第二天对数据库进行现场观察,发现问题及时将原存储过程导回进行恢复。

 

本文出自 “博之初体验” 博客,转载请与作者联系!

你可能感兴趣的:(oracle,职场,休闲,分区索引)