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

news2024/11/28 6:29:31

环境准备

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 $lbackPath

tar -zcvf  $baktar  $bakdata $baklog   #压缩备份文件和日志文件

echo "------------备份文件已打包---------------"

#传入备份服务器
scp $lbackPath/$baktar $backNode:$sbackPath

echo "------------备份文件已传入备份服务器---------------"

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 -e


00 2 * * * /dbbakz/scripts/oraclebackup.sh

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

可使用

whereis exp

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】常用Stream API

常见 Stream 流表达式 总体结构图 一、两大类型 中间操作(Intermediate Operations) 中间操作是指在Stream上执行的操作, 它们返回一个新的Stream, 允许你链式地进行多个中间操作. 终端操作(Terminal Operations) 对Stream进行最终处理的操作, 当调用终端操作时, Stream会开始执…

老师如何制作学生分班信息查询系统?

即将迎来新学期的开始!学校和老师们将忙于为我们可爱的学生做分班准备。如果有一个强大的分班查询系统,学生们就可以提前知道自己被分到哪个班级,有哪些课程,以及班主任是谁! 别担心,我将教你如何设计一个…

前端开发常见效果

目录 css实现图像填充文字 css实现手风琴效果 css实现网站变灰色 elementUi的导航栏效果 css实现滚动吸附效果 鼠标经过&#xff0c;元素内部放大 css实现图像填充文字 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta c…

带你彻底了解什么是API接口?

作为一名资深程序员&#xff0c;我知道很多人对API接口这个名词可能还不太了解。今天我要给大家分享一些关于API接口的知识&#xff0c;让你们彻底了解它的概念和作用。一起来看看吧&#xff01; 首先&#xff0c;我们先来解释一下API的全称─Application Programming Interfac…

FPGA应用学习-----FIFO双口ram解决时钟域+asic样机的时钟选通

60m写入异步ram&#xff0c;再用100M从ram中读出 写地址转换为格雷码后&#xff0c;打两拍和读地址判断是否空产生。相反读地址来判断是否满产生。 分割同步模块 asic时钟的门控时钟&#xff0c;fpga是不推荐采用门控时钟的&#xff0c;有很多方法移除fpga的时钟选通。 如果是a…

0基础学C#笔记10:归并排序法

文章目录 前言一、递归的方式二、代码总结前言 将一个大的无序数组有序,我们可以把大的数组分成两个,然后对这两个数组分别进行排序,之后在把这两个数组合并成一个有序的数组。由于两个小的数组都是有序的,所以在合并的时候是很快的。 一、递归的方式 通过递归的方式将大…

研发效能行业工具书来袭!12位专家推荐,文末包邮免费送!

近年来&#xff0c;研发效能度量是一个热点话题。在行业里几乎每家公司的高层都在关注如何有效度量研发效能&#xff0c;合理提升效率、项目质量&#xff0c;降低成本。 尽管这些公司来自互联网、金融、房地产、汽车行业等各行各业&#xff0c;且业务不同、软件研发模式不同&a…

誉天HCIA-CloudService3.0 课程简介

课时数&#xff1a;30 课时 一、云计算概念和价值 1.1 什么是云计算 1.1.1 IT 发展历程及面临的挑战 1.1.2 云计算的定义 1.1.3 云计算的应用场景 1.1.4 云计算技术 1.1.4.1 虚拟化 1.1.4.2 云计算 1.1.4.3 容器 1. 2. 云计算部署形态及商业模式 1.2.1 IaaS 1.2.2 PaaS 1.2.3 S…

BM8 链表中倒数最后k个结点

/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param pHead ListNode类 …

Blender如何给fbx模型添加材质贴图并导出带有材质贴图的模型

推荐&#xff1a;使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 此教程适合新手用户&#xff0c;专业人士直接可直接绕路。 本教程中介绍了利用Blender建模软件&#xff0c;只需要简单几步就可以为模型添加材质贴&#xff0c;图&#xff0c;并且导出带有材质的模型文…

php代码审计,php漏洞详解

文章目录 1、输入验证和输出显示2、命令注入(Command Injection)3、eval 注入(Eval Injection)4、跨网站脚本攻击(Cross Site Scripting, XSS)5、SQL 注入攻击(SQL injection)6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)7、Session 会话劫持(Session Hijacking…

PC端自动化工具pywinauto:如何选择应用程序的窗口?

如何选择需要打开的应用程序的窗口有2种方法&#xff1a; ①通过窗口标题/窗口类名来打开应用程序窗口&#xff0c;第一步就要打开窗口精灵&#xff0c;通过拖动放大镜到应用窗口找到窗口标题和窗口类名&#xff0c;如下图所示&#xff1a; 接下来就可以根据窗口类名和标题选择…

PostgreSQL技术沙龙|PPT合集速来下载

新机遇&#xff0c;新态势&#xff0c;新发展 2023年8月5日&#xff0c;由中国开源软件推进联盟PG分会&#xff08;中国PG分会&#xff09;联合杭州云贝教育共同举办的“PostgreSQL技术沙龙杭州站”圆满举行。本次活动结合当下去O、国产化趋势&#xff0c;邀请社群技术专家围…

LoadRunner 脚本优化之——参数化迭代介绍

在LoadRunner的脚本优化时&#xff0c;有时发送给服务器的请求参数化时&#xff0c;服务器返回的内容也会和参数化的内容相对应&#xff0c;例如发送的请求带有查询key123&#xff0c;则服务器也会返回含有123相关的内容。这时我们在使用检查点检查服务器参数化返回的数据正确性…

威胁性恶意软件,基于LINUX多云环境中的威胁

恶意软件迁移到基于 Linux 的云系统 SC Media 基于 Linux 的威胁经常被忽视。这是一个问题&#xff0c;因为大多数多云环境都是基于 Linux 的。VMware 最近在一份报告和 SC Media 网络广播中强调了这个问题。 这是事实&#xff1a;大多数云在 Linux 上运行。90% 的云由 Linux 操…

Vue脚手架安装

安装包下载 安装包可以去官网下载&#xff08;官网地址&#xff09;&#xff0c;建议下载稳定版。 2. 选择安装目录 选择安装到一个&#xff0c;没有中文&#xff0c;没有空格的目录下&#xff08;新建一个文件夹NodeJS&#xff09; 3. 验证NodeJS环境变量 NodeJS 安装完…

PlanetScale vs. Neon - MySQL 和 Postgres 间的第二仗

本文为「数据库全方位对比系列」第三篇&#xff0c;该系列的前两部作品为&#xff1a; 全方位对比 Postgres 和 MySQL全方位对比 Postgres 和 MongoDB 根据 2023 年 Stack Overflow 调研&#xff0c;Postgres 已经取代 MySQL 成为最受欢迎和渴望的数据库了。 看起来 MySQL 和 …

7个最先进的3D模型生成式AI大模型【AIGC】

AI正在不同的行业中出现&#xff0c;我们对 3D 资产生成的前景感到兴奋。 对于游戏开发商和工作室来说&#xff0c;3D 资产通常是开发过程中最棘手的部分之一&#xff0c;容易出现瓶颈。 生产一个模型的成本从 60 美元到 1500 美元不等&#xff0c;需要 2 到 10 周的时间来回制…

【C++】做一个飞机空战小游戏(四)——给游戏添加背景音乐(多线程技巧应用)

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

【项目实战】Kafka 生产者写入分区的策略

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO TOP红人 Java知识图谱点击链接&…