Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 维护数据库 » 备份和数据恢复 » 恢复数据库 » 通过多个事务日志恢复数据库

 

使用 dbtran 实用程序来通过多个事务日志恢复数据库

为了在使用 dbtran 翻译多个事务日志时保持数据的完整性,必须同时指定 -m 和 -n 选项。-m 选项指示翻译日志文件实用程序 (dblog) 生成一个包含指定目录内的日志中的所有事务的文件(由 -n 命名)。

需要使用 -m,因为如果使用 dbtran 分别翻译每个日志,则跨越事务日志文件的任何事务都可能被回退。当 dbtran 翻译日志时,在日志的末尾处将添加 ROLLBACK 语句以撤消任何未提交的事务。针对事务跨越两个日志的情况,会在第二个日志文件中发生对事务的 COMMIT。第一个日志文件末尾处的操作将被 dbtran 回退,因为该文件不包含对事务的 COMMIT。使用 -m 翻译目录中的所有事务日志文件可以确保所有事务都会被翻译。请参见事务日志实用程序 (dblog)

♦  使用 dbtran 实用程序从多个事务日志中恢复:
  1. 针对包含事务日志文件的目录运行翻译日志文件实用程序 (dbtran),并将生成的 SQL 语句输出到 .sql 文件中。

  2. 启动数据库的备份副本。

  3. 在 Interactive SQL 中,将步骤 1 中由 dbtran 生成的 .sql 文件应用于数据库的备份副本。

示例

以下示例使用 dbtran 实用程序将备份事务日志和当前事务日志应用于数据库的备份副本。

  1. 针对 c:|backup 目录运行翻译日志文件实用程序,并将 SQL 语句输出到名为 recoverylog.sql 的文件中:

    dbtran -m "c:\backup" -n recoverylog.sql
  2. 启动名为 backupdemo.db 的数据库的备份副本:

    dbeng11 backupdemo.db
  3. 在 Interactive SQL 中,将 recoverylog.sql 文件应用于数据库:

    dbisql -c "UID=DBA;PWD=sql;ENG=backupdemo" READ recoverylog.sql
另请参见