分享

oracle RAC测试--failover and balance

 wghbeyond 2011-08-22

今天重新测试RAC的failover和balance,以前由于知识的匮乏,一直没有实现,今天测试一下。测试思路,分别使用真实IP和VIP来进行测试。结果发现两个IP都可以实现这两种特性。


RAC相关信息:
RAC1:10.10.10.1(vip:10.10.10.11) devdb1
RAC2:10.10.10.2(vip:10.10.10.12) devdb2
racdb:devdb
创建的有CRM服务

1、在OCI客户端tnsname中配置如下,首先用vip进行测试。

RACDB2=
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.12)(PORT = 1521))
  (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = racdb)
   (INSTANCE_NAME = racdb2)
  )
 )
RACDB1 =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
  (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = devdb1)
   (INSTANCE_NAME = devdb1)
  )
 )
LISTENERS_RACDB =
 (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.12)(PORT = 1521))
 )
RACDB =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.12)(PORT = 1521))
  (LOAD_BALANCE = yes)
  (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = devdb)
   (FAILOVER_MODE =
    (TYPE = SELECT)
    (METHOD = BASIC)
    (RETRIES = 180)
    (DELAY = 5)
   )
  )
 )
 
2、配置完成,在OCI客户端做以下测试:
C:\Documents and Settings\Administrator>tnsping racdb1

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 15-3月 -
2009 13:02:11

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:
e:\oracle\product\11.1.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10
.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = devdb1)
(INSTANCE_NAME = devdb1)))
OK (10 毫秒)

C:\Documents and Settings\Administrator>tnsping racdb2

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 15-3月 -
2009 13:02:12

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:
e:\oracle\product\11.1.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10
.12)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = racdb) (
INSTANCE_NAME = racdb2)))
OK (0 毫秒)

C:\Documents and Settings\Administrator>

可以看出,都是通的。

3.使用SQLPLUS连接:
C:\Documents and Settings\Administrator>sqlplusnam/nam@racdb

SQL*Plus: Release 11.1.0.6.0 - Production on 星期日 3月 15 13:04:11 2009

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


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
devdb2

SQL>

目前我连接的是devdb2,现在我们验证failover:

登陆到rac2上,shutdown devdb2:

Last login: Fri Feb 27 21:28:08 2009 from 10.10.10.5
rac2-> sqlplus "/ as sysdba" 

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Mar 15 13:07:09 2009

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

再回到OCI客户端的SQLPLUS中,测试:

INSTANCE_NAME
--------------------------------
devdb2

SQL>select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
devdb1

SQL>

实现了无缝FAILOVER。

4、以下测试balance:

分别在rac1和rac2上配置一下参数,以避免ora-12545的错误:
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.11)(PORT=1521))' SID='devdb1';

System altered.

SQL>

SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.12)(PORT=1521))' SID='devdb2';

System altered.

SQL>

在OCI客户端编写BAT脚本,脚本内容如下:
for /L %%G in (1,1,10) do start /b sqlplusnam/nam@racdb
目的,创造10个连接。

验证两台机器目前的连接数:

SQL> select count(*),machine from v$session group by machine;

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
        30 rac1
       

SQL> select count(*),machine from v$session group by machine;

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
        29 rac2

运行程序后再次验证:

SQL> select count(*),machine from v$session group by machine;

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
        30 rac1
         5 WORKGROUP\WWW-CD2CAF03643

SQL>

SQL> /

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
         5 WORKGROUP\WWW-CD2CAF03643
        29 rac2

SQL>

10个连接每台机器5个,实现了balance的目的。


5、再次测试,使用实际IP地址测试,将OCI客户端的TNSNAME里VIP全部改为实际IP,并修改RAC1和RAC2的local_listener地址

SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.1)(PORT=1521))' SID='devdb1';

System altered.

SQL>

SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.2)(PORT=1521))' SID='devdb2';

System altered.

SQL>

6、使用tnsping测试连通性:
C:\Documents and Settings\Administrator>tnsping racdb

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 15-3月 -
2009 14:44:02

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:
e:\oracle\product\11.1.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =10.10.10
.1
)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST =10.10.10.2)(PORT = 1521)) (
LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = devdb)
(FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5))))

OK (5330 毫秒)

C:\Documents and Settings\Administrator>tnsping racdb1

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 15-3月 -
2009 14:44:10

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:
e:\oracle\product\11.1.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10
.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = devdb1) (
INSTANCE_NAME = devdb1)))
OK (0 毫秒)

C:\Documents and Settings\Administrator>tnsping racdb2

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 15-3月 -
2009 14:44:11

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:
e:\oracle\product\11.1.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10
.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = racdb) (I
NSTANCE_NAME = racdb2)))
OK (0 毫秒)

C:\Documents and Settings\Administrator>

7、测试failover:

C:\Documents and Settings\Administrator>sqlplusnam/nam@racdb

SQL*Plus: Release 11.1.0.6.0 - Production on 星期日 3月 15 14:45:09 2009

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


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
devdb2

SQL>

登陆RAC2,shutdown abort:

......

SQLPLUS测试:

devdb2

SQL> /

INSTANCE_NAME
--------------------------------
devdb1

SQL>

实现无缝切换。

8、测试实际地址的balance,方法同上:

SQL> select count(*),machine from v$session group by machine;

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
        32 rac1
         5 WORKGROUP\WWW-CD2CAF03643

SQL>

SQL> select count(*),machine from v$session group by machine;

  COUNT(*) MACHINE
---------- ----------------------------------------------------------------
         5 WORKGROUP\WWW-CD2CAF03643
        31 rac2

SQL>

实现balance。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多