After a quite exhaustive search, it would appear that there is no real and reliable way to hide code within Oracle's database (i.e. protect the code of routines, functions, packages and triggers).
The obfuscation (WRAP), though initially promising, turned out to be useless as it is very easy to UNDO the obfuscation and get the original (readable) code back.
So, before I give up, is there any way supported by Oracle that enables real hiding of the code? (I mean, besides of blocking access using credentials).
Althought I do not like the idea of wrapping at all. As it is not benefitial for both sides (client/vendor). I have to say that wrapping of procedures/functions works differently then for packades.
While for packages wrapping simply substitutes bytes. For proceduers Oracle stores ADA virtual machine p-code. Which is much harder to reverse engeneer.
But anyway there is NO way to hide session tracing. So DBAs will always be able to see SQL statements executed by PL/SQL code.