SQL0668N 原因码为 "1" SQLSTATE=57016 ORACLE导入到DB2
利用MTK
工具没有成功导入数据,于是用(ORACLE
用MTK
工具导入到DB2
db2 => select * from TABLE_NAME
USER_FUNCTION_ID USER_ID DEALER_ID FUNCTION_ID CREATE_
BY CREATE_DATE UPDATE_BY UPDATE_DATE
-------------------- -------------------- --------- -------------------- -------
SQL0668N
由于表
"ADMINISTRATOR. TABLE_NAME "
上的原因码为
"1"
,所以不允许操作。
SQLSTATE=57016
查了下问题原因是原因是装入时有数据违反了检查约束,造成表处于检查挂起状态。网上说可以用setintegrityfortable_namecheckimmediateunchecked
解除表的检查挂起状态,
但是运行完后还是无法访问此表
db2 => set integrity for table_name check immediate unchecked
DB20000I SQL
命令成功完成。
db2 => select * from TABLE_NAME
USER_FUNCTION_ID USER_ID DEALER_ID FUNCTION_ID CREATE_
BY CREATE_DATE UPDATE_BY UPDATE_DATE
-------------------- -------------------- --------- -------------------- -------
SQL0668N
由于表
"ADMINISTRATOR. TABLE_NAME "
上的原因码为
"1"
,所以不允许操作。
SQLSTATE=57016
问题依旧。又试图用再次LOAD
的方法使其状态正常,通过分别发出带有 RESTART
或 TERMINATER
选项的 LOAD
来重新启动或终止先前失败的对此表的 LOAD
操作。但是问题依旧。
db2 => LOAD FROM C:/MTK/projects/Unknown7/DataOutScripts/FILENAME_TABLE_NAME.out of DEL restart INTO TABLE_NAME
SQL27902N LOAD RESTART/TERMINATE
在未处于
LOAD PENDING
状态的表上不允许。
再试
C:/Documents and Settings/Administrator>db2 set integrity for TABLE_NAME immediate checked
不成功。
怀疑现在的问题不仅仅是表的问题,于是察看TABLESPACE
db2 =>list tablespaces show detail
表空间标识
= 2
名称
= USERSPACE1
类型
=
数据库管理空间
内容
=
所有持久数据。大型表空间。
状态
= 0x0020
详细解释:
备份暂挂
总计页数
= 40960
可用页数
= 40928
已用页数
= 40448
可用页数
= 480
高水位标记(页)
= 40448
页大小(以字节计)
= 16384
扩展数据块大小(页)
= 32
预取大小(页)
= 32
容器数
= 1
最小恢复时间
= 2007-02-13-02.29.51.000000
想通过以下命令使其正常
db2 => alter tablespace USERSPACE1 switch online
DB20000I SQL
命令成功完成。
状态一样
于是通过BACKUP
来除去备份暂挂状态,
手工备份后恢复正常. 0x0000
db2 backup db DB_NAME tablespace (userspace1)
再解除表的检查挂起状态
db2 => set integrity for tt_user_function immediate checked
DB20000I SQL
命令成功完成。
db2 => select count(*) from tt_user_function;
SQL0104N
在
"rom tt_user_function"
后面找到异常标记
";"
。预期标记可能包括:
"END-OF-STATEMENT"
。
SQLSTATE=42601
db2 => select count(*) from tt_user_function
1
-----------
1534
访问正常.