DB2不允许访问表空间解决

合集下载

db2数据库解锁语句

db2数据库解锁语句

db2数据库解锁语句在DB2数据库管理系统中,当某个数据库对象被锁定时,其他用户或进程可能无法对该对象执行读取或写入操作。

针对这种情况,DB2提供了一些解锁语句,用于解除对特定数据库对象的锁定,以便其他用户或进程可以继续对其进行操作。

1. UNLOCK TABLEUNLOCK TABLE语句用于解锁指定表。

语法如下:```UNLOCK TABLE table_name```其中,table_name是要解锁的表的名称。

2. UNLOCK TABLESUNLOCK TABLES语句用于解锁所有当前会话中的锁定的表。

语法如下:```UNLOCK TABLES```使用这个语句时,当前会话中的所有锁定的表都将被解锁。

3. COMMITCOMMIT命令用于提交事务,并释放事务中所占用的所有资源,包括锁定的数据库对象。

语法如下:```COMMIT```使用COMMIT语句可以解除当前会话中对数据库对象的锁定,并将数据库中的变更永久保存。

4. ROLLBACKROLLBACK命令用于回滚事务,并释放事务中所占用的所有资源,包括锁定的数据库对象。

语法如下:```ROLLBACK```使用ROLLBACK命令可以撤销当前会话中对数据库对象的锁定,并将数据库回滚到最近的提交点。

5. ALTER MIT如果需要对某个表执行DDL语句(如ALTER TABLE),但由于该表被锁定而无法执行,可以使用ALTER MIT语句解锁该表并自动提交当前事务。

语法如下:```ALTER TABLE table_name ALTER COLUMN column_name SET DATA TYPE new_data_type COMMIT```其中,table_name是要解锁的表的名称,column_name是要修改的列的名称,new_data_type是要设置的新数据类型。

通过执行这个语句,可以解除对指定表的锁定,并将数据库中的变更永久保存。

db2 表空间不释放

db2 表空间不释放
db2 表空间不释放
在DB2中,表空间不释放的可能原因有以下几种情况:
1. 表空间中仍然存在活跃的事务或锁定。如果有未提交的事务或锁定仍然存在于表空间中 ,DB2将不会释放该表空间。您可以使用`db2 list applications`命令来查看当前活跃的事务 和锁定,并根据需要进行提交或取消。
2. 表空间中存在未删将 不会释放该表空间。您可以使用`db2 list tables for schema <schema_name>`命令来列出 指定模式下的所有表,并根据需要进行删除操作。
请注意,释放表空间可能会导致数据丢失或其他不可逆的影响,请谨慎操作,并备份数据 以防万一。如果您仍然遇到问题,建议您参考DB2的官方文档或联系DB2的技术支持团队获 取进一步的帮助。
db2 表空间不释放
3. 表空间被设置为不自动调整大小。如果表空间的自动调整大小选项被禁用,DB2将不会 自动释放表空间。您可以使用`db2 get db cfg for <database_name>`命令来查看表空间的 自动调整大小设置,并根据需要进行调整。
4. 表空间被设置为保留状态。如果表空间被设置为保留状态,DB2将不会释放该表空间。 您可以使用`db2 list tablespaces show detail`命令来查看表空间的状态,并根据需要进行 修改。

db2常见错误

db2常见错误

DB2 SQLSTATE 消息异常二2008年04月25日星期五 14:51类代码 40 事务回滚表 31. 类代码 40:事务回滚 SQLSTATE 值含义40001 发生了伴随自动回滚的超时或死锁。

40003 语句完整性未知。

40504 由于系统错误导致工作单元被回滚。

40506 由于 SQL 错误,当前事务已回滚。

40507 由于创建索引时发生故障,因此当前事务已回滚。

类代码 42 语法错误或访问规则违例表 32. 类代码 42:语法错误或访问规则违例 SQLSTATE 值含义42501 授权标识不具有对标识对象执行指定操作的特权。

42502 授权标识不具有执行指定操作的特权。

42504 无法从指定的权限名撤销指定的特权、安全标号或免除凭证。

42506 发生所有者授权失败。

42508 不能将指定的数据库特权授予 PUBLIC。

42509 因为 STATICRULES 选项而未授权 SQL 语句。

42511 未能检索 DATALINK 值。

42512 授权标识对受保护列没有访问权。

42514 授权标识不具有对象的所有权需要的特权。

42516 用户映射存储库中的认证失败。

42519 不允许此授权标识对受保护表执行操作。

42520 由于此授权标识没有安全标号,所以无法执行内置函数。

42521 无法将权限或特权授予指定的授权标识。

42522 此授权标识没有凭证,因此无法保护列或者对该列除去保护。

42601 字符、标记或子句无效或丢失。

42602 检测到名称中有无效字符。

42603 检测到未终止的字符串常量。

42604 检测到无效数字或字符串常量。

42605 为标量函数指定的参数的数目无效。

42606 检测到无效十六进制常数。

42607 列函数的操作数无效。

42608 在 VALUES 中使用 NULL 或 DEFAULT 是无效的。

42609 运算符或谓词的所有操作数都是参数标记。

42610 不允许参数标记。

DB2表空间已满

DB2表空间已满

解决方法但由于是双机,所以裸设备需要在hacmp中建,或者建了后两边同步一下,可以找富通和IBM解决。

DB2解决tablespace满的问题1. 连接到数据库,查看一下tablespace的使用情况db2 => list tablespaces show detailTablespaces for Current DatabaseTablespace ID = 0Name = SYSCATSPACEType = System managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 4814Useable pages = 4814Used pages = 4814Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 1Name = TEMPSPACE1Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 227Useable pages = 227Used pages = 227Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Name = USERSPACE1Type = Database managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 131072Useable pages = 131056Used pages = 12080Free pages = 118976High water mark (pages) = 12432Page size (bytes) = 4096Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-09-25-07.22.30.000000Tablespace ID = 3Name = USERSPACE2Type = Database managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 65536Useable pages = 65520Used pages = 65520Free pages = 0High water mark (pages) = 65520Page size (bytes) = 16384Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-08-11-02.52.11.000000Tablespace ID = 4Name = TMPSPACE3Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 199Used pages = 199Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 16384Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Minimum recovery time = 2005-12-15-11.09.33.000000发现USERSPACE2 Free pages为0了2. 再看一下USERSPACE2使用的containerdb2 => list tablespace containers for 3 show detailTablespace Containers for Tablespace 3Container ID = 0Name = /dev/rdatacdblv2Type = DiskTotal pages = 65536Useable pages = 65520Accessible = Yes只有一个/dev/rdatacdblv23. 查看一下系统中相关的裸设备#>cd /dev#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv24. 创建一个新的裸设备#>mklv -y'datacdblv3' -t'raw' db2vg 4rootvg是卷组的名称,可以用lsvg查,16是块的数量,要看OS的PPSIZE,相乘就是裸设备的大小5. 看一下新的的设备#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 brw-rw---- 1 root system 10, 18 10月09 19时56 datacdblv3 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv2 crw-rw---- 1 root system 10, 18 10月09 19时56 rdatacdblv36. 修改属主#>chown db2admin:db2grp1 *datacdb*7. 再看一下属主是否已经改了#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 brw-rw---- 1 db2admin db2grp1 10, 18 10月09 19时56 datacdblv3 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv2 crw-rw---- 1 db2admin db2grp1 10, 18 10月09 19时56 rdatacdblv38. 连接到数据库9. 为tablespace增加containerdb2 => alter tablespace USERSPACE2 add (device'/dev/rdatacdblv3' 32768)10. 最后确认一下是否增加成功了db2 => list tablespaces show detailTablespaces for Current DatabaseTablespace ID = 0Name = SYSCATSPACEType = System managed space Contents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 4814Useable pages = 4814Used pages = 4814Free pages = Not applicableHigh water mark (pages) = Not applicable Page size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 1Name = TEMPSPACE1Type = System managed space Contents = System Temporary data State = 0x0000Detailed explanation:NormalTotal pages = 227Useable pages = 227Used pages = 227Free pages = Not applicableHigh water mark (pages) = Not applicable Page size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 2Name = USERSPACE1Type = Database managed space Contents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 131072Useable pages = 131056Used pages = 12080Free pages = 118976High water mark (pages) = 12432Page size (bytes) = 4096Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-09-25-07.22.30.000000Tablespace ID = 3Name = USERSPACE2Type = Database managed spaceContents = Any dataState = 0x10000000Detailed explanation:DMS rebalancer is activeTotal pages = 98304Useable pages = 98272Used pages = 65520Free pages = 0High water mark (pages) = 65520Page size (bytes) = 16384Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 2Minimum recovery time = 2006-08-11-02.52.11.000000Tablespace ID = 4Name = TMPSPACE3Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 199Useable pages = 199Used pages = 199Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 16384Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1。

IBM DB2认证考试题库

IBM DB2认证考试题库

一、数据库的基本概念:●哪组实体可以摘ERD中使用?D人、动物、植物●关于关系数据库的说法。

B●下列哪些实体应用应该使用erd中的一对多关系?D●下列哪些是关系数据模型的组件?B关系,属性,元祖。

●下列那一项描述是错误的?D必须在表中定义主键、●下列那一项表述是错误的?A关系模型中的属性映射到关系是数据库中的行。

●在db2set命令修改注册变量值时,等号和值之间不能有空格。

●客户端要执行的命令:1.节点目录创建条目;2.系统目录创建条目;●对于没有软件投资预算的小型创业公司,DB2理想版本?A –c●首次使用DB2 客户端的CLP 访问远程数据库时:A编目远程节点,并编目引用此节点的数据库。

●DB2版本、客户端。

B●关于DB2环境的说法,错误的是:C●下列那一项不是有效DB2客户端:ibm瘦客户端。

●关于DB2实例的说法正确的是:A如果实例a停止运行,则无法访问此实例中的数据库●关于DB2中表空间的描述,错误的是:c表空间是在内存中告诉。

.。

●记录日志:import●关于IBM Data Studio 的说法正确的是:B当create trigger 语句作为脚本执行时,Data Studio 可以开触发器。

●不是所有的视图都是可更新的。

●Distinct :除掉重复的记录而不是除掉重复属性。

●事物并发1 c 2 a 3b 4a5c●权限1 a2 d3b4d5b●备份与恢复1B2D3C(主日志按域分配)4A5D6B7D●Xml1 C2C3D4B5A6A●应用程序开发1B2D3D4A5C6CHUFAQI7D8C01下列哪一组实体可以在ERD 中使用?DA. 产品,颜色,高度B。

黄色,大,长C. 约翰,狗,飞机D。

人,动物,植物•D 02下列关于关系数据库的说法,哪一项是正确的?●•A. 关系数据库不能存储视频或音频。

●•B。

表是由列和行组成的。

●•C. 同一个表中的行可以拥有不同的列集。

●•D。

行也称为表字段。

db2异常状态码整理

db2异常状态码整理
-107 42622 对象名太长
-108 42601 RENAME语句中指定的名字有错误,不能使用限定词
-109 42601 指定了无效语句;例如CREATE VIEW不能包含ORDER BY 语句
-110 42606 遇到了无效的十六进制的文字
-111 42901 指定的列函数没有给出列名
-150 42807 触发活动的INSERT,UPDATE或DELETE语句中指定了无效的视图更新或一个无效的转换表
-151 42808 试图更新一个不可更新的视图的列、一个DB2 CATALOG表的列或者一个ROWID列
-152 42809 DROP CHECK试图删除一个参照约束,或者DROP FOREIGN试图删除一个检查约束
+238 01005 至少应有一个被描述的列是一个LOB,因此扩展的SQLVAR条目需要另外的空间
+239 01005 至少应有一个被描述的列应是单值类型,因此扩展的SQLVAR条目需要另外的空间
+304 01515 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内
+331 01520 不能被翻译的字符串,因此被设置为NULL
+117 01525 要插入的值的个数不等于被插入表的列数
+162 01514 指定的表空间被置为检查挂起状态
+203 01552 使用非唯一的名字来解决命名的限定列
+204 01532 命名的对象未在DB2中定义
+206 01533 命名的列不在SQL语句中指定的任何表中存在
+218 01537 因为SQL语句引用一个远程对象,不能为该SQL语句执行EXPLAIN

db2数据库解锁语句

db2数据库解锁语句

db2数据库解锁语句
"db2数据库解锁语句" 是指在 DB2 数据库管理系统中,用于解锁数据库对象的SQL 语句。

在DB2 中,数据库对象(如表、视图、存储过程等)可以被锁定,以防止其他用户对其进行修改或访问。

当需要修改或访问被锁定的对象时,需要先使用解锁语句将对象的锁定状态解除。

DB2 数据库的解锁语句通常使用 "ALTER TABLE" 或 "ALTER VIEW" 等命令来实现。

例如,可以使用以下语句解锁名为 "mytable" 的表:ALTER TABLE mytable UNLOCK ALL COMMIT;
此语句将解除所有对"mytable" 表的锁定,并提交事务。

根据需要,也可以使用其他命令或选项来解锁特定的行或列,或者在事务中解锁对象。

总结来说,"db2数据库解锁语句" 是指在 DB2 数据库管理系统中,用于解除数据库对象锁定的 SQL 语句。

这些语句允许用户在需要修改或访问被锁定的对象时,先将其解锁,然后再进行操作。

数据库db2错误代码大全

数据库db2错误代码大全

数据库db2错误代码⼤全sqlcode sqlstate 说明000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为⼀个有相互关系的引⽤+098 01568 动态SQL语句⽤分号结束+100 02000 没有找到满⾜SQL语句的⾏+110 01561 ⽤DATA CAPTURE定义的表的更新操作不能发送到原来的⼦系统+111 01590 为2型索引设置了SUBPAGES语句+117 01525 要插⼊的值的个数不等于被插⼊表的列数+162 01514 指定的表空间被置为检查挂起状态+203 01552 使⽤⾮唯⼀的名字来解决命名的限定列+204 01532 命名的对象未在DB2中定义+206 01533 命名的列不在SQL语句中指定的任何表中存在+218 01537 因为SQL语句引⽤⼀个远程对象,不能为该SQL语句执⾏EXPLAIN+219 01532 命名的PLAN TABLE不存在+220 01546 不正确定义PLAN TABLE,检查命名列的定义+236 01005 SQLDA中的SQLN的值⾄少应于所描述的列的个数⼀样⼤+237 01594 ⾄少有⼀个被描述的列应该是单值类型,因此扩展的SQLVAR条⽬需要另外的空间+238 01005 ⾄少应有⼀个被描述的列是⼀个LOB,因此扩展的SQLVAR条⽬需要另外的空间+239 01005 ⾄少应有⼀个被描述的列应是单值类型,因此扩展的SQLVAR条⽬需要另外的空间+304 01515 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内+331 01520 不能被翻译的字符串,因此被设置为NULL+339 01569 由于与DB2 2.2版本的⼦系统连接,所以可能存在字符转换问题+394 01629 使⽤优化提⽰来选择访问路径+395 01628 设置了⽆效的优化提⽰,原因代码指定了为什么,忽略优化提⽰+402 01521 未知的位置+403 01522 本地不存在CREAT ALIAS对象+434 01608 在DB2未来发布的版本中将不⽀持指定的特性,IBM建议你停⽌使⽤这些特性+445 01004 值被CAST函数截取+462 01Hxx 由⽤户定义的函数或存储过程发出的警告+464 01609 命名的存储过程超出了它可能返回的查询结果集的个数限制+466 01610 指定由命名的存储过程返回的查询结果集的个数。

db2报错Operationnotallowedforreason

db2报错Operationnotallowedforreason

db2报错Operationnotallowedforreason1.表操作错误SQL0668N Operation not allowed for reason code "1" on table "XXXX". SQLSTATE=57016的解决⽅法The table is in Check Pending state. The integrity of the table is not enforced and the content of the table may be invalid.An operation on a parent table or an underlying table that is not in a check pending state may also receive this error if a dependent table is in a check pending state.Execute the SET INTEGRITY statement with the IMMEDIATE CHECKED option on table table-name to bring the table out of the Check Pending state.For a user maintained materialized query table, execute the statement with the IMMEDIATE UNCHECKED option instead of the IMMEDIATE CHECKED option.:ERROR [57016] [IBM][DB2/AIX64] SQL0668N Operation not allowed for reason code "1" on table "XXXX". SQLSTATE=57016可能有⼀⾏或多⾏违反了对数据定义的约束。

【数据库】:关于DB2数据库错误提示说明

【数据库】:关于DB2数据库错误提示说明

【数据库】:关于DB2数据库错误提⽰说明SQLSTATE 消息本节列⽰ SQLSTATE 及其含义。

SQLSTATE 是按类代码进⾏分组的;对于⼦代码,请参阅相应的表。

表 2. SQLSTATE 类代码类代码含义要获得⼦代码,参阅...00 完全成功完成表 301 警告表 402 ⽆数据表 507 动态 SQL 错误表 608 连接异常表 709 触发操作异常表 80A 功能部件不受⽀持表 90D ⽬标类型规范⽆效表 100F ⽆效标记表 110K RESIGNAL 语句⽆效表 1220 找不到 CASE 语句的条件表 1321 基数违例表 1422 数据异常表 1523 约束违例表 1624 ⽆效游标状态表 1725 ⽆效事务状态表 1826 ⽆效 SQL 语句标识表 1928 ⽆效权限规范表 212D ⽆效事务终⽌表 222E ⽆效连接名表 2334 ⽆效游标名表 2436 游标灵敏度异常表 2538 外部函数异常表 2639 外部函数调⽤异常表 273B SAVEPOINT ⽆效表 2840 事务回滚表 2942 语法错误或存取规则违例表 3044 WITH CHECK OPTION 违例表 3146 Java DDL 表 3251 ⽆效应⽤程序状态表 3353 ⽆效操作数或不⼀致的规范表 3454 超出 SQL 限制,或超出产品限制表 3555 对象不处于先决条件状态表 3656 其它 SQL 或产品错误表 3757 资源不可⽤或操作员⼲预表 3858 系统错误表 39类代码 00 完全成功完成表 3. 类代码 00:完全成功完成SQLSTATE 值含义00000 操作执⾏成功,并且未产⽣任何类型的警告或异常情况。

类代码 01 警告表 4. 类代码 01:警告SQLSTATE 值含义01002 发⽣ DISCONNECT 错误。

01003 从列函数的⾃变量消去 NULL 值。

01004 字符串值在指定给具有较短长度的另⼀字符串数据类型时被截断。

DB2不允许访问表空间解决

DB2不允许访问表空间解决

DB2不允许访问表空间解决1. DB2进行异常操作后,如命令未执行完将其中断,或对DB2表进行load/restore操作后,DB2将只能select,不能update,altet,insert,报错如下:DB2 SQL Error: SQLCODE=-290, SQLSTATE=55039, SQLERRMC=null,DRIVER=3.50.152消息:不允许访问表空间。

. SQLCODE=-290, SQLSTATE=55039, DRIVER=3.50.1522. 可查看DB2的表空间状态,确认状态后进行相应的处理解决$ db2 "list tablespace show detail"Tablespaces for Current DatabaseTablespace ID = 0Name = SYSCATSPACEType = System managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 2519Useable pages = 2519Used pages = 2519Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 1Name = TEMPSPACE1Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 1Useable pages = 1Used pages = 1Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 2Name = USERSPACE1Type = System managed spaceContents = Any dataState = 0x0004 这个代码意义就是“停顿的独占”,正常状态为0x0000,非0就是有问题,都可以用下面方法解决。

DB2故障处理的思路及一般问题的解决办法

DB2故障处理的思路及一般问题的解决办法

DB2故障处理的思路及一般问题的解决办法本文将介绍DB2故障处理的思路及一般问题的解决办法,包括有错误码的问题解决以及按照问题的范围和性质进行分类。

我认为解决问题的关键在于分清问题的种类,并清楚每种问题的解决办法。

另外很多的数据库的问题都是由于错误的操作,错误的配置引起的,所以本文在解释怎么样处理问题时也会给出一些好的建议,来避免产生问题。

本文重点介绍实用的方法。

对问题的分类有很多种方法,在本文中我我采用了两种分类方案。

第一种方案是是否有错误码。

即发生错误时是否同时返回了错误码,错误码既包括执行命令的返回码,也包扩应用程序的返回码。

有返回码的错误解决方案是,在db2 CLP中运行db2 ? SQLXXXX,然后根据对该问题的解释采取相应的解决方案。

对没有错误码的问题,如数据库hang,CPU使用率过高等问题,解决问题的经验将非常重要,在本文中会有详细的说明。

根据错误码解决问题举例(在下文中,再出现需要用这种方法解决问题时将不再重复):如在连接数据库时发生错误错误码分为返回码(SQL0332N)和原因码(Reason Code "1"),针对不同的原因码有不同的解决方案运行db2 ? sql0332从输出种可以看到对于reason code 1的解释是所以可以通过设置代码页来解决这个问题就可以成功连接了。

第二种分类方案是按照问题的范围和性质进行分类。

分类如下:1.数据库实例问题2.数据库问题3.数据库性能问题4.应用开发与数据库有关的问题下面对每一类问题进行详细说明。

一、数据库实例的问题数据库实例问题可以分为两种情况1.实例无法启动,运行db2start后,直接返回错误码,如SQL1042C。

如果根据错误码信息无法解决,可以尝试如下方案:重新更新该实例,以root身份登录,Tip:常见的产生实例无法启动的原因数据库安装了新的补丁后没有运行db2iupdt数据库文件的权限被改成了777,数据库文件的权限是有要求的,所以不能将所有的文件都改成777的权限数据库实例文件被删除或损坏主机名与db2nodes.cfg里记录的不一致2.运行db2start时,hang在那里,既不报错,也无法启动实例这种情况一般是由于实例没有正常的停止造成的,一般运行下列命令可以解决:(将所有的与该实例有关的db2进程杀死kill -9 )然后重新启动实例。

db2_表空间状态

db2_表空间状态
表 2 和表 3 中描述了这些状态。 表 2描述了受支持的表空间状态,而 表 3 则描述了目前 支持的表状态。
表 1. 到版本 8.1.4 为止的 DB2 UDB 所有支持版本中定义的表和表空间状态
状态
范围
Backup Pending Backup in Progress Check Pending DMS Rebalance in Progress Disable Pending Drop Pending Load Pending Load in Progress
表状态。
Information returned for USERSPACE1 返回的
信息显示,该表空间处于 Load in Progress(和
Backup Pending )状态。
如果表空间不是
处于任何其他
(异常的)表空
间状态,那么该 connect to sample;
表空间的状态就 create tablespace ts1 managed by database using (file
State = Backup Pending + Load in Progress
图 2. 可以使用 LIST TABLESPACES 命令确定连接数据库中表空间的当前状态。
表 2. 受支持的表空间状态
状态
十六进制状 态值
描述
示例
在执行指定时间
点的(point-intime)表空间前 滚操作之后,或 者在执行指定了
至于说明该表空间状态的示例,已经超出了本文 的范围。
已知载入的输入文件 staffdata.del 有大量数据
(例如,20000 条或更多记录): 这是一种只在执 update db cfg for sample using logretain recovery; 行指定了 COPY connect to sample; NO 选项的载入 load from staffdata.del of del insert into newstaff 操作(针对可恢 copy no;

关于DB2数据库问题故障分析

关于DB2数据库问题故障分析
DB20000I The SQL command completed successfully.
----创建用户临时表空间
db2 "create USER temporary tablespace ORCLSP_USER_TMP pagesize 8k managed by system using ('/home/db2inst1/temp')"
----创建BUFFER
db2 "create bufferpool ker pagesize 8k '/home/db2inst1/' "
DB20000I The SQL command completed successfully.
-----创建系统临时表空间并指定BUFFER
db2 "create system temporary tablespace temp pagesize 8k bufferpool zy"
------断点恢复
1、首先备份sample1数据库,查看归档日志的路径,看看最后归档的时间。(一般最后最后归档的时间的那个是坏的,前一个因该可以用例2011-06-08-01.21.25.000000。)
2、将sample1数据库的活动日志文件拷贝到一个新的目录下(例/home/db2inst1/archivelogs/db2inst1/ORCL)。
[db2inst1@localhost $]$ db2move orcl import -u db2inst1 -p db2inst1 >db2moveout.log
说明:实施数据迁移的前提是1、某个非关键业务的表发生错误,导致数据库不能正常操作。
2、凭个人经验"-901"一般是除坏表外其它表数据能导出来,可实现迁移。而"-1224",数据库损坏严重,一般导到坏表时,数据库就自动断开连接了,其它表基本上导不出来,不能进行迁移。

db2 表空间 状态 DB2_DBA的注意事项

db2 表空间 状态 DB2_DBA的注意事项

db2 insert into tb2 values(2,’smitty’);
13.查询数据:
db2 select * from tb1
14.数据:
db2 delete from tb1 where id=1
15.创建索引:
db2 create index idx1 on tb1(id);
db2 get dbm cfg|more
5. 更新数据库管理器参数信息:
db2 update dbm cfg using para_name para_value
6. 创建数据库:
db2 create db test
7. 察看数据库配置参数信息
db2 表空间 状态 DB2_DBA的注意事项
activate database <dbname> 显式地激活数据库.
deactivate database <dbname> 显式地使数据库失效.
list active databases 列出活动的数据库和连接数.
…..等有死锁发生后
db2 set event monitor dlmon state 0
db2evmon –d /tmp/dlmon >/tmp/dlmon.out
分析/tmp/dlmon.out文件就可以找到造成死锁的信息,结合应用就可以找到造成死锁的原因了.
================================================== =========================
LOCKLIST 表明分配给锁列表的存储容量
MAXLOCKS 定义了应用程序持有的锁列表的百分比

DB2错误代码对照表

DB2错误代码对照表

DB2错误代码对照表用COBOL链接DB2时,出现DB2错误信息时,如果你不懂代码是什么意思,可以用这份资料查找,当然你也可以直接在db2的命令行下输入:db2 ? SQL30081N,系统会给出一些提示信息.sqlcode sqlstate DB2错误信息(按sqlcode排序)000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为一个有相互关系的引用+098 01568 动态SQL语句用分号结束+100 02000 没有找到满足SQL语句的行+110 01561 用DATA CAPTURE定义的表的更新操作不能发送到原来的子系统+111 01590 为2型索引设置了SUBPAGES语句+117 01525 要插入的值的个数不等于被插入表的列数+162 01514 指定的表空间被置为检查挂起状态+203 01552 使用非唯一的名字来解决命名的限定列+204 01532 命名的对象未在DB2中定义+206 01533 命名的列不在SQL语句中指定的任何表中存在+218 01537 因为SQL语句引用一个远程对象,不能为该SQL语句执行EXPLAIN+219 01532 命名的PLAN TABLE不存在+220 01546 不正确定义PLAN TABLE,检查命名列的定义+236 01005 SQLDA中的SQLN的值至少应于所描述的列的个数一样大+237 01594 至少有一个被描述的列应该是单值类型,因此扩展的SQLVAR条目需要另外的空间+238 01005 至少应有一个被描述的列是一个LOB,因此扩展的SQLVAR条目需要另外的空间+239 01005 至少应有一个被描述的列应是单值类型,因此扩展的SQLVAR条目需要另外的空间+304 01515 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内+331 01520 不能被翻译的字符串,因此被设置为NULL+339 01569 由于与DB2 2.2版本的子系统连接,所以可能存在字符转换问题+394 01629 使用优化提示来选择访问路径+395 01628 设置了无效的优化提示,原因代码指定了为什么,忽略优化提示+402 01521 未知的位置+403 01522 本地不存在CREAT ALIAS对象+434 01608 在DB2未来发布的版本中将不支持指定的特性,IBM建议你停止使用这些特性+445 01004 值被CAST函数截取+462 01Hxx 由用户定义的函数或存储过程发出的警告+464 01609 命名的存储过程超出了它可能返回的查询结果集的个数限制+466 01610 指定由命名的存储过程返回的查询结果集的个数。

db2数据库表空间迁移的实施过程经验分享(适用于v.9.7以下版本)

db2数据库表空间迁移的实施过程经验分享(适用于v.9.7以下版本)
AND T1.TABSCHEMA=T2.TABSCHEMA AND T1.TABNAME=T2.TABNAME
)
检查结果:没有发现引用迁移表的约束。
处理方法:无
5、表引用检查,检查涉及引用的迁移表
SELECT * FROM SYSCAT.REFERENCES T1 WHERE EXISTS (
SELECT * FROM SYSCAT.TABLES T2 WHERE T2.TBSPACE='USERSPACE1' AND T2.TABSCHEMA NOT IN ('SYSTOOLS')
6、XSR对象检查,检查涉及引用的迁移表
SELECT * FROM SYSCAT.XSROBJECTDEP T1 WHERE EXISTS (
SELECT * FROM SYSCAT.TABLES T2 WHERE T2.TBSPACE='USERSPACE1' AND T2.TABSCHEMA NOT IN ('SYSTOOLS')
CELL
SPE_ORGANIZATION_SEARCH
CELL
TP_ORGANICFERT_SPE_ORG
处理方法:备份找出的4个视图的DDL,并在迁移过程重命名表名步骤前,删除这些视图,迁移后重新创建。
2、触发器检查,检查涉及引用的迁移表
SELECT * FROM SYSCAT.TRIGDEP T1 WHERE EXISTS (
处理方法:无
3、自定义函数检查,检查涉及引用的迁移表
SELECT * FROM SYSCAT.FUNCDEP T1 WHERE EXISTS (
SELECT * FROM SYSCAT.TABLES T2 WHERE T2.TBSPACE='USERSPACE1' AND T2.TABSCHEMA NOT IN ('SYSTOOLS')

DB2常见错误及解决办法

DB2常见错误及解决办法
原因:DB2 UTIL_HEAP_SZ 未设置得足够高以用于备份实用程序。
解决办法:db2 update db cfg for dbname using UTIL_HEAP_SZ 具体的数字(db2备份使用的内存是UTIL_HEAP_SZ,请使用以上命令调整)。
7、用JDBC往表批量插入数据时。报23502错误。如:
DB2常见错误及解决办法
文章分类:数据库
1、创建数据库的时候,报42704错误。如:
Sql代码
=>create database test
=>SQL0204N "SYSTEM_1386_US" is an undefined name. SQLSTATE=42704
解决办法:
解决办法:查看表定义,加大字段长度。
9、用JDBC往表批量插入数据时。报-4474错误。如:
Sql代码
非法转换:不能从“ng.String”转换到“byte[]” ERRORCODE=-4474, SQLSTATE=null
原因:表中某字段定义为‘ID CHAR(16) FOR BIT DATA NOT NULL’(这个是使用MTK从MS SQL迁移到DB2时,uniqueidentifier转换成的)。
Contents = Any data
State = 0x0020
Detailed explanation:
Backup pending
原因:在归档的数据库做过load或者改了参数重新启动了db
Sql代码
Error for batch element #0: DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC: TBSPACEID=2, TABLEID=15, COLNO=2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. DB2进行异常操作后,如命令未执行完将其中断,或对DB2表进行
load/restore操作后,DB2将只能select,不能update,altet,insert,报错如下:
DB2 SQL Error: SQLCODE=-290, SQLSTATE=55039, SQLERRMC=null,
DRIVER=3.50.152
消息:不允许访问表空间。

. SQLCODE=-290, SQLSTATE=55039, DRIVER=3.50.152
2. 可查看DB2的表空间状态,确认状态后进行相应的处理解决
$ db2 "list tablespace show detail"
Tablespaces for Current Database
Tablespace ID = 0
Name = SYSCATSPACE
Type = System managed space
Contents = Any data
State = 0x0000
Detailed explanation:
Normal
Total pages = 2519
Useable pages = 2519
Used pages = 2519
Free pages = Not applicable
High water mark (pages) = Not applicable
Page size (bytes) = 4096
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
Tablespace ID = 1
Name = TEMPSPACE1
Type = System managed space
Contents = System Temporary data
State = 0x0000
Detailed explanation:
Normal
Total pages = 1
Useable pages = 1
Used pages = 1
Free pages = Not applicable
High water mark (pages) = Not applicable
Page size (bytes) = 4096
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
Tablespace ID = 2
Name = USERSPACE1
Type = System managed space
Contents = Any data
State = 0x0004 这个代码意义就是“停顿的独占”,正常状态为0x0000,
非0就是有问题,都可以用下面方法解决。

Detailed explanation:
Quiesced: EXCLUSIVE
Total pages = 687
Useable pages = 687
Used pages = 687
Free pages = Not applicable
High water mark (pages) = Not applicable
Page size (bytes) = 4096
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
Number of quiescers = 1 注意下面几行
Quiescer 1:
Tablespace ID = 2
Object ID = 50 “object id是造成死锁表的id”
3. 若处于0X0004“停顿的独占”,可执
行db2 => select tabname from syscat.tables where tableid=50 通过所住的id号找出是哪个表
TABNAME
--------------------------------------------------------------------------------------------------------------------------------
SYSINDEXEXTENSIONPARMS
TEST 就是这个表
2 record(s) selected.
db2 => quiesce tablespaces for table test reset 执行该命令清除错误的状态
DB20000I The QUIESCE TABLESPACES command completed successfully.
4. 若处于0X0020“备份暂挂”,对整个数据库进行backup后即可将其恢复正常db2 "backup db enms tablespace(userspace1) online include logs"(需等待较长时间,然后会echo出备份的时间戳)。

相关文档
最新文档