Claus_Jambrich_5663

MQReorg und MQ_CHECK_TIME, Fehler bei Oracle Datenbanken

Discussion created by Claus_Jambrich_5663 on Jan 13, 2017
Latest reply on Jan 10, 2018 by Andreas_Sprosec_7439
Wenn das System langsam erscheint, sollte man in den Logs nachsehen, ob es Meldung wie folgende gibt:

U0003592 UCUDB - Status: '' NativeError: '10634' Msg: 'ORA-10634: Segment is already being shrunk

In diesem Fall sollten MQ_CHECK_TIME und der Vollständigkeit halber auch MQ_BLOCK_COUNT in der Variablen UC_SYSTEM_SETTINGS auf 0 gesetzt werden.

MQ_CHECK_TIME sollte die Performance verbessern, aber das kann leider auch nach hinten los gehen. Die MQ-Tabellen ändern oft ihre Größe. Bei viel Last haben sie sehr viele Einträge, bei wenig last kann das praktisch auf 0 runter gehen. Dadurch wird die Tabelle immer wieder erweitert. Gemäß dem Parameter MQ_CHECK_TIME und MQ_BLOCK_COUNT in UC_SYSTEM_SETTINGS wird z.B. alle 10 Minuten geprüft, ob eine der MQ-Tabellen mehr als 64 Extents hat. Wenn das der Fall ist, wird ein Shrink der Tabelle ausgeführt. Und dabei werden diese Tabellen gelockt. Es wird nämlich nicht geprüft, ob schon ein WP einen Reorg durchführt und es wird auch nicht geprüft, wie hoch gerade die Systemlast ist. Ist das System nämlich unter hoher Last, haben die MQ-Tabellen auch viele Einträge. Dann ist die Tabelle zwar vielleicht größer als durch MQ_BLOCK_COUNT gegeben, aber ein Shrink würde nichts bringen. Er wäre sogar kontraproduktiv, da er nur noch mehr Last erzeugt und Tabllen lockt. Setzt man MQ_CHECK_TIME auf einen höheren Wert passiert dieser Check seltener, wenn man ihn auf 0 setzt gar nicht mehr.

Bitte beachten Sie, dass wenn Sie diesen Parameter auf 0 setzen, eine manuelle Reorganisation der erwähnten Tabellen erforderlich ist. Das ist eine Aufgabe für den DBA da es sich hier um klassische DB Maintenance handelt.

Outcomes