增量备份蛮简单的,以前7,8i,9i的常备啊。 我从Oracle 7.3.4就开始用,感情蛮深的。 就是数据库越来越大,emp/imp有点吃不消了。但它还是有用武之地的,比如在跨平台迁移和数据库升级时就很有用,只是用点慢。 再就是用这个数据库的字符集要一致,别搞出乱码来。


我在这列下备份恢复到本地文件和磁带上怎么做,再就是附了个脚本。



(一) 备份


直接备份到本地磁盘,并复制到远程备份服务器上的脚本


xcl_exp.sh


#!/bin/sh
##author:xiongchuanliang
fn=`date +"%y_%m_%d_%H_%M"`
su - oracle -c "exp system/manager full=y ignore=y file=/xcl_exp_bak/orcl_${fn}.dmp log=/xcl_exp_bak/orcl_${fn}.log "
rcp /xcl_exp_bak/* 172.18.1.8:/orabk/orcl/


在这用的rcp,有需要时,改成ftp也可以。




直接备份到磁带:


  exp system/manager full=y buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=/xcl_exp_bak/exp_orcl.log


  推荐通过exp导出到文件,再把文件复制到磁带的方法。原因你看我后面附的关于磁带部份的说明就会明白了。



  导出指定用户:


/xcl_exp_bak/exp_orcl_xcl.dmp



(二)恢复


  从本地文件恢复:


    imp system/manager  buffer=65536 feedback=100000 ignore=y  full=y file=orcl_ xxxx.dmp log=imp_orcl_ xxxx .log



   导入指定用户:


     imp system/manager  buffer=65536 feedback=100000 ignore=y  fromuser= xcl  touser= xcl  file=orcl_ xxxx.dmp log=imp_orcl_ xxxx .log



  若从磁带设备恢复


    imp system/manager  buffer=65536 feedback=100000 ignore=y volsize=0 full=y file=/dev/rmt0   log=imp_orcl_ xxxx .log


   


逻辑备份也有增差量:


   1. 完全增量导出


      inctype=complete


   2.增量导出


      inctype=incremental


   3.累积型导出


      inctype=cumulative



   对于增量备份的恢复


      inctype=RESTORE



(三)exp和imp的一些参数:


volsize 每个磁带文件卷的文件字节数 



feedback



每 x 行显示进度(0)



filesize



指定存储文件的最大尺寸,如果不指定则所有对象和数据会放到一个导出文件中



tables



表名列表



rows



导出数据行(y)



constraints



导出的约束条件(y)



indexes



导出索引(y)



triggers



导出触发器(y)



record



跟踪增量导出(y)



grants



导出权限(y)



full



导出整个文件 (n)



当y时,会导出除sys外所有其他方案的对象,但需要exp_full_database或dba角色



buffer[l1]



数据缓冲区大小,单位字节



只有常规导出时生效



ignore:


若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。



(四)关于磁带的一些操作: 


1. 查看主机上的磁带设备


   lsdev -Cc tape


   如有显示Available的设备,就是可用的,通常为rmt0


2.查看磁带存储的内容


   tar -tvf /dev/rmt0


3. 写入磁带


   对于新磁带或可以不保留原有数据的磁带,可以用下面命令备份


   -- 文件名不要包含路径信息


  tar -cvf /dev/rmt0 xcl_exp_orcl.dmp 


   对于要保留原有数据的, tar -rvf 追加到磁带即可


  --注意,从数据为直接备份到磁带的,就不能再追加了。


  tar -rvf /dev/rmt0 xcl_exp_orcl.dmp


4. 将磁带上的备份复制到本地


  全复制出来


   tar -xvf /dev/rmt0


  如只复制指定的文件


   tar -xvf /dev/rmt0 xcl_exp_orcl.dmp



还有很多细节功能就不说了。具体看帮助去。呵呵。