Neil的備忘錄

          just do it
          posts - 66, comments - 8, trackbacks - 0, articles - 0

          Create statistics

          Since Oracle 8i the Cost Based Optimizer (CBO) is the preferred optimizer for Oracle.
          In order to make good use of the CBO, you need to create statistics for the data in the database. There are several options to create statistics.

          Analyze command

          The ANALYZE command is available for all versions of Oracle, however to obtain faster and better statistics use the procedures supplied - in 7.3.4 and 8.0 DBMS_UTILITY.ANALYZE_SCHEMA,
          and in 8i and above - DBMS_STATS.GATHER_SCHEMA_STATS The analyze table can be used to create statistics for 1 table, index or cluster.
          Syntax:
          ANALYZE table tableName {compute|estimate|delete) statistics options
          ANALYZE table indexName {compute|estimate|delete) statistics options
          ANALYZE cluster clusterName {compute|estimate|delete) statistics options

          Code examples 

          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;

          DBMS_UTILITY.ANALYZE_SCHEMA

          With DBMS_UTILITY.ANALYZE_SCHEMA you can gather all the statistics for all the tables, clusters and indexes of a schema.
          Code examples
          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');
          Note: It's also possible to analyze the whole database with the DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE'); command.

          DBMS_STATS.GATHER_SCHEMA_STATS

          From Oracle 8i the DBMS_STATS package is the preferred method Oracle list a number of benefits to using it including parallel execution, long term storage of statistics and transfer of statistics between servers. Once again, it follows a similar format to the other methods:
          Syntax:
          exec DBMS_STATS.GATHER_SCHEMA_STATS(ownname,estimate_percent, block_sample , method_opt,degree,granularity,cascade,stattab, statid,options,statown ,no_invalidate, gather_temp,gather_fixed);
          Code examples:

          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');

          Note: It's also possible to gather statistics for the whole database with the DBMS_STATS.gather_database_stats; command.

          Transfering statistics between database.

          It can be very handy to use production statistics on your development database, so that you can forecast the optimizer behavior.

          You can do this the following way:

          1. Create the statistics table.
          exec DBMS_STATS.CREATE_STAT_TABLE(ownname =>'SCHEMA_NAME' ,stat_tab => 'STATS_TABLE' , tblspace => 'STATS_TABLESPACE');
          Example:
          exec DBMS_STATS.CREATE_STAT_TABLE(ownname =>'SYSTEM',stat_tab => 'STATS_TABLE');

          2. Export statistics to statistics table
          EXEC DBMS_STATS.EXPORT_SCHEMA_STATS('ORIGINAL_SCHEMA' ,'STATS_TABLE',NULL,'SYSTEM');

          3. Import statistics into the data dictionary.
          exec DBMS_STATS.IMPORT_SCHEMA_STATS('NEW_SCHEMA','STATS_TABLE',NULL,'SYSTEM');

          4. Drop the statistics table.
          exec DBMS_STATS.DROP_STAT_TABLE('SYSTEM','STATS_TABLE');

          原文地址: http://www.oradev.com/create_statistics.jsp

          Feedback

          # re: Create statistics for the oracle cost based optimizer  回復(fù)  更多評論   

          2009-01-16 11:13 by Neil's NoteBook
          wow , super power !

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 于都县| 太康县| 淅川县| 凤山市| 桦甸市| 城市| 岳阳市| 华阴市| 苏州市| 汕尾市| 元阳县| 吉林市| 内乡县| 衡东县| 沧源| 阿合奇县| 济宁市| 永平县| 札达县| 金塔县| 兴仁县| 昌都县| 察雅县| 赤壁市| 池州市| 山阴县| 台东县| 潍坊市| 仪征市| 宝鸡市| 云浮市| 乌鲁木齐县| 南投市| 屏南县| 白银市| 青冈县| 望江县| 札达县| 天祝| 玉树县| 宝应县|