RESTORE DATABASE 命令
RESTORE DATABASE 命令复原使用 Db2 备份实用程序备份的数据库。 复原的数据库与创建备份副本时所处的状态相同。 RESTORE DATABASE 命令还可用于对现有数据库进行加密。
- 使用另一映像来覆盖数据库或将备份副本复原至新数据库。
- 在 Db2® 版本 11.5 中创建的备份映像。 Db2 版本 10.5、 11.1 或 11.5 中创建的备份映像。
- 如果需要数据库升级,那么会在复原操作结束时自动启动该数据库。
- 如果在备份操作时启用了数据库以进行前滚恢复,那么可以使数据库进入其先前状态。 此操作通过在成功完成复原操作后启动前滚实用程序来完成。
- 复原表空间级别备份。
- 传输一组表空间,存储器组和 SQL 模式 通过使用 TRANSPORT 选项 (在 Db2 版本 9.7 修订包 2 和更高版本的修订包中) 从数据库备份映像到数据库。 这 TRANSPORTDb2 pureScale® 环境或分区数据库环境不支持此选项。
- 如果发出此命令时数据库名称已存在,那么它将替换并重新定义所有存储器组 (如生成备份映像时一样) ,除非用户另有重定向。
有关不同复原操作的更多信息,请参阅 不同操作系统和硬件平台之间的备份和复原操作。
当操作系统或字大小 (32 位或 64 位) 存在差异时,无法复原从上次捕获时捕获差异的增量映像和映像 (称为 增量映像
)。
在从一个环境成功复原到另一个环境后,在进行非增量备份前,不允许进行增量备份或差异备份。 (在同一环境中执行复原操作之后,不存在此限制)。
即使成功地将操作从一个环境复原到另一个环境,也存在一些注意事项: 必须先重新绑定程序包,然后才能使用 (使用 BIND 命令, REBIND 命令或 db2rbind 实用程序); 必须删除并重新创建 SQL 过程; 必须在新平台上重建所有外部库。 (在同一环境中执行复原操作期间不存在这些注意事项)。
在现有数据库和现有容器上运行的复原操作将复用相同的容器和表空间映射。
针对新数据库运行的复原操作将重新查询所有容器并重建优化的表空间映射。 在缺少一个或多个容器的现有数据库上运行的复原操作也会重新获取所有容器,并重建优化的表空间映射。
作用域
此命令会影响运行该命令的节点。
您无法联机复原 SYSCATSPACE。
授权
- SYSADM
- SYSCTRL
- SYSMAINT
- SYSADM
- SYSCTRL
需要的连接
所需连接因复原操作的类型而异:
- 您需要数据库连接才能复原到现有数据库。 此命令自动建立与指定数据库的互斥连接。
- 您需要实例和数据库连接才能复原到新数据库。 需要实例连接才能创建数据库。
要复原到与当前实例不同的实例上的新数据库,必须首先连接到新数据库所在的实例。 新实例可为本地实例或远程实例。 当前实例是由 DB2INSTANCE 环境变量的值定义的。
- 对于快照复原,需要实例和数据库连接。
命令语法
命令参数
- DATABASE source-database-alias
- 根据其建立备份的源数据库的别名。
- CONTINUE
- 指定重新定义容器,并且可以执行重定向复原操作中的最终步骤。
- ABORT
- ABORT 参数:
- 停止“重定向复原”操作。 当发生需要重复一个或多个步骤的错误时,此操作很有用。 发出带有 ABORT 选项的 RESTORE DATABASE 后,必须重复重定向复原操作的每个步骤,包括带有 REDIRECT 选项的 RESTORE DATABASE 。
- 在增量复原操作完成前将其终止。
- USER username
- 指定用于连接到数据库的用户名。
- USING password
- 用于认证用户名的密码。 如果省略了密码,那么将提示用户输入。
- REBUILD WITH ALL TABLE SPACES IN DATABASE
- 使用映像时数据库已知的所有表空间复原数据库。 此复原将覆盖数据库 (如果存在)。
- REBUILD WITH ALL TABLE SPACES IN DATABASE EXCEPT rebuild-tablespace-clause
- 使用在映像时数据库已知的所有表空间 (列表中指定的表空间除外) 复原数据库。 此复原将覆盖数据库 (如果存在)。
- REBUILD WITH ALL TABLE SPACES IN IMAGE
- 复原仅包含映像中表空间的数据库。 此复原将覆盖数据库 (如果存在)。
- REBUILD WITH ALL TABLE SPACES IN IMAGE EXCEPT rebuild-tablespace-clause
- 复原仅包含映像中表空间的数据库,但列表中指定的表空间除外。 此复原将覆盖数据库 (如果存在)。
- REBUILD WITH rebuild-tablespace-clause
- 复原仅带有一组指定的表空间的数据库。 此复原将覆盖数据库 (如果存在)。
- TABLE SPACE tablespace-name
- 用于指定要复原的表空间的名称列表。
如果指定 TRANSPORT 选项,那么需要表空间名称。 此选项可能需要与完全复原操作一样多的时间。
- SCHEMA schema-name
- 用于指定要复原的模式的名称列表。
如果指定 TRANSPORT 选项,那么需要模式名称。 仅当指定了 TRANSPORT 选项,SCHEMA 选项才有效。
- ONLINE
- 此关键字只可在执行表空间级的复原操作时应用。指定该关键字可联机复原备份映像。 这意味着在复原备份映像时,其他代理程序可以连接到数据库,并且在复原指定的表空间时,其他表空间中的数据可用。
- HISTORY FILE
- 指定此关键字,以从备份映像中只复原历史记录文件。
- COMPRESSION LIBRARY
- 指定此关键字,以从备份映像中只复原压缩库。 如果该对象存在于备份映像中,那么会将其复原到数据库目录中。 如果该对象在备份映像中不存在,那么复原操作将失败。
- LOGS
- 指定此关键字以仅复原备份映像中包含的日志文件集。 如果备份映像不包含任何日志文件,那么复原操作将失败。 如果指定了此选项,那么还必须指定 LOGTARGET 选项。 此选项可能需要与完全复原操作一样多的时间。
- INCREMENTAL
- 在没有额外参数的情况下, INCREMENTAL 参数指定手动累积复原操作。 在手动复原期间,必须针对复原中涉及的每个映像手动发出每个复原命令。 您必须先复原最后一个映像以抽取容器信息,然后按以下顺序继续操作: 第一,第二,第三,依此类推,直至并包括最后一个映像。 有关更多信息,请参阅 从增量备份复原。
- INCREMENTAL AUTOMATIC/AUTO
- 指定自动累积复原操作。
- INCREMENTAL ABORT
- 指定正在进行的手动累积复原操作异常中止。
- USE
- TSM
- 指定使用 Tivoli Storage Manager (TSM) 作为目标设备恢复数据库。
- XBSA
- 指定将使用 XBSA 接口。 Backup Services API (XBSA) 是一个开放式应用程序编程接口,用于需要数据存储管理以进行备份或归档的应用程序或设施。
- SNAPSHOT
- 指定将从快照备份复原数据。不能将 SNAPSHOT 参数与以下任一参数配合使用:
- TABLESPACE
- INCREMENTAL
- TO
- ON
- DBPATH ON
- INTO
- NEWLOGPATH
- WITH 缓冲区数量 BUFFERS
- BUFFER
- REDIRECT
- REPLACE HISTORY FILE
- COMPRESSION LIBRARY
- PARALLELISM
- COMPRLIB
- OPEN 会话数 SESSIONS
- HISTORY FILE
- LOGS
另外,不能将 SNAPSHOT 参数与任何涉及到表空间列表的复原操作(包括 REBUILD WITH 选项)一起使用。
从快照备份映像复原数据时的缺省行为是对构成数据库的所有路径进行完全数据库脱机复原。 此脱机复原包含所有容器,本地卷目录和数据库路径 (DBPATH)。 除非指定 LOGTARGET INCLUDE 参数,否则将从快照复原中排除日志。 LOGTARGET EXCLUDE 参数是所有快照复原的缺省值。 如果您提供时间戳记,那么具有该时间戳记的快照备份映像将用于复原。
- LIBRARY library-name
- 集成到 IBM® Data Server 中的是用于以下存储硬件的 Db2 ACS API 驱动程序:
- IBM TotalStorage SAN Volume Controller
- IBM Enterprise Storage Server ® 800 型
- IBM Storwize ® V7000
- IBM系统存储DS6000
- IBM System Storage DS8000®
- IBM System Storage N 系列
- IBM XIV ®
如果您具有其他存储器硬件以及适用于该存储器硬件的 DB2 ACS API 驱动程序,那么您可以使用 LIBRARY 参数来指定 DB2 ACS API 驱动程序。
LIBRARY 参数的值是标准库文件名。
- SCRIPT script-name
- 能够执行快照复原操作的可执行脚本的名称。 脚本名称必须是标准文件名。
- OPTIONS
- "选项字符串 "
- 指定要用于复原操作的选项。 传递字符串的方式与输入的内容完全相同,不带双引号。
- @file-name
- 指定要用于复原操作的选项包含在 Db2 服务器上的文件中。 该字符串将传递到供应商支持库。 该文件必须是标准文件名。
不能使用 VENDOROPT 数据库配置参数对快照复原操作指定特定于供应商的选项。 必须改用 RESTORE 实用程序的 OPTIONS 参数。
- OPEN num-sessions SESSIONS
- 指定将与 TSM 或供应商产品一起使用的 I/O 会话的个数。
- FROM directory/pipename/device/remote-storage
备份映像所在的目录,命名管道或设备的标准路径名。 仅在 Unix 和 Linux 平台上支持从命名管道复原备份映像。
如果省略了 USE TSM、FROM 和 LOAD,那么缺省值为客户机的当前工作目录。 此目标目录或设备必须存在于目标服务器或实例上。
要从 "IBM Cloud Object Storage或 "Amazon Simple Storage Service"(S3)等远程存储恢复,请使用存储访问别名指定远程存储位置。 用于指定远程存储位置的语法为
DB2REMOTE://<alias>/<container>/<object>。 有关更多信息,请参阅 远程存储器需求。如果指定了若干项,而最后一项是磁带设备,那么将提示用户放入另一磁带。 有效的响应选项为:- c
- 继续 - 继续使用生成警告消息的设备 (例如,安装新磁带时继续)。
- d
- 设备终止 - 停止使用生成警告消息的设备 (例如,当没有更多磁带时终止)。
- t
- 终止 - 在用户无法执行实用程序请求的某些操作后,异常中止复原操作。
- LOAD shared-library
- 包含要使用的供应商备份和复原 I/O 功能的共享库 (Windows 操作系统上的 DLL) 的名称。 该名称可包含完整路径。 如果未提供完整路径,该值将缺省为用户出口程序所在的路径。
- TAKEN AT date-time
- 数据库备份映像的时间戳记。 该时间戳记会在备份操作成功完成后显示,并且是备份映像路径名的组成部分。 以格式
yyyymmddhhmmss 指定。 还可以指定部分时间戳记。 例如,如果存在两个具有时间戳记 20021001010101 和 20021002010101 的不同备份映像,那么指定
20021002将导致使用时间戳记为20021002010101的映像。 如果未指定此参数的值,源介质上必须只有一个备份映像。 - TO target-directory
- 此参数表示目标数据库目录。 如果实用程序复原到一个现有数据库,将忽略此参数。 指定的驱动器和目录必须是本地的。 如果备份映像包含启用了自动存储器的数据库,那么仅数据库目录会更改。 与数据库关联的存储路径不会更改。
- DBPATH ON target-directory
- 此参数表示目标数据库目录。 如果实用程序复原到一个现有数据库,将忽略此参数。 指定的驱动器和目录必须是本地的。 如果备份映像包含为自动存储器启用的数据库,并且未指定参数 ON,那么此参数与 TO 参数同义,并且仅数据库目录发生更改。 与数据库关联的存储路径不会更改。 请勿在指定路径中包含实例名称,数据库分区号或日志流标识。 Db2 将自动将这些内容添加到您提供的路径中。 例如,如果您提供的路径为 "/home/dbuser", Db2 添加必需子目录后的最终路径将为 "/home/dbuser/prod/NODE0000/LOGSTREAM0000/"。
- ON path-list
此参数重新定义与数据库关联的存储路径。 如果数据库包含多个存储器组,那么此选项会将所有存储器组重定向到指定的路径,以便每个定义的存储器组都使用 path-list 作为其新的存储器组路径。 将此参数与未定义或未启用自动存储器的存储器组的数据库配合使用会导致错误 (SQL20321N)。 不再使用备份映像中定义的现有存储路径,自动存储器表空间自动重定向至新路径。 如果没有为自动存储器数据库指定此参数,那么存储路径将保留为在备份映像中定义的路径。 如果没有此参数,当路径可能未更改时,可以在复原期间重新平衡路径上的数据和容器。 有关重新平衡条件,请参阅 在自动存储器数据库的 RESTORE 期间进行重新平衡。
可指定一个或多个路径,各个路径之间用逗号分隔。 每个路径必须有绝对路径名称且该路径必须在本地。
如果此选项与 REDIRECT 选项一起指定,那么此选项将在初始 RESTORE ... REDIRECT 命令返回到调用者之前以及在发出任何 SET STOGROUP PATHS 或 SET TABLESPACE CONTAINERS 语句之前生效。 之后,如果重定向了任何存储器组路径,那么这些修改将覆盖在初始 RESTORE ... ON path-list 命令中指定的任何路径。
在复原操作期间重新定义其路径的任何存储器组都没有在后续前滚操作期间重放的任何与存储路径相关的操作。
如果磁盘上不存在数据库,并且未指定 DBPATH ON 参数,那么将使用第一个路径作为目标数据库目录。 请勿在指定路径中包含实例名称,数据库分区号或日志流标识。 Db2 将自动将这些内容添加到您提供的路径中。 例如,如果您提供的路径为 "/home/dbuser", Db2 添加必需子目录后的最终路径将为 "/home/dbuser/prod/NODE0000/LOGSTREAM0000/"。
对于多分区数据库,只能在目录分区上指定 ON path-list 选项。 使用 ON 选项时,必须先存储目录分区,然后才能复原任何其他分区。 使用新存储路径复原目录分区会将所有非目录数据库分区置于 RESTORE_PENDING 状态。 然后,可以在不指定 RESTORE 命令中的 ON 子句的情况下并行复原非目录数据库分区。
通常,必须对多分区数据库中的每个分区使用相同的存储路径,并且在运行 RESTORE DATABASE 命令之前这些存储路径必须全部存在。 唯一的例外情况是在存储器路径中使用了数据库分区表达式。 如果使用数据库分区表达式,那么允许在存储路径中反映数据库分区号,以便产生的路径名在每个分区上都不同。
将 RESTORE 命令与 ON 子句一起使用与重定向复原操作意义相同。
在 HADR 环境中,如果在启用了自动存储器的多个存储路径上定义主数据库,那么防止 在复原期间重新平衡很重要。 这可以通过使用 RESTORE DATABASE 命令的 ON path-list 选项,指定与主数据库顺序相同的存储路径集 (可以通过 db2pd -db dbname -storagepaths 命令找到顺序) 来实现。 ON path-list 选项的目的是防止重新平衡,而不是让备用数据库使用另一组存储路径。
不能使用 ON 参数来重新定义模式传输的存储路径。 模式传输使用目标数据库上的现有存储路径。
- INTO target-database-alias
- 目标数据库别名。 如果目标数据库不存在,那么创建。
将数据库备份复原到现有数据库时,复原的数据库继承现有数据库的别名和数据库名称。 将数据库备份复原到不存在的数据库时,使用您指定的别名和数据库名称创建新数据库。 此新数据库名称在复原它的系统上必须唯一。
- TRANSPORT INTO target-database-alias
- 对传输操作指定现有目标数据库别名。 传输的表空间和模式将添加到数据库。
TABLESPACE 和 SCHEMA 选项必须指定用于定义有效可传输集的表空间名称和模式名称,否则传输操作会失败。 SQLCODE=SQL2590N rc=1.
无法传输系统目录。 SQLCODE=SQL2590N rc=4.
在 RESTORE 命令验证模式之后,将在目标数据库中创建描述所传输的表空间中的对象的系统目录条目。 重新创建完该模式后,目标数据库得到物理表空间容器的所有权。
将在目标数据库中重新创建所复原的表空间中包含的物理对象和逻辑对象,并将表空间定义和容器添加到目标数据库中。 如果创建对象失败或重放 DDL,那么会返回错误。
- STAGE IN staging-database
- 指定作为传输操作源的备份映像的临时登台数据库名称。 如果指定了 STAGE IN 选项,那么在传输操作完成后不会删除临时数据库。 传输完成后不再需要该数据库, DBA 可以将其删除。如果未指定 STAGE IN 选项,那么这些语句为 true:
- 数据库名称的格式为 SYSTG xxx ,其中 xxx 是整数值。
- 传输操作完成后会删除临时登台数据库。
- USING STOGROUP storagegroup-name
- 对于自动存储器表空间,此变量指定与要传输的所有表空间相关联的目标存储器组。 如果未指定该存储器组,那么会使用目标数据库的当前指定的缺省存储器组。 此子句仅适用于自动存储器表空间,且仅在模式传输操作期间有效。
标识将在其中存储表空间数据的存储器组。 storagegroup-name 必须标识存在于 TRANSPORT 操作的 target-database-alias 中的存储器组。 (SQLSTATE 42704)。 这是一部分名称。
- LOGTARGET directory
- 非快照复原:
要用作从备份映像复制活动日志文件的目标目录的数据库服务器上现有目录的绝对路径名。 如果指定此选项,那么备份映像中包含的任何活动日志文件都将复制到目标目录中。 如果未指定此选项,那么将不会复制备份映像中包含的活动日志文件。 要仅从备份映像复原活动日志文件,请指定 LOGS 选项。 此选项会自动将数据库分区号和长流标识添加到该路径。
- DEFAULT
- 将活动日志文件从备份映像复原到数据库的缺省日志目录中,例如:
/home/db2user/db2inst/NODE0000/SQL00001/LOGSTREAM0000
快照复原:
- INCLUDE
- 从快照映像复原日志目录卷。 如果指定了此选项,并且备份映像包含日志目录,那么将复原这些目录。 如果磁盘上的现有日志目录和日志文件与备份映像中的日志目录不冲突,那么它们将保持不变。 如果磁盘上的现有日志目录与备份映像中的日志目录冲突,那么将返回错误。
- EXCLUDE
- 不复原日志目录卷。 如果指定了此选项,那么不会从备份映像复原任何日志目录。 如果磁盘上的现有日志目录和日志文件与备份映像中的日志目录不冲突,那么它们将保持不变。 如果复原属于数据库的路径,并因此隐式复原日志目录,从而导致日志目录被覆盖,那么将返回错误。
- FORCE
- 在复原快照映像时,允许覆盖和替换当前数据库中的现有日志目录。 如果没有此选项,那么磁盘上与快照映像中的日志目录冲突的现有日志目录和日志文件将导致复原失败。 使用此选项来指示复原操作可以覆盖和替换那些现有的日志目录。注: 请谨慎使用此选项,并始终确保备份和归档恢复可能需要的所有日志。
- NEWLOGPATH directory
- 将用于活动日志文件和抽取日志文件并在复原操作后持久存储的目录的绝对路径名。 此参数具有与 newlogpath 数据库配置参数相同的功能。 当备份映像中的日志路径不适合在复原操作后使用时可使用此参数,例如,在该路径不再有效时或由另一数据库使用时。
如果备份映像中存在抽取日志文件,那么会将这些文件复原到此日志路径。
注: 设置 newlogpath 命令参数时,会自动将节点号追加到 logpath 参数的值。 同样地,更新 newlogpath 数据库配置参数时,也会将节点数自动追加到 logpath 参数的值。 有关更多信息,请参阅 newlogpath-更改数据库日志路径- DEFAULT
- 复原完成后,数据库将使用缺省日志目录 /home/db2user/db2inst/NODE0000/SQL00001/LOGSTREAM0000 进行日志记录。
- WITH num-buffers BUFFERS
- 将要使用的缓冲区数量。 除非显式输入值,否则 Db2 数据库系统会自动为此参数选择最佳值。 当从多个源读取时,或者如果 PARALLELISM 的值增大,那么可以使用更多缓冲区来提高性能。
- BUFFER buffer-size
- 将用于复原操作的缓冲区大小(以页计)。 除非显式输入值,否则 Db2 数据库系统会自动为此参数选择最佳值。 此参数的最小值为 8 页。
复原缓冲区大小必须是备份操作期间指定的备份缓冲区大小的正整数倍数。 如果指定了不正确的缓冲区大小,那么缓冲区将分配为最小的可接受大小。
- REPLACE HISTORY FILE
- 指定复原操作将磁盘上的历史记录文件替换为备份映像中的历史记录文件。
- REPLACE EXISTING
- 如果存在与目标数据库别名具有相同别名的数据库,那么此参数指定复原实用程序将现有数据库替换为复原的数据库。 这对于启动复原实用程序的脚本很有用,因为命令行处理器不会提示用户验证是否删除现有数据库。 如果指定了 WITHOUT PROMPTING 参数,那么不需要指定 REPLACE EXISTING,但在这种情况下,如果发生了通常需要用户干预的事件,那么操作将失败。
- REDIRECT
- 指定“重定向复原”操作。 要完成重定向复原操作,此命令后跟一个或多个 SET TABLESPACE CONTAINERS 命令或 SET STOGROUP PATHS 命令,然后是带有 CONTINUE 选项的 RESTORE
DATABASE 命令。 例如:
RESTORE DB SAMPLE REDIRECT SET STOGROUP PATHS FOR sg_hot ON '/ssd/fs1', '/ssd/fs2' SET STOGROUP PATHS FOR sg_cold ON '/hdd/path1', '/hdd/path2' RESTORE DB SAMPLE CONTINUE如果自生成备份映像以来重命名了存储器组,那么在 SET STOGROUP PATHS 命令中指定的存储器组名将引用备份映像中的存储器组名,而不是最新的名称。
必须从同一窗口或 CLP 会话启动与单个重定向复原操作相关联的所有命令。
- GENERATE SCRIPT script
- 使用指定的文件名创建重定向复原脚本。 脚本名称可以是相对或绝对的,并且脚本是在客户端上生成的。 如果无法在客户机端创建文件,那么将返回错误消息 (SQL9304N)。 如果文件已经存在会被覆盖掉。 有关更多信息,请参阅以下示例。
- WITHOUT ROLLING FORWARD
- 指定在成功复原数据库后不将其置于前滚暂挂状态。
如果在成功执行复原操作之后,数据库处于前滚暂挂状态,那么必须先启动 ROLLFORWARD 命令,然后才能再次使用该数据库。
如果在从联机备份映像复原时指定了此选项,那么将返回错误 SQL2537N 。
如果备份映像是可恢复数据库,那么不能使用 REBUILD 选项指定 WITHOUT ROLLING FORWARD 。
- PARALLELISM n
- 指定将在复原操作期间创建的缓冲区操纵程序的数量。 除非您显式地输入一个值,否则 DB2 数据库系统将自动为此参数选择最佳值。
- COMPRLIB | ENCRLIB name
- 指示用于解压缩或解密备份映像的库的名称。 以下库的路径为 $HOME/sqllib/lib。
- 加密库: libdb2encr.so (适用于基于 Linux® 或 UNIX 的操作系统); libdb2encr.a (适用于 AIX®); db2encr.dll (适用于 Windows 操作系统)
- 压缩库: libdb2compr.so (适用于基于 Linux 或 UNIX 的操作系统); libdb2compr.a (适用于 AIX); db2compr.dll (适用于 Windows 操作系统)
- 加密和压缩库: libdb2compr_encr.so (适用于基于 Linux 或 UNIX 的操作系统); libdb2compr_encr.a (适用于 AIX); db2compr_encr.dll (适用于 Windows 操作系统)
- 加密和 NX842 压缩库: libdb2nx842_encr.a (对于 AIX)
- 基于 ZLIB 的压缩库: libdb2zcompr.so (适用于 Linux 或基于 UNIX 的操作系统); libdb2zcompr.a (适用于 AIX); db2zcompr.dll (适用于 Windows 操作系统)
- 基于加密和 ZLIB 的压缩库: libdb2zcompr_encr.so (适用于 Linux 或基于 UNIX 的操作系统); libdb2zcompr_encr.a (适用于 AIX); db2zcompr_encr.dll (适用于 Windows 操作系统)
- COMPROPTS | ENCROPTS string
- 描述在解压或解密库中传递到初始化例程的二进制数据块。 Db2 数据库系统将此字符串直接从客户机传递到服务器。 任何字节反转或代码页转换问题都由库处理。 如果数据块的第一个字符为
@
,那么 Db2 数据库系统会将其余数据解释为服务器上找到的文件的名称。 然后, Db2 数据库系统会将数据块的内容替换为此文件的内容,并改为将新值传递到初始化例程。 字符串的最大长度为 1024 字节。对于缺省 Db2 库 libdb2compr_encr.so, libdb2zcompr_encr.so, 或 libdb2nx842_encr.a (压缩和加密) 或 libdb2encr.so (仅加密) , ENCROPTS 变量的格式如下所示:Master Key Label=label-name注: libdb2zcompr_encr.so 库在 Db2 11.5.7 和更高版本中可用。主密钥标签是可选的。 如果未指定主密钥标签,那么数据库管理器将在密钥库中查找用于创建备份映像的主密钥标签。 如果您正在使用其他库,那么 ENCROPTS 变量的格式取决于这些库。 - NO ENCRYPT
- 指定将加密数据库复原到非加密的新数据库或现有数据库中。 除非使用表空间复原指定了模式传输,并且目标数据库未加密,否则此选项在表空间复原时不起作用。
- ENCRYPT
- 指定要对复原的数据库进行加密。 加密包括所有系统、用户和临时表空间、索引以及所有事务日志数据。 那些表空间中的所有数据类型都会进行加密,包括长字段数据、LOB 和 XML 数据。 当复原到现有数据库时,对于表空间级别的复原操作,当指定了 传输 选项时,或者当指定了 USE SNAPSHOT 选项时,不能指定此选项。
- CIPHER
- 指定要用于对数据库进行加密的加密算法。 可以选择下列其中一个符合 FIPS 140-2 的选项:
- AES
- 高级加密标准 (AES) 算法。 这是缺省值。
- 3DES
- 三重数据加密标准 (3DES) 算法。
- MODE CBC
- 指定要用于对数据库进行加密的加密算法方式。 CBC(密码分组链接)是缺省方式。
- KEY LENGTH key-length
- 指定要用于对数据库进行加密的密钥的长度。 长度可以是下列其中一个以位指定的值:
- 128
- 仅适用于 AES
- 168
- 仅适用于 3DES
- 192
- 仅适用于 AES
- 256
- 仅适用于 AES
- MASTER KEY LABEL
- 指定主密钥的标签,该主密钥用于 保护用于 加密数据库的密钥。 与主密钥一起用于加密的加密算法始终为 AES。 如果主密钥由 Db2 数据服务器自动生成,那么它始终是 256 位密钥。
- label-name
- 唯一地标识密钥库中由 keystore_type 数据库管理器配置参数的值标识的主密钥。 label-name 的最大长度为 255 个字节。
- WITHOUT PROMPTING
- 指定复原操作将以无人照管方式运行。 那些通常需要用户干预的操作将返回一条错误消息。 如果使用可移动介质设备(例如,磁带或软盘),即使指定此选项也会在设备结束时提示用户。
示例
- 在以下示例中,数据库 WSDB 是在所有 4 数据库分区上定义的,编号为 0-3。 可从所有数据库分区访问路径 /dev3/backup 。 可以从 /dev3/backup 获取下列脱机备份映像:
要先复原目录分区,然后从 /dev3/backup 目录复原 WSDB 数据库的所有其他数据库分区,从其中一个数据库分区发出下列命令:wsdb.0.db2inst1.DBPART000.200802241234.001 wsdb.0.db2inst1.DBPART001.200802241234.001 wsdb.0.db2inst1.DBPART002.200802241234.001 wsdb.0.db2inst1.DBPART003.200802241234.001
db2_all 实用程序将对每个指定的数据库分区发出复原命令。 使用db2_all '<<+0< db2 RESTORE DATABASE wsdb FROM /dev3/backup TAKEN AT 200802241234 INTO wsdb REPLACE EXISTING' db2_all '<<+1< db2 RESTORE DATABASE wsdb FROM /dev3/backup TAKEN AT 200802241234 INTO wsdb REPLACE EXISTING' db2_all '<<+2< db2 RESTORE DATABASE wsdb FROM /dev3/backup TAKEN AT 200802241234 INTO wsdb REPLACE EXISTING' db2_all '<<+3< db2 RESTORE DATABASE wsdb FROM /dev3/backup TAKEN AT 200802241234 INTO wsdb REPLACE EXISTING'db2_all执行复原时,应始终指定 REPLACE EXISTING 和/或 WITHOUT PROMPTING。 否则,如果有提示,那么该操作看起来像挂起一样。 这是因为 db2_all 不支持用户提示。 - 以下是一个典型的重定向复原方案,用于别名为 MYDB 的数据库:
- 发出带有 REDIRECT 选项的 RESTORE DATABASE 命令。
成功完成步骤 1 之后且在完成步骤 3 之前,通过发出以下命令来中止复原操作:restore db mydb replace existing redirectrestore db mydb abort - 对必须重新定义容器的每个表空间发出 SET TABLESPACE CONTAINERS 命令。 例如:
要验证复原数据库的容器是否是在此步骤中指定的那些容器,请发出 LIST TABLESPACE CONTAINERS 命令。set tablespace containers for 5 using (file 'f:\ts3con1' 20000, file 'f:\ts3con2' 20000) - 在成功完成了步骤 1 和 2 之后,发出:
这是“重定向复原”操作的最后一步。restore db mydb continue - 如果步骤 3 失败,或者如果中止了复原操作,那么可从步骤 1 开始重新启动重定向的复原。
- 发出带有 REDIRECT 选项的 RESTORE DATABASE 命令。
- 以下示例是对可恢复数据库每周进行的增量备份策略的样本。 包括一个每周进行的完整数据库备份操作、一个每天进行的非累积(差异)备份操作以及一个在每周中期进行的累积(增量)备份操作:
要对在星期五早上创建的映像自动进行数据库复原,请发出:(Sun) backup db mydb use TSM (Mon) backup db mydb online incremental delta use TSM (Tue) backup db mydb online incremental delta use TSM (Wed) backup db mydb online incremental use TSM (Thu) backup db mydb online incremental delta use TSM (Fri) backup db mydb online incremental delta use TSM (Sat) backup db mydb online incremental use TSM
要对在星期五早上创建的映像手工进行数据库复原,请发出:restore db mydb incremental automatic use TSM taken at (Fri)restore db mydb incremental use TSM taken at (Fri) restore db mydb incremental use TSM taken at (Sun) restore db mydb incremental use TSM taken at (Wed) restore db mydb incremental use TSM taken at (Thu) restore db mydb incremental use TSM taken at (Fri) - 要产生包括日志的备份映像,以传送至远程站点:
要复原备份映像,请提供 LOGTARGET 路径并在 ROLLFORWARD 期间指定此路径:backup db sample online to /dev3/backup include logsrestore db sample from /dev3/backup logtarget /dev3/logs rollforward db sample to end of logs and stop overflow log path ( /dev3/logs ) - 要仅从包含日志的备份映像中检索活动日志文件,请执行以下操作:
restore db sample logs from /dev3/backup logtarget /dev3/logs - 在以下示例中,在数据库 SAMPLE 上为备份操作指定了三个完全相同的目标目录。 数据将被并行地备份到这三个目标目录中,并且将生成三个备份映像,其扩展名分别为 .001、.002 和 .003。
要从目标目录恢复备份映像,请发出以下命令:backup db sample to /dev3/backup, /dev3/backup, /dev3/backuprestore db sample from /dev3/backup, /dev3/backup, /dev3/backup - 可以使用 USE TSM OPTIONS 关键字指定 TSM 信息,以供复原操作使用。 在 Windows 平台上,省略 -fromowner 选项。
- 指定定界字符串:
restore db sample use TSM options '"-fromnode=bar -fromowner=dmcinnis"' - 指定标准文件:
文件 myoptions.txt 包含以下信息:restore db sample use TSM options @/u/dmcinnis/myoptions.txt-fromnode=bar -fromowner=dmcinnis
- 指定定界字符串:
- 以下是一个使用新存储路径来简单复原启用了多分区自动存储器的数据库的示例。 数据库最初使用一个存储路径 /myPath0: 来创建
- 在目录分区上发出:
restore db mydb on /myPath1,/myPath2 - 在所有非目录分区上发出:
restore db mydb
- 在目录分区上发出:
- 通过在非自动存储器数据库上执行以下命令来运行脚本:
输出将类似于以下示例:restore db sample from /home/jseifert/backups taken at 20050301100417 redirect generate script SAMPLE_NODE0000.clp-- **************************************************************************** -- ** automatically created redirect restore script -- **************************************************************************** UPDATE COMMAND OPTIONS USING S ON Z ON SAMPLE_NODE0000.out V ON; SET CLIENT ATTACH_DBPARTITIONNUM 0; SET CLIENT CONNECT_DBPARTITIONNUM 0; -- **************************************************************************** -- ** initialize redirected restore -- **************************************************************************** RESTORE DATABASE SAMPLE -- USER ‘<username>' -- USING ‘<password>' FROM ‘/home/jseifert/backups' TAKEN AT 20050301100417 -- DBPATH ON ‘<target-directory>' INTO SAMPLE -- NEWLOGPATH DEFAULT -- WITH <num-buff> BUFFERS -- BUFFER <buffer-size> -- REPLACE HISTORY FILE -- REPLACE EXISTING REDIRECT -- PARALLELISM <n> -- WITHOUT ROLLING FORWARD -- WITHOUT PROMPTING ; -- **************************************************************************** -- ** tablespace definition -- **************************************************************************** -- **************************************************************************** -- ** Tablespace name = SYSCATSPACE -- ** Tablespace ID = 0 -- ** Tablespace Type = System managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Total number of pages = 5572 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 0 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( PATH ‘SQLT0000.0' ); -- **************************************************************************** -- ** Tablespace name = TEMPSPACE1 -- ** Tablespace ID = 1 -- ** Tablespace Type = System managed space -- ** Tablespace Content Type = System Temporary data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Total number of pages = 0 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 1 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( PATH ‘SQLT0001.0' ); -- **************************************************************************** -- ** Tablespace name = USERSPACE1 -- ** Tablespace ID = 2 -- ** Tablespace Type = System managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Total number of pages = 1 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 2 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( PATH ‘SQLT0002.0' ); -- **************************************************************************** -- ** Tablespace name = DMS -- ** Tablespace ID = 3 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Auto-resize enabled = No -- ** Total number of pages = 2000 -- ** Number of usable pages = 1960 -- ** High water mark (pages) = 96 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 3 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( FILE /tmp/dms1 1000 , FILE /tmp/dms2 1000 ); -- **************************************************************************** -- ** Tablespace name = RAW -- ** Tablespace ID = 4 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Auto-resize enabled = No -- ** Total number of pages = 2000 -- ** Number of usable pages = 1960 -- ** High water mark (pages) = 96 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 4 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( DEVICE ‘/dev/hdb1' 1000 , DEVICE ‘/dev/hdb2' 1000 ); -- **************************************************************************** -- ** start redirect restore -- **************************************************************************** RESTORE DATABASE SAMPLE CONTINUE; -- **************************************************************************** -- ** end of file -- **************************************************************************** - 自动存储器数据库上以下命令的脚本输出:
输出将类似于以下示例:restore db test from /home/jseifert/backups taken at 20050304090733 redirect generate script TEST_NODE0000.clp-- **************************************************************************** -- ** automatically created redirect restore script -- **************************************************************************** UPDATE COMMAND OPTIONS USING S ON Z ON TEST_NODE0000.out V ON; SET CLIENT ATTACH_MEMBER 0; SET CLIENT CONNECT_MEMBER 0; -- **************************************************************************** -- ** initialize redirected restore -- **************************************************************************** RESTORE DATABASE TEST -- USER ‘<username>' -- USING ‘<password>' FROM ‘/home/jseifert/backups' TAKEN AT 20050304090733 ON ‘/home/jseifert' -- DBPATH ON <target-directory> INTO TEST -- NEWLOGPATH DEFAULT -- WITH <num-buff> BUFFERS -- BUFFER <buffer-size> -- REPLACE HISTORY FILE -- REPLACE EXISTING REDIRECT -- PARALLELISM <n> -- WITHOUT ROLLING FORWARD -- WITHOUT PROMPTING ; -- ***************************************************************************** -- ** storage group definition -- ** Default storage group ID = 0 -- ** Number of storage groups = 3 -- ***************************************************************************** -- ***************************************************************************** -- ** Storage group name = SG_DEFAULT -- ** Storage group ID = 0 -- ** Data tag = None -- ***************************************************************************** -- SET STOGROUP PATHS FOR SG_DEFAULT -- ON '/hdd/path1' -- , '/hdd/path2' -- ; -- ***************************************************************************** -- ** Storage group name = SG_HOT -- ** Storage group ID = 1 -- ** Data tag = 1 -- ***************************************************************************** -- SET STOGROUP PATHS FOR SG_HOT -- ON '/ssd/fs1' -- , '/ssd/fs2' -- ; -- ***************************************************************************** -- ** Storage group name = SG_COLD -- ** Storage group ID = 2 -- ** Data tag = 9 -- ***************************************************************************** -- SET STOGROUP PATHS FOR SG_COLD -- ON '/hdd/slowpath1' -- ; -- **************************************************************************** -- ** tablespace definition -- **************************************************************************** -- **************************************************************************** -- ** Tablespace name = SYSCATSPACE -- ** Tablespace ID = 0 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 4 -- ** Using automatic storage = Yes -- ** Storage group ID = 0 -- ** Source storage group ID = -1 -- ** Data tag = None -- ** Auto-resize enabled = Yes -- ** Total number of pages = 6144 -- ** Number of usable pages = 6140 -- ** High water mark (pages) = 5968 -- **************************************************************************** -- **************************************************************************** -- ** Tablespace name = TEMPSPACE1 -- ** Tablespace ID = 1 -- ** Tablespace Type = System managed space -- ** Tablespace Content Type = System Temporary data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = Yes -- ** Total number of pages = 0 -- **************************************************************************** -- **************************************************************************** -- ** Tablespace name = USERSPACE1 -- ** Tablespace ID = 2 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = Yes -- ** Storage group ID = 1 -- ** Source storage group ID = -1 -- ** Data tag = 1 -- ** Auto-resize enabled = Yes -- ** Total number of pages = 256 -- ** Number of usable pages = 224 -- ** High water mark (pages) = 96 -- **************************************************************************** -- **************************************************************************** -- ** Tablespace name = DMS -- ** Tablespace ID = 3 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Storage group ID = 2 -- ** Source storage group ID = -1 -- ** Data tag = 9 -- ** Auto-resize enabled = No -- ** Total number of pages = 2000 -- ** Number of usable pages = 1960 -- ** High water mark (pages) = 96 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 3 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( FILE ‘/tmp/dms1' 1000 , FILE ‘/tmp/dms2' 1000 ); -- **************************************************************************** -- ** Tablespace name = RAW -- ** Tablespace ID = 4 -- ** Tablespace Type = Database managed space -- ** Tablespace Content Type = Any data -- ** Tablespace Page size (bytes) = 4096 -- ** Tablespace Extent size (pages) = 32 -- ** Using automatic storage = No -- ** Auto-resize enabled = No -- ** Total number of pages = 2000 -- ** Number of usable pages = 1960 -- ** High water mark (pages) = 96 -- **************************************************************************** SET TABLESPACE CONTAINERS FOR 4 -- IGNORE ROLLFORWARD CONTAINER OPERATIONS USING ( DEVICE ‘/dev/hdb1' 1000 , DEVICE ‘/dev/hdb2' 1000 ); -- **************************************************************************** -- ** start redirect restore -- **************************************************************************** RESTORE DATABASE TEST CONTINUE; -- **************************************************************************** -- ** end of file -- **************************************************************************** - 以下是使用 SNAPSHOT 选项的 RESTORE DB 命令的示例:从快照映像复原日志目录卷且不提示。
db2 restore db sample use snapshot LOGTARGET INCLUDE without prompting不复原日志目录卷且不提示。db2 restore db sample use snapshot LOGTARGET EXCLUDE without prompting不复原日志目录卷且不提示。 如果未指定 LOGTARGET,那么缺省值为 LOGTARGET EXCLUDE。db2 restore db sample use snapshot without prompting在复原包含相冲突的日志目录的快照映像时,允许覆盖和替换当前数据库中的现有日志目录,但不提示。db2 restore db sample use snapshot LOGTARGET EXCLUDE FORCE without prompting在复原包含相冲突的日志目录的快照映像时,允许覆盖和替换当前数据库中的现有日志目录,但不提示。db2 restore db sample use snapshot LOGTARGET INCLUDE FORCE without prompting - 以下是将 RESTORE 命令与 TRANSPORT
REDIRECT 选项配合使用的传输操作的示例:提供一个源数据库 (TT_SRC) 备份映像(存储路径在 /src 上)和一个目标数据库 (TT_TGT)(存储路径在 /tgt 上):
将表空间“AS1”传输到容器路径中,类似于:/tgt/krodger/NODE0000/TT_TGT/T0000003/C0000000.LRG> RESTORE DB TT_SRC TABLESPACE (AS1) SCHEMA (KRODGER) TRANSPORT INTO TT_TGT REDIRECT SQL1277W A redirected restore operation is being performed. Table space configuration can now be viewed and table spaces that do not use automatic storage can have their containers reconfigured. DB20000I The RESTORE DATABASE command completed successfully.要为传输的表空间指定目标存储器组,可以使用 RESTORE 命令的 USING STOGROUP 选项。 在以下示例中,将表空间 TS1 和 TS2 复原到 SG_COLD 存储器组中:
> RESTORE DB TT_SRC TABLESPACE (TS1, TS2) SCHEMA (KRODGER) TRANSPORT INTO TT_TGT USING STOGROUP SG_COLD注: RESTORE 命令的 USING STOGROUP 选项仅在传输操作期间有效,不能用于在任何其他复原操作期间指定目标存储器组。要执行到目标数据库的缺省存储器组的传输,不需要指定 USING STOGROUP 选项:
在传输操作期间在 RESTORE 命令上指定的存储器组名当前必须在目标数据库中定义。 不必在备份映像或源数据库中进行定义。> RESTORE DB TT_SRC TABLESPACE (TS3) SCHEMA (KRODGER) TRANSPORT INTO TT_TGT - 以下示例显示如何指定加密选项。使用缺省加密选项复原到名为 CCARDS 的新加密数据库中:
RESTORE DATABASE ccards ENCRYPT;使用显式提供的加密选项将备份映像解密,以复原到同一数据库中:RESTORE DATABASE ccards ENCRLIB 'libdb2encr.so' ENCROPTS 'Master key Label=mylabel.mydb.myinstance.myserver';如果您无法记住用于保护备份映像的主密钥标签,请运行带有 SHOW MASTER KEY DETAILS 加密选项的 RESTORE DATABASE 命令; 其输出等同于运行 ADMIN_GET_ENCRYPTION_INFO 表函数。 不恢复数据库。 例如:
此命令返回用于保护备份映像的每个主密钥的标签。 此命令还会返回有关执行备份时主密钥位置的信息。 此信息在名称具有以下格式的文件中的 sqllib/db2dump 目录中可用:RESTORE DATABASE ccards ENCRLIB 'libdb2encr.so' ENCROPTS 'show master key details'db-name.inst-type.inst-name. db-partition.timestamp.masterKeyDetails - 以下是从名为
PROD的现有数据库复原到名为TEST的非现有数据库的示例。 在此示例中,使用非缺省日志路径配置了PROD,并且正在与PROD相同的实例上复原TEST。 复原将使用非缺省日志路径配置TEST。db2 restore db PROD INTO TEST NEWLOGPATH /dev/db2/testdb - 下面的示例显示了从名为 "
SAMPLE的现有数据库向名为 "SAMPLE2的非现有数据库运行还原操作的命令语法,其中 NEWLOGPATH 被配置为使用默认日志路径。注意:NEWLOGPATH DEFAULT 选项在Db2 11.5.6及更高版本中可用。db2 restore db SAMPLE into SAMPLE2 NEWLOGPATH DEFAULT - 您可以使用命名管道将一个数据库直接备份到另一个数据库中,而不保存中间备份映像。
以下示例将源数据库 (srcdb) 复制到目标数据库 (tgtdb) 中。 可以按任一顺序输入 BACKUP 和 RESTORE 命令。(在一次会议中)
(在另一届会议上)$ db2 backup db srcdb to /<pipename>$ db2 restore db srcdb from /<pipename> into tgtdb
如果使用参数 AT DBPARTITIONNUM 重新创建已删除的数据库分区(由于该分区已损坏),那么此数据库分区中的数据库将处于复原暂挂状态。 重新创建此数据库分区之后,必须立即在此数据库分区上复原该数据库。
使用说明
- 在 Db2 pureScale 环境中,必须对存在于操作中涉及的每个备份映像的数据库成员拓扑中的成员执行使用 REBUILD 选项的 RESTORE 操作以及随后的数据库 ROLLFORWARD 操作。 例如,假设 RESTORE REBUILD 操作使用两个备份映像 :backup-image-A 具有数据库成员拓扑 {0,1},而 backup-image-B 具有数据库成员拓扑 {0, 1, 2, 3}。 然后,必须对 member-0 或 member-1 (存在于所有备份映像中) 执行 RESTORE 操作和随后的 ROLLFORWARD 操作。
- 格式为
db2 restore db name的 RESTORE DATABASE 命令将使用数据库映像执行完整数据库复原,并将对表空间映像中的表空间执行表空间复原操作。 格式为db2 restore db name tablespace的 RESTORE DATABASE 命令将对映像中的表空间执行表空间复原。 另外,如果使用此命令时提供了一组表空间,那么复原这些显式列示的表空间。 - 在联机备份的复原操作之后,必须执行前滚恢复。
- 可以使用 OPTIONS 参数在支持代理节点的 TSM 环境中启用复原操作。 更多信息,请参阅
配置 Tivoli® Storage Manager 客户端
主题。 - 如果备份映像是压缩的,那么 DB2 数据库系统会检测到这种情况,并在复原数据前自动解压数据。 如果在 db2Restore API 上指定库,那么将使用该库来解压数据。 否则,将进行检查以确定是否在备份映像中存储了库、库是否存在以及是否已使用。 最后,如果库未存储在备份映像中,那么无法解压缩数据,并且复原操作失败。
- 如果要从备份映像复原压缩库(通过显式地指定 COMPRESSION LIBRARY 选项或通过隐式执行压缩备份的正常复原),那么必须在执行备份的平台和操作系统上执行复原操作。 如果执行备份的平台与执行复原的平台不同,那么复原操作将失败,即使 Db2 数据库系统通常支持涉及两个系统的跨平台复原也是如此。
- 备份的 SMS 表空间只能复原到 SMS 表空间中。 不能将它复原到 DMS 表空间,反之亦然。
- 要从包含活动日志文件的备份映像复原这些文件,必须指定 LOGTARGET 选项,从而提供 Db2 服务器上存在的标准有效路径。 如果满足这些条件,那么复原实用程序会将活动日志文件从映像写入目标路径。 如果在复原不包含日志的备份映像期间指定了 LOGTARGET ,那么复原操作将在尝试复原任何表空间数据之前返回错误。 如果指定无效或只读的 LOGTARGET 路径,那么复原操作也会失败并返回错误。
- 如果发出 RESTORE DATABASE 命令时 LOGTARGET 路径中存在任何活动日志文件,那么将向用户返回警告提示。 如果指定了 WITHOUT PROMPTING,那么将不返回此警告。
- 在指定了 LOGTARGET 的复原操作期间,如果无法复原任何活动日志文件,那么复原操作将失败并返回错误。 如果要从备份映像复制的任何活动日志文件与 LOGTARGET 路径中的现有文件同名,那么复原操作将失败并返回错误。 复原数据库实用程序不会覆盖 LOGTARGET 目录中的现有活动日志文件。
- 您还可以仅从备份映像复原已保存的活动日志集。 要指示仅复原活动日志文件,请指定 LOGS 选项以及 LOGTARGET 路径。 指定不带 LOGTARGET 路径的 LOGS 选项将导致错误。 如果在此操作方式下复原活动日志文件时发生任何问题,那么复原操作将立即终止,并且将返回错误。
- 在自动增量复原操作期间,将仅从备份映像复制包含在复原操作的目标映像中的活动日志文件和抽取日志文件。 在增量复原过程中引用的中间映像中包含的任何日志文件都不会从这些中间备份映像复制。
- 手动增量复原操作期间,只应通过发出最终复原命令来指定 LOGTARGET 路径。
- 对于数据库级别的复原操作,如果备份映像包含抽取日志文件,那么会将抽取日志复原到活动日志目录,而不考虑 LOGTARGET 参数的设置。 对于表空间级别复原操作或不复原数据的复原类型,将不会复原抽取日志文件。 这甚至包括 RESTORE DB ... LOGS 格式的复原操作。
- 如果无法复原抽取日志文件,那么复原操作将继续。 但是, Db2 将无法验证在后续 ROLLFORWARD 操作开始时是否存在正确的抽取日志文件范围,因此将删除所讨论的日志流上的所有抽取日志文件。 然后,您必须确保数据库的日志归档可用于前滚实用程序,以便可以使用活动日志文件。 如果日志归档不可用,那么将需要手动检索恢复日志。
- 离线完整数据库备份镜像、离线增量备份镜像和增量 delta 备份镜像可恢复到较晚的数据库版本。 联机备份镜像和表空间备份镜像不能恢复到以后的数据库版本。 对于多分区数据库,必须先单独地复原目录分区,然后再复原其余数据库分区(以并行或串行方式)。 但是,由复原操作执行的隐式数据库升级可能会失败。 在多分区数据库中,它可能在一个或多个数据库分区上失败。 在此情况下,可通过从目录分区中发出 RESTORE DATABASE 命令,然后发出单个 UPGRADE DATABASE 命令来成功地对数据库进行升级。
- 如果在运行 RESTORE DATABASE 命令时启用健康监测 ,它可能会在隐式数据库升级期间尝试连接,从而导致 SQL1035N 消息。 要避免此问题,请先禁用 "运行状况监视器" ,然后再运行该命令。
- 在 分区数据库环境中,表空间可以在不同的数据库分区上具有不同的存储器组关联。 重定向的复原从 DMS 到自动存储器修改表空间容器时,表空间与缺省存储器组相关联。 如果在不同数据库分区的重定向复原之间选择了新的缺省存储器组,那么表空间将在 分区数据库环境中具有不一致的存储器组关联。 如果发生这种情况,那么使用 ALTER TABLESPACE 语句来更改表空间以在所有数据库分区上使用自动存储器,并在必要时重新平衡。
- 仅当客户机代码页与数据库代码页相等时,才支持 TRANSPORT 选项。
- 传入的第一个路径必须包含第一个映像序列。 如果所指定的路径中包含多个备份映像序列,那么必须按序列连续地对其进行列示。
- 对于 Db2 Developer-C Edition ,复原具有大于定义的存储器大小的所有表空间的总大小的备份数据库,或者复原 SMS 表空间将导致失败。
- 在数据库复原期间,将提前验证目标主活动日志路径。 验证可确保目标主活动日志路径存在,并且当前未由其他数据库使用。 如果在操作开始时无法成功验证目标主活动日志路径,那么 RESTORE 命令将失败 (SQL5099N)。 因此,建议用户在发出 RESTORE 命令之前验证所有活动日志路径,并在需要进行任何更改时使用 NEWLOGPATH 选项,尤其是在复原到其他数据库或位置时。
- Snapshot restore
与传统 (非快照) 复原一样,复原快照备份映像时的缺省行为是不复原日志目录-LOGTARGET EXCLUDE。
如果 DB2 数据库管理器检测到在要复原的任何其他路径间共享了任何日志目录的组标识,那么会返回错误。 在这种情况下,必须指定 LOGTARGET INCLUDE 或 LOGTARGET INCLUDE FORCE ,因为日志目录必须是复原的一部分。
从备份映像复原路径前,DB2 数据库管理器将设法保存现有的日志目录(主日志目录、镜像日志目录和溢出日志目录)。
如果您要复原日志目录且 DB2 数据库管理器检测到磁盘上预先存在的日志目录与备份映像中的日志目录相冲突,那么 DB2 数据库管理器将报告错误。 在这种情况下,如果指定了 LOGTARGET INCLUDE FORCE,那么将禁止此错误,并且将复原映像中的日志目录,并删除预先存在的任何目录。
存在一种特殊情况,即指定了 LOGTARGET EXCLUDE 选项,并且日志目录路径位于数据库目录下 (例如, /NODExxxx/SQLxxxxx/LOGSTREAMxxxxx/)。 在这种情况下,复原仍将覆盖日志目录作为数据库路径,并且将复原数据库路径下的所有内容。 如果 DB2 数据库管理器检测到此情况且此日志目录中存在日志文件,那么将报告错误。 如果您指定了 LOGTARGET EXCLUDE FORCE,那么将禁止此错误,并且备份映像中的那些日志目录将覆盖磁盘上相冲突的日志目录。
- 传输表空间和模式
必须指定表空间和模式的完整列表。
传输时,目标数据库必须处于活动状态。
如果使用了联机备份映像,那么登台数据库会前滚至备份结尾。 如果使用了脱机备份映像,那么不会执行前滚处理。
在 dftdbpath 数据库参数指定的路径下,会创建一个登台数据库, 其中包含来自备份映像的系统目录表空间。 RESTORE DATABASE 命令完成时会删除此数据库。 抽取 DDL 时需要登台数据库,该 DDL 用于在要传输的表空间中重新生成对象。
传输表空间时,DB2 数据库管理器会尝试将具有匹配页大小的第一个可用缓冲池指定给所传输表空间。 如果目标数据库没有与要传输的表空间的页面大小匹配的缓冲池,那么可能会分配隐藏的缓冲池。 隐藏的缓冲池是所传输表空间的临时占位符。 您可以在传输完成后检查分配给所传输表空间的缓冲池。 您可以发出 ALTER TABLESPACE 命令以更新缓冲池。
如果数据库前滚操作检测到表空间模式传输日志记录,那么将使相应的已传输表空间脱机,并使其进入删除暂挂状态。 这是因为数据库不具有已传输表空间的完整日志来重建已传输表空间及其内容。 您可以在完成传输后制作目标数据库的完全备份,以便后续前滚操作不会将模式传输点传入日志流中。
如果要传输的模式包含具有基于表达式的键的索引,那么不支持将表空间和模式从数据库备份映像传输到目标数据库的 TRANSPORT 选项。
- 传输存储器组
传输操作无法修改目标数据库的当前定义的存储器组,并且在传输期间无法显式创建新的存储器组。
传输的缺省目标存储器组是该操作的目标数据库的缺省存储器组。 还可以将在传输操作期间要复原的所有表空间显式重定向到目标数据库上的特定存储器组中。
在传输操作期间,发出使用 TRANSPORT REDIRECT 选项的 RESTORE 命令时,自动存储器表空间的缺省存储器组配置不是备份映像中包含的配置,而是目标数据库的存储器组和存储器组路径。 这是因为,必须复原自动存储器表空间,并直接重定向到现有的存储器组路径中,如在目标数据库上所定义。
- Db2 native encryption
- 将数据库备份映像复原到现有数据库时,将始终保留现有数据库的加密设置。 如果指定 ENCRYPT 选项,那么将返回错误,因为将不使用RESTORE 命令上的设置。
在分区数据库环境中复原到新数据库时,请先复原目录分区,并指定加密选项。 然后,您可以在不指定加密选项的情况下复原其他分区,因为数据库已存在。 使用 db2_all 命令时,请首先将目录分区作为目标。
使用 Db2 本机加密加密的备份映像必须复原到具有 Db2 本机加密的数据库服务器中。 如果要复原到正在使用不包含 Db2 本机加密的 Db2 版本的服务器,那么必须使用未加密的备份映像。
