我们项目在开发过程中,大家使用同一个oracle数据库,但是我由于测试开发的需要,在自己机器上也安装了oracle数据库,由于经常需要将服务器上的oracle的数据导入自己机器中 ,原来通过重建立用户 ,通过exp命令将服务器的数据导出,通过imp按照用户数据导入到自己的机器上,特别麻烦,就想写个批处理文件代替手工操作。同时,老大也正好给了我一个任务,为了防止服务器上的数据库崩溃,需要每天都备份一次数据库 ,通过不懈的努力,终于达到目标。效果还可以,下面说一下实现的步骤。
l 完成数据备份功能
通过编写批处理,调用exp命令,并且按照备份的日期时间建立多个文件夹,在对应的文件夹中存放备份出来的数据和备份过程产生的日志。
目录结构如下:
backup.bat即是用户执行备份的批处理的文件,内容如下
echo on
echo ------------------------------------------------------------------------------------------------------------------------------------------- >>readme.txt
echo %date:~0,10% %time:~0,8% 开始备份 共六个文件位于服务器数据备份/%date:~0,10%文件夹下面,分别对应三个用户的数据备份文件和备份过程中的日志记录 >>readme.txt
echo --------------------------------------------------------------------------------------------------------------------------------------------- >>readme.txt
if not exist 服务器数据备份 mkdir 服务器数据备份
cd 服务器数据备份
if not exist %date:~0,10% mkdir %date:~0,1%
cd %date:~0,10%
set time=%time:~0,2%%time:~3,2%%time:~6,2%
mkdir %time%
cd %time%
exp eosuser/eosuser@pms_192.168.0.1 file=eosuser-%date:~0,10%.dmp log=eosuser-%date:~0,10%.log compress=n buffer=8092 consistent=y direct=n constraints=y feedback=10000 grants=y record=y indexes=y triggers=y rows=y
exp mpms/mpms@pms_192.168.0.1 file=mpms-%date:~0,10%.dmp log=mpms-%date:~0,10%.log compress=n buffer=8092 consistent=y direct=n constraints=y feedback=10000 grants=y record=y indexes=y triggers=y rows=y
exp xypms/xypms@pms_192.168.0.1 file=xypms-%date:~0,10%.dmp log=xypms-%date:~0,10%.log compress=n buffer=8092 consistent=y direct=n constraints=y feedback=10000 grants=y record=y indexes=y triggers=y rows=y
这样就会在d盘下面的数据库备份/服务器数据备份下面按照备份的日期建立对应的文件架,并会在readme.txt中添加相应的备份记录。
l 数据导入与回复
因为对数据库中已经存在的方案导入的时候会冲突,可以考虑先级联删除用户,然后重新创建用户。
对应的sql文件USER.sql:如下:
drop user xypms cascade
/
drop user mpms cascade
/
drop user eosuser cascade
/
create user xypms identified by xypms
/
grant connect,resource ,dba to xypms
/
create user mpms identified by mpms
/
grant connect , resource ,dba to mpms
/
create user eosuser identified by eosuser
/
grant connect,resource ,dba to eosuser
/
quit
对应的bat文件如下:
echo on
set date=%date:~0,10%
set time=%time:~0,2%%time:~3,2%%time:~6,2%
if not exist 服务器数据恢复 mkdir 服务器数据恢复
cd 服务器数据恢复
if not exist %date% mkdir %date%
cd ..
cd 服务器数据备份
cd %date%
if exist 230000 cd 230000
if exist 120000 cd 120000
if exist 230000 cd 230000
sqlplus eos/eos@pms_127.0.0.1 @../../../USER.sql
imp xypms/xypms@pms_127.0.0.1 FILE=xypms-%date%.dmp log=xypms.log IGNORE=Y FULL=NO FromUser=xypms
imp mpms/mpms@pms_127.0.0.1 FILE=mpms-%date%.dmp log=mpms.log IGNORE=Y FULL=NO FromUser=mpms
imp eosuser/eosuser@pms_127.0.0.1 FILE=eosuser-%date%.dmp log=eosuser.log IGNORE=Y FULL=NO FromUser=eosuser
move mpms.log ../../../服务器数据恢复/%date%/
move eosuser.log ../../../服务器数据恢复/%date%/
move xypms.log ../../../服务器数据恢复/%date%/
pause
ok 一切搞定,通过bat文件轻轻松松搞定!