一、DB2系统结构
db2icrt 实例名
db2idrop 实例名
db2ilist 实例名
db2start
db2stop
create database 库名 [on 存储路径] [using codeset 字符集] [TERRITORY 区域码] [pagesize 页大小]
drop database 库名
list db directory
list applications for db dbname
force application {all | ( application-handle)
db2 get dbm cfg
db2 update dbm cfg using 参数名 参数值
db2 update dbm cfg using SVCENAME 60000
db2 get db cfg for 库名
db2 update db cfg for 库名 using 参数名 参数值
db2 update db cfg for CCSDB using LOGFILSIZ 10240
二、DB2参数配置介绍
Global instance memory (4KB) (INSTANCE_MEMORY) = AUTOMATIC(5487480)
Max number of client connections (MAX_CONNECTIONS) = AUTOMATIC(MAX_COORDAGENTS)
Percent max primary log space by transaction (MAX_LOG) = 0 --max_log此参数指示一个事务可以消耗的主日志空间的百分比,0 表示没限制
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0 --num_log_span参数指定是一个事务可以跨越多少个日志文件,0表示没限制
Max number of active applications (MAXAPPLS) = AUTOMATIC(1833)
三、数据库备份恢复
离线备份
在线备份
全量备份
增量备份
backup database <数据库名称> [USER username [USING password]]
[ONLINE] [INCREMENTAL [DELTA]] to <路径|设备>
其中:
ONLINE 备份需要提前开启归档
INCREMENTAL [DELTA] 表示执行增量备份;DELTA表示执行差异增量备份
db2 backup db cbsdev to /backup
RESTORE DATABASE <数据库名> [USER username [USING password]] from <路径|设备>
[ON path ] [TAKEN AT date-time] [INTO 目标库名] [REDIRECT [GENERATE SCRIPT file-name]]
restore database from /backup on /dbdata/cbsdev2 into cbsdev2
REDIRECT 重定向恢复:
restore database from /backup on /dbdata/cbsdev2 into cbsdev2 redirect generate script /tmp/cbsdev.clp
vim /tmp/cbsdev.clp
db2 -tvf /tmp/cbsdev.clp
EXPORT 语法:
EXPORT TO filename OF {IXF | DEL | WSF} {select-statement }
示例:
db2 "export to F_CARD_RTN.ixf of ixf select * from DSC_DTA.F_CARD_RTN"
IMPORT 语法:
IMPORT FROM filename OF {IXF | ASC | DEL | WSF} {INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE} INTO {table-name}
其中:
INSERT --将输入数据插入到目标表中而不更改现有数据
INSERT_UPDATE --使用输入行的值更新具有匹配主键值的行,如果没有匹配行,那么会将已导入行插入到表中。
REPLACE --删除所有现有数据并插入已导入数据,同时保留表和索引定义
REPLACE_CREATE --删除所有现有数据并插入已导入数据,同时保留表和索引定义;如果目标表和索引不存在,那么创建目标表和索引
示例:
db2 “import from F_CARD_RTN.ixf of ixf replace into DSC_DTA.F_CARD_RTN”
四、日志排查
查询日志路径:db2 get dbm cfg |grep DIAGPATH
db2diag -time 2024-06-25 -level "Severe,Error" 查看6月25以来的错误信息
db2diag -A 旧日志归档,并重新生成新的db2diag.log
五、问题分析
现象:SQL 错误 [40001]: The current transaction has been rolled back because of a deadlock or timeout. Reason code "68".. SQLCODE=-911, SQLSTATE=40001, DRIVER=4.26.14
排查方法:SELECT AGENT_ID,LOCK_NAME,LOCK_OBJECT_TYPE,LOCK_MODE,LOCK_STATUS,TABNAME FROM TABLE (SNAP_GET_LOCK ('', -1))
现象:DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016, SQLERRMC=7;NEWCA.CERT, DRIVER=4.18.60
解决办法:
db2 "reorg table table_name allow no access"
现象:SQL0964C The transaction log for the database is full. SQLSTATE=57011
解决办法:
先查看事务日志配置:db2 get db cfg for 库名|grep -i log
总共日志大小为:( LOGPRIMARY + LOGSECOND )* LOGFILSIZ * 4KB
如果总日志足够大,排查是否是有大事务未提交
db2 "get snapshot for applications on dbname" > tmp.log
查看实例下所有库的内存使用情况:
db2mtrk -i -d -v
数据库级权限:syscat.dbauth
其中:
ACCESSCTRL 允许拥有者授予和撤销所有对象特权和数据库权限以及 ACCESSCTRL、DATAACCESS、DBADM 和 SECADM 权限。
BINDADD 允许拥有者在数据库中创建新包
CONNECT 允许拥有者连接到数据库
CREATETAB 允许拥有者在数据库中创建新表
CREATE_EXTERNAL_ROUTINE 允许拥有者创建过程以供数据库的应用程序和其他用户使用
CREATE_NOT_FENCED_ROUTINE 允许拥有者创建未受防护的用户定义的函数(UDF)或过程
DATAACCESS 允许拥有者访问存储在数据库表中的数据。
DBADM 允许拥有者充当数据库管理员
EXPLAIN 允许拥有者说明查询方案,而不要求他们拥有访问这些查询方案所引用的表中数据的特权
IMPLICIT_SCHEMA 允许任何用户隐式地创建模式
LOAD 允许拥有者将数据装入到表中。
QUIESCE_CONNECT 允许拥有者在数据库处于停顿状态时访问该数据库。
SECADM 允许拥有者充当数据库的安全管理员。
SQLADM 允许拥有者监视和调整 SQL 语句。
WLMADM 允许拥有者充当工作负载管理员
表级权限:syscat.tabauth
其中:
SELECT 允许用户检索表或视图中的行、对表创建视图以及运行 EXPORT 实用程序。
INSERT 允许用户将行插入表或视图以及运行 IMPORT 实用程序。
UPDATE 允许用户更改表或视图中的条目,或表或视图中的一个或多个特定列的条目。用户只能对特定的列拥有此特权。
DELETE 允许用户从表或视图中删除行。
ALTER 允许用户修改表,例如,为表添加列或唯一约束。具有 ALTER 特权用户还可以 COMMENT ON 一个表,或者表的一列。
INDEX 允许用户对表创建一个索引。索引创建者自动具有索引的 CONTROL 特权。
REFERENCES 允许用户创建和删除一个外键,并指定该表为关系中的父表。用户可能只对特定的列拥有此特权。
CONTROL 给用户提供对表或视图的所有特权,包括删除它以及授予和撤销各个表特权的功能。
PUBLIC组
任何人或组都属于PUBLIC组,具有PUBLIC组相应的权限,如果检查了syscat.dbauth、syscat.tabauth权限还有问题,大概率是PUBLIC组权限引起的。
六、运维工具使用
示例:SQL 错误 [40001]: The current transaction has been rolled back because of a deadlock or timeout. Reason code "68".. SQLCODE=-911, SQLSTATE=40001, DRIVER=4.26.14
其中:
-osinfo ->操作系统信息
-dbmcfg ->DBM配置信息
-dbcfg ->DB配置信息
-edus ->监视线程edu
-mempools ->内存池
-memsets ->内存信息
-utilities ->工具(backup,runstats,reorg,restore,load)
-applications ->应用连接
-transactions ->事务
-bufferpool ->缓冲池
-logs ->日志
-locks ->锁
-tablespaces ->表空间和容器
-dynamic ->动态SQL
-dbptnmem ->实例所消耗内存总量
-tcbstats ->索引利用率
db2top -d dbname