DB2数据库日常维护

一、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 基本语法

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”

四、日志排查

db2diag.log 诊断日志

查询日志路径:db2 get dbm cfg |grep  DIAGPATH

db2diag 命令

db2diag -time 2024-06-25 -level "Severe,Error" 查看6月25以来的错误信息

db2diag -A  旧日志归档,并重新生成新的db2diag.log

五、问题分析

1 、锁问题

现象: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))

2 、表状态异常

现象:DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016, SQLERRMC=7;NEWCA.CERT, DRIVER=4.18.60

解决办法:

db2 "reorg table table_name allow no access"

3 、事务日志满

现象: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

4 、内存使用量分析

查看实例下所有库的内存使用情况:

db2mtrk -i -d -v

5 、权限问题

数据库级权限: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                      允许拥有者充当工作负载管理员

5 、权限问题

表级权限:syscat.tabauth

其中:

SELECT       允许用户检索表或视图中的行、对表创建视图以及运行 EXPORT 实用程序。 

INSERT       允许用户将行插入表或视图以及运行 IMPORT 实用程序。 

UPDATE       允许用户更改表或视图中的条目,或表或视图中的一个或多个特定列的条目。用户只能对特定的列拥有此特权。 

DELETE       允许用户从表或视图中删除行。 

ALTER       允许用户修改表,例如,为表添加列或唯一约束。具有 ALTER 特权用户还可以 COMMENT ON 一个表,或者表的一列。 

INDEX       允许用户对表创建一个索引。索引创建者自动具有索引的 CONTROL 特权。 

REFERENCES  允许用户创建和删除一个外键,并指定该表为关系中的父表。用户可能只对特定的列拥有此特权。 

CONTROL     给用户提供对表或视图的所有特权,包括删除它以及授予和撤销各个表特权的功能。 

5 、权限问题

PUBLIC

任何人或组都属于PUBLIC组,具有PUBLIC组相应的权限,如果检查了syscat.dbauth、syscat.tabauth权限还有问题,大概率是PUBLIC组权限引起的。

六、运维工具使用

1 、?帮助工具
l 查看报错码

示例: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

1 、?帮助工具
l 命令使用帮助
2 db2pd
l db2pd用于收集 DB2 实例和数据库的统计信息。db2pd提供多个选项显示关于数据库事务、表空间、表统计信息、动态 SQL、数据库配置和其他很多细节的信息

其中:

-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           ->索引利用率

3 db2top
l db2top 提供对数据库的性能监控,提供交互式界面,可以动态查看监控数据。

db2top -d dbname

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值