码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 基于事务的临时表在11g和12C下的区别

时间:2014-10-15 22:18:51      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   使用   ar   for   sp   

    Oracle 基于事务的临时表在11g和12C下的区别下,可以看到收集临时表的统计信息后,前者记录被清空,后者没有,这是个很重要的区别。在公司环境上用的是12C,在现场用的是11g,使用临时表会造成时快时慢,之前我有帖子http://blog.csdn.net/stevendbaguo/article/details/39964807,用了hint之后,也不是特别好,于是直接采集,结果临时表被清空。解决的方法是:建基于session的临时表,且每次用完之后要truncate,要不然,会有问题。

SQL> select * from v$version;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0
PL/SQL Release 12.1.0.1.0 - Production                                                    0
CORE 12.1.0.1.0 Production                                                        0
TNS for Linux: Version 12.1.0.1.0 - Production                                            0
NLSRTL Version 12.1.0.1.0 - Production                                                    0
SQL> drop table test purge;
--基于事务的临时表
SQL> create global temporary table test
    (
      ID   number
    )
    on commit delete rows;
SQL> insert into test select object_id from dba_objects;
99412 rows inserted
SQL> select count(1) from test;
  COUNT(1)
----------
     99412
SQL> exec dbms_stats.gather_table_stats(user,‘test‘);
SQL> select count(1) from test;
  COUNT(1)
----------
     99412
     
     
     
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> drop table test purge;
--基于事务的临时表
SQL> create global temporary table test
    (
      ID   number
    )
    on commit delete rows;
SQL> insert into test select object_id from dba_objects;
70379 rows inserted
SQL> select count(1) from test;
  COUNT(1)
----------
     70379
SQL> exec dbms_stats.gather_table_stats(user,‘test‘);
SQL> select count(1) from test;
  COUNT(1)
----------
         0

Oracle 基于事务的临时表在11g和12C下的区别

标签:style   blog   http   color   io   使用   ar   for   sp   

原文地址:http://blog.csdn.net/stevendbaguo/article/details/40117287

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!