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端密码确定即可。

相关推荐
jnrjian4 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
TTc_4 天前
oracle中的union和union all有什么区别?
数据库·oracle
山峰哥4 天前
吃透 SQL 优化:告别慢查询,解锁数据库高性能
服务器·数据库·sql·oracle·性能优化·编辑器
南 阳4 天前
Python从入门到精通day37
数据库·python·oracle
轩情吖4 天前
MySQL库的操作
android·数据库·mysql·oracle·字符集·数据库操作·编码集
脱发的老袁4 天前
【数据库】Oracle手动清理归档日志
数据库·oracle
jnrjian4 天前
Oracle 共享池 库缓存下的 Library Cache Lock
数据库·缓存·oracle
新缸中之脑5 天前
在Reddit上探索未满足的需求
数据库·oracle
light blue bird5 天前
产线多并发客户端指令操作场景组件
jvm·oracle·.net·winform
坐吃山猪5 天前
Neo4j04_数据库事务
数据库·oracle·neo4j