1. 統(tǒng)計(jì)所有節(jié)點(diǎn)表空間使用率
select substr(TABLESPACE_NAME,1,20) as TBSPC_NAME,bigint(TOTAL_PAGES * PAGE_SIZE)/1024/1024 as "TOTAL(MB)",
????? used_pages*PAGE_SIZE/1024/1024 as "USED(MB)", free_pages*PAGE_SIZE/1024/1024 as "FREE(MB)"
??? from table(snapshot_tbs_cfg('DB_NAME', -2)) as snapshot_tbs_cfg
2、查看表空間使用率
select substr(tbsp_name,1,20) as TABLESPACE_NAME,substr(tbsp_content_type,1,10) as TABLESPACE_TYPE,sum(tbsp_total_size_kb)/1024 as TOTAL_MB,
????? sum(tbsp_used_size_kb)/1024 as USED_MB,sum(tbsp_free_size_kb)/1024 as FREE_MB,tbsp_page_size AS PAGE_SIZE
??? from SYSIBMADM.TBSP_UTILIZATION group by tbsp_name,tbsp_content_type,tbsp_page_size
order by 1
3、通過(guò)存儲(chǔ)過(guò)程查看數(shù)據(jù)庫(kù)大小和容量
db2 call GET_DBSIZE_INFO (?,?,?,0)
? 輸出參數(shù)的值
? --------------------------
? 參數(shù)名: SNAPSHOTTIMESTAMP
? 參數(shù)值: 2008-05-26-10.53.06.421000
? 參數(shù)名: DATABASESIZE
? 參數(shù)值: 1203863552
? 參數(shù)名: DATABASECAPACITY
? 參數(shù)值: 4281493504
unit=byte, byte/1024/1024=m
db2 call GET_DBSIZE_INFO (?,?,?,0)
注意:
???? a、從V8以上版本支持,此存儲(chǔ)過(guò)程看數(shù)據(jù)庫(kù)大小和容量;如果要看各表空間使用情況上面的sql方便,
b、還有DPF環(huán)境下,db2 call GET_DBSIZE_INFO (?,?,?,0)只能看dbsize大小,無(wú)法看db的容量
SYSIBM.SYSTABLESPACES
SYSIBM.SYSTBSPACEAUTH
?
2.db2查看表空間和增加表空間容量
?Db2 connect to xxx
?Db2 “LIST TABLESPACES SHOW DETAIL”
?Tablespace ID = 7
?Name = TSASNAA
?Type = Database managed space
?Contents = All permanent data. Large table space.
?State = 0x0000
?Detailed explanation:
?Normal
?Total pages = 14800
?Useable pages = 14752
?Used pages = 12864
?Free pages = 1888
?High water mark (pages) = 12864
?Page size (bytes) = 8192
?Extent size (pages) = 32
?Prefetch size (pages) = 32
?Number of containers = 1
??? 增加表空間大小
?DB2數(shù)據(jù)庫(kù)使用時(shí),如果表空間滿了,該如何擴(kuò)容呢?下文將教給您DB2數(shù)據(jù)庫(kù)表空間擴(kuò)容的方法,供您參考,希望對(duì)您有所幫助。
?1)直接添加一個(gè)容器的例子:
?? db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "
?? 加容器之后DB2會(huì)有一個(gè)自動(dòng)balance的過(guò)程,可能會(huì)持續(xù)幾個(gè)小時(shí)!!! 一定要注意該選項(xiàng),修改前確認(rèn)該選項(xiàng)是否能滿足業(yè)務(wù)需求!
?2)改變現(xiàn)有容器的大小(該方法不會(huì)觸發(fā)balance,但如果表空間建立在裸設(shè)備上,則要擴(kuò)沖裸設(shè)備空間):
?? db2 " ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "
???? 注意這種方式就是將原有的相應(yīng)容器都改成大小是2000頁(yè)
?? db2 "ALTER TABLESPACE TS1 RESIZE (ALL 2000)"
???? 這種方式就是把表空間中所有的容器大小都改成2000頁(yè)
?? db2 " ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000) "
???? 這種方式就是將相應(yīng)的容器都擴(kuò)大1000頁(yè),也就是增加1000頁(yè)。
?? db2 " ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)"
???? 這種方式就是將所有的容器都增加1000頁(yè)。
3.db2數(shù)據(jù)字典
select name from sysibm.systables where type='T' and creator='USERID' and tbspace='TS4R_DNJC' order by name;
select name from sysibm.systables where type='V' and creator='USERID' order by name;
?type:數(shù)據(jù)庫(kù)表用T表示;數(shù)據(jù)庫(kù)視圖用V表示
?creator:數(shù)據(jù)庫(kù)對(duì)象的創(chuàng)建者
select * from sysibm.syscolumns?
select tabname from syscat.tables where tabschema=current schema ;
?獲取當(dāng)前模式下面的所有用戶表
describe table XXXX
SELECT NAME???????????????????????????????????????????????????????????
??????? ,COLNO?????????????????????????????????????????????????????????
??????? ,COLTYPE || '('?????????????????????????????????????????????????
???????????????? || CAST(LENGTH AS CHAR(5)) || ','?????????????????????
???????????????? || CAST(SCALE AS CHAR(5)) || ')'???????????????????????
??????? ,CASE WHEN NULLS = 'N'?????????????????????????????????????????
???????????? THEN 'NOT NULL' ELSE ' ' END???????????????????????????????
??????? ,TBNAME?????????????????????????????????????????????????????????
???????????????????????????????????????????
?? WHERE TBCREATOR = 'TEST'??????????? -- < OR 'TEST'???????????????????
--?? AND (NAME = 'YOUR_COL_NAME'????? -- < COLUMN NAME \ ONLY USE ONE
???? AND (TBNAME??? = 'T_QUICK_MENU'? -- < TABLE NAME? /?????????
????????? )?????????????????????????????????????????????????????????????
???? ORDER BY TBNAME, COLNO???
?????????????????????????????????????????
SELECT NAME?? FROM SYSIBM.SYSCOLUMNS????
回答
4.求關(guān)于pending free pages的詳細(xì)解釋。
? 本人理解:
????? 如果不是先清空表(例如alter table ..with empty table等),直接delete,其所占用的extents會(huì)變成pending_free_pages的一種中間狀態(tài),
??? 只有在下面兩種情況下才會(huì)徹底變成free_pages:
?1)執(zhí)行db2 list tablespaces show detail(多節(jié)點(diǎn)數(shù)據(jù)庫(kù)要db2_all)
?2)新建對(duì)象或者insert數(shù)據(jù)的時(shí)候,free_pages不夠,需要擴(kuò)展的時(shí)候就會(huì)從pending_free_pages中獲取空間。
????? 疑問(wèn):
?free_pages快沒了,pending_free_pages還有2G,向一個(gè)對(duì)象insert數(shù)據(jù)的時(shí)候報(bào)錯(cuò)“表空間不能分配新頁(yè)”,這是不是說(shuō)insert的時(shí)候不能用到pending_free_pages呢?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
