Database Reference
In-Depth Information
5
Wichtige Charakteristiken des SQL-Textes
Bestimmt hatten viele von Ihnen öfters mit Hash Value und mit SQL Id zu tun. Sind Sie
aber mit den beiden Begriffen tatsächlich gut vertraut? Wissen Sie zum Beispiel, wie die
beiden berechnet werden? Warum enthält SQL Id Buchstaben? Warum kommen einige
Buchstaben in keiner SQL Id vor (beispielsweise die Buchstaben „I“ oder „E“)? Gibt es
überhaupt einen Zusammenhang zwischen dem Hash Value und der SQL Id?
Im Unterschied zum Hash Value und zur SQL Id sind Signaturen des SQL-Textes we-
sentlich weniger in DBA- und in Entwicklerkreisen bekannt. Auch sie sind sehr wichtig
für diverse Suchmethoden und Analysen. Ein klares Bild über die Signaturen verbessert
außerdem Verständnis von einigen Oracle Features.
5.1
SQL Id und Hash Value
Oracle (wie im Prinzip jedes andere Computer-System) verwendet intern sehr breit Hash-
Algorithmen. SQL-Texte bilden in diesem Sinn keine Ausnahme, da es wesentlich effizi-
enter ist, einen Hashwert für die Identifizierung SQL-Textes zu benutzen als unmittelbar
diesen Text selber.
Historisch gesehen, erschien zunächst das Hash Value für SQL-Texte und erst später die
SQL Id. Zwischen den Versionen 9i und 10g hat Oracle einen neuen Hash-Algorithmus
eingeführt und somit auch einen neuen Hashwert für SQL-Texte. Der alte Wert wird wei-
terhin in der Spalte OLD_HASH_VALUE der internen Views gepflegt, welche für SQL-
Text relevant sind (z. B. in der View V$SQL). Die Spalte HASH_VALUE enthält nun den
neuen Hashwert.
Der in 10g eingeführte Hash-Algorithmus basiert auf MD5 Algorithmus, der 16-Byte-
Hashwerte berechnet. Die letzten 4 Bytes dieses großen Hashwertes bilden den Hashwert,
der in der Spalte HASH_VALUE abgespeichert ist (Information darüber findet man z. B.
im Package-Header von DBMS_UTILITY). Es gibt dort eine Funktion DBMS_UTILITY.
GET_SQL_HASH, die den Hashwert eines SQL-Textes zurückliefert. Diese Funktion be-
 
Search WWH ::




Custom Search