`
xiaoer_1982
  • 浏览: 1871317 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用DBMS_STATS重放性能问题

阅读更多

使用DBMS_STATS重放性能问题

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

现场反馈一些功能更新后变慢,决定查看一下现场的执行计划,使用DBMS_STATS进行统计数据的传递。

使用有dba角色的用户登录

创建统计表

SQL> exec dbms_stats.create_stat_table('ahsimis','qik'); --Schema,表名

PL/SQL procedure successfully completed

将表的统计信息导出到统计表中

导出统计值,这里可以导表,也可以导schemadatabasecolumn的统计值

SQL> exec dbms_stats.export_table_stats('ahsimis','ac20','','qik'); -- Schema,统计的表,,统计表名

PL/SQL procedure successfully completed

将表的统计信息导出成文件

使用工具将qik表下的数据导出成sql语句。

创建本地的同名,同Schema下的统计表

导入sql语句。

导入统计表的内容到本地Schema

导入的用户也要具有dba权限,要注意,导出和导入统计值的表结构应该一致,否则导入时会报错

SQL> exec dbms_stats.import_table_stats('ahsimis','ac20','','qik');

PL/SQL procedure successfully completed

统计表的删除

SQL> exec dbms_stats.drop_stat_table('ahsimis','qik'); --Schema,表名

PL/SQL procedure successfully completed

Wonder

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" isrocdate="False" islunardate="False" day="6" month="10" year="2008">2008-10-06</chsdate>

1:关于DBMS_STATS的其他信息,DBMS_STATS本身存在bug

http://yumianfeilong.com/2007/05/28/dbms_stats-vs-analyze2/

使用DBMS_STATS进行Gather表和索引的统计信息,会使得索引监视失效,此问题在<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US">10.2.0</span></chsdate>.1中正常,但在10.2.0.3中又出现了,使用analyze语句不会有此问题。

2:分析数据的三种方法

l ANALYZE

ANALYZE table scott compute statistics;

ANALYZE table scott estimate statistics sample 25 percent;

ANALYZE table scott estimate statistics sample 1000 rows;
analyze index sc_idx compute statistics;
analyze index sc_idx validate structure;

l DBMS_UTILITY.ANALYZE_SCHEMA

exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','COMPUTE');
exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','ESTIMATE',estimate_rows => 1000);
exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','ESTIMATE', estimate_percent 
=> 25);
exec DBMS_UTILITY.ANALYZE_SCHEMA('SCOTT','DELETE');

l DBMS_STATS.GATHER_SCHEMA_STATS

exec 
DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT',DBMS_STATS.AUTO_SAMPLE_SIZE);
exec 
DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>'SCOTT'
 ,estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE);
EXEC DBMS_STATS.gather_schema_stats(ownname => 'SCOTT', 
estimate_percent => 25);
EXEC DBMS_STATS.gather_table_stats('SCOTT', 'EMPLOYEES');
EXEC DBMS_STATS.gather_index_stats('SCOTT', 'EMPLOYEES_PK');

exec DBMS_STATS.DELETE_SCHEMA_STATS('SCOTT');
分享到:
评论

相关推荐

    使用dbms_stats包手工收集统计信息

    通过使用 dbms_stats 包,我们可以手动收集统计信息,以提高数据库的性能和查询优化。 基于表的统计信息收集 使用 dbms_stats.gather_table_stats 过程可以收集基于表的统计信息。这个过程需要指定表的所有者、...

    DBMS_STATS.GATHER_TABLE_STATS详解.pdf

    ### DBMS_STATS.GATHER_TABLE_STATS...综上所述,`DBMS_STATS.GATHER_TABLE_STATS` 是一种非常强大且灵活的过程,能够帮助数据库管理员有效地收集和管理表、列及索引的统计信息,从而提高查询性能和数据库的整体效率。

    Metalink_DBMS_STATS.doc

    虽然DBMS_STATS提供了许多优点,但在某些情况下,如收集分区索引统计信息时可能会出现性能下降(问题:使用DBMS_STATS收集分区索引统计信息时的慢性能)。这可能需要调整收集策略,例如,使用更精细的采样方法或者在...

    Oracle统计分析-dbms_stats.pdf

    通过正确地使用 dbms_stats,可以提高数据库的性能,减少故障的可能性,并提高用户体验。 知识点: 1. dbms_stats 是 Oracle 中的一个统计分析工具,能够良好地估计统计数据,特别是针对较大的分区表。 2. dbms_...

    ORACLE DBMS STATS ERROR

    然而,当出现错误“ORA-04063: package body 'SYS.DBMS_REGISTRY_SYS' has errors”时,表明`DBMS_STATS`包或与其相关的`SYS.DBMS_REGISTRY_SYS`包体存在错误,这可能对数据库性能和正常操作造成影响。 **问题症状*...

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    例如,你可以使用DBMS_XMLDOM.newDoc()来创建一个新的XML文档对象,使用DBMS_XMLDOM.parseXML()将XML字符串解析成DOM树,然后通过DBMS_XMLDOM.getElementsByTagName()等方法对DOM树进行查询和操作。 DBMS_XMLPARSER...

    dbms_stats.docx

    ### DBMS_STATS在Oracle数据库中的应用 #### 一、DBMS_STATS概述 DBMS_STATS是Oracle提供的一款功能强大的工具...正确地使用DBMS_STATS的各项功能和参数,可以显著提升数据库的性能和效率,从而为企业带来更大的价值。

    oracle dbms_lob

    例如,可以使用`DBMS_LOB.WRITE`在INSERT或UPDATE语句中修改LOB值,或者使用`DBMS_LOB.APPEND`在已有的LOB后面添加新内容。 学习`DBMS_LOB`包的过程中,了解其每个过程和函数的参数含义、使用场景和返回值非常重要...

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    描述虽然为空,但根据标题我们可以推测,这篇博文可能是关于如何使用DBMS_XPLAN包来解析和理解Oracle的执行计划,这对于数据库管理员和开发人员优化SQL性能至关重要。 标签“源码”和“工具”暗示了这篇博文可能...

    ORACLE SYS.DBMS_REGISTRY_SYS has errors

    标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...

    dbms_obfuscation_toolkit加密解密数据

    ### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...

    DBMS_SQL的使用

    ### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...

    Oracle 11g收集各种统计信息(DBMS_STAT)

    在Oracle 7版本中,analyze语句被用来收集统计信息,但在Oracle 8.1.5引入DBMS_STATS后,Oracle开始推荐使用这个包,因为它提供了更高级的功能和控制。 DBMS_STATS的主要功能是分析表、索引和其他数据库对象,以...

    DBMS_RANDOM.VALUE OR DBMS_RANDOM.STRING

    请注意,使用`DBMS_RANDOM`时需要注意其性能影响,因为生成随机数和字符串涉及计算,可能会比直接查询数据库更消耗资源。在处理大量数据或频繁调用时,要特别注意这一点。 在源码层面,`DBMS_RANDOM`的实现可能涉及...

    怎样禁用及回收java的授权dbms_java

    ### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...

    dbms_lock控制串行详解

    在实际应用中,DBMS_LOCK常用于解决以下问题: 1. **并发控制**:在复杂的应用场景中,可能需要对特定资源进行精细的并发控制,例如在批量更新或者长时间运行的事务中。 2. **避免死锁**:通过预定义和管理锁,...

    PostgreSQL_DBMS_for_Windows_922_136133.exe

    支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。

    DBMS_SQL.rar_dbms_oracle

    下面是一个简单的示例,展示了如何使用DBMS_SQL执行动态SQL: ```sql DECLARE v_cursor INTEGER; v_sql VARCHAR2(200) := 'SELECT * FROM employees WHERE employee_id = :1'; v_employee_id NUMBER := 101; v_...

Global site tag (gtag.js) - Google Analytics