Oracle数据库定时备份到远程服务器
一、需求
定时将服务器A的oracle数据库中某个database定时生成dmp,备份到服务器B中(保存10天)
二、配置数据库定时备份
- 在服务器A上创建备份目录,并赋予权限
[root@localhost /]# mkdir -p /home/oraclebak
#新建oracle备份目录
[root@localhost /]# chown -R oracle:oinstall /home/oraclebak -R
#设置目录权限为oinstall用户组的oracle用户
- 在服务器B上创建备份目录,并赋予权限
[root@localhost /]# mkdir -p /home/oraclebak
#新建oracle备份目录
[root@localhost /]# chmod 777 /home/oraclebak
- 检查psopuser_bak.sh(见文末)中数据库服务器IP、端口、SID等是否正确,将psopuser_bak.sh文件放到服务器A中 /home/oraclebak 目录下
- 给psopuser_bak.sh赋权限
[root@localhost /]# chmod 777 /home/oraclebak/psopuser_bak.sh
- 更改psopuser_bak.sh编码
[root@localhost /]# vi /home/oraclebak/psopuser_bak.sh
:set ff=unix #设置编码
:wq #保存退出
- 服务器A添加定时任务
[root@localhost /]# crontab -e
#插入下面语句(每天凌晨一点备份一次)
00 1 * * * /home/oraclebak/psopuser_bak.sh
- 查看任务
[root@localhost ~]# crontab -l
三、配置无密传输
- 使用xSell或shh连接工具连接数据库服务器(服务器A),运行 ssh-keygen -t rsa ,一路回车,进入 /root/.ssh ,可以看到 id_rsa 和 id_rsa_pub 两个文件
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #这里一直回车
[root@localhost .ssh]# cd /root/.ssh
[root@localhost .ssh]# ll
total 8
-rw------- 1 root root 1675 Mar 29 16:31 id_rsa
-rw-r--r-- 1 root root 408 Mar 29 16:31 id_rsa.pub
[root@localhost .ssh]# cp id_rsa.pub id_rsa.pub.dbbak
- 在远程服务器(服务器B)上运行命令
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #这里一直回车
- 在服务器A上运行命令
[root@localhost .ssh]# scp ./id_rsa.pub.dbbak 服务器B_IP:/root/.ssh
The authenticity of host '10.3.100.16 (10.3.100.16)' can't be established.
RSA key fingerprint is 17:a3:ae:64:08:b0:42:fd:35:2d:e0:99:a5:8a:59:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.3.100.16' (RSA) to the list of known hosts.
root@10.3.100.16's password:
id_rsa.pub.dbbak 100% 408 0.4KB/s 00:00
- 在远程服务器(服务器B)上运行命令
[root@localhost ~]# cd /root/.ssh/
[root@localhost .ssh]# cat id_rsa.pub.dbbak >> authorized_keys
- 在服务器A上运行脚本,测试是否无需输入密码执行成功
[root@localhost .ssh]# scp ./id_rsa.pub.dbbak 服务器B_IP:/root/.ssh
id_rsa.pub.dbbak 100% 408 0.4KB/s 00:00
四、配置远程服务器(服务器B)定时删除N天前dmp
- 连接服务器B,将psopuser_remote_bak.sh(见文末)脚本放到 /home/oraclebak目录下,并赋权限
[root@localhost ~]# chmod 777 /home/oraclebak/psopuser_remote_bak.sh
- 更改psopuser_remote_bak.sh编码
[root@localhost /]# vi /home/oraclebak/psopuser_remote_bak.sh
:set ff=unix #设置编码
:wq #保存退出
- 添加定时任务
[root@localhost /]# crontab -e
#插入下面语句(每天凌晨一点删除一次)
00 1 * * * /home/oraclebak/psopuser_remote_bak.sh
- 查看任务
[root@localhost ~]# crontab -l
附脚本文件:
psopuser_bak.sh
#这里采用 数据库名称_bak.sh 来命名,为了区分备份的具体数据库
if [ -f ~/.bash_profile ];
then. ~/.bash_profile
fi
echo "begin export psopuser dmp file..."
#设置环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
export ORACLE_SID=MEDB #SID
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
date=$(date +%Y%m%d) #当前时间
days=10 #设置删除10天前的数据
orsid='10.3.100.15:1521/MEDB' #要备份的Oracle数据库IP、端口、SID
orowner=PSOPUSER #要备份的数据库的用户名
bakuser=PSOPUSER #使用此用户来导出dmp
bakpass=123456789 #用户密码
bakdir=/home/oraclebak #备份文件路径
bakdata=$orowner"_"$date.dmp #备份的dmp名称
baklog=$orowner"_"$date.log #备份时产生的log名称
ordatabak=$orowner"_"$date.tar.gz #将备份的dmp和log压缩后的文件名称
cd $bakdir
mkdir -p $orowner
cd $orowner
#导出dmp和log文件
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog
tar -zcvf $ordatabak $bakdata $baklog #压缩dmp和log文件
find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #删除log文件
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #删除dmp文件
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除10天前备份文件
psopuser_remote_bak.sh
bakdir=/home/oraclebak #备份文件路径
days=10 #设置删除10天前的数据
cd $bakdir
find $bakdir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除10天前备份文件
Oracle数据库定时备份到远程服务器相关推荐
- Oracle数据库定时备份脚本
Oracle数据库定时备份脚本 一.编写脚本 vim /home/backup/oraclebk.sh #! /usr/bin #路径名,指定备份的路径 FILEPATH=/home/backup/o ...
- Oracle数据泵自动删除,Oracle数据库定时备份并删除旧文件
1.创建一个expdp导出bat批处理任务,自动删除30天之前备份文件: @echo off rem set backupfile=f_database_%date:~0,4%-%date:~5,2% ...
- oracle定时服务器,服务器oracle数据库定时备份
首先要先建立一个.bat的文件 然后执行这个bat文件 测试是否能得到这个收据库的打包文件. bat文件内容: @echo off @color b del /f /s /q D:\oracle\b ...
- Oracle数据库定时备份脚本(Linux)
说明:脚本共分两部分,一是主机脚本,二是备机脚本.主机上做备份,传到备机上,备份文件做压缩,备机上解压缩备份文件并自动导库. 如果有导库需求,导库时由于原库中前一天导入的数据存在,如果不全量删除就进行 ...
- Oracle数据库定时备份
1.新建一个文本文件,命名Oracle定时备份.txt,文件名可自定义. 2.在txt文本文件添加以下内容,并修改文本文件后缀名为Oracle定时备份.bat. //1 @echo off 2 exp ...
- mysql数据库定时备份,linux服务器数据异地备份
一:备份mysql数据库 (1)编写备份脚本 #!/bin/bash #设置mysql备份目录 folder=/home/javaweb/rsc/mysql/rsc-boot cd $folder d ...
- Oracle数据库的备份
这两天要用oracle的数据备份,在网上找了找例子.给大家贴出来看看. PS: 选择数据库中所有的表的SQL语句 SELECT * FROM DBA_TABLES WHERE OWNER=''(填用户 ...
- server2012 asp odb数据原_异地服务器文件及数据库定时备份
前言: 本文主要介绍SQLSERVER/MYSQL数据库的定时备份,现在服务器以我的一台测试服务器为例进行配置演示详细结果如下: 准备: 好备份软件包.及rar.exe文件. 好备份&rar. ...
- 异地服务器文件及数据库定时备份
前言 本文主要介绍SQLSERVER/MYSQL数据库的定时备份,现在服务器以我的一台测试服务器为例进行配置演示详细结果如下: 准备: 好备份软件包.及rar.exe文件. 安装:这里直接一路点击下一 ...
最新文章
- 分布式缓存Redis Centos下单节点安装
- fota mcsync洛达检测_【科普篇】华强北洛达1536U芯片下的苹果Airpods,与正品差距还有多少...
- Mysql报错时区错误invalid timezone
- Ubuntu 16.04 下 Vim配置
- 操作系统核心原理-5.内存管理(下):段式内存管理
- 《计算机程序设计艺术》pdf
- 沈航计算机考研真题,2018年沈阳航空航天大学考研真题硕士研究生入学考试试题...
- 夯实Java基础(八)——代码块
- jquery动态生成的元素添加事件的方法
- 确保大数据安全的5个最佳实践措施
- 【收藏】基于Dockerfile搭建JAVA Tomcat运行环境
- matlab maple函数用法,怎样在matlab中调用maple命令
- DLL Care破解版|DLL Care(DLL修复工具)破解版下载(附激活码)
- 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法
- PHP几大框架的优点与缺点
- 全云端万能小程序_百搜全云端万能门店小程序v4.0.13五端独家2次开发升级独立版...
- webview加载html图片不显示图片,WebView加载网页不显示图片解决办法
- 如何在地图上批量标注经纬坐标
- 半导体设备基本通信标准介绍系列之-开篇
- 【文献阅读】数据挖掘技术在制冷空调行业的应用
热门文章
- 程序员鼓励师,六年前昙花一现的职业,现在居然还存在?
- 区块链电商市场迎来新高潮 TBK记账系统耀世启航
- linux cpu gonvor,LWN:Linux 5.1使用TEO governor来代替cpuidle menu governor
- BACnet服务器demo连接演示
- WPF 程序点击任务栏图标显示隐藏最小化窗体
- 9.15 复习一天,html hr简介
- CDR(cv-detect-robot)项目简介
- unity:练习小测试
- 机器学习笔记——2 简单线性模型及局部加权线性模型的基本原理和python实现(参数估计的两个基本角度:几何直观和概率直观。函数最值问题的两大基本算法:梯度方法与迭代方法)
- ChatGPT 桌面应用(Mac, Windows and Linux)