DB2 V9.5 工作负载管理,第 3 部分: 如何实现工作负载

工作负载( WORKLOAD )工作负载( WORKLOAD )通过工作所在的数据库连接属性来标识数据库活动。工作负载( WORKLOAD )是用来分配工作给服务类( Service Class )的方法,是一个根据工作的来源( source )标识区分工作的对象,以方便随后对工作进行相应的管理。来源( source )是由工作所在的数...显示全部
工作负载( WORKLOAD )

工作负载( WORKLOAD )通过工作所在的数据库连接属性来标识数据库活动。工作负载( WORKLOAD )是用来分配工作给服务类( Service Class )的方法,是一个根据工作的来源( source )标识区分工作的对象,以方便随后对工作进行相应的管理。来源( source )是由工作所在的数据库连接的属性决定的。

当服务器收到多个用户请求,首先将对用户请求进行评估标识(此时处于 WLM 第一阶段 标识阶段),当其数据库连接属性符合某个已经定义的工作负载,则将其分配给特定工作负载所在的服务类中执行。如果不能和已经定义的工作负载相匹配,则将用户请求分配给缺省用户工作负载所在的缺省用户服务类中执行。

当服务器收到系统请求时,将其分配给默认系统服务类中执行。

当服务器收到维护请求时,将其分配给默认维护服务类中执行。

默认系统服务类名为: SYSDEFAULTSYSTEMCLASS,其下有一个默认的服务子类: SYSDEFAULTSUBCLASS。
默认维护服务类名为:SYSDEFAULTMAINTENANCECLASS,其下有一个默认的服务子类:SYSDEFAULTSUBCLASS。
默认用户服务类名为:SYSDEFAULTUSERCLASS,其下有一个默认的服务子类:SYSDEFAULTSUBCLASS。

图 3 . 服务类和工作负载


接下来我们继续在刚才的 DB2CLP 窗口发出 ALTER WORKLOAD 命令,使工作负载 WL_RHETTE 和 WL_DB2ADMIN 失效。然后发出 DROP WORKLOAD 命令,删除工作负载 WL_RHETTE 和 WL_DB2ADMIN。最后发出 CREATE WORKLOAD 命令,创建工作负载工 WL_RHETTE 和 WL_DB2ADMIN。工作负载 WL_RHETTE 对应的服务子类是 subclass_rhette,对应的服务父类是 super_class。工作负载 WL_DB2ADMIN 对应的服务子类是 subclass_db2admin,对应的服务父类是 super_class。需要注意的是,如果你想删除一个工作负载,那么必须先让该工作负载失效。具体如清单8所示:

清单 8 . 创建工作负载 WL_RHETTE 和 WL_DB2ADMIN
                C:> db2 -tvf  wl_create.sqlalter workload wl_rhette disableDB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0204N  " WL_RHETTE " 是一个未定义的名称。  SQLSTATE = 42704alter workload wl_db2admin disableDB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0204N  " WL_DB2ADMIN " 是一个未定义的名称。  SQLSTATE = 42704drop workload wl_rhetteDB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0204N  " WL_RHETTE " 是一个未定义的名称。  SQLSTATE = 42704drop workload wl_db2adminDB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0204N  " WL_DB2ADMIN " 是一个未定义的名称。  SQLSTATE = 42704create workload wl_rhette session_user ( 'RHETTE' ) service class subclass_rhetteunder super_classDB20000I  SQL命令成功完成。create workload wl_db2admin session_user ( 'DB2ADMIN' ) service class subclass_db2admin under super_classDB20000I  SQL命令成功完成。      

命令成功完成,工作负载是通过工作所在的数据库连接属性来标识数据库活动,数据库连接的属性可以是:
APPLNAME ( ' application - name ' , . . . )为APPLNAME连接属性指定一个或多个应用程序名称。在列表中同一个应用程序名称不能出现多次,否则会报 SQLSTATE 42713 错误。应用程序名称是大小写敏感的,应用程序名称就是我们执行 LIST APPLICATIONS 命令显示的值。
SYSTEM_USER ( ' authorization – name ' , . . . )为 SYSTEM USER 连接属性指定一个或多个授权 ID。在列表中同一个授权 ID 不能出现多次,否则会报 SQLSTATE 42713 错误。
SESSION_USER ( ' authorization – name ' , . . . )为 SESSION USER 连接属性指定一个或多个授权 ID。需要注意的是,授权 ID 大小写敏感。在列表中同一个授权 ID 不能出现多次,否则会报 SQLSTATE 42713 错误。
SESSION_USER GROUP ( ' authorization – name ' , . . . )为 SESSION_USER GROUP 连接属性指定一个或多个授权 ID。在列表中同一个授权 ID 不能出现多次,否则会报 SQLSTATE 42713 错误。
SESSION_USER ROLE ( ' authorization – name ' , . . . )为 SESSION_USER ROLE 连接属性指定一个或多个授权 ID。这里会话授权ID的角色是指会话授权 ID 所有可用的角色,不管这些角色是怎么获得的。在列表中同一个授权 ID 不能出现多次,否则会报 SQLSTATE 42713 错误。
CURRENT CLIENT_USERID ( ' user – id ' , . . . )为 CURRENT CLIENT_USERID 连接属性指定一个或多个客户端用户 ID。在列表中同一个客户端用户 ID 不能出现多次,否则会报 SQLSTATE 42713 错误。
CURRENT CLIENT_APPLNAME ( ' client – application – name ' , . . . )为 CURRENT CLIENT_APPLNAME 连接属性指定一个或多个应用程序名称。在列表中同一个应用程序名称不能出现多次,否则会报 SQLSTATE 42713 错误。这个 client – application – name 是大小写敏感的,其值就是系统监控器输出中的 " TP Monitor client application name " 值。
CURRENT CLIENT_WRKSTNNAME ( ' workstation – name ' , . . . )为 CURRENT CLIENT_WRKSTNNAME 连接属性指定一个或多个客户端工作站名称。在列表中同一个客户端工作站名称不能出现多次,否则会报 SQLSTATE 42713 错误。
CURRENT CLIENT_ACCTNG ( ' accounting – string ' , . . . )为 CURRENT CLIENT_ACCTNG 连接属性指定一个或多个 accounting string。在列表中同一个客户端 accounting string 不能出现多次,否则会报 SQLSTATE 42713 错误。收起
参与4

查看其它 3 个回答灰机灰走了的回答

如果想查看已经定义的工作负载,可以通过查看系统视图 SYSCAT.WORKLOADS 的方式查看,也可以通过使用 DB2PD 工具进行查看,需要使用 DB2PD 工具的 workloads 选项。继续在当前 DB2CLP 窗口中,发出 DB2P 命令,部分输出信息如清单 9 所示:

清单 9 . 查看工作负载的定义情况
                C:\> db2pd -workloads -db db2test1Database Partition 0 - - Database DB2TEST1 - - Active - - Up 0 days 15:58:51Workload Definition :Address    WorkloadID  WorkloadName                     DBAccess  0x7E69F2E0 3           WL_RHETTE                       ALLOW      0x7E69F384 4           WL_DB2ADMIN                     ALLOW      0x7E69F428 1           SYSDEFAULTUSERWORKLOAD     ALLOW      0x7E69F4C0 2           SYSDEFAULTADMWORKLOAD      ALLOW      Usage Privilege Holders :Address    WorkloadID  Type       AuthID                                         0x7E687774 1           GROUP      PUBLIC                                                         Local Partition Workload Statistics :     Address    WorkloadID  WorkloadName                    NumWLO      0x7E6861C0 1           SYSDEFAULTUSERWORKLOAD        1  0x7E688D60 2           SYSDEFAULTADMWORKLOAD         0   0x7E69F150 3           WL_RHETTE                              00x7E686070 4           WL_DB2ADMIN                                   0        

我们也可以通过控制中心查看系统视图 SYSCAT.WORKLOADS,来看一下我们创建的工作负载情况,具体如图4所示:

图 4. 查看工作负载情况



对特定的工作负载(和一个特定的连接相关联)来说,其会话用户必须具有该工作负载的 USAGE 特权,如果想查看工作负载相关的 USAGE 特权,可以访问系统视图 SYSCAT.WORKLOADAUTH。我们继续在当前的 DB2CLP 窗口中,发出 GRANT 命令,把工作负载 WL_RHETTE 和 WL_DB2ADMIN 的 USAGE 特权赋给 PUBLIC 组,具体如清单 10 所示:

清单 10 . 把工作负载 USAGE 权限分配给 PUBLIC 组
                C:\> db2 grant usage on workload WL_RHETTE to publicDB20000I  SQL命令成功完成。C:\> db2 grant usage on workload WL_DB2ADMIN to publicDB20000I  SQL命令成功完成。      

下面我们来看一下数据库连接、工作负载和服务类在具体的场景中是什么样子。
首先,我们关闭当前的 DB2CLP 窗口,再打开三个新的 DB2CLP 窗口,这样我们就有三个 DB2CLP 窗口,分别称之为窗口1、窗口2、窗口3。在窗口1中,我们发出 DB2 CONNECT 命令,连上示例数据库 DB2TEST1,用户名为 admnistrator,具体如清单 11 所示:

清单 11 . 在窗口 1 中使用 admnistrator 用户连接数据库
                C:\> db2 connect to db2test1 user administrator using passw0rd   数据库连接信息 数据库服务器         = DB2 / NT 9.5.0 SQL 授权标识         = ADMINIST . . . 本地数据库别名       = DB2TEST1      
2008-07-03
浏览1055

回答者

灰机灰走了 最近回答过的问题

回答状态

  • 发布时间:2008-07-03
  • 关注会员:0 人
  • 回答浏览:1055
  • X社区推广