一个新安装的Oracle 10.2.0.4的RAC发现无法查询gv$session等视图,出现了ora-00600 [15735]错误

SQL> connect zlhis/hishis@dyyy;
已连接。

SQL> select inst_id,count(*) from gv$session group by inst_id;
select inst_id,count(*) from gv$session group by inst_id
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [15735], [2200], [2152], [], [], [], [], []

查了metalink,发现是Oracle的一个bug,但只在10.2.0.1到10.2.0.3上面,我这里已经是10.2.0.4了,同样有这种bug,真郁闷。mealink的内容:

Applies to:
Oracle Server - Enterprise Edition - Version: 10.2.0.3
This problem can occur on any platform.

Symptoms
When running A SELECT AT THE VG$ getting ora-600 and the problem can be reproduced from sqlplus and the application.

ORA-600: internal error code, arguments: [15735], [2176]

 

Cause
The cause of this problem is due to bug that was open with the development team
PARALLEL_EXECUTION_MESSAGE_SIZE specifies the size of messages for parallel execution (formerly
referred to as parallel query, PDML, Parallel Recovery, replication).

On most platforms, the default value is 2048bytes if PARALLEL_AUTOMATIC_TUNING is set to false,
and 4096 bytes if PARALLEL_AUTOMATIC_TUNING is set to true. The default value is adequate for most
applications. Larger values require a larger shared pool. Larger values result in better
performance at the cost of higher memory use. For this reason, replication gets no benefit from
increasing the size.
Solution
To implement the solution, please execute the following steps:

Set parallel_execution_message_size to 4k and try the query again


下面是解决过程:

SQL> connect sys/zlsoft@dyyy as sysdba;
已连接。
SQL> show parameter para;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback string LOW
parallel_adaptive_multi_user boolean TRUE
parallel_automatic_tuning boolean FALSE
parallel_execution_message_size integer 2152
parallel_instance_group string
parallel_max_servers integer 160
parallel_min_percent integer 0
parallel_min_servers integer 0
parallel_server boolean TRUE
parallel_server_instances integer 2
parallel_threads_per_cpu integer 2

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recovery_parallelism integer 0
SQL> alter system set parallel_execution_message_size=4096 scope=spfile sid='*';

系统已更改。

SQL>

[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ srvctl stop database -d orcl
[oracle@rac1 ~]$ srvctl start database -d orcl
[oracle@rac1 ~]$ su - oracle
Password:
[oracle@rac1 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 16 20:18:14 2008

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> connect / as sysdba;
Connected.
SQL> select count(*) from gv$session;

COUNT(*)
----------
58