当前位置: 代码迷 >> 综合 >> 10g r2 rac for Aix5.3常见安装升级问题解决方法
  详细解决方案

10g r2 rac for Aix5.3常见安装升级问题解决方法

热度:84   发布时间:2023-12-20 09:38:19.0
10g r2 rac for Aix5.3常见安装升级问题解决方法
 
 
 

                                                                           

1                   裸设备问题

   当我们把数据库升级到10.2.0.3后,再使用DBCA创建数据库时,如果spfile使用裸设备,则SPFILE认不到裸设备,这个是ORACLE10.2.0.3的Bug,我们只要替换一个文件即可,这个文件为rawutl,位置在$ORACLE_BASE/product/10.2.0/db_1/bin/rawutl,使用10.2.0.1的这个文件替换即可。由于已经升级了,这个文件可以在$ORA_CRS_HOME/install/prepatch10203/crs/bin找到,只要把这个文件拷贝到$ORACLE_HOME/bin/,覆盖10.2.0.3产生的这个rawutl文件,重新运行dbca即可。

  

2                   Vip应用启动问题

   当CRS升级到10.2.0.3后,有时VIP无法启动,见下图,这是10.2.0.3下的一个bug

   $ crs_stat -t

Name           Type           Target    State     Host       

------------------------------------------------------------

ora.zzzx1.gsd  application    ONLINE    ONLINE    zzzx1      

ora.zzzx1.ons  application    ONLINE    ONLINE    zzzx1      

ora.zzzx1.vip  application    ONLINE    OFFLINE

ora.zzzx2.gsd  application    ONLINE    ONLINE    zzzx2      

ora.zzzx2.ons  application    ONLINE    ONLINE    zzzx2      

ora.zzzx2.vip  application    ONLINE    OFFLINE

   这时,我们需要手工修改racgvip文件,该文件在/oracle/app/oracle/product/10.2.0/crs/bin位置。把racgvip文件中的FAIL_WHEN_DEFAULTGW_NO_FOUND=1改为:FAIL_WHEN_DEFAULTGW_NO_FOUND=0,并重新启动vip即可。

 

3                   客户端连接时通时断问题

   当客户端连接到RAC时,有时能连通,有时断开,并提示错误:ORA-12545:因目标主机或对象不存在,连接失败,如下面:

   SQL> conn system/oracle@ynsrk

   已连接。

   SQL> conn system/oracle@ynsrk

   已连接。

   SQL> conn system/oracle@ynsrk

   ERROR:

   ORA-12545: 因目标主机或对象不存在,连接失败

   警告: 您不再连接到 ORACLE。

   SQL> conn system/oracle@ynsrk

   已连接。

   SQL> conn system/oracle@ynsrk

   SQL> conn system/oracle@ynsrk

   ERROR:

   ORA-12545: 因目标主机或对象不存在,连接失败

   警告: 您不再连接到 ORACLE。

   SQL> conn system/oracle@ynsrk

   ERROR:

   ORA-12545: 因目标主机或对象不存在,连接失败

   警告: 您不再连接到 ORACLE。

   对此,只需要把服务器上listener.ora和tnsnames.ora文件中的host修改为ip,并在每个节点的tnsnames.ora中增加对公网IP的监听,并修改初始参数:local_listener指向这个公网IP的监听:

比如RAC的/etc/hosts如下:

#public network

192.168.5.5     zzzx1

192.168.5.7     zzzx2

 

#virtual IP

192.168.5.6    vip1

192.168.5.8    vip2

 

#private IP

10.0.1.1       priv1

10.0.1.2       priv2

 

SQL> show parameter list
   NAME TYPE VALUE

------------------------------------ ----------- ------------------------------
   local_listener string
   remote_listener string LISTENERS_TEST

可以看到这两个参数,remote_listener为 LISTENERS_TEST

 

在zzzx1,zzzx2上分别编辑服务器端tnsname.ora (注意,是服务器端的)
将下面部分

LISTENERS_YNSRK =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))

)

改为:

LISTENERS_YNSRK =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.6)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.8)(PORT = 1521))

)

也就是将host主机名改为ip地址
在zzzx1上增加以下部分

LOCAL_YNSRK =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.5)(PORT = 1521))

)

在zzzx2上增加以下部分

LOCAL_YNSRK =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.7)(PORT = 1521))

)

保存退出

查看两个节点的 listener.ora文件,最好将里面的主机名都改为ip地址

用system用户登录

执行alter system set local_listener='LOCAL_YNSRK' scope=both;

 

   重启所有实例 所有监听.

   再从客户端连接,问题已经解决,不再出现连接错误,

      

4                   IOT/Abort trap(coredump)错误

   当在一个节点上执行crs_stat –t,报以下错误,另一个节点上执行正常:

 $ crs_stat -t

IOT/Abort trap(coredump)

 

通过查看CRS日志文件$ORA_CRS_HOME/log/zzzx1/crsd/crsd.log,发现是本地机器$ORA_CRS_HOME/crs/auth/目录不存在,而正常机器该目录存在,只需要增加在$ORA_CRS_HOME/crs/下创建auth目录即可。

5、启动CLUSTER服务错误

   有时在启动cluster服务过程中可能会报以下两个错误:

   PRKP-1001:Error starting instance ynsrk1 on node
   Zzzx1
   CRS-0184:Cannot communicate with the CRS
   Daemon.
   PRKP-1001: Error starting instance ynsrk2 on node
   Zzzx2
   CRS-0184:Cannot communicate with the CRS
  

   Failed to start services “[ynsrk]” of cluster database
   “ynsrk’,”PRKP-1056:Failed to get the status of the
   resource ora.ynsrk.ynsrk.cs.

   “.
   SRVCTL fails to startup instance, due to connection to racgimon killed by NS after 10s

   具体可查看metalink Note:402437.1

   我们需要做的是在sqlnet.ora中加入如下参数

   sqlnet.inbound_connect_timeout = 600

  相关解决方案