db2pd和db2support_sql1478w 01626-程序员宅基地

技术标签: aix  DB2  db2  ibm  存储  数据库  sql  

C:\IBM\SQLLIB\BIN>db2 get instance
C:\IBM\SQLLIB\BIN>db2 get dbm cfg
C:\IBM\SQLLIB\BIN>db2 connect to sample
C:\IBM\SQLLIB\BIN>db2 "select bpname,bufferpoolid,npages,pagesize from syscat.bufferpools"
C:\IBM\SQLLIB\BIN>db2 get db cfg for sample |grep -i "database_memory"
C:\IBM\SQLLIB\BIN>db2mtrk -i -p -v -d
db2lc 许可证中心
C:\Users\jamin>db2pd -dbptnmem //反映实例消耗的内存
C:\Users\jamin>db2 get dbm cfg |grep -i "instance_memory"
C:\Users\jamin>db2pd -memset
C:\Users\jamin>db2pd -mempool
C:\Users\jamin>db2pd -memsets -db sample //使用memsets比较模糊,使用mempool比较详细
C:\Users\jamin>db2pd -db sample -appl  //当前连接和内部链接
C:\Users\jamin>db2pd -edus //最后两列是时间
C:\Users\jamin>db2pd -osinfo
C:\Users\jamin>db2pd -db sample -bufferpool
C:\Users\jamin>db2pd -db sample -lock
C:\Users\jamin>db2pd -db sample -agent
db2top -d sample -f collect.file -C -m 480 -i 15

15秒一次的频率运行480分钟后收集一次快照

AIX环境:DB2+AIX5必须改
vmo -p -o maxperm%=90 -o maxclient%=90 -o minperm%=3 -o lru_file_repage=0
maxperm限制系统使用最大文件系统缓存,如果系统中文件系统的缓存占用的大小大于物理内存大小的百分比,那么系统会牺牲文件系统缓存来满足计算内存,默认AIX5在80%,AIX6在90%

但数据可以连接的时候
db2support . -d sample -c -g -s

不能连接的时候
db2support . -c -g -s

C:\Users\jamin>db2fodc -perf full -db sample

新的监视实用程序现包含在 V9.5 FP2 中。 db2top  监视实用程序可快速和有效地监视基于 Linux 和 UNIX 的平台上复杂 DB2 环境。此实用程序也随 V8.1 FP17 提供。

db2greg -dump|more

用 db2greg 显示和改变全局注册表(UNIX)

全局注册表只存在于UNIX 和 Linux 平台上:
  • 对于 root 安装,全局注册表文件为 /var/db2/global.reg(HP-UX 上为 /var/opt/db2/global.reg)。
  • 对于非 root 安装,全局注册表文件为 $HOME/sqllib/global.reg,其中 $HOME 是非 root 用户的主目录。
全局注册表由以下三种不同记录类型组成:
  • “服务”:服务记录包含产品级别的信息,如版本和安装路径。
  • “实例”:实例记录包含实例级别的信息,如实例名、实例路径、版本和“引导时启 动”标志。
  • “变量”:变量记录包含变量级别的信息,如变量名、变量值和注释。

可使用db2greg 工具查看全局注册表。此工具位于 sqllib/bin 和 bin 下的 install 目录中(以供作为 root 用户登录时使用)。

可使用db2greg 工具编辑全局注册表。在 root 安装中编辑全局注册表需要 root 权限。

ps -elf | grep db2inst1

svmon -G


建立实例后修改

C:\IBM\SQLLIB>db2 update dbm cfg using DFT_MON_BUFPOOL on DFT_MON_LOCK on DFT_MON_SORT on DFT_MON_STMT on DFT_MON_TABLE on DFT_MON_UOW on

DB20000I  UPDATE DATABASE MANAGER CONFIGURATION 命令成功完成。

C:\IBM\SQLLIB>db2 get dbm cfg |grep -i dft_mon

   ▒▒▒▒▒▒                              (DFT_MON_BUFPOOL) = ON

   ▒▒▒▒                                   (DFT_MON_LOCK) = ON

   ▒▒▒▒                                   (DFT_MON_SORT) = ON

   ▒▒▒▒                                   (DFT_MON_STMT) = ON

   ▒▒                                    (DFT_MON_TABLE) = ON

   ʱ▒▒▒▒▒▒                          (DFT_MON_TIMESTAMP) = ON

   ▒▒▒▒▒▒Ԫ                                (DFT_MON_UOW) = ON



通过以上的分析,我们知道IBMDEFAULTBP设置的太大了(1300000*4K),连接数据库时导致系统宕机。所以我们下面设法将IBMDEFAULTBP改小。

操作步骤:

db2set DB2_OVERRIDE_BPF=10000
#使IBMDEFAULTBP使用这个值

db2 terminate

db2stop

db2start

db2 connect to db
#连上db

db2 alter bufferpool ibmdefaultbp numblockpages 0
#原来的块SIZE太大,我们这里禁用它

db2 force applications all

db2 connect to db

db2 alter bufferpool ibmdefaultbp immediate size 50000
#将SIZE改小

db2set DB2_OVERRIDE_BPF= #设置为空,还原回去

db2 terminate

db2 force applications all

db2stop

db2start

多个数据库缓冲池的管理

尽管每个数据库至少需要一个缓冲池,但可以为具有多个页大小的表空间的单个数据库创建几个缓冲池,每个缓冲池具有不同的大小或具有不同的页大小。每个缓冲池具有最小大小,这取决于平台。可以使用 ALTER BUFFERPOOL 命令来调整缓冲池大小。

新数据库具有称为 IBMDEFAULTBP 的缺省缓冲池,它的总大小是由平台确定的且缺省页大小基于创建数据库时指定的页大小。缺省页大小是作为 pagesize 参考数据库配置参数存储的。当创建缺省页大小的表空间且不给它分配特定缓冲池时,将给该表空间分配缺省缓冲池。可以调整缺省缓冲池调整的大小以及更改其属性,但不能将其删除。

缓冲池的页大小

创建或迁移数据库之后,可以创建其他缓冲池。可以创建使用 8 KB 页大小作为缺省值的数据库并且将用缺省页大小(在本例中为 8 KB 页大小)创建缺省缓冲池。或者,您可以创建使用 8 KB 页大小的缓冲池以及一个或多个具有相同页大小的表空间。此方法不要求您在创建数据库时更改 4 KB 缺省页大小。不能将表空间指定给使用另一种页大小的缓冲池。

注:  如果创建页大小大于 4 KB(如 8 KB、16 KB 或 32 KB)的表空间,需要给它分配使用相同页大小的缓冲池。如果此缓冲池当前不活动,DB2 尝试临时将该表空间指定给另一个使用相同页大小的活动缓冲池,或指定给第一次将客户机连接至数据库时 DB2 创建的某一缺省系统缓冲池。当再次激活该数据库且原来指定的缓冲池活动时,DB2 会将该表空间分配给该缓冲池。

使用 CREATE BUFFERPOOL 语句创建缓冲池时,可以指定特定缓冲池大小。如果未指定大小,那么它将设置为 AUTOMATIC 并由 DB2 管理。稍后要更改缓冲池的大小,使用 ALTER BUFFERPOOL 语句。

在一个分区数据库环境中,一个数据库的每个缓冲池在所有数据库分区上有相同的缺省定义,除非在 CREATE BUFFERPOOL 语句中另外指定了它,或 ALTER BUFFERPOOL 语句为特定数据库分区更改了缓冲池大小。

大缓冲池的优点

大缓冲池提供下列优点:
  • 它们使频繁请求的数据页能够保存在缓冲池中,这样可更快地访问。更少的 I/O 操作可以减少 I/O 争用,从而可提供更短的响应时间并减少 I/O 操作所需的处理器资源。
  • 它们提供在相同的响应时间内到达更高的事务处理速率的机会。
  • 它们防止频繁使用的磁盘存储设备(如目录表)和频繁引用的用户表和索引的 I/O 争用。由于包含临时表空间的磁盘存储设备上的 I/O 争用减少,查询所需的排序也从中受益。

许多缓冲池的优点

如果下列其中任何一个条件适用于您的系统,应当只使用单个缓冲池:
  • 总计缓冲空间小于 10000 个 4 KB 页。
  • 找不到具备该应用程序知识来执行专门调试的人。
  • 您在一个测试系统上工作。
在所有其他情况下,由于下列原因而考虑使用多个缓冲池:
  • 可以把临时表空间分配给单个缓冲池中,以便为需要临时存储器的查询尤其是执行大量排序的查询提供更佳性能。
  • 如果数据必须由很多小的更新事务应用程序反复地快速访问,考虑将包含该数据的表空间指定给单独的缓冲池。如果此缓冲池的大小定得合适,将有更多的机会找到它的页,以利于缩短响应时间和降低事务成本。
  • 您可以将数据隔离到不同的缓冲池中,以利于特定的应用程序、数据和索引。例如,您可能要将频繁更新的表和索引置于一个单独的缓冲池中,与那些虽频繁查询但不频繁更新的表和索引分开。此更改将减少对第一组表的频繁更新对第二组表的频繁查询具有的影响。
  • 对于很少使用的应用程序所访问的数据,可使用较小的缓冲池,尤其对于需要对一个很大的表非常随机地进行访问的应用程序。在 这种情况下,不需要将数据保存在缓冲池中的时间超过单个查询的保存时间。最好为此数据保留一个小缓冲池,而释放多余的内存用于其他用途,如用于其他缓冲 池。
  • 当将不同的活动和数据隔离到不同的缓冲池之后,可从统计信息和记帐跟踪获得一个良好的、相对成本较低的性能诊断数据。

启动时缓冲池内存分配

当使用 CREATE BUFFERPOOL 命令来创建缓冲池或使用 ALTER BUFFERPOOL 语句来变更缓冲池时,所有缓冲池需要的全部内存必须可供数据库管理器使用,以便在启动该数据库时可分配所有缓冲池。如果在数据库管理器联机时创建或修改缓 冲池,那么附加内存应在数据库全局内存中可用。如果在创建新缓冲池或增大现有缓冲池的大小时指定 DEFERRED 关键字,但所需内存不可用,那么数据库管理器在下次激活数据库时进行更改。

如果在数据库启动时此内存不可用,那么数据库管理器将仅使用最小大小为 16 页的系统缓冲池(每个页大小对应一个系统缓冲池)启动,并返回 SQL1478W(SQLSTATE01626)警告。数据库会继续保持在此运作状态,直到更改其配置且数据库可以完全重新启动为止。性能可能不是最佳 的。数据库管理器仅使用最小大小值启动来允许您连接至数据库,以便可以重新配置缓冲池大小或执行其他关键任务。只要执行这些任务,就重新启动数据库。不要 在这种状态下超长时间运行数据库。

为了避免仅使用系统缓冲池启动数据库,可以使用 DB2_OVERRIDE_BPF 注册表变量来调整所需的内存,以便它与可用内存相符。


Tip:如何快速定位问题

  如果系统的CPU利用很高,IO很少,那么数据库的排序较多

  如果系统的IO繁忙,CPU很多是wait,那么说明数据库有过多的IO

  如果系统CPU,IO都很空闲,那么说明可以是有锁的问题

  如果系统IO,CPU都非常忙,说明有执行代价非常高的sql在执行

  数据库一般有三类的性能问题,一是CPU占用过多,二是IO过于繁忙,三是有锁等待。

  1.快速找到执行成本较高的sql

  首先要打开监视器的开关

  db2 update monitor switches using bufferpool on lock on sort on statement on table on uow on

  在系统最繁忙的时候,运行

  db2 get snapshot for all applications > app.out

  然后在该文件中查找处于Executing状态的应用,找到执行的对应的sql语句。 网页教学网

  如果用这种方法找不到,可以收集sql的快照

  db2 get snapshot for dynamic sql on > sql.out

  这个快照记录了动态语句的快照信息,可以根据

  Total execution time (sec.ms) = 0.000000

  Total user cpu time (sec.ms) = 0.000000

  Total system cpu time (sec.ms) = 0.000000

  这些信息来找到最耗时的语句。

  2.如何优化sql语句

  DB2提供了很好的工具来做sql语句优化。首先要对找到的sql语句进行分析,看是否是该语句引起了性能问题。我们可以使用db2expln来查看sql语句的访问计划和执行成本。

  首先将找到的sql语句写到一个文本文件中sql.in,以“;”结尾,然后运行

  db2expln –d -f -z “;” –g –o sql.exp

  查看 sql.exp可以看到这个sql语句的执行成本。

  如果确认该语句有问题,可以使用db2advis来通过建索引的方法来优化该语句

  db2advis –d -i sql.in

  如果通过创建索引无法优化该语句,一般只能从业务角度优化。

  3.如果发生锁的问题如何处理

  发生锁的问题,一般有两种情况,一是锁等待,二是死锁。首先检查数据库配置参数locktimeout,该参数一定不能设为-1,因为会引起某些应用无限期的等待。

  可以通过快照来确定数据库发生的问题是哪一种。

  db2 get snapshot for db on

  查看输出中的下列内容:

  Deadlocks detected = 0

  Lock Timeouts = 0

  如果发生了死锁,可以通过创建死锁监视器来分析产生死锁的原因,命令如下: Webjx.Com

  mkdir /tmp/dlmon

  db2 connect to

  db2 create event monitor dlmon for deadlocks with detail write to file ‘/tmp/dlmon’ replace

  db2 set event monitor dlmon state 1

  …..等有死锁发生后

  db2 set event monitor dlmon state 0 网页教学网

  db2evmon –d /tmp/dlmon >/tmp/dlmon.out

  分析/tmp/dlmon.out文件就可以找到造成死锁的信息,结合应用就可以找到造成死锁的原因了。

  四、应用开发与数据库有关的问题

  1.与64位实例数据库问题

  目前随着硬件的升级,64位实例数据库开始广泛使用。 Webjx.Com

  有些人担心数据库使用64位以后,对程序的运行很大,因此不愿意使用64位的数据库,实际上64位数据库对客户的应用影响非常小,所以建议如果资源充足,尽量使用64位实例的数据库。

  可以通过创建一个32位实例的客户端,然后通过客户端来使用64位实例数据库的方法来将64位的问题完全忽略。

  如果使用java 存储过程或自定义函数,64位实例数据库需要安装64位的JDK。

  2.从DB2 V7移植程序到V8有关问题

  sqlc的应用程序中,数据类型long在V8中需要改成sqlint32,否则编译无法通过。如果确定long类型的数据长度与平台无关,也可以在编译时,指定LONGERROR NO选项。

  在编译sqlc程序时可能会遇到sql20230的错误,原因是在V8中不允许在call中使用主机变量,将执行语句改成动态sql后,可以解决该问题。

  在执行存储过程时,遇到sql0433的错误,原因同上,将call 存储过程的语句改成动态调用即可。

  3.Java程序问题

  编写良好的程序是避免产生问题的关键。对JAVA程序有如下建议,一定要用数据库的连接池;在执行大量的sql语句时使用prepared statement。 



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jaminwm/article/details/7332333

智能推荐

bat 切换网络适配器_支持多网卡,多模式,多系统的IP切换的批处理-程序员宅基地

文章浏览阅读714次。@echo off&setlocal enabledelayedexpansiontitle make by zcHacker QQ: 36868508color 1fmode con: cols=78 lines=30for /f "tokens=* delims= " %%f in ('ver') do echo 本机系统为:%%fecho 系统内核为:%os%echo.echo.☆请..._batq切换网卡

odoo上传文件附件_odoo form发送附件-程序员宅基地

文章浏览阅读3.4k次。在应用中搜索‘Attachments List and Document Indexation’,安装后在form视图中就出现了附件按钮_odoo form发送附件

MATLAB r2021b环境下的基于非下采样小波包分析的轴承故障诊断-程序员宅基地

文章浏览阅读235次,点赞5次,收藏3次。代码运行环境为MATLAB r2021b,非下采样小波包变换执行信号的等带宽精细滤波,而不是离散小波变换中的较粗糙的倍频程滤,而且很好的缓解了小波包变换中的时间分辨率损失,这使得非下采样小波包在许多应用中比小波包或离散小波变换表现的更好。从结果中可以看出,NSWT在保留信号细节的同时,具有更好的频率分辨率,能够更清晰地显示信号的频谱特性。以150 和 200 Hz 的两个间歇正弦波为例,看一下非下采样小波包的时频谱图和离散小波变换的时频谱图,效果显而易见。哥廷根数学学派2023。

IDEA 报Error java:找不到符号 符号: 变量 log 位置_java: 找不到符号 符号: 变量 log-程序员宅基地

文章浏览阅读5.1k次,点赞8次,收藏2次。在网上看了很多种解决办法,如下:在pom文件中添加lombok的依赖。在IDEA中安装lombok的插件:在IDEA中点击 File -> Settings -> Plugins,输入Lombok,选择Lombok的Installed进行安装。在IDEA中勾选Enable Annotation Processors:File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation._java: 找不到符号 符号: 变量 log

世界围棋人机大战、顶峰对决第二战:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,AlphaGo再次胜出!...-程序员宅基地

文章浏览阅读189次。感觉在哔哩哔哩(bilibili)上看比赛直播比较好,一直可以看到比赛的直播画面,还能听到英文解说和中文主持人的解说。YouTube上是不错,但是一方面爬梯子比较卡,另一方面只能听到英文解说。韩国著名围棋九段棋手李世石与谷歌人工智能“阿尔法围棋”(AlphaGo)的5盘对决,将于3月9日、10日、12日、13日和15日在首尔举行。比赛将采用贴7.5目的中国规则(比赛结束时,先走棋的棋手贴..._围棋游戏九段

MQTT协议简介及消息总线EMQX与客户端Paho快速上手_paho mqtt-程序员宅基地

文章浏览阅读5k次。1. MQTT简介MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是基于“订阅/发布”模式的轻量级通信协议,该协议基于TCP/IP,能以极低的带宽为海量(百万级)跨域设备提供可靠的消息服务,因此在物联网、小型移动终端、边缘计算方面有广泛应用。所谓可靠的消息传输,体现为可配置消息的服务质量(QoS),有三种服务质量可选:至多一次:消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。应用场景如环境传感器的数据采集,丢失一次记录无所谓,因_paho mqtt

随便推点

python数据分析与可视化-程序员宅基地

文章浏览阅读2.1k次,点赞22次,收藏69次。Python数据分析主要包括数据清洗、数据探索和数据可视化三个部分。数据清洗是数据分析的重要环节,主要是对数据进行预处理,包括缺失值处理、异常值处理、数据类型转换等。数据探索则是通过对数据进行初步分析,了解数据的分布和特征,为后续的数据分析提供基础。数据可视化则是将数据以图形化的方式呈现,帮助人们更好地理解和分析数据。_python数据分析与可视化

Linux操作系统实验:生产者和消费者问题_编写经典的“生产者-消费者”问题的实验,进一步熟悉linux中的多线程编程,并且掌握-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏43次。“生产者消费者”问题是一个著名的同时性编程问题的集合。通过编写经典的“生产者消费者”问题的实验,读者可以进一步熟悉 Linux 中多线程编程,并且掌握用信号量处理线程间的同步互斥问题。_编写经典的“生产者-消费者”问题的实验,进一步熟悉linux中的多线程编程,并且掌握

Java并发编程实战之互斥锁_java互斥锁也有必要学吗-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏15次。一谈到互斥,我们很自然就会想到了锁。首先我们把一段需要互斥执行的代码称为临界区。线程在进入临界区之前,首先尝试加锁 `lock()`,如果成功,则进入临界区,此时我们称这个线程持有锁;否则呢就等待,直到持有锁的线程解锁;持有锁的线程执行完临界区的代码后,执行解锁 `unlock()`。_java互斥锁也有必要学吗

【2023地理设计组一等奖】多模态地理空间数据支持下的城市洪涝灾害韧性评价_韧性基线模型(bric)中的韧性维度的是()。-程序员宅基地

文章浏览阅读125次。表5计算了各因子的权重系数,根据结果,我们可以看出,兴趣点密度和人口密度是洪灾恢复过程中最显著的影响因子,权重系数普遍高于0.125,同样GDP因子作为影响城市发展的极其重要的因子,在洪灾恢复方面上也具有较高的影响力。通常情况下,洪灾恢复率(FRR)的计算是基于洪水灾害造成的损失值和洪水后恢复的指标值。(2)在洪水信息提取方面,本作品采用了U-Net语义分割网络,通过训练大量样本,学习Sentinel-1遥感影像中的洪水特征,从而能够实现高效与高精度的识别与提取,为后续的研究与分析提供可靠的数据基础。_韧性基线模型(bric)中的韧性维度的是()。

数论——无关(relationship)(容斥原理)_设 k 是正整数,集合 a 至少有两个元素,且 acn *.如果对于 a 中的任意两个不同-程序员宅基地

文章浏览阅读234次。题目链接数论——无关(relationship)(容斥原理)题目描述若一个集合 A 内所有的元素都不是正整数 N 的因数,则称 N 与集合 A 无关。给出一个含有 k 个元素的集合 A = {a1,a2,a3,…,ak},求区间 [L,R] 内与 A 无关的正整数的个数。保证 A 内的元素都是素数。输入描述输入数据共两行:第一行三个正整数 L,R,k,意义如“题目描述”。第二行k个正整数,描述集合 A,保证 k 个正整数两两不相同。输出描述输出数据共一行:第一行一个正整数表示区间 [_设 k 是正整数,集合 a 至少有两个元素,且 acn *.如果对于 a 中的任意两个不同

Go 语言通过 SSH 远程登录服务器执行命令和传输文件_go sshclient.newsession-程序员宅基地

文章浏览阅读792次。Go 语言通过 SSH 远程登录服务器执行命令和传输文件_go sshclient.newsession