首页 > 数据库 >oracle 统计信息查看与收集

oracle 统计信息查看与收集

时间:2023-06-25 14:37:02浏览次数:40  
标签:10 00 收集 查看 WINDOW SQL oracle TABLE name


一、查看表统计信息

alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
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>


标签:10,00,收集,查看,WINDOW,SQL,oracle,TABLE,name
From: https://blog.51cto.com/prudentwoo/6545692

相关文章

  • Oracle 11gR2 使用RMAN Duplicate复制数据库
    Oracle11gR2 使用RMANDuplicate复制数据库 作者:吴伟龙 PrudentWoo  前言:    上周刚做完一个项目,用户要求RAC的数据库能够自动备份到另外一个单节点上,单节点能够正常拿起来就能用。当时跟他们讨论的是用ADG来做,但通过描述后,用户觉得如果要人工干预的话太麻烦,它不想做......
  • Oracle 安装报SGA size can not be greater than maximum shared memory segment size
    问题现象:问题分析:        从问题现象上来看可以比较清晰的看出是因为系统的内核参数调整问题,导致无法分配正确的内存给SGA;那么这种情况通常是由于我们的/etc/sysctl.conf中配置的内存信息和实际内存信息不符合导致。 我们的物理内存的大小为2G,swap内存的大小为4G;[root@d......
  • oracle 表空间利用率的几种查询方法
    --查询表空间使用情况SELECTUpper(F.TABLESPACE_NAME)"表空间名",D.TOT_GROOTTE_MB"表空间大小(M)",D.TOT_GROOTTE_MB-F.TOTAL_BYTES"已使用空间(M)",To_char(Round((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D......
  • 探索Oracle之LogMiner 最佳实践一
    探索Oracle之LogMiner最佳实践一作者:吴伟龙PrudentWoo示例:    这是一个LogMiner示例配置。在这个图中,位于波士顿的源数据库生成重做日志文件,这些文件被归档并发送到旧金山的数据库。已将LogMiner字典提取到这些重做日志文件中。LogMiner将实际分析重做日志文件的挖掘数据库......
  • 探索Oracle之数据库升级四 11.2.0.4.0 PSU 11.2.0.4.3
    探索Oracle之数据库升级四11.2.0.4.0PSU11.2.0.4.3一、 检查当前数据库PSU号:[oracle@db01~]$cd/DBSoft/Product/11.2.4/db_1/OPatch/[oracle@db01OPatch]$lscrsdocsemdpatch.pljlibocmopatchopatch.batopatchdiagopatchdiag.batopatch.iniopatch.p......
  • 探索Oracle之数据库升级八 12c Downgrade 11gR2
    探索Oracle之数据库升级八12cDowngrade11gR2前言:      我们前面已经完成了11gR2upgradeto12c 的升级,整个过程还是比较顺利的,虽然和以前版本升级有些不太一样,但是整个难度不是太大,但是由于太多的特性不同,大大的加长了升级的时间。       但是对于Oracle12c降回......
  • 容器日志收集与管理:让日志无处可逃
    本文将详细介绍Kubernetes里对容器日志的处理方式。首先需要明确,Kubernetes里对容器日志的处理方式都叫作cluster-level-logging,即这个日志处理系统与容器、Pod以及节点的生命周期都完全无关。这种设计当然是为了保证无论容器不工作、Pod被删除,甚至节点宕机,依然可以正常获取......
  • 2.nacos-client源码及查看
    nacos-client.2.2.1-RC.SDK查看源码官网JAVASDK链接主要内容<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>${version}</version></dependency>问题:1.获取配置api是获取快照......
  • linux查看cpu信息
    查看CPU信息(型号)1cat/proc/cpuinfo|grepname|cut-f2-d:|uniq-c #查看物理CPU个数1cat/proc/cpuinfo|grep"physicalid"|sort|uniq|wc-l #查看每个物理CPU中core的个数(即核数)1cat/proc/cpuinfo|grep"cpucores"|uniq #查看逻辑CP......
  • C#-SQLHelper(三)_Oracle
    SqlHelper工具类/***┌──────────────────────────────────────────────────────────────┐*│描述:Oracle数据库的操作工具类*│作者:执笔小......