Regarding question on Oracle X$KSMLRU fixed table.
I cannot yet answer why this table reset after each SELECT, but at least, I know at which point. Information in this table is constructed using function ksmlrs() (at least for 10.2), which also calls ksmsplu(). The last function allocate memory chunks for the table, marking them as x$\$$ksmsp lrstat and x$\$$ksmsp lru, then copy the table, then calls memset() C function to zero it. If to bypass this last call to memset(), by debugger for example, it is possible to have such Oracle instance which will not reset this table after each SELECT. However, if you want to do this, I hope you'll backup your database first.
Update: The story about how did I find it, I added to my "Quick introduction to reverse engineering for beginners" book: //yurichev.com/RE-book.html.
This open sourced site and this page in particular is hosted on GitHub. Patches, suggestions and comments are welcome.