Er zijn minstens 11 manieren om een plan te beheren zonder de query te wijzigen. Ze worden hieronder ruwweg weergegeven in volgorde van bruikbaarheid:
- SQL-planbasislijn - Vervang het ene abonnement door een ander abonnement.
- SQL-profielen - Voeg "corrigerende" hints toe aan de plannen. Een profiel kan bijvoorbeeld zeggen "deze join levert 100 keer meer rijen op dan verwacht", wat indirect het plan verandert.
- Opgeslagen overzicht - Idee vergelijkbaar met SQL Plan Baseline, maar met minder functies. Deze optie is eenvoudiger te gebruiken, maar minder krachtig en wordt niet meer ondersteund.
- DBMS_STATS.SET_X_STATS - Het handmatig wijzigen van tabel-, kolom- en indexstatistieken kan plannen aanzienlijk veranderen door objecten er kunstmatig meer of minder duur uit te laten zien.
- Sessiecontrole - Bijvoorbeeld
alter session set optimizer_features_enable='11.2.0.3';
. Er zijn niet altijd nuttige parameters. Maar een van de OPTIMIZER_* parameters kan helpen, of u kunt het plan wijzigen met een ongedocumenteerde hint of een functie als deze uitschakelen:alter session set "_fix_control"='XYZ:OFF';
- Systeembeheer - Gelijkaardig aan hierboven, maar van toepassing op het hele systeem.
- DBMS_SPD - Een SQL-planrichtlijn is vergelijkbaar met een profiel omdat het wat corrigerende informatie aan de optimizer geeft. Maar dit werkt op een lager niveau, voor alle abonnementen, en is nieuw voor 12c.
- DBMS_ADVANCED_REWRITE - Verander een zoekopdracht in een andere zoekopdracht.
- Virtuele privédatabase - Verander een zoekopdracht in een andere zoekopdracht door predikaten toe te voegen. Het is niet bedoeld voor prestaties, maar u kunt het waarschijnlijk misbruiken om indextoegangspaden te wijzigen.
- SQL-vertaalkader - Verander een query in een andere query, voordat deze zelfs maar wordt geparseerd. Hierdoor kan een totaal "verkeerde" SQL worden uitgevoerd.
- SQL-patch (dbms_sqldiag internal.i_create_patch) - Verander een zoekopdracht in een andere zoekopdracht. Vergelijkbaar met DBMS_ADVANCED_REWRITE, maar het is niet gedocumenteerd en misschien een beetje krachtiger.