背景:

以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法。不得不研究一番了!经过两天的研究终于问题得以解决。将问题处理步骤记录下来以备后用,也希望能帮助到需要的人。

首先介绍下我们的环境:

两台服务器

一个存储

两个双机热备软件

一、双击热备工作流程

在两台服务器上分别安装一个双机热备软件,并且两台服务器都挂载了存储,双机热备软件一直在监测两台服务器上配置的服务项是否正常,当监测到某台服务器上双机软件中配置的服务启动不了或者出现故障,双机软件自动切换另一台服务器上并启动双机软件配置的所有服务。

二、oracle数据库的双机搭建过程和问题

第一步:挂载存储至两台服务器上(例如两台服务器的挂载盘符为E盘);
第二步:在服务器A上安装oracle:将oracle安装文件安装在D盘下,数据文件安装在存储E盘上,安装完成后并将Oracle服务设置为手动;
第三步:关掉服务器A并进入服务器B:将服务器A安装在存储E盘的oracle的数据文件更改其他名称;
第四步:按照第二步的步骤在服务器B上安装oracle(需要注意的是B和A服务器安装Oracle的安装文件和数据文件路径必须完全一样);
第五步:在双机热备软件上配置oracle服务,并配置一个虚拟IP供外部访问,到时候应用软件只需连接该虚拟IP和端口就可以访问数据库了;
      以上是oracle双机的安装步骤,那样只是安装完成但是实际上是有隐患的,我这边就真正出现了,小伙伴们需要耐心看完就知道问题出在哪

三、问题现象

只要双机热备软件切换数据库那么整个数据库就宕了!无法启动;

四、问题原因

因为最初一个服务器A上Oracle正常运行的时候,Oracle控制文件已经记录下了该数据库运行的所有状态,当oracle双机切换到服务器B的时候,oracle监测到控制文件保存的状态和存储上的数据文件真实状态一不一致,那么自然数据库就不会切换到B上了。

五、解决方法

自定义初始化文件,并修改自定义的初始文件的配置内容,使得控制文件都加载的是存储上的控制文件用以保持两台服务器的控制文件和数据文件状态一致,并使两台服务器的数据库启动时都加载自定义的初始化文件,具体方法如下:

1、使用pl/sql dev 执行CREATE PFILE='C:\INIT.ORA' FROM SPFILE;语句,并且修改*.control_files参数到E盘下的控制文件,将生成的INIT.ORA复制到D:\app\mypfile\;

orcl.__db_cache_size=1946157056
orcl.__java_pool_size=67108864
orcl.__large_pool_size=16777216
orcl.__oracle_base=\'d:\\app\\Administrator\'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=1811939328
orcl.__sga_target=2717908992
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=654311424
orcl.__streams_pool_size=0
*.audit_file_dest=\'d:\\app\\Administrator\\admin\\orcl\\adump\'
*.audit_trail=\'db\'
*.compatible=\'11.2.0.0.0\'
*.control_files=\'e:\\app\\Administrator\\oradata\\orcl\\control01.ctl\',\'e:\\app\\Administrator\\oradata\\orcl\\control02.ctl\'
*.db_block_size=8192
*.db_domain=\'\'
*.db_name=\'orcl\'
*.db_recovery_file_dest=\'d:\\app\\Administrator\\flash_recovery_area\'
*.db_recovery_file_dest_size=4102029312
*.diagnostic_dest=\'d:\\app\\Administrator\'
*.dispatchers=\'(PROTOCOL=TCP) (SERVICE=orclXDB)\'
*.memory_target=4518313984
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=\'EXCLUSIVE\'
*.undo_tablespace=\'UNDOTBS1\'

2、编写sql脚本test.sql并将脚本放置到D:\app\mypfile\,内容:

connect / as sysdba
shutdown immediate
startup pfile=\'D:\\app\\mypfile\\init.ora\';
exit;

3、编写批处理脚本test.bat,内容:

sqlplus /nolog @D:\\app\\mypfile\\test.sql

4、这时候在双机热备软件中在oracle启动前添加test.bat,这样问题解决了;

 

最新文章

  1. [LeetCode] Sort Transformed Array 变换数组排序
  2. 使用MJRefresh遇到的一个问题,上拉刷新后tableview瞬间滑到最底部
  3. Servlet---RequestDispatcher.include方法
  4. Ember入门指南——教程目录
  5. 简单图解设置MYSQL可以通过其他机器远程访问,开启远程访问权限
  6. UE4 C++ 使用FTimeLine/FTime 实例 Actor moving faster than Timeline
  7. Q114寒假作业之割绳子
  8. 【BZOJ】3319: 黑白树
  9. git用法
  10. 查看图片真正的格式,在不知道扩展名的情况下区分是jpeg还是bmp
  11. API - 微云
  12. 基于iview 封装一个vue 表格分页组件
  13. 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
  14. 如何在excel单元格中插入图片批注
  15. C++ new和delete 堆和栈
  16. 【WebForm】知识笔记
  17. MQTT Stresser
  18. Js 图片轮播渐隐效果
  19. Python学习-11.Python中的类定义
  20. docker安装Tomcat软件,部署项目

热门文章

  1. 从零开始的Wordpress个人博客搭建
  2. linux:清空文件内容与批量kill 指定程序名的进程
  3. 【练习题】proj2 字符串压缩
  4. 16 input默认样式清除
  5. ZooKeeper学习之路(五)—— ACL权限控制
  6. 预习初三物理电学部分的心得体会&知识梳理(持续更新)
  7. Solr配置文件 schema.xml
  8. Navicat for MySQ v11-v12都有的,供大家学习提升使用
  9. 6tunnel数据转发
  10. win10win7office系列激活工具 KMSAuto Net 2016 v1.5.4 绿色便携版