iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle统计信息查看与收集的方法是什么
  • 406
分享到

oracle统计信息查看与收集的方法是什么

2024-04-02 19:04:59 406人浏览 薄情痞子
摘要

这篇文章主要讲解了“oracle统计信息查看与收集的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle统计信息查看与收集的方法是什么”吧!

这篇文章主要讲解了“oracle统计信息查看与收集的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle统计信息查看与收集的方法是什么”吧!


一、查看表统计信息

sql> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
SQL> select t.TABLE_NAME,t.NUM_ROWS,t.BLOCKS,t.LAST_ANALYZED from user_tables t where table_name='WOO';

备注:通过脚本查看统计信息,参考MOS:SCRIPT - Select to show Optimizer Statistics for CBO (Doc ID 31412.1)

二、查看表上的索引信息

select table_name,index_name,t.blevel,t.num_rows,t.leaf_blocks,t.last_analyzed 
  from user_indexes t 
  where table_name='DUMP_TABLE';
  
SQL> col table_name format a11
SQL> col index_name format a16
SQL> select table_name,index_name,t.blevel,t.num_rows,t.leaf_blocks,t.last_analyzed 
  2             from user_indexes t 
  3             where table_name='DUMP_TABLE';
TABLE_NAME  INDEX_NAME           BLEVEL   NUM_ROWS LEAF_BLOCKS LAST_ANAL
----------- ---------------- ---------- ---------- ----------- ---------
DUMP_TABLE  WORNUM_IND                0         10           1 18-MAR-20


  
三、检查当前统计信息收集策略

set linesize 140
col WINDOW_NAME format a17
col REPEAT_INTERVAL for a55
col DURATION for a15
select t1.window_name,t1.repeat_interval,t1.duration from 
 dba_scheduler_windows t1,dba_scheduler_wingroup_members t2  
 where t1.window_name=t2.window_name 
  and t2.window_group_name 
  in ('MaiNTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
  
  
SQL> set linesize 140
SQL> col WINDOW_NAME format a17
SQL> col REPEAT_INTERVAL for a55
SQL> col DURATION for a15
SQL> select t1.window_name,t1.repeat_interval,t1.duration from 
  2     dba_scheduler_windows t1,dba_scheduler_wingroup_members t2  
  3     where t1.window_name=t2.window_name 
  4             and t2.window_group_name 
  5             in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
  
WINDOW_NAME       REPEAT_INTERVAL                                         DURATION
----------------- ------------------------------------------------------- ---------------
MONDAY_WINDOW     freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0   +000 04:00:00
TUESDAY_WINDOW    freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0   +000 04:00:00
WEDNESDAY_WINDOW  freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0   +000 04:00:00
THURSDAY_WINDOW   freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0   +000 04:00:00
FRIDAY_WINDOW     freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0   +000 04:00:00
SATURDAY_WINDOW   freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0    +000 20:00:00
SUNDAY_WINDOW     freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0    +000 20:00:00
7 rows selected.


3.1. 关闭自动统计信息收集

BEGIN  
 DBMS_SCHEDULER.DISABLE(  
 name => '"SYS"."SATURDAY_WINDOW"',  
 force => TRUE);
END;
/

3.2 修改自动统计信息持续时间

BEGIN  
 DBMS_SCHEDULER.SET_ATTRIBUTE(  
 name => '"SYS"."SATURDAY_WINDOW"',  
 attribute => 'DURATION',  
 value => numtodsinterval(180,'minute'));
END; 
/

3.3 修改自动统计信息开始时间,每周六22点开始

BEGIN  
 DBMS_SCHEDULER.SET_ATTRIBUTE(  
 name => '"SYS"."SATURDAY_WINDOW"',  
 attribute => 'REPEAT_INTERVAL',  
 value => 'freq=daily;byday=SAT;byhour=22;byminute=0;bysecond=0 ');
END;
/

3.4 开启自动统计信息收集

BEGIN  
 DBMS_SCHEDULER.ENABLE(  
 name => '"SYS"."SATURDAY_WINDOW"');
END;
/

3.5 再次检查策略是否正确

set linesize 200
col REPEAT_INTERVAL for a60
col DURATION for a30
select t1.window_name,t1.repeat_interval,t1.duration 
 from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
  where t1.window_name=t2.window_name 
   and t2.window_group_name 
   in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
WINDOW_NAME                    REPEAT_INTERVAL                                              DURATION
------------------------------ ------------------------------------------------------------ ------------------------------
MONDAY_WINDOW                  freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0        +000 04:00:00
TUESDAY_WINDOW                 freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0        +000 04:00:00
WEDNESDAY_WINDOW               freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0        +000 04:00:00
THURSDAY_WINDOW                freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0        +000 04:00:00
FRIDAY_WINDOW                  freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0        +000 04:00:00
SATURDAY_WINDOW                freq=daily;byday=SAT;byhour=22;byminute=0;bysecond=0         +000 20:00:00
SUNDAY_WINDOW                  freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0         +000 20:00:00
7 rows selected.

四、手工收集统计信息

4.1 收集索引统计信息

exec dbms_stats.gather_index_stats(ownname => 'WOO',indname => 'WORNUM_IND',estimate_percent => '10',degree => '4');

4.2 收集表和索引统计信息 

exec dbms_stats.gather_table_stats(ownname => 'WOO',tabname => 'DUMP_TABLE',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE);

 

4.3 收集表的统计信息

exec dbms_stats.gather_table_stats(ownname => 'WOO',tabname => 'DUMP_TABLE',estimate_percent => 10,method_opt=> 'for all indexed columns');

 
 4.4 收集分区表统计信息

exec dbms_stats.gather_table_stats(ownname => 'WOO',tabname => 'DUMP_TABLE',partname => 'p_20190318',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE);

4.5 收集某个用户的统计信息

exec dbms_stats.gather_schema_stats(ownname=>'WOO',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');

4.6 收集整个数据库的统计信息

exec dbms_stats.gather_database_stats(estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');

五、动态采样:

 对于新创建的表,当访问此表时,oracle会动态的收集这个表的相关信息,等到晚上10点,再将其收集到数据字典中。

SQL> set linesize 200
SQL> set autotrace traceonly
SQL> select  * from DUMP_TABLE;
10 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1795212136
--------------------------------------------------------------------------------
| Id  | Operation         | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |            |    10 | 20390 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| DUMP_TABLE |    10 | 20390 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          4  recursive calls
          0  db block gets
          9  consistent gets
          0  physical reads
          0  redo size
       1305  bytes sent via SQL*Net to client
        523  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         10  rows processed

- dynamic sampling used for this statement (level=2) 表示动态采样,但是不记录数据字典,除非手动收集表的统计信息。

咱们通过user_tables查看结果也是一样的

SQL> set autotrace off;
SQL> select num_rows, blocks, last_analyzed from user_tables where table_name = 'DUMP_TABLE';
  NUM_ROWS     BLOCKS LAST_ANAL
---------- ---------- ---------
SQL>

六、统计信息收集完之后:

SQL> set linesize 200
SQL> set autotrace traceonly
SQL> select  * from DUMP_TABLE;
10 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1795212136
--------------------------------------------------------------------------------
| Id  | Operation         | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |            |    10 |   470 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| DUMP_TABLE |    10 |   470 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------------
Statistics
----------------------------------------------------------
         33  recursive calls
          0  db block gets
         56  consistent gets
          0  physical reads
          0  redo size
       1305  bytes sent via SQL*Net to client
        523  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          6  sorts (memory)
          0  sorts (disk)
         10  rows processed
         
SQL> set autotrace off;
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
SQL> select num_rows, blocks, last_analyzed from user_tables where table_name = 'DUMP_TABLE';
  NUM_ROWS     BLOCKS LAST_ANALYZED
---------- ---------- -------------------
        10          4 2020-03-18 17:06:16
SQL>

感谢各位的阅读,以上就是“oracle统计信息查看与收集的方法是什么”的内容了,经过本文的学习后,相信大家对oracle统计信息查看与收集的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: oracle统计信息查看与收集的方法是什么

本文链接: https://www.lsjlt.com/news/63003.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle统计信息查看与收集的方法是什么
    这篇文章主要讲解了“oracle统计信息查看与收集的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle统计信息查看与收集的方法是什么”吧!...
    99+
    2024-04-02
  • oracle统计信息收集的方法是什么
    Oracle数据库中对表的统计信息可以通过以下方法进行收集: 自动统计信息收集:Oracle数据库会自动收集表的统计信息,以便优...
    99+
    2024-04-09
    oracle
  • 如何查看oracle统计信息收集
    本篇内容主要讲解“如何查看oracle统计信息收集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何查看oracle统计信息收集”吧!查看统计信息收集时间:al...
    99+
    2024-04-02
  • oracler统计信息如何查看与收集
    这篇文章主要为大家展示了“oracler统计信息如何查看与收集”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracler统计信息如何查看与收集”这篇文章吧。查...
    99+
    2024-04-02
  • 如何查看统计信息是否成功收集
    可通过dba_ind_statistics和dba_tab_statistics中的LAST_ANALYZED字段,观察是否完成了统计信息的收集,只有完成的收集工作才会记录在这两个视图中。 测试过程如下(...
    99+
    2024-04-02
  • 怎么收集oracle统计信息
    本篇内容主要讲解“怎么收集oracle统计信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么收集oracle统计信息”吧!收集oracle统计信息优化器统计...
    99+
    2024-04-02
  • Oracle 11g怎么收集多列统计信息
    这篇文章主要介绍“Oracle 11g怎么收集多列统计信息”,在日常操作中,相信很多人在Oracle 11g怎么收集多列统计信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • Oracle 11g无法自动收集统计信息怎么办
    这篇文章给大家分享的是有关Oracle 11g无法自动收集统计信息怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL> select client_na...
    99+
    2024-04-02
  • Oracle自动收集统计信息怎么实现
    这篇文章主要介绍“Oracle自动收集统计信息怎么实现”,在日常操作中,相信很多人在Oracle自动收集统计信息怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Orac...
    99+
    2024-04-02
  • 查看Linux系统版本信息的方法是什么
    查看Linux系统版本信息的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、查看Linux内核版本命令(两种方法):1、cat /proc/version2、u...
    99+
    2023-06-28
  • oracle字符集查看的方法是什么
    要查看Oracle数据库的字符集,可以使用以下方法之一: 使用SQL查询语句查看数据库的字符集: SELECT * FR...
    99+
    2024-04-09
    oracle
  • centOS查看版本信息的方法是什么
    是的,Sqoop 可以通过命令行和 GUI 两种方式进行操作。 命令行方式:Sqoop 提供了一系列命令行工具,例如 sqoop ...
    99+
    2024-04-02
  • oracle查看字符集的方法是什么
    Oracle数据库中查看字符集的方法有多种,以下是其中两种常用的方法: 使用SQL查询NLS_DATABASE_PARAMETER...
    99+
    2024-04-09
    oracle
  • SQLPLUS使用视图查看RMAN备份集信息的方法是什么
    这篇文章主要介绍“SQLPLUS使用视图查看RMAN备份集信息的方法是什么”,在日常操作中,相信很多人在SQLPLUS使用视图查看RMAN备份集信息的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • Oracle 11g系统自动收集统计信息的知识有哪些
    这篇文章主要讲解了“Oracle 11g系统自动收集统计信息的知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle 11g系统自动收集统计信...
    99+
    2024-04-02
  • Android ANR的信息收集过程是什么
    本篇内容介绍了“Android ANR的信息收集过程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. ANR场景无论是四大...
    99+
    2023-06-21
  • 数据库中怎么找出未收集统计信息以及统计信息过期的表
    小编给大家分享一下数据库中怎么找出未收集统计信息以及统计信息过期的表,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!下面这个查询可以找到从未收集过统计信息或者统计信息过期的表。EXEC&nb...
    99+
    2024-04-02
  • 查看linux系统内核信息的命令是什么
    要查看Linux系统的内核信息,可以使用以下命令:```shelluname -a```这个命令会显示包括内核版本、主机名、操作系统...
    99+
    2023-08-29
    linux
  • 域名信息查询的方法是什么
    域名信息查询的方法有以下几种:1. WHOIS查询:WHOIS是一个查询域名注册信息的协议,可以通过WHOIS查询工具查询到域名的注...
    99+
    2023-06-08
    域名信息 域名
  • MySQL查看字符集的方法是什么
    MySQL查看字符集的方法有两种:1. 使用SHOW VARIABLES语句:在MySQL命令行客户端中,输入以下命令:```SHO...
    99+
    2023-09-23
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作