设为首页 收藏本站
查看: 2665|回复: 0

[经验分享] db2 查看表空间使用率

[复制链接]

尚未签到

发表于 2016-11-17 09:46:09 | 显示全部楼层 |阅读模式
  1. 统计所有节点表空间使用率
  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、通过存储过程查看数据库大小和容量
db2 call GET_DBSIZE_INFO (?,?,?,0)
    输出参数的值
    --------------------------
    参数名: SNAPSHOTTIMESTAMP
    参数值: 2008-05-26-10.53.06.421000
    参数名: DATABASESIZE
    参数值: 1203863552
    参数名: DATABASECAPACITY
    参数值: 4281493504
  unit=byte, byte/1024/1024=m
  db2 call GET_DBSIZE_INFO (?,?,?,0)
  注意:
     a、从V8以上版本支持,此存储过程看数据库大小和容量;如果要看各表空间使用情况上面的sql方便,
   b、还有DPF环境下,db2 call GET_DBSIZE_INFO (?,?,?,0)只能看dbsize大小,无法看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数据库使用时,如果表空间满了,该如何扩容呢?下文将教给您DB2数据库表空间扩容的方法,供您参考,希望对您有所帮助。
1)直接添加一个容器的例子:
   db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "
   加容器之后DB2会有一个自动balance的过程,可能会持续几个小时!!! 一定要注意该选项,修改前确认该选项是否能满足业务需求!
2)改变现有容器的大小(该方法不会触发balance,但如果表空间建立在裸设备上,则要扩冲裸设备空间):
   db2 " ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "
     注意这种方式就是将原有的相应容器都改成大小是2000页
   db2 "ALTER TABLESPACE TS1 RESIZE (ALL 2000)"
     这种方式就是把表空间中所有的容器大小都改成2000页
   db2 " ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000) "
     这种方式就是将相应的容器都扩大1000页,也就是增加1000页。
   db2 " ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)"
     这种方式就是将所有的容器都增加1000页。
  3.db2数据字典
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:数据库表用T表示;数据库视图用V表示
creator:数据库对象的创建者
select * from sysibm.syscolumns  
  select tabname from syscat.tables where tabschema=current schema ;
获取当前模式下面的所有用户表
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.求关于pending free pages的详细解释。
  本人理解:
      如果不是先清空表(例如alter table ..with empty table等),直接delete,其所占用的extents会变成pending_free_pages的一种中间状态,
    只有在下面两种情况下才会彻底变成free_pages:
1)执行db2 list tablespaces show detail(多节点数据库要db2_all)
2)新建对象或者insert数据的时候,free_pages不够,需要扩展的时候就会从pending_free_pages中获取空间。
      疑问:
free_pages快没了,pending_free_pages还有2G,向一个对象insert数据的时候报错“表空间不能分配新页”,这是不是说insert的时候不能用到pending_free_pages呢?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301548-1-1.html 上篇帖子: [转]DB2行列转换 下篇帖子: java连接DB2数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表