I forbindelse med Oracle Advanced Queue, og på et af vore projekter, stødte vi ind i et par bug situationer. Vi kører 10.2.0.3.0 på Sun Solaris, på et system med rigtig meget belastning.

Situationerne opstår netop på systemer med en intensiv arbejdsbelastning, og kan forudsage performance problemer og højt plads forbrug base tablespaces.

I sådanne situationer kan bl.a. også ses abnormal højt redo generering samt et højt CPU forbrug på QMON processen. Følgende metalink artikler er fundet omkring emnerne.

  • 102926.1 - Performance Tuning Advanced Queuing Databases and Applications
  • 421474.1 - How do I reduce the high watermark (HWM) of Advanced Queueing objects?
  • 271855.1 - Procedure to manually Coalesce all the IOTs/indexes Associated with Advanced Queueing tables to maintain Enqueue/Dequeue performance, reduce QMON CPU usage and Redo generation

Baseret på ovenstående kan man på regulært basis med fordel køre nedenstående vedligeholdelses script. Rutinen er kompatibel fra 10.2 og op.

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name => j_AQ_QUEUES_MAINTENANCE
    ,job_type => PLSQL_BLOCK
    ,job_action => BEGIN AQ_QUEUES_MAINTENANCE; COMMIT; END;
    ,start_date => to_date(2009-01-15 03:00,yyyy-mm-dd hh24:mi)
      ,repeat_interval => FREQ=DAILY
      ,enabled => TRUE
      ,comments => Perform AQ maintenance operation
);
END;
/

Man skal være opmærksom på at følgende grants er tildelt brugeren:

  • grant manage sceduler to user_name
  • grant create job to user_name

SELECT owner, job_name, enabled FROM dba_scheduler_jobs