外观
Oracle 内置工具
性能诊断工具
SQL Tuning Advisor
功能说明:自动分析SQL语句并提供优化建议
使用场景:
- 优化高负载SQL语句
- 分析执行计划问题
- 自动生成优化建议
使用方法:
sql
-- 创建SQL调优任务
DECLARE
l_task_id VARCHAR2(30);
BEGIN
l_task_id := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_text => 'SELECT * FROM employees WHERE department_id = :dept_id',
bind_list => SYS.SQLTUNE.SQL_BINDS(1),
user_name => 'SCOTT',
scope => 'COMPREHENSIVE',
time_limit => 60,
task_name => 'EMP_DETAILS_TUNING',
description => 'Tune employee details query');
-- 执行调优任务
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'EMP_DETAILS_TUNING');
-- 查看调优建议
DBMS_OUTPUT.PUT_LINE(DBMS_SQLTUNE.REPORT_TUNING_TASK('EMP_DETAILS_TUNING'));
END;
/19c vs 21c差异:
- 21c增强了对复杂SQL的分析能力
- 21c支持更多类型的优化建议
Automatic Workload Repository (AWR)
功能说明:自动收集和分析数据库性能统计信息
使用场景:
- 性能趋势分析
- 瓶颈识别
- 容量规划
常用操作:
sql
-- 手动创建AWR快照
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
-- 查看AWR报告
SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(
(SELECT MAX(snap_id)-1 FROM DBA_HIST_SNAPSHOT),
(SELECT MAX(snap_id) FROM DBA_HIST_SNAPSHOT),
1));管理工具
Database Resource Manager
功能说明:管理数据库资源分配
使用场景:
- 限制特定用户或应用的资源使用
- 确保关键业务应用获得足够资源
使用方法:
sql
-- 创建资源计划
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_PLAN('PROD_PLAN', 'Production Resource Plan');
-- 创建资源消耗组
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('OLTP_APP', 'Online Transaction Processing');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('REPORTING', 'Reporting Applications');
-- 分配CPU资源
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('PROD_PLAN', 'OLTP_APP', 70, 70, NULL, NULL);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('PROD_PLAN', 'REPORTING', 30, 30, NULL, NULL);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/
-- 启用资源计划
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'PROD_PLAN' SCOPE=BOTH;Data Pump
功能说明:高效的数据导入导出工具
使用场景:
- 数据库迁移
- 数据备份
- 跨环境数据移动
使用方法:
bash
# 导出数据库
expdp system/password@orcl full=y directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=expdp_full.log
# 导入数据库
impdp system/password@orcl full=y directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=impdp_full.log
# 导出特定表
expdp hr/hr@orcl tables=employees,departments directory=DATA_PUMP_DIR dumpfile=hr_tables.dmp19c vs 21c差异:
- 21c增强了Data Pump的并行处理能力
- 21c支持更多云存储集成选项
- 21c提供了更细粒度的导入导出控制
监控工具
Automatic Database Diagnostic Monitor (ADDM)
功能说明:自动分析数据库性能问题并提供解决方案
使用场景:
- 定期性能检查
- 问题诊断
- 性能优化
使用方法:
sql
-- 运行ADDM分析
DECLARE
l_task_id VARCHAR2(30);
BEGIN
l_task_id := DBMS_ADDM.ANALYZE(
task_name => 'ADDM_ANALYSIS',
begin_snap => (SELECT MAX(snap_id)-1 FROM DBA_HIST_SNAPSHOT),
end_snap => (SELECT MAX(snap_id) FROM DBA_HIST_SNAPSHOT));
-- 查看ADDM报告
DBMS_OUTPUT.PUT_LINE(DBMS_ADDM.GET_REPORT(l_task_id));
END;
/19c vs 21c差异:
- 21c提供了更详细的性能建议
- 21c支持更多类型的性能问题检测
- 21c增强了对云环境的支持
Real-Time SQL Monitoring
功能说明:实时监控SQL语句执行
使用场景:
- 监控长运行SQL
- 诊断执行问题
- 性能调试
使用方法:
sql
-- 启用实时SQL监控
ALTER SESSION SET STATISTICS_LEVEL = ALL;
-- 运行SQL语句
-- 查看实时监控报告
SELECT DBMS_SQL_MONITOR.REPORT_SQL_MONITOR() FROM DUAL;
-- 或使用Enterprise Manager查看19c vs 21c差异:
- 21c增强了实时监控的粒度
- 21c支持更多监控指标
- 21c提供了更好的可视化界面
维护工具
Segment Advisor
功能说明:分析段空间使用情况并提供压缩建议
使用场景:
- 识别碎片段
- 优化存储空间
- 减少I/O开销
使用方法:
sql
-- 分析表段
EXEC DBMS_SPACE_ADVISOR.CREATE_TASK(
task_type => 'SEGMENT_ADVISOR',
task_name => 'SEGMENT_ADVISOR_TASK',
attribute_name => 'TABLE',
attribute_value => 'SCOTT.EMPLOYEES');
-- 执行分析
EXEC DBMS_SPACE_ADVISOR.EXECUTE_TASK('SEGMENT_ADVISOR_TASK');
-- 查看建议
SELECT * FROM DBA_ADVISOR_FINDINGS WHERE TASK_NAME = 'SEGMENT_ADVISOR_TASK';Scheduler
功能说明:自动化管理任务调度
使用场景:
- 定期备份
- 统计信息收集
- 维护任务
使用方法:
sql
-- 创建调度任务
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'DAILY_BACKUP',
job_type => 'EXECUTABLE',
job_action => '/home/oracle/scripts/backup.sh',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY;BYHOUR=2;BYMINUTE=0;BYSECOND=0',
enabled => TRUE);
END;
/常见问题(FAQ)
Q: 如何选择合适的内置工具?
A: 根据具体需求选择:
- 性能问题:SQL Tuning Advisor、ADDM、AWR
- 空间问题:Segment Advisor、DBMS_SPACE
- 自动化任务:DBMS_SCHEDULER
- 实时监控:Real-Time SQL Monitoring
Q: 内置工具与第三方工具相比有何优势?
A:
- 与数据库深度集成,性能影响小
- 官方支持,兼容性好
- 无需额外 licensing 成本
- 定期更新,支持最新数据库特性
Q: 如何启用自动统计信息收集?
A:
sql
EXEC DBMS_AUTO_TASK_ADMIN.ENABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);Q: 如何查看ADDM报告?
A:
sql
SELECT DBMS_ADDM.GET_REPORT(
(SELECT MAX(task_id) FROM DBA_ADDM_TASKS)
) FROM DUAL;Q: Data Pump与传统EXP/IMP工具有何区别?
A:
- Data Pump使用并行处理,速度更快
- Data Pump支持网络导入导出
- Data Pump提供更细粒度的导入导出控制
- Data Pump支持增量导出导入
最佳实践
定期运行维护任务:
- 每周运行Segment Advisor分析
- 每月生成AWR报告并分析
- 每季度运行ADDM分析
监控实时性能:
- 启用Real-Time SQL Monitoring
- 设置性能阈值告警
自动化管理:
- 使用DBMS_SCHEDULER自动执行维护任务
- 定期审查自动化任务
工具组合使用:
- 结合AWR和ADDM分析性能问题
- 使用SQL Tuning Advisor和Real-Time SQL Monitoring诊断SQL问题
版本差异注意:
- 19c中部分旧工具已被弃用,建议使用新工具
- 21c增强了对云环境的支持,建议升级时考虑云迁移需求
通过合理使用Oracle内置工具,可以有效提高数据库管理效率,减少人工干预,确保数据库系统的高性能、高可用性和安全性。
