V$SQL视图记录了实例启动以来存放在shared pool中的的所有已经解析的SQL语句信息,它不包含GROUP BY字句,并且为每一条SQL语句中单独存放一条记录;但是出于对空间原因有可能会删除旧的sql语句, 存储的是具体的SQL 和执行计划相关信息
(任何一条执行过的语句不管执行了几次在V$SQL中都只有一条记录,V$SQL中会记录执行了几次。两条一模一样的语句但是在不同的schema下执行的两种结果,如select * from t1.test在sye、system下执行则V$SQL只有一条记录。如在sys和system都执行select * from test则V$SQL中有两条记录,两条记录的CHILD_NUMBER和PARSING_SCHEMA_NAME不一样。同一个用户下执行一样的语句如果大小写不一样或加了hint的话则会出现多个V$SQL记录,说明V$SQL对应的sql语句必须一模一样,如果alter system flush shared_pool(主站慎用)后再执行一样的语句,发现语句在V$SQL中的SQL_ID和HASH_VALUE与之前的一样,说明SQL_ID和HASH_VALUE应该是oracle自己的一套算法来的,只是根据sql语句内容来进行转换,sql语句不变则SQL_ID和HASH_VALUE也不变。)
V$SQLAREA视图记录了实例启动以来存放在shared pool中的的所有已经解析的SQL语句信息,它包含GROUP BY字句,其中一条记录显示了一条共享SQL区中的统计信息。它提供了有在内存中、解析过的和准备运行的SQL语句的统计信息;
V$SQLSTATS视图记录了实例启动以来存放在shared pool中的的所有已经解析的SQL语句信息,也是返回基本的统计信息,但是信息保留的时间比v$sql和v$sqlarea时间长,其中的数据是v$sql和v$sqlarea的子集。
V$SQL和V$SQLAREA两个视图的不同之处在于,V$SQL中为每一条SQL保留一个条目,而V$SQLAREA可以看做V$SQL根据 sqltext 等 做了 group by 之后的信息
所以,查看TOP 10 SQL只需要以V$SQL为基础即可
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2057475/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30126024/viewspace-2057475/