db2 SQL0452N问题的解决

1.问题描述:

          After I using db2 export&import utility:db2move to transfer data from v8.2 to v9.5,I found that some rows of table:PT_ATTACH are rejected(see import log:IMPORT.out):

* IMPORT:  table "STAGEUSR"."PT_ATTACH"         
WARNING 3107.  Check message file tab273.msg!
***  SQL Warning!  SQLCODE is  3107
***  SQL3107W 
消息文件中至少有一条警告消息。
  -Rows read:      52594
  -Inserted:       45272
  -Rejected:        7322
  -Committed:      52594

  

  and I check the detail log file:tab273.msg,found that  all errors  is the same:

SQL3109N  实用程序正在开始从文件 "tab273.ixf" 装入数据。

 

SQL3148W  未将输入文件中的行插入至表中。返回了 SQLCODE "-452"

 

SQL0452N  不能访问主变量 "12" 引用的文件。原因码:"5"  SQLSTATE=428A1

 

SQL3185W  处理输入文件的第 "10547" 行中的数据时,发生前一个错误。

 

SQL3148W  未将输入文件中的行插入至表中。返回了 SQLCODE "-452"

 

SQL0452N  不能访问主变量 "12" 引用的文件。原因码:"5"  SQLSTATE=428A1

 

SQL3185W  处理输入文件的第 "10548" 行中的数据时,发生前一个错误。

.....

 

 

I've searched in internet,and below are some useful informations(note the red color marked):

 

URL: http://www.experts-exchange.com/Database/DB2/Q_23812571.html

 

Hello,

I am using the db2move command to export 2 tables from my database. (DB2 - Express C)

If i only have a small number of entries I do not have any problems but if I have many entries I get the following error:

################################################################################
SQL3104N The Export utility is beginning to export data to file "tab2.ixf".

SQL3015N An SQL error "-452" occurred during processing.

SQL0452N Unable to access the file referenced by host variable "13". Reason
code: "5". SQLSTATE=428A1

SQL3105N The Export utility has finished exporting "12742" rows.
################################################################################

This always seems to happen when the LOB file size reaches 4GB. The database is running on windows vista with a NTFS file system.

 

 

In fact,the table:PT_ATTACH has a LOB column:ATTACHCONTENT,and this table estimate size is about:10G

db2 => select sum(attachsize)/1024/1024/1024 from pt_attach

 

1
---------------------------------
                              10.

 

  1 record(s) selected.

 

I note someone says that the db2 user(in this case is:stageusr) should be the member of OS user group:administrator,so the user can have the privilege to create single file larger than 4G in 32-bit platform.I've changed stageusr to the member of the administrator,but the error still throws.I think we need to consult the db2 experts. 

   BTW,in PRODDB,there are 2 stored procedures(RETURNSEQS2 and TESTFORPROD) are write by JAVA,I think these external routines need to be re-create manually  when upgrade db2 from v8.2. to v9.5.

CREATE PROCEDURE "STAGEUSR"."RETURNSEQS2"
  (
  IN      SSEQNAME   CHARACTER(32),
  IN      ICOUNT   INTEGER,
  OUT     IBEGINSEQ   INTEGER,
  OUT     IENDSEQ   INTEGER,
  OUT     IINCRBY   INTEGER
  )
  DYNAMIC RESULT SETS 1
  SPECIFIC SQL040209213549657
  EXTERNAL NAME 'SPReturnSeq!returnSeqs2()'
  LANGUAGE JAVA    
  PARAMETER STYLE JAVA    
  NOT DETERMINISTIC
  FENCED THREADSAFE
  MODIFIES SQL DATA
  NO DBINFO;

 

CREATE PROCEDURE "STAGEUSR"."TESTFORPROD"
  (
  IN      SSEQNAME   CHARACTER(32),
  IN      ICOUNT   INTEGER,
  OUT     IBEGINSEQ   INTEGER,
  OUT     IENDSEQ   INTEGER,
  OUT     IINCRBY   INTEGER
  )
  DYNAMIC RESULT SETS 1
  SPECIFIC SQL040210024131258
  EXTERNAL NAME 'SPReturnSeq!returnSeqs2()'
  LANGUAGE JAVA
    
  PARAMETER STYLE JAVA    
  NOT DETERMINISTIC
  FENCED THREADSAFE
  MODIFIES SQL DATA
  NO DBINFO;

 

 

thanks&best regards

 

Rainny

 

ecVision - Experts in Collaboration and Visibility

 

 

2.问题解决过程

Locate the error number in db2 information center,and below are detail explain:

 

DB2 Linux 版、UNIX 版和 Windows 版版本 9.5


<script type="text/javascript"></script> SQL0452N

不能访问主变量 变量位置 引用的文件。原因码:原因码

说明

在尝试访问或正在访问由第 n 个主变量引用的文件时出错,其中 n = 变量位置,原因由 原因码 给出。如果不能确定主变量的位置,那么将 <变量位置> 设置为 0。可能的原因码如下所示:

  • 01 文件名长度无效,或文件名和/或路径格式无效。
  • 02 文件选项无效。它的值必须是下列值之一:

·                SQL_FILE_READ

·                      从现有文件中读取

·                SQL_FILE_CREATE

·                      创建新文件以进行写入

·                SQL_FILE_OVERWRITE

·                      覆盖现有文件。      如果文件不存在,

·                            则创建该文件。SQL_FILE_APPEND

·                      追加至现有文件。      如果文件不存在,

            则创建该文件。

  • 03 找不到该文件。
  • 04 为与现有文件同名的文件指定了 SQL_FILE_CREATE 选项。
  • 05 对该文件的访问被拒绝。用户无权打开该文件。
  • 06 对该文件的访问被拒绝。该文件正以不兼容的方式使用。要写入的文件是以互斥方式打开的。
  • 07 写文件时磁盘已满。
  • 08 读文件时遇到意外的文件结束。
  • 09 访问文件时遇到介质错误。
  • 10 读文件时遇到不完整的或无效的多字节字符。
  • 11 将数据从文件代码页转换为应用程序的图形字符代码页时遇到错误。

用户响应

对于原因码 01,更正文件名长度、文件名和/或路径。

对于原因码 02,指定有效的文件选项。

对于原因码 03,确保在尝试访问文件前指定的文件已存在。

对于原因码 04,如果文件不再是必需的,那么删除该文件,或指定当前不存在的文件名。

对于原因码 05,确保用户具有对文件的访问权(更正文件许可权)。

对于原因码 06,使用另一文件,或者,如果一定要访问该文件,可修改应用程序来确保文件不会被并发访问。

对于原因码 07,删除不必要的文件以释放磁盘空间,或者指定驻留在另一具有足够磁盘空间的驱动器/文件系统上的文件。同时,确保未达到操作系统或用户文件大小限制。如果应用程序代码页使用多字节编码方案,那么有可能只写入了最后一个字符的一部分,因此,确保文件仅包含全型的字符。

对于原因码 08,如果文件要用于输入,那么确保在文件全部读入以前不要对其进行修改。

对于原因码 09,更正文件所在的介质上的所有错误。

对于原因码 10,确保文件包含基于应用程序代码页的有效多字节字符,或者在与文件的内容相同的代码页下运行时提交请求。

对于原因码 11,确保已安装了文件的代码页(例如日文 EUC)和应用程序的图形代码页(例如 UCS-2)之间的字符转换支持。

sqlcode-452

sqlstate428A1

3.解决方案

 Seems this is a file access privilege problem. Solution:

    we export data use  server 7 db2 client,so the export files are stored in server 7 machine,when I copy all these export files to server 13 and import, SQL0452N throwed(SQL0452N Unable to access the file referenced by host variable "12". Reason code: "5". SQLSTATE=428A1).

    use server 7 db2 client to import data into server 13(so,the file access privilege problem  resolved),and at last ,the data imported successfully(PT_ATTACH)!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值