百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Linux新手入门系列:linux下Oracle定时备份

mhr18 2024-09-20 20:48 18 浏览 0 评论

本章节采用比较常见的逻辑备份exp/imp。

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。

注意:

Linux下区分大小写;
Linux多用户多线程;
Linux下每个文件和目录都有访问权限;

linux下Oracle定时备份

本章节采用比较常见的逻辑备份exp/imp。

一、Oracle数据导入导出语法

1.数据导出

#导出全库(只有dba权限的用户才能导出全库)
$ exp dba用户/dba密码@实例名 file=导出文件.dmp log=导出日志文件.log full=y

#导出指定用户的表
$ exp dba用户/dba密码@实例名 file=导出文件.dmp log=导出日志文件名.log owner=用户
#也可以使用普通用户导出自己的表
$ exp 用户/密码@实例名 file=导出文件.dmp log=导出日志文件.log

#导出多个用户的表
$ exp dba用户/dba密码@实例 file=导出文件名.dmp log=导出日志文件.log owner=用户1,用户2

#导出指定表
$ exp dba用户/dba密码@实例 file=导出文件.dmp log=导出日志文件.log tables=表1,表2

#只导出表结构
# 在导出语句后追加rows=n参数即可,rows=n表示不导出数据行。

2.数据导入

#导入全库
$ exp dba用户/dba密码@实例 file=导出文件.dmp log=导出日志文件.log full=y

#单个用户的表
$ exp dba用户/dba密码@实例 file=导出文件.dmp log=导出日志文件.log formuser=导出时的用户 touser=要导入的用户

#导入指定的表
$ exp dba用户/dba密码@实例 file=导出文件.dmp log=导出日志文件.log tables=表1,表2

二、定时备份

1.备份策略

逻辑备份exp;
备份路径为/home/db_bak;
定时备份为每晚23.00执行;
保留7天的备份;

2.编辑备份脚本ora_bak.sh

# vim /home/db_bak/ora_bak.sh

内容如下:

#这里需要重新设置环境变量,因为crontab定时器是系统程序,没有oracle的环境变量

#设置oracle环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:/usr/sbin:$ORACLE_HOME/bin

#或者直接执行source使oracle的环境变量生效,因为之前.bash_profile里已经配置过了
# source /home/oracle/.bash_profile

#备份目录
bak_dir=/home/db_bak
#备份用户名
d_name=test
#备份时间
time=$(date +%Y%m%d%H)

#开始备份
exp test/test@orcl file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log
#或者异地备份
#exp test/test@172.16.2.100/orcl file=$bak_dir/$d_name_$time.dmp log=$bak_dir/$d_name_$time.log

#删除7天以前的备份,注意find语句结尾的分号
find $bak_dir -name "*.dmp" -mtime +7 -exec rm -f {} \;
find $bak_dir -name "*.log" -mtime +7 -exec rm -f {} \;

3.添加定时任务

方法一:crontab -e,为用户设置定时器

# crontab -e -u oracle #使用默认编辑器设置给oracle用户定时器
或者切换到orale用户后执行
$ crontab -e
#增加以下内容:
0 23 * * * sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1

#生效后文件存入/var/spool/cron/oracle,另外crontab -e对格式有校验

方法二:编辑定时器文件,为系统设置定时器,可以指定执行用户

# vim /etc/crontab
#增加以下内容:
0 23 * * * oracle sh /home/db_bak/ora_bak.sh > /home/db_bak/backup.log 2>&1

三、备份恢复/导入

切换到oracle用户
# su - oracle

$ imp test2/test2@orcl file=/home/db_bak/test_20210830.dmp log=imp.log formuser=test touser=test2

#参数说明:formuser导出时的用户名,touser要导入的用户名

IT小胖豆:初学者踩坑之路及过程分享,希望能够帮到一些初学者,欢迎各位IT打工人,入坑讨论-_-

相关推荐

B站收藏视频失效?mybili 收藏夹备份神器完整部署指南

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙很多B站用户都有过类似经历:自己精心收藏的视频突然“消失”,点开一看不是“已被删除”,就是“因UP主设置不可见”。而B站并不会主动通知...

中间件推荐初始化配置

Redis推荐初始化配置bind0.0.0.0protected-modeyesport6379tcp-backlog511timeout300tcp-keepalive300...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

后端开发必看!Redis 哨兵机制如何保障系统高可用?

你是否曾在项目中遇到过Redis主服务器突然宕机,导致整个业务系统出现数据读取异常、响应延迟甚至服务中断的情况?面对这样的突发状况,作为互联网大厂的后端开发人员,如何快速恢复服务、保障系统的高可用...

Redis合集-大Key处理建议

以下是Redis大Key问题的全流程解决方案,涵盖检测、处理、优化及预防策略,结合代码示例和最佳实践:一、大Key的定义与风险1.大Key判定标准数据类型大Key阈值风险场景S...

深入解析跳跃表:Redis里的"老六"数据结构,专治各种不服

大家好,我是你们的码农段子手,今天要给大家讲一个Redis世界里最会"跳科目三"的数据结构——跳跃表(SkipList)。这货表面上是个青铜,实际上是个王者,连红黑树见了都要喊声大哥。...

Redis 中 AOF 持久化技术原理全解析,看完你就懂了!

你在使用Redis的过程中,有没有担心过数据丢失的问题?尤其是在服务器突然宕机、意外断电等情况发生时,那些还没来得及持久化的数据,是不是让你夜不能寐?别担心,Redis的AOF持久化技术就是...

Redis合集-必备的几款运维工具

Redis在应用Redis时,经常会面临的运维工作,包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。接下来,从这三个方面,介绍一些工具。先来学习下监控Redis实时...

别再纠结线程池大小 + 线程数量了,没有固定公式的!

我们在百度上能很轻易地搜索到以下线程池设置大小的理论:在一台服务器上我们按照以下设置CPU密集型的程序-核心数+1I/O密集型的程序-核心数*2你不会真的按照这个理论来设置线程池的...

网络编程—IO多路复用详解

假如你想了解IO多路复用,那本文或许可以帮助你本文的最大目的就是想要把select、epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别。基础知识IO多路复用涉及...

5分钟学会C/C++多线程编程进程和线程

前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...

尽情阅读,技术进阶,详解mmap的原理

1.一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程...

C++11多线程知识点总结

一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多...

微服务高可用的2个关键技巧,你一定用得上

概述上一篇文章讲了一个朋友公司使用SpringCloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但如果对一些东西理解的不深刻,还真会犯一些错误。这篇文章我们来聊聊在微服务架构中,到底如...

Java线程间如何共享与传递数据

1、背景在日常SpringBoot应用或者Java应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...

取消回复欢迎 发表评论: