在许多应用开发场景中,高可用性是一个非常重要的需求。为了实现这一点,一种被广泛采用的解决方案是使用双服务器系统。这种设计模式可以使系统在一个服务器故障的情况下继续工作,并且在修复了故障后,系统可以很容易地切换回正常的运行状态。
而对于使用Oracle数据库的应用程序来说,实现高可用性的方法是使用Oracle双服务器系统。在这种方案中,Oracle数据库的每个实例都运行在两个不同的服务器上,并通过Oracle Grid Infrastructure进行管理。当一台服务器失败时,另一台服务器将立即接管数据库实例的运行,确保系统始终可以持续运行。
下面,我们即将介绍如何使用Oracle双服务器系统实现高可用性,并提供示例代码帮助读者深入了解该方案。
1. 安装Oracle Grid Infrastructure
Oracle Grid Infrastructure是一项非常重要的基础设施,它负责管理双服务器系统中的Oracle实例,并确保它们始终处于可用状态。因此,安装Oracle Grid Infrastructure是实现高可用性的第一步。
使用以下命令安装Oracle Grid Infrastructure:
./runInstaller -silent ORACLE_HOME=/u01/app/12.1.0/grid INVENTORY_LOCATION=/u01/app/oraInventory oracle.install.option=CRS_CONFIG \\
ORACLE_BASE=/u01/app oracle.install.asm.OSDBA=dba oracle.install.asm.OSASM=dba oracle.install.crs.config.gpnp.scanName=rac-scan.localdomn \\
oracle.install.crs.config.gpnp.scanPort=1521 oracle.install.crs.config.clusterName=rac-cluster localNode=rac1 \\
oracle.install.crs.config.networkInterfaceList=eth0:192.168.1.0 eth1:192.168.2.0 oracle.install.asm.diskGroup.name=rac \\
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/sd*
在这里,我们使用了静默模式安装,但读者也可以通过使用UI模式安装程序来完成此任务。
2. 安装Oracle数据库
完成Oracle Grid Infrastructure的安装后,我们要在两台服务器上分别安装Oracle数据库。确保在安装期间选择“添加到现有的Oracle Grid Infrastructure”选项,以确保数据库实例可以与Grid Infrastructure管理器一起工作。
在这里,我们以安装单实例Oracle数据库为例:
./runInstaller -silent ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 INVENTORY_LOCATION=/u01/app/oraInventory oracle.install.option=INSTALL_DB_SWONLY \\
ORACLE_BASE=/u01/app oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oper \\
oracle.install.db.BACKUPDBA_GROUP=backupdba oracle.install.db.DGDBA_GROUP=dgdba oracle.install.db.KMDBA_GROUP=kmdba \\
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName=ractest.oracle.local \\
oracle.install.db.config.starterdb.SID=ractest oracle.install.db.config.starterdb.characterSet=AL32UTF8 \\
oracle.install.db.config.starterdb.memoryMgmtType=AUTO_SGA oracle.install.db.config.starterdb.memoryPercent=20 \\
oracle.install.db.config.starterdb.password.ALL=oracle_4U oracle.install.db.config.starterdb.password.SYS=oracle_4U \\
oracle.install.db.config.starterdb.password.SYSTEM=oracle_4U oracle.install.db.config.starterdb.password.SYSMAN=oracle_4U \\
oracle.install.db.config.starterdb.password.DBSNMP=oracle_4U oracle.install.db.config.starterdb.password.DBSNMP_CHANGE_ON_INSTALL=false
同样,读者也可以选择GUI模式来完成Oracle数据库的安装。
3. 创建Oracle实例
完成Oracle数据库的安装后,接下来我们需要创建Oracle实例。我们可以使用Oracle Database Configuration Assistant(DBCA)来完成此任务。为了创建Oracle实例,我们需要指定以下信息:
– ORACLE_HOME:Oracle数据库实例的安装位置。
– SID:一个唯一的名称用于标识Oracle实例。
– 实例名:另一个唯一的名称,用于标识Oracle实例。实例名必须与SID不同。
– 数据库类型:指定Oracle实例类型(如 OLTP、DW等)。
使用以下命令创建Oracle实例:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName ractest.oracle.local -sid ractest -datafileDestination /u01/app/oracle/oradata -characterSet AL32UTF8
4. 配置Oracle双服务器
现在,我们已经成功创建了Oracle双服务器系统,在两个服务器上都安装了Oracle Grid Infrastructure和Oracle数据库,并且已创建了Oracle实例。下一步是配置Oracle双服务器系统。
要配置具有高可用性的Oracle双服务器系统,我们需要完成以下操作:
– 在两个服务器之间配置共享存储。
– 创建ASM磁盘组,使其在两个服务器之间进行共享。
– 在两个服务器之间配置虚拟IP地址。
– 为每个实例指定Server Pool(这将确定Oracle在哪个服务器上运行)。
使用以下命令创建ASM磁盘组:
sqlplus / as sysasm
create diskgroup rac normal redundancy
flgroup controller1 disks=\'/dev/sdb\',\'/dev/sdc\' flgroup controller2 disks=\'/dev/sdd\'
使用以下命令创建合适的Server Pool:
srvctl add serverpool -serverpool sp1 -policy MANUAL
srvctl add serverpool -serverpool sp2 -policy MANUAL
srvctl add database -db ractest -oraclehome /u01/app/oracle/product/11.2.0/dbhome_1 -dbtype RAC -node rac1,rac2 -spfile +DATA/ractest/spfileRACtest.ora -diskgroup DATA
5. 测试Oracle双服务器系统
现在已经完成了Oracle双服务器系统的配置,可以进行测试以确保高可用性生效。在此过程中,我们将模拟一台服务器的故障,并检查系统是否成功地切换到另一台服务器。
通过以下命令关闭一台服务器的Oracle实例:
srvctl stop instance -d ractest -i ractest1 -f -v
此命令将停止ractest1实例。我们可以检查Oracle Grid Infrastructure日志以确保系统中的实例都运行良好。
如果一切正常,我们就可以重新启动ractest1实例,并继续使用系统,而且这一切都是在双服务器系统下完成的。
总结:
Oracle双服务器系统提供了一种实现高可用性的非常可行的解决方案。通过在两个服务器之间共享Oracle实例和数据存储,可以确保即使一个服务器发生故障,系统仍然可以持续运行。随着企业对高可用性的需求越来越高,Oracle双服务器系统将越来越得到广泛的应用。