当前位置: 首页 > news >正文

Oracle统计信息手动收集与修改

Oracle统计信息手动收集与修改

  • 检查统计信息
  • 收集统计信息
    • Schema统计信息收集
    • 表统计信息收集
  • 修改统计信息
  • 锁定统计信息

检查统计信息

查看表统计信息是否过期:

select owner,table_name,partition_name from dba_tab_statistics 
where STATTYPE_LOCKED is null and STALE_STATS='YES' and owner='XXX';select table_name,partition_name from user_tab_statistics 
where STATTYPE_LOCKED is null and STALE_STATS='YES';

其中,stattype_locked表示锁定的统计信息类型(data/cache/all),stale_stats表示统计信息是否过期。

收集统计信息

Schema统计信息收集

收集某个用户下所有数据库对象的统计信息:

BEGINdbms_stats.gather_schema_stats(ownname => 'XXX',     --用户Schema名称estimate_percent => 60,               --取样率(不能超过100)method_opt   => 'FOR ALL COLUMNS SIZE AUTO',degree 	  => 32,                   --并行度(对于只能串行的某些内部SQL不生效)cascade	  => true,                 --收集表统计信息的同时也收集索引统计信息options          => 'GATHER AUTO',    --自动收集必要的统计信息no_invalidate	  => FALSE);           --使shared pool中统计信息相关的游标立即失效
END;
/

注意:

  • estimate_percent:收集表统计信息取样的行数占总行数的比率。取值范围在0.000001到100之间,默认由DBMS_STATS.AUTO_SAMPLE_SIZE参数决定。
  • method_opt:直方图统计信息收集方法。
    • 默认为FOR ALL COLUMNS SIZE AUTO,表示Oracle自己决定列直方图的收集方法;
    • 取值为FOR ALL COLUMNS SIZE REPEAT时,仅对已有直方图统计信息的列收集直方图。
  • degree:统计信息收集的并行度,默认值为NULL。
    • 不要超过parallel_max_servers参数的值。
    • 对于只能串行的某些内部SQL不生效。
  • options:收集哪些表的统计信息。
    • 默认为GATHER,收集指定Schema下所有对象的统计信息;
    • 取值为GATHER AUTO时,自动收集必须的统计信息,除no_invalidate以外的绝大多数参数都会被忽略;
    • 取值为GATHER STALE时,仅对统计信息已过期的对象收集统计信息;
    • 取值为GATHER EMPTY时,仅对没有统计信息的对象收集统计信息。
  • no_invalidate:是否使shared pool中统计信息相关的游标立即失效。默认为DBMS_STATS.AUTO_INVALIDATE,数据库自己决定。
    • 取值为TRUE时,收集完统计信息后,不会使共享池中的游标立即失效,即使共享游标已经不是最优的执行计划。原有的执行计划只有在被age out或者flush out之后,才会生成新的执行计划;
    • 取值为FALSE时,收集完统计信息后,使共享池中的游标立即失效,可能在短时间内造成大量硬解析。

表统计信息收集

收集单张表的统计信息:

BEGINdbms_stats.gather_table_stats(ownname	 => 'XXX',tabname  => 'XXX_TABLE_NAME',             --表名partname => 'P11',                        --分区名(可以省略)estimate_percent => 60,method_opt	      => 'FOR ALL COLUMNS SIZE REPEAT',degree 	      => 32,cascade	      => true,no_invalidate	  => FALSE);
END;
/

示例:

exec dbms_stats.gather_table_stats('XX_SCHEMA_NAME','XX_TABLE_NAME',cascade=>true,no_invalidate=>false);

修改统计信息

对于某些无法准确收集统计信息、并且行数基本不变的表,可以手动指定行数统计信息。

手动修改单张表的统计信息:

BEGINdbms_stats.set_table_stats(ownname => 'XXX',tabname  => 'XXX_TABLE_NAME',      --表名partname => 'P11',                 --分区名(可以省略)numrows  => 10000,                 --手动指定表或分区中行数的统计信息no_invalidate => FALSE);
END;
/

示例:

exec dbms_stats.set_table_stats('XX_SCHEMA_NAME','XX_TABLE_NAME',numrows=>20000,no_invalidate=>false);

类似地,也可以通过DBMS_STATS.SET_COLUMN_STATS来手动指定列的统计信息(distcnt、density、nullcnt、avgclen等)。

锁定统计信息

手动修改统计信息后,如果不想表的统计信息再发生变化,还可以锁定数据库对象的统计信息。

示例:

--锁定表的统计信息
exec dbms_stats.lock_table_stats(ownname => 'XX_SCHEMA_NAME',tabname => 'XX_TABLE_NAME');--锁定整个Schema下所有对象的统计信息
exec dbms_stats.lock_schema_stats(ownname => 'XX_SCHEMA_NAME');

References
[1] https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_STATS.html#GUID-3B3AE30F-1A34-4BFE-A326-15048F7E904F
[2] http://blog.itpub.net/17203031/viewspace-1067620/

相关文章:

Oracle统计信息手动收集与修改

Oracle统计信息手动收集与修改 检查统计信息收集统计信息Schema统计信息收集表统计信息收集 修改统计信息锁定统计信息 检查统计信息 查看表统计信息是否过期: select owner,table_name,partition_name from dba_tab_statistics where STATTYPE_LOCKED is null a…...

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。 二、企业通过数字化转型,不仅有利于优化业务流程、提升经营管…...

ubuntu安装freeswitch 1.10.10

1、安装ffmpeg4.2 1.1、安装依赖库 sudo apt install yasm libogg-dev pkg-config libopus-dev libvpx-dev libx264-dev libx265-dev libfdk-aac-dev libsdl2-dev libfdk-aac-dev libmp3lame-dev libopencore-amrwb-dev libopencore-amrnb-dev libvorbis-dev libxvidcore-dev…...

什么类型的企业适合应用RPA?

在如今快速发展的商业环境中,企业不断面临挑战和机会。数字化转型不仅是一个选项,而是一个必要条件,尤其对于具有特定需求和挑战的企业来说。但究竟哪些类型的企业最适合通过RPA(Robotic Process Automation)进行数字化…...

LuatOS-SOC接口文档(air780E)-- fdb - kv数据库,掉电不丢数据

fdb.kvdb_init(name, partition) 初始化kv数据库 参数 传入值类型 解释 string 数据库名,当前仅支持env string FAL分区名,当前仅支持onchip_fdb 返回值 返回值类型 解释 boolean 成功返回true,否则返回false 例子 -- fdb库基于 flashdb , 再次表示感谢. if fdb…...

世界500强都摒弃使用FTP的真实原因

FTP是一种最早的文件传输协议,它在互联网上广泛使用,但是它也存在很多缺点和风险,导致许多世界500强企业都摒弃了使用FTP。本文将从以下几个方面来分析FTP的不足,以及世界500强企业的选择和替代方案。 FTP的缺点和风险 在安全性方…...

医院电子病历编辑器,EMRE(EMR Editor)源码

电子病历主要面向医院机构医生、护士,提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式,通过浏览器方式访问和使用系统功能,提供电子病历在线制作、管理和使用的一体化电子病历解决方案,为医疗…...

分享从零开始学习网络设备配置--任务3.8 使用动态路由OSPF实现网络连通

任务描述 某公司随着规模的不断扩大,路由器的数量在原有的基础上有所增加。网络管理员发现原有的路由协议已经不适合现有的网络环境,可实施动态路由OSPF协议配置,实现网络中所有主机之间互相通信。因为动态路由OSPF协议可以实现快速收敛&…...

构建高效的同城O2O外卖系统APP:技术要点和最佳实践

时下,消费者的需求不断演变,迫使外卖服务提供商不断改进其技术和服务。本文将讨论如何构建一个高效的同城O2O(Online-to-Offline)外卖系统APP,突出了关键的技术要点和最佳实践。 一、用户界面设计 1.1 直观 简单直观…...

【残差网络ResNet:残差块输入输出形状控制】

【残差网络ResNet:残差块输入输出形状控制】 1 残差块输入输出形状控制程序2 查看经典的ResNet18模型 1 残差块输入输出形状控制程序 参考链接:https://arxiv.org/pdf/1512.03385.pdf 这是一个基本的残差块,由两层卷积组成前向传播 一层卷积…...

【编译和链接——详解】

1. 翻译环境和运行环境💻 在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。 第2种是执⾏环境,它⽤于实际执⾏代码。 2. 翻译环境💻 那翻译环境是怎么将…...

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录 前言 一、什么是爬虫代理 IP 二、代理 IP 的分类 1.透明代理 2.匿名代理 3.高匿代理 三、如何获取代理 IP 1.免费代理网站 2.付费代理服务 四、如何使用代理 IP 1.使用 requests 库 2.使用 scrapy 库 五、代理 IP 的注意事项 1.代理 IP 可能存在不稳定性 2…...

酒店预订小程序制作详细步骤解析

" 随着移动设备的普及和互联网技术的不断发展,小程序成为了一个备受关注的应用领域。特别是在酒店预订行业,小程序可以为酒店带来更多的客源和方便快捷的预订服务。下面是酒店预订小程序的制作详细步骤解析。 第一步:注册登录【乔拓云】…...

Intel汇编语言程序设计(第7版)第六章编程学习过程中写的小例子

1. 根据书上的例子, 自己写的4个过程, 改了一部分 include irvine32.inc includelib irvine32.lib include msvcrt.inc includelib msvcrt.lib.data dwNum0 DWORD 15 dwNum1 DWORD 21PDWORD TYPEDEF PTR DWORD dwNumAry DWORD 25, 39, 14, 59 NumAryLen DWORD LENGTHOF dwNum…...

ElementUI之动态树+数据表格+分页

目录 一、动态树 1.1 定义 1.2 导航菜单绑定 1.3 面板内容 1.4 效果展示 二、动态表格 2.1 定义 2.2 搜索框 2.3 数据表格 2.4 分页条 2.5 功能实现 一、动态树 1.1 定义 动态树通常是指在网页或应用程序中创建可展开和折叠的树形结构,其中树的节点是动…...

ReferenceError: primordials is not defined错误解决

问题场景: 从github上拉了一个项目,想要学习一下,在起服务的时候出现了这个问题。 造成的原因: gulp 与 node 版本起冲突。 1)首先,安装 gulp,查看版本; npm install gulp -g g…...

【Element-UI】实现动态树、数据表格及分页效果

一、导言 1、引言 在现代软件开发中,动态树、数据表格以及分页效果成为了许多应用的核心需求。随着业务规模和复杂性的增加,我们往往需要展示大量的层级结构数据,并且实现交互性强且高效的操作。 动态树提供了一种组织结构清晰、可伸缩的展示…...

解决仪器掉线备忘

网络管控越来越严格,老的Mac模式连接的仪器经常断开,要么是网络没活动被断开TCP了,要么是网络波动无法保持TCP。每次重启仪器控制很麻烦,基于之前用M写http服务的基础上改进仪器接口连接。 参照之前实现http服务的逻辑 最终逻辑 …...

Java面向对象高级

文章目录 面向对象高级Object类的常用方法常用方法一(面向对象阶段)** 和 equals 的区别** 关键字native**单例设计模式(Singleton)**前情回顾(学习基础)静态修饰符Static设计模式概念开发步骤**两种实现方…...

渗透测试信息收集方法和工具分享

文章目录 一、域名收集1.OneForAll2.子域名挖掘机3.subdomainsBurte4.ssl证书查询 二、获取真实ip1.17CE2.站长之家ping检测3.如何寻找真实IP4.纯真ip数据库工具5.c段,旁站查询 三、端口扫描1.端口扫描站长工具2.masscan(全端口扫描)nmap扫描3.scanport4.端口表5.利…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...