RESTART DATABASE 命令

RESTART DATABASE 命令将重新启动已异常终止且处于不一致状态的数据库。 成功完成 RESTART DATABASE时,如果用户具有 CONNECT 特权,那么应用程序将保持与数据库的连接。

作用域

此命令仅影响运行该命令的数据库分区。 在 Db2® pureScale® 环境中,此命令将恢复所有暂挂成员的 I/O 写操作。

Db2 pureScale 环境中,此命令可能会在需要时触发组崩溃恢复 (对组的所有成员执行崩溃恢复) 或成员崩溃恢复。

权限

无。

需要的连接

此命令会建立数据库连接。

命令语法

Read syntax diagramSkip visual syntax diagramRESTARTDATABASEDBdatabase-aliasUSERusernameUSINGpasswordDROP PENDING TABLESPACES(,tablespace-name)WRITE RESUME

命令参数

DATABASE database-alias
标识要重新启动的数据库。
USER username
标识要在其下重新启动数据库的用户名。
USING password
用于认证 username的密码。 如果省略了密码,那么将提示用户输入。
DROP PENDING TABLESPACES tablespace-name
指定即使迂到表空间容器问题,也要成功完成数据库重新启动操作。

如果在重新启动过程中指定表空间的容器发生问题,那么在重新启动操作之后,相应的表空间将不可用 (它将处于删除暂挂状态)。 如果表空间处于删除暂挂状态,那么唯一可能的操作是删除表空间。

如果在成员崩溃恢复期间容器发生问题,那么成员崩溃恢复操作将失败。 要更正此情况,请使用 db2stop -force 命令关闭所有成员,然后通过重新发出 RESTART DATABASE 命令来手动启动组崩溃恢复。 在组崩溃恢复之后,与有问题的容器对应的表空间将不可用 (有关更多信息,请参阅 "使用损坏的表空间进行恢复" 主题)。

在循环日志记录的情况下,有问题的表空间将导致重新启动失败。 如果重新启动数据库操作由于容器问题而失败,那么可以在管理通知日志中找到问题表空间名称的列表。 如果数据库中只有一个系统临时表空间,并且它处于删除暂挂状态,那么必须在成功执行数据库重新启动操作之后立即创建新的系统临时表空间。

WRITE RESUME
对在暂挂 I/O 写操作时崩溃的数据库强制重新启动。 在执行崩溃恢复之前,此参数将恢复 I/O 写操作。 在 Db2 pureScale 环境中,此参数用于恢复所有暂挂成员的 I/O 写操作。

如果用于暂挂 I/O 写操作的连接当前处于挂起状态,并且所有后续连接尝试也处于挂起状态,那么还可以使用 WRITE RESUME 参数。 在此情况下使用该参数时, RESTART DATABASE 命令将恢复数据库的 I/O 写操作,而不执行崩溃恢复。 带有 WRITE RESUME 参数的 RESTART DATABASE 命令仅在数据库崩溃后使用时执行崩溃恢复。

使用说明

如果尝试连接到数据库时返回指示必须重新启动数据库的错误消息,请发出此命令。 仅当与此数据库的先前会话异常终止 (例如,由于电源故障) 时,才会生成此错误消息。

Partitioned database environments

在分区数据库系统上,要解决不确定事务,应在所有数据库分区上发出 RESTART DATABASE 命令,如以下示例中所示:

db2_all "db2 restart database database-alias"

如果仅在分区数据库环境中的单个数据库分区上重新启动数据库,那么可能会在后续数据库查询上返回一条指示必须重新启动数据库的消息。 由于未在查询所依赖的数据库分区上重新启动数据库,因此返回此消息。 在所有数据库分区上重新启动数据库可解决此问题。

Db2 pureScale environments

Db2 pureScale 环境中, RESTART DATABASE 命令是手动调用崩溃恢复的唯一方法。 数据库管理器会自动确定是需要组崩溃恢复还是成员崩溃恢复。 在组崩溃恢复完成后,如果未执行组崩溃恢复的任何成员上存在任何不确定事务,那么必须对这些成员执行成员崩溃恢复以启用这些不确定事务的解决。

如果数据库的写操作在崩溃时处于暂挂状态,请使用 RESTART DATABASE 命令执行崩溃恢复。 如果 SET WRITE SUSPEND 操作正在另一个成员上运行,那么您可能必须在执行崩溃恢复之前等待 SET WRITE SUSPEND 操作完成。 完成后,提交带有 WRITE RESUME 参数的 RESTART DATABASE 命令以重新启动数据库并恢复所有暂挂成员的写操作。

如果在崩溃时在数据库上成功暂挂了写操作,那么可以通过两种方法来执行崩溃恢复:
  • 您可以将 RESTART DATABASE 命令与 WRITE RESUME 参数配合使用。
  • 您可以从活动成员发出带有 RESUME 参数的 SET WRITE 命令,然后从崩溃的成员发出 RESTART DATABASE 命令。