[z]dbms_stats.lock_table_stats对于没有统计信息的表分区同样有效
常见的分区表DDL如 split partition、add partition都会生成没有统计信息的表分区table partition,长期以来我对dbms_stats.lock_table_stats有一个错误的认识,即对于没有统计信息的分区,LOCK_STATS并不生效。 实际测试发现锁表统计信息对没有统计信息的分区同样有效,结果就是自动收集统计信息的作业不会收集这些实际没有统计信息的分区:
CREATE TABLE MacleanV
nologging
partition by range(object_id)
(partition p1 values less than (99999) tablespace users,
partition p2 values less than (maxvalue) tablespace users)
as select * from dba_objects where rownum=0; SQL> insert into macleanV select * from dba_objects; 51029 rows created. SQL> commit; Commit complete. SQL> exec dbms_stats.gather_table_stats('SYS','MACLEANV'); PL/SQL procedure successfully completed. SQL> select num_rows,blocks from dba_tables where table_name='MACLEANV'; NUM_ROWS BLOCKS
---------- ----------
51029 748 SQL> select partition_name,num_rows,blocks from dba_tab_partitions where table_name='MACLEANV'; PARTITION_NAME NUM_ROWS BLOCKS
------------------------------ ---------- ----------
P1 51029 748
P2 0 0 SQL> exec dbms_stats.lock_table_stats('SYS','MACLEANV'); PL/SQL procedure successfully completed. SQL> exec dbms_stats.gather_table_stats('SYS','MACLEANV');
BEGIN dbms_stats.gather_table_stats('SYS','MACLEANV'); END; *
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 15027
ORA-06512: at "SYS.DBMS_STATS", line 15049
ORA-06512: at line 1 SQL> alter table macleanv split partition p1 at (20001) into (partition p3, partition p4); Table altered. SQL> select partition_name,num_rows,blocks from dba_tab_partitions where table_name='MACLEANV'; PARTITION_NAME NUM_ROWS BLOCKS
------------------------------ ---------- ----------
P4
P2 0 0
P3 SQL> exec DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC; PL/SQL procedure successfully completed. SQL> select partition_name,num_rows,blocks from dba_tab_partitions where table_name='MACLEANV'; PARTITION_NAME NUM_ROWS BLOCKS
------------------------------ ---------- ----------
P2 0 0
P3
P4 SQL> exec DBMS_STATS.GATHER_DATABASE_STATS; PL/SQL procedure successfully completed. SQL> select partition_name,num_rows,blocks from dba_tab_partitions where table_name='MACLEANV'; PARTITION_NAME NUM_ROWS BLOCKS
------------------------------ ---------- ----------
P2 0 0
P3
P4
使用DBMS_STATS.LOCK_TABLE_STATS锁定相关统计信息
语句为:
EXECUTE DBMS_STATS.LOCK_TABLE_STATS (‘owner name’, ‘table name’);
查询锁定状态
SELECT stattype_locked FROM dba_tab_statistics
当锁定表的统计信息后,这个表相关的对象的统计信息也被锁定,比如列信息、直方图、索引的统计信息。
在锁定前,请在适当时刻对表的统计信息进行收集,并确认当前的统计信息是合适的。
在锁定后,请用刷新shared pool或grant/revoke等方法将表相关的SQL失效。
更多DBMS_STATS.LOCK_TABLE_STATS信息可以参考:
Preserving Statistics using DBMS_STATS.LOCK_TABLE_STATS [ID 283890.1]
ORA-7445 [kdapprv] Running dbms_stats.gather_table_stats or dbms_stats.lock_table_stats [ID 333377.1]
FAQ: Automatic Statistics Collection Jobs (10g and 11g) [ID 1233203.1]
[z]dbms_stats.lock_table_stats对于没有统计信息的表分区同样有效的更多相关文章
- 使用dbms_stats.gather_table_stats调整表的统计信息
创建实验表,插入10万行数据 SQL> create table test (id number,name varchar2(10)); Table created. SQL> decla ...
- oracle里的统计信息
1 oracle里的统计信息 Oracle的统计信息是这样的一组数据,存储在数据字典,从多个维度描述了oracle数据库对象的详细信息,有6种类型 表的统计信息:记录数.表块的数量.平均行长度等 索引 ...
- 有关Oracle统计信息的知识点[z]
https://www.cnblogs.com/sunmengbbm/p/5775211.html 一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如, ...
- 使用DBMS_STATS来收集统计信息【转】
overview Oracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fract ...
- 为准确生成执行计划更新统计信息-analyze与dbms_stats
如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...
- 收集oracle统计信息
优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN:列统计: --列中唯一值的数量(NDV),NULL值的数量,数据分 ...
- ORACLE收集统计信息
1. 理解什么是统计信息 优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: · ...
- PLSQL_统计信息系列09_统计信息在不同数据库中迁移
2014-01-05 Created By BaoXinjian
- PLSQL_统计信息系列02_统计信息的对象
20150505 Created By BaoXinjian
随机推荐
- Hydra密码破译工具
Hydra简介 Hydra是著名黑客组织thc开发的一款开源的暴力密码破解工具,可以在线破解多种密码,目前已经被Backtrack和kali等渗透平台收录.除了命令行下的Hydra外,还提供了Hydr ...
- [原创]delphi在win7下创建共享文件夹源代码
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
(转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例) 重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering ...
- Android辅助开发工具说明
1.aapt(Android Asset Packaging Tool):用于建立zip包(zip.jar.apk),也可用于将资源编译到二进制的assets:2.adb(Android Debug ...
- How to fix the bug “Expected "required", "optional", or "repeated".”?
参考:https://github.com/tensorflow/models/issues/1834 You need to download protoc version 3.3 (already ...
- u-boot 内核 启动参数
kernel如何得到uboot启动信息: http://blog.sina.com.cn/s/blog_89d9bec60101bzen.html u-boot向linux内核传递启动参数: http ...
- kotlin string
Kotlin String split 操作实践 内容 此文章展示kotlin中对String字符串的split操作,如果你有遇到这方面的需求,希望对你有用. 1. split + 正则 先看下系 ...
- maven(一)入门
1.maven 简介:不用手动拷贝jar包,只需要配置坐标,自动从中央仓库下载(其他介绍请百度,这里只讲干货) 2.安装maven 1.解压与配置环境变量 2.验证是否安装成功 3.maven介绍 1 ...
- MySql权威指南
[MySql权威指南] 1.索引(index):原始数据纪录的排序情况. 2.存储过程(store procedure),就是函数. 3.触发器是一组SQL命令,当数据库执行特定操作时触发,如UPDA ...
- SpringMVC点滴(1)
在使用springMVC很久,却一直没有总结其中的一些便捷配置和功能,恰好有空,加以总结 Servlet 3之后,在web.xml中加入async的支持,从而实现异步请求,需要在servlet和fil ...