
大致看了下,没发现你的批处理有明显问题。
那就简单说下排查思路。
1、既然问题出在备份上,就先不要理会删除备份的问题。
2、相信你写批处理以前应该手工输入exp命令成功备份过。
3、把 exp那句输出到文本或批处理文件如下,用记事本打开backdbtxt看看与你成功备份的手输命令有和不同,然后做相应修改即可。
exp改为:
echo exp %USER%/%PASSWORD%@%DATABASE% full=y file=%DATADIR%\%BACKUPDATE%DMP log=%LOGDIR%\%BACKUPDATE%log>backdbtxt楼主:供参考
利用任务计划、批处理文件和ORACLE的EXP导出功能,可以根据日期自动生成ORACLE备份文件,大大方便了ORACLE数据备份。
建议一(做周备份并压缩为RAR)以下为ORACLE 自动备份批处理文件内容,请配合任务计划实现 :
例:
@ECHO OFF
SET BACKPATH=d:\
ECHO 准备备份数据库
REM 7天一个循环
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E > %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP ccense/ccense FILE=%BACKPATH_FULL%DMP
RAR a %BACKPATH_FULL%rar %BACKPATH_FULL%DMP
DEL %BACKPATH_FULL%DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
说明:
文件名以星期来命名
备份后调用rar进行压缩
这样可以保存一个星期的历史数据
注意:需要把program files/winrar目录下的rarexe拷贝到系统system32目录下
建议二:
1,批处理文件backupbat\
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%log
将生成oracle2006-01-09dmp文件
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%log
将生成oracle星期一dmp文件,则每周循环保留一个备份文件,共7个备份文件循环 $date$日期参数可灵活运用。
要求自动的话,自己在windows下设置定时任务,这个就不说了,网上教程很多。
另外,这个东西跟数据库名没什么关系,跟本地实例,还有用户名有关
写个脚本:
@echo offecho 删除30天前的备分文件和日志
forfiles /p C:\data_bak /m dmp /d -30 /c "cmd /c del @path"
forfiles /p C:\data_bak /m log /d -30 /c "cmd /c del @path"
echo 正在备份 Oracle 数据库,请稍等……
exp scott/tiger@sytv file=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%dmp log=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%log owner=scott buffer=65535
cd C:\Program Files\WinRAR
rar a -dr C:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%dmprar C:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%dmp
echo 任务完成!
echo & pause 请按任意键结束!
也没什么可解释的了。
exp scott/tiger@sytv file=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%dmp log=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%log owner=scott buffer=65535
也就这部分,scott是用户名,tiger是密码,sytv是本地实例名,然后file是备份文件名,log是日志文件名,owner=scott是导出scott下的所有对象,这个可根据自己情况修改。
执行后,文件是这样的:
楼主:供参考
利用任务计划、批处理文件和oracle的exp导出功能,可以根据日期自动生成oracle备份文件,大大方便了oracle数据备份。
建议一(做周备份并压缩为rar)以下为oracle 自动备份批处理文件内容,请配合任务计划实现 :
例:
@ECHO off
SET backPATH=d:\
ECHO 准备备份数据库
REM 7天一个循环
IF EXIST %backPATH%\one goto one
IF EXIST %backPATH%\TWO goto TWO
IF EXIST %backPATH%\THREE goto THREE
IF EXIST %backPATH%\four goto four
IF EXIST %backPATH%\FIVE goto FIVE
IF EXIST %backPATH%\SIX goto SIX
IF EXIST %backPATH%\SEVEN goto SEVEN
ECHO E > %backPATH%\one
可以通过exp方式进行备份:
1、编写备份脚本保存为bat文件:
exp 用户名/密码@数据库 own=用户名 file="e:\oracleback\datadmp" BUFFER=64000 log=e:\oracleback\data_%date:~0,10%_PMlog
forfiles /p "E:\oracleback" /s /m /d -4 /c "cmd /c del @path"
rd e:\recycled\ /s/q
2、windows带的计划任务里添加计划执行该bat文件
1、 准备数据库创建脚本
create tablespace whc_tbs datafile 'E:\oracle\oradata\whcdb\whcdbf' size 100M;
--DROP TABLESPACE whc_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
create user whc identified by whc default tablespace whc_tbs;
grant connect,resource to whc;
grant dba to whc;
--Revoke dba from whc;
其中--的注释语句是删除命名空间和移除DBA用户的权限的。
以上这些脚本是为了我们在新建一个表空间和Oracle数据库的时候使用的。
其中E:\oracle\oradata\whcdb\whcdbf路径是我们要存放数据库数据的位置,因此要保证该路径有足够的空间和足够的访问权限,否则会失败的。
2、 导出数据库对象
在PL/SQL Developer的菜单Tools=>Export User Objects中出来一个对话框界面,然后框选要到处的Oracle 数据库对象,包括表,序列,存储过程,视图,函数等等,并指定导出的文件名称,如下 *** 作。
3)导出表数据
导出表结构和其他对象后,我们下一步就是把数据库的表数据进行导出,PL/SQL Developer工具支持导出数据到PL/SQL数据库脚本中,如下所示。这样导出的脚本,我们可以在PL/SQL Developer工具导入或者自己通过Sql plus 工具进行导入。
至此,我们就已经完成了三种脚本了,包括创建数据库空间和数据库脚本、创建Oracle数据库对象(表、存储过程、视图、序列等)、创建导入数据的脚本,这样三种合一,就是一个完整的数据库了。最后一步就是我们如何导入数据库对象和数据的问题了。
4)导入数据库对象及数据
导入数据库对象和数据的 *** 作一样,都可以通过Import Tables *** 作实现,我们指定刚才上面两步创建的数据库脚本,执行即可再新的环境中创建数据库对象和数据库数据了。如下所示。
完成上面几个步骤,我们在新的数据库环境中,就具备了所有的东西了,顺利完成整个Oracle数据库对象及数据的迁移工作。
以上值得注意的是,我们导出Oracle对象和数据的时候,默认还是原来Oracle数据库的表空间和数据库用户名称的,如果我们想要在新的数据库服务
器中指定不同的表空间和数据库用户对象,那么我们就需要替换生成的sql脚本,并在第一步指定合理的表空间和数据库用户。
如果是Linux平台下的数据库服务器,第一步 *** 作也是差不多的,就是指定表空间的路径名稍微不同,其他 *** 作并无差异。
以上就是关于我写了个Oracle数据库自动备份脚本,执行后只有log文件,没有dmp文件,在线等。bat文件内容如下:全部的内容,包括:我写了个Oracle数据库自动备份脚本,执行后只有log文件,没有dmp文件,在线等。bat文件内容如下:、oracle数据库如何每天自动执行脚本完成正式数据库到备份数据库的备份、求一个oracle 11g自动备份脚本,每行脚本需要有注释。例如:数据库名LC0001,密码123456,SID为ORCL,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)