background success stories

Un advisor qui ne vous veut pas du bien

Oracle ajoute de plus en plus de fonctionnalités d’automatisation à sa base et de plus en plus d’advisors s’exécutent pendant les plages de maintenance. Certaines fois ils feraient mieux de s’abstenir…

Retour sur un problème qui a causé une interruption de service sur une base de Prodution Oracle 11gR2 / Rac en 24/7 et a sorti les DBAs d’astreinte de leur sommeil à 2h du matin…

 

Les symptômes sont :

  • Une surconsommation excessive de Redolog.
  • Un tablespace qui se remplit à 100% en dehors de tout traitement applicatif lourd à cause de deux tables qui peuvent grossir de plusieurs Go et plus : DBMS_TAB_COMP_TEMP_UNCMP et DBMS_TAB_COMP_TEMP_CMP.

 

La cause en est :

  • Le compression Advisor, apparu avec Oracle 11.2 et exécuté par défaut comme tâche automatique pendant les plages de maintenance c’est-à-dire entre 22h et 2h du matin en semaine et 6h-22h le week-end…

Le compression advisor est une tâche intégrée au segment advisor qui cherche à voir quelles tables pourraient être compressées.

Pour cela il choisit une table de l’application parmi les plus volumineuses (90Go pour celle choisie) et duplique cette table dans les 2 tables temporaires ci-dessus (une sans compression : UNCMP, l’autre avec : CMP) en prenant un échantillon de 99% des blocks (soit 90Go en plus).

Les tables temporaires ne sont pas créées dans le tablespace temporaire mais dans le même tablespace que la table analysée (DATA). Ainsi le tablespace applicatif peut donc se remplir complètement jusqu’à provoquer des erreurs d’allocation d’extents.

 

Le bug :

  • La consommation excessive de Redo est due au bug non publié 8896202. Ce bug est fixé en 11.2.0.2 mais la génération excessive de Redo continue à exister si la table analysée contient des colonnes LOB (ce qui était le cas ici, bug non publié 13463481). Toutes les explications ici : How Does Compression Advisor Work ? (Doc ID 1284972.1).
  • Les 2 tables temporaires quant à elles risquent toujours de saturer le tablespace applicatif

 

Contournement :

  • Le compression advisor ne peut pas être séparé du segment advisor. Pour l’empêcher de travailler il faut pour l’instant désactiver le segment advisor.