Search notes:

Oracle: v$sql_plan vs v$all_sql_plan

v$sql_plan and v$all_sql_plan seem to return exactly the same information.
Both views share the same set of columns:
with
   a as (select column_name from dba_tab_columns where table_name = 'V_$SQL_PLAN'     and owner = 'SYS'),
   b as (select column_name from dba_tab_columns where table_name = 'V_$ALL_SQL_PLAN' and owner = 'SYS')
select
   coalesce(a.column_name, b.column_name)            col_name,
   case when a.column_name is not null then 'y' end  in_v$sql,
   case when b.column_name is not null then 'y' end  in_v$sqlarea
from
   a full outer join b on a.column_name = b.column_name
where
   a.column_name is null or
   b.column_name is null
order by
   coalesce(a.column_name, b.column_name)
;
The following SQL Statement tries to demonstrate that the view definition differ only from the table that these views select from. vsql_plan selects from x$kqlfxpl while v$all_sql_plan selects from x$all_kqlfxpl:
with pos as (
   select 1930 as val from dual
)
select
   case when
   substr(a.view_definition, 1, pos.val) = substr(b.view_definition, 1, pos.val) then '='  else '<>'
   end eq,
   substr(a.view_definition, pos.val-10),
   substr(b.view_definition, pos.val-10),
   length(a.view_definition),
   length(b.view_definition)
from
   pos                       cross join
   v$fixed_view_definition a cross join
   v$fixed_view_definition b
where
   a.view_name = 'GV$SQL_PLAN' and
   b.view_name = 'GV$ALL_SQL_PLAN'
;

See also

There is also the duplication of the v$sql_plan_monitor view to v$all_sql_plan_monitor]

Index