范例1:删除Oracle归档日志
项目有一套数据库跑在 WINDOWS 上面,开了归档,为了防止归档日志耗尽存储空间,需要对 Oracle 数据库做定期的归档日志删除。当然,如果有需要,RMAN脚本也可以写成对数据库进行备份,通过 delete input 来删除归档文件。
1.创建批处理文件
创建一个批处理文件 D:\dba\archive_delete.bat
,内容如下:
rman target / cmdfile 'd:\dba\archive_delete.txt'
d:\dba\archive_delete.txt
文件的内容如下:
run{
delete noprompt archivelog all;
}
2.创建 Windows 计划任务
开始 ---> 管理工具 ---> 任务计划程序 ---> 创建任务
常规标签:
名称:archive_delete
勾选 “不管用户是否登陆都要运行”
触发器标签:
新建,创建一个周期性安排
时间建议不要使用凌晨的时间,我在 bat 脚本里生成文件名时为空,后面改为23:15开始(每天一次)就没问题了。
操作标签:
新建,选择前面创建的 .bat 文件
范例2:生成备份文件并上传至FTP服务器
Windows Server 上的 SQL Server 数据库中有一张表 cyt 非常重要,现需要对其进行逻辑备份,然后上传到 FTP 服务器。本地仅保留三天内的备份。
1.创建批处理文件
创建一个批处理文件 backup_to_remote.bat,内容如下:
:: 定义时间变量,用于备份文件名中
set THISDATETIME=%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%-%time:~0,2%%TIME:~3,2%%TIME:~6,2%
:: 执行备份命令,生成备份文件
bcp demodb.dbo.cyt out d:\backup_to_remote\tmp\cyt_bak_%THISDATETIME%.sql.bak -T -c
:: 通过 ftp 命令将备份文件上传到 FTP 服务器
ftp -v -d -n -i -s:"d:\backup_to_remote\backup_to_remote.ftp" 11.22.33.44
:: 将备份文件移动到本地归档目录
move d:\backup_to_remote\tmp\*.sql.bak d:\backup_to_remote\arch
:: 仅保留本地归档目录三天内的文件
forfiles /p "d:\backup_to_remote\arch" /s /m *.sql.bak /d -3 /c "cmd /c del @path"
d:\backup_to_remote\backup_to_remote.ftp
文件的内容如下:
user someuser sompassword
bin
cd demodb
mput "d:\backup_to_remote\tmp\*.sql.bak"
bye
2.创建 Windows 计划任务
参考范例1