oracle自动备份
2016-06-28 16:59
495 查看
本文使用exdpd进行自动备份,以德华安顾的测试环境为例。
将其设置为Oracle备份目录
可以查询dba_directories查看所有directory.
SQL>select * from dba_directories;
将
增加可执行的权限:chmod +x bak.sh
切换到oracle用户,进入
备份完成后的文件存储在
参考文章:
* Linux下自动备份Oracle数据库并删除指定天数前的备份
切换到oracle用户
追加定时任务
保存后提示已经装载了新的定时任务
再次查看定时任务列表,可以看到定时任务已经添加
重启服务即生效
更加详细的crontab使用请看
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
例:
常用的crontab命令:
参考文章:
* Linux 下执行定时任务 crontab 命令详解
* crontab 定时任务
* 鸟哥linux私房菜<第十六章、例行性工作排程 (crontab)>
一、设置备份目录
创建备份目录mkdir -p /home/oracle/backup/agtest
将其设置为Oracle备份目录
create or replace directory DATA_BACKUP as '/home/oracle/backup/agtest';
可以查询dba_directories查看所有directory.
SQL>select * from dba_directories;
二、备份代码详解
#!/bin/bash export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export ORACLE_BASE=/home/oracle/app/oracle export ORACLE_SID=feikong export PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$ORACLE_HOME/dbs:$PATH export ORACLE_TERM=xterm #终端窗口,不用改 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 #设置字符集 查看server端的字符集:select userenv('language') from dual; #以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。 # oracle用户的系统环境变量路径:/home/oracle/.bash_profile #--------------------------------------------------------- date=`date +%Y%m%d"_"%H%M%S` #获取系统当前日期时间,格式为:20160602_204653(年月日_时分秒) days=15 #设置删除15天之前的备份文件 orsid='10.1.3.138:1521/feikong' #Oracle数据库服务器IP、端口、SID orowner=agtest #备份此用户下面的数据 bakuser=agtest #用此用户来执行备份,必须要有备份操作的权限 bakpass=agtest #执行备份的用户密码 bakdir=/home/oracle/backup #备份文件路径,需要提前创建好 bakdata=$orowner"_"$date.dmp #备份数据库名称 baklog=$orowner"_"$date.log #备份执行时候生成的日志文件名称 expdp $bakuser/$bakpass@$orsid schemas=$orowner directory=DATA_BACKUP dumpfile=$bakdata logfile=$baklog #expdp 用户/密码@ORACLE_SID schemas=导出用户名 dumpfile=生成的dmp文件名 DIRECTORY=dmp文件的目录位置 logfile=生成的日志文件名 find $bakdir/$orowner -type f -name "*.dmp" -mtime +$days -exec rm -rf {} \; #删除15天前备份的dmp数据库文件(注意:{} \中间有空格) find $bakdir/$orowner -type f -name "*.log" -mtime +$days -exec rm -rf {} \; #删除15天前备份的log日志文件(注意:{} \中间有空格) #格式:find <指定目录> <指定条件> <指定动作>
将
bak.sh放入到
/home/oracle/backup/文件夹中
增加可执行的权限:chmod +x bak.sh
切换到oracle用户,进入
/home/oracle/backup/文件夹,执行
sh bak.sh即可进行手动备份。
备份完成后的文件存储在
/home/oracle/backup/agtest中
参考文章:
* Linux下自动备份Oracle数据库并删除指定天数前的备份
三、自动备份设置
使用crontab来进行定时任务的设置。切换到oracle用户
[root@feikong ~]# su - oracle
追加定时任务
[oracle@feikong ~]$ crontab -e # 分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-7) 执行方式 命令 30 12 * * * /bin/sh /home/oracle/backup/bak.sh #设置每天12:30进行备份
保存后提示已经装载了新的定时任务
"/tmp/crontab.KeIZna" 3L, 79C written crontab: installing new crontab
再次查看定时任务列表,可以看到定时任务已经添加
[oracle@feikong ~]$ crontab -l # 分 时 天 月 周 命令 02 09 * * * /bin/sh /home/oracle/backup/bak.sh [oracle@feikong ~]$
重启服务即生效
[root@feikong ~]# service crond restart Stopping crond: [ OK ] Starting crond: [ OK ]
更加详细的crontab使用请看
四
四、crontab介绍
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。4.1 命令格式
crontab [-u user] [ -e | -l | -r ]4.2 命令参数
-u user:用来设定某个用户的crontab服务;file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
例:
crontab -e #编辑当前用户的定时任务 crontab -l #查看当前用户的定时任务 crontab -e -u oracle #编辑oracle用户的定时任务 crontab -l -u oracle #查看oracle用户的定时任务
4.3 定时任务设置实例
根据分 时 天 月 周,我们可以设置出任何时候的定时任务。
# 分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-7) 执行方式 命令 30 12 * * * /bin/sh /home/oracle/backup/bak.sh #每天12:30备份 0 7 * * 1-5 /bin/sh /home/oracle/backup/bak.sh #周一到周五每天7:00备份 0-30/5 7 * * * /bin/sh /home/oracle/backup/bak.sh #每天7点0-30分每五分钟备份一次 30 9 1-10,15 2 * /bin/sh /home/oracle/backup/bak.sh #2月份1-10日和15日的9:30备份 30 9 1-10,15 2 1,3,5 /bin/sh /home/oracle/backup/bak.sh #2月份的1-10日和15日的9:30备份 或者 2月份的星期一、星期三、星期五的9:30备份
分时天月是AND的关系,
分时月周也是AND的关系,
天和
周是OR的关系。
4.4 crond 安装与配置服务
crontab编辑完成后,建议重启服务/sbin/service crond restart
常用的crontab命令:
安装crontab: yum install crontabs 服务操作说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 查看crontab服务状态: service crond status 手动启动crontab服务: service crond start 查看crontab服务是否已设置为开机启动,执行命令: ntsysv 加入开机自动启动: chkconfig –level 35 crond on
参考文章:
* Linux 下执行定时任务 crontab 命令详解
* crontab 定时任务
* 鸟哥linux私房菜<第十六章、例行性工作排程 (crontab)>
相关文章推荐
- oracle 建索引
- 谓词推入
- Oracle shutdown(关闭)状态下从spfile中创建pfile
- oracle 笔记(1)
- Oracle 事务
- C# 连接 Oracle 的几种方式
- Oracle处理CLOB超过4000入库问题
- sqlserver、mysql、oracle各自的默认端口号
- how-to-install-oracle-java-on-ubuntu-14-04
- rollup 和 cube 的区别
- php连接ORACLE数据库问题解决办法
- Oracle 11g客户端在Linux系统上的配置步骤详解
- C++连接Oracle之OCCI(windows)
- oracle正则表达式(详细)
- ORACLE归档和闪回开关
- oracle的性能优化
- 查看Oracle数据库中的所有用户名
- Oracle修改字段类型方法总结
- ORCLE RMAN备份脚本
- ORACLE学习