Oracle 11.2.0.3自动收集统计信息测试与操作

需积分: 5 0 下载量 174 浏览量 更新于2024-08-05 收藏 425KB PDF 举报
Oracle自动收集统计信息是一项关键的数据库管理任务,用于优化查询性能。在本文中,我们将探讨如何在11.2.0.3版本的Oracle数据库环境中测试和验证自动收集统计信息的功能。 首先,测试环境设置对于理解这个过程至关重要。在这个例子中,我们面对的是一个非归档模式的数据库,这意味着更改不会被永久保存,仅适用于学习和演示目的。我们创建了一个名为"T1"的表来测试自动统计信息的收集: 1. 通过SQL命令`CREATE TABLE t1 (id NUMBER, name VARCHAR2(10))`,我们创建了一个新的表。然而,由于数据库处于非归档模式,`DBA_TAB_MODIFICATIONS`视图并未记录任何关于新表的修改信息,这表明自动统计信息收集尚未启动。 2. 当查询`DBA_TAB_MODIFICATIONS`和`DBA_TAB_STATISTICS`时,我们可以看到表格"T1"的相关列如INSERTS、UPDATES、DELETES等为空,且`LAST_ANALYZED`列也显示为无更新,这再次确认了统计信息尚未收集。 3. 虽然用户表`USER_TABLES`显示"T1"存在且有`NUM_ROWS`信息,但`LAST_ANALYZED`也是空的,提示表的统计信息已过期或从未被分析。 为了触发自动收集任务,我们在测试过程中手动执行了`DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC()`PL/SQL存储过程: 4. 执行该命令后,返回了"PL/SQL procedures successfully completed",说明自动收集统计信息的过程已经成功完成。 5. 接下来,当我们重新查询`TABLE_NAME`, `NUM_ROWS`, 和 `LAST_ANALYZED`时,可以看到"T1"的`LAST_ANALYZED`列已更新,表明数据库已经自动收集了表"T1"的统计信息,这对于优化查询性能至关重要。 总结来说,本文介绍了在Oracle 11.2.0.3版本数据库中测试自动收集统计信息的过程。首先,确认表的创建和状态,然后手动执行自动收集任务,观察其执行结果。通过这个过程,我们了解到自动收集统计信息在优化数据库性能中的作用,并了解了如何确保数据的及时分析以支持高效的查询处理。在实际生产环境中,定期自动收集统计信息是保持数据库性能的良好实践。