转载:http://blog.csdn.net/rxr1st/article/details/2036944
-----------------------------------------------------------------------------------------------------------
最近因为再项目中每天都要涉及到oracle数据库的备份问题,而且服务器运行再远端,感觉每天手动进行备份是一件很费时的事情,所以查了查oracle的数据库备份的一些相关内容,感觉网上很多地方讨论的不是很清楚,下面就我的理解来谈谈oracle的自动备份问题。
服务器运行的环境是windows-server 2003,采用数据库为9i(其他版本可能一些参数会有所变化)。
首先我建立一个批处理文件,内容如下:
exp user/password rows=y indexes=n compress=n buffer=65536 file='d:/databackup/dmp/%date:~0,10%.dmp' full=y log='d:/databackup/log/%date:~0,10%.log'
现在来简单说说里面参数的一些具体意义:
exp 为oracle的导出数据库的操作命令;
user 为用户名;password 为密码;
rows=y表明导出数据行(默认为y);
indexes=n表明不导出索引(默认为y);
full=y表明是要完整备份数据库(默认为n);
compress=n表明不把所有的数据压缩再一个数据块上面(说明:默认EXP导出时,compress = Y, 也就是把所有的数据压缩在一个数据块上,导入时,如果不存在连续一个大数据块, 则会导入失败。导出80M以上的表时,设置compress= N, 则不会引起这种错误。);
buffer=65536 表明将数据缓冲设置为 65536大小,我这边o9i的默认缓冲大小为4096,当备份的数据库较大时建议将buffer值设置大一些。如我备份的数据库有接近140M,我以前没有设置buffer选项,采取默认的4096,备份一次我特地的计算了时间,大概是2分钟到3分钟。后来我把buffer设置为65536后大概只要不到半分钟的时间。
file='d:/databackup/dmp/%date:~0,10%.dmp' 表明备份后的数据备份文件存放在d:/databackup/dmp/下面,文件名为当前备份的服务器上的日期,如今天为2008-01-11则备份的文件名称为2008-01-11.dmp。
log='d:/databackup/log/%date:~0,10%.log'表明我们备份操作时的日志文件存放在d:/databackup/log/下面,文件名称为日期加后缀的形式。如今天为2008-01-11则备份的日志文件名称为2008-01-11.log。
批处理文件建立以后就把它放入windows中附件的任务选项中,设置管理员的用户名和密码,并设置自动运行的时间,则任务会定时自动运行。
配置完成。
下面我再来谈谈我对于oracle数据库导出方式的一些理解:
(1)简单导出模式
Oracle支持三种方式类型的输出:
(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),将数据库中的所有对象导出。
我们上面的例子是采用的全库方式(full方式)。
现在我们采用用户方式(U方式),我们将批处理文件改为
exp user/password owner=user rows=y indexes=n compress=n buffer=65536 file='d:/databackup/dmp/%date:~0,10%.dmp' log='d:/databackup/log/%date:~0,10%.log'
注意将full=y删除,并加上owner=user,表明只是导出用户user的数据库,再我的实际运行中发现备份的数据会大大减小。
最后我们采用表方式(T方式)来进行操作,将批处理文件改为
exp user/password tables=user.table1,user.table2 rows=y indexes=n compress=n buffer=65536 file='d:/databackup/dmp/%date:~0,10%.dmp' log='d:/databackup/log/%date:~0,10%.log'
注意与U方式的区别,我将owner=user删除,加入tables=user.table1,user.table2,多个表空间中间用逗号隔开,则备份出来的备份文件中就只存在user.table1和user.table2两个表。
(2)增量导出模式
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三种类型:
(1)、“完全”增量导出(Complete)即备份三个数据库,比如:exp user/password inctype=complete file='d:/databackup/dmp/%date:~0,10%.dmp' 。
(2)、“增量型”增量导出备份上一次备份后改变的数据,比如:exp user/password inctype=incremental file='d:/databackup/dmp/%date:~0,10%.dmp' 。
(3)、“累积型”增量导出累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:exp user/password inctype=cumulative file='d:/databackup/dmp/%date:~0,10%.dmp' 。
因为增量备份我还没有具体的使用和弄清楚,待以后弄明白了再来谈谈我的感想!
-----------------------------------------------------------------------------------------------------------
rm /backup/
# 清空 /backup目录
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展名为“.dmp”和“.log”的数据文件和日志文件。
erase E:\backupfile\nkdp_%year%%month%%day%.dmp
E:\backupfile\nkdp_log_%year%%month%%day%.log
:删除前面导出的扩展
名为“
.dmp
”和“
.log
”的数据文件和日志文件。