天天看点

(02)逻辑备份恢复(exp/imp)与磁带

        增量备份蛮简单的,以前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导出到文件,再把文件复制到磁带的方法。原因你看我后面附的关于磁带部份的说明就会明白了。

  导出指定用户:      exp system/manager owner=xcl buffer=65536 feedback=100000  file= /xcl_exp_bak/exp_orcl_xcl.dmp log=/xcl_exp_bak/exp_orcl.log

(二)恢复   从本地文件恢复:     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=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。 若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

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

MAIL:[email protected] Blog:http://blog.csdn.net/xcl168