从一个或多个存档设备恢复 SAP IQ 数据库备份。
快速链接:
转至参数
转至示例
转至用法
转至标准
转至权限
语法 1
RESTORE DATABASE ''
[MULTIPLEX]'' [ FROM '' ]…
… [ CATALOG ONLY ]
… [ KEY ]
… [ [ RENAME TO '']…
| VERIFY [ COMPATIBLE ] ]
语法 2
RESTORE DATABASE ''
[ restore-option …]
FROM '' <…>
restore-option
[MULTIPLEX]
READONLY [, … ]
KEY
RENAME TO …
语法 3
RESTORE DATABASE ''
[ FROM '' <…>
USING LOG PATH '', […] ]
RECOVER UNTIL [ TIMESTAMP | OFFSET ]
ON TIMELINE ''
[ OVERWRITE EXISTING CLEAR LOG ]
KEY
[ VERIFY COMPATIBLE ]
Multiplex。主 DAS dbfile 和镜像 DAS dbfile 的所有辅助节点必须在使用 MULTIPLEX 关键字发出单独的 RESTORE 命令之前启动。具有主 DAS dbfile 的所有辅助节点搜索 FROM 子句指定它们。不允许使用以逗号分隔的列表。档案设备必须不同。FROM 子句的数量决定与输入设备有关的并行 SAP IQ 尝试的数量。 备份和恢复 API DLL 实现可用于指定在打开档案设备时要传递给 DLL 的参数。对于第三方实现,USING LOG PATH 目录指示服务器搜索时间点恢复日志的 Multiple 路径: USING LOG PATH 'Multiplex 服务器上,请使用协调器节点中的当前事务日志。请勿包括辅助节点中的事务日志。包括辅助节点中的事务日志会导致时间点恢复失败,并会返回缺少用于时间点恢复的文件错误。
RECOVER UNTIL ...将数据从恢复日志中一直恢复到通过时间戳或事务日志偏移量指定的日期和时间:RECOVER UNTIL [ TIMESTAMP OFFSET <log-offset> ] TIMESTAMP WITH TIMEZONE。BIGINT。 始终指定晚于恢复命令 FROM 子句中指定的数据备份的备份时间的时间戳。这样可确保数据库包括恢复日志中所有的已提交事务。如果指定时间点早于备份数据库中的最后一个检查点,服务器将返回错误。限制在启用时间点恢复后创建的 dbspace 可能只记录在时间点恢复日志中。在这种情况下,您将无法在 RESTORE DATABASE RECOVER UNTIL 操作期间重命名该 dbspace。如果 RESTORE DATABASE 在时间点恢复期间无法找到事务日志、RLV 日志和时间点恢复日志,恢复操作将失败。当数据库恢复到新位置且新环境中没有可用日志时,可能出现这种情况。此时,请使用 CLEAR LOG 子句忽略想要恢复的数据库的当前日志范围,并取消通常在恢复操作期间进行的自动日志备份。
dbspace 可能只记录在时间点恢复日志中。在这种情况下,您将无法在 RESTORE DATABASE RECOVER UNTIL 操作期间重命名该 dbspace。
RESTORE DATABASE 在时间点恢复期间无法找到事务日志、RLV 日志和时间点恢复日志,恢复操作将失败。当数据库恢复到新位置且新环境中没有可用日志时,可能出现这种情况。此时,请使用 CLEAR LOG 子句忽略想要恢复的数据库的当前日志范围,并取消通常在恢复操作期间进行的自动日志备份。
ON TIMELINE恢复数据库到替代时间线:ON TIMELINE 'ON TIMELINE 子句需要用于标识替代时间线的时间线 GUID。不含此子句的时间点恢复操作将恢复到当前时间线。
OVERWRITE EXISTING时间点恢复操作期间,覆盖现有 dbfile 和事务日志。OVERWRITE EXISTING 时间点恢复操作通常会将 dbfile 恢复到不同于当前 dbspace 的位置。使用 OVERWRITE EXISTING 子句将数据库恢复到已存在数据库的位置,并覆盖具有相同名称的所有现有 dbfile:OVERWRITE EXISTING 子句可作为恢复选项显示在 RESTORE DATABASE 语句的任何位置。
CLEAR LOG恢复期间,忽略数据库当前日志区域:时间点恢复操作期间,取消自动日志备份:CLEAR LOG如果 RESTORE DATABASE 在时间点恢复期间无法找到事务日志、RLV 日志和时间点恢复日志,恢复操作将失败。当数据库恢复到新位置且新环境中没有可用日志时,可能出现这种情况。此时,请使用 CLEAR LOG 子句忽略想要恢复的数据库的当前日志范围,并取消通常在恢复操作期间进行的自动日志备份。时间点恢复期间,恢复可自动备份现有事务日志和 RLV 日志。在现有数据库目录中,每个时间点恢复需查找现有事务日志、RLV 日志和时间点日志。如果恢复操作未能找到这些日志,则将返回错误。如果想恢复到新环境却没有现有日志备份,那么提供带有 CLEAR LOG 子句的 RESTORE 命令来使 SAP IQ 停止在数据库目录中查找现有日志文件。
MULTIPLEX 关键字。
dbspace-name>(按其在 SYSFILE 表中的显示方式)。指定 path> 作为新的原始分区,或者为该 dbspace 指定新的完整或相对路径名称。 如果创建数据库文件时使用的是相对路径,则缺省情况下这些文件将恢复至相对于目录存储文件 (SYSTEM dbspace) 的位置,并且不需要使用重命名子句。如果创建数据库文件时使用的是绝对路径且没有为文件指定重命名子句,则将其恢复至其初始位置。 RENAME 子句中的相对路径名的工作方式与创建数据库或 dbspace 时相同:主 IQ 存储 dbspace、临时存储 dbspace 和“消息日志”将恢复至 db_file(目录存储)位置的相对位置;用户创建的 IQ 存储 dbspace 将恢复至包含主 IQ dbspace 的目录的相对目录。 请勿使用 RENAME 子句移动保存目录存储的 SYSTEM dbspace。若要移动目录存储及任何相对于它创建且未在 RENAME 子句中指定的文件,请在 dbspace 名称包含诸如 .iq 或 .iqtmp 之类的文件扩展名,则在 RESTORE DATABASE 命令的 RENAME 子句中指定名称时,必须将 dbspace 名称用双引号引起来。例如:RENAME temp1 TO '/work/temp1_res.iqtmp.iqtmp' DBSPACENAME "temp1_res.iqtmp" 或:RENAME "test_prod2.iq" TO '/test/test_prod2.iq'
RESTORE DATABASE VERIFY,您必须具有 BACKUP DATABASE 系统特权。 如果在使用 VERIFY 时指定了 COMPATIBLE 子句,则会对现有的数据库文件进行增量档案的兼容性检查。如果数据库文件不存在于调用 RESTORE DATABASE…VERIFY COMPATIBLE 的系统上,就会返回错误。如果在验证完整备份时指定了 COMPATIBLE,此关键字就会被忽略;在恢复完整备份时不需要进行兼容性检查。 必须具有数据库和日志文件(.db 和 .log),才能验证完整备份中只读 dbspace 的备份。如果没有这些文件,请在不使用 READONLY <dbspace> 子句的情况下运行 RESTORE DATABASE…VERIFY 来验证整个备份。 注意备份存档的检验不同于数据库一致性检查程序 (DBCC) 验证模式 (sp_iqcheckdb 'verify...')。RESTORE DATABASE VERIFY 验证备份存档的一致性,以确保它可以恢复,而 DBCC 验证数据库数据的一致性。 在开始备份之前先运行 sp_iqcheckdb 'verify...'。如果备份了不一致的数据库,然后从同一备份档案进行恢复,则数据会继续处于不一致状态,即使 RESTORE DATABASE VERIFY 报告验证成功也是如此。
on close)。若要随 RESTORE DATABASE 命令指定此功能,请使用适用于您的 UNIX 平台的命名约定。(Windows 不支持此功能。)RESTORE DATABASE 'iqdemo'FROM '/dev/rmt/0'FROM '/dev/rmt/2'
is!seCret> 进行了加密: RESTORE DATABASE 'marvin' FROM 'marvin_bkup_file1'FROM 'marvin_bkup_file2'FROM 'marvin_bkup_file3' KEY 'is!seCret'
BACKUP DATABASE 语句和两种可能的 RESTORE DATABASE 语句的语法。(此示例使用 iqdemo 数据库中的对象进行说明。请注意,iqdemo 包括一个名为 iq_main 的用户 dbspace 示例,您的数据库中可能不包括该示例。) 给定以下 BACKUP DATABASE 语句: BACKUP DATABASE READONLY DBSPACES iq_mainTO '/system1/IQ16/demo/backup/iqmain'可以使用下面任意一种 iq_main 语句来恢复 dbspace RESTORE DATABASE: RESTORE DATABASE 'iqdemo' READONLY DBSPACES iq_mainFROM '/system1/IQ16/demo/backup/iqmain'或者RESTORE DATABASE 'iqdemo'FROM '/system1/IQ16/demo/backup/iqmain'选择性备份会备份所有 READWRITE dbspace 或特定只读 dbspace 或 dbfile。选择性备份是完整备份或增量备份的子类型。注意: 可以执行 READONLY 选择性备份,并从该备份中恢复所有对象(如以上第二个示例中所示)。也可以执行包括全部内容的备份,并选择性地恢复只读文件和 dbspace。可以执行多个只读文件和 dbspace 的 READONLY 选择性备份,并选择性地恢复只读文件和 dbspace 的子集。请参见权限。 只有只读文件自备份以来尚未发生更改的情况下,才可以恢复只读备份。一旦再次将 dbspace 设置为读写模式,只读备份将无效,除非将数据库的整个读写部分恢复为只读 dbspace 原为只读模式的点上。决定要使用的备份子类型(选择性或非选择性),然后一致地使用该类型。如果必须要从非选择性备份转换为选择性备份(反之亦然),请始终在转换为新的子类型之前执行一次非选择性完整备份以确保涵盖了所有变更。
dbspace。
dbspace 的 READONLY 选择性备份,并选择性地恢复只读文件和 dbspace 的子集。请参见权限。
dbspace 设置为读写模式,只读备份将无效,除非将数据库的整个读写部分恢复为只读 dbspace 原为只读模式的点上。
RESTORE DATABASE FROM '/sys1/dump/dmp1'FROM '/sys1/dump/dmp2'VERIFY在使用验证时,请指定不同的数据库名以避免出现数据库名不唯一 错误。例如,如果原始数据库为 iqdemo.db,请改用 iq_demo_new.db: RESTORE DATABASE iqdemo_new.db FROM iqdemo.bkp VERIFY
in time recoverySET OPTION PUBLIC.IQ_POINT_IN_TIME_RECOVERY_LOGGING = 'ON'ALTER DBSPACE IQ_SYSTEM_LOG RENAME '/demo/pitrLog/PITRLOG'BACKUP DATABASE FULL to '/demo/dataBackup/FULL1'// perform some DDL/DML operations CREATE TABLE T1 ( ID INT )INSERT INTO T1 VALUES (1)// record timestamp TS1 / OFFSET OFS1TS1: select getdate()OFS1: select db_property('LastCommitRedoPos')// perform DDL/ DML operationsCREATE TABLE T2 ( ID INT )INSERT INTO T2 VALUES (1)// record timestamp TS2 / OFFSET OFS2TS2: select getdate()OFS2: select db_property('LastCommitRedoPos')// restore the database to point in time TS1 / OFS1// shut down the database// start a utility serverRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL TIMESTAMP 'USING LOG PATH '/demo/pitrLog/' , OVERWRITE EXISTING// orRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL OFFSET USING LOG PATH '/demo/pitrLog/' OVERWRITE EXISTING
in-time recoverySET OPTION PUBLIC.IQ_POINT_IN_TIME_RECOVERY_LOGGING = 'ONALTER DBSPACE IQ_SYSTEM_LOG RENAME '/demo/pitrLog/PITRLOG'BACKUP DATABASE FULL to '/demo/dataBackup/FULL1'// perform DDL / DML operationsCREATE TABLE T1 ( ID INT )INSERT INTO T1 VALUES (1)// record timestamp TS1 / OFFSET OFS1TS1: select getdate()OFS1: select db_property('LastCommitRedoPos')// perform DDL / DML operationsCREATE TABLE T2 ( ID INT )INSERT INTO T2 VALUES (1)// record timestamp TS2 / OFFSET OFS2TS2: select getdate()OFS2: select db_property('LastCommitRedoPos')// perform a PITR log backupBACKUP DATABASE POINT IN TIME RECOVERY LOGS ONLY TO '/demo/pitrLogBackup/PITR1'// perform DDL/ DML operationsCREATE TABLE T3 ( ID INT )INSERT INTO T3 VALUES (1)// restore the database to point-in-time TS2 OR OFS2// shutdown the database// start a utility serverRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL TIMESTAMP 'USING LOG PATH '/demo/pitrLogBackup/', '/demo/pitrLog/' OVERWRITE EXISTING// orRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL OFFSET USING LOG PATH '/demo/pitrLogBackup/', '/demo/pitrLog/' OVERWRITE EXISTING
RLV 的数据库进行的时间点恢复:// perform a full database backupBACKUP DATABASE FULL TO '/demo/dataBackup/FULL1'// perform DDL / DML operationsCREATE TABLE T0 ( ID INT )INSERT INTO T0 VALUES (1)RECORD TIME STAMP TS0 / OFFSET OFS0// enable point-in-time recovery using an incremental backupSET OPTION PUBLIC.IQ_POINT_IN_TIME_RECOVERY_LOGGING = 'ONALTER DBSPACE IQ_SYSTEM_LOG RENAME '/demo/pitrLog/PITRLOG'BACKUP DATABASE INCREMENTAL to '/demo/dataBackup/INCR1'// perform DDL / DML operationsCREATE TABLE T1 ( ID INT )INSERT INTO T1 VALUES (1)// record timestamp TS1 / OFFSET OFS1TS1: select getdate()OFS1: select db_property('LastCommitRedoPos')// perform DDL / DML operationsCREATE TABLE T2 ( ID INT )INSERT INTO T2 VALUES (1)// record timestamp TS2 / OFFSET OFS2//perform a PITR log backupBACKUP DATABASE POINT IN TIME RECOVERY LOGS ONLY TO '/demo/pitrLogBackup/PITR1'// note the RLV DBspace files and their location select * from sp_iqfile() where segmentType = 'RLV'"// restore the database to point-in-time TS1 OR OFS1// shutdown the database// Do a physical file backup of all files in the RLV Dbspace.// start a utility server// Perform a restore of database from backup FULL1RESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' OVERWRITE EXISTING// restore the RLV Dbspace files from the backup taken above to its original location// perform a point-in-time recovery to time TS1 using incremental backup INCR1 RESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/INCR1' RECOVER UNTIL TIMESTAMP 'USING LOG PATH '/demo/pitrLogBackup/PITR1/' OVERWRITE EXISTING CLEAR LOG
in-time recoverySET OPTION PUBLIC.IQ_POINT_IN_TIME_RECOVERY_LOGGING = 'ONALTER DBSPACE IQ_SYSTEM_LOG RENAME '/demo/pitrLog/PITRLOG'// shut down all servers// restart coordinator// connect to coordinator and take a full backupBACKUP DATABASE FULL to '/demo/dataBackup/FULL1'// synchronize all secondary nodes & then start them// perform DDL / DML operations in coordinator // connect to coordinatorCREATE TABLE T1 ( ID INT );INSERT INTO T1 VALUES (1);COMMIT;// record timestamp TS1 / OFFSET OFS1;TS1: select getdate()OFS1: select db_property('LastCommitRedoPos')// perform DDL / DML operations on writers// connect to Writer 2CREATE TABLE T2 ( ID INT );INSERT INTO T2 VALUES (1);COMMIT;// record timestamp TS2 / OFFSET OFS2;TS2: select getdate()OFS2: select db_property('LastCommitRedoPos')// connect to writer3INSERT INTO T1 VALUES(2);INSERT INTO T2 VALUES(2);COMMIT;// record timestamp TS3 / OFFSET OFS3;TS3: select getdate()OFS3: select db_property('LastCommitRedoPos')// perform a PITR log backupBACKUP DATABASE POINT IN TIME RECOVERY LOGS ONLY TO '/demo/pitrLogBackup/PITR1'// perform DDL/ DML operations// Connect to Writer3CREATE TABLE T3 ( ID INT );INSERT INTO T3 VALUES (1);COMMIT;// record timestamp ts4 / offset ofs4;TS4: select getdate()OFS4: select db_property('LastCommitRedoPos')// restore the database to point-in-time TS3 OR OFS3// shut down the database// start a utility server and perform point-in-time // recovery for the coordinator nodeRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL TIMESTAMP 'USING LOG PATH '/demo/pitrLogBackup/', '/demo/pitrLog/' OVERWRITE EXISTING// orRESTORE DATABASE 'iqdemo' FROM '/demo/dataBackup/FULL1' RECOVER UNTIL OFFSET USING LOG PATH '/demo/pitrLogBackup/', '/demo/pitrLog/' OVERWRITE EXISTING
Multiplex 故障转移后重新启用时间点恢复日志记录。此场景中,在故障切换后写入程序 1 会成为协调器:// enable point-in-time recoverySET OPTION PUBLIC.IQ_POINT_IN_TIME_RECOVERY_LOGGING = 'ONALTER DBSPACE IQ_SYSTEM_LOG RENAME '/demo/pitrLog/PITRLOG2'// Shut down all servers// Restart coordinatorBACKUP DATABASE FULL to '/demo/dataBackup/FULL1'// Synchronize then start all secondary nodes
在 Oracle Solaris 平台上,RESTORE DATABASE 命令需要独占访问。在 Solaris 上,需要具有数据库 SERVER OPERATOR 系统特权的用户。通过将 -gd 开关设置为 DBA 可以获取此独占访问权,这是启动服务器引擎时的缺省设置。
在启动数据库之前发出 RESTORE DATABASE 命令(必须连接到 utility_db 数据库)。指定最近一次恢复备份的 RESTORE DATABASE CHECKPOINT。现在,可以指定 START DATABASE 以允许其他用户访问恢复后的数据库。
包括所有子句的完整 RESTORE DATABASE 命令的最大大小是 32 KB。
当恢复至原始设备时,请确保设备的容量足以容纳您要恢复的 dbspace。如果原始设备大小不足以恢复 dbspace,SAP IQRESTORE DATABASE 会检查原始设备的大小并返回错误。
BACKUP DATABASE 允许指定完整备份或增量备份。有两种增量备份。INCREMENTAL 仅备份那些自上次执行任意类型(增量或完全)的备份之后已发生更改并已提交的块。INCREMENTAL SINCE FULL 备份自上次完全备份后已发生更改的所有块。如果在执行完全备份恢复后执行一次或多次增量备份(任一类型),则在连续的 RESTORE DATABASE 命令之间不允许对数据库进行任何修改。此规则防止从需要进行崩溃恢复的数据库或已进行修改的数据库的增量备份执行恢复。您仍可以使用从完全备份恢复,以覆盖此类数据库。在尚未完成增量备份的整个序列之前,应避免启用数据库。
在开始完全恢复之前,您必须删除以下两个文件:目录存储文件(缺省名为 dbname.db)和事务日志文件(缺省名为 dbname.log)。
如果对增量备份进行恢复,则 RESTORE DATABASE 可以确保以恰当的顺序访问备份介质集。此顺序为:首先恢复最后的完全备份磁带集,接着是第一个增量备份磁带集,然后是更近一些的磁带集,以此类推,最后是最近的增量备份磁带集。如果具有 SERVER OPERATOR 系统特权的用户生成了 INCREMENTAL SINCE FULL 备份,则只需要完全备份磁带集和最近的 INCREMENTAL SINCE FULL 备份磁带集;不过,如果自执行 INCREMENTAL SINCE FULL 后又执行了 INCREMENTAL 备份,则还必须应用此备份。
SAP IQ 确保恢复顺序是正确的,否则它会显示错误。在恢复期间发生任何其它错误均会导致将数据库标记为损坏并将使数据库不可用。若要清理损坏的数据库,请从完全备份执行恢复,然后再恢复任一附加增量备份。由于很可能是这些备份之一损坏,因此您可能需要忽略较晚的备份集而使用较早的备份集。
要从档案备份恢复只读文件或 dbspace,当发出 RESTORE DATABASE 语句时,数据库可以正在运行,管理员可以连接到数据库。如果只读文件路径名与数据库系统表信息匹配,则无需与备份中的名称相匹配。
数据库必须未处于运行状态才能恢复 READWRITE FILES ONLY 或所有文件备份的 FULL、INCREMENTAL SINCE FULL 或 INCREMENTAL 恢复。要恢复只读文件的备份,数据库可以正在运行,也可以未在运行。当恢复只读 dbspace 中的特定文件时,该 dbspace 必须处于脱机状态。当恢复读写 dbspace 中的只读文件时,该 dbspace 可处于联机或脱机状态。恢复将关闭只读文件,恢复文件,并在恢复结束时重新打开这些文件。
可使用选择性恢复来恢复只读 dbspace,条件是该 dbspace 仍处于相同的只读状态。
其它 RESTORE DATABASE 问题:
RESTORE DATABASE 至磁盘时,不支持将原始设备用作档案设备。
ON,则会等待十秒钟,以让您将下一磁带放入驱动器然后重试。它将无限期地继续这些尝试,直至成功或使用 Ctrl + C 终止操作。
RESTORE DATABASE 将失败并将数据库返回至其在恢复开始前的状态。
dbspace 的 SYSFILE 系统表中的 SYSTEM 列不会更新。对于 SYSTEM dbspace,在创建数据库时,file_name 列始终显示其名称。SYSTEM dbspace 的文件名是数据库文件的名称。
执行此语句所需的权限是通过 -gu 服务器命令行选项设置的,如下所示: