Oracle数据库自动备份文件

首先登陆PLSQL执行以下语句导出空表

declare stmt varchar2(200);begin for tb in (select table_name from user_tables where segment_created='NO') loop  stmt:='alter table '||tb.table_name||' allocate extent';  begin   execute immediate stmt;   exception when others then    dbms_output.put_line(stmt);   end; end loop;end;/

在编写bat文件

@echo off
echo ================================================ 
echo  Windows环境下Oracle数据库的自动备份脚本
echo  1. 使用当前日期命名备份文件。
echo  2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURTIME=%time:~0,2%
REM 小时数如果小于10,则在前面补0
if "%CURTIME%"==" 0" set CURTIME=00
if "%CURTIME%"==" 1" set CURTIME=01
if "%CURTIME%"==" 2" set CURTIME=02
if "%CURTIME%"==" 3" set CURTIME=03
if "%CURTIME%"==" 4" set CURTIME=04
if "%CURTIME%"==" 5" set CURTIME=05
if "%CURTIME%"==" 6" set CURTIME=06
if "%CURTIME%"==" 7" set CURTIME=07
if "%CURTIME%"==" 8" set CURTIME=08
if "%CURTIME%"==" 9" set CURTIME=09
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
 
::设置用户名、密码和要备份的数据库。
set USER=2BMPM
set PASSWORD=2BMPM
set DATABASE=orcl
set nls_lang=american_america.al32utf8
::创建备份目录。
if not exist "D:\backup\data\%BACKUPDATE% "     mkdir D:\backup\data\%BACKUPDATE%
if not exist "D:\backup\log\%BACKUPDATE% "      mkdir D:\backup\log\%BACKUPDATE%
set DATADIR=D:\backup\data\%BACKUPDATE%
set LOGDIR=D:\backup\log\%BACKUPDATE%
set DELDATADIR=D:\backup\data
set DELLOGDIR=D:\backup\log
exp %USER%/%PASSWORD%@%DATABASE%  file=%DATADIR%\%USER%_%BACKUPDATE%%CURTIME%.dmp log=%LOGDIR%\log_%BACKUPDATE%%CURTIME%.log
echo 数据库文件备份成功,所在目录为: %DATADIR%
echo 正在查找旧备份文件创建时间...
::删除30天前的备份。
::先判断要删除的文件是否存在
for /r %DELDATADIR% %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tc "%%a" ^| find /i "%%~nxa"'
) do (
echo "%%b %%c"
set /a dataCount+=1
)
for /r %DELLOGDIR% %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tc "%%a" ^| find /i "%%~nxa"'
) do (
echo "%%b %%c"
set /a logCount+=1
)
if %dataCount% gtr 1 goto beginCleandata
:iscleanlog
if %logCount% gtr 1 goto beginCleanlog
if %dataCount% equ 1 goto end
if %logCount% equ 1 goto end
::删除文件、删除空文件夹
:beginCleandata
forfiles /p "%DELDATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
for /f "tokens=*" %%a in ('dir /b /ad /s "%DELDATADIR%"^|sort /r') do rd "%%a"
goto iscleanlog
:beginCleanlog
forfiles /p "%DELLOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
for /f "tokens=*" %%a in ('dir /b /ad /s "%DELLOGDIR%"^|sort /r') do rd "%%a"
echo 旧备份文件删除成功!
pause
exit
:end
echo 无旧备份文件。
echo 执行成功。
pause

 

  1. 在电脑附件中找到任务计划程序,然后点击打开,如下图

    如何实现Oracle 11g数据库每天自动备份?

    如何实现Oracle 11g数据库每天自动备份?

  2. 点击右侧的“创建基本任务”,创建一个任务计划,填写任务名字和描述,如下图:

    如何实现Oracle 11g数据库每天自动备份?

  3. 设置任务的执行周期,这里周期选择每天,点击下一步

    如何实现Oracle 11g数据库每天自动备份?

  4. 再设置开始时间,一般选择在夜间备份数据库,点击下一步

    如何实现Oracle 11g数据库每天自动备份?

  5. 设置执行的操作是,这里是批处理,所以选择程序,点击下一步

    如何实现Oracle 11g数据库每天自动备份?

  6. 选择前面我们只做的bat批处理文件。即oracle备份语句文件。参数填写文件所在的目录,点击下一步:

    如何实现Oracle 11g数据库每天自动备份?

  7. 点击完成即可。

    如何实现Oracle 11g数据库每天自动备份?

  8. 然后双击对应的计划任务名称,出现界面如下图:

    如何实现Oracle 11g数据库每天自动备份?

    如何实现Oracle 11g数据库每天自动备份?

  9. 然后在安全选项中选择“不管用户是否登陆都要运行此程序”

    如何实现Oracle 11g数据库每天自动备份?

  10. 然后点击确定,系统会让用户输入对应的系统登陆密码,如下图,输入完密码点击确定即可。

    如何实现Oracle 11g数据库每天自动备份?

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值