Automatic Statistics Gathering

在Oracle10g中引入的优化器统计信息(Optimizer Statistics)自动收集,是一个看上去很不错的功能,但是在实际应用中却往往没有起到相应的效果,甚至在某些系统中我们会建议禁用这个功能。 阐述一些该功能的相关知识点。 1. Automatic Statistics Gathering是由Scheduler调度GATHER_STATS_JOB作业来完成的,在GATHER_STATS_JOB作业中则调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC存储过程。 2. 该作业在创建数据库的自动创建,并且设置为每天晚上10点到第二天早上6点和周六周日的全天为运行窗口期。在运行窗口期内,该作业都会运行,根据stop_on_window_close属性来决定,如在窗口期结束以后,该作业如果还没有运行完毕,是继续运行还是结束运行。 3. GATHER_DATABASE_STATS_JOB_PROC是内部的存储过程,基本上跟DBMS_STATS.GATHER_DATABASE_STATS的功能一样,但是有内部的优先顺序考虑,更新越多的表将会越优先收集统计信息。 4. 收集统计信息的表对象是,之前从来没有收集过的或者是更新的(包括insert,update,delete,truncate)记录数超过当前总记录数10%的表。记录数的更改量由Oracle数据库自动监控,在初始化参数statistics_level设置为TYPICAL或者ALL时,自动监控即会生效。 5. 在USER_TAB_MODIFICATIONS表中记录了所有被监控的表的数据量更改信息。该信息的更新将会稍微滞后于真实的修改,可以通过DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO存储过程来立刻将更改的信息更新到USER_TAB_MODIFICATIONS表中。对于更新之后再rollback的记录,仍然算为已经受影响的记录,Oracle不会在rollback之后再去更新USER_TAB_MODIFICATIONS表。 SQL> select * from user_tab_modifications where table_name=’EMP’; no rows selected SQL> select count(*) from emp; COUNT(*) ———- 14 SQL> update emp set sal=sal+100; 14 rows updated. SQL> select * from user_tab_modifications where table_name=’EMP’; no rows selected SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO(); PL/SQL…

Oracle TimesTen体验 – Cache Group刷新

回头看自己写的第一篇Timesten的文章,居然已经过去了1年半。事情有开始,应该就有个结束,完成它吧,即使今天碰到一万个挫折。 上回书说到,“1. 安装TimesTen 7.0 …”,现在最新版本已经是TimesTen Release 7.0.5.0.0了,这次重新安装了TimesTen,安装过程中我的手很欠,点上了本来不是默认选项的Enable Access Control,启用了用户存取权限控制,导致后面不得不查阅各个联机文档,费尽心机,才完成整个实验。当然手欠也有手欠的好处,否则谁会在刚开始实验一个新产品的时候去研究那些劳什子的安全设置呢。 2. 创建一个系统DSN,命名为ttdemo。 按照OTN上的How to Create TimesTen Databases,如果没有激活Access Control,应该一路下去很顺畅,我却卡在了第43页上,连接Datastore总是报错。 D:\Temp>ttIsql -connStr “DSN=ttdemo;UID=kamus” Copyright (c) 1996-2008, Oracle. All rights reserved. Type ? or “help” for help, type “exit” to quit ttIsql. All commands must end with a semicolon character. connect “DSN=ttdemo;UID=kamus”; 7001: User authentication failed The command failed….

内蒙的秋天

总算有时间整理一下照片,我个人认为我的傻瓜相机比某人的单反照出来效果要好。 此乃某人造型。 从北京出发以后,在路上看到草原上的风车群。 草原边的省道。对于一望无际通向远方的柏油马路总有说不清的眷恋。 我们的三辆车。没有一辆是适合跑长途的,但是这一趟跑的仍然很高兴。 锡林浩特的夕阳。当天黄昏时刻到达锡林浩特收费站之后稍事休息。 看这片像翅膀一样的白云。 我们来的稍微晚了些,草原上的草大都已经收割了,不过即使这样,我们也同样享受这片广阔无垠。 阿尔山市是一个只有两条交叉马路的小城。这是旅馆一条街,另外有吃饭一条街与之十字交会。 阿尔山国家森林公园里还未完全落叶的树林,如果再早些来,一定是满眼的绚烂。 闻名遐迩的小白桦。 阿尔山森林公园中的某个天池。所谓天池,就是高出海拔的群山中的一面湖泊,在阿尔山这样的火山喷发地形中为数不少。 一路上走走停停,看到风景宜人的地方就下来休息,那一天我们只跑了200公里。 在某条河边,忍受过无数次托底的福克斯还是被我开下了公路直接开到了河边。 永远都会有这样一条通向远方的路在脚下等着你去丈量。 更多照片请猛击这里。