Oracle database Linux自建环境备份至远端服务器自定义保留天数

环境准备

linux下安装oracle 请看
oracle12c单节点部署
系统版本:
CentOS 7
软件版本:
Oracle12c


备份策略与实现方法

此次备份依赖Oracle自带命令exp与linux下crontab命令(定时任务)

exp
Oracle中exp命令是一个用于导出数据库数据和对象的非常有用的工具。可以将整个数据库导出为一个文件,也可以只导出一部分数据或对象。使用exp命令可以帮助我们备份整个数据库,并将其转移到另一个服务器或重新加载到同一台服务器上的不同实例中。相较于rman 来说对于单用户的备份更加方便且具有较好的移植性。

exp命令参数:

userid:指定访问数据库的用户名和密码。

file:指定导出的文件名(可以包含完整的路径)。

tables:指定要导出的表的列表。可以以逗号分隔,如表1,表2,表3。如果你不指定表名,则导出整个数据库。

owner:指定要导出的所有属主的名称。

rows:指定是否导出表中的行。默认情况下,也就是rows=y,它将导出表中的所有行。

compress:指定是否使用压缩来减小导出文件的大小。默认情况下,也就是compress=n,它不进行压缩。

constrnts:指定是否导出表中的限制。默认情况下,也就是constrnts=y,它将导出表的所有限制。如果你不希望导出表的限制,则设置constrnts=n。

indexes:指定是否导出表中的索引。默认情况下,也就是indexes=y,它将导出表的所有索引。如果你不希望导出表的索引,则设置indexes=n。

triggers:指定是否导出表中的触发器。默认情况下,也就是triggers=y,它将导出表的所有触发器。如果你不希望导出表的触发器,则设置triggers=n。

feedback:指定导出进度的显示方式。默认情况下,也就是feedback=100,每处理100个行就显示一次进度。

buffer:指定通过网络传输的缓冲区的大小。默认情况下,也就是buffer=4096。

corntab
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

参数:
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表

在这里插入图片描述

备份策略:
每天凌晨2点备份一次(具体备份时间视情况而定–选择业务低峰期)
备份文件保留自定义天数(如果磁盘空间充足建议保留2周左右)

创建本地存放备份文件的目录

mkdir /dbbakz/data

创建存放备份脚本的目录

mkdir /dbbakz/scripts

创建远端服务器备份文件存放目录

mkdir /dbbakz/data/对应ip  
#例如本地服务器地址为 192.168.10.21 远端服务器地址为172.16.2.101
#则登录172.16.2.101 创建文件夹 /dbbakz/data/192.168.10.21 

需对远端服务器提前配置好ssh免密登录 可参照
SSH免密登录


备份

备份脚本:

vi /dbbakz/scripts/oraclebackup.sh
#!/bin/bash
#Create by:zhangyongze
#为什么不问问神奇的海螺呢丶
#oracle备份至远端服务器(本地不保留、远端保留60天)export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1  
export ORACLE_SID=orcl
hostip=`ip addr | grep inet | grep -v 127 | grep -v inet6 |awk '{print $2}'| grep -Eo "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"|head -n 1`
oracleport=1521   #oracle端口
backNode=172.16.2.101 #远端备份服务器地址需提前配置好免密
lbackPath=/dbbakz/data/  #本地备份文件存放路径
sbackPath=/dbbakz/data/$hostip/  #服务端备份文件存放路径
date=$(date +%Y%m%d%M%H%S)  # 获取系统当前日期时间
days=60 #保留时常
orowner=byyy #备份此用户下面的数据
bakuser=byyy #用此用户来执行备份,必须要有备份操作的权限
bakpass=123456 #执行备注的用户密码
bakdata=$ORACLE_SID_$orowner_$date.dmp  #备份文件名称
baklog=$ORACLE_SID_$orowner_$date.log #日志文件名称
baktar=$ORACLE_SID_$orowner_$date.tar.gz #压缩后备份文件echo "------------使用exp开始备份Oracle数据库---------------"
$ORACLE_HOME/bin/exp $bakuser/$bakpass@$hostip:$oracleport/$ORACLE_SID grants=y owner=$orowner file=$lbackPath/$bakdata log=$lbackPath/$baklog #执行备份echo "------------备份数据库完成---------------"cd $lbackPathtar -zcvf  $baktar  $bakdata $baklog   #压缩备份文件和日志文件echo "------------备份文件已打包---------------"#传入备份服务器
scp $lbackPath/$baktar $backNode:$sbackPathecho "------------备份文件已传入备份服务器---------------"find $lbackPath -type f -name \*.dmp -exec rm {} \; #删除备份文件
find $lbackPath -type f -name \*.log -exec rm {} \; #删除日志文件
find $lbackPath -type f -name \*.tar.gz -daystart -mtime +$days -exec rm -rf {} \; #删除60天前的备份(注意:{} \中间有空格)echo "------------本地备份文件已删除()---------------"#删除60天之前的数据库备份文件
ssh $backNode "find $sbackPath -type f -name '*.tar.gz' -daystart -mtime +$days  -exec rm -rf {}  \;"echo "------------远端备份文件保留60天备份完成---------------"

定时任务脚本:


#将备份操作加入到定时任务(每天凌晨2点定时执行)
crontab -e00 2 * * * /dbbakz/scripts/oraclebackup.sh

脚本中调用命令$ORACLE_HOME/bin/exp 是因为使用root用户操作、 同时兼顾备份-打包-传输-删除

可使用

whereis exp

寻找当前服务器命令绝对路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66119.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教你如何为博客网站申请阿里云的免费域名HTTPS证书

如何为博客网站申请阿里云的免费域名HTTPS证书 文章目录 如何为博客网站申请阿里云的免费域名HTTPS证书前置条件:步骤1 例如阿里云控制台,选择SSL证书步骤2 申请购买免费证书步骤3 创建证书步骤3.1 证书申请步骤3.2 DNS域名验证 步骤4 等待证书审核成功&…

【产品设计】移动端表单设计

本文主要是根据项目的表单填写体验差被客户撤下线重新整改,而对此将表单进行了新的用户体验设计的一些构思。 一、现状 传统的PC端空间范围大,能够将表单的所有信息连同温馨提示语等平铺展示出来,但是一下子用户看到这么多内容会给用户带来压…

【设计模式】责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者…

腾讯云轻量应用服务器搭建WordPress网站教程

腾讯云百科分享使用腾讯云轻量应用服务器搭建WordPress网站教程流程,WordPress 是全球最流行的开源的博客和内容管理网站的建站平台,具备使用简单、功能强大、灵活可扩展的特点,提供丰富的主题插件。腾讯云轻量应用服务器提供 WordPress 应用…

C++:模拟实现list

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…

二叉树(4)------收尾

1)最大二叉树 654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 题目解析: 1)首先我们找到了整个数组中最大的元素作为我们的根节点&#xff0c;然后再从左区间中找到最大的元素作为当前根节点的左子树&#xff0c;然后再从右区间里面找到最大的元素作为根节点的右子树…

8.10 用redis实现缓存功能和Spring Cache

什么是缓存? 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。 通过Redis来缓存数据&#xff0c;减少数据库查询操作; 逻辑 每个分类的菜品保存一份缓存数据 数据库菜品数据有变更时清理缓存数据 如何将商品数据缓存起…

<Vite>HMR实现原理

什么是HMR&#xff1f; HMR&#xff08;Hot Module Replacement&#xff09;是一种开发工具&#xff0c;也就是热更新。用于在应用程序运行时替换、添加或删除模块&#xff0c;而无需完全重新加载整个页面或重新启动应用程序。这可以极大地提高开发效率和调试体验。 HMR的优势 …

JAVA日期相关操作

JAVA日期相关操作 计算两个日期相差的天数 /*** 计算两个日期相差的 天数* param smdate String类型初始时间* param bdate String类型截至时间* return Integer*/public static Integer dayCompare(String smdate, String bdate) throws Exception {Date start sdf.par…

深度学习快速入门系列---损失函数

在深度学习中&#xff0c;损失函数的作用是量化预测值和真实值之间的差异&#xff0c;使得网络模型可以朝着真实值的方向预测&#xff0c;损失函数通过衡量模型预测结果与真实标签之间的差异&#xff0c;反映模型的性能。同时损失函数作为一个可优化的目标函数&#xff0c;通过…

Ansible的安装和配置

安装和配置 Ansible 安装所需的软件包 创建名为 /home/greg/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; 172.25.250.9 是 dev 主机组的成员 172.25.250.10 是 test 主机组的成员 172.25.250.11 和 172.25.250.12 是 prod 主机组的成员 172.2…

解读spring中@Value 如何将配置转自定义的bean

实现方式 着急寻求解决方式的猿友先看这块 定义配置转化类 public class UserConverter implements Converter<String, List<User>> {Overridepublic List<User> convert(String config) {if (StringUtils.isEmpty(config)) {return Collections.emptyLis…