Parameter-Änderungen dokumentieren. Immer. Bitte.
Vor einiger Zeit stand bei einem Kunden wieder mal ein Datenbank-Upgrade an. Und wie in so einem Fall üblich, schaut man sich die aktuellen Werte der diversen Instanz-Parameter an. Und entdeckt diverse Nicht-Standard-Parameter, d.h. Parameter, die eher selten verwendet werden. Oder „Standard-Parameter“ haben „Nicht-Standard-Werte“. Oder es werden undokumentierte „_“-Parameter genutzt. Und bei einem Upgrade stellt sich dann die Frage: warum wurde dieser Parameter gesetzt und brauchen wir ihn in dem Ziel-Release noch?
Und dann beginnt die Suche: in den Installationsanleitungen der Anwendungshersteller, in Support-Notes und in alten Service-Request. Oder man nutzt die bevorzugte Suchmaschine.
Dabei könnte das Leben auch einfacher sein: denn man kann Parameter (und damit auch Parameteränderungen) auch dokumentieren.
Also:
SQL> alter system set "TARGET_PDBS"=10 comment='# of PDBs (planned) - MOS-Note 2644243.1' scope=spfile; System altered. SQL> alter system set "_datafile_write_errors_crash_instance"=false comment='MOS-Note 1604135.1' scope=spfile; System altered. SQL> alter system set "_exclude_seed_cdb_view"=false comment='Please see https://mikedietrichde.com/2019/04/15/why-you-should-set-_exclude_seed_cdb_viewfalse/' scope=spfile; System altered. SQL> alter system set cursor_sharing=force comment'2021-11-27 - Flechtner - Vendor requirement - software XYZ' scope=spfile; System altered. SQL> Alter system Set "_b_tree_bitmap_plans"=false Comment= 'SR 3-12345678901 Workaround Bug 12345678 12.2.0.1' SID= '*' Scope= spfile; System altered.
Die letzte Zeile ist der MOS-Note 2524119.1 entnommen, d.h. auch Oracle empfiehlt dieses Vorgehen bei besonderen Einstellungen – in diesem Fall bei „_“-Parametern.
Über die Spalte „UPDATE_COMMENT“ in V$PARAMETER (aktuelle Einstellung) bzw. V$SPPARAMETER (Spfile) kann man die Kommentare dann abfragen:
SQL> column name format a30 SQL> column value format a10 SQL> column name format a40 SQL> column update_comment format a50 SQL> set linesize 120 SQL> select name,value,update_comment from v$spparameter where update_comment is not null; NAME VALUE UPDATE_COMMENT ---------------------------------------- ---------- -------------------------------------------------- _datafile_write_errors_crash_instance FALSE MOS-Note 1604135.1 target_pdbs 10 # of PDBs (planned) - MOS-Note 2644243.1 _exclude_seed_cdb_view FALSE Please see https://mikedietrichde.com/2019/04/15/w hy-you-should-set-_exclude_seed_cdb_viewfalse/
Noch schöner wäre es natürlich, wenn der SQL*Plus oder sqlcl bei dem Befehl „show parameter“ auch den Kommentar mit anzeigen würden. Leider ist das nicht der Fall.
P.S. Mir ist natürlich klar, dass dieser Blog-Post nur ein frommer Wunsch ist. DBAs sind da meiner Erfahrung nach nicht besser als Entwickler – keiner von beiden dokumentiert gerne 🙂