假设有ORACLE数据库运行在主机tom上,该数据库有四个各为2GB的数据文件:

/dev/volume1

/dev/volume2

/dev/volume3

/dev/volume4

每个数据文件备份到磁带上需要15分钟,如果利用tom自带磁带机备份需花掉1小时。

我们有jerry主机带磁带机,且空闲。 以下操作利用管道技术,缩短备份时间。

第一步,将jerry做成tom的信任主机,方法同上。

第二步,将备份任务分为两组,volume1,volume2在tom上备份,volume3,volume4在jerry上备份。

在tom上运行:

dd if=/dev/volume1 of=/dev/rmt0

dd if=/dev/volume2 of=/dev/rmt0

在jerry上运行:

rsh tom ""dd if=/dev/volume3"" |dd of=/dev/rmt0

rsh tom ""dd if=/dev/volume4"" |dd of=/dev/rmt0

通过上述办法,可将备份时间缩短一半。如果有更多的主机加入备份工作,在充分利用网络带宽的情况下,效果将更加显著。

III. 解决磁盘空间不足,如何使应用程序产生数据,不经过中间过程,直接生成压缩文件。

以ORACLE数据库逻辑备份工具exp/imp为例。

ORACLE数据库用exp备份出来的数据,经过压缩,如compress压缩,可节约一半左右的磁盘空间。但要经过中间过程,在压缩中需要原文件大小的约一半的缓冲空间。利用管道可以直接生成最终的压缩文件,省略中间过程。

常规的exp命令运行如下:

exp system/manager@testdb file=expdat.dmpfull=y

运用管道,如下:

mknod exp_pipe p /* 生成命名管道 */

exp system/manager@testdb file=./exp_pipefull=y /* 将备份数据送往管道 */

compress exp_pipe > expfull.dmp.Z /* 生成压缩备份文件*/

恢复操作也可以利用管道,跳过将文件解压缩,生成原始文件的过程,如下:

mknod imp_pipe p /* 生成相应的命名管道 */

uncompress -c expfull.dmp.Z > imp_pipe/* 将解压缩数据送入管道 */

imp system/manager@testdb file=./imp_pipefromuser=scott

touser=scott /* 将管道数据导入数据库testdb*/


相关内容