iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracler统计信息如何查看与收集
  • 700
分享到

oracler统计信息如何查看与收集

2024-04-02 19:04:59 700人浏览 独家记忆
摘要

这篇文章主要为大家展示了“oracler统计信息如何查看与收集”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracler统计信息如何查看与收集”这篇文章吧。查

这篇文章主要为大家展示了“oracler统计信息如何查看与收集”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracler统计信息如何查看与收集”这篇文章吧。

查看某个表的统计信息

sql> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

Session altered.

SQL> select t.TABLE_NAME,t.NUM_ROWS,t.BLOCKS,t.LAST_ANALYZED from user_tables t where table_name in ('T1','T2');

TABLE_NAME                       NUM_ROWS     BLOCKS LAST_ANALYZED

------------------------------ ---------- ---------- -------------------

T1                                   2000         30 2017-07-16 14:02:23

T2                                   2000         30 2017-07-16 14:02:23

查看某个表上索引的统计信息 

SQL> select table_name,index_name,t.blevel,t.num_rows,t.leaf_blocks,t.last_analyzed from user_indexes t where table_name in ('T1','T2');

TABLE_NAME     INDEX_NAME                 BLEVEL   NUM_ROWS LEAF_BLOCKS LAST_ANALYZED

-------------- ---------------------- ---------- ---------- ----------- -------------------

T1             IDX_T1_OBJ_ID                   1       2000           5 2017-07-16 12:06:33

T2             IDX_T2_OBJ_ID                   1       2000           5 2017-07-16 14:02:23

T2             IDX_T2_OBJ_TYPE                 1       2000           5 2017-07-16 14:02:23

T2             IDX_T2_OBJ_NAME                 1       2000           8 2017-07-16 14:02:23

T2             IDX_T2_DATA_OBJ_ID              1       1198           3 2017-07-16 14:02:23

T2             IDX_T2_STATUS                   1       2000           5 2017-07-16 14:02:23

T2             IDX_T2_CREATED                  1       2000           6 2017-07-16 14:02:23

T2             IDX_T2_LAST_DDL_TIME            1       2000           6 2017-07-16 14:02:23

8 rows selected.

oracle会在一个固定的时间将数据库里的表和索引的相关统计信息进行收集,默认选择周一到周五晚上10点,持续收集4小时,和周六周日早上6点,持续收集20小时。 

oracle可以专门对表的记录变化量进行管理,当某表一天记录变化量没有超过指定的阀值时,oracle就不会对该表进行统计信息收集。

修改统计信息自动收集时间

SQL> set linesize 200

SQL> col REPEAT_INTERVAL for a60

SQL> col DURATION for a30

SQL> select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2

  2  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=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.

关闭自动统计信息收集

BEGIN

  DBMS_SCHEDULER.DISABLE(

  name => '"SYS"."SATURDAY_WINDOW"',

  force => TRUE);

END;

/

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

BEGIN

  DBMS_SCHEDULER.SET_ATTRIBUTE(

  name => '"SYS"."SATURDAY_WINDOW"',

  attribute => 'DURATION',

  value => numtodsinterval(240,'minute'));

END;  

/

修改自动统计信息开始时间

BEGIN

  DBMS_SCHEDULER.SET_ATTRIBUTE(

  name => '"SYS"."SATURDAY_WINDOW"',

  attribute => 'REPEAT_INTERVAL',

  value => 'freq=daily;byday=SAT;byhour=22;byminute=0; bysecond=0 ');

END;

/

开启自动统计信息收集

BEGIN

  DBMS_SCHEDULER.ENABLE(

  name => '"SYS"."SATURDAY_WINDOW"');

END;

/

SQL> set linesize 200

SQL> col REPEAT_INTERVAL for a60

SQL> col DURATION for a30

SQL> 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 04:00:00

SUNDAY_WINDOW     freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0         +000 20:00:00

7 rows selected.

手动收集统计信息

收集表统计信息

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

exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'TAB_NAME',CASCADE=>TURE);

收集分区表的某个分区统计信息

exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'RANGE_PART_TAB',partname => 'p_201312',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE);

收集索引统计信息

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

收集表和索引统计信息 

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

收集某个用户的统计信息

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

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

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

ownname: USER_NAME

tabname: TABLE_NAME

partname: 分区表的某个分区名

estimate_percent: 采样百分比,有效范围为[0.000001,100]

block_sample:使用随机块采样代替随机行采样

method_opt:

cascade:是否收集此表索引的统计信息

degree:并行处理的cpu数量

granularity: 统计数据的收集,'ALL' - 收集所有(子分区,分区和全局)统计信息

动态采集统计信息

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

SQL> set autotrace off

SQL> set linesize 1000

SQL> drop table t_sample purge;

drop table t_sample purge

ERROR at line 1:

ORA-00942: table or view does not exist

SQL> create table t_sample as select * from dba_objects;

Table created.

SQL> create index idx_t_sample_objid on t_sample(object_id);

Index created.

新建的表,查不到统计信息

SQL> select num_rows, blocks, last_analyzed from user_tables where table_name = 'T_SAMPLE';

  NUM_ROWS     BLOCKS LAST_ANAL

---------- ---------- ---------

查看执行计划:

SQL> set autotrace traceonly

SQL> set linesize 1000

SQL> select  * from t_sample where object_id=20;

Execution Plan

----------------------------------------------------------

Plan hash value: 1453182238

--------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name               | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                    |     1 |   207 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T_SAMPLE           |     1 |   207 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | IDX_T_SAMPLE_OBJID |     1 |       |     1   (0)| 00:00:01 |

--------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   2 - access("OBJECT_ID"=20)

Note

-----

   - dynamic sampling used for this statement (level=2)

Statistics

----------------------------------------------------------

         24  recursive calls

          0  db block gets

         93  consistent gets

          1  physical reads

          0  redo size

       1608  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)

          1  rows processed

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

SQL> select num_rows, blocks, last_analyzed from user_tables where table_name = 'T_SAMPLE';

  NUM_ROWS     BLOCKS LAST_ANAL

---------- ---------- ---------

SQL> 

以上是“oracler统计信息如何查看与收集”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: oracler统计信息如何查看与收集

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

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

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

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

下载Word文档
猜你喜欢
  • oracler统计信息如何查看与收集
    这篇文章主要为大家展示了“oracler统计信息如何查看与收集”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracler统计信息如何查看与收集”这篇文章吧。查...
    99+
    2024-04-02
  • 如何查看oracle统计信息收集
    本篇内容主要讲解“如何查看oracle统计信息收集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何查看oracle统计信息收集”吧!查看统计信息收集时间:al...
    99+
    2024-04-02
  • 如何查看统计信息是否成功收集
    可通过dba_ind_statistics和dba_tab_statistics中的LAST_ANALYZED字段,观察是否完成了统计信息的收集,只有完成的收集工作才会记录在这两个视图中。 测试过程如下(...
    99+
    2024-04-02
  • oracle统计信息查看与收集的方法是什么
    这篇文章主要讲解了“oracle统计信息查看与收集的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle统计信息查看与收集的方法是什么”吧!...
    99+
    2024-04-02
  • Oracle 统计信息收集
    Oracle 统计信息收集...
    99+
    2024-04-02
  • ORACLE 收集统计信息
    今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来。...
    99+
    2023-06-06
  • 微课sql优化(8)、统计信息收集(6)-统计信息查询
    1、关于查询统计信息 dba_tables...
    99+
    2024-04-02
  • 怎么收集oracle统计信息
    本篇内容主要讲解“怎么收集oracle统计信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么收集oracle统计信息”吧!收集oracle统计信息优化器统计...
    99+
    2024-04-02
  • 启用与禁用统计信息自动收集
    适用于11g与12c 点击(此处)折叠或打开 ...
    99+
    2024-04-02
  • MySQL中怎么收集统计信息
    MySQL中怎么收集统计信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 一、手动  ...
    99+
    2024-04-02
  • 如何查看redis集群信息
    这篇文章将为大家详细讲解有关如何查看redis集群信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。提示:本文中的IP是指安装redis的服务器的IP,password是...
    99+
    2024-04-02
  • 数据库中如何查看统计信息
    小编给大家分享一下数据库中如何查看统计信息,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! set echo ...
    99+
    2024-04-02
  • MySQL5.5中怎么统计信息并收集
    本篇内容主要讲解“MySQL5.5中怎么统计信息并收集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL5.5中怎么统计信息并收集”吧! ...
    99+
    2024-04-02
  • 如何理解ORACLE表统计信息与列统计信息、索引统计信息
    如何理解ORACLE表统计信息与列统计信息、索引统计信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 ...
    99+
    2024-04-02
  • Oracle 11g收集多列统计信息详解
    前言 通常,当我们将SQL语句提交给Oracle数据库时,Oracle会选择一种最优方式来执行,这是通过查询优化器Query Optimizer来实现的。CBO(Cost-Based Optimizer)是...
    99+
    2024-04-02
  • Oracle 11g怎么收集多列统计信息
    这篇文章主要介绍“Oracle 11g怎么收集多列统计信息”,在日常操作中,相信很多人在Oracle 11g怎么收集多列统计信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • linux如何查看系统信息
    目录一:cpu二:内存三:查看CPU位数(32 or 64)四:查看linux版本五:查看内核版本六:查看时区七:主机名查看主机名修改主机名八:查看selinux情况九:网络IP网关dns修改Host文件十:已经安装的软...
    99+
    2023-03-02
    linux查看系统信息 linux查看系统配置 linux查看机器配置命令
  • Oracle自动收集统计信息怎么实现
    这篇文章主要介绍“Oracle自动收集统计信息怎么实现”,在日常操作中,相信很多人在Oracle自动收集统计信息怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Orac...
    99+
    2024-04-02
  • oracle统计信息收集的方法是什么
    Oracle数据库中对表的统计信息可以通过以下方法进行收集: 自动统计信息收集:Oracle数据库会自动收集表的统计信息,以便优...
    99+
    2024-04-09
    oracle
  • Ubuntu中如何查看系统信息
    在Ubuntu中,您可以使用以下方法查看系统信息: 使用终端命令:您可以在终端中运行以下命令来查看系统信息: uname -a ...
    99+
    2024-03-12
    Ubuntu
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作