-- Setup
--------
drop table T1 purge;

create table T1 
  tablespace USERS
  as 
  select * from dba_extents
;

drop table T2 purge;

create table T2 
  tablespace USERS
  as 
  select * from dba_extents
;


insert into T1 select * from T1;

insert into T2 select * from T2;
insert into T2 select * from T2;
insert into T2 select * from T2;

commit;

create index I1 on T1(OWNER) tablespace USERS;
create index I2 on T2(OWNER) tablespace USERS;

exec dbms_stats.delete_table_stats(user,'T1');
exec dbms_stats.delete_table_stats(user,'T2');

exec dbms_stats.gather_table_stats(user,'T1', method_opt=>'for all columns size 1');
exec dbms_stats.gather_table_stats(user,'T2', method_opt=>'for all columns size 1');

exec dbms_stats.gather_table_stats(user,'T1', method_opt=>'for all columns size skewonly');
exec dbms_stats.gather_table_stats(user,'T2', method_opt=>'for all columns size skewonly');


set lines 250 pages 999
alter system flush shared_pool;

var MYOWNER varchar2(30);

execute :MYOWNER:='DBSNMP';

select /*+ GATHER_PLAN_STATISTICS MONITOR */
  count(1)
from
    T1,
    T2
where
  T1.OWNER=:MYOWNER and
  T1.BLOCKS=T2.BLOCKS
/

select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST  +PEEKED_BINDS +PARALLEL +PARTITION +COST +BYTES'));

