db2 SQLCODE: -204, SQLSTATE: 42704的解决方案

        今天工作的时候遇到一个很诡异的问题,我把db2数据库restore到以前备份的001 file,然后重启连接到这个数据库的websphere,结果应用报错了,

错误代码:SQLCODE: -204, SQLSTATE: 42704

       我以前restore的时候都没有任何问题,直接reorg再run stat就能用,结果今天研究了几个小时,还不如网上搜1分钟:

<----------------------------------------完美的分割线----------------------------------------------------------------------------------------------->

以下网上转载:

此错误由以下之一引起: 

o   未在数据库中定义由 "<名称>" 标识的对象。 

o   在表上未定义由 "<名称>" 标识的数据分区。 

o   正在使用某个数据类型。此错误可能是由于下 
    列原因而发生的: 

    -   如果 "<名称>" 
        是限定名称,则具有此名称的数据类型在数据 
        库中不存  在。 

    -   如果 "<名称>"  
        是非限定名称,则用户的函数路径不包含期望  
        的数据类  型所属于的模式。 

    -   数据类型在创建时间戳记早于程序包绑定时 
        间的数据库中不存在(适用于静态语句)。 

    -   如果数据类型在 CREATE TYPE 语句的 UNDER 
        子句中,则该类型名可能与正定义的类型相同
        ,这  是无效的。 

o   下列其中一项中正在引用某个函数: 

    -   DROP FUNCTION 语句 

    -   COMMENT ON FUNCTION 语句 

    -   CREATE FUNCTION 语句的 SOURCE 子句 

         如果 "<名称>"   
        是限定名称,则函数不存在。如果   
        "<名称>"     
        是非限定名称,则当前函数路径的任何模式中   
        都不存   在    
        此名称的函数。注意,函数不能以    
        COALESCE、 NULLIF   或  VALUE   
        内置函数作为源函数。 

o   在 CREATE SECURITY LABEL COMPONENT 语句中 UNDER   
    子句右边使用了名为“名称”的元素,但尚未  
    将该  元素定义为 ROOT 
    或者在其他某个元素下方(UNDER)。 

o   下列其中一个标量函数指定了“名称”标识的
    安全策略,但在数据库中未定义该安全策略。 

    -   SECLABEL 

    -   SECLABEL_TO_CHAR 

    -   SECLABEL_BY_NAME 

<-------------------------------------分割完成---------------------------------------------------------------------------------------------->

我犯的错误即为上面的红色部分,我将系统时间往前调了一年,用于满足我的应用中一个特殊需求,结果这一细小改动就导致程序的绑定时间比我restore的数据库(也就是今天)早了一年!故而出错,分享至此,希望大家引以为鉴~~~

你可能感兴趣的:(db2,解决方案,备份,数据库)