DBMS_STAT笔记

The DBMS_STATS subprograms perform the following general operations:

 

The DBMS_STATS subprograms perform the following general operations:

 

第一部分: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 on data distribution and the workload of the columns.- SKEWONLY : Oracle determines the columns to collect histograms based on the data 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来改变

--StattabUser statistics table identifier describing where to save the current statistics.

--Statid: Identifier (optional) to associate with these statistics within stattab.

--options:默认值GATHER(Gathers statistics on all objects in the schema),其它选项:

GATHER AUTO: Gathers all necessary statistics automatically

GATHER STALE: Gathers statistics on stale objects as determined by looking at the *_tab_modifications views.

GATHER EMPTY: 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;

LIST STALE: Returns a list of stale objects as determined by looking at the *_tab_modifications views.

LIST EMPTY: Returns a list of objects which currently have no statistics.

--objlist: List of objects found to be stale or empty

--statown: Schema containing stattab (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组件用户.

必须有SYSDBAANALYZE ANY DICTIONARY ANALYZE ANY SYSTEM 权限才能执行此过程。

参数:

--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或具有ANALYZE ANY DICTIONARY权限才能执行此过程。

参数:stattab – statid – statown -- no_invalidate

4. GATHER_INDEX_STATS

此过程收集索引的统计。一些参数被限制的,不会并行处理cluster indexes, domain indexes,bitmap join indexesgranularity no_invalidate参数在这些index中不起作用。

参数:

--ownname:被统计的schema

-- indname:index

--PartnameName 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

此过程收集系统统计,用来系统的cpuIO指标

参数:

--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用户名

TabnameTABLE

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用户名

--tabnameTABLE

--colname列名

--partname分区名

--stattab指定存放用户分析的数据的表名

--statid:stattabID,只有当stattab没有指定时使用

--ext_stats:自定义的统计

--stattypown:统计类型的所属用户

--STATTYPNAME:统计类型的名称

--distinct:有多少个值 (number of distinct values)

--density:列密度。如果此值是nulldistinct不为空,那么此值将参照distinct

--nullcntnumber of NULLS

--srec: StatRec structure 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 the SYSDBA or both the ANALYZE ANY DICTIONARY and ANALYZE ANY system 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

--statownstattab指定表的所属用户

--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段的平均命中率

 

11GET_SYSTEM_STATS

此过程取系统的统计信息

语法:

DBMS_STATS.GET_SYSTEM_STATS (
 status OUT VARCHAR2,
 dstart OUT DATE,
 dstop OUT DATE,
 pname VARCHAR2,
  pvalue OUT NUMBER,
 stattab IN VARCHAR2 DEFAULT NULL, 
 statid IN VARCHAR2 DEFAULT NULL,
 statown IN VARCHAR2 DEFAULT NULL);

参数:

--Status:会输出以下值之一 COMPLETED,AUTOGATHERING,MANUALGATHERING,BADSTATS

--dstart:收集分析开始的时间

--dstop:收集分析结束的时间

--pname:需要获取值的参数,可选的值有:iotfrspeedioseektimsreadtim,mreadtim,cpuspeed,cpuspeednw,mbrc,maxthr,slavethr

--pvalue:

--stattab:统计表所表名,如果此值为null,则会从数据字典中取。

--statid:stattabid

--statown:stattabown

12.GET_TABLE_STATUS

table相关的统计信息

语法:
DBMS_STATS.GET_TABLE_STATS (
 ownname VARCHAR2, 
 tabname   VARCHAR2, 
 partname   VARCHAR2 DEFAULT NULL,
 stattab  VARCHAR2 DEFAULT NULL,
 statid  VARCHAR2 DEFAULT NULL,
 numrows   OUT NUMBER, 
 numblks  OUT NUMBER,
 avgrlen  OUT NUMBER,
 statown VARCHAR2 DEFAULT NULL,
 cachedblk   OUT NUMBER,
 cachehit  OUT NUMBER);

13CREATE_STAT_TABLE

此过程建立stattabTABLE,以保存统计信息。

语法:

DBMS_STATS.CREATE_STAT_TABLE (

ownname VARCHAR2,

stattab VARCHAR2,

tblspace VARCHAR2 DEFAULT NULL);

参数:

--ownname:用户名

--stattab:需建立的stattab表名。

--tblspace:stattabtablespace.如果为null则会使用用户的默认表空间

 

14DROP_STAT_TABLE

此过程删除用户定义的统计表

语法:

DBMS_STATS.DROP_STAT_TABLE (
 ownname VARCHAR2, 
 stattab VARCHAR2);

 

第三部分Deleting Statistics

1DELETE_COLUMN_STATS

语法:

DBMS_STATS.DELETE_COLUMN_STATS (
 ownname VARCHAR2, 
 tabname VARCHAR2, 
 colname VARCHAR2, 
 partname VARCHAR2 DEFAULT NULL,
 stattab VARCHAR2 DEFAULT NULL, 
 statid VARCHAR2 DEFAULT NULL,
 cascade_parts BOOLEAN DEFAULT TRUE,
 statown VARCHAR2 DEFAULT NULL,
 no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
 get_param('NO_INVALIDATE')),
 force BOOLEAN DEFAULT FALSE);

参数:

--ownname:table所属用户名

--tabname:表名

--colname:column

--partname:分区名

--stattab:统计表名,如果为null,则从数据字典中取

--statid:stattabid(stattabnull时才需指定)

--cascade_parts:如果指定的表是分区表且partnamenull,此值为TRUE时会删除所有指定字段分区的统计信息。

--statown:stattabowner

--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 (
 stattab VARCHAR2 DEFAULT NULL, 
 statid VARCHAR2 DEFAULT NULL,
 statown VARCHAR2 DEFAULT NULL,
 no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
 get_param('NO_INVALIDATE')),
 force BOOLEAN DEFAULT FALSE);

3DELETE_DICTIONARY_STATS

此过程删除'SYS', 'SYSTEM' and RDBMS component schemas的统计信息

你可能感兴趣的:(schema,table,null,System,Dictionary,statistics)