如何在IBM Mainframe zos DB2上标识远程Type 4 JDBC工作负载

时间:2015-12-10 15:01:01

标签: java jdbc db2

我需要能够在IBM大型机DB2 v10 zos数据库上识别Type 4 jdbc工作负载。

我们的大型机db2监视器可以过滤以下字段

SYSTEM ID
DB2 SUBSYSTEM ID
DATA SHARING GROUP
AUTHORIZATION ID
PLAN NAME
CONNECTION ID
OPERATOR ID
CORRELATION ID
DBRM/PACKAGE ID
BUFFER POOL ID
COLLECTION ID
LOCAL LOCATION
REQUESTING LOCATION
OTHER LOCATION
DATABASE.PAGESET
LOCK RESOURCE

我猜这些值很多都无法更改。

然而,这些项目似乎很可能是候选人

CONNECTION ID
CORRELATION ID
REQUESTING LOCATION
OTHER LOCATION

我的问题是: -

i)中。可以在我的java客户端jdbc代码中设置“可能的候选者”吗?

ⅱ)。我如何设置这些“可能的候选人”?

如果我不能使用这些字段中的任何一个,那么我设法修改了与我的JDBC连接相关联的clientInfo,如jdbc trace的这个片段所示

[jcc][Time:2015-12-10-14:39:24.851][Thread:main][Connection@3b6eb2ec] getClientInfo () called
[jcc][Time:2015-12-10-14:39:24.851][Thread:main][Connection@3b6eb2ec] getClientInfo () returned {ClientUser=XXXXXX00, ApplicationName=db2jcc_application, ClientHostname=L0513039, ClientAccountingInformation=JCC04130L0513039                                      '}
[jcc][SystemMonitor:stop] core: 0.28737999999999997ms | network: 0.0ms | server: 0.0ms
[jcc][SystemMonitor:start] 
[jcc][Time:2015-12-10-14:39:24.852][Thread:main][Connection@3b6eb2ec] setClientInfo ({ApplicationName=crsJCC_application}) called
[jcc][SystemMonitor:stop] core: 3.613203ms | network: 0.0ms | server: 0.0ms
[jcc][SystemMonitor:start] 
[jcc][Time:2015-12-10-14:39:24.856][Thread:main][Connection@3b6eb2ec] getClientInfo () called
[jcc][Time:2015-12-10-14:39:24.856][Thread:main][Connection@3b6eb2ec] getClientInfo () returned {ClientUser=XXXXXX00, ApplicationName=xxxxxx_application, ClientHostname=L0513039, ClientAccountingInformation=JCC04130L0513039                                      '}
[jcc][SystemMonitor:stop] core: 0.24718099999999998ms | network: 0.0ms | server: 0.0ms
[jcc][Time:2015-12-10-14:39:24.857][Thread:main][Connection@3b6eb2ec] createStatement () called
[jcc][Time:2015-12-10-14:39:24.863][Thread:main][Connection@3b6eb2ec] createStatement () returned Statement@5ebec15
[jcc

在这种情况下,我修改了ApplicationName中的ClientInfo,我想要的是初始值是自定义的,例如初始值WAS'NT“db2jcc_application”但“最初为”xxxxxx_application“,这可能吗?

1 个答案:

答案 0 :(得分:1)

使用DB2Driver,您应该可以像这样设置应用程序名称:

Properties p= new Properties();
p.put("user", "admin");
p.put("password", "secret");
p.put("clientProgramName", "xxxx_application");
Connection conn = DriverManager.getConnection(
    "jdbc:db2://localhost:50000/yourdb", props);

如果您正在使用DB2DataSource,请查看this information from IBM

       com.ibm.db2.jcc.DB2DataSource ds = 
          new com.ibm.db2.jcc.DB2DataSource();                                       

       ds.setDriverType(4);
       ds.setServerName("localhost");                             
       ds.setPortNumber(50000);                                   
       ds.setDatabaseName("sample");                              
       ds.setUser("username");                                  
       ds.setPassword("password");                              
       ds.setClientProgramName("My application");       

如上所述here

  

clientProgramName

     

指定在客户端的物理连接期间固定的应用程序ID。此属性的值将成为DB2 for z / OS服务器上的关联ID 。数据库管理员可以使用此属性将DB2 for z / OS服务器上的工作与客户端应用程序相关联。此属性的数据类型是String。最大长度为12个字节。如果此值为null,则IBM DB2 Driver for JDBC和SQLJ将提供db2jccthread-name的值。