Search notes:

Oracle: Global Temporary Table (GTT)

create global temporary table tq84_temp (a number);
insert into tq84_temp values (42);

-- One record in user_objects:
select * from user_objects  where  object_name = 'TQ84_TEMP';

-- One record also in user_tables (with the value of TEMPORARY = Y):
select
   temporary,
   tablespace_name,
   duration
from
   user_tables
where
   table_name = 'TQ84_TEMP';

-- No record in user_segments:
select * from user_segments where segment_name = 'TQ84_TEMP';

rowid

Global temporary tables have rowids which is demonstrated below.
WE need a GTT with some data…
create global temporary table tq84_gtt (
   num number,
   txt varchar2(10)
);

begin
   insert into tq84_gtt values (1, 'one'  );
   insert into tq84_gtt values (2, 'two'  );
   insert into tq84_gtt values (3, 'three');
   insert into tq84_gtt values (4, 'four' );
end;
/
The data is updated…
begin

  for r in (select rowid, txt from tq84_gtt) loop
      update tq84_gtt set txt = upper(r.txt) where rowid = r.rowid;
  end loop;

end;
/
Show the updated values:
select * from tq84_gtt;
       NUM TXT       
---------- ----------
         1 ONE       
         2 TWO       
         3 THREE     
         4 FOUR   
Cleaning up:
drop table tq84_gtt purge;

See also

The /*+ materialize */ SQL hint forces the data that is returned by a with clause to be stored in a global temporary table.
The fixed table x$kxttstets stores session private stats for GTTs.
Temporary tables.

Index