您的位置:首页 > 运维架构 > 网站架构

DRBD+HEARTBEAT+NFS实现高可用性群集

2012-10-23 14:33 405 查看
1. 统计信息

Oracle10g里的统计信息按照object和system分类如下:

Object statistics

Table statistics

Column statistics

Index statistics

System statistics

I/O performance and utilization

CPU performance and utilization

2. Object的统计信息

Oracle里每个object的统计信息类型如下:

Table statistics

Number of rows

Number of blocks

Average row length

Column statistics

Number of distinct values (NDV) in column

Number of nulls in column

Data distribution (histogram)

Index statistics

Number of leaf blocks

Levels

Clustering factor

系统级别的统计信息主要是性能相关的信息,如下:

System statistics

I/O performance and utilization

CPU performance and utilization

3. 获得统计信息的途径

可以通过以下表或视图查询统计信息

DBA_TABLES

DBA_OBJECT_TABLES

DBA_TAB_STATISTICS

DBA_TAB_COL_STATISTICS

DBA_TAB_HISTOGRAMS

DBA_INDEXES

DBA_IND_STATISTICS

DBA_CLUSTERS

DBA_TAB_PARTITIONS

DBA_TAB_SUBPARTITIONS

DBA_IND_PARTITIONS

DBA_IND_SUBPARTITIONS

DBA_PART_COL_STATISTICS

DBA_PART_HISTOGRAMS

DBA_SUBPART_COL_STATISTICS

DBA_SUBPART_HISTOGRAMS

4.自动收集统计信息

Oracle的GATHER_STATS_JOB会自动收集所有object的统计信息,创建数据库的时候自动创建GATHER_STATS_JOB。

Oracle是否自动收集统计信息涉及到一个重要参数STATISTICS_LEVEL,需要注意:

STATISTICS_LEVEL=TYPICAL/ALL,Oracle自动检测统计信息过期并收集

STATISTICS_LEVEL=BASIC,Oracle不再自动收集统计信息

默认设置为TYPICAL,设置ALL收集所有相关的统计信息

设置statistics_level参数后,当object一下状态时,GATHER_STATS_JOB会自动收集统计信息:

object没有统计信息

object统计信息过旧

默认,GATHER_STATS_JOB定制每天晚上22点至凌晨6点运行,周末2天全天运行。stop_on_window_close属性控制JOB的窗口运行状态,默认关闭运行窗口,JOB停止收集统计信息。

常用命令:

--------------------------------------------------------------------------------------

查看GATHER_STATS_JOB

SQL> SELECT owner, job_name, enabled, state FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';

停止GATHER_STATS_JOB

SQL>EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

打开GATHER_STATS_JOB

SQL>EXEC DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');

-------------------------------------------------------------------------------------

5. 手工收集统计信息

一般来说,对于温和增长的数据变化,Oracle的自动收集统计信息功能足以满足需要。什么时候需要收手动集统计信息呢?当出现以下情况时,都需要重新收集statistics:

某些表在自动统计后被delete、truncate或是rebuild

数据增量超过10%,旧的统计信息将不再有效

简单地说就是当数据发生明显改变时,不建议使用automagic statistics gathering,需要根据业务压力和需要手工进行统计信息的更新。

常用命令。使用DBMS_STATS包,实现各个Object统计信息的update、delete、export、import。

ProcedureCollects Statistics
GATHER_INDEX_STATSIndex statistics
GATHER_TABLE_STATSTable, column, and index statistics
GATHER_SCHEMA_STATSStatistics for all objects in a schema
GATHER_DICTIONARY_STATSStatistics for all dictionary objects
GATHER_DATABASE_STATSStatistics for all objects in a database
6. USER_TAB_MODIFICATIONS

USER_TAB_MODIFICATIONS表记录了数据库里被监控表里的DML操作次数,记录更新不够及时,可以使用Oracle提供的存储过程进行刷新。

-------------------------------------------------------------------------------------

查看table的DML操作次数

sql>select table_name,inserts,updates,deletes from user_tab_modifications;

刷新user_tab_modifications的统计信息

sql>exec dbms_stats.flush_database_monitoring_info;

清空user_tab_modifications里表zhangp的统计信息

sql>analyze table zhangp compute statistics;

------------------------------------------------------------------------------------

Oracle10g的统计信息功能并不是很稳定。我们的生产数据库从9i升级到10g后,就是没有充分考虑到gather statistics的功能和策略上的变化,导致OLTP系统晚上做报表分析时速度巨慢,sql语句的执行计划异常,影响到正常的数据分析。所以对于采用Oracle10g版本的数据库用户,无论采用哪种方式统计信息时一定要慎重测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: