2012年6月7日 星期四

Tips for using the Oracle COMPATIBLE parameter for

The number of digits is meaningful, and many shops use less digits to make distributed communications easy between instances on different sub releases using compatible=10.2.

Failure to standardize the compatible parameter can precipitate the following error:
ORA-23375: feature is incompatible with database version

You should set the compatible parameter to the version of Oracle that you are using in order to use all replication features of that version of the database.


Here is the mapping for the compatible parameter digits:


Oracle Database Release             Default Value       Minimum Value   Maximum Value
Oracle8i release 8.1.7                        8.0.0                    8.0.0.0.0           8.1.7.x.x
Oracle9i release 9.0.1                        8.1.0                    8.1.0.0.0           9.0.1.x.x
Oracle9i release 9.2                           8.1.0                    8.1.0.0.0           9.2.0.x.x    
Oracle Database 10g release 10.1    10.0.0                    9.2.0.0.0        10.1.0.x.x
Oracle Database 10g release 10.2    10.2.0                    9.2.0.0.0        10.2.0.x.x
Oracle 11g Release 11.1                  11.0.0                  10.0.0.0.0        11.1.0.x.x
Oracle 11g Release 11.2                  11.0.0                  10.0.0.0.0        11.2.0.x.x







AQ_TM_PROCESSES setting for Oracle 10.2.0.4

WARNING: AQ_TM_PROCESSES is set to 0. System operation might be adversely affected

Fix Method as below:
In 10.2, it is recommended to leave the parameter aq_tm_processes unset
             and let the database autotune the parameter.


Setting aq_tm_processes parameter explicitly to zero which disables the time monitor process (qmn),
can disrupt the operation of the database due to several system queue tables used when the standard database features are used.

You cannot determine if aq_tm_processes is set explicitly to zero just by querying v$parameter.
A check to see if the parameter is explicitly zero is:
connect / as sysdba
set serverouput on

declare
mycheck number;
begin
select 1 into mycheck from v$parameter where name = 'aq_tm_processes' and value = '0'
and (ismodified <> 'FALSE' OR isdefault='FALSE');

if mycheck = 1 then
dbms_output.put_line('The parameter ''aq_tm_processes'' is explicitly set to 0!');
end if;
exception when no_data_found then
dbms_output.put_line('The parameter ''aq_tm_processes'' is not explicitly set to 0.');
end;
/

If it is set to zero, it is recommended to unset the parameter.
alter system reset aq_tm_processes scope=spfile sid='*';

However, this requires bouncing the database if unable to do so
alter system set aq_tm_processes = 1;