某局點分區表索引優化方案

 

.操作背景
按照要求,業務數據庫的分區表應爲本地索引而不能爲全局索引,如果爲全局索引,當維護人員對分區表進行維護的時候,將導致分區索引失效而影響業務,而業務數據庫中存在一些分區表索引爲全局索引情況。爲保持系統的健壯運行,需對分區表索引進行優化操作。
二.    操作計劃參與人員
 

三.操作準備

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全部恢復。
Ø        操作完成後第二天對數據庫進行現場觀察,發現問題及時將原存儲過程導回進行恢復。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章