Db2 从DataStudio访问还原的数据库

Db2 从DataStudio访问还原的数据库,db2,db2-luw,Db2,Db2 Luw,我已经将一个db从DB2Express-C11.1版本恢复到DB2Developer版本。我可以从DB2CMD访问表和数据,但是当我在尝试访问tables/view/时收到以下错误消息时。。。在IBMDataStudio中 com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-20249, SQLSTATE= , SQLERRMC=NULLID.SYSSH200, DRIVER=3.69.56 at com.ibm.db2.jc

我已经将一个db从DB2Express-C11.1版本恢复到DB2Developer版本。我可以从DB2CMD访问表和数据,但是当我在尝试访问tables/view/时收到以下错误消息时。。。在IBMDataStudio中

com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-20249, SQLSTATE=     , SQLERRMC=NULLID.SYSSH200, DRIVER=3.69.56
at com.ibm.db2.jcc.am.gd.a(Unknown Source)
at com.ibm.db2.jcc.am.gd.a(Unknown Source)
at com.ibm.db2.jcc.am.gd.a(Unknown Source)
at com.ibm.db2.jcc.am.yo.c(Unknown Source)
at com.ibm.db2.jcc.t4.bb.p(Unknown Source)
at com.ibm.db2.jcc.t4.bb.h(Unknown Source)
at com.ibm.db2.jcc.t4.bb.b(Unknown Source)
at com.ibm.db2.jcc.t4.p.a(Unknown Source)
at com.ibm.db2.jcc.t4.vb.i(Unknown Source)
at com.ibm.db2.jcc.am.yo.ib(Unknown Source)
at com.ibm.db2.jcc.am.yo.a(Unknown Source)
at com.ibm.db2.jcc.am.yo.a(Unknown Source)
at com.ibm.db2.jcc.am.yo.executeQuery(Unknown Source)
at org.eclipse.datatools.connectivity.sqm.internal.core.connection.StatementAdapter.executeQuery(Unknown Source)
at com.ibm.datatools.internal.core.prs.PRSDatabaseLoader.processQuery(Unknown Source)
at com.ibm.datatools.internal.core.prs.PRSDatabaseLoader.initiateQuery(Unknown Source)
at com.ibm.datatools.internal.core.prs.PRSQueryInfo.getSlice(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentQueryCache.getSlice(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSet.createSlice(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSet.isClosed(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSet.checkNotClosed(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSet.absolute(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSet.relative(Unknown Source)
at com.ibm.datatools.internal.core.util.PersistentResultSetAdapter.next(Unknown Source)
at com.ibm.datatools.core.db2.luw.load.catalog.LUWCatalogDatabase.loadSchemas(Unknown Source)
at com.ibm.datatools.core.db2.luw.load.catalog.LUWCatalogDatabase.getSchemas(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.LoadUtility$9.basicLoad(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.ChildrenLoader.load(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.LoadManager$LevelLoader.load(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.LoadManager$LevelLoader.doWork(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.LoadManager$LevelLoader.access$0(Unknown Source)
at com.ibm.datatools.uom.internal.content.loadmgr.LoadManager$LevelLoader$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

成功地将DB2LUW数据库恢复到新的Db2实例后,明智的做法是确保将IBM提供的所有BindFile重新绑定到数据库

CLI绑定文件是Db2客户机的一部分,确保Db2客户机版本/补丁包与Db2服务器的版本/补丁包匹配是明智的

如果还原数据库的Db2版本或Db2 fixpack与原始数据库不同,则重新绑定CLI实用程序是必不可少的

要重新绑定CLI实用程序,请按照IBM的说明重新绑定CLI包

另一个有用的活动是在Db2版本或fixpack发生更改时重新验证数据库对象。这有一个存储过程,请参阅详细信息


注意:如果数据库包含SQL PL存储过程或静态SQL包,则可能还需要重新绑定这些包以利用任何Db2版本差异。有不同的方法可以做到这一点,但有一种方法是使用,这应该只在可以验证结果的开发/测试环境中进行。

我遵循了这里写的答案,但没有帮助。 帮助的是重新绑定所有包,然后重新验证它们

可以使用以下命令重新绑定所有包:

db2 connect to SAMPLE

db2 -x "select 'REBIND PACKAGE ' || rtrim(pkgschema) || '.' || rtrim(pkgname) || ';' as command from syscat.packages" > rebind.sql

db2 -tvf rebind.sql
重新绑定后,使用以下系统存储过程重新验证所有对象:

CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()

我执行了db2 bind“%DB2PATH%\bnd\@db2cli.lst”命令,阻止了所有的grant public,它为db2cli.lst输出以下结果行消息-------------------------------------------------------------------SQL0061W绑定正在进行中。SQL0091N绑定以“0”错误和“0”警告结束。db2=>bind db2schema.bnd阻塞了所有的grant public,但我仍然收到相同的错误消息,您还必须重新绑定其他提供的文件,例如引用文档页面上提到的db2clipk.bnd。还有db2ubind.lst要绑定,请参阅