精华内容
下载资源
问答
  • 收集oracle统计信息.pdf

    2021-09-14 17:35:30
    收集oracle统计信息.pdf
  • ORACLE统计报表

    千次阅读 2019-04-18 20:31:01
    ORACLE统计报表 刚进公司没多久的小菜鸟,就让我统计一份报表,写了一个礼拜的sql也没搞出来,后来大神给了篇学习文档才搞出来的,唉,是真的难…咳咳…不煽情了… 需求: 根据分公司统计某项目的阶段进度情况 技术: ...

    ORACLE统计报表

    刚进公司没多久的小菜鸟,就让我统计一份报表,写了一个礼拜的sql也没搞出来,后来大神给了篇学习文档才搞出来的,唉,是真的难…咳咳…不煽情了…
    需求:
    根据分公司统计某项目的阶段进度情况

    技术:

    1. GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。
    2. ROLLUP函数 和 CUBE函数使用

    代码:

    SELECT *
      FROM (SELECT CASE
                     WHEN GROUPING(BR.ORGID) = 1 THEN
                      '合计'
                     ELSE
                      MIN(BR.ORGNAME)
                   END 分公司,
                   CASE
                     WHEN GROUPING(BR.ORGID) = 1 THEN
                      999999
                     ELSE
                      MIN(BR.ORDER)
                   END 排序,
                   SUM(T.JDA) 阶段一完成数,
                   SUM(T.JDB) 阶段二完成数,
                   SUM(T.JDC) 阶段三完成数,
                   SUM(T.JDD) 阶段四完成数
              FROM (SELECT F.PID,
                           O.ORGID,
                           O.ORDER,
                           DECODE(ES.A, NULL, 0, 1) JDA,
                           DECODE(ES.B, NULL, 0, 1) JDB,
                           DECODE(ES.C, NULL, 0, 1) JDC,
                           DECODE(ES.D, NULL, 0, 1) JDD
                      FROM PROJECT_TABLE F, SCHEDULE_TABLE ES, ORGTABLE O
                     WHERE F.PID = ES.PID
                       AND F.ORGID = O.ORGID
                       AND F.PID = ?) T,
                   ORGTABLE BR
             WHERE BR.ORGID = T.ORGID(+)
             GROUP BY ROLLUP(BR.ORGID)) TT
     ORDER BY TT.排序;
    
    

    结果集:
    在这里插入图片描述

    展开全文
  • 10.Oracle深度学习笔记——Oracle统计数据自动采集脚本.pdf
  • Oracle统计信息

    千次阅读 2018-11-20 20:23:38
    Oracle统计信息是存储在数据字典里的一组数据,从多个维度描述了oracle数据库里对象的详细信息。CBO会利用这些统计信息来计算目标SQL各种可能的、不同的执行路径成本,并从中选择一条成本值最小的执行路径来作为目标...

    统计信息概念及分类

    Oracle统计信息是存储在数据字典里的一组数据,从多个维度描述了oracle数据库里对象的详细信息。CBO会利用这些统计信息来计算目标SQL各种可能的、不同的执行路径成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划

    oracle数据库里的统计信息分为以下6种类型:

    • 表的统计信息:描述表的详细信息,如记录数、表块(表里的数据块数量)的数量、平均行长度等
    • 索引的统计信息:描述索引的详细信息,如索引的层级、叶子块的数量、聚簇因子等
    • 列的统计信息:描述列的详细信息,如列的distinct值的数量、列的null值数量、列的最小最大值及直方图
    • 系统统计信息:描述数据库服务器的系统处理能力,包含了CPU和I/O这两个维度,借助于系统统计信息,oracle可以更清楚地知道目标数据库服务器的实际处理能力
    • 数据字典统计信息:描述数据字典基表(如TAB$、IND$等)、数据字典基表上的索引,以及这些数据字典基表的列的详细信息,描述上述数据字典基表的统计信息与描述普通表、索引、列的统计信息没有本质区别
    • 内部对象统计信息:描述oracle数据库里的一些内部表(如X$系列表)的详细信息,它的维度和普通表的统计信息的维度类似,只不过其表块的数量为0,因为X$系列表实际上只是oracle自定义的内存结构,并不占用实际的物理存储空间

     

    收集与查看方法

    1. 推荐使用DBMS_STATS包收集统计信息

    dbms_stats.gather_table_stats
    dbms_stats.gether_index_stats
    dbms_stats.gather_schema_stats
    dbms_stats.gather_database_stats
    
    exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T2',estimate_percent=>15,method_opt=>'FOR TABLE',cascade=>false);--估算模式,采样比例15%

    2. DBMS_STATS包相对于ANALYZE的优势

    • ANALYZE命令不能正确地收集分区表的统计信息,而DBMS_STATS包可以。ANALYZE只会收集最低层次对象的统计信息,然后推到和汇总出高一级的统计信息,比如对于有子分区的分区表而言,它只会先收集子分区统计信息,然后再汇总、推导出分区和表级的统计信息。有的统计信息是可以从当前对象的下一级对象进行汇总后得到的,比如表的总行数,可以由各分区的行数相加得到。但有的统计信息则不能从下一级对象得到,比如列上的distinct值数量NUM_DISTINCT以及DENSITY等。
    • ANALYZE命令不能并行收集统计信息,而DBMS_STATS包可以。精确收集数据量很大的表的统计信息时,并行更省时。

    3. 查看统计信息:表级别DBA_TABLES、分区级别DBA_TAB_PARTITIONS、子分区级别DBA_TAB_SUBPARTITIONS统计信息

    或者执行脚本sosi.txt  http://www.dbsnake.net/books

     

    表的统计信息

     

    展开全文
  • 给大家分享Oracle 统计用户下表的数据量实现脚本,非常不错,具有参考借鉴价值,需要的朋友参考下吧
  • 主要给大家介绍了关于Oracle统计信息的导出导入测试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Oracle 统计各张表的记录数.pdf
  • ORACLE 统计男女数量

    千次阅读 2020-04-17 17:00:52
    ORACLE 统计男女数量 在写学校的大作业的时候,对oracle有的新的认识,虽然也碰了许多问题,在这里我总结了一些问题和需要注意的点,所有的例子都是来源于学校的作业,仅供参考!也希望大家可以在我这里少碰壁。谢谢...

    ORACLE 统计男女数量

    在写学校的大作业的时候,对oracle有的新的认识,虽然也碰了许多问题,在这里我总结了一些问题和需要注意的点,所有的例子都是来源于学校的作业,仅供参考!也希望大家可以在我这里少碰壁。谢谢大家!

    在这个例子中主要用到SELECT,COUNT, DECODE 和 GROUP BY;而其中,DECODE 和 Group BY 要及其注意!

    DECODE 函数

    DECODE 函数 :
    公式:

    decode(字段,条件1,返回值1,条件2,返回值)
    
    #嵌套实例 Nested Example
    count(decode(...))
    
    

    列的别名的使用
    列的别名使用在oracle里十分重要,帮助你得到想要的显示效果。

    GENDER 列全大写,不美观
    我们使用"AS “Gender”,记住别名一定要双引号!

    这样看起来美观多了

    展开全文
  • Oracle统计一天内每小时的数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可
  • 主要介绍了oracle统计时间段内每一天的数据,需要的朋友可以参考下
  • oracle统计信息被锁定处理

    千次阅读 2019-08-01 10:12:29
    oracle统计信息被锁定处理 基本现象 ORA-20005: object statistics are locked (stattype = ALL) 在进行SQL时,发现一个表的统计信息过旧,想要收集一个表的统计信息 然而信息报错如下: SQL> begin 2 dbms_stats...

    oracle统计信息被锁定处理

    基本现象

    ORA-20005: object statistics are locked (stattype = ALL)
    在进行SQL时,发现一个表的统计信息过旧,想要收集一个表的统计信息
    然而信息报错如下:
    SQL> begin
    2 dbms_stats.gather_table_stats(ownname => ‘DB’, tabname => ‘tbhrc0’,cascade => true);
    3 end;
    4 /
    begin
    *
    ERROR at line 1:
    ORA-20005: object statistics are locked (stattype = ALL)
    ORA-06512: at “SYS.DBMS_STATS”, line 24281
    ORA-06512: at “SYS.DBMS_STATS”, line 24332
    ORA-06512: at line 2

    分析

    此表的统计信息被锁定

    解锁统计信息:
    SQL> exec dbms_stats.unlock_table_stats(‘db’,‘tb0’);

    重新收集:

    重新收集统计信息:
    SQL> begin
    2 dbms_stats.gather_table_stats(ownname => ‘DB’, tabname => ‘tbh0’,cascade => true);
    3 end;
    4 /

    PL/SQL procedure successfully completed.

    再次查看表的统计 信息:
    SQL> select table_name,t.LAST_ANALYZED,t.STATTYPE_LOCKED from dba_tab_statistics t where t.table_name = ‘TBHRC0’;

    TABLE_NAME LAST_ANALYZE STATT


    TB0 31-JUL-19

    至此处理正常

    总结

    自动统计信息收集

    oracle 11g会自动收集统计信息
    自动收集的频率为:

    SQL> select t1.window_name, t1.repeat_interval, t1.duration
      2    from dba_scheduler_windows t1, dba_scheduler_wingroup_members t2
      3   where t1.window_name = t2.window_name
      4     and t2.window_group_name in
      5         ('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.
    

    周一到周五,每天22开始,持续时间为4h,所以
    周六至周日,每天6点

    查看开启自动统计信息收集

    SQL> select client_name,status from dba_autotask_client;
    
    CLIENT_NAME                                                      STATUS
    ---------------------------------------------------------------- --------
    auto optimizer stats collection                                  ENABLED
    auto space advisor                                               ENABLED
    sql tuning advisor                                               ENABLED
    

    auto optimizer stats collection 是自动统计信息收集任务,当前为开户状态

    禁止和启动自动统计信息收集
    禁止:

    exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    
    

    启用:

     exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    

    统计信息管理

    解锁一个用户的统计信息
    DBMS_STATS.UNLOCK_schema_STATS(user);

    解锁单个对象的统计信息
    1)被锁定统计信息的表
    select table_name from user_tab_statistics where stattype_locked is not null;
    然后再解锁对象
    exec dbms_stats.unlock_table_stats(user,‘表名’);
    2)直接生成sql脚本批量执行
    select ‘exec dbms_stats.unlock_table_stats(’’’||user||’’’,’’’||table_name||’’’);’ from user_tab_statistics where stattype_locked is not null;
    这里不在生成的sql中用动态的user是为了让执行者明确知道到底是解锁哪个schema下的表,防止误操作

    当统计信息收集不准确以及执行计划走偏的时候,有时候类似的需求,我们需要固定统计信息,在这种场景下,需要锁定统计信息的。
    敷衍dbms_stats.lock_table_stats来锁定统计信息

    删除统计信息
    exec dbms_stats.delete_table_stats(‘user’,‘t1’,cascade => TRUE);

    锁定统计信息
    exec dbms_stats.lock_table_stats(‘user’,‘t1’,cascade=>TRUE);

    改变统计信息的估算百分比
    exec dbms_stats.set_table_stats(‘TEST’,‘T1’,numrows=>10);

    收集表和索引统计信息
    exec dbms_stats.gather_table_stats(‘DB’, ‘T1’);
    exec dbms_stats.gather_index_stats(‘DB’, ‘T1_IDX1’);

    统计信息表
    ALL_TAB_STATISTICS displays optimizer statistics for the tables accessible to the current user.
    DBA_TAB_STATISTICS displays optimizer statistics for all tables in the database.
    USER_TAB_STATISTICS displays optimizer statistics for the tables owned by the current user. This view does not display the OWNER column.

    可以根据不同的schema粒度选择对应的schema来访问

    展开全文
  • ORACLE 统计分析

    千次阅读 2012-12-02 14:30:06
    ORACLE 统计分析 统计分析主要包括产生表及索引的统计信息 表的统计信息主要包括表的行数,每行的平均长度(字节),空闲块,统计时间等信息 索引的统计信息主要包括行数、层数、叶块数、统计时间等信息。 ...
  • 电信设备-一种Oracle统计信息自动收集方法.zip
  • oracle统计信息高可靠性保障技术;oracle统计信息高可靠性保障技术
  • 收集oracle统计信息

    万次阅读 2016-02-25 22:17:35
    收集oracle统计信息 优化器统计范围: 表统计; --行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN; 列统计; --列中唯一值的数量(NDV),NULL值的数量,数据分布;  --DBA_TAB_...
  • oracle统计sql优化与原理详解

    千次阅读 2018-06-26 14:41:06
    简介:oracle统计类sql的优化,此篇只讲count sum avg max min orderby,主要还是要知道索引存储列值和rowid的特性,我的博客里也有常用索引(树状索引)的详解。一.count(*)的优化直接上例子(假设test表有10w数据...
  • oracle统计每天数据量

    千次阅读 2016-09-12 14:34:18
    oracle统计每天数据量2013-5-1 213231 2013-5-2 324213按日做汇总啊: select trunc(datecol) 日期,sum(数量) 数量和,count(1) 数据量 from tablex where to_char(datecol,'yyyymm') = '201305' group by trunc...
  • oracle 统计表中的字段数量

    千次阅读 2017-12-22 09:09:17
    oracle 统计表中的字段数量select count(*) from dba_tab_columns where table_name=’你的表名’;
  • Oracle 统计数据库 表的个数和名字

    千次阅读 2015-08-05 10:01:16
    Oracle 统计数据库 表的个数和名字
  • oracle统计函数

    千次阅读 2018-04-02 08:36:09
    统计函数count(*) --- 对于count()函数而言 可以传递三类内容: *, 字段, distinct字段面试题:请问count(*) count(字段),count(distinct 字段)有什么区别如果列上存在null,那么null不统计,如果使用distinct , 那么列...
  • 详解Oracle统计信息

    千次阅读 2019-04-19 09:53:00
    优化器统计范围: 表统计; --行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN; 列统计; --列中唯一值的数量(NDV),NULL值的数量,数据分布; --DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_...
  • oracle 统计多个满足条件字段数量

    千次阅读 2017-09-30 10:37:44
    Oracle统计多个,满足条件的字段的数   Table:ABCTable a b c 1 2 1 2 1 3 3 1 2  www.2cto.com   统计a=1的有几个,b=1的有几个,c=1的有几个   1. select count(*) from A
  • ORACLE统计表记录数

    2011-08-25 16:22:41
    ORACLE 数据库中如何统计表记录数的过程说明
  • Oracle统计多种数据并以Map格式返回数据 在开发中遇到一个问题,需要查询并统计出多个字段在不同条件下的数据,以前可能只是单纯的返回某几个字段数据,在经过一番查找和自己的调试过后总结出来以下的办法,代码都是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,188
精华内容 58,875
关键字:

oracle统计