DB2数据库运维脚本,在不断的持续更新中

由于个人的需要,写了一份数据库运维脚本。  写本脚本的用意是:   写一个自动收集数据库信息的脚本,这个脚本能把想要的数据保存到一个表格文件 中,方便excel等图表软件的处理。这些数据可以利用图表软件和word生 成定期的 维护报告。本脚本的终极目标是自己动手...显示全部
由于个人的需要,写了一份数据库运维脚本。  写本脚本的用意是:
   写一个自动收集数据库信息的脚本,这个脚本能把想要的数据保存到一个表格文件 中,方便excel等图表软件的处理。这些数据可以利用图表软件和word生 成定期的 维护报告。本脚本的终极目标是自己动手实现数据库日常运维的自动化。
   脚本主要定时收集数据库大小、数据库缓冲池、数据库表空间、锁、排 序、应用链接、自动存储路径的信息。

欢迎大家提出宝贵建议!{:3_57:}

附件:

附件图标test.sh (11.92 KB)

附件图标DPR.zip (2.66 MB)

附件图标checker.sh (12.02 KB)

附件图标collector.sh (19.84 KB)

附件图标getevmon.ksh (1.24 KB)

附件图标getsnap.ksh (1.46 KB)

附件图标dbcheck.sh (16.83 KB)

附件图标DBA脚本.doc (89.5 KB)

附件图标ibm_db-2.0.4.1-py2.7-win-amd64.egg (421.22 KB)

收起
参与136

查看其它 80 个回答ce97的回答

ce97ce97软件开发工程师某某某
DB2维护脚本

最近比较忙,没时间整理完整的脚本,拿两个最近经常用的DB2管理SQL语句来凑数。

说明:所有的脚本都是基于DB2 UDB V8.2编写的,在AIX5.3的默认SHELL下运行,如果要移植到其他操作系统需要适当调整里面的语法。

第一个SQL,通过snapshot_tbs_cfg()快照函数,获取表空间的最新使用情况,每天检查表空间的使用趋势,通过FREEPERC判断DMS表空间的可用空间的比例。

第二个SQL,通过snapshot_lock()快照函数,获取属于当前连接数据库的所有锁对象,同时 LOCK_MODE 属于(2, 4, 5, 7, 10, 11, 12)的锁选出来。由于开发环境下,经常有开发人员说某某表被锁了,又不知道被谁、哪个进程或者服务器加了锁。通过这个SQL,加上TABLE_NAME和TABLE_SCHEMA条件,就能快速定位对指定的表加了各种互斥锁的连接的AGENTID,接下来就一个FORCE APPLICATION (AGENTID),将连接断了。

有个问题,快照函数一定要具有实例用户或者数据库管理员权限的用户才能运行,有什么办法可以授权给普通的用户能够调用,例如封装成视图可以吗?

如果大家有更好的方法或者想法,请不吝赐教。

欢迎转发试用,转贴请注明出处。谢谢!


##############################################
select snapshot_timestamp, tablespace_id, tablespace_name, page_size, decimal(free_pages,18,2)/decimal(total_pages,18,2) * 100 as FREEPERC, decimal(used_pages*page_size,30,2) / 1024 /1024 USEDMB, total_pages, high_water_mark, usable_pages, used_pages, free_pages from table(snapshot_tbs_cfg('',-1)) a order by tablespace_type, used_pages*page_size desc;

select snapshot_timestamp, agent_id, table_file_id, lock_object_type, lock_mode, table_name, table_schema, tablespace_name from table(snapshot_lock('',-1)) a where lock_mode in (2, 4, 5, 7, 10, 11, 12);

另外附上DB2内部对 LOCK_MODE 常量各种值的描述:
/******************************************************************************/
/* lock modes (lock_mode)                                                     */
/******************************************************************************/

#define SQLM_LNON  0                  /*  No Lock                             */
#define SQLM_LOIS  1                  /*  Intention Share Lock                */
#define SQLM_LOIX  2                  /*  Intention Exclusive Lock            */
#define SQLM_LOOS  3                  /*  Share Lock                          */
#define SQLM_LSIX  4                  /*  Share with Intention Exclusive Lock */
#define SQLM_LOOX  5                  /*  Exclusive Lock                      */
#define SQLM_LOIN  6                  /*  Intent None (For Dirty Read)        */
#define SQLM_LOOZ  7                  /*  Super Exclusive Lock                */
#define SQLM_LOOU  8                  /*  Update Lock                         */
#define SQLM_LONS  9                  /*  Next-key Share Lock                 */
#define SQLM_LONX 10                  /*  Next-key Exclusive Lock             */
#define SQLM_LOOW 11                  /*  Weak Exclusive Lock                 */
#define SQLM_LONW 12                  /*  Next-key Weak Exclusive Lock        */
##############################################
系统集成 · 2014-04-03
浏览1231

回答者

ce97
ce974612
软件开发工程师某某某
擅长领域: 数据库大数据中间件

ce97 最近回答过的问题

回答状态

  • 发布时间:2014-04-03
  • 关注会员:14 人
  • 回答浏览:1231
  • X社区推广