我写了个Oracle数据库自动备份脚本,执行后只有log文件,没有dmp文件,在线等。bat文件内容如下:

我写了个Oracle数据库自动备份脚本,执行后只有log文件,没有dmp文件,在线等。bat文件内容如下:,第1张

大致看了下,没发现你的批处理有明显问题。

那就简单说下排查思路。

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 off 

echo 删除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,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9626021.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存