3 DB2表及sp管理
3.1 看存储过程文本
select text from syscat.procedures where procname='PROC1';
3.2 看表结构
describe table syscat.procedures
describe select * from syscat.procedures
3.3 查看各表对sp的影响(被哪些sp使用)
select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select PKGNAME from syscat.packagedep where bname='TB_BRANCH'))
3.4 查看sp使用了哪些表
select bname from syscat.packagedep where btype='T' and pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='PR_CLEAR_MATCH_DIVIDE_SHA'))
3.5 查看function被哪些sp使用
select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select PKGNAME from syscat.packagedep where bname in (select SPECIFICNAME from SYSCAT.functions where funcname='GET_CURRENT_DATE')))
C:\PROGRA~1\TRENDP~1\PCSCAN.EXE C:\ C:\WINDOWS\COMMAND\ /NS /WIN95
rem C:\WINDOWS\COMMAND.COM /E:32768
REM [Header]
REM [CD-ROM Drive]
REM [Miscellaneous]
REM [Display]
set PATH=%PATH%;C:\MSSQL\BINN;C:\PROGRA~1\SQLLIB\BIN;C:\PROGRA~1\SQLLIB\FUNCTION;C:\PROGRA~1\SQLLIB\SAMPLES\REPL;C:\PROGRA~1\SQLLIB\HELP
IF EXIST C:\PROGRA~1\IBM\IMNNQ\IMQENV.BAT CALL C:\PROGRA~1\IBM\IMNNQ\IMQENV.BAT
IF EXIST C:\PROGRA~1\IBM\IMNNQ\IMNENV.BAT CALL C:\PROGRA~1\IBM\IMNNQ\IMNENV.BAT
set DB2INSTANCE=DB2
set CLASSPATH=.;C:\PROGRA~1\SQLLIB\java\db2java.zip;C:\PROGRA~1\SQLLIB\java\runtime.zip;C:\PROGRA~1\SQLLIB\java\sqlj.zip;C:\PROGRA~1\SQLLIB\bin
set MDIS_PROFILE=C:\PROGRA~1\SQLLIB\METADATA\PROFILES
set LC_ALL=ZH_CN
set INCLUDE=C:\PROGRA~1\SQLLIB\INCLUDE;C:\PROGRA~1\SQLLIB\LIB;C:\PROGRA~1\SQLLIB\TEMPLATES\INCLUDE
set LIB=C:\PROGRA~1\SQLLIB\LIB
set DB2PATH=C:\PROGRA~1\SQLLIB
set DB2TEMPDIR=C:\PROGRA~1\SQLLIB
set VWS_TEMPLATES=C:\PROGRA~1\SQLLIB\TEMPLATES
set VWS_LOGGING=C:\PROGRA~1\SQLLIB\LOGGING
set VWSPATH=C:\PROGRA~1\SQLLIB
set VWS_FOLDER=IBM DB2
set ICM_FOLDER=信息目录管理器
win
4.2 创建Database
create database head using codeset IBM-eucCN territory CN;
这样可以支持中文。
4.3 手工做数据库远程(别名)配置
db2 catalog tcpip node node1 remote 172.28.200.200 server 50000
db2 catalog db head as test1 at node node1
然后既可使用:
db2 connect to test1 user … using …
连上head库了
4.4 停止启动数据库实例
db2start
db2stop (force)
4.5 连接数据库及看当前连接数据库
连接数据库
db2 connect to head user db2inst1 using db2inst1
当前连接数据库
db2 connect
4.6 停止启动数据库head
db2 activate db head
db2 deactivate db head
要注意的是,如果有连接,使用deactivate db 不起作用。
如果是用activate db启动的数据库,一定要用deactivate db才会停止该数据库。(当然如果是db2stop也会停止)。
使用activate db,这样可以减少第一次连接时的等待时间。
Database如果不是使用activate db启动而是通过连接数据库而启动的话,当所有的连接都退出后,db也就自动停止。
4.7 查看及停止数据库当前的应用程序
查看应用程序:
db2 list applications show detail
4.8 查看本instance下有哪些database
db2 LIST DATABASE DIRECTORY [ on /home/db2inst1 ]
4.9 查看及更改数据库head的配置
请注意,在大多数情况下,更改了数据的配置后,只有在所有的连接全部断掉后才会生效。
查看数据库head的配制
db2 get db cfg for head
更改数据库head的某个设置的值
4.9.1 改排序堆的大小
db2 update db cfg for head using SORTHEAP 2048
将排序堆的大小改为2048个页面,查询比较多的应用最好将该值设置比较大一些。
4.9.2 改事物日志的大小
db2 update db cfg for head using logfilsiz 40000
该项内容的大小要和数据库的事物处理相适应,如果事物比较大,应该要将该值改大一点。否则很容易处理日志文件满的错误。
4.9.3 出现程序堆内存不足时修改程序堆内存大小
db2 update db cfg for head using applheapsz 40000
该值不能太小,否则会没有足够的内存来运行应用程序。
4.10 查看及更改数据库实例的配置
查看数据库实例配置
db2 get dbm cfg
更改数据库实例配制
4.10.1 打开对锁定情况的监控。
db2 update dbm cfg using dft_mon_lock on
4.10.2 更改诊断错误捕捉级别
db2 update dbm cfg using diaglevel 3
0 为不记录信息
1 为仅记录错误
2 记录服务和非服务错误
缺省是3,记录db2的错误和警告
4 是记录全部信息,包括成功执行的信息
一般情况下,请不要用4,会造成db2的运行速度非常慢。
首先,将监视开关打开
db2 update dbm cfg using dft_mon_lock on
快照
db2 get snapshot for Locks on cleardb >snap.log
tables
bufferpools
tablespaces
database
然后再看snap.log中的内容即可。
对Lock可根据Application handle(应用程序句柄)看每个应用程序的锁的情况。
监视完毕后,不要忘了将监视器关闭
db2 update dbm cfg using dft_mon_lock off