Variables Bind et Protocole ou Traces Oracle Net

Il est possible de retrouver les valeurs de bind dans le protocole Oracle Net ou dans les traces du clients. Dans ce cas les valeurs apparaissent sous la forme d’un code au format hexadécimal XX YY YY YY YY YY où:

  • XX indique la longueur de la valeur passée
  • YY indique la valeur elle-même

Le problème c’est que si décoder ces valeurs pour des champs texte est simple, décoder des champs numériques est plus compliqué a priori. Pour vous aider, Oracle fournit le package
utl_raw.

Ainsi si vous capturez par exemple la séquence 04 C3 03 4E 57 et que vous savez d’après le type passé en paramètre qu’il s’agit d’un type number, il suffit d’exécuter la commande ci-dessous pour retrouver la valeur correspondante :

select utl_raw.cast_to_number('C3034E57') "NUMBER"
from dual;

NUMBER
----------
27786

Et voilà, il ne vous reste plus qu’à vous connecter à un port SPAN de votre switch ou à utiliser un outil comme Oracle Database Firewall et vous récupérerez bientôt les valeurs de vos variables binds sans succomber au principe d’incertitude d’Heisenberg.