通过shell备份oracle用户数据,并将巡检结果发送至windows跳板机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过shell备份oracle用户数据,并将巡检结果发送至windows跳板机相关的知识,希望对你有一定的参考价值。
背景:生产环境有oracle服务器,有数据库用户若干,需要通过exp方式备份数据库用户数据,需要巡检数据库备份的结果。
目标:通过Linux shell+exp+crontab进行周期备份,通过ssh命令跨系统将Linux下备份结果传输至windows。
说明:
oracle client 11g oracle server: oracle11g
操作系统:sentos6 or redhat6
端口:1521
Oracle _sid = shwhcq
操作过程:
一、备份
1、创建目录
以oracle用户登录系统
mkdir /home/oracle/script ------脚本目录
mkdir /ipi_bak/db/gg -------数据文件备份目标目录(这里给oracle用户w权限)
说明:这里我是以用户导出数据的,所以在/ipi_bak/db/gg 下以各用户的名称创建子目录
2、创建脚本
以xssp用户的导出脚本为例:vi xssp-exp.sh
#!/bin/bash export ORACLE_BASE=/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=shwhcq1 export LANG=C export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" export ORACLE_TERM=xterm export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib TIME=`date "+%F_%H:%M:%S"` /grid/11.2.0/grid_1/bin/exp xssp/[email protected]ip/shwhcq grants=y file=/ipi_bak/db/gg/xssp/xssp_$TIME.dmp log=/ipi_bak/db/gg/xssp/xssp_$TIME.log owner=xssp &> /dev/null
给执行权限:chmod +x xssp-exp.sh
注:以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。
3、创建计划任务
[[email protected] script]$ crontab -e
5 2 * * * /bin/sh /home/oracle/script/xssp-exp.sh #每天02:05分执行 10 2 * * * /bin/sh /home/oracle/script/artcms-exp.sh 15 2 * * * /bin/sh /home/oracle/script/caee_scan-exp.sh 25 2 * * * /bin/sh /home/oracle/script/ipijbpm-exp.sh 35 2 * * * /bin/sh /home/oracle/script/ipiqxt-exp.sh
注:crontab 执行记录在/var/log/cron
二、备份结果输出到windows跳板机
1、将备份日志的最后一行执行情况输出到指定文件,文件以日期命名
cat /home/oracle/script/db_bak.sh
#!/bin/bash TIME=`date "+%F"` xssp_log=/ipi_bak/db/gg/xssp/xssp_$TIME.log artcms_log=/ipi_bak/db/gg/artcms/cms_$TIME.log caee_log=/ipi_bak/db/gg/caee/caee_$TIME.log ipiqxt_log=/ipi_bak/db/gg/ipiqxt/ipiqxt_$TIME.log ipijbpm_log=/ipi_bak/db/gg/ipijbpm/ipijbpm_$TIME.log dblog=/home/oracle/db_baklog/$TIME.log echo "xssp_log" >> $dblog tail -1 $xssp_log >> $dblog echo "artcms_log" >> $dblog tail -1 $artcms_log >> $dblog echo "caee_log" >> $dblog tail -1 $caee_log >> $dblog echo "ipiqxt_log" >> $dblog tail -1 $ipiqxt_log >> $dblog echo "ipijbpm_log" >> $dblog tail -1 $ipijbpm_log >> $dblog
2、windows上用ssh的scp命令下载备份执行结果日志,这样就不用每次登陆去查看
批处理:cat_linux_bak.bat
cd D:\\Program Files (x86)\\SSH Communications Security\\SSH Secure Shellscp2.exe [email protected]数据库备份服务器ip:/home/oracle/db_baklog/* D:\\ipi_bak\\script\\linux_dbbak_logs\\
注:想要Linux和win要通过脚本自动互传文件不交互。需要进行Linux和win的信任配置:http://blog.csdn.net/jiangshouzhuang/article/details/50683049
简单叙述: 我们把Windows上面生成的Public Key放到Linux服务器上指定用户家目录下面的.ssh目录中,并添加公钥内容到.ssh目录下面的authorized_keys文件。 如果我们开始从Windows(客户端)上面通过ssh方式远程Linux(服务器)时,此时客户端软件就会向服务器发出请求,请求用密匙进行安全验证。服务器收到请求之后,先在该服务器上的主目录下寻找公匙,然后把它和发送过来的公匙进行比较。如果两个密匙一致,服务器就用公匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用私匙解密再把它发送给服务器,此时因为密钥能匹配上,所以可以直接登录到Linux服务器。 1、在Windows本机上生成密钥 D:\\SSHCommunications Security\\SSH Secure Shell>ssh-keygen2-t rsa 注释:我们这里使用rsa的密钥,默认是2048bit(位),同样我们也可以使用dsa方式的密钥。 在执行ssh-keygen2 -t rsa生成密钥对时,会提示你输入Passphrase的值,我们要求免密码登录服务器,所以直接回车。 有提示: Private key saved to C:/Users/Administrator/ApplicationData/SSH/UserKeys/id_rsa _2048_a Public key saved to C:/Users/Administrator/ApplicationData/SSH/UserKeys/id_rsa_ 2048_a.pub 根据提示知道了生成的密钥对的路径,但是经过我实际查找,我的windows环境的密钥对位于:C:\\Users\\Administrator\\AppData\\Roaming\\SSH\\UserKeys下面。
2、然后我们将Windows的C:\\Users\\Administrator\\AppData\\Roaming\\SSH\\UserKeys目录下的id_rsa_2048_a.pub文件上传到Linux服务器的home/user/.ssh目录下面。 因为我们的公钥是在Windows上面生成的,Linux的Openssh不识别,所以需要进行转换后再追加到authorized_keys中: $ ssh-keygen -i -f id_rsa_2048_a.pub >>authorized_keys 退出之前使用密码登录的SSH Secure Shell客户端,然后重新登录并在登录认证状态栏中选择Public Key方式,这样就可以免密码登录了。 3、测试 使用SSH Secure Shell客户端自带的scp2命令下载Linux服务器的文件 D:\\SSH Communications Security\\SSHSecure Shell>scp2.exe -r -d [email protected]:/home/user/testhivedata D:\\test\\ .000000_0.crc | 12B | 12B/s | TOC: 00:00:01 | 100% 000000_0 | 96B | 96B/s | TOC: 00:00:01 | 100% datacity.txt | 95kB | 95kB/s | TOC: 00:00:01 | 100% 可以看出远程拷贝也不需要输入密码。 |
最后查看执行结果:以后可以轻松的查看oracle的备份结果
以上是关于通过shell备份oracle用户数据,并将巡检结果发送至windows跳板机的主要内容,如果未能解决你的问题,请参考以下文章