数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存。

一、备份脚本

1、初始化变量,记录开始日志

#变量
sysname=填写自己的系统名称
syspath=/home/oracle/databak/$sysname
v_date=$(date '+%Y%m%d%H%M%S')
#日志目录
logfile=${syspath}/backup.${v_date}.log
#打印开始时间
echo backup_time>>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile} echo "backup jcd">>${logfile}
echo "start_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile}

2、进入oracle目录,设置oracle的参数

#进入oracle目录,设置oracle变量
cd /home/11g/app/oracle/product/11.2.
export ORACLE_HOME=/home/11g/app/oracle/product/11.2./db_1
export PATH=$PATH:/home/11g/app/oracle/product/11.2./db_1/bin
export ORACLE_SID=SID名称

3、导出数据

echo $syspath
v_date=$(date '+%Y%m%d%H%M%S')
filename=$syspath/jcd${v_date}.dmp
#导出命令
exp username/password file=${filename} compress=n >> ${logfile}
echo "end_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S'>>${logfile}

4、压缩dump包

gzip ${filename}

5、使用scp,将压缩后的包传递到备份服务器,注意备份服务器上目录需要预先创建

scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/备份目录

二、设定脚本执行时间

我们设定规则为每天凌晨2点执行一次,采用crontab来进行处理

执行crontab -e,设定如下规则

  * * * sh /home/oracle/db.sh

三、关于scp命令密码处理

执行scp命令时候,会提示输入远程主机的密码

scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/备份目录

此时有两种处理办法进行解决:

1、使用加密文件进行认证

1)进入本地主机的~/.ssh目录下

2)运行ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,此处我们使用rsa方式进行

3)将生成的id_rsa和id_rsa.pub权限修改为700

4)将.pub文件复制到远程主机的~/.ssh目录,执行cat id_rsa.pub >> ~/.ssh/authorized_keys,将内容拷入authorized_keys文件

5)修改authorized权限为700

  完成以上修改之后,从本地主机scp到远程主机便无须密码,简单理解应该是通讯时候,本地主机发送scp指令时,采用本地私钥进行签名,远程主机使用公钥验签后,判断问主机可以信赖,开放通讯服务。

2、使用expect命令完成密码交互

  expect命令主要用于脚本中出现必须人工干预的情况下,预先输入指令,模拟的场景为使用expect命令捕捉到提示输入指令的文字,一旦文字出现,自动使用send命令输入需要交互的命令。

  此处使用为:

  expect "*password:"#此处填写系统提示文字
  send "your password\r"#此处填写我们输入的交互命令
  expect eof

[自动运维]oracle自动备份的更多相关文章

  1. [自动运维]weblogic自动发布

    近期一个项目属于测试过渡期,bug修复比较频繁,每次都会伴随着项目的打包.上传.发布,此类重复操作近乎每天都会进行,刚好最近在看python相关资料,决定重新将此前学习的weblogic的wlst相关 ...

  2. Linux轻量级自动运维工具-Ansible浅析【转】

    转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...

  3. Linux轻量级自动运维工具-Ansible浅析 转

    转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...

  4. Linux自动运维工具Ansible的使用

    Linux自动运维工具Ansible的使用 我们熟悉这个工具后, 可以很轻松的安装k8s. 一.介绍 ansible - run a task on a target host(s) Ansible是 ...

  5. 18.自动运维工具ansible

    1 Ansible 介绍和架构 1.1 Ansible介绍 ansible 的名称来自科幻小说<安德的游戏>中跨越时空的即时通信工具,使用它可以在相距数光年的 距离,远程实时控制前线的舰队 ...

  6. Windows服务器Pyton辅助运维--01.自动Copy文件(文件夹)到远程服务器所在目录

    Windows服务器Pyton辅助运维 01.自动Copy文件(文件夹)到远程服务器所在目录 开发环境: u  Web服务器: Windows Server 2008 R2 SP1 IIS 7.5 u ...

  7. SQL SERVER 运维日记-数据库备份

    概述 昨天下午突然看到,<炉石传说>游戏数据库发生宕机并引发数据丢失事故的新闻.刚看到时,满满的不可思议.暴雪啊,网易啊. 都是很牛叉的公司.他们出的游戏我都是很喜欢的. 当我看到,第一时 ...

  8. CentOS 升级 openSSH+ sh脚本自动运维

     升级前后对比 openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: OpenSSH 远程代码执行漏洞(CVE-2016-10009) OpenSSH au ...

  9. 自动运维:Ansible -ansible tower

    文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...

随机推荐

  1. /etc/fstab 文件配置项简单介绍

    Untitled .note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsof ...

  2. wcf第4步之原生调用简单封装

    public interface IDemoServiceChannel : IDemoService, System.ServiceModel.IClientChannel { } public p ...

  3. Windows操作系统

    Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ...

  4. Confuser.crproj

    <?xml version="1.0" encoding="utf-8"?> <project baseDir="bin\Relea ...

  5. Nginx 301重定向设置

    server { server_name www.***.com ***.com; if ($host != 'www.***.com' ) { rewrite ^/(.*)$ http://www. ...

  6. Android联系人数据库

    转载自http://www.2cto.com/kf/201406/309356.html 通信录是一个3层的数据存储模型,这三个数据模型就是ContactsContact.Data,ContactsC ...

  7. 反射的一些用法(WP8.1下)

    我初步的理解:反射就是动态调用(dll)类. 比如某个dll有一个类,通过反射就可以知道它里面属性.方法,就可以实现调用. 确实,dll可以直接引用,但是如果遇到这种情况: 添加.删除功能同属一个Dl ...

  8. Linux线程同步:条件变量

    条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用.使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化.一旦其它 ...

  9. Asp.Net Core--基于角色的授权

    翻译如下: 当创建身份时,它可以属于一个或多个角色,例如Tracy可以属于管理员和用户角色,而Scott可以仅属于用户角色. 如何创建和管理这些角色取决于授权过程的后备存储. 角色通过ClaimsPr ...

  10. Maven No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题

    maven编译项目时出错,提示信息如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3 ...