百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

关于oracle对象统计信息锁定的解决办法(ORA-20005/ORA-38029)

mhr18 2024-10-09 12:03 25 浏览 0 评论

概述

之前在对某张表收集统计信息时报错ORA-20005:object statistics are locked(stattype=all),下面记录下报错的问题和怎么解决的过程,做个备忘!


问题

因为之前从11g R2里导出了几张表,然后导入到11g R2中,当时是导入成功的,然后前段时间要收集下这些表的信息,结果发现好几张表都没法收集,用DBMS_STATS包显示ORA-20005:object statistics are locked (stattype = ALL),用Analyze命令显示ORA-38029: 对象统计信息已锁定。

报错截图如下:


解决:

这里解决思路其实就是解锁,可以从两个层面去处理:

1、解锁Schema

DBMS_STATS.UNLOCK_schema_STATS(user);


2、解锁单个对象

1)先查出被锁定的表

select table_name from user_tab_statistics where stattype_locked is not null;

然后再解锁对象

exec dbms_stats.unlock_table_stats(user,'T_PX_ZG_PXNR');


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下的表,防止误操作。


特别注意:

Oracle为什么会要锁定住统计信息?

一般而言,这是为了稳定执行计划,因为在Oracle 10g以上,Oracle默认会自动收集统计信息,要想锁住统计信息,请使用LOCK_SCHEMA_STATS、LOCK_TABLE_STATS包。


测试是否解决

重新分析表

BEGIN
DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'NWPP_TEST',
 TABNAME => 'T_PX_ZG_PXNR',
 ESTIMATE_PERCENT => 100,
 METHOD_OPT => 'for all columns size skewonly',
 CASCADE => TRUE);
END;
/

可以看到已经没有报错了。


后面会分享更多工作中常见的问题,感兴趣的朋友可以关注下!!

相关推荐

盘点Java中最没用的知识⑤:这3个老古董你还在代码里“考古”?

一、Stack类:“继承Vector”的历史bug,为何成了性能拖油瓶?你是不是在学Java集合时,老师说过“栈结构用Stack类”?是不是在老代码里见过"newStack<>(...

Gemini 2.5 Pro 0506发布,编程最强大模型, 碾压 Claude3.7 sonnent

一、Gemini2.5Pro(I/Oedition)发布1、为何叫I/Oedition?谷歌史上最强编程模型Gemini2.5Pro(I/Oedition)发布,具体型号是Gemin...

如何让无聊变得有趣(附本人大量美图)

文/图:金冬成在这条长300公里的公路上,我已经来回往返了无数次。3小时车程,一个人,想想都是多么无聊的一件事。其实,人生道路上,类似这种无聊的事情有很多很多。无聊的事情、枯燥的工作,往往让我们容易失...

Oracle 推出 Java 24,增强 AI 支持和后量子加密

导读:Oracle宣布正式发布Java24,该语言增加了几个新功能,例如StreamGatherersAPI和Class-FileAPI的可用性,以及专门为AI推理和量子安全设计...

公司ERP突然变慢?“索引重建”这颗“药”可不能随便吃!

各位老板、IT小哥、财务小姐姐,有没有遇到过公司ERP系统突然卡顿得像“老爷车”,点个按钮半天没反应,急得直跺脚?这时候,可能有人会跳出来说:“我知道,重建一下数据库索引就好了!”听起来像个“神操作”...

基于Java实现,支持在线发布API接口读取数据库,有哪些工具?

基于java实现,不需要编辑就能发布api接口的,有哪些工具、平台?还能一键发布、快速授权和开放提供给第三方请求调用接口的解决方案。架构方案设计:以下是一些基于Java实现的无需编辑或只需少量编辑...

作为后端开发,你知道MyBatis有哪些隐藏的 “宝藏” 扩展点吗?

在互联网大厂后端开发领域,MyBatis作为一款主流的持久层框架,凭借其灵活的配置与强大的数据处理能力,广泛应用于各类项目之中。然而,随着业务场景日趋复杂、系统规模不断扩张,开发过程中常面临SQL...

SpringBoot集成Mybatis-Plus分页插件

一、官方介绍支持的数据库mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver,Phoenix,Gauss,clickhouse,Sybase,Oc...

深度分页为何让MySQL/Oracle集体“罢工”?

深夜,服务器突然报警!页面加载时间飙升10倍,数据库CPU直接爆表——罪魁祸首竟是一个看似无害的“分页查询”功能。无数开发者直到系统崩溃才惊觉:深度分页,正在无声吞噬你的数据库性能!一、现象直击:...

HPE 3PAR新增对3D NAND、Oracle加速支持

HewlettPackardEnterprise(HPE)在近日为其3PARStoreServ存储阵列增加了对3DNAND闪盘的支持,这将在某种程度上缓解客户购买其他存储厂商产品的情况。3D...

Innodb中的事务隔离级别和锁的关系

我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于...

巧用 VHD 实现多 Windows 系统共存:从原理到实战

在数字化办公与多元需求交织的时代,许多用户需要在同一台计算机上使用多个Windows系统,以满足不同工作场景、软件兼容性或开发测试的需求。传统的多系统安装方法往往需要对硬盘进行复杂分区,或是利用虚...

为什么越来越多Linux桌面系统选择Btrfs文件系统?

在过去很长一段时间里,Linux桌面用户安装系统时,大多数默认选项都是老牌文件系统EXT4。它稳定、简单、可靠,确实功不可没。但最近你有没有发现?越来越多的Linux桌面发行版开始默认使用一个...

SQLite:小众?其实它比你想象的更普及,连这个领域都有人用!

2000年,一艘美国军舰上,数据库服务器频繁宕机,弹出“无法连接数据库”的致命报错。程序员RichardHipp被“背锅”后灵光一现:“为什么不能直接从硬盘读数据?”——这句疑问,拉开了SQLite...

每日学习“IT”是什么呢?(每天学习it小技巧)

IT是信息技术(InformationTechnology)的简称,它是一个广泛的领域,涉及到利用计算机、网络通信技术、软件等来存储、处理、传输和获取信息。计算机硬件硬件组成部分:包括中央处理器(...

取消回复欢迎 发表评论: