Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286900
  • 博文数量: 38
  • 博客积分: 706
  • 博客等级: 上士
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 09:09
文章分类

全部博文(38)

文章存档

2013年(23)

2012年(15)

我的朋友

分类: Oracle

2012-12-26 11:28:23

    Oracle本身的备份策略很多,这里只说说简单的exp命令备份在双机互为主备的方案中shell怎么做。

    由于互为主备,平时AB机各自运行自己的实例,当然发生故障后有双机软件去实现自动切换。这样就导致了存储上挂接的同一个lum并不会同时出现两台主机上。那么传统的exp备份脚本就无法正常运行。比如常用的exp的shell脚本如下:

点击(此处)折叠或打开

  1. ORACLE_BASE=/export/home/oracle
  2. export ORACLE_BASE
  3. ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
  4. export ORACLE_HOME
  5. ORACLE_SID=test
  6. export ORACLE_SID
  7. LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/openwin/lib
  8. export LD_LIBRARY_PATH
  9. NLS_LANG="simplified chinese"_china.zhs16gbk
  10. export NLS_LANG
  11. ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  12. export ORA_NLS33
  13. PATH=$PATH:/opt/SUNWspro/bin:/usr/sbin:/opt/bin:$ORACLE_HOME/bin:/usr/ccs/bin
  14. export PATH
  15. DATE=`date +%Y%m%d`
  16. cd /databak
  17. exp userid=’test/test’@test compress=n file=test${DATE}.dmp log=test${DATE}.log
  18. gzip test${DATE}.dmp

    如果套用到互为备份的双机中,就有问题,这个shell到底放在A机还是B机呢?还是两台都放?

    如果放在其中一台服务器上,假设放在A机上。A机出问题(网络故障或者系统故障),数据库B机自动接管了(这时存储上的lum都会挂接到B机)。A机脚本就无法工作。

    如果A、B机都放,依然是问题。存储上的lum是无法同时挂接到两台服务器的。

    因此,那就应该考虑,从判断监听是否启动或者判断数据库是否启动入手,通过shell生成一个flag文件,然后去判断这个flag文件大小。修改后的shell如下:

点击(此处)折叠或打开

  1. ORACLE_BASE=/export/home/oracle
  2. export ORACLE_BASE
  3. ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
  4. export ORACLE_HOME
  5. ORACLE_SID=test
  6. export ORACLE_SID
  7. LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/openwin/lib
  8. export LD_LIBRARY_PATH
  9. NLS_LANG="simplified chinese"_china.zhs16gbk
  10. export NLS_LANG
  11. ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  12. export ORA_NLS33
  13. PATH=$PATH:/opt/SUNWspro/bin:/usr/sbin:/opt/bin:$ORACLE_HOME/bin:/usr/ccs/bin
  14. export PATH
  15. DATE=`date +%Y%m%d`
  16. #这里是AB机种本地磁盘的目录
  17. cd /test/test_sh/
  18. rm -f lsnr.test
  19. ps -ef | grep "/export/home/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER_test" | grep -v grep > lsnr.test
  20. if [ -s lsnr.test ]
  21. then
  22. #这里是存储上的目录
  23. cd /test/Backup
  24. exp userid=’test/test’@test compress=n file=test${DATE}.dmp log=test${DATE}.log
  25. gzip test${DATE}.dmp
  26. else
  27. echo(当然这里还可以和邮件结合起来,让每次备份什么的dba心中有数)
  28. fi

    最后,在AB机都放上这个脚本。在crontab中写好执行时间,也不会因为其中一台服务器down掉导致备份无法正常执行。

可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本
本文作者:
罗兰小筑 本文url:

阅读(2753) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~