Oracle 12C 双机冷备的常见问题解答

标签: oracle
45人阅读 评论(0) 收藏 举报

1、什么是Oracle数据库的双机冷备?

双机冷备,不同于Oracle RAC,是指多台物理机或虚拟机,可以挂载相同某个存储,并在每台数据库服务器上都安装好同样的数据库软件和Oracle实例,在主服务器宕机之后,切换到备用服务器继续提供服务的功能。


2、双机冷备有什么特点?

双机冷备不能像Oracle RAC那样同步工作,效率叠加。而是一台在工作,备用服务器在关机状态或空转状态。但是这并不代表双机冷备就没有优点。

首先,在很多情景下,不能使用Oracle RAC,比如异地的灾备机房,灾备机房在正常情况下是不提供服务的,存储设备通过光纤线缆与主机房进行同步,所以存储是同步的,而数据库服务本身需要在主机房和灾备机房都搭建一套环境。一台物理主机可以给多个业务数据库作为备用服务器,实际开销也并不很大。当主机房的服务器被摧毁之后,异地机房挂载上同步后的存储马上又可以继续提供服务。

第二,Oracle RAC并不适合所有的业务类型,有些业务并不需要太强悍的性能和超高的可用性,可以容忍服务中断三十分钟到一小时左右,使得运维人员有充足的时间进行手动、人工的切换服务。比如一些办公系统,管理系统等等。而冷备这种基于单机的运维模式操作简单,对运维人员的要求也较低。只要mount上存储,然后startup就可以了,管理起来非常方便。而Oracle Rac经常会因为网络问题导致服务器自身重启,而且往往一重启就两台一起重启,除了要排查网络故障外,还需要排查RS232串行口,光纤等故障,往往把运维人员搞得焦头烂额。所以对于这些情况来说,双机冷备的方式反而更易于维护,宕机切换速度更快。


3、双机冷备有什么要件?

第一,要有两台配置相似,最好完全一样的服务器硬件,这个在虚拟化平台上非常容易实现。在物理服务器中,成本也不会特别高,因为可以好多服务的数据库共用一台备机。

第二,要有可共享的存储介质。在普通的虚拟机和PC机上,要为数据库文件和备份文件单独一块硬盘,这样在一台服务器宕机之后,可以拔下这块硬盘,插到另一台服务器上,然后启动数据库继续运行。如果是两台使用SAN存储的服务器,那么就需要通过对光纤交换机的ZONE的划分,让两台服务器都可以发现并挂载同一块存储。如果是使用基于TCP/IP的iSCSI设备,同SAN一样,要让两个服务器可以挂载同一个存储服务器上的块设备。如果是异地灾备机房,可以通过对存储网关的特殊设置,让本地机房的存储和异地的存储实时同步。从应用层面上来看,SAN这种方式挂载的速度要比硬盘来回拔插速度快多了。

第三,一个可转移的IP,可以理解成LVS集群中那样的虚拟IP,客户端通过虚拟IP连接数据库,而使用这个虚拟IP的数据库即为激活的数据库,另一台就stand by。


4、如何让多台服务器都能挂载同一VG?

在SAN和iSCSI这种网络存储方案中,只要让主备服务器都可以通过fdisk发现到共享的存储设备,一般就问题不大了。而能否发现取决于你的存储链路的规划,和光纤交换机有关。

当一个块设备在多台服务器都能发现的情况下,你使用其中一台创建PV,VG,LV在其他机器上都可以通过pvscan,vgscan,lvscan等发现。并且都可以mount。但是如果使用ext2,3,4这种非集群文件格式进行格式化,那么一方的修改其他人是看不见的,反而还会产生冲突。所以同一时间我们要人工的控制只有一台服务器mount这个块设备。

在主服务器上划分了VG和LV之后,可以在当前服务器上自由的mount,但是其他服务器需要先激活此VG,然后再mount相应的LV。未激活由其他主机建立VG里的LV之前,使用lvscan命令得到结果就是相关lv是inactive状态,如下

[root@localhost ~]# lvscan  
  inactive          '/dev/rhel/swap' [16.00 GiB] inherit  
  inactive          '/dev/rhel/tmp' [10.00 GiB] inherit  
  inactive          '/dev/rhel/home' [10.00 GiB] inherit  
  inactive          '/dev/rhel/root' [50.00 GiB] inherit  
  inactive          '/dev/rhel/rpms' [74.50 GiB] inherit  
  ACTIVE            '/dev/rootvg/LogVol01' [151.80 GiB] inherit  
  ACTIVE            '/dev/rootvg/LogVol00' [8.00 GiB] inherit  
[root@localhost ~]#  

使用

vgchange -ay lv路径的前半部分

再次查看,就会发现VG里面的lv都变成了ACTIVE状态,此时就可以挂载了,注意多台可以连接同一存储的主机可以都设置为ACTIVE状态,但是不要同时mount。

[root@localhost ~]# lvscan  
  ACTIVE            '/dev/rhel/swap' [16.00 GiB] inherit  
  ACTIVE            '/dev/rhel/tmp' [10.00 GiB] inherit  
  ACTIVE            '/dev/rhel/home' [10.00 GiB] inherit  
  ACTIVE            '/dev/rhel/root' [50.00 GiB] inherit  
  ACTIVE            '/dev/rhel/rpms' [74.50 GiB] inherit  
  ACTIVE            '/dev/rootvg/LogVol01' [151.80 GiB] inherit  
  ACTIVE            '/dev/rootvg/LogVol00' [8.00 GiB] inherit  
[root@localhost ~]#

注意,在inactive的时候,/dev/rhel/swap这个文件是不存在的,也不需要存在,使用vgchange的时候,只需要填前面部分也就是/dev/rhel/就可以激活了。


5, 哪些文件需要放到共享存储上

一般我们在安装Oracle 12c/11g的时候,都是先安装oracle软件,再部署oralce实例。在建立双机冷备也是,先在所有的机器上都安装oracle数据库,注意安装目录,参数等等都要一模一样,要安装到机器自己的硬盘上,这样才能起到备份的作用。然后只在主机上安装oralce实例,此时就要规定哪些文件要放到共享存储上。

理论上来说,在建立实例的时候,最好所有和实例有关的都放到共享存储上,总结一下,大约有一下几点

主要就是:系统表空间,用户自定义表空间,.ctl控制文件,快速恢复区

这些在安装的时候后都可以指定路径,默认为/home/数据库用户名,所以在安装的时候要仔细看好,不然安装到了/home下就不方便迁移了。主要有一下几幅图

下面是数据库文件的位置,非常重要,不要使用默认。


下面是快速恢复区的位置,用于放置RMAN产生的数据库全备增备的目录。


下面是归档日志的位置


下面是系统表空间的位置,注意以后使用create tablespace命令创建用户表空间的时候也要注意放到共享存储上,不然就无法流畅的迁移了。



6,如何将主服务器建立好的实例同步到备用服务器上

我们在主服务器上建立了一个数据库实例,还需要到每个备用服务器上再建立一遍么?其实不需要,只需要将生成好的spfile放置到备用服务器指定的位置上,再改改监听器就可以了。

在建立好数据库实例后,oracle会生成一个spfile来记录这个数据库实例的相关配置参数,其中就包含上面我们数据库表空间,控制文件,快速恢复区位置的字段,这个spfile一般放在$ORACLE_HOME/dbs/下面,如下图,在建立好数据库实例后会告诉你


一般来说,我们把dbs目录下面所有的文件(除了init.ora)全部拷贝到备用服务器相同的目录下就可以了。

然后我们还需要在备用服务器上设置Sid的环境变量,编辑~/.bashprofile,设置

export ORACLE_SID=xxxx

具体的值和主服务器上一样就可以。

然后就可以使用 sqlplus / as sysdba一样连接备份服务器上的数据库了。

假设我们此时把存储挂载到备份服务器上,执行startup,发现还是启动不了,报错

[oracle@newoadb2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Apr 13 16:41:31 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925

是因为除了表空间,控制文件,快速恢复区需要共享之外,还有一个数据库审计日志需要相应的路径,但是数据库审计并不需要各个服务器都同步,用的人也不多,所以可以直接建立在各个服务器自身的存储上。

在建立实例的时候,虽然没有地方设置,但是还是会贴出相关审计日志的存储路径,我们只需要保证每台数据库服务器上都有这个目录即可,里面文件不需要同步就可以让数据库正常运行。


所以,我们只需要保证{ORACLE_BASE}/admin/{数据库名}/adump这个目录存在即可


7,如何让备用服务器的监听器连接上备用服务器上的数据库实例

建立相关目录之后,我们发现数据库可以正常启动了,但是在使用JAVA客户端连接的时候还是会报错,连接主服务器就没事,是因为在备用服务器上我们没有配置监听器的原因,而主服务器在建立实例的时候已经帮你设置了监听器,所以主服务器没事



报错如下:

An error occurred while establishing the connection:

Long Message:
Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

Details:
   Type: java.sql.SQLRecoverableException
   Error Code: 12514
   SQL State: 08006

需要在监听器上添加这个SID的监听项,方法是修改$ORACLE_HOME/network/admin/listener.ora这个文件

修改成


# listener.ora Network Configuration File: /u01/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = 数据库SID)
      (ORACLE_HOME = /u01/oracle)
      (GLOBAL_DBNAME = 数据库名称)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

然后使用lsnrctl restart重启监听器,就可以使用客户端正常连接数据库了。


查看评论

Oracle数据库双机冷备部署方式

Oracle数据库如果做集群的话一般只能使用Oracle自带的RAC方式,但是如果由于各种原因不能部署RAC的话,可以采用双机冷备,一台开机的方式,下面使用VMWare虚拟化平台为例介绍一下双机冷备的...
  • lvshaorong
  • lvshaorong
  • 2017-12-25 09:56:47
  • 448

什么是冷备,热备,双机热备,异地容灾备份,云备份,NAS,负载均衡?

假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友 好,又不是恋人。你随时可以甩了现任男友,另外一位马上就能补上。这是冷备份。 假设你是一位女性,同时和两位男性在交往,两位都...
  • maoji
  • maoji
  • 2016-12-06 16:42:45
  • 2201

Oracle数据库冷备恢复二例

例一:oracle数据库冷备迁移的步骤 冷备是一种常用的数据库备份方式,它是在数据库关闭的情况下利用操作系统的拷贝命令备份完整的数据库文件集。 冷备能保证在备份的时间点上数据库的完整性和一致性。...
  • haiross
  • haiross
  • 2014-01-20 11:49:24
  • 3748

windows环境下oracle数据库冷备份脚本

  • 2012年02月24日 10:41
  • 802B
  • 下载

Oracle数据库的冷备恢复到另一台机器上.

1.cmd命令sqlplus 用户名:system 密码:oracle sql>shutdown immediate 停止监听和oracle服务. 把D:\app\Administrator\orad...
  • black_bad1993
  • black_bad1993
  • 2016-12-23 22:54:20
  • 1400

双机热备、双机互备和双机双工,这三者之间的区别

双机热备=主机+备机简单理解:主要应用运行于主机,备机即备用机器双机互备=主机(备机)+备机(主机)简单理解:部分应用运行于主机,部分应用运行于备机双机双工=主机+主机简单理解:两台机器同时运行应用 ...
  • herry2008
  • herry2008
  • 2007-12-04 15:27:00
  • 18568

oracle数据库冷备迁移的步骤

oracle数据库冷备迁移的步骤  冷备是一种常用的数据库备份方式,它是在数据库关闭的情况下利用操作系统的拷贝命令备份完整的数据库文件集。 冷备能保证在备份的时间点上数据库的完整性和一致性。假如开...
  • liugw_768
  • liugw_768
  • 2017-04-14 10:54:10
  • 1546

oracle windows冷备恢复

安装新系统,安装相同版本oracle 将之前拷贝的admin,oradata文件放到原位置 将pifle文件,密码文件考到ORACLEHOME\database下,如果丢失可以通过admin中...
  • jgd1212
  • jgd1212
  • 2014-03-04 09:55:59
  • 605

oracle 双机热备,oracle dataguard 和oracle rac的区别和联系

Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目...
  • Dream19881003
  • Dream19881003
  • 2011-08-03 09:09:00
  • 16474

oracle11G 冷备异机还原数据库

1. 把冷备份的数据文件,日志文件和控制文件拷贝到目标文件夹 2、启动数据库 [root@ogg-node2 ~]# mkdir  /u02/app/oracle/oradata/gdb1/ -p [...
  • xiegh2014
  • xiegh2014
  • 2016-08-19 21:46:14
  • 919
    个人资料
    持之以恒
    等级:
    访问量: 64万+
    积分: 6558
    排名: 4570
    文章分类
    最新评论