DB2
匿_名_用_户
这个作者很懒,什么都没留下…
展开
-
DB2 联邦(FEDERATION): 创建nickname报错时SQL30080N A communication error “-5“ occurred
DB2 联邦(FEDERATION): 创建nickname报错时SQL30080N A communication error "-5" occurred 原创 2022-11-24 15:38:42 · 1034 阅读 · 1 评论 -
DB2不记日志的 LOB 字段与 BLOCKNONLOGGED 参数、HADR同步的关系
结论:1. BLOCKNONLOGGED 开启的情况下,无法创建含有 NOT LOGGED LOB 字段的表2. 对于已经创建完成的表,开启 BLOCKNONLOGGED 阻止不了 NOT LOGGED LOB 字段成功写入, 无论LOB的长度是否超过 INLINE LENGTH 。3. 长度超过 INLINE LENGTH 的 LOB 字段,无法同步至HADR备机(备机会写入0)。4. 长度不超过 INLINE LENGTH 的 LOB 字段,可以正常同步至HADR备机。 结论1测试:db2原创 2022-06-13 15:11:01 · 1039 阅读 · 2 评论 -
DB2 create database报错SQL1036C,Could not init GLFH lock file
DB2 create database报错SQL1036C,db2diag.log中报错:Could not init GLFH lock file原创 2022-06-09 15:56:25 · 760 阅读 · 0 评论 -
AIX环境查看db2使用的内存
db2pd -dbptnmem查看到的内存使用情况可能和实际占用的内容不一致。此时可以使用smon命令查看,如下:svmon -P |grep Pid |head -n 1; svmon -P|grep db2sysc查看inuse这一列,单位是4k其中-P表示打印进程的报告。---...原创 2022-04-22 17:06:25 · 799 阅读 · 1 评论 -
DB2分区表, DETACH之后如何查看是否有未做完的异步索引清理
重现步骤以及方法如下:重现步骤:db2 "drop table t1"db2 "create table t1 (col1 int, col2 int ) partition by range (col2) (part p1 starting 1 ending 100000, part p2 starting 100001 ending 200000, part p3 starting 200001 ending 300000)"db2 "create unique index t1_idx1原创 2022-04-11 14:26:02 · 1107 阅读 · 1 评论 -
db2rbind/rebind命令报错SQL2453N
问题现象:升级完数据库之后,db2rbind命令的日志中有报错SQL2453N,直接使用db2 rebind package xxx也报类似的错误。原因:package对应的对象有失效,需要revalidate解决:CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(NULL, NULL, NULL)...原创 2022-02-25 17:03:51 · 1124 阅读 · 0 评论 -
DB2: 分区表Detach出来的表查询记录数为0
问题现象:DB2中有一个分区表,将分区表中的一个分区detach出来成为一个新表,查询该新表发现数据量为0,后来发现原因是原分区表上有column access control,因此detach出来的表默认是有row access control的。这也说明一个坑:就是查询出来的某张表记录数为0,不代表这个表中没有数据,还有另外一种可能就是它开启了row access control重现步骤:$ db2 "connect to tstdb" $ db2 "drop table t1"原创 2021-03-03 21:17:36 · 1090 阅读 · 3 评论 -
Db2: db2look导出的表定义无法用于创建表-SQL1860N Reason code = “5“
问题描述:使用db2look导出表定义,然后再使用该定义创建表报错 SQL1860N RC=5,导出的表定义如下:db2 "CREATE TABLE mqs20201208 ( STORETIME DATE NOT NULL , IMAGEOBJECT BLOB(10485760) LOGGED NOT COMPACT NOT NULL , UUID VARCHAR(36) )...原创 2020-12-16 21:36:48 · 625 阅读 · 3 评论 -
DB2 Purescale 离线备份数据库报错 SQL2048N Reason Code 5, “DMS.TABLESPACE.DATA“
问题:Db2 10.5.0.10, purescale 环境,离线备份报错 SQL2048N RC=5,对象是"DMS.TABLESPACE.DATA",而且不是一开始就报错,而是备到一半的时候才报错,备份中断。$ db2 backup db sample to /dev/nullSQL2048N An error occuried while accessing object "DMS.TABLESPACE.DATA"Reason code : "5"同一个实例下面另外一套库没有问题。.原创 2020-12-16 21:33:06 · 1858 阅读 · 0 评论 -
使用dbvisualizer等工具连接DB2报错 -4222, 必须属性是未知主机
问题描述:使用工具,比如dbvisualizer、aqua data studio等,连接DB2数据库时报错如下:An error occurred whild establishing the connection:Type: com.ibm.db2.jcc.b.qm Error Code: -4222 SQL State: 08001Message:[jcc][t4][10380][11951][3.50.152] 必须属性 “HOST01” 是未知主机。 ERRORCODE=-4.原创 2020-11-05 09:01:31 · 1954 阅读 · 0 评论 -
db2 如何回收名子为‘=‘的function的execute权限?
db2中有些函数名子比较奇观,是 '=', '<', '>' 等。这些函数由于同名的函数不止一个,可能会导致权限回收的时候产生一些问题,比如:db2tst@NODE01:~> db2 "select varchar(FUNCSCHEMA,10) as FUNCSCHEMA, varchar(FUNCNAME,10) as FUNCNAME, varchar(SPECIFICNAME,30) as SPECIFICNAME from syscat.functions where func原创 2020-10-18 16:05:27 · 1290 阅读 · 6 评论 -
DB2: 通过SQL语句查询操作系统信息/实例信息
DB2可以通过SQL语句查询操作系统信息,比如操作系统类型、主机名、操作系统版本、内存大小等。也可以通过SQL查询实例名、DB2版本等信息。方法主要是通过SYSIBMADM.ENV_SYS_INFO ,以及SYSIBMADM.ENV_INST_INFO等视图1.SYSIBMADM.ENV_SYS_INFO可以查询以下操作系统信息(表格源自DB2信息中心):Column name Data type Description OS_NAME VARCHAR(256) ..原创 2020-09-16 15:37:23 · 1714 阅读 · 0 评论 -
DB2: 查询表的大小的SQL(支持分区表、DPF环境)
作为DBA,可能需要经常查看数据库中表的大小,以下讨论如何使用SQL快速查看。所谓快速,是指不一定准确,因为用的是mon_get_table 表函数,如果想查看真实准确的大小,需要使用ADMIN_GET_TAB_INFO,不过这个耗时比较长,和表大小本身有关系。查看单个表大小查看表T3的大小, 其中member表示DPF的分区号,DATA_PARTITION_ID表示分区表的表分区号。DATA_SZ_MB表示DATA页总大小,INDEX_SZ_MB表示索引页总大小,LONG_LOB_XML_.原创 2020-08-17 21:02:55 · 3652 阅读 · 2 评论 -
Linux/ext3:DB2缩容表空间导致的Latch等待现象
之前写过的一篇 Linux/ext3:DB2扩展表空间导致的Latch等待现象1那次是表空间扩容导致的SQLO_LT_SQLB_POOL_CB__readLotch latch等待,那属于正常现象。最近遇到了缩表空间也出现类似现象,后面再难以重现了,只重现过一次。 正常情况下表空间缩容是很快的(如果高水位已经降下来了)。问题的现象如下:1. 发出 "alter tablespace xx reduce max"之后,表空间状态立即变成 0x10080000,即 Move in Progres..原创 2020-07-23 12:34:12 · 691 阅读 · 0 评论 -
DB2 set current schema也能导致锁升级(lock escalation)?
最近遇到锁升级的问题,发现db2diag.log里出现set current schema也会"锁升级",印象中只有SQL语句会导致锁升级。于是模拟了一下,模拟的重点在于如何把locklist用满,并且保持满的状态。重现过程:重现过程比较简单,将锁内存调小,然session 1往一张大表里不提的方式插入1条数据,锁住表。Session 2以RS隔离级别查询这个大表,这时候session 2会试图在每一条记录上都加锁,讯速占满locklist,并尝试锁升级(由于锁等,一会HANG)。Sessio原创 2020-07-22 21:47:57 · 1650 阅读 · 0 评论 -
db2 load因为实例用户对load文件无读取权限报错SQL2061N案例分享
问题现象db2用户appuser(非实例用户)在做load操作的时候失败了,报错SQL2061N/SQL1652N。数据文件是appuser生成的,appuser对该文件有读写权限,怎么还会失败呢? 经过测试发现,是因为DB2实例用户对该文件无读取权限。问题重现db2用户是appuser,实例用户是db2inst1,数据库名sample使用appuser生成一个数据文件t1.del,由于是umask027,其他用户无读取权限。 再做load时,报错了。node01:/home/appus原创 2020-07-20 17:07:09 · 4250 阅读 · 3 评论 -
db2中row_number()简介:使用row_number()限制结果集中的数据量/分页/去重
db2中有个row_number()函数,是很多开发的最爱(手动狗头),今天简单学习一下。row_number()函数有什么用?它产生一个伪列(pseudocolumn),直意就是行号,即结果集中的第几行。从1开始,连续的整数。row_number()函数怎么用?常用的方法如下,其中最重要的功能是partition byrow_number() over()row_number() over(partition by xx)row_number() over(order by ..原创 2020-07-18 15:54:13 · 7885 阅读 · 0 评论 -
DB2 LOAD导致日志满的另一种原因:delete阶段占用太多日志
正常情况下,db2 load操作只占很少的日志,但目前已知道有两种情况可能会导致日志满,第一种情况是build阶段,创建索引的时候,如果数据库参数LOGINDEXBUILD开启了,那么可能会导致日志慢。今天又发现一种情况,delete阶段也会占很多日志,可能导致日志满,问题非常容易重现,把DB2日志总大小调小,然后往表里LOAD会触发主键冲突的数据,过一会就会看到在delete阶段报SQL0964Cdb2inst1@node01:~> seq 1 10000000 > t1.deldb原创 2020-07-17 00:33:23 · 2169 阅读 · 0 评论 -
DB2 DPF环境,load报错SQL3604N Reason code: “2“. sqlstate: 428A5
问题现象:DB2 DPF环境,load报错SQL3604N Reason code: "2". sqlstate: 428A5重现过程:db2inst1@node01:~> db2 "create table t1(id int, age int, heigh int) DISTRIBUTE BY HASH(id,age)"DB20000I The SQL command completed successfully.db2inst1@node01:~> db2 "cre..原创 2020-07-09 12:34:10 · 2127 阅读 · 3 评论 -
DB2表空间缩容导致监控语句SQLO_LT_SQLB_POOL_CB__readLotch等待
问题现象:最近遇到过一个DB2的问题,db2 10.5 ,文件系统为 EXT3,在对一个自动存储的表空间发出 alter tablespace reduce max命令后,表空间状态一直为 0x10080000 ,即 Move in Progress + DMS Rebalance in Progress, 会持续很长一段时间。这段期间,后台 reduce 线程会一直 holding住一个latch,名子为 SQLO_LT_SQLB_POOL_CB__readLotch, 而其他需要这个lat...原创 2020-06-17 22:55:37 · 948 阅读 · 0 评论 -
Linux/ext3:DB2扩展表空间导致的Latch等待现象1
现象:Linux环境下,如果文件系统类型为EXT3,由于不支持快速预分配,DB2表空间扩容会非常慢,在扩容器间观察到有 SQLO_LT_SQLB_POOL_CB__readLotch 和 SQLO_LT_SQLB_PTBL__pool_table_latch 等待现象,示例Database Member 0 -- Active -- Up 4 days 01:34:48 -- Date 2020-06-08-08.40.39.493862Latches:Address .原创 2020-06-08 22:15:30 · 980 阅读 · 0 评论 -
DB2 DPF环境下load query命令报错 SQL6024C Table or index T1 is not defined on node 0
问题现象:DPF环境下db2diag.log中有Error级别的报错, FUNCTION为sqluCTable::iGetTableInfoForLoadQuery问题原因:正常情况下,DPF环境,连接到任意一个节点即可对表做增删改操作,无论该节点是否有该表的定义。但load query是例外,如果应用连接到某个节点上对一张表发出了load query命令,但该表所在的表空间所在的 partition group 并未包含该节点(也就是该表在这个节点上未定义),那么load query会失败.原创 2020-05-31 17:44:13 · 1666 阅读 · 3 评论 -
Db2: db2pd apinfo 输出中为何会有两个Activity? Last reference time和Entry time为何不同?
在某次抓取的数据中,我们发现db2pd -apinfo的输出中有几个难以解释的现象:1. List of current activities中为何不止一个activity ?2. Last reference time和"Entry time"、"Local start time"都不一样,这是为什么?3. 为什么应用状态显示的是UOW-Waiting,但却有活动的activities?...原创 2020-05-06 20:10:14 · 530 阅读 · 0 评论 -
DB2 列式存储表的空间回收
如果一张表是列式存储的,比如:CREATE TABLE "DB2TST "."T0417" ( "ID" INTEGER ) IN "TBS2" ORGANIZE BY COLUMN; 那么删除完数据之后的腾出来的空间是无法被新插入的数据使用的...原创 2020-04-17 17:15:12 · 776 阅读 · 0 评论 -
DB2: SQL1585N,数据表空间都是4k页大小,为何需要8k页大小的系统临时表空间?
问题:DB2数据库中所有的表空间页大小都是4k,但SQL语句却报错:SQL1585N A temporary table could not be created because there is no available system temporary table space that has a compatible page size. SQLSTATE=54048原因分...原创 2020-03-30 14:42:54 · 2039 阅读 · 1 评论 -
Db2中xml对象的reorg
问题:Db2中带有xml字段的表如何reorg以释放xml字段占用的空间答:带有LONGLOBDATA选项的reorg,具体的命令可以参考信息中心原创 2020-03-23 19:18:01 · 173 阅读 · 0 评论 -
Db2表函数MON_GET_PKG_CACHE_STMT中INSERT_TIMESTAMP含义
问题:根据DB2信息中心的描述,MON_GET_PKG_CACHE_STMT中INSERT_TIMESTAMP含义如下The insert_timestamp monitor element stores the time when the statement or section was inserted into the cache.For dynamic sql snapshots...原创 2020-03-08 11:40:36 · 884 阅读 · 0 评论 -
DB2分区表如何区分索引是分区索引还是非分区索引
问题描述:经常有人问,我分区表里的索引到底是分区索引还是非分区索引?因为是否是分区索引涉及到detach分区的时候是否会耗费大量的时间做异步索引清理:如果是非分区索引,则异步索引清理需要大量时间。总体结论:--对于唯一索引或者主健,如果包含了分区健,则默认是分区索引;如果不包含分区健,则默认是非分区索引。--对于非唯一索引,默认都是分区索引。测试过程DB2版本为10....原创 2020-01-22 14:13:06 · 3002 阅读 · 0 评论 -
Db2 purescale 的GPFS扩容方法
需求:Db2 purescale环境,需要对GPFS文件系统扩容。操作方法:1. 添加新的裸盘,假设加了3块盘,名子为 /dev/sdc,/dev/sdf,/dev/sde2. 查看文件系统名:#root执行db2cluster -cfs -list -filesystem3. 添加#root执行db2cluster -cfs -add -filesystem ...原创 2019-12-17 10:23:39 · 567 阅读 · 0 评论 -
Db2 sequence如何确保先产生的序列号小,后产生的序列号大?
问题:Db2 sequence如何确保先产生的序列号小,后产生的序列号大? 这里的先后是指时间先后。答:需要在创建Sequence的时候指定order选项。 当然,只指定order选项只有保证序列号是有顺序的,不能保证是追次增加的。ORDERorNO ORDERSpecifies whether the sequence numbers must be generated ...原创 2019-11-30 12:27:37 · 337 阅读 · 3 评论 -
DB2模拟一个状态是UOW Queued 应用
需要先参考上一篇文章https://blog.csdn.net/qingsong3333/article/details/102919671方法参考如下:db2 attach to <实例名>db2 update dbm cfg using WLM_DISPATCHER yesdb2 detachdb2 connect to <数据库名>db2 "cre...原创 2019-11-08 17:21:54 · 251 阅读 · 0 评论 -
DB2如何限制某个用户使用的CPU?
问题描述:如何在DB2服务器上限制某个用户使用的CPU?方法参考如下:db2 attach to <实例名>db2 update dbm cfg using WLM_DISPATCHER yesdb2 detachdb2 connect to <数据库名>db2 "create service class APPUSER_SUPERCLASS CPU LI...原创 2019-11-05 17:09:38 · 355 阅读 · 0 评论 -
Db2:在线reorg操作truncate期间可能导致表无法更新
问题现象:表在做inplace reorg allow write access时,其他应用无法更新该表,报锁超时。问题原因:1. inplace默认是allow write access的2. inplace默认是truncate table的根据信息中心,在truncate阶段不允许更新表的:TRUNCATE TABLEReclaim all extents ...原创 2019-10-21 21:16:23 · 1289 阅读 · 0 评论 -
Db2为什么syscat.tables中很多表在MON_GET_TABLE()表函数输出中都没有?
问题描述:sycat.tables输出中有很多表,在mon_get_table()的输出中都没有?原因:这个在mon_get_table()的官方介绍中有说明:Metrics are returned only for tables accessed since the database was activated.也就是说,只能返回数据库激活以来,曾经被访问 过的表。如...原创 2019-10-21 20:32:37 · 734 阅读 · 0 评论 -
Db2 catalog tcpip报错SQL1038C An I/O error occurred while accessing the node directory
问题描述:db2 catalog tcpip node报错SQL1038C An I/O error occurred while accessing the node directory. db2inst1@node01:~> db2 catalog tcpip node qingsong REMOTE 192.168.75.134 server 60000SQL1038C...原创 2019-10-12 23:28:09 · 1442 阅读 · 0 评论 -
Db2 purescale恢复报错SQL0901N,The path provided is not eligible to be used in shared data
问题描述:db2 purescale环境做restore时报错SQL0901N,并且诊断日志中显示"The path provided is not eligible to be used in shared data."db2inst1@node01:~> db2 restore db SAMPLE taken at 20191012164832SQL2539W The spe...原创 2019-10-12 23:20:49 · 657 阅读 · 0 评论 -
Db2 purescale环境db2start因为缺少TSAMP license报错:SQL1677N
环境:db2 10.5 purescale问题描述:db2start报错SQL1677Ndb2inst1@node01:~/sqllib> db2startSQL1677N DB2START or DB2STOP processing failed due to a DB2 cluster services error.原因分析与解决:db2diag.log如下,显示...原创 2019-10-12 23:13:24 · 900 阅读 · 0 评论 -
DB2中三个有关锁变量DB2_EVALUNCOMMITTED,DB2_SKIPDELETED和DB2_SKIPINSERTED的使用
本文主要解释下DB2中三个有关锁变量DB2_EVALUNCOMMITTED,DB2_SKIPDELETED和DB2_SKIPINSERTED的使用实验环境:DB2 v9.7.0.6AIX 6.1.0.0采用默认的隔离级别CSSTUDENT表的DDL与初始内容CREATE TABLE "E97Q6C "."STUDENT" ( "原创 2014-10-27 11:12:04 · 2840 阅读 · 0 评论 -
DB2中使用裸设备作为表空间容器
DB2中使用裸设备作为容器需要三个步骤:1. 创建LV。2. 绑定LV和裸设备 3.创建表空间 1. 创建lvroot@ubuntu:~# vgdisplay root@ubuntu:~# vgdisplay --- Volume group --- VG Name mainVG System ID原创 2014-10-31 17:59:07 · 4305 阅读 · 0 评论 -
DB2中编目本机当中数据库的方法
问题:同一节点上有两个实例,如果想在其中一个实例下访问另一个实例中的数据库,有两种方法:1. 使用catalog local node的方式,在其中一个实例中将另外一个实例直接编目,这种方试中,它们之间采用的通信方式是IPC(进程间通信),这种方式只能在同一物理机上进行。2. 使用catalog TCPIP node的方式,将其中一个作为客户端,另一个作为服务端, 这种方式中,它们之间采用原创 2014-11-07 10:50:31 · 4674 阅读 · 2 评论