全局临时表包括:shell
基于会话的全局临时表(commit preserve rows)c#
基于事务的全局临时表(on commit delete rows)session
注意:实验在两个不一样的会话作测试
(1)建立表ui
//建立临时会话表 LISN@orcl>create global temporary table tmp_session1 on commit preserve rows as select * from dba_objects where 1=0; LISN@orcl>select a.name,b.value from v$statname a join v$mystat b on a.statistic#=b.statistic# where a.name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 100496
另外一个会话spa
//建立事务临时表 LISN@orcl>create global temporary table tmp_trans1 on commit delete rows as select * from dba_objects where 1=0; LISN@orcl>select a.name,b.value from v$statname a join v$mystat b on a.statistic#=b.statistic# where a.name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 21912
(2)插入数据code
//向临时会话表插入数据 LISN@orcl>insert into tmp_session1 select * from dba_objects; LISN@orcl>select a.name,b.value from v$statname a join v$mystat b on a.statistic#=b.statistic# where a.name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 512820
在临时事务会话事务
//向临时事务表插入数据 LISN@orcl>insert into tmp_trans1 select * from dba_objects; LISN@orcl>select a.name,b.value from v$statname a join v$mystat b on a.statistic#=b.statistic# where a.name='redo size'; NAME VALUE ---------------------------------------------------------------- ---------- redo size 434236
(3)测试it
//在事务上那个会话上io
LISN@orcl>select count(*) from tmp_trans; COUNT(*) ---------- 72539 --注意有数据 LISN@orcl>commit; commit; --提交一下 LISN@orcl>select count(*) from tmp_trans; --注意提交后没数据 COUNT(*) ---------- 0
//在会话上
LISN@orcl>select count(*) from tmp_session1; --注意有数据 select count(*) from tmp_session1; COUNT(*) ---------- 72537 LISN@orcl>commit; --提交一下 commit; Commit complete. LISN@orcl>select count(*) from tmp_session1; --依然有数据 select count(*) from tmp_session1; COUNT(*) ---------- 72537 SYS@orcl>conn lisn/lisn --quit,从新连接 conn lisn/lisn Connected. Session altered. LISN@orcl>select count(*) from tmp_session1; --查询无数据 select count(*) from tmp_session1; COUNT(*) ----------
基于会话的临时表:
全局临时表特征:
(1)基于会话的全局临时表特征:基于会话的全局临时表则是session连接退出后,临时记录自动删除,无需手动去操做,针对不一样session访问全局临时表,看到的结果是不一样。
(2)基于事务的全局临时表在commit或者session连接退出后,临时表记录自动删除。
1.建立表