window用计划任务实现oracle数据备份

本文介绍了一种Oracle数据库备份的方法,通过创建特定目录结构和文件来实现数据的定期备份及旧备份的管理。具体步骤包括建立备份文件夹结构、编写批处理和VBScript脚本来执行备份流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.首先建立一个文件夹取名为oracle_backup

2.在oracle_backup文件夹下建立三个文件夹分别取名为backup和Old_backup和script

3.在script文件夹下面建立3个文件分别为:exp.txt和Oracle_bakup.bat和Oracle_bakup.vbs

exp.txt的代码如下:

     userid=system/manager@xyj
    owner=scott
    INDEXES=y
   grants=y
   rows=y
  constraints=y
  compress=N

Oracle_bakup.bat的代码如下:

del /q ../old_backup/*.*
copy ../backup/*.* ../old_backup
del /q ../backup/*.*
Oracle_bakup.vbs


Oracle_bakup.vbs的代码如下:

Option Explicit

On Error Resume Next


Dim fname, cmd
Dim WshShell

Set WshShell = CreateObject("WScript.Shell")

fname = Date
cmd = "exp log=../backup/" & fname & "_Oracle_bak.log file=../backup/" & fname & "_Oracle_bak.dmp parfile=exp.txt"

WshShell.run cmd

Set WshShell = Nothing

'WScript.Echo cmd

这个备分的规律总是留2次记录,就是本次的和上次的 ,要是想留历史记录的话把Oracle_bakup.bat里的这句话删掉即可del /q ../old_backup/*.*,至于怎么设置计划任务我在这里就说多说了,网上有很多,但是设置计划任务的时候最后把自己的机器弄一个密码,要不有的时候这个任务不会执行

清理 Oracle 数据库中的过期备份数据是维护数据库性能和释放存储空间的重要操作。以下是一些常用的方法,结合 RMAN(Recovery Manager)工具以及 Shell 脚本实现自动化清理。 ### 使用 RMAN 清理过期备份 Oracle 提供的 RMAN 工具可以有效地管理备份与恢复任务,并支持删除过期的备份集或镜像拷贝。 1. **列出所有过期的备份** ```sql LIST EXPIRED BACKUP; ``` 这条命令会列出所有已经失效的备份信息,通常是因为手动删除了备份文件或存储位置不可用。 2. **删除指定时间之前的备份** 例如,删除 7 天前的所有备份: ```sql DELETE NOPROMPT EXPIRED BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE-7'; ``` 3. **删除特定类型的备份** 如果只需要删除归档日志的过期备份: ```sql DELETE NOPROMPT EXPIRED ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; ``` 4. **清理所有过期的备份** ```sql DELETE NOPROMPT EXPIRED BACKUP; ``` 5. **根据磁盘空间自动清理** 可以设置 RMAN 的保留策略,使其在磁盘空间不足时自动清理旧的备份。 ```sql CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; ``` 上述命令配置了 RMAN 的保留策略为最近 7 天内的备份必须保持可用。 ### 编写 Shell 脚本自动清理 为了简化日常维护工作,可以编写 Shell 脚本来调用 RMAN 命令并定期执行。 ```bash #!/bin/bash # 设置环境变量 export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export ORACLE_SID=orcl # 定义日志文件路径 LOGFILE="/home/oracle/rman_cleanup.log" # 开始记录日志 echo "Starting cleanup at $(date)" >> $LOGFILE # 执行 RMAN 命令清理过期备份 rman target / << EOF >> $LOGFILE DELETE NOPROMPT EXPIRED BACKUP; EOF # 结束记录日志 echo "Cleanup completed at $(date)" >> $LOGFILE ``` 将上述脚本保存为 `cleanup_rman.sh`,然后赋予执行权限并添加到定时任务中: ```bash chmod +x cleanup_rman.sh crontab -e ``` 在 crontab 中添加一行以每天凌晨 2 点运行该脚本为例: ```cron 0 2 * * * /home/oracle/cleanup_rman.sh ``` ### 注意事项 - 在删除任何备份之前,确保这些备份不再需要用于恢复操作。 - 测试环境中先验证脚本行为,避免误删重要数据。 - 检查备份存储路径的权限是否正确,如 `/u01/app/oracle/backup` 目录应由 `oracle` 用户拥有且组为 `oinstall` [^1]。 通过以上方法,可以高效地管理和清理 Oracle 数据库中的过期备份数据,从而保证数据库系统的稳定性和高效性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值