db2的操作命令使用汇总(5)

2019-08-20 18:13

DB2 客户机和服务器均支持 Kerberos 安全协议时,即可使用 KERBEROS 身份验证类型。某些客户机可能并不支持 Kerberos,但依然需要访问 DB2 服务器。为确保所有类型的客户机均能安全地连接,将 DB2 服务器的身份验证类型设置为 KRB_SERVER_ENCRYPT。 这将允许所有启用了 Kerberos 的客户机使用 Kerberos 进行身份验证,而其他客户机则使用 SERVER_ENCRYPT 身份验证。 5. 在客户机上进行身份验证

这一选项允许在客户机上进行身份验证。用户成功登录到客户机后,即可轻松连接到数据库,而无需再次提供口令。

需要注意:存在不具有可靠的安全性设施的客户机系统,例如 Windows 9x 和 Classic Mac OS。它们叫做不受信任的客户机。任何人只要可以访问这些系统,就可以不经过身份验证直接连接到 DB2 服务器。

为提供允许受信任的客户机自行执行身份验证、同时强制不受信任的客户机在服务器处进行身份验证的灵活性,DB2 引入了另外两种数据库管理器配置参数:

a. TRUST_ALLCLNTS b. TRUST_CLNTAUTH

这两个参数仅在身份验证设置为 CLIENT 时被评估。 6. 信任客户机

TRUST_ALLCLNTS 确定信任哪种类型的客户机。参数有以下可能值: a. YES —— 信任所有客户机。这是默认设置。身份验证将在客户机处执行。但有一个例外,我们将在介绍 TRUST_CLNTAUTH 时更详细地予以讨论。

b. NO —— 仅信任具备可靠的安全性设施的客户机(受信任的客户机)。若不受信任的客户机连接,则必须提供用户 ID 和口令,以便在服务器进行身份验证。

c. DRDAONLY —— 仅信任在 iSeries 或 zSeries 平台上运行的客户机(例如,DRDA 客户机)。其他任何客户机都必须提供用户 ID 和口令。

可使用 TRUST_CLNTAUTH 来指定,当在 connect 语句或 attach 命令中提供了用户 ID 和密码时将在何处进行身份验证。允许使用的值有两个:

d. CLIENT —— 身份验证在客户机处执行,不需要用户 ID 和口令。 e. SERVER —— 身份验证在服务器处完成,需要提供用户 ID 和口令。 7. 设置权限级别

权限级别控制执行数据库管理器维护操作和管理数据库对象的能力。在 DB2 中共有 5 种权限:

a. SYSADM:具有管理实例的完整特权,还可访问底层数据库中的数据。 b. SYSCTRL 和 SYSMAINT:拥有管理实例、其数据库和数据库对象的特定特权。这些权限不含 访问数据的权限。例如,像 'SELECT * FROM mytable' 或 'DELETE FROM mytable' 这样的语句是不允许的。

c. DBADM:拥有在特定数据库上执行管理任务的特权。还具有数据库的完整数据访问权限。

d. LOAD:拥有对指定数据库运行加载实用工具的特权。

其中,前三个权限是实例级别的,后两个权限是数据库级别的。以下是一些示例: grant dbadm on database to user john; grant load on database to group dbagrp; revoke load on database from group dbagrp;

请注意,具有 LOAD 权限的用户也需要表上的 INSERT 特权,之后才能加载数据。 8. 设置特权

特权给予用户通过特定方式访问数据库对象的权力。不同的数据库对象特权特性不同,这里不再详细叙述。

(1). 授予显式特权

授予特权 with grant option 允许授权 ID 将特定特权扩展给他人。该选项仅对包、例程、模式、表、表空间和视图可用。注意,尽管特权的授予是可扩展的,但撤销特权并非如此。若通过 with grant option 获得了特权,用户不能撤销他人的特权。例如:

grant select, update, delete on table employee to user john with grant option 说明,该语句允许 john 在表 employee 上执行 select、update 或 delete 操作,并可将这些特权授予他人。

(2). 授予隐式及间接特权 以下一些场景足以说明:

a. 被授予 DBADM 权限的用户还被隐式地授予 BINDADD、CONNECT、CREATETAB、CREATE_NOT_FENCED 和 IMPLICIT_SCHEMA 权限。

b. 当用户创建数据库时:

DBADM 权限将被授予数据库创建者。

CONNECT、CREATETAB、BINDADD 和 IMPLICIT_SCHEMA 特权将被授予 PUBLIC。 USERSPACE1 表空间上的 USE OF TABLESPACE 特权将被授予 PUBLIC。 各成功绑定实用工具上的 BIND 和 EXECUTE 特权将被授予 PUBLIC。

SYSFUN 模式中所有函数的 EXECUTE 特权 with grant option 将被授予 PUBLIC。 c. 创建表、视图、索引、模式或包的用户将自动获得他/她所创建的数据库对象上的 CONTROL 特权。

d. 当用户执行一个包含静态 SQL 语句的包时,语句中所引用的数据库对象的显式特权是不需要的。用户仅需要包上的 EXECUTE 特权来执行语句。但这并不表示该用户有权直接访问底层数据库对象。

9. 查看死锁明细

db2 get snapshot for locks on yourdatdabasename 用df -k命令看看是否有些文件系统没有空间.

10. bind命令:

将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind (1) db2 bind .bnd (2) /btp/bin/bndall /btp/bnd

/btp/bin/bndall /btp/tran/bnd

11. 数据库优化命令:

reorg、runstats

当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete掉的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期运行reorg、runstats命令,清除已delete的数据,优化数据结构。

db2 reorg table <表名>

db2 runstats on table <表名> with distribution and indexes all

因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall,可在当天业务结束后,运行runsall,对数据库进行优化。 12. 返回实例的正常快照信息

get health snapshot for dbm(仅适用于 V8)。 13. 返回数据库 <数据库名> 的所有正常快照

14. 15. 16. 17. 18. 19. 20. 21. 22.

get health snapshot for all on <数据库名>(仅适用于 V8)。 返回会话监控开关的状态 get monitor switches

设置会话监控开关的状态

update monitor switches using 复位性能监控程序值 reset monitor all

返回实例级别的性能信息 get snapshot for dbm

在数据库级别返回所有性能信息 get snapshot for all on <数据库名> 返回动态 SQL 高速缓存的内容

get snapshot for dynamic sql on <数据库名> 收集表 的统计信息。

runstats on table . 表名必须是用 全限定的 确定是否需要对表进行重组

reorgchk on table all 这对于对所有表自动执行 runstats 很有用。 对表进行重组

reorg table 通过重构行来消除“碎片”数据并压缩信息,对表进行重组。

七、 DB2的日常维护

(一) DB2日常维护日操作 1. 检查管理服务器是否启动

用ps命令查看是否有dasusr1后台进程 #ps -ef | dasusr1

请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器: 以管理服务器用户(UNIX默认是DASUSR1)登录 发出db2admin start命令

如果是HA环境,则要保证在脚本中正确配置了启动命令 2. 检查DB2实例是否已经启动

用ps命令查看是否有db2sysc后台进程 #ps -ef | db2sysc

也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)

3. 查看表空间状态是否正常

以db2实例所有者登录

#db2 list tablespaces show detail //在单分区上查看表空间的状态,正常返回0x0000 # db2_all list tablespaces show detail //在所有分区上查看表空间的状态

可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:

db2tbst 可以查看编号所代表的状态

db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是LIST TABLESPACES命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000) 4. 查看表的状态

查询系统目录视图以获得关于数据库的有用信息。例如,下面的语句使用NOT LIKE 断言,返回在 SYSCAT.TABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))

#db2 select tabname, colcount, status FROM syscat.tables HERE tabschema NOT LIKE 'SYS%' ORDER BY tabname

也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:

#db2 load query table test1 5. 查看磁盘空间

查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志

#df -k

查看SMS表空间对应的容器目录空间是否满了 #df -k

查看DMS表空间中是否还有可用页

#db2 list tablespaces show detail //在单分区上查看表空间的是否还有可用页 # db2_all list tablespaces show detail //在所有分区上查看表空间是否还有可用页 6. 检查存储管理软件是否正常

请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。 7. 检查数据库备份是否正常

请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令

# db2 list history backup all for 数据库名 8. 检查归档日志是否正确归档了

请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。

查看活动目录里的日志文件: #ls -l

9. 查看缓冲池的命中率

# db2 get snapshot for bufferpools on 数据库名

查看缓冲池的命中率,看其是否低于95%(命中率越高越好) 10. 查看当前运行最频繁的SQL,其命中率是否正常

# db2 get snapshot for bufferpools on 数据库名 > log.txt

用grep命令查看\执行次数最频繁的语句,看其命中率是否正常。比如:

grep -n \ 11. 查看当前连接的应用程序,有没有非法连接

#db2 list applications show detail

看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用FORCE APPLICATIONS (应用程序句柄)停下来。 12. 检查有没有死锁

# db2 get snapshot for all(locks) on 数据库名 > log.txt 用grep命令查看输出的文件中是否有死锁的记录,比如: grep -n \ 13. 对表和索引进行runstats

#db2 runstats on table 表名 and index all

对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。 14. 检查表是否需要重组

使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:

REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]

UPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表 CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表 TABLE table_name : 对单个表进行分析 TABLE ALL: 对数据库所有的表进行分析 TABLE SYSTEM: 对系统表进行分析

TABLE USER : 对当前用户模式下的所有表进行分析 #db2 reorgchk update statistics on table all 15. 对需要重组的表进行重组

#db2 reorg table 表名 //通过重构行来消除“碎片”数据 #db2 reorg indexes all for table 表名 //只重组索引 比如:

reorg table db2inst1.org index by_id

将根据索引by_id,如果不加INDEX选项将重组表和所有的索引 reorg table db2inst1.org index by_id use tempspace1

使用指定的临时表空间重组表

表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。

(二) DB2日常维护月操作 1. 查看DB2日志

请至少每月查看一次db2diag.log文件,看其中是否有异常。 2. 检查备份和日志是否都保存好了

通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:

# db2 list history backup all for 数据库名 (三) DB2日常维护季度操作

1. 通过快照监控器,查看系统性能如何

通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:


db2的操作命令使用汇总(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:青春期的生理和心理健康讲座课件课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: