- 浏览: 327817 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (224)
- Java (34)
- Test (3)
- Linux/Unix (32)
- Windows (8)
- Oracle (78)
- Oracle Backup & Recovery (3)
- SqlServer (1)
- Database (3)
- Open Source (2)
- Server Management (1)
- Apache ActiveMQ (1)
- IBM WebSphere MQ (7)
- IBM WAS (15)
- 其它 (11)
- UML (1)
- Tools (1)
- Reference (0)
- Spring (11)
- Hibernate (5)
- VBScript (3)
- Network (1)
- Securities (2)
- Maven (6)
- logging (2)
- Web (1)
- AWS (3)
最新评论
第一部分:Gathering Optimizer Statistics
1. GATHER_DATABASE_STATS
收集数据库中所有对象的统计信息
Parameters:
--estimate_percent: 需分析的百分比(NULL means compute),默认值可以通过SET_PARAM来改变。The valid range is [0.000001,100]
--block_sample:无论是否是随机块采样替代随机行采样,随机块采样的效率都会比较高。除非数据不是随机分布在磁盘上的。DEFAULT FALSE
--method_opt:
FOR ALL [INDEXED | HIDDEN] COLUMNS[size_clause]
FOR COLUMNS[size clause] column|attribute [size_clause] [,column|attribute [size_clause]...]
size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}
- integer: Number of histogram buckets. Must be in the range [1,254].- REPEAT: Collects histograms only on the columns that already have histograms.- AUTO: Oracle determines the columns to collect histograms based ondata distribution and the workload of the columns.- SKEWONLY: Oracle determines the columns to collect histograms based on thedata distribution of the columns.
The default is FOR ALL COLUMNS SIZE AUTO.默认值可以通过SET_PARAM来改变
--degree:并行度,The default for degree is NULL.
--granularity:只有分区表才会用到此参数
--cascade:是否要统计此表上的index,默认为false,默认值可以通过SET_PARAM来改变
--Stattab:User statistics table identifier describing where to save the current statistics.
--Statid:Identifier (optional) to associate with these statistics withinstattab.
--options:默认值GATHER(Gathers statistics on all objects in the schema),
其它选项:
GATHERAUTO: Gathers all necessary statistics automatically
GATHERSTALE: Gathers statistics on stale objects as determined by looking at the *_tab_modificationsviews.
GATHEREMPTY: Gathers statistics on objects which currently have no statistics.
LIST AUTO: Returns a list of objects to be processed with GATHER AUTO, When GATHER AUTO is specified, the only additional valid parameters are stattab, statid, objlist and statown;
LISTSTALE: Returns a list of stale objects as determined by looking at the *_tab_modifications views.
LISTEMPTY: Returns a list of objects which currently have no statistics.
--objlist: List of objects found to be stale or empty
--statown: Schema containingstattab(if different from current schema)
--gather_sys: Gathers statistics on the objects owned by the'SYS'user,默认值TRUE
--no_invalidate: 设置为TRUE时,相关的游标不会失效; 反之,游标失效。
2. GATHER_DICTIONARY_STATS
此过程收集统计数据字典用户’SYS’,’SYSTEM’以及RDBMS组件用户.
必须有SYSDBA或ANALYZEANYDICTIONARY和ANALYZEANYSYSTEM权限才能执行此过程。
参数:
--comp_id:指定需统计用户的COMP_ID,通过DBA_REGISTRY视图来查看COMP_ID。如此值为NULL,则统计所有RDBMS组件的用户。此管是否有此参数,’SYS’,’SYSTEM’用户都会被统计。
其它参数estimate_percent--block_sample --method_opt –degree –granularity –cascade –stattab –statid –options –objlist –statown --no_invalidate都同上
3. GATHER_FIXED_OBJECTS_STATS
此过程收集统计所有的动态性能表
必须有SYSDBA或具有ANALYZEANYDICTIONARY权限才能执行此过程。
参数:stattab –statid –statown --no_invalidate
4. GATHER_INDEX_STATS
此过程收集索引的统计。一些参数被限制的,不会并行处理cluster indexes, domain indexes,和bitmap join indexes,granularity和no_invalidate参数在这些index中不起作用。
参数:
--ownname:被统计的schema
-- indname:index名
--Partname:Name of partition
--force:即使表被锁定,也强行统计
--estimate_percent–stattab –statid–statown–degree–granularity --no_invalidate都同上
5. GATHER_SCHEMA_STATS
此过程收集统计某用户下所有的对象
参数:
--ownname:需分析的schema, null时则为当前schema
--estimate_percent --block_sample--method_opt–degree–granularity–cascade –stattab –statid–options –objlist –statown --no_invalidate都同上
6. GATHER_SYSTEM_STATS
此过程收集系统统计,用来系统的cpu和IO指标
参数:
--gathering_mode:
-NOWORKLOAD,收集I/O的性能指标,数据库的大小决定收集时间。收集期间ORACLE将评估IO平均的读取寻道时间和传输速度。
-INTERVAL,指定统计的时间(分钟数),统计完成后,统计信息将建立或更新在数据字典或指定的stattab中。在统计期间可以用GATHER_SYSTEM_STATS (gathering_mode=>'STOP')来中断统计。
SQL> exec dbms_stats.gather_system_stats('interval',15);
SQL> exec dbms_stats.gather_system_stats('stop');
SQL>select pname,pval1 from sys.aux_stats$; --查看统计结果
-START|STOP:开始和结束统计
--interval:指定统计的分钟数,当上面的参数是INTERVAL时才用此参数
--no_invalidate:设置为TRUE时,相关的游标不会失效;反之,游标失效。
–statid–statown同上
7. GATHER_TABLE_STATS
此过程统计table and column (and index)信息。
参数:
Ownname:用户名
Tabname:TABLE名
Partname:分区名Name of partition
--estimate_percent --block_sample--Method_opt–degree–granularity–cascade –stattab –statid –statown --no_invalidate--force都同上
第二部分:Setting or Getting Statistics
1. SET_COLUMN_STATS
设置列相关信息
参数:
--ownname:用户名
--tabname:TABLE名
--colname:列名
--partname:分区名
--stattab:指定存放用户分析的数据的表名
--statid:stattab的ID,只有当stattab没有指定时使用
--ext_stats:自定义的统计
--stattypown:统计类型的所属用户
--STATTYPNAME:统计类型的名称
--distinct:有多少个值(number of distinct values)
--density:列密度。如果此值是null且distinct不为空,那么此值将参照distinct
--nullcnt:number of NULLS
--srec:StatRecstructure filled in by a call to PREPARE_COLUMN_VALUES or GET_COLUMN_STATS
--avgclen:列的平均长度(in bytes)
--flags:ORACLE内部使用,应该为NULL
--statown:Schema containing stattab (if different than ownname)
--no_invalidate:设置为TRUE时,相关的游标不会失效;反之,游标失效。
--force:被设置的column被锁时也强行设置
2. SET_INDEX_STATS
设置索引相关信息
3. SET_PARAM
此过程是用来设置DBMS_STATS的值的,可以用GET_PARAM函数来得到参数的当前值。
参数:
--pname:可以是CASCADE,DEGREE,EASTIMAT_PERCENT,METHOD_OPT,NO_INVALIDATE,GRANULARITY,AUTOSTATS_TARGET
--pval:参数的值。如果是NULL,则设成默认值。
To run this procedure, you must have theSYSDBAor both theANALYZEANYDICTIONARYandANALYZEANYsystem privileges
举例:
DBMS_STATS.SET_PARAM('CASCADE','DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_PARAM('ESTIMATE_PERCENT','5');
DBMS_STATS.SET_PARAM('DEGREE','NULL');
4. SET_SYSTEM_STATS
设置系统的统计
参数:
--pname:
--iotfrspeed:IO的传输速度/毫秒
--ioseektim:seek time + latency time + operating system overhead time, in milliseconds
--sreadtim:average time to read single block (random read), in milliseconds
--mreadtim:average time to read an mbrc block at once (sequential read), in milliseconds
--cpuspeed:average number of CPU cycles for each second, in millions, captured for the workload (statistics collected using 'INTERVAL' or 'START' and 'STOP' options)
--cpuspeednw:average number of CPU cycles for each second, in millions, captured for the noworkload (statistics collected using 'NOWORKLOAD' option.
--mbrc:average multiblock read count for sequential read, in blocks
--maxthr:I/O的最大吞吐量,bytes/second
--slavethr:average slave I/O throughput, in bytes/second
--pvalue:参数的值
--stattab:指定存放用户分析的数据的表名
--statid:用户ID
--statown:stattab指定表的所属用户
--cachedblk:段在buffer cache中的平均块数
--cachehit:段的平均命中率
5.SET_TABLE_STATS
设置表的统计
参数:
--ownname,--tabname,--partname,--stattab,--statid同上
--numrows:表中有多少行
--numblks:表占用了多少块
--avgrlen:平均的行长度
--flags,--statown,--no_invalidate,--cachedblk,--cachehit,--force同上
6. PREPARE_COLUMN_VALUES
7. PREPARE_COLUMN_VALUES_NVARCHAR2
8. PREPARE_COLUMN_VALUES_ROWID
9. GET_COLUMN_STATS Procedures
取栏位的统计信息
参数:
--ownname,--tabname,--colname, --partname,--stattab,--statid, --ext_stats, --stattypown, --STATTYPNAME, --distinct, --density, --nullcnt,--srec,--avgclen,--statown
10. GET_INDEX_STATS
取索引的统计信息
参数
--ownname,--indname,--partname,--stattab,--statid,--ext_stats,--stattypown,--STATTYPNAME, --numrows, --numblks
--numdist:Number of distinct keys in the index (partition)
--avglblk:Average integral number of leaf blocks in which each distinct key appears for this index (partition)
--avgdblk:Average integral number of data blocks in the table pointed to by a distinct key for this index (partition)
--clstfct:Clustering factor for the index (partition)
--indlevel:Height of the index (partition)
--statown:stattab的用户名
--guessq:估计INDEX的质量
--cachedblk:段在buffer cache中的平均块数
--cachehit:段的平均命中率
11.GET_SYSTEM_STATS
此过程取系统的统计信息
语法:
DBMS_STATS.GET_SYSTEM_STATS (
statusOUTVARCHAR2,
dstartOUTDATE,
dstopOUTDATE,
pnameVARCHAR2,
pvalueOUTNUMBER,
stattabINVARCHAR2 DEFAULT NULL,
statidINVARCHAR2 DEFAULT NULL,
statownINVARCHAR2 DEFAULT NULL);
参数:
--Status:会输出以下值之一COMPLETED,AUTOGATHERING,MANUALGATHERING,BADSTATS
--dstart:收集分析开始的时间
--dstop:收集分析结束的时间
--pname:需要获取值的参数,可选的值有:iotfrspeed,ioseektim,sreadtim,mreadtim,cpuspeed,cpuspeednw,mbrc,maxthr,slavethr
--pvalue:值
--stattab:统计表所表名,如果此值为null,则会从数据字典中取。
--statid:stattab的id
--statown:stattab的own
12.GET_TABLE_STATUS
取table相关的统计信息
语法:
DBMS_STATS.GET_TABLE_STATS (
ownnameVARCHAR2,
tabnameVARCHAR2,
partnameVARCHAR2 DEFAULT NULL,
stattabVARCHAR2 DEFAULT NULL,
statidVARCHAR2 DEFAULT NULL,
numrowsOUT NUMBER,
numblksOUT NUMBER,
avgrlenOUT NUMBER,
statownVARCHAR2 DEFAULT NULL,
cachedblkOUT NUMBER,
cachehitOUT NUMBER);
13.CREATE_STAT_TABLE
此过程建立stattab的TABLE,以保存统计信息。
语法:
DBMS_STATS.CREATE_STAT_TABLE (
ownnameVARCHAR2,
stattabVARCHAR2,
tblspace VARCHAR2 DEFAULT NULL);
参数:
--ownname:用户名
--stattab:需建立的stattab表名。
--tblspace:stattab的tablespace.如果为null则会使用用户的默认表空间
14.DROP_STAT_TABLE
此过程删除用户定义的统计表
语法:
DBMS_STATS.DROP_STAT_TABLE (
ownname VARCHAR2,
stattab VARCHAR2);
第三部分Deleting Statistics
1.DELETE_COLUMN_STATS
语法:
DBMS_STATS.DELETE_COLUMN_STATS (
ownnameVARCHAR2,
tabnameVARCHAR2,
colnameVARCHAR2,
partnameVARCHAR2 DEFAULT NULL,
stattabVARCHAR2 DEFAULT NULL,
statidVARCHAR2 DEFAULT NULL,
cascade_parts BOOLEANDEFAULT TRUE,
statownVARCHAR2 DEFAULT NULL,
no_invalidate BOOLEANDEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
forceBOOLEAN DEFAULT FALSE);
参数:
--ownname:table所属用户名
--tabname:表名
--colname:column
--partname:分区名
--stattab:统计表名,如果为null,则从数据字典中取
--statid:stattab的id(当stattab为null时才需指定)
--cascade_parts:如果指定的表是分区表且partname是null,此值为TRUE时会删除所有指定字段分区的统计信息。
--statown:stattab的owner
--no_invalidate:如设为TRUE,相关的游标不失效。
--force:When value of this argument is TRUE, deletes column statistics even if locked
2. DELETE_DATABASE_STATS
此过程删除数据库中所有TABLE的统计信息
语法:
DBMS_STATS.DELETE_DATABASE_STATS (
stattabVARCHAR2 DEFAULT NULL,
statidVARCHAR2 DEFAULT NULL,
statownVARCHAR2 DEFAULT NULL,
no_invalidateBOOLEANDEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
forceBOOLEANDEFAULT FALSE);
3.DELETE_DICTIONARY_STATS
此过程删除'SYS', 'SYSTEM' and RDBMS component schemas的统计信息
分析表中的index
execute dbms_stats.gather_table_stats(ownname => 'tab',tabname => 'HWM',method_opt =>'for all indexed columns size auto');
分析指定列 buket 5
execute dbms_stats.gather_table_stats(ownname => 'LINYU',tabname => 'HWM',method_opt =>'for columns OWNER size 5');
收集指定column的统计信息时,会自动把对应的index的信息收集起来.
删除指定表的统计信息
execute dbms_stats.delete_table_stats(ownname => 'LINYU',tabname => 'HWM');
删除指定列
execute dbms_stats.delete_column_stats(ownname => 'LINYU',tabname => 'HWM',colname => 'OWNER');
例子:
分析表中的index
execute dbms_stats.gather_table_stats(ownname => 'tab',tabname => 'HWM',method_opt =>'for all indexed columns size auto');
分析指定列 buket 5
execute dbms_stats.gather_table_stats(ownname => 'LINYU',tabname => 'HWM',method_opt =>'for columns OWNER size 5');
收集指定column的统计信息时,会自动把对应的index的信息收集起来.
删除指定表的统计信息
execute dbms_stats.delete_table_stats(ownname => 'LINYU',tabname => 'HWM');
删除指定列
execute dbms_stats.delete_column_stats(ownname => 'LINYU',tabname => 'HWM',colname => 'OWNER');
发表评论
-
DBCP连接池介绍
2018-09-12 13:17 459目前 DBCP 有两个版本分别是 1.3 和 1.4。 D ... -
Update两表(多表)关联update -- 被修改值由另一个表运算而来
2016-10-22 00:50 981UPDATE trd_sess A SET A.r ... -
GV$LOCKED_OBJECT
2016-09-27 01:21 1121SELECT OBJECT_NAME, MACHINE, ... -
v$sql v$sqlarea v$sqltext v$sql_plan
2015-08-13 16:55 805v$sqltext存储的是完整的SQL,SQL被分割 SQ ... -
Oracle performance tuning
2015-08-10 17:47 601db block get+consistent gets ... -
JDBC driver 的类型 Type 1 Type2 Type3 Type4
2014-06-12 16:01 854在网上下载jdbc驱动程序,常看见type4字样,开始以为是 ... -
undo segment behavior
2014-04-04 19:04 781FAQ – Automatic Undo Managemen ... -
Connect to Oracle DB - Java
2014-04-04 15:14 717import java.sql.*; public ... -
Dataguard网络优化调整
2014-03-31 16:02 958Dataguard网络优化调整 Datagu ... -
Production error ORA-01001, ORA-03120, ORA-01460
2014-03-19 20:38 986ORA-01001: invalid cursor OR ... -
Oracle 常见的33个等待事件
2014-03-12 15:42 4060一. 等待事件的相关知识: 1.1 等待事件主要可以 ... -
WBFC on Exadata
2014-02-27 14:57 8601. "Should we turn on Sto ... -
Oracle dump files
2014-02-27 12:58 664audit_file_dest = C:\ ... -
Adaptive Log File Sync
2014-02-26 19:52 1057Adaptive Log File sync was int ... -
ORA-39046: Metadata remap REMAP_TABLESPACE has already been specified.
2014-01-22 16:01 6705Import: Release 10.2.0.4.0 - 6 ... -
EXPDP – ORA-39142: incompatible version number 3.1
2014-01-22 12:25 1661Using EXPDP export a schema in ... -
Oracle 11g Real Time SQL Monitoring
2014-01-20 17:01 783http://kerryosborne.oracle-guy ... -
java.sql.SQLException: ORA-01001: invalid cursor
2013-12-20 13:59 3787There are three parameters tha ... -
ORA-01013 user requested cancel of current operation
2013-12-20 13:34 2424今天我碰到的case就是timeout引起的。 T ... -
Cannot run sqlplus on Linux with EOF
2013-12-20 11:02 849今天碰到个小问题,记下来,在linux上,不可以run fi ...
相关推荐
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
`DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关重要。该过程允许数据库管理员通过一系列参数来灵活控制...
- `PLS-00302: component 'IS_STATS_FROM_UPGRADE' must be declared` - `ORA-04063: package body "SYS.DBMS_REGISTRY_SYS" has errors` - `ORA-04063: package body "SYS.DBMS_STATS" has errors` 这些错误表明`...
然而,随着Oracle版本的发展,DBMS_STATS逐渐成为更推荐的选择,因为它提供了更准确的统计信息和并行收集统计的能力。 **从ANALYZE到DBMS_STATS的迁移** Oracle 8i以来,数据库提供了两种统计信息收集方式:...
Oracle 统计分析-dbms_stats.pdf Oracle 中的统计分析对于数据库的性能至关重要。dbms_stats 是 Oracle 提供的一个统计分析工具,能够良好地估计统计数据,特别是针对较大的分区表,并且能获得更好的统计结果,最终...
### DBMS_STATS在Oracle数据库中的应用 #### 一、DBMS_STATS概述 DBMS_STATS是Oracle提供的一款功能强大的工具包,主要用于收集表和索引的统计信息,进而帮助Oracle的Cost-Based Optimizer (CBO)生成更为高效的执行...
标题“DBMS_XPLAN: 显示Oracle执行计划”是一个关于Oracle数据库系统中用于分析SQL查询执行性能的重要工具的讨论。这个工具允许用户查看SQL语句的执行计划,从而理解数据库如何处理这些语句,以及哪些操作可能影响...
Oracle 11g中的DBMS_STATS包是用于收集数据库对象统计信息的重要工具,这些统计信息对于Oracle的优化器来说至关重要,因为它们影响到查询执行计划的选择。在Oracle 7版本中,analyze语句被用来收集统计信息,但在...
18. **DBMS_STATS.GATHER_SCHEMA_STATS**: 收集整个模式的统计信息,优化性能。 19. **DBMS_PROFILER**: 性能分析工具,追踪PL/SQL代码的执行时间。 20. **DBMS_METADATA_DIFF**: 比较并显示两个数据库对象之间的...
执行此操作后,即使手动调用 `DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO` 来刷新信息,DBA_TAB_MODIFICATIONS 也不会显示任何记录。 其次,未提交的DML操作也会被记录在DBA_TAB_MODIFICATIONS中,但当事务回滚时...
DBMS_STATS包用于收集和管理表、索引的统计信息,这些信息被Oracle的查询优化器用来选择最佳的执行计划。 以上只是Oracle内置包的一部分,实际上,Oracle还提供了许多其他的包,如DBMS_OUTPUT、DBMS_METADATA等,...
- 使用`BEGIN dbms_scheduler.disable('GATHER_STATS_JOB'); END;`来禁用自动收集任务。 ##### 2. 高度变化的表 - **处理方式**: - 将这些表上的统计信息设置为`NULL`,当Oracle遇到没有统计信息的对象时,会...
`DBMS_STATS.GATHER_TABLE_STATS`用于收集表的统计信息,`DBMS_STATS.PUSH_SCHEMA_STATS`将统计信息推送到数据字典。 13. **DBMS_APPLICATION_INFO**: 在PL/SQL程序中设置和查询应用信息,如客户端信息和工作负载...
EXEC dbms_stats.gather_table_stats('MACLEAN', 'TEST1', cascade => TRUE); ``` 3. **创建数据库链接**: 创建一个数据库链接连接到目标端: ```sql CREATE DATABASE LINK maclean_connect_to_maclean ...
本文将深入探讨Oracle更新分析的关键概念和技术细节,包括如何利用`dbms_stats`包进行统计信息收集、不同选项的意义以及它们对SQL执行效率的影响。 #### 一、Oracle统计信息的重要性 Oracle数据库中的统计信息对于...
本文将重点探讨Oracle数据库中的统计数据及其优化策略,特别是通过使用`dbms_stats`包来提升SQL查询性能。 #### 二、Oracle数据库的统计数据 统计数据是指Oracle数据库中关于表、索引等对象的数据分布信息。这些...
- 使用`DBMS_STATS.GATHER_INDEX_STATS`重新收集索引统计信息。 - **2.1.22 研究B-Tree索引结构的脚本** - B-Tree索引是Oracle中最常用的索引类型之一。 - 本书提供了一个脚本来展示B-Tree索引的内部结构。 - ...
"orac_analyze"和"oracle_analyze_tab"可能是指Oracle中的DBMS_STATS包,这是一个PL/SQL包,提供了用于收集和管理统计信息的接口。DBMS_STATS包允许我们自定义分析的粒度,比如可以分析整个表,也可以分析表的部分...
Oracle SQL执行计划分析器功能的创建3步曲: 1 首先,编译XYG_ALD_SESS_PKG的Package头。 (XYG_ALD_SESS_PKG.sql) 2 接着要建立好下面的4个视图对象。因为XYG_ALD_SESS_PKG包体会用到。(View Create Script v...