DB2管理与配置
绑定DB2 V9的PLAN
有很多PLAN没BIND,先执行
ADB720.SADBSAMP(ADBBIND)
执行前要先根据实际情况修改:
PLAN(DSNTIAD)
要改为PLAN(DSNTIA91)
DSN SYSTEM(DB9G)
- 有几个地方提示QUALIFIER需要为
THE CHANGE MANAGEMENT TABLES(ADBCHG)
和THE CHECKPOINT TABLE (ADBCHKPT)
的OWNER; 可以M.16, “Data Base Admin Tool”的“T - Tables, views, and aliases”去查找Table的OWNERC QUALIFIER(ADB) QUALIFIER(IBMUSER) ALL
- 写DB2 JOB使用的STEPLIB为:
DBRMLIB为:DSN910.DB9G.RUNLIB.LOAD DSN910.DB9G.SDSNEXIT DSN910.SDSNLOAD
ADB720.SADBDBRM
更改DB2 SPUFI 的CCSID
默认情概况下, 使用DB2I的SPFUI时可能会”报错”
DSNE345I WARNING: DB2 DATA CORRUPTION CAN RESULT
FROM THIS SPUFI SESSION BECAUSE THE
CCSID USED BY THE TERMINAL IS NOT THE
SAME AS THE CCSID USED BY SPUFI
- TERMINAL CCSID: 1388
- SPUFI CCSID : 1047
NOTIFY THE DB2 SYSTEM ADMINISTRATOR.
解决办法是生成新的DB2 Plan, 在使用SPUFI指定新的Plan
- ISPF 6, 输入DSN SYSTEM(DB9G)
依次输入下面的语句
BIND PACKAGE(TIAP1388) MEMBER(DSNTIAP) ACTION(REPLACE) ISOLATION(CS) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM') BIND PACKAGE(SPCS1388) MEMBER(DSNESM68) ACTION(REPLACE) ISOLATION(CS) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM') BIND PLAN(SPCS1388) PKLIST(SPCS1388.DSNESM68,TIAP1388.DSNTIAP) ISOLATION(CS) ENCODING(1388) ACTION(REPLACE) BIND PACKAGE(SPRR1388) MEMBER(DSNESM68) ACTION(REPLACE) ISOLATION(RR) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM') BIND PLAN(SPRR1388) PKLIST(SPRR1388.DSNESM68,TIAP1388.DSNTIAP) ISOLATION(RR) ENCODING(1388) ACTION(REPLACE) BIND PACKAGE(SPUR1388) MEMBER(DSNESM68) ACTION(REPLACE) ISOLATION(UR) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM') BIND PLAN(SPUR1388) PKLIST(SPUR1388.DSNESM68,TIAP1388.DSNTIAP) ISOLATION(UR) ENCODING(1388) ACTION(REPLACE)
- 输入END 退出DSN3
- 在SPUFI的界面中,在第5项specify YES for CHANGE PLAN NAMES
4.在下面的界面中,
- specify SPCS1388in the CS ISOLATION PLAN field,
- SPRR1388in the RR ISOLATION PLAN field,
- SPUR1388in the UR ISOLATION PLAN field. *(默认是DSNESPCS、DSNESPRR、DSNESPUR)
另外, 可以用下面的JCL脚本完成BIND任务
//BINDPPD JOB (ACCT-INFO),'DB2 SCCID BIND',CLASS=A,MSGCLASS=H,
// REGION=0M,NOTIFY=&SYSUID
//BIND EXEC PGM=IKJEFT01,DYNAMNBR=100
//STEPLIB DD DSN=DSN910.DB9G.RUNLIB.LOAD,DISP=SHR
// DD DSN=DSN910.DB9G.SDSNEXIT,DISP=SHR
// DD DSN=DSN910.SDSNLOAD,DISP=SHR
//DBRMLIB DD DISP=SHR,DSN=ADB720.SADBDBRM
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB9G)
BIND PACKAGE(TIAP1388) MEMBER(DSNTIAP) -
ACTION(REPLACE) ISOLATION(CS) ENCODING(1388) -
LIBRARY('DSN910.SDSNDBRM')
BIND PACKAGE(SPCS1388) MEMBER(DSNESM68) -
ACTION(REPLACE) ISOLATION(CS) ENCODING(1388) -
LIBRARY('DSN910.SDSNDBRM')
BIND PLAN(SPCS1388) PKLIST(SPCS1388.DSNESM68,TIAP1388.DSNTIAP) -
ISOLATION(CS) ENCODING(1388) ACTION(REPLACE)
BIND PACKAGE(SPRR1388) MEMBER(DSNESM68) ACTION(REPLACE) -
ISOLATION(RR) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM')
BIND PLAN(SPRR1388) PKLIST(SPRR1388.DSNESM68,TIAP1388.DSNTIAP)-
ISOLATION(RR) ENCODING(1388) ACTION(REPLACE)
BIND PACKAGE(SPUR1388) MEMBER(DSNESM68) ACTION(REPLACE) -
ISOLATION(UR) ENCODING(1388) LIBRARY('DSN910.SDSNDBRM')
BIND PLAN(SPUR1388) PKLIST(SPUR1388.DSNESM68,TIAP1388.DSNTIAP) -
ISOLATION(UR) ENCODING(1388) ACTION(REPLACE)
END
//
DB2Admin修改the plan names
根据文档 DB2 Administration Tool中
To run DB2® Admin, you must bind the DB2 Admin application packages and plans.
A sample job is provided in member ADBBIND in the SADBSAMP library.
Submit sample job ADBBIND on each DB2 subsystem that runs DB2 Admin for TSO or batch jobs.
在上面绑定DB2 V9的PLAN对ADBBIND的修改的基础上,将 ENCODING(EBCDIC)修改为 ENCODING(1388)后提交。
DB2的配置
在ADCD Z19的默认情况下,直接在DB2Admin中执行SQL CREATE TABLE 会报错:
SQLCODE = -904, ERROR: UNSUCCESSFULEXECUTION CAUSED BY AN UNAVAILABLE RESOURCE.
REASON00D70001, TYPE OF RESOURCE 00000500, AND RESOURCE NAME SYSDEFLT
解决该问题的方法是:首先执行下面的SQL,指定STOGROUP
ALTER STOGROUP SYSDEFLT ADD VOLUMES ('Z9DB91')
DB2 RUNSTATS
表空间级统计信息更新 可以通过查询系统表SYSIBM.SYSTABLES的CARD列来确定哪个表需要搜集统计信息。 如果CARD值为-1,则表示对应的表需要搜集统计信息,如果CARD的值为正,则表示对应的表不需要搜集统计信息。
可以用DB2 UTILITIES自动产生的JCL来更新表的统计信息
//IBMUSERA JOB (ACCOUNT),'NAME',NOTIFY=&SYSUID
//UTIL EXEC DSNUPROC,SYSTEM=DB9G,UID='TEMPXYZ',UTPROC=''
//DSNUPROC.SYSIN DD *
RUNSTATS TABLESPACE DSN00009.TESTLOCK
TABLE(ALL)
INDEX(ALL)
SHRLEVEL CHANGE
DB2锁
可以在DB2 system catalog中,列出表空间,在其之前使用DISL命令查看锁的情况。