DB2 sql报错后查证原因与解决问题的方法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2939 | 回复: 0   主题: DB2 sql报错后查证原因与解决问题的方法        下一篇 
    本主题由 Administrator 于 2014-9-16 15:01:04 移动
东风破
注册用户
等级:新兵
经验:72
发帖:0
精华:0
注册:2012-12-19
状态:离线
发送短消息息给东风破 加好友    发送短消息息给东风破 发消息
发表于: IP:您无权察看 2014-9-16 11:04:47 | [全部帖] [楼主帖] 楼主

1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法。

2.错误SQL0206N SQLSTATE=42703 检测到一个未定义的列、属性或参数名。

SQL0206N "SQL_COU_ALL" is not valid in the context where it is used. SQLSTATE=42703
db2 => ? "42703"
db2 => ? SQL0206N


3.错误SQL0668N code "7" SQLSTATE=57016 表处于pending state,需要重组该表。

SQL0668N Operation not allowed for reason code "7" on table "xxx.Z_BP_TMPBATCH_TB_HIS". SQLSTATE=57016
db2 => ? SQL0668N code 7
SQL0668N Operation not allowed for reason code "<reason-code>" on table "<table-name>".


 Explanation:说明

Access to table "<table-name>" is restricted. The cause is based on the following reason codes "<reason-code>":
7 The table is in the reorg pending state. This can occur after an ALTER TABLE statement containing a REORG-recommended operation.


 User response:用户响应 

7 Reorganize the table using the REORG TABLE command.
For a table in the reorg pending state, note that the following clauses are not allowed when reorganizing the table:
* The INPLACE REORG TABLE clause
* The ON DATA PARTITION clause for a partitioned table when table has nonpartitioned indexes defined on the table


4.错误SQL20054N code="23" SQLSTATE=55019 对表的修改次数达到3次,必须重组表

ALTER TABLE xxx.FM_BORRO ALTER COLUMN DOCUMENT_TYPE_1 SET NOT NULL


 报错:SQL20054N The table "xxx.FM_BORROW" is in an invalid state for the operation. Reason code="23". SQLSTATE=55019

db2 => ? SQL20054N
SQL20054N The table "<table-name>" is in an invalid state for the operation. Reason code="<reason-code>".
Explanation:
The table is in a state that does not allow the operation. The "<reason-code>" indicates the state of the table that prevents the operation.
23 The maximum number of REORG-recommended alters have been
performed. Up to three REORG-recommended operations are allowed
on a table before a reorg must be performed, to update the
tables rows to match the current schema.
User response:
23 Reorg the table using the reorg table command.


 说明:当对表结构进行更改时,也可能导致表状态异常。比如,以下操作可能会导致表处于reorg-pending状态。

(1) alter table <tablename> alter <colname> set data type <new data type>

 (2) alter table <tablename> alter <colname> set not null

 (3) alter table <tablename> drop column <colname>

 (4) ……

    出现reorg pending的根源是当表结构变化后影响了数据行中的数据格式,这时需要对表做reorg。可能的错误号是:

01.SQL0668N Operation not allowed for reason code "7" on table "SDD.ST_INCRE008". SQLSTATE=57016
03.SQL20054N The table "<table-name>" is in an invalid state for the operation. Reason code="7".


 复制代码每一个表在不进行重组(Reorg)的前提下,只允许进行3次结构上的修改。三次更改后必须对表进行重组。

REORG TABLE "xx"."FM_BORROW" ALLOW NO ACCESS KEEPDICTIONARY;


5.报错 SQL0670N SQLSTATE=54010 该表所有字段长度之和大于当前数据库页大小(8K)

ALTER TABLE xxx.FAQ ALTER COLUMN FAQ_UNIT_NAME SET DATA TYPE VARCHAR(800)


 报错 SQL0670N The row length of the table exceeded a limit of "8101" bytes. (Table space "SHJD_DATA".) SQLSTATE=54010

db2 => ? SQL0670N
SQL0670N The row length of the table exceeded a limit of "<length>" bytes. (Table space "<tablespace-name>".)
Explanation:
The row length of a table in the database manager cannot exceed:
* 4005 bytes in a table space with a 4K page size
* 8101 bytes in a table space with an 8K page size
* 16293 bytes in a table space with an 16K page size
* 32677 bytes in a table space with an 32K page size
The length is calculated by adding the internal lengths of the columns.Details of internal column lengths can be found under CREATE TABLE in the SQL Reference.
User response:


 指定页大小更大的表空间;消除表中的一列或多列

6.报错 SQL0190N SQLSTATE=42837 不能改变该列,因为它的属性与当前的列属性不兼容

ALTER TABLE xxx.BP_TMPDATA_1_TB_1903 ALTER COLUMN RATE SET DATA TYPE DECIMAL(6,4)


 报错 SQL0190N ALTER TABLE "BP_TMPDATA_1_TB_1903" specified attributes for column "RATE" that are not compatible with the existing column. SQLSTATE=42837
 说明: BP_TMPDATA_1_TB_1903 现有数据的精度超过了 DECIMAL(6,4) ,比如100.00

7.报错 SQL30081N SQLSTATE=08001 检测到通信错误 无法与应用程序服务器或其他服务器建立连接

SQL30081N A communication error has been detected.
Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS".
Location where the error was detected: "10.0.0.200". Communication function detecting the error: "selectForConnectTimeout".
Protocol specific error code(s): "0", "*", "*". SQLSTATE=08001


 检查服务器的配置情况如下:
 验证存在的DB2数据库

db2 list db directory
db2 list db directory show detail


 验证实例使用的通讯协议,查看DB2COMM变量

db2set -all


 查看数据库管理器的配置,查看SVCENAME(特指tcpip协议)

db2 get dbm cfg


 查看/etc/services中,有无与上面对应SVCENAME的端口,例如:

db2cDB2 50000/tcp


 验证远程服务器实例配置

db2 list node directory
db2 list node directory show detail


 ping hostname来验证通讯
 使用telnet hostname port来验证是否能连到实例
 用DB2提供的PCT工具来检测一下

该贴由system转至本版2014-9-16 15:01:04




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论