ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RAC手工划分service后,DBLink报ora-24792错误

RAC手工划分service后,DBLink报ora-24792错误

原创 Linux操作系统 作者:denglt 时间:2011-01-19 11:01:22 0 删除 编辑
早上上班,维护人员报告应用发生如下错误
ORA-24792: cannot mix services in a single global transaction
ORA-02063: preceding line from RC
 
RC为数据库中的一个dblink,是由A用户连接B用户的,AB用户都在同一个数据库中。
 
为了应用用户可以单独连接各自独立的instance,避免数据库两个节点之间的数据交换,提高数据库性能,昨天晚上由Oracle的工程师进行了service的划分,并对应用连接的service_name进行了修改。

由于当时我不在现场,Oracle工程师对service配置我并不清楚。查询v$services视图

SQL> select * from v$services where name like '%gxdb%';
 
SERVICE_ID NAME     NAME_HASH NETWORK_NAME CREATION_DATE CREATION_DATE_HASH GOAL         DTP AQ_HA_NOTIFICATION CLB_GOAL
---------- ------------------ -------------------------- ------------------ ------------ --- ------------------ --------
         5 gxdb1   1426779647 gxdb1        2011/1/13 18:         1583095287 NONE         Y   NO                 LONG
         7 gxdb2    112875848 gxdb2        2011/1/13 18:         1291542420 NONE         Y   NO                 LONG
         3 gxdbXDB 2224759585 gxdbXDB      2010/2/2 11:3          526425370 NONE         N   NO                 LONG
         4 gxdb    1256654134 gxdb         2010/2/2 11:3          526425370 NONE         N   NO                 LONG
 
发现新划分的service(gxdb1,gxdb2)的DTP的数值为Y,与gxdb的不一样。
初步确定应该是service的参数问题。
查询Oracle文档dtp:
 Declares the service to be for DTP or distributed transactions including XA transactions
 
对gxdb1,gxdb2参数进行修改:
SQL> begin
  2   dbms_service.modify_service(service_name => 'gxdb1',dtp => false);
  3   dbms_service.modify_service(service_name => 'gxdb2',dtp => false);
  4  end;
  5  /
 
PL/SQL procedure successfully completed
 
应用恢复正常。
 
后找Oracle工程师要来操作记录文档,里面果真有

EXECUTE DBMS_SERVICE.MODIFY_SERVICE(service_name =>'GXDB1',DTP => true);


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

上一篇: Table Monitor
请登录后发表评论 登录
全部评论

注册时间:2010-11-04

  • 博文量
    118
  • 访问量
    710172