1、 函数注意事项 查看表中是否被其它函数使用,如果被其它函数使用,则在数据迁移之前,备份该函数语句,然后删除函数。数据迁移后重新生成函数; 1) 在db2look中查看被使用的函数名称 2) 使用SQL查看该表被哪一些函数使用 select funcname,SPECIFICNAME from syscat.FUNCTIONS where SPECIFICNAME in (select dname from sysibm.sysdependencies where bname='T01_PUB_BANK' and FUNCSCHEMA='XDZX1') 2、 视图注意事项 查看表是否被其它视图使用,如果被其它视图使用。则在数据迁移之后,删除视图,然后重建; 1) 查看该表被哪一些视图使用 select * from syscat.TABDEP where bname='viewname' and DTYPE='V' 2) 查看该视图代码 select text from syscat.VIEWS where viewname=’viewname’ 3) 获得数据库中非法视图 select viewschema, viewnamefrom syscat.views where valid = 'x' 3、 物化视图注意事项 查看表是否被物化视图使用,如果被物化视图使用。则在数据迁移之后,重建物化视图; 1) 查看该表被哪一些物化视图使用 select * from syscat.TABDEP where bname='tabname' and DTYPE='S' 2) 查看该视图代码 select text from syscat.VIEWS where viewname=’viewname’ 4、 存储过程注意事项 如果该表被存储过程调用则不影响数据迁移; 5、 删除函数,对存储过程的影响 在删除、重建函数后,必须对所有使用这个函数的存储过程进行重新编译。 找出存储过程未编译的存储过程,重新删除编译 select rtrim(a.ROUTINESCHEMA) ||'.'||rtrim(a.ROUTINENAME) procname, 'db2 "rebind package '||rtrim(a.ROUTINESCHEMA)||'.'||rtrim(b.PKGNAME)||' resolve any "' exec from (select ROUTINESCHEMA,ROUTINENAME,'P'||SUBSTR(CHAR(lib_id+10000000),2) pkgname from syscat.ROUTINES ) a, (select PKGNAME from syscat.PACKAGES where pkgname not in( select pkgname from syscat.PACKAGEDEP) and pkgschema='XDZX1') b where a.PKGNAME = b.PKGNAME