My understanding of the difference between v$sql and v$sqltext is this:

v$sqltext is a view of the sql statements currently running in memory.

v$sql is a view of the sql statements that have run over the life of the instance and cumulative statistics regarding their execution (such as how many times that statement has been executed, how many total disk reads and buffer gets are associated with the statement, etc.).

If you want to look at the differences in the actual view definitions against the x$ tables then you can do something like this (under Oracle8):


select 'view name: ' || view_name,
substr(view_definition,1,(instr(view_definition,'from')-1)) def1,
substr(view_definition,(instr(view_definition,'from'))) def2
from v$fixed_view_definition
where view_name like 'GV$SQL%'
order by view_name;


I borrowed the basis for this query from 'Oracle Performance Tuning Tips and Techniques' by Richard Niemiec, which is a great book.

Hope this helps.
Dan