Oracle学习笔记(九)

全局临时表自动处理数据:

drop table ljb_tmp_session;
create global temporary table ljb_tmp_session on commit preserve rows as select  * from dba_objects where 1=2;
select table_name,temporary,duration from user_tables  where table_name='LJB_TMP_SESSION';
drop table  ljb_tmp_transaction;
create global temporary table ljb_tmp_transaction on commit delete rows as select * from dba_objects where 1=2;
select table_name, temporary, DURATION from user_tables  where table_name='LJB_TMP_TRANSACTION';

insert all 
   into  ljb_tmp_transaction
   into  ljb_tmp_session
select * from dba_objects;

select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session),
 (select count(*) transaction_cnt from ljb_tmp_transaction);

commit;
 
select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session),
(select count(*) transaction_cnt from ljb_tmp_transaction);


select session_cnt,transaction_cnt from (select count(*) session_cnt from ljb_tmp_session),
(select count(*) transaction_cnt from ljb_tmp_transaction);

  不同session数据独立:

drop table ljb_tmp_session;
create global temporary table ljb_tmp_session on commit preserve rows as select  * from dba_objects where 1=2;
select table_name,temporary,duration from user_tables  where table_name='LJB_TMP_SESSION';
drop table  ljb_tmp_transaction;
create global temporary table ljb_tmp_transaction on commit delete rows as select * from dba_objects where 1=2;
select table_name, temporary, DURATION from user_tables  where table_name='LJB_TMP_TRANSACTION';

--不同session的例子试验基于sesssion 的临时表即可了,不用试验另外一个了。
---连上session 1
 insert into ljb_tmp_session select * from dba_objects where rownum<=10;
 --可以体会提交,基于session 的提交并清理数据
 commit;
 select count(*) from ljb_tmp_session;


  COUNT(*)
----------
    10 
 
---不退出session 1,继续登录session 2
insert into ljb_tmp_session select * from dba_objects where rownum<=20;
commit;
select count(*) from ljb_tmp_session;

  COUNT(*)
----------
    20

  产生日志较少:

猜你喜欢

转载自www.cnblogs.com/sunliyuan/p/12306809.html