Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657820
  • 博文数量: 102
  • 博客积分: 2241
  • 博客等级: 大尉
  • 技术积分: 1670
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-08 10:08
文章分类

全部博文(102)

文章存档

2013年(6)

2012年(15)

2011年(81)

分类: DB2/Informix

2011-05-02 23:50:15


    DB2 的监控函数在 sqlmon.h 定义,只有4个函数,其余都是数据结构

1 开启关闭监控

  1. int sqlmon(int ver, //版本
  2.     char *reserved, //保留
  3.     sqlm_recording_group group[], //需要填写的内容
  4.     sqlca* sqlca //函数结果
输入
  1. typedef struct sqlm_recording_group
  2. {
  3.   int input_state; //输入值放这里
  4.   int output_state; //输出值
  5.   sqlm_timestamp start_time;
  6. }sqlm_recording_group;
创建 SQLM_NUM_GROUPS 个 sqlm_recording_group,设置每个input_state 值 为SQLM_ON 、OFF、HOLD
调用函数,执行结果检查sqlca.sqlcode,当前监控状态在output_state



2 填冲需要获取的信息类型到 sqlma数组,评估需要多大缓冲区
  1. int sqlmonsz(int version,  //版本
  2.                      char *reserved, //保留
  3.                      sqlma *sqlma_ptr, //需要监控的类型 数组
  4.                      int *buff_size, //一个变量地址,计算后缓冲地址,使用这个值分配内存
  5.                      struct sqlca *sqlca //运行结果
  6.                        )
sqlma结构
  1. typedef struct sqlma
  2. {
  3.    int obj_num; //数组大小
  4.    sqlm_obj_struct obj_var[]; // 要获取监控的类型
  5. }sqlma;
  typedef struct sqlm_obj_struct    
  {
     sqluint32     agent_id;   //根据obj_type定义,0不需要,或app_id,或agent_id
     sqluint32     obj_type;    //监控类型  SQLMA_XXXX
     char object[SQLM_OBJECT_SZ]; //根据obj_type定义,""不需要,或数据库名,或实例名
  }sqlm_obj_struct;

 之后,malloc或new 时计算时的 buff_size 大小空间,
 
3 获取监控
  1. int sqlmonss(int version, //版本
  2.                         char *reserved,
  3.                         sqlma *sqlma_ptr, //上个函数同一个数组,要求获取的监控类型
  4.                         int buffer_length, // 缓冲区长度
  5.                         void *buffer_area,  // 缓冲区指针
  6.                         sqlm_collected *collected,  //创建一个结构,保存输出结果,不需要使用
  7.                         struct sqlca *sqlca
  8.                        );
buffer_area是一个自描述的字符串,有如下结构
   int size // 数据区大小(字节)
   int type  //取得的监控数据类型 SQLM_XXXX_SS
   数据

buffer_area+4 转成int的值,判断是哪一种 SQLM_XXXX_SS,把buffer_area转成 struct_XXXX *结构,
之后就可以访问数据成员了
   

4 重置监控
  1. int sqlmrset(int version,
  2.                         char *reserved,
  3.                         sqluint32 reset_all, //设置为 SQLM_OFF
  4.                         char *db_alias, //  数据库名
  5.                         struct sqlca *sqlca 
  6.                        );

运行函数要求:
     sqleatin attach到一个实例上

之后就可以获取实例、数据库、进程等各类可获取的监控状态。


阅读(953) | 评论(0) | 转发(0) |
0

上一篇:makefile tips

下一篇:C 数据结构查看小工具

给主人留下些什么吧!~~