`

使用VCS配置Oracle双机

阅读更多

  将Oracle的双机放在DB2双机后面讲有两个原因:一是DB2的配置相对于oracle的配置来说比较简单,数据库的模式也比较容易理解,而其中相似的地方可以参照DB2的配置;二是DB2双机的配置,也只能说是oracle双机配置的子集,在了解DB2的双机配置之后,oracle双机配置的很多相似的地方简单说明一下即可。此外,读者可以比较一下这两种模式的异同,有利于读者选择更合适自己的双机配置模式。

    我们随后还将介绍Sybase双机的配置,将Sybase放在最后并不是因为它更复杂,而是因为在这三种数据库之中,Sybase的用户群相对比较少,需要的人不多。

比较DB2与Oracle数据库
    DB2和Oracle有很多的不同,要想了解清楚,那个不是一朝一夕的功夫了。幸运的是,因为我们现在只是需要做双机配置,所以我们只是在可能会影响配置的概念上,做一个简单的比较。

    1. 配置结构的不同:
    DB2数据库的双机热备只支持一种模式,就是DB2的程序在两台机器上各有一份,只有数据文件存放在共享存储中,如下图所示:

 
 
图1,DB2双机配置结构图

    这种配置模式的优点是有利于数据库的升级,当其中systemA需要升级的时候,就把服务切换到systemB上运行,升级A的DB2程序,之后还可以把服务切换回到A来,然后升级B的DB2程序。这个升级过程不会影响用户的DB2使用,因为总有一台机器可以使用DB2程序来响应用户的服务请求。

    对于oracle来说不但可以支持这种程序存放在不同机器上的做法,而且支持把oracle的程序文件也同时放在共享盘上,其结构图如下所示:

 

图2,oracle双机结构图-程序在各个服务器上

 
 
图3,oracle双机结构图-程序和数据都在共享盘上

    将数据与程序同时放在共享盘上的优点有两个:一是节省磁盘空间,用户只需要保留一份数据库备份;二是有利于程序的一致性,不会因为数据库版本的不同,产生差异,可以避免产生一些莫名的问题。

    2. 数据库的工作模式不同
    DB2数据库是以实例为基础的:多个硬盘或者服务器组成一个实例,一个实例下面可以划分多个数据库,一个数据库只能属于一个实例。Oracle可以理解为以用户为基础的数据库,不同的用户访问不同的实例,不同的实例其实就是不同的数据库。

配置Oracle双机系统

    闲话少说,现在开始介绍一下利用VCS来配置oracle双机的过程:
 
    a) 创建数据文件使用的共享存储(在system1上面执行下列5个命令):
    i. # vxdg init oracleDG c0t0d0; 创建磁盘组oracleDG,使用c0t0d0这个硬盘;
    ii. # vxassist -g oracleDG make oracleVol 5g; 在磁盘组上创建5G大小的卷oracleVol;
    iii. # mkfs -F vxfs -o largefiles /dev/vx/rdsk/oracleDG/oracleVol; 创建文件系统;
    iv. # mkdir /oracle ; 创建mount点,共享磁盘将mount到这里;
    v. # mount -F vxfs /dev/vx/dsk/oracleDG/oracleVol /oracle; 将共享盘mount到本机;

    b) 在两台机器上面分别执行下列命令,创建相同的用户组和用户:
    vi. # groupadd -g 500 dba; 创建oracle管理组;
    vii. # useradd -g dba -u 500 -d /home/oracle -m oracle; 创建oracle管理用户;
    注意: 组ID或者用户ID可以是任意尚未被使用的数值,但是一定要保证多台机器必须一致。

    c) 安装oracle程序
    到oracle安装文件的目录下,运行下列命令安装oracle程序
    #.  /runInstaller
    在安装过程中,指定oracle用户为“oracle”。
    注意: 如果需要在多台机器安装oracle,则需要在多台机器运行该程序;如果仅仅想把程序安装在共享盘上面,则仅仅需要在一台机器安装。
    注意: 安装过程中有一步会问用户是否需要配置数据库,我们选择“仅仅安装软件”,我们会在稍后配置数据库文件到共享磁盘。

    d) 配置数据库:
    oracle程序安装完毕后,我们需要配置数据库到共享磁盘上,这样多台机器才能够共享其数据资源;
    # dbca
    运行数据库配置助手来帮助用户安装数据库,注意需要将路径指明到共享磁盘中。

    e) 设置环境变量
    在各个机器的/home/oracle/.profile文件中,设置两个全局变量:
    $ORACLE_HOME=/oracle   该变量指明数据库的安装位置;
    $ORACLE_SID=oracle    该变量指明访问哪个数据库实例;

    f) 安装VCS的oracle代理软件:(以redhat为例)
    # rpm -ivh VRTSvcsor
    # rpm -ivh VRTScsocw

    这样,oracle的安装就完成了。

1
测试Oracle双机配置

    在安装结束之后,我们需要测试一下oracle能否在多台机器上正常工作。

    a) 将共享盘mount到第一台机器(步骤可以参考DB2双机配置)

    b) 从这台机器登陆数据库并创建一个表
    i. su – oracle 将系统用户切换到oracle用户;
    ii. export $ORACLE_HOME=/oracle; 导出全局变量;
    export $ORACLE_SID=oracle;
    iii. $ORACLE_HOME/bin/sqlplus /nolog 进入数据库模式;
    iv. connect / as sysdba     以系统管理员身份登陆数据库;
    v. create user tester identified by '123456' default tablespace USERS temporary tablespace TEMP quota 100K on    UERS; 创建一个新用户tester;
    vi. grant create session to tester;    赋予新用户tester创建表的权限;
    vii. create table tester.mytime ( tstamp date ); 在tester用户空间下创建一个新表;
    viii. insert into tester.mytime (tstamp) values (SYSDATE); 在新表中插入数据;
    ix. disconnect;       断开连接;

    c) 测试其他集群节点可以工作:
    i. connect tester/123456     以新用户身份登陆数据库;
    ii. update tester.mytime set ( tstamp ) = SYSDATE; 更新表的内容;
    iii. select TO_CHAR(tstamp, ’MON DD, YYYY HH:MI:SS AM’) from tester.mytime; 确认表的内容已经被更新;
    iv. exit 推出。

    在经过这个检查之后,就说明数据库已经正确安装并可以被每个节点正常的访问,测试成功。

1
配置VCS的oracle代理

    这个过程与DB2的非常相似,唯一的不同在于DB2只有一个主进程工作,监控DB2是否正常工作只需监控这个进程即可。在oracle中有两个进程,一个是数据库运行的主进程,另一个是监控用户请求的进程,两个进程同时工作才能确保oracle的正常运行。所以在oracle代理的配置过程中,需要多添加一个lsnr的资源,用来保证oracle监控进程的正常工作。

    配置好的oracle代理结构如图所示:

 

图4,oracle代理的配置结构

    按照该图所示,配置oracle代理需要下列资源:
    NIC:提供oracle相应的网卡;
    IP:提供oracle服务的IP地址;
    DiskGroup:共享磁盘组;
    Volume_data:存放oracle共享数据的卷;
    Volume_binary:存放oracle程序的卷(如果程序不是放在共享磁盘,该资源可以忽略);
    Mount_data:数据库共享数据的访问路径;
    Mount_binary:数据库程序的访问路径(如果程序不是放在共享磁盘,该资源可以忽略);
    Oracle:监控oracle进程是否正常工作;
    Netlnsr:监控oracle监听进程是否工作。

    在这些资源都配置好之后,打开VCS的图形界面,可以让该服务组执行上线、下线或者切换,这样,VCS就会自动监控oracle的工作情况,并在某台机器发生故障的时候,自动切换到其他节点继续提供服务。这样,oracle的双机配置就完成了。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilovemilk/archive/2009/10/27/4735619.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics