您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

恢复至原始设备

要将备份恢复至原始设备,请确保设备的容量足以容纳 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 要恢复至新的位置。列出所有文件或原始分区(如本例所示)可确保您准确了解每个文件或分区的恢复位置。