ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 安装完RAC以后dba需要2点手工操作

安装完RAC以后dba需要2点手工操作

原创 Linux操作系统 作者:zhanglei_itput 时间:2009-03-19 16:24:34 0 删除 编辑

    今天完成了第三次在vm上安装RAC的测试环境搭建,这次除了一些硬件故障耽误一些时间以外,其他的工作都还算是蛮顺利的。但是在安装完RAC以后,有2个工作是需要dba在产品上线之前做好测试工作的:

    1.解决ORA-12545: 因目标主机或对象不存在问题
       这个问题是在修改数据库内部local_listener时,如果没有使用串,而是标识符导致的一个错误,属于oracle的一个bug。
有两个关于listener的参数:
SQL> conn sys/oracle@devdb as sysdba
已连接。   
 SQL> show parameter listener
             NAME                                     TYPE       VALUE
             ------------------------------------ ----------- ------------------------------
             local_listener                        string
             remote_listener                    string      LISTENERS_DEVDB
 此时需要分别修改两个instance的local_listener参数,修改为静态注册,即:SQL>  show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      devdb1
SQL> alter system set local_listener='LISTENERS_DEVDB1'scope=both sid='devdb1';
System altered.
SQL> show parameter listener
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
local_listener        string  LISTENERS_DEVDB1
remote_listener        string  LISTENERS_DEVDB
但是此时在连接时会出现下面的错误
SQL> conn
sys/oracle@devdb as sysdba
已连接。
SQL> conn
sys/oracle@devdb as sysdba
ERROR:
ORA-12545: 因目标主机或对象不存在, 连接失败
警告: 您不再连接到 ORACLE。
SQL> conn
sys/oracle@devdb as sysdba
ERROR:
ORA-12545: 因目标主机或对象不存在, 连接失败
这个问题是oracle的一个bug导致的
meitalink的相关id:364855.1
subject: RAC connection redirected to wrong host/ip ora-12545
解决方法:把参数修改成带vip地址的串(双节点)
SQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.68)(PORT = 1521))' scope=both sid='devdb1';
System altered.
SQL> show parameter listener
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
local_listener        string  (ADDRESS = (PROTOCOL = TCP)(HO
       ST = 192.168.230.68)(PORT = 15
       21))
remote_listener        string  LISTENERS_DEVDB
SQL> conn
sys/oracle@devdb as sysdba
已连接。
SQL> conn
sys/oracle@devdb as sysdba
已连接。
SQL> conn
sys/oracle@devdb as sysdba
已连接。
SQL> conn
sys/oracle@devdb as sysdba
已连接。

    2.(TAF)透明故障切换测试
      
  集群有一个十分强大的功能,就是可以实现实例间的透明故障切换,如果一个实例down掉的话,只要在客户端配置了TAF,那么客户不会发现连接中断,而是继续之前的操作,但是后台已经把实例切换到另外一个实例了。安装完集群,我们需要在客户端修改tnsnames.ora中的参数,从而实现TAF的目的。
DEVDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.68)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.69)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devdb)
    
  (FAILOVER_MODE = 
                      (TYPE = SELECT)
                      (METHOD = BASIC)     /*添加这3行表示配置TAF*/
      ) ) )
测试结果如下:
SQL> conn sys/oracle@devdb as sysdba
已连接。
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      devdb1
此时在另外一个窗口shutdown实例1
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      devdb2 /*此时连接没有中断,但是客户连接的实例自动切换到另外一个可用的实例了*/
注:此时想到一个问题,oracle寻找可用的实例是按照顺序查找么?这种查找方法是否类似于hp的serviceguard?当主节点切换到备用节点后,即使主节点好了,当备用节点失效的时候,hp的package是不会自动再切回来的,需要手工切换,那么oracle是否也是这样?当节点1失败,客户端连接会自动切换到节点2,那么当节点1好了,节点2down掉的话,客户端的连接是否会自动再切换回节点1?测试的结果是,oracle会自动再次切换回可用的实例。测试结果如下:(停掉节点2,启动节点1)
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      devdb2

SQL> conn sys/oracle@devdb1 as sysdba
Connected.
SQL> startup
ORACLE instance started.
Total System Global Area  230686720 bytes
Fixed Size      1266752 bytes
Variable Size    104860608 bytes
Database Buffers   121634816 bytes
Redo Buffers      2924544 bytes
Database mounted.
Database opened.
SQL> conn
sys/oracle@devdb2 as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      devdb1

备注:在TAF切换的时候,后台的alert日志会有一些有关cache fusion的复制信息,具体还要进一步在学习和研究:
Reconfiguration started (old inc 12, new inc 14)
List of nodes:
 0
 Global Resource Directory frozen
 * dead instance detected - domain 0 invalid = TRUE
 Communication channels reestablished
 Master broadcasted resource hash value bitmaps
 Non-local Process blocks cleaned out
Thu Mar 19 15:53:50 2009
 LMS 0: 0 GCS shadows cancelled, 0 closed
 Set master node info
 Submitted all remote-enqueue requests
 Dwn-cvts replayed, VALBLKs dubious
 All grantable enqueues granted
 Post SMON to start 1st pass IR
Thu Mar 19 15:53:50 2009
 LMS 0: 3035 GCS shadows traversed, 0 replayed
Thu Mar 19 15:53:50 2009
 Submitted all GCS remote-cache requests
 Fix write in gcs resources
Reconfiguration complete
Thu Mar 19 15:53:50 2009
Instance recovery: looking for dead threads
Instance recovery: lock domain invalid but no dead threads
参考文献:

Article-ID: Note 453293.1
Title: 10g & 11g :Configuration of TAF(Transparent Application Failover) an
d Load Balancing
Article-ID: Note 226880.1
Title: Configuration of Load Balancing and Transparent Application Failover

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9252210/viewspace-573149/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-10

  • 博文量
    400
  • 访问量
    1114732