Oracle 查看收集统计信息

来源:互联网 发布:新疆的网络管制 编辑:程序博客网 时间:2024/05/16 17:33

-- Start

统计信息相当于情报,对 Oracle 至关重要,如果统计信息不准确,Oracle 就会做出错误的判断。那如何查看统计信息呢?试一试下面的 SQL 吧。

-- 查看表统计信息select * from DBA_TABLES where OWNER = 'HR' and TABLE_NAME = 'TEST';select * from DBA_TAB_STATISTICS where OWNER = 'HR' and TABLE_NAME = 'TEST';-- 查看列统计信息select * from DBA_TAB_COL_STATISTICS where OWNER = 'HR' and TABLE_NAME = 'TEST';-- 查看索引统计信息select * from DBA_IND_STATISTICS where OWNER = 'HR' and TABLE_NAME = 'TEST';


通常,Oracle 会在每天固定时间段自动维护统计信息。但是对于某些表,这是远远不够的,如:某些表每天都需要清空,然后重新导入。这个时候,我们需要手动收集统计信息。

-- 方法1: 使用 DBMS_STATS.GATHER_TABLE_STATS 手动收集存储过程DBMS_STATS.GATHER_TABLE_STATS('HR', 'ORDERS');-- 方法2:删除并锁定统计信息,如果没有统计信息,Oracle 会动态收集统计信息BEGINDBMS_STATS.DELETE_TABLE_STATS('HR','ORDERS');DBMS_STATS.LOCK_TABLE_STATS('HR','ORDERS');END;

Oracle 推荐我们使用方法1。 除此之外,DBMS_STATS 包还提供了下面的存储过程用来收集统计信息。

GATHER_INDEX_STATS       收集索引统计信息GATHER_TABLE_STATS       收集指定表,列,索引的统计信息GATHER_SCHEMA_STATS      收集指定模式下所有对象的统计信息GATHER_SYSTEM_STATS      收集系统统(I/O,CUP)计信息GATHER_DICTIONARY_STATS  收集 SYS, SYSTEM 模式下对象的统计信息GATHER_DATABASE_STATS    收集所有数据库对象的统计信息GATHER_FIXED_OBJECTS_STATS   收集 FIXED 对象的统计信息

DBMS_STATS 包还提供许多子程序让我们可以对统计信息进行操作,如:查询,删除,锁定,恢复等,更多详情你可以参考 PL/SQL Packages and Types 手册。

-- 更多参见:Oracle SQL 优化精萃

-- 声明:转载请注明出处

-- Last edited on 2015-08-28

-- Created by ShangBo on 2015-07-29

-- End


0 0
原创粉丝点击