Oracle表分析方法

测试表名:d

1、判断一个表是否分析过:

select t.num_rows,t.avg_row_len from user_tables t where t.table_name ='D'、

若结果为空,则表示该表没有被分析过;

2、表没有被分析过时,oracle会采用动态采样的机制,去获取表的信息,从而得到执行计划

[动态采样.png]

动态采样的级别为0-10,0表示不动态采样,10表示最大级别的动态采样;

3、oracle默认的动态采样获取的表信息在表数据小于10W时,基本正确;当>10W时,数据量越大,获取的表信息误差越大,从而导致执行计划错误;

4、强制Hint设置表的动态采样级别:dynamic_sampling(d 0)--对d表不进行动态采样

5、手动执行sp去分析表信息(获取的表信息比动态采样获取的信息准确),从而不对表做动态采样

exec dbms_stats.gather_table_stats(user,'d',cascade=>true);--对表进行分析,然后就不会动态采样了;

exec dbms_stats.delete_table_stats(user,'d');--删掉表的分析动态信息,然后就会对表进行动态

6、 附加模拟测试环境举例:

select /*+ dynamic_sampling(t 0) cardinality(t 1)*/ * from t;

--取消动态采样和设置rownum=1;

注意:正确的表信息是生成正确的执行计划的前提。执行计划错误时,可以手动对表进行分析,从而获得正确的执行计划。

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-12-22 04:56:04

Oracle表分析方法的相关文章

Oracle变异表解决方法--ORA-04091错误

Oracle变异表解决方法--ORA-04091错误 原因:触发器(或者被语句中引用的用户自定义PL/SQL函数)视图去查询(或修改)一个被另一语句修改而触发的表. 解决方法:重写触发器(或函数)避免读该表. 对表进行DELETE,UPDATE,INSERT操作时,所操作的表就变成了变异表,对表的行级(FOR EACH ROW)触发器中不能对该表进行DML操作.这时可以使用两个方法解决. [@more@] 1.采用自治事务pragma autonomous_transaction解决. 下面给出

ORACLE表连接方式分析及常见用法

摘要: 针对在数据仓库环境下,由于超大数据量的处理而产生的效率问题,本文深入分析了ORACLE表的几种连接方式.特点.适用范围,以及对于如何使用和优化做了详细的探讨. 关键字: 数据仓库 ORACLE 表连接 一 引言 数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获得自己所需的信息.数据仓库系统需要能够及时地追踪和分析大量的历史数据,并能够及时做出分析和

Oracle 11gR2 用exp无法导出空表解决方法

Oracle 11gR2 用exp无法导出空表解决方法        在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:一.insert一行,再rollback就产生segment了.该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数  该参数值默认是TRUE,当改为FALSE时,无无是空表

MySQL定期分析检查与优化表的方法小结_Mysql

定期分析表 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] 本语句用于分析和存储表的关键字分布.在分析期间,使用一个读取锁定对表进行锁定.这对于MyISAM, BDB和InnoDB表有作用.对于MyISAM表,本语句与使用myisamchk -a相当. MySQL使用已存储的关键字分布来决定,当您对除常数以外的对象执行联合时,表按什么顺序进行联合. mysql> analyze table a; +--------

oracle表空间表分区详解及oracle表分区查询使用方法_oracle

此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间

Oracle表空间数据文件移动的方法_oracle

实现把用户表空间中的数据文件从某一个路径移动到另一个路径 一.针对可offline的非系统表空间 本例移动oracle的案例表空间(EXAMPLE表空间),将其从 D:\ORADATA\ORCL\ 移动到 D:\ORACLE\ORADATA\ 1.查看要改变的表空间的数据文件信息 SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='EXAMPLE'; TABL

ASP.NET访问Oracle数据库的方法

asp.net|oracle|访问|数据|数据库 引言 Microsoft .NET Framework Data Provider for Oracle(以下简称为.NET for Oracle)是一个.NET Framework的组件.这个组件为我们使用.NET访问Oracle数据库提供了极大的方便.那些使用.NET和Oracle的开发人员,相信会乐的手舞足蹈,因为他们再也不必使用那个并不十分"专业="的OLEDB来访问Oracle数据库了.这个组件的设计非常类似.NET中内置的M

简介使用ASP.NET访问Oracle数据库的方法

asp.net|oracle|访问|数据|数据库 摘要 本文简要介绍了使用ASP.NET访问Oracle数据库的方法.首先,介绍了组件的安装:其次,简单说明了System.Data.OracleClient中包含的核心类:最后,通过一个实例讲解了具体的使用方法. -------------------------------------------------------------------------------- 目录 引言 系统需求和安装 核心类介绍 举例说明 参考信息 -------

oracle表压缩技术

  oracle压缩技术分为基本表压缩(basic table compression),OLTP表压缩(OLTP table compression),索引压缩(index compression)和混合列压缩(hybrid columnar compression (HCC)). basic compression从9i开始推出,是oracle的默认压缩方式.OLTP compression是11g开始推出,支持所有类型的DML操作的数据压缩.压缩会节省磁盘空间,但可能会增加CPU资源的消耗