增量备份蛮简单的,以前7,8i,9i的常备啊。 我从Oracle 7.3.4就开始用,感情蛮深的。 就是数据库越来越大,emp/imp有点吃不消了。但它还是有用武之地的,比如在跨平台迁移和数据库升级时就很有用,只是用点慢。 再就是用这个数据库的字符集要一致,别搞出乱码来。
我在这列下备份恢复到本地文件和磁带上怎么做,再就是附了个脚本。
(一) 备份
直接备份到本地磁盘,并复制到远程备份服务器上的脚本
xcl_exp.sh
在这用的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
还有很多细节功能就不说了。具体看帮助去。呵呵。