要将备份恢复至原始设备,请确保设备的容量足以容纳 dbspace 以及为操作系统预留的空间。
查询系统表以确定原始设备的容量是否足够:
SELECT segment_type, file_name, block_count,
data_offset, block_size,
(block_count * block_size) + data_offset AS raw_size
FROM SYS.SYSIQFILE, SYS.SYSIQINFO
where segment_type !='Msg' ORDER BY 1,2
查询操作返回与如下类似的结果:
segment_type file_name block_count data_offset block_size raw_size
Main iqdemo.iq 12800 65536 8192 104923136
Main iqdemo_main.iq 2800 65536 8192 104923136
Temp iqdemo.iqtmp 3200 65536 8192 26279936
查询操作返回的列: 列名称描述segment_typeMain 或 Temp 段,但不是消息文件(类型 Msg)。 file_nameDbspace 名称。block_count正在使用的块数。data_offset为操作系统预留的字节数。block_size每个块的字节数。raw_size恢复 dbspace 所需的最小原始设备大小(以字节为单位)。目标设备必须至少比原本的原始设备大 10 MB。
在这种情况下,数据库 iquser 驻留在原始设备上。此命令对两个磁带设备执行 FULL 数据库备份:
BACKUP DATABASE
TO '/dev/rmt/0n'
TO '/dev/rmt/1n'
WITH COMMENT 'Jan 18 full backup of iquser'
目录存储首先备份到 /dev/rmt/0n 。然后,将 IQ 存储备份到两个磁带。 假设出现介质故障且原始分区现在无法使用。要将命名为 IQ_USER 的用户定义的 dbfile 恢复至新原始分区, / dev/rdsk/c1t5d2s1 :
RESTORE DATABASE 'iquser'
FROM '/dev/rmt/0n'
FROM '/dev/rmt/1n'
RENAME IQ_SYSTEM_MAIN TO '/dev/rdsk/c2t0d1s1'
RENAME IQ_SYSTEM_TEMP TO '/dev/rdsk/c2t1d1s1'
RENAME IQ_SYSTEM_MSG TO 'iquser.iqmsg'
RENAME IQ_USER TO '/dev/rdsk/c1t5d2s1'
也可仅使用最后一个 RENAME 子句发出这些命令,因为只有一个 dbspace 要恢复至新的位置。列出所有文件或原始分区(如本例所示)可确保您准确了解每个文件或分区的恢复位置。