`
- 浏览:
73384 次
- 性别:
- 来自:
厦门
-
sql 代码
- ORACLE9以后如果你想用基于成本的优化器,需要定期(每周)对数据库里的表和索引做analyze分析。
-
- 数据库参数文件initorasid.ora里默认的优化器 optimizer_mode= choose
-
- 你要改成 optimizer_mode =first_rows (OLTP系统)
- optimizer_mode =all_rows (DSS 系统)
-
- 下面是一个可以在UNIX环境自动生成分析表和索引的脚本analyze.sh
-
- (sys用户的密码password要根据情况修改。)
-
-
- su - oracle -c "sqlplussys/password"<<!---->
-
- set pages 9999
- set heading off
- set echo off
- set feedback off
-
- spool /oracle_backup/bin/analyze.sql;
-
- select
- 'analyze table '||owner||'.'||table_name||'estimate statistics sample 5000 rows;'
- from dba_tables
- where owner not in('SYS','SYSTEM','PERFSTAT');
-
- select
- 'analyze index '||owner||'.'||index_name||'compute statistics;'
- from dba_indexes
- where owner not in('SYS','SYSTEM','PERFSTAT');
-
- spool off;
-
- set echo on
- set feedback on
- spool /oracle_backup/log/analyze.log;
- @/oracle_backup/bin/analyze.sql
- spool off;
- exit;
-
-
- 如果你经常变动的表和索引只属于某个特定的用户(如果是test)可以把上面的
-
- owner not in('SYS','SYSTEM','PERFSTAT') 改成
- owner in('TEST')
-
- 来进行定期的分析。
-
- 注意事项:如果你使用的是默认的优化器(choose),一定不要定期使用上面那个analyze.sh脚本。
- 因为这时优化器可能更倾向于全表扫描。
-
- 如果统计分析资料不全,SQL运行时会对缺少统计资料的表进行数据采集。会大大降低SQL的执行速度。
-
- 我们要用下面这个del_analyze.sh脚本定期删除可能产生的分析结果,保证优化器按规则(rule)执行。
-
-
- su - oracle -c "sqlplussys/password"<<!---->
-
- set pagesize9999;
- set linesize 120;
- set heading off;
- set echo off;
- set feedback off;
-
- spool/oracle_backup/bin/del_analyze.sql;
-
- select
- 'analyze table '||owner||'.'||table_name||'delete statistics;'
- from dba_tables
- where owner not in('SYS','SYSTEM','PERFSTAT');
-
- select
- 'analyze index '||owner||'.'||index_name||'delete statistics;'
- from dba_indexes
- where owner not in('SYS','SYSTEM','PERFSTAT');
-
- spool off;
-
- set echo on;
- set feedback on;
- spool /oracle_backup/log/del_analyze.log;
- @/oracle_backup/bin/del_analyze.sql
- spool off;
- exit;
-
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
通过分析表和索引,Oracle可以更新统计信息,这些信息将被查询优化器用于选择最佳的执行计划。本文将详细介绍如何自动生成表分析SQL语句和索引分析SQL语句。 #### 表分析语句 表分析语句主要用于更新表的统计信息...
通过对给定的SQL查询语句的分析,我们可以有效地检测Oracle表的碎片情况,并据此采取相应的优化措施。合理管理和优化表碎片不仅可以提高查询性能,还能节省宝贵的存储资源。希望本文能为Oracle数据库管理员提供一定...
本文将深入探讨Oracle动态性能表的结构、功能以及如何使用它们来分析数据库性能。 首先,Oracle动态性能表主要由一系列以“V$”开头的视图组成,如V$SESSION、V$SYSTEM_EVENT、V$BUFFER_CACHE等。每个V$视图代表一...
- 实施监控:使用Oracle的动态性能视图(如V$TEMPSPACE_USAGE,V$SESSION_TEMP_SPACE_USAGE)定期监控Temp表空间的使用情况,以便及时发现潜在问题。 - 设置警告阈值:在告警日志中设置适当的阈值,当Temp表空间...
2. **定期分析表统计信息**:使用`ANALYZE TABLE`命令定期更新表的统计信息,确保优化器能够基于准确的数据作出最佳的执行计划决策。 3. **监控性能变化**:实施优化后,需要持续监控数据库性能的变化,以确保所采取...
ADDM是Oracle的自动诊断监视器,定期分析数据库性能,提出内存调整建议。 2. 实时监控 定期检查V$SESSION、V$PGA_MEMORY_ALLOCATIONS等视图,监控内存使用状态,及时发现异常。 总结,Oracle内存全面分析涉及SGA...
在Oracle数据库管理中,将表结构导出到Excel文件是一个常见的需求,这有助于数据分析、报告制作或数据共享。以下是一个详细的步骤指南,介绍如何完成这个任务。 首先,我们需要准备一个SQL查询来获取所需表的数据...
"Oracle表结构导Word工具"就是为了解决这个问题而设计的,它能够将Oracle数据库中的表结构方便快捷地导出成Word文档,使得信息更易于阅读和共享。 这个工具的核心功能在于自动化生成表结构的详细文档,包括表名、...
- **分析表统计数据**:`ANALYZE my_table COMPUTE STATISTICS;` 该命令用于收集并更新表的统计信息,这对优化查询计划非常有帮助。 - **查询表使用的extent信息**:`SELECT extent_id, bytes FROM dba_extents ...
分析表和索引可以手动执行,但通常建议定期自动化执行,以反映数据的变化。在描述中提到的`analyze.sh`脚本就是一个例子,它可以在UNIX环境下由sys用户自动运行,对指定的所有非系统表和索引进行5000行的采样分析。...
### Oracle 外部表知识点详解 #### 一、外部表的概念及特性 **定义与功能:** 外部表是Oracle数据库自9i版本开始引入的一种特殊表类型,它并不存储在数据库内部,而是指向操作系统文件系统中的某个文件。通过这种...
在Unix环境下进行Oracle服务器性能分析是一项关键任务,它有助于识别并优化系统的瓶颈,提升数据库应用的性能。本文将深入探讨如何使用Unix系统内置...记住,持续监控和定期性能分析是保持Oracle服务器高效运行的关键。
### ORACLE 修改表空间大小详解 #### 一、问题背景及原因分析 在Oracle数据库管理过程中,经常会遇到因表空间不足导致的各种问题。其中一种常见问题是ORA-01652错误,即“无法在指定表空间扩展临时段”。这通常...
6. 表分析缺失:对于大型表,定期进行表分析有助于优化查询计划,提高性能。 7. 空间不足:确保有足够的磁盘空间来扩展索引,必要时增加表空间或调整表空间管理策略。 8. REDOLOG破坏:损坏的重做日志文件会导致...
在Oracle数据库管理中,遇到“表无法删除”的问题是一个相对常见的挑战,尤其是在处理系统级用户如sys时...此外,保持良好的数据库维护习惯,定期检查系统表的完整性,可以预防此类问题的发生,确保数据库的稳定运行。
- **巡检背景**:为了确保Oracle数据库系统的稳定运行和高效性能,定期进行数据库巡检是一项必要的维护工作。 - **巡检意义**: - **预防故障**:通过巡检可以提前发现并解决潜在的问题,减少系统故障发生的可能性...
通过上述两种方式,Oracle数据库管理工具提供了灵活而强大的方法来收集和分析表统计信息,从而优化数据库性能。数据库管理员可以根据实际的数据使用模式和业务需求,选择适当的时间和方法来执行统计信息的收集和分析...
1. **执行计划分析**:SQLHC能够生成并比较不同版本SQL语句的执行计划,帮助识别不理想的访问路径和操作符,如全表扫描、索引误用等。 2. **性能监控**:工具可以追踪SQL语句的执行时间、CPU使用、I/O操作等性能...
同时,应定期分析和优化索引,以保持其高效性。 - **分区索引**:对于分区表,可以创建全局分区索引或局部分区索引。全局分区索引覆盖整个表,而局部分区索引仅覆盖其对应的分区,通常局部分区索引在查询只涉及特定...
本文将详细解释如何使用Toad导出Oracle数据库中的特定表或全部表的数据。 1. **导出单个数据表中的数据** - 首先,你需要启动Toad for Oracle并进入Schema窗口,这里列出了所有数据库对象。 - 在Data部分,你可以...