oracle数据泵数据库自动备份脚本

oracle数据泵数据库自动备份脚本20251024

1. 本次为备份为windows环境下,创建.bat备份脚本,删除3天前旧备份数据和日志,创建计划任务,自动执行。

2. 备份前先查看有无备份目录,没有则创建备份目录,并在操作系统相应路径创建该备份目录。如果已有备份目录则忽略。

#以下为可做参考。

一、查看数据库dump目录。

bash 复制代码
select * from dba_directories;

二、创建数据库备份目录。授权目录读写权限给备份用户。(新创建的dump_hisdir目录,更改属主属组为oracle:oinstall)

bash 复制代码
create directory dump_hisdir as '/rman_backup/rmanbackup/dump_hisdir/';
grant read,write on directory dump_hisdir to system;

3.备份脚本编写。

bash 复制代码
@echo off
echo 开始执行备份命令,请稍等......

set date=%date:~0,4%%Date:~5,2%%Date:~8,2%
set time=%time:~0,2%%time:~3,2%
set time=%time: =0%
expdp user/password@orcl directory=dump_dir dumpfile=hopg%date%%time%.dmp logfile=hopg%date%%time%.log schemas=user
forfiles /p "D:\dump_dir\hopg*.dmp" /s /m *.dmp /d -3 /c "cmd /c del /f @path"
forfiles /p "D:\dump_dir\hopg*.log" /s /m *.log /d -3 /c "cmd /c del /f @path"
exit

脚本编写好,把后缀改为.bat批处理文件就行了。

4.说明

说明:echo 文字输出 。

set 设置变量 ,用%变量名% 来获取。

expdp命令是oracle提供的dump备份命令

forfiles是windows的文件查找命令

pause 执行的时候在cmd输出显示

del 删除文件

%date%的值

在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。

windows下%date% 输出的是2017/04/06 周四 这种格式,%date:~0,11% 输出的是2017/04/06。

~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。

如需要准确的时间做为文件名,请用%time%函数,参数同上。

• forfiles参数说明:

/P 可是搜索的路径。在我们这里就是要在哪个目录寻找要删除的文件

/s 包含子目录

/m 根据搜索掩码搜索文件。默认为,如果要找备份处dump文件,格式为.dmp

/d 文件修改时间在某个时间之前或者之后。-7 表示7天之前的文件。

/c 表示为每个文件执行的命令,如果要删除该文件可以为"cmd /c del /F /s /q @file"。其中变量@file表示该文件名 f s q表示强制静默删除可以不用;

默认命令是 "cmd /c echo @file"。下列变量

可以用在命令字符串中:

@file - 返回文件名。

@fname - 返回不带扩展名的文件名。

@ext - 只返回文件的扩展。

@path - 返回文件的完整路径。

@relpath - 返回文件的相对路径。

@isdir - 如果文件类型是目录,返回 "TRUE";

如果是文件,返回 "FALSE"。

@fsize - 以字节为单位返回文件大小。

@fdate - 返回文件上一次修改的日期。

@ftime - 返回文件上一次修改的时间。

5.创建计划任务

说明:创建计划任务,并把刚编写好的批处理脚本添加到计划任务。这里计划任务都差不多,从网上找了写图片放在这里,方便大家了解。

  1. 1在电脑附件中找到任务计划程序,然后点击打开。
  1. 点击右侧的"创建基本任务",创建一个任务计划,填写任务名字和描述
  1. 设置任务的执行周期,这里周期选择每天,点击下一步。再设置开始时间,一般选择在夜间备份数据库,点击下一步
  1. 选择前面我们只做的bat批处理文件。即oracle备份语句文件。参数填写文件所在的目录,点击下一步,直接点击完成

  2. 然后双击对应的计划任务名称,出现界面如下图:然后在安全选项中选择"不管用户是否登陆都要运行此程序"然后点击确定

  3. 输入运行此任务的用户帐户信息。输入此pc端密码确定即可。

相关推荐
Goat恶霸詹姆斯6 小时前
mysql常用语句
数据库·mysql·oracle
xiaowu0807 小时前
C# 拆解 “显式接口实现 + 子类强类型扩展” 的设计思想
数据库·oracle
Apple_羊先森8 小时前
ORACLE数据库巡检SQL脚本--19、磁盘读次数最高的前5条SQL语句
数据库·sql·oracle
蚕豆哥13 小时前
【2026马年重启】我的 Primavera P6/Unifier 技术笔记,继续更新!
ai·oracle·项目管理·unifier·p6·进度管理·甲骨文
认真的薛薛15 小时前
数据库-sql语句
数据库·sql·oracle
IT邦德17 小时前
RPM包快速安装Oracle26ai
数据库·oracle
穿过锁扣的风18 小时前
一文搞懂 SQL 五大分类:DQL/DML/DDL/DCL/TCL
数据库·microsoft·oracle
蓝帆傲亦18 小时前
代码革命!我用Claude Code 3个月完成1年工作量,这些实战经验全给你
jvm·数据库·oracle
惜分飞2 天前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
fen_fen2 天前
Oracle建表语句示例
数据库·oracle