有时候有这样的烦恼,由于dmp增量到数据库中,或是大批量数据操作后没有收集表的统计信息,导致数据库性能慢。要手工写脚本检查。

drop table gather_tcount;

create table gather_tcount

(

TABLE_NAME  VARCHAR2(30) not null,

gather_time date,

num_rows    number,

user_table_num_rows number

);

comment on table GATHER_TCOUNT

is '统计表的数据量,差距太大的需要收集统计信息';

alter table GATHER_TCOUNT

add constraint pk_gt_name_t primary key (TABLE_NAME, GATHER_TIME);

create or replace procedure p_gather_tcount

as

--统计实际表中数据量和统计信息表中数据量差异

--如果是重新统计,需要先清空gather_tcount的内容

--如果是断点续统计,不需要清空gather_tcount的内容

v_count number;

v_temp number;

v_tabname_temp varchar2(30);

begin

for c_rows in(select s.table_name,s.num_rows

from user_tables s  where s.table_name not like '%BAK%'

and s.table_name not like 'BK%' and

s.table_name not like '%TEMP')--过滤掉备份表

loop

v_tabname_temp := c_rows.table_name;

select count(1) into v_temp from gather_tcount where table_name = c_rows.table_name;

--如果是断点续统计,则不需要重新count表

if(v_temp =0) then

execute immediate 'select count(1) from '||c_rows.table_name into v_count;

execute immediate 'insert into gather_tcount(TABLE_NAME,gather_time,

num_rows,user_table_num_rows) values(:1,:2,:3,:4)'

using c_rows.table_name,sysdate,v_count,c_rows.num_rows;

commit;

end if;

end loop;

exception when others then

execute immediate 'insert into gather_tcount(TABLE_NAME,gather_time,

num_rows,user_table_num_rows) values(:1,:2,:3,:4)'

using v_tabname_temp,sysdate,sqlcode,sqlcode; --错误的先中断

commit;

end;

call p_gather_tcount(); select * from gather_tcount;

oracle差异收集明细,Oracle收集表的数据与统计信息差异相关推荐

  1. 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据

    本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...

  2. 如何查看表和索引的统计信息

    如何查看表和索引的统计信息 原文:如何查看表和索引的统计信息 这几天要求做一个服务器的统计信息,主要针对表和索引.下面我就简单分享几个查询数据表和索引统计信息的方法: 1.使用T-SQL 语句实现: ...

  3. oracle 数据库执行 alter table rename to 后表及索引的统计信息变化

    os: centos 7.4 db: oracle 11.2.0.4 版本 # cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) ...

  4. oracle表交集并集,Oracle 取两个表中数据的交集并集差异集合

    Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...

  5. oracle关联查询取交集,Oracle 取两个表中数据的交集并集差异集合

    Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...

  6. oracle 多个表取并集,Oracle?取两个表中数据的交集并集差异集合

    Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...

  7. 【oracle】如何恢复误删的表记录数据

    1.概述 昨天误删了一张表中的两行数据,之后进行了其他操作,今天想把它恢复过来 --开启行移动功能 alter table 表名 enable row movement; --恢复表数据 flashb ...

  8. Oracle备份提示,EXP-00091: 正在导出有问题的统计信息。

    EXP-00091: 正在导出有问题的统计信息 点我,点我~ 转载于:https://www.cnblogs.com/tangshengwei/p/7080913.html

  9. oracle收集统计计划,oracle收集统计信息之analyze

    oracle收集统计信息之analyze 1.analyze 收集表,索引的统计信息,现在oracle不推荐用analyze收集统计信息 收集表的统计信息Analyze table tablename ...

最新文章

  1. 5G NGC — CAPIF 网络能力开放框架
  2. java完整程序_求一个完整的java程序
  3. HBase单机环境搭建
  4. Swift学习之map、flatMap、filter、reduce的使用
  5. java delphi 三层_三层架构delphi+Java+Oracle模式的实现
  6. .net显示今天农历的代码
  7. C#高级应用之CodeDomProvider引擎篇 .
  8. c#學習筆記--Visual Studio 使用
  9. [原创]CAN总线数据计算器V1.01
  10. python实训报告5000字_20193420 实验一 《Python程序设计》实验一报告
  11. matlab简单分析信号调制解调
  12. JAVA游戏——潜艇大战
  13. clearcase命令
  14. Flash Builder实用快捷键集锦
  15. 银联支付证书下载及导出流程(带图)
  16. redis的二进制安全机制理解
  17. Java混元功法_陈式太极心意混元 入门功法---太极内功 1
  18. 机械电子工程和计算机联系应用,论机械电子技术与计算机的融合发展
  19. MATLAB 自动数独求解器(导入图片自动求解)
  20. nicetool好工具_外贸精英提高工作效率的8个黑科技工具

热门文章

  1. mysql查询条件是小数 查不到6.28_28.mysql数据库之查询
  2. sql语句 int(11)含义误区
  3. C和C++结构体区别
  4. python文件操作小总结
  5. python3 struct.pack方法报错argument for 's' must be a bytes object
  6. python中的以简单例子解释函数参数、函数定义、函数返回值、函数调用
  7. Page9:结构分解以及系统内部稳定和BIBO稳定概念及其性质[Linear System Theory]
  8. 用groovy采集网页数据
  9. 表示探索、探究的几个词
  10. Commons codec jar包详解