oracle差异收集明细,Oracle收集表的数据与统计信息差异
有时候有这样的烦恼,由于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收集表的数据与统计信息差异相关推荐
- 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据
本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...
- 如何查看表和索引的统计信息
如何查看表和索引的统计信息 原文:如何查看表和索引的统计信息 这几天要求做一个服务器的统计信息,主要针对表和索引.下面我就简单分享几个查询数据表和索引统计信息的方法: 1.使用T-SQL 语句实现: ...
- 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) ...
- oracle表交集并集,Oracle 取两个表中数据的交集并集差异集合
Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...
- oracle关联查询取交集,Oracle 取两个表中数据的交集并集差异集合
Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...
- oracle 多个表取并集,Oracle?取两个表中数据的交集并集差异集合
Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集 ...
- 【oracle】如何恢复误删的表记录数据
1.概述 昨天误删了一张表中的两行数据,之后进行了其他操作,今天想把它恢复过来 --开启行移动功能 alter table 表名 enable row movement; --恢复表数据 flashb ...
- Oracle备份提示,EXP-00091: 正在导出有问题的统计信息。
EXP-00091: 正在导出有问题的统计信息 点我,点我~ 转载于:https://www.cnblogs.com/tangshengwei/p/7080913.html
- oracle收集统计计划,oracle收集统计信息之analyze
oracle收集统计信息之analyze 1.analyze 收集表,索引的统计信息,现在oracle不推荐用analyze收集统计信息 收集表的统计信息Analyze table tablename ...
最新文章
- 5G NGC — CAPIF 网络能力开放框架
- java完整程序_求一个完整的java程序
- HBase单机环境搭建
- Swift学习之map、flatMap、filter、reduce的使用
- java delphi 三层_三层架构delphi+Java+Oracle模式的实现
- .net显示今天农历的代码
- C#高级应用之CodeDomProvider引擎篇 .
- c#學習筆記--Visual Studio 使用
- [原创]CAN总线数据计算器V1.01
- python实训报告5000字_20193420 实验一 《Python程序设计》实验一报告
- matlab简单分析信号调制解调
- JAVA游戏——潜艇大战
- clearcase命令
- Flash Builder实用快捷键集锦
- 银联支付证书下载及导出流程(带图)
- redis的二进制安全机制理解
- Java混元功法_陈式太极心意混元 入门功法---太极内功 1
- 机械电子工程和计算机联系应用,论机械电子技术与计算机的融合发展
- MATLAB 自动数独求解器(导入图片自动求解)
- nicetool好工具_外贸精英提高工作效率的8个黑科技工具
热门文章
- mysql查询条件是小数 查不到6.28_28.mysql数据库之查询
- sql语句 int(11)含义误区
- C和C++结构体区别
- python文件操作小总结
- python3 struct.pack方法报错argument for 's' must be a bytes object
- python中的以简单例子解释函数参数、函数定义、函数返回值、函数调用
- Page9:结构分解以及系统内部稳定和BIBO稳定概念及其性质[Linear System Theory]
- 用groovy采集网页数据
- 表示探索、探究的几个词
- Commons codec jar包详解