从多个事务日志中恢复ASA(sql anywhere)数据库

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从多个事务日志中恢复

--------------------------------------------------------------------------------

Adaptive Server Anywhere 8.0.0 及更高版本允许事务跨越多个事务日志文件。如果在一个事务中途备份数据库,则该事务可能会跨越两个事务日志文件。发生这种情况时,事务的第一部分将包含在脱机事务日志中,而第二部分将包含在联机事务日志中。

如果您需要恢复数据库并且有多个事务日志,则必须将事务日志文件按照正确的顺序 应用到数据库的备份副本,以备有跨越多个事务日志的事务。如果事务日志未按正确顺序应用,则跨越多个事务日志的事务部分将被回退。

您可以使用 dbtran 实用程序确定事务日志文件的生成顺序。该实用程序生成的 SQL 脚本会显示事务日志中最早的日志偏移,这可作为确定多个日志文件的生成顺序以确保按正确顺序应用它们的有效方法。还可以使用这些脚本确定事务日志是否包含跨越事务日志的事务。

有关详细信息,请参见事务日志实用程序。

为了在从多个事务日志中恢复数据库时维持数据的完整性,您可以使用 -a 服务器选项将各个日志分别应用于数据库的备份副本,或者使用翻译日志文件实用程序 (dbtran) 将一个或多个事务日志翻译成一个 .SQL 文件,该文件可应用于数据库的备份副本。

使用 -a 服务器选项从多个事务日志中恢复
使用 -a 服务器选项可以通过将单个事务日志文件应用于数据库的备份副本来恢复数据库。当指定此选项时,数据库服务器应用该日志并随后终止 — 服务器将不再继续运行。如果拥有多个事务日志,则必须按照正确的顺序(从最旧到最新)每次应用一个日志。

使用 -a 服务器选项从多个事务日志中恢复
使用 -a 启动数据库服务器,以便将备份事务日志应用于数据库的备份副本。

启动数据库服务器并将当前事务日志应用于数据库的备份副本。

有关详细信息,请参见 -a 恢复选项。

示例
下面的示例使用 -a 数据库服务器选项将脱机(备份)事务日志和当前事务日志应用于示例数据库的备份副本。

启动数据库服务器并将名为 backupasademo.log 的备份事务日志应用于名为 backupasademo.db 的数据库的备份副本:

dbeng9 -a backupasademo.log backupasademo.db该数据库服务器将备份事务日志应用于数据库的备份副本,并随后关闭。

启动数据库服务器并将名为 asademo.log 的当前事务日志应用于数据库的备份副本:

dbeng9 -a asademo.log backupasademo.db该数据库服务器将当前事务日志应用于数据库的备份副本,并随后关闭。

使用 dbtran 实用程序从多个事务日志中恢复
为了在使用 dbtran 翻译多个事务日志

时维持数据的完整性,必须指定 -m 和 -n 选项。-m 选项指示翻译日志文件实用程序生成一个文件(由 -n 命名),它包含来自指定目录中的日志的所有事务。

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

有关详细信息,请参见事务日志实用程序。

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

启动数据库的备份副本。

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

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

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

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

dbeng9 backupasademo.db在 Interactive SQL 中,将 recoverylog.sql 文件应用于数据库:

dbisql "uid=dba;pwd=sql;eng=backupasademo" READ recoverylog.sql
--------------------------------------------------------------------------------

相关文档
最新文档