Oracle 收集统计信息11g和12C在差异
2015-12-14 16:18
645 查看
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.0Production 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.0Production
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
关于使用企业环境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.0Production 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.0Production
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 表锁的问题
- 用单例连接oracle数据库
- oracle批量转库工作,比较快捷的方式
- PROC简单的用例--VC连接ORACLE
- Linux中Oracle环境变量配制
- Oracle创建表空间和用户
- Oracle创建表空间和用户
- Oracle使用记录
- oracle新增(ibatis)
- CentOS7.1安装Oracle 12.1客户端以及cx_Oracle
- 问题:oracle 两个表之间的修改;结果:ORACLE 两个表之间更新的实现
- oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
- 关于Oracle有两个或者多个实例时,用SID来区分目前oralce使用的是哪个实例。
- oracle查看对象信息
- 45 个非常有用的 Oracle 查询语句
- oracle如何判断字段是数字还是字符
- oracle插入多表(insert all/first)
- 【转】Oracle 10g RAC TAF
- lvm add new hard disk for oracle linux 5.8
- Oracle数据库Decode()函数的使用方法