Database Reference
In-Depth Information
5.2 Signaturen
Für einige Oracle Features ist die Eindeutigkeit des SQL-Textes ein zu starkes Kriterium.
Dort sind gewisse Abweichungen in SQL-Text erlaubt (z. B. Unterschiede in der Anzahl
der Leerzeichen). In solchen Fällen braucht Oracle eine andere Art von Hashwerten, um
schnell prüfen zu können, ob das jeweilige Feature für einen SQL-Text anwendbar ist. Ge-
rade dafür wurden 2 Signaturen für SQL Profiles eingeführt (zunächst die Exact Matching
Signature in 10.1, danach die Force Matching Signature in 10.2). Der weitere Text ist für
Oracle Releases ab 10.2 relevant, wo die beiden Arten von Signaturen präsent sind. Die
SQL Profiles sind ausführlich im Abschn. 14.2 beschrieben.
Das Feld SIGNATURE der View DBA_SQL_PROFILES enthält entweder einen Wert
der Exact Matching Signature oder der Force Matching Signature in Abhängigkeit vom
Wert im Feld FORCE_MATCHING.
Fangen wir mit Exact Matching Signature an. Da Oracle Unterschiede in Leerzeichen,
in Zeilenumbrüchen, in Klein- und Großschreibung für SQL Profiles erlaubt, wird der
SQL-Text zunächst normalisiert:
• LeerzeichenaußerhalbderLiteralenwerdenaufeinMinimumreduziert,
• alleZeilenumbrüchewerdenentfernt,
• derTextaußerhalbderLiteralenwirdinGroßschreibungumgewandelt.
Erst danach wird der jeweilige Hashwert für Exact Matching Signature berechnet. Wie
Oracle diesen Hashwert genau berechnet, ist für uns nicht sehr wichtig, da Oracle uns
Funktionen für Berechnung der Signaturen zur Verfügung stellt. Das sind die Funktionen
SQLTEXT_TO_SIGNATURE im Package DBMS_SQLTUNE. Wenn man FALSE (oder 0)
als Wert des Argumentes FORCE_MATCH eingibt, so wird Exact Matching Signature be-
rechnet (der Wert TRUE oder 1 wird für die Force Matching Signature benutzt).
SQL>select dbms_sqltune.sqltext_to_signature(to_clob('select count(*) from tab$ where obj#
between 10000 and 10000000'), force_match => 0) exact_matching_signature from dual;
EXACT_MATCHING_SIGNATURE
------------------------
9345155026443381189
Man kann auch ohne Package DBMS_SQLTUNE diese Signatur ermitteln. Diese andere
Methode basiert auf der einfachen Beobachtung, dass die Signaturen von einer SQL-An-
weisung und von dem Kommando Explain Plan für diese SQL-Anweisung identisch sind.
Search WWH ::




Custom Search