Oracle 数据库定期备份和归档日志清理 -YB

Oracle 数据库定期备份和归档日志清理 -YB

一、Oracle 数据库定期备份

需求:

每天备份一次数据库,只保留七天内的,并将七天外的备份文件干掉。

方法:创建批处理,然后添加进入 Windows 系统的计划任务,定时执行。

步骤:

  • 步骤一:创建批处理
@echo off  
set DATEDIR=  
set u_date=%date:~0,4%_%date:~5,2%_%date:~8,2%  
set nceedmp=unimax_cimc%u_date%.dmp  
set nceelog=unimax_cimc%u_date%.log  
expdp unimax_cimc/unimax_cimc directory=DATA_PUMP_DIR schemas=unimax_cimc dumpfile=%nceedmp% logfile=%nceelog%  version=10.0.2  
​  
set rarncee=unimax_cimc%u_date%.rar  
set rar_cmd="C:\Program Files\WinRAR\WinRAR.EXE"   
​  
echo 删除7天前的备份开始  
forfiles /p "D:\db_dump" /s /m *.dmp /d -7 /c "cmd /c del @path"  
forfiles /p "D:\db_dump" /s /m *.log /d -7 /c "cmd /c del @path"  
echo forfiles /p "D:\ora_bak" /s /m *.* /d -7 /c "cmd /c del @path"  
forfiles /p "D:\ora_bak\dataRAR" /s /m *.* /d -7 /c "cmd /c del @path"  
echo 删除7天前的备份结束  
​  
echo 数据库文件压缩开始  
%rar_cmd% a -m1 "D:/ora_bak/dataRAR/%rarncee%" "D:\db_dump/%nceedmp%" "D:\db_dump/%nceelog%"  
    
echo 复制到远程文件夹开始  
copy "D:\ora_bak\dataRAR\%rarncee%"  z:\   
​  
​  
echo "z:\%rarncee%"  
if exist "z:\%rarncee%" goto sendmail  
exit  
​  
:sendmail  
powershell -executionpolicy remotesigned -File "D:\ora_bak\SendMail.ps1"  
​

注 1:这个里面是包含了备份和清理 7 天以外的,同时将打包后的文件拷贝至远程磁盘,并发送邮件。

注 2:forfiles /p 后面的文件夹路径不需要引号,右斜杠为分隔符而不能用左斜杠。否则识别不到路径。

  • 步骤二:创建定时任务

计算机 - 右键 - 管理 - 任务计划程序。

创建任务、创建触发器等。

image-20220322172101432

参考:https://blog.csdn.net/wd2011063437/article/details/79168735

二、归档日志定期清理

创建 rman 命令文件:clearArchLog.rman

run{  
 crosscheck archivelog all;  
 delete noprompt expired archivelog all;  
 delete noprompt archivelog until time 'SYSDATE-7';  
}  
exit

创建批处理文件:clearArchLog.bat

@echo off  
​  
set DaysAgo=7  
set LogPath=D:\oracle\rm_archivelog\LOG  
forfiles /p %LogPath% /s /m *.log /d -%DaysAgo% /c "cmd /c del @file"  
set h=%time:~0,2%  
set h=%h: =0%  
set RMARCHDATE=%date:~0,4%%date:~5,2%%date:~8,2%_%h%%time:~3,2%%time:~6,2%  
rman target / cmdfile=D:\oracle\rm_archivelog\CMD\clearArchLog.rman log=D:\oracle\rm_archivelog\LOG\rm_archive_%RMARCHDATE%.log  
exit

同样在 windows 里创建计划任务,让批处理定期执行即可。

注 1:Linux 时:

linux 的创建定时任务 通过 crontab 的方式。

注 2:报错:

释放的通道: ORA_DISK_1 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=8 设备类型 =DISK 说明与资料档案库中的任何归档日志都不匹配

开启 rman 命令后,直接去执行:delete noprompt archivelog until time “sysdate-10”;

也是报这个错。后来检查归档日志文件也没啥问题。最后将时间 sysdate-10 调整为 sysdate-3,可以了。

但归档日志的文件删除现象有些奇怪,并不是准确的保留前几天的。是删除了其中一段。有些奇怪。

三、YB- 相关附件

在捷翼数据库服务器上实践 -windows.

YB- 数据库自动备份清理和归档日志清理.rar

文件内容:
image-20240116133316281