Oracle数据库的性能监控与调整是运维人员必备的一项技能,特别是在11g版本中,通过附加数据字典和特定脚本,我们可以深入了解系统的运行状态并进行相应的优化。10g到12c版本的优化脚本主要存储在`/rdbms/admin`目录下,这些脚本对于提升数据库性能至关重要,但需要注意的是,部分高级功能如awrrpt.sql可能需要Oracle Diagnostic Pack的授权才能使用。
1. **附加数据字典**:
Oracle提供了一系列的内置数据字典,如v$event_name、v$sql等,用于实时监控系统活动。例如,执行`select name from v$event_name where wait_class='Idle';`可以帮助我们识别出哪些会话处于空闲状态,有助于排查资源浪费的问题。
2. **CPU监控与调优**:
CPUMonitoring and Tuning涉及监控数据库的CPU使用情况,这可以通过分析执行计划和SQL语句的性能来实现。虽然高级工具如DBMS_SQLTUNE(REPORT_SQL_MONITOR、REPORT_SQL_MONITOR_LIST和REPORT_SQL_DETAIL)可以提供更深入的SQL监控,但在未购买诊断包的情况下,它们的使用受到限制。
3. **内存监控与调优**:
Oracle内存管理涉及到PGA和SGA的监控,以确保足够的内存分配以支持数据库操作。脚本和命令可能包括内存池的检查和调整,以优化内存使用效率。
4. **I/O监控与调优**:
I/O Monitoring and Tuning关注磁盘I/O操作,通过脚本如CATIO.SQL,可以启用I/O跟踪表,帮助分析磁盘I/O瓶颈,比如查看磁盘I/O等待情况。
5. **实时SQL监控**:
使用DBMS_SQLTUNE中的报告功能可以提供实时SQL监控,包括操作名称、目标对象描述、已完成的工作量、估计剩余时间等信息,这对于发现慢查询或优化SQL性能非常有用。
6. **性能脚本的执行**:
脚本通常需要以SYSDBA权限运行,因为它们可能涉及对系统表的访问,或者创建动态视图,如CATBLOCK用于性能管理,utllockt.sql用于锁等待图的可视化。
7. **分区表管理**:
分区表优化是另一个关键领域,utlvalid.sql脚本用于创建带有ANALYZE TABLE...VALIDATE STRUCTURE的分区表,有助于保持分区表的性能。
11g Oracle数据库的性能监控与调整工作包含对各种性能指标的实时监控、SQL性能分析、内存和I/O资源的优化以及对特定工具的合理使用,通过执行和理解这些附加数据字典与脚本,可以有效提升数据库的运行效率和稳定性。