增加列後進行reorg失敗,表無法正常訪問_20170213

問題描述

接到某局點客戶報障,在進行表重組時,出現錯誤,無法使表恢復到正常使用情況。

smbdb2:/smbrptdb/db2inst2$db2 reorg table als7.t_fact_loan;

SQL2216N SQL error "-289" occurred while reorganizing a database table or its

indexes.

故障處理過程

在處理有具體報錯的問題時,通常都有跡可循。

1) 首先查看報錯信息查看報錯信息:db2 “? SQL289”

SQL0289N Unable to allocate new pages in table space

從報錯代碼中,我們先得到一個初步思路:數據庫在進行reorg時,無法分配新的頁,表空間方面可能存在問題。

2) db2數據庫在進行操作時,會在db2diag.log文件中,記錄較多的消息。檢查報錯時間段的數據庫消息日誌:db2diag -t 2017-01-05-21|more

2017-01-05-21.09.33.869329+480 E977654141A688 LEVEL: Warning

PID : 6881600 TID : 106290 PROC : db2sysc 0

INSTANCE: db2inst2 NODE : 000 DB : RPTDB

APPHDL : 0-45870 APPID: *LOCAL.db2inst2.170105124937

AUTHID : DB2INST2

EDUID : 106290 EDUNAME: db2agent (RPTDB) 0

FUNCTION: DB2 UDB, buffer pool services, sqlbIsSpaceOnPathForConts, probe:20

MESSAGE : ADM6101W While attempting to extend table space "RPTDB_TABLE" (ID

"6"), there were less than "67108864" bytes free on

"/smbrptdb/db2inst2/NODE0000/SQL00001/". This space is reserved for

use by DB2 and/or the operating system.

2017-01-05-21.09.33.869845+480 I977654830A651 LEVEL: Severe (Origin)

PID : 6881600 TID : 106290 PROC : db2sysc 0

INSTANCE: db2inst2 NODE : 000 DB : RPTDB

APPHDL : 0-45870 APPID: *LOCAL.db2inst2.170105124937

AUTHID : DB2INST2

EDUID : 106290 EDUNAME: db2agent (RPTDB) 0

FUNCTION: DB2 UDB, buffer pool services, sqlbGrowNewStripeSet, probe:20

MESSAGE : ZRC=0x850F000C=-2062614516=SQLO_DISK "Disk full."

DIA8312C Disk was full.

從消息日誌中,表空間RPTDB_TABLE在進行擴展時,出現報錯,明確給出文件系統滿的提示。

3) 順藤摸瓜,對文件系統進行檢查:df –h

發現/smbrptdb文件系統使用率100%。與問題吻合。但是作爲技術的嚴謹性,不能只是進行猜測,需要近一步做確認。

4) 檢查RPTDB_TABLE表空間所屬的文件系統: db2pd -tablespaces -db rptdb

smbdb2:/smbrptdb/db2inst2/sqllib/db2dump$db2pd -tablespaces -db rptdb

Database Partition 0 -- Database RPTDB -- Active -- Up 17 days 01:44:47 -- Date 2017-01-05-21.21.15.509708

Tablespace Configuration:

Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name

0x07000001DE08E1A0 0 DMS Regular 16384 4 Yes 24 1 1 Off 1 0 3 SYSCATSPACE

0x07000001DE08F920 1 SMS SysTmp 16384 32 Yes 192 1 1 On 1 0 31 TEMPSPACE1

0x07000001DE093080 2 DMS Large 16384 32 Yes 192 1 1 Off 1 0 31 USERSPACE1

0x07000001DE094800 3 DMS Large 16384 4 Yes 24 1 1 Off 1 0 3 SYSTOOLSPACE

0x07000001DE095F80 4 DMS Regular 16384 32 Yes 192 1 1 Off 1 0 31 RPTDB_INDEX

0x07000001DE097700 5 SMS SysTmp 32768 32 Yes 192 2 2 On 1 0 31 TEMPSPACE32

0x07000001DE09AE60 6 DMS Large 16384 32 Yes 192 1 1 Off 1 0 31 RPTDB_TABLE

Tablespace Statistics:

Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM Max HWM State MinRecTime NQuiescers PathsDropped

0x07000001DE08E1A0 0 14336 14332 12320 0 2012 12320 12320 0x00000000 0 0 No

0x07000001DE08F920 1 1 1 1 0 0 0 0 0x00000000 0 0 No

0x07000001DE093080 2 2048 2016 1312 0 704 1312 1312 0x00000000 1444822621 0 No

0x07000001DE094800 3 2048 2044 232 0 1812 232 232 0x00000000 0 0 No

0x07000001DE095F80 4 8597504 8597472 8596320 0 1152 8596320 8596320 0x00000000 1483426811 0 No

0x07000001DE097700 5 1 1 1 0 0 0 0 0x00000000 1463713993 0 No

0x07000001DE09AE60 6 20125696 20125664 12368224 7757440 0 20125664 20125664 0x00000000 1483618634 0 No

Tablespace Autoresize Statistics:

Address Id AS AR InitSize IncSize IIP MaxSize LastResize LRF

0x07000001DE08E1A0 0 Yes Yes 0 -1 No None None No

0x07000001DE08F920 1 Yes No 0 0 No 0 None No

0x07000001DE093080 2 Yes Yes 0 -1 No None None No

0x07000001DE094800 3 Yes Yes 0 -1 No None None No

0x07000001DE095F80 4 Yes Yes 0 -1 No None 01/05/2017 08:02:07.291110 No

0x07000001DE097700 5 Yes No 0 0 No 0 None No

0x07000001DE09AE60 6 Yes Yes 0 -1 No None 01/05/2017 20:40:33.559794 Yes

Containers:

Address TspId ContainNum Type TotalPgs UseablePgs PathID StripeSet Container

0x07000001DE08F6E0 0 0 File 14336 14332 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000000/C0000000.CAT

0x07000001DE090E00 1 0 Path 1 1 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000001/C0000000.TMP

0x07000001DE0945C0 2 0 File 2048 2016 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000002/C0000000.LRG

0x07000001DE095D40 3 0 File 2048 2044 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000003/C0000000.LRG

0x07000001DE0974C0 4 0 File 8597504 8597472 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000004/C0000000.USR

0x07000001DE098BE0 5 0 Path 1 1 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000005/C0000000.TMP

0x07000001DE09C3A0 6 0 File 20125696 20125664 0 0 /smbrptdb/db2inst2/NODE0000/RPTDB/T0000006/C0000000.LRG

從輸出文件中,RPTDB_TABLE的表空間採用的是DMS管理方式,自動擴展,數據文件爲:

/smbrptdb/db2inst2/NODE0000/RPTDB/T0000006/C0000000.LRG

5) 通過上面幾步的排查,問題的處理方法也呼之欲出。對文件系統進行在線擴容。問題得到解決。

故障結論與優化建議

隨着業務量的增長,數據庫對象越來越龐大,日常的例行工作都有可能導致表無法正常訪問。需要確保數據庫服務器的系統資源充足,特別是存儲空間。

本次操作時,遇到在進行文件系統擴容時,首次擴容20GB,立即被數據庫佔用,使用率又變爲100%。客戶當時比較緊張,擔心數據庫遇到了BUG,會無限的增長空間。此時,就需要了解一下reorg的過程:reorg主要分爲:

1 排序

2 構建

3 替換

4 重建索引 前當執行第1,2,3步時,使用目標表所在的數據表空間,將在數據表空間中建立目標表的影子副本,使用的表空間相當於表的實際大小。在執行完1,2,3步後,表所在的表空間會重新收縮。在進行第4步時,佔用的又是臨時表空間,大小爲:nleaf*索引表空間頁大小:db2 "select substr(tabname,1,20),substr(indname,1,18),nleaf,indcard from

syscat.indexes"

 


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