Oracle 备份与恢复 (Docker部署版)
Oracle 备份与恢复 (Docker部署版)
一,宿主机设置定时备份脚本
1.检查Oracle容器是否正常运行
docker ps
2.进入容器,创建shell脚本
#oracle11g 是容器名
docker exec -it oracle11g bash
#创建数据库dump的目录
mkdir -p /home/oracle/dump/
cd /home/oracle/dump/
#编写脚本并插入如下内容
vi dump.sh
#!/bin/bash
whoami
su - oracle <<!
whoami
cd /home/oracle/dump
exp <用户名>/<密码> owner=<要导出的表格所属的用户名> file=exp_xxx.dmp log=exp_xxx.log buffer=6000000
!
#脚本保存后赋予可执行权限
chmod 777 dump.sh
3.在宿主机创建定时任务执行容器内脚本并拷贝至宿主机
#首先退出制宿主机,然后创建保存目录
mkdir -p /home/oracle/
cd /home/oracle/
#创建shell脚本
vi oracle.sh
#添加如下内容
#!/bin/bash
docker exec -u 0 oracle11g bash -c "cd /home/oracle/;./dump.sh"
docker cp oracle11g:/home/oracle/dump /home/oracle/
备注:bash -c 后面是需要在oracle容器内部执行的指令。分别指,是进入到脚本所在的目录,执行脚本。
4.设置定时任务
#首先查看是否安装crontab
service crond status
#如果没有就执行安装命令
yum install cronie
#启动服务
service crond start
crontab的其他命令
#重启服务
service crond restart
#关闭服务
service crond stop
#重新加载服务
service crond reload
#查看状态
service crond status
确定已经启动crontab后就创建定时任务
#执行后会出现一个可编辑的界面
crontab -e
#末尾添加定时任务指令,可以按需求调整执行时间
30 18 * * 5 bash /home/oracle/oracle.sh
#查看是否设置成功
crontab -l
备注:时间格式如下
f1 f2 f3 f4 f5 program
- 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
- 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
- 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
- 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
- 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
例:
周五每天下午 5:00执行脚本
0 17 * * 5 bash /home/oracle/oracle.sh
二,拷贝到目标服务器
1.配置ssh免密
#首先在安装Oracle的服务器上
cd /root/.ssh/
#如果没有该目录则执行
ssh-keygen -t rsa
#然后一直回车,重新进入该目录
cd /root/.ssh/
ll
#如果没有authorized_keys就新建一个
touch authorized_keys
切换到目标服务器,同样如果没有.ssh目录就执行ssh-keygen -t rsa,然后进入.ssh目录
#查询密钥
cat id_rsa.pub
然后复制此处查询出的密钥,继续回到安装Oracle的服务器
#编辑authorized_keys,把刚才的密钥复制进去,然后保存
vi authorized_keys
回到目标服务器测试能否远程登录
ssh root@<Oracle服务器Ip>
2.继续在目标服务器编写定时任务
#新建备份文件夹
mkdir -p /home/oracle/
vi scp.sh
#脚本内添加
#!/bin/bash
scp -r root@<Oracle宿主机IP>:/home/oracle/dump /home/test/oracle/
设置定时任务
crontab -e
#因为Oracle宿主机的备份任务是设置到星期五的晚上六点半,为防止数据库过大,所以scp的任务间隔时间要长一点
30 20 * * 5 bash /home/oracle/scp.sh
#查看是否设置成功
crontab -l
三,数据恢复
1.首先安装Oracle(教程)
2.创建Oracle表空间和用户,导入表结构
#进入安装oracle的服务器
docker exec -it -u root <服务名> bash
#进入容器后切换oracle用户
su - oracle
#进入oracle
sqlplus / as sysdba
#创建表空间
create tablespace <表空间名> datafile '/home/oracle/app/oracle/oradata/helowin/tets02.dbf' size 1G reuse autoextend on next 50M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
#创建用户并分配表空间
create user <用户名> identified by <密码> default tablespace <表空间名> temporary tablespace TEMP;
#给用户赋权
grant connect,dba,exp_full_database,imp_full_database to <用户名> with admin option;
3.导入流程
首先把备份的数据库文件exp_xxx.dmp上传到新库服务器
#然后拷贝到容器内部
docker cp ./exp_xxx.dmp oracle_11g:/home
#进入oracle容器
docker exec -it oracle_11g bash
# 临时设置环境变量
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
cd ~
#需要根据实际调整账号密码 以及fromuser touser
imp <登录数据库的用户名>/<密码> fromuser=<dmp文件导出表格的所属用户名> touser=<需要导入的用户名> file=/home/exp_xxx.dmp log=imp.log ignore=y
rm -f /home/exp_xxx.dmp
Oracle 备份与恢复 (Docker部署版)的更多相关文章
- 一步步学会用docker部署应用(nodejs版)
一步步学会用docker部署应用 docker是一种虚拟化技术,可以在内核层隔离资源.因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境.这大大简化了应用部署,让运维人员无需陷入 ...
- Oracle Berkeley DB Java 版
Oracle Berkeley DB Java 版是一个开源的.可嵌入的事务存储引擎,是完全用 Java 编写的.它充分利用 Java 环境来简化开发和部署.Oracle Berkeley DB Ja ...
- 搭建基于Docker社区版的Kubernetes本地集群
Kubernetes的本地集群搭建是一件颇费苦心的活,网上有各种参考资源,由于版本和容器的不断发展,搭建的方式也是各不相同,这里基于Docker CE的18.09.0版本,在Mac OS.Win10下 ...
- 二、Docker部署应用
一.有关Docker的安装请参考docker官网 Docker 提供了两个版本:社区版 (CE) 和企业版 (EE). Docker 社区版 (CE) 是开发人员和小型团队开始使用 Docker 并 ...
- 【Docker江湖】之docker部署与理解
转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...
- Docker部署HDFS
docker部署hadoop只是实验目的,每个服务都是通过手动部署,比如namenode, datanode, journalnode等.如果为了灵活的管理集群,而不使用官方封装好的自动化部署脚本,本 ...
- docker(部署常见应用):docker部署mysql
上节回顾:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql: # 查看镜像 docker image ...
- docker部署xxl-job 通用反射执行器
原因 最近在公司写一些job,公司使用的是spring boot提供的注解形式实现的. 这样在自测的时候很麻烦,而且测试提测的时候需要修改cron表达式->提交git->jenkins打包 ...
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- 【docker部署】基于linux的centos操作系统部署安装docker容器
一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...
随机推荐
- 使用 SmartIDE 开发golang项目
目录 概述 架构 开发视图 快速开始 安装 SmartIDE CLI 环境 启动 创建环境 安装工具 调试 基本调试 Start 命令调试 很荣幸在去年加入到 SmartIDE 产品组,从事开发工作, ...
- VMware虚拟机开机黑屏解决方法
挂起时可以看到显示,但是开机就黑屏 解决方法: 命令提示符,鼠标右键点击"命令提示符",弹出菜单之后选择"以管理员身份运行" 在命令提示符窗口中输入" ...
- 如何优化大场景实时渲染?HMS Core 3D Engine这么做
在先前举办的华为开发者大会2022(HDC)上,华为通过3D数字溪村展示了自有3D引擎"HMS Core 3D Engine"(以下简称3D Engine)的强大能力.作为一款高性 ...
- python与数值计算环境安装
数值计算的编程的软件很多种,也见过一些编程绘图软件的对比. 利用Python进行数值计算,需要用到numpy(矩阵) ,scipy(公式符号), matplotlib(绘图)这些工具包. 1.Linu ...
- python多进程程序打包成exe的问题
粘贴一下部分的多进程代码 if __name__ == '__main__': """"流程模拟""" multiprocessi ...
- Redis RDB 与AOF
参考书籍<Redis设计与实现> 一丶为什么redis需要持久化 redis 作为一个内存数据库,如果不想办法将存储在内存中的数据,保存到磁盘中,那么一旦服务器进程退出,那么redis数据 ...
- [OpenCV实战]16 使用OpenCV实现多目标跟踪
目录 1 背景介绍 2 基于MultiTracker的多目标跟踪 2.1 创建单个对象跟踪器 2.2 读取视频的第一帧 2.3 在第一帧中确定我们跟踪的对象 2.4 初始化MultiTrackerer ...
- 官网下载CentOS系统镜像过程
想学习CentOS系统,但是不知道镜像去哪里搞,随便去个第三方发现要么要注册,要么各种广告病毒,或者好不容易找到官网,不仅全英文,有些专业术语也不懂,本文说明官网下载自己想要的CentOS镜像整个流程 ...
- 数位排序【第十三届蓝桥杯省赛C++C组】
数位排序 小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序. 当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面. 例如,\(2022\) 排在 \( ...
- VUEX state 的使用学习二
转载请注明出处: state 提供唯一的数据资源,所有的共享的数据都要统一放到store 中的state中进行存储; 状态state用于存储所有组件的数据. 管理数据 // 初始化vuex对象 con ...