先给大家分享一套非常有用的 linux 学习视频,由浅入深,非常精彩,超级适合新手。大家扫码关注一下公众号 智程科技 ,回复 “linux” 即可免费领取哦
之前给项目现场写了Oracle自动备份的linux脚本,远程备份至各种存储媒介;我旁边的同事写了一份window脚本,如果有需要私聊我,我找他要去,哈哈。其实思路大相径庭,不多说了,直接看代码
1.远程备份至linux
#!/bin/bash
#数据库远程备份可执行程序 2019-04 chengmeng
#备份文件:OracleBackUp.sh
#配置文件:OracleBackUp.ini
#文件说明:
# 1. 采用expdp备份数据库文件,比exp导出备份文件压缩率提高90%
# 2. 用tar软件进行数据压缩,相比不压缩前文件大小,压缩率提高了75%
# 3. 通过建立本机与备份机信任机制的方式,将备份的dmp文件备份到远程服务器
# 4. 建议与linux的定时任务计划结合使用来实现定期备份
#使用说明:
# 1. 修改OracleBackUp.ini中的配置选项
# 定义函数__readINI [配置文件路径+名称] [节点名] [键值]
function __readINI() {
INIFILE=$1; SECTION=$2; ITEM=$3
_readIni=`awk -F '=' '/\\['$SECTION'\\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
echo ${_readIni}
}
echo 【数据库远程备份】=======【开始】...
echo 【数据库远程备份】=======【读取配置文件开始】...
_PROJECT_MARK=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration PROJECT_MARK) )
_ORACLE_HOME=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_HOME) )
_BACKUP_PATH=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration BACKUP_PATH) )
_ORACLE_INFO=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_INFO) )
_ORACLE_TEMP=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_TEMP) )
_date=$(date +%Y%m%d-%H%M%S)
_dmp_file_nam=${_PROJECT_MARK}.${_date}.dmp
_tar_file_nam=${_PROJECT_MARK}.${_date}.tar.gz
_log_file_nam=${_PROJECT_MARK}.${_date}.log
echo 【数据库远程备份】=======【读取配置文件结束】...
echo 【数据库远程备份】=======【开始导出数据】...
#su - oracle -c "exp ${_ORACLE_INFO} file=${_ORACLE_HOME}${_dmp_file_nam} full=y"
su - oracle -c "expdp ${_ORACLE_INFO} dumpfile=${_dmp_file_nam} DIRECTORY=${_ORACLE_TEMP} logfile=${_log_file_nam}"
echo 【数据库远程备份】=======【导出数据结束】...
echo 【数据库远程备份】=======【开始压缩数据】...
tar -zcvf ${_ORACLE_HOME}/${_tar_file_nam} ${_ORACLE_HOME}${_dmp_file_nam} ${_ORACLE_HOME}${_log_file_nam}
echo 【数据库远程备份】=======【压缩数据结束】...
echo 【数据库远程备份】=======【开始远程备份】...
scp ${_ORACLE_HOME}${_tar_file_nam} ${_BACKUP_PATH}
echo 【数据库远程备份】=======【远程备份结束】...
echo 【数据库远程备份】=======【开始删除本地文件】...
rm -rf ${_ORACLE_HOME}${_PROJECT_MARK}.${_date}.*
echo 【数据库远程备份】=======【删除本地文件成功】...
echo 【数据库远程备份】=======【结束】...
#数据库 远程备份配置 2019-04 chengmeng
#配置文件:OracleBackUp.ini
#文件说明:
# 1.配置数据库备份执行过程中需要的一些必要参数
#使用说明:
# 1.修改一下几个的配置选项,详见说明
#配置文件节点,不可更改
[configuration]
#项目标志.示例:LS7.0(必须修改)
PROJECT_MARK=LSDB
#项目名称.示例:LS7.0系统(必须修改)
PROJECT_NAM=中燃集团
#oracle路径,这是oracle安装时确定的路径.示例:/home/oracle/
ORACLE_HOME=/opt/oracle/
#oracle创建的dba_directories的DIRECTORY_NAME
ORACLE_TEMP=DUMP_FILE
#oracle信息 导出用户/密码@数据库名.示例:system/oracle@orcl
ORACLE_INFO=zrsjy/zrsjy@orcl
#备份服务器(请现在备份机建立该文件夹) 用户@IP:备份路径.示例:root@168.168.11.2:/root/test/backup
BACKUP_PATH=root@168.168.11.2:/opt/db_bak
Linux环境下Oracle自动备份至远程机部署说明
1.部署文件:共2个,包括LiEMSOracleBackUp.ini 和 LiEMSOracleBackUp.sh;
2.部署位置:将两个文件部署在/root/zhongran目录下,没有目录则新建.
注意:如把zhongran改为其它如shenmeihongyang,则LiEMSOracleBackUp.sh中zhongran的地方要更改为shenmeihongyang.
3.建立本机和备份机的信任机制
A.假设本机IP为168.168.1.1,备份机为168.168.1.2;
B.在1.1上执行命令
a)\t输入: ssh-keygen -t rsa, 连按三次回车;
b)\t输入: scp /root/.ssh/id_rsa.pub root@168.168.1.2:/root/.ssh/authorized_keys , 继续输入168.168.1.2的root密码
c)\t此时可用scp命令测试信任机制是否成功建立
4.在oracle数据库中创建备份路径
A.在1.1上执行命令
a) su - oracle
b) sqlplus /nolog
c) conn /as sysdba;
d) select * from dba_directories;
e) create directory dump_file as '/opt/oracle'; ( 此命令的 /home/oracle 是1.1上Oracle的目录,与 LiEMSOracleBackUp.ini 中的 ORACLE_HOME 要统一 )
f) 给导出用户授权 grant imp_full_database to 导出用户; grant read,write on directory dump_file to 导出用户;
5.进入LiEMSOracleBackUp.ini 文件中,按照格式要求修改配置参数
6.试运行
在1.1上执行命令 sh /root/zhongran/LiEMSOracleBackUp.sh
查看是否可以正常运行,到1.2上的备份文件夹中查找文件并解压检测
7.建立linux定时任务
在1.1上输入命令 crontab -e ,
新增一行 */5 * * * * sh /root/zhongran/OracleBackUp.sh (此为五分钟执行一次)
例如 0 3 * * * sh /root/zhongran/OracleBackUp.sh(此为每天凌晨3点执行一次)
0 23 * * * sh /root/zhongran/OracleBackUp.sh(此为每天晚上11点执行一次)
0 6 * * 6 sh /root/zhongran/OracleBackUp.sh(此为每周六早上6点执行一次)
如若成功,将以上定时任务命令改为正常备份时段即可.
2.备份至ftp
#!/bin/bash
# 定义函数__readINI [配置文件路径+名称] [节点名] [键值]
function __readINI() {
INIFILE=$1; SECTION=$2; ITEM=$3
_readIni=`awk -F '=' '/\\['$SECTION'\\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
echo ${_readIni}
}
echo 【数据库远程备份】=======【开始】...
echo 【数据库远程备份】=======【读取配置文件开始】...
_PROJECT_MARK=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration PROJECT_MARK) )
_ORACLE_HOME=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_HOME) )
_BACKUP_PATH=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration BACKUP_PATH) )
_ORACLE_INFO=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_INFO) )
_ORACLE_TEMP=( $( __readINI /home/oracle/sh/OracleBackUp.ini configuration ORACLE_TEMP) )
_FTP_IP=( $( __readINI /home/oracle/sh/LiEMSOracleBackUp.ini configuration FTP_IP) )
_FTP_USER=( $( __readINI /home/oracle/sh/LiEMSOracleBackUp.ini configuration FTP_USER) )
_FTP_PWD=( $( __readINI /home/oracle/sh/LiEMSOracleBackUp.ini configuration FTP_PWD) )
_date=$(date +%Y%m%d-%H%M%S)
_dmp_file_nam=${_PROJECT_MARK}.${_date}.dmp
_tar_file_nam=${_PROJECT_MARK}.${_date}.tar.gz
_log_file_nam=${_PROJECT_MARK}.${_date}.log
echo 【数据库远程备份】=======【读取配置文件结束】...
echo 【数据库远程备份】=======【开始导出数据】...
#su - oracle -c "exp ${_ORACLE_INFO} file=${_ORACLE_HOME}${_dmp_file_nam} full=y"
su - oracle -c "expdp ${_ORACLE_INFO} dumpfile=${_dmp_file_nam} DIRECTORY=${_ORACLE_TEMP} logfile=${_log_file_nam}"
echo 【数据库远程备份】=======【导出数据结束】...
echo 【数据库远程备份】=======【开始压缩数据】...
tar -zcvf ${_ORACLE_HOME}/${_tar_file_nam} ${_ORACLE_HOME}${_dmp_file_nam} ${_ORACLE_HOME}${_log_file_nam}
echo 【数据库远程备份】=======【压缩数据结束】...
echo 【数据库远程备份】=======【开始远程备份】...
#scp ${_ORACLE_HOME}${_tar_file_nam} ${_BACKUP_PATH}
ftp -n<<!
open ${_FTP_IP}
user ${_FTP_USER} ${_FTP_PWD}
binary
put ${_ORACLE_HOME}${_tar_file_nam} ${_BACKUP_PATH}${_tar_file_nam}
prompt
close
bye
!
echo 【数据库远程备份】=======【远程备份结束】...
echo 【数据库远程备份】=======【开始删除本地文件】...
rm -rf ${_ORACLE_HOME}${_PROJECT_MARK}.${_date}.*
echo 【数据库远程备份】=======【删除本地文件成功】...
echo 【数据库远程备份】=======【结束】...
#LiEMS 数据库 远程备份配置 2019-04 chengmeng
#配置文件:OracleBackUp.ini
#文件说明:
# 1.配置数据库备份执行过程中需要的一些必要参数
#使用说明:
# 1.修改一下几个的配置选项,详见说明
#配置文件节点,不可更改
[configuration]
#项目标志.示例:LS7.0(必须修改)
PROJECT_MARK=LSDB
#项目名称.示例:LS7.0系统(必须修改)
PROJECT_NAM=中燃集团设计管理项目
#oracle路径,这是oracle安装时确定的路径.示例:/home/oracle/
ORACLE_HOME=/opt/oracle/
#oracle创建的dba_directories的DIRECTORY_NAME
ORACLE_TEMP=DUMP_FILE
#oracle信息 导出用户/密码@数据库名.示例:system/oracle@orcl
ORACLE_INFO=zrsjy/zrsjy@orcl
#备份服务器(请先在备份机建立该文件夹) FTP 服务的IP,用户名,密码及备份文件夹路径
FTP_IP=168.168.10.49
FTP_USER=dev
FTP_PWD=dev
BACKUP_PATH=/zhongranOracleBackUp/
Linux环境下Oracle自动备份至FTP部署说明
安装FTP服务
若未安装,可执行: yum -y install ftp ,回车
测试安装成功:
执行: ftp 168.168.10.43 ,回车,按提示输入FTP服务的用户名和密码
执行: put /root/6.txt 6.txt ,回车,看FTP文件夹是否有此文件
3.其它备份方式
比如远程备份至NFS,当成本地文件夹来转移文件就行了。