DB2 - Problem description
Problem IC96260 | Status: Closed |
NNSTAT METHOD 1 OR 0 REPORTS SQL1227N RC=3 WHEN IT TRIES TO UPDATE HIGH2KEY TO SINGLE BLANK FOR AN INTEGER COLUMN | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
NNSTAT with method 1(or 0) reports SQL1227N RC=3 when it tries to update HIGH2KEY/LOW2KEY to a single blank for a numerical column: SQL1227N The catalog statistic " " for column "HIGH2KEY" is out of range for its target column, has an invalid format, or is inconsistent in relation to some other statistic. Reason Code = "3". The same error may happen to all numerical data type columns, such as integer, float, decimal and double columns. The problem only happens when DB2_COMPATIBILITY_VECTOR=ORA. REPRODUCE: connect to fdbora; drop server serv1; create server serv1 type oracle version '11g' wrapper net8 options(node 'ora11gr2',VARCHAR_NO_TRAILING_BLANKS 'Y'); create user mapping for db2inst1 server serv1 options(remote_authid '<user name>',remote_password '<password>'); set passthru serv1; drop table test; create table test(c1 number(6), c2 number(25), c3 number(38,12)); insert into test values(null,null,11.1); insert into test values(null,1,22.2); insert into test values(null,2,33.3); insert into test values(null,3,44.4); set passthru reset; create nickname mt for serv1."<user name>"."TEST"; call sysproc.nnstat('SERV1','DB2INST1','MT',NULL,NULL,1,'/home/db2ins t1/nnstat1.log::DIAG',?); In above case, the nicknames COLCARDs will be: -------------------- C1's COLCARD = 0 C2's COLCARD = 3 C3's COLCARD = 4 -------------------- And if statistic data haven't been ran for the source table on the Oracle server, all columns will have COLCARD = -1. Also, in a database created with DB2_COMPATIBILITY_VECTOR=ORA, if COLCARD <= 3 , CREATE NICKNAME statement(NNSTAT with method 1 collects statistic data from remote data source by creating a nickname)gets HIGH2KEY/LOW2KEY as a single blank ' '(0x20) for a column with numerical data type. When NNSTAT tries to update HIGH2KEY/LOW2KEY to a single blank(the HIGH2KEY/LOW2KEY value collected by creating the nickname), the error happens. In this case, the column is an numeric, and db2 need to convert the HIGH2KEY/LOW2KEY string(single blank) to a native integer to interpret it natively. The conversion returns an error because single blank is not a number: update SYSSTAT.COLUMNS SET (COLCARD, HIGH2KEY, LOW2KEY) = (3, ' ',' ') where TABNAME='MT' and COLNAME = 'C2' | |
Problem Summary: | |
User affected: Users who use NNSTAT of InfoSphere Federation Server Problem description and summay: See error description | |
Local Fix: | |
Use method 2 instead. | |
available fix packs: | |
DB2 Version 10.1 Fix Pack 3 for Linux, UNIX, and Windows | |
Solution | |
Problem was fistly fixed in Version 10.1, FixPak 3. This fix should be applied on the federation Server. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 25.09.2013 28.10.2013 28.10.2013 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.3 | |
10.1.0.3 |