【问题标题】:DB2 backup via JDBC?通过 JDBC 进行 DB2 备份?
【发布时间】:2012-12-28 18:10:19
【问题描述】:

我正在尝试做的事情:找到一种通过 JDBC 命令/查询备份 DB2 数据库的方法。这是我用 DB2 命令行程序测试过的命令:

将数据库 dbName 备份到 C:\backup\db2

它在命令行上运行良好,但是当尝试在 Data Studio 中或通过独立的 JDBC 程序运行它时,它会失败。这是 JDBC 异常消息:

SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: 备份数据库 dbName 到 C:/;BEGIN-OF-STATEMENT;

Data Studio 抱怨需要“JOIN”而不是“dbName”,以及其他一些问题。我还没有找到任何有关 DB2 的有用文档,这就是我来这里的原因。

以前有没有人遇到过这个问题并想出如何解决这个问题?还是我错过了什么?

【问题讨论】:

  • 是的,我知道了,这就是我知道与 DB2 命令行工具一起使用的语法的原因。但除非我在该页面上遗漏了什么,否则没有任何信息可以帮助我使用 Data Studio 或 JDBC。
  • 您可能需要分两步完成此操作。 1) 将 DB2 数据库备份到数据库所在的同一系统。 2) FTP 备份到您的计算机。我不相信您可以通过 JDBC 备份 DB2 数据库。
  • 我可以将备份与 DB2 实例放在同一个盒子上。对不起,应该在前面提到。我只需要通过 JDBC 运行备份。

标签: jdbc db2 ibm-data-studio


【解决方案1】:

尝试使用 admin_cmd 过程:

CALL SYSPROC.ADMIN_CMD('backup db mydatabase to c:\backup\db2\')

这也适用于 JDBC 驱动程序。

【讨论】:

  • CALL SYSPROC.ADMIN_CMD('quiesce db immediate force connections'); CALL SYSPROC.ADMIN_CMD('backup db dbName to c:\backup\db2\'); CALL SYSPROC.ADMIN_CMD('unquiesce db'); 给我“不允许在线备份,因为数据库不可恢复或备份挂起条件生效.. SQLCODE=-2413, SQLSTATE=, DRIVER=3.63.108”我'已经重新启动了 DB2,所以不应该有挂起的条件,而且显然脱机备份是默认设置。我正准备把这个东西从屋顶上扔掉——哈哈。
  • 首先,quiesce 不会阻止管理员用户使用数据库。您很可能使用默认帐户连接到数据库 - 该帐户不会被静默阻止。如果您想这样做,您必须创建一个新用户,将其用于所有连接,然后静默将正常工作。
  • 其次,即使是开发数据库,​​通常最好在可恢复模式下使用,除非您在开发时批量加载/卸载大量数据。 (见pic.dhe.ibm.com/infocenter/db2luw/v9r7/… )这是因为数据库更肯定会从崩溃等中恢复。简化后,事务日志将被保存(设置为LOGARCHMETH1)并且数据库产品将能够及时来回回滚您的所有更改。
  • 第三,默认为离线,但您可以在命令中添加参数 ONLINE(如果设置了 logarchmeth1 并且您已经进行了第一次离线备份)并且您将永远不需要静默进行备份。如果您想要“单个可恢复的备份文件”,请查看“包含日志”选项。 :)
  • 您,先生(或女士)是我的英雄。非常感谢您花时间给我一个彻底的答复,最终帮助我解决了这个问题:)
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
相关资源
最近更新 更多