centos 下备份oracle数据

时间:2022-01-20 00:13:14

一、在xshell下root用户登录服务器

1.新建oracle数据库备份目录

mkdir -p /casnw/backup/oradata6910bak

2.设置目录权限为oinstall用户组的oracle用户

chown -R oracle:oinstall /casnw/backup/oradata6910bak -R

二、新建oracle数据库备份脚本

1.新建文件

vi /casnw/backup/oradata6910bak/oradata10bak.sh

2.在文件中输入以下代码

#!/bin/sh
export ORACLE_BASE=/casnw/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

#以上代码不同的数据库安装会有不同的配置,如果不知道环境变量,可通过 vi /home/oracle/.bash_profile查看(新建的oracle用户管理数据库,如果你是别的用户,将oracle换掉即可)

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  #这一句建议尽量写上,否则在导出时可能报此错误(EXP-00091: Exporting questionable statistics. )。如果你不知道服务器数据库字符集,可通过  select * from nls_database_parameters;查看

date=$(date +%Y_%m_%d)  #系统当前时间
days=7  #7天
orowner=sys  数据库用户
bakpass=admin123456 # 用户密码
bakdir=/casnw/backup/orcl6910oradata  #数据库备份文件路径
bakdata=$date.dmp   #备份文件名
baklog=$date.log  #备份文件日志名
cd $bakdir   #进入备份文件路径下,执行exp
exp \'$orowner/$bakpass@210.77.77.73:1521/orcl as sysdba\' file=$bakdir/$bakdata log=$bakdir/$baklog full=y
find $bakdir -type f -name "*.dmp" -mtime +$days -exec rm -rf {} \; #七天后删除备份文件
find $bakdir -type f -name "*.log" -mtime +$days -exec rm -rf {} \; #七天后删除备份文件日志
chmod +x /casnw/backup/orcl6910oradata/oradata10bak.sh #添加脚本执行权限

注:在写完运行脚本后,你可以进入备份文件路径下,输入./oradata10bak.sh 运行此文件,看是否报错。

三、编辑系统任务计划

1.vi /etc/crontab

2.将以下代码填入打开文件的最后一行

0 1 * * 6 oracle  /casnw/backup/oradata6910bak/ordata10bak.sh #每周六的一点运行此文件

:wq! #保存退出

service crond restart 重启crond