从Data Studio访问RESTORED数据库

时间:2018-04-10 14:43:26

标签: db2 db2-luw

我已将db2 express-c 11.1版本的db恢复为db2开发人员版本。我可以从db2 cmd访问表和数据,但是当我在IBM DATA Studio中尝试访问表/ view / ...时收到以下错误消息。

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)

2 个答案:

答案 0 :(得分:1)

将Db2-LUW数据库成功还原到新的Db2实例后,最好确保将所有IBM提供的绑定文件重新绑定到数据库。

CLI绑定文件是Db2客户端的一部分,确保您的Db2客户端版本/修订包与Db2服务器的版本匹配是明智的。

如果restore-database的Db2-version或Db2-fixpack与原始数据库不同,则重新绑定CLI实用程序至关重要。

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

另一个有用的活动是,如果Db2版本或修订包已更改,则重新验证数据库对象。有一个存储过程,请参阅详细信息here

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

答案 1 :(得分:0)

我在这里遵循了mao的回答,但没有帮助。 帮助重新绑定所有软件包,然后重新验证它们。

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

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()