EBS系统慢问题 - _undo_autotune=false

本文介绍了一种通过设置Oracle参数'_undo_autotune'为false来显著提升EBS系统性能的方法。这种方法的具体作用机制仍在研究中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select ksppinm, ksppstvl    from x$ksppi pi, x$ksppcv cv  where cv.indx = pi.indx 

and pi.ksppinm like '_undo_autotune%'

alter system set "_undo_autotune"=false; 

如果是 initSID.ora  pfile文件,需要手工加入这个参数到init文件中。
 
针对EBS,  具体为什么设置这个参数后会明显快很多, 还在研究中 。
本文转自ITPUB博客tolywang的博客,原文链接: EBS系统慢问题 - _undo_autotune=false,如需转载请自行联系原博主。
<think>首先,用户的问题是关于理解Oracle DBMS_SCHEDULER代码的每行代码的作用。具体来说,用户提到了之前的引用,其中有一个代码片段:EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');。用户想要一个逐行解释。 在系统级指令中,我需要: - 所有行内数学表达式使用$...$格式,但这里可能没有数学表达式,所以忽略。 - 独立公式使用$$...$$,但同样,可能不适用。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题- 在回答中引用的段落末尾添加引用标识,如[^1]。 用户可见层指令: - 回答结构清晰,逐步解决问题- 保证回答真实可靠。 用户提供的引用: - 引用[1]:关于禁用Oracle 10g自动统计收集的代码。 - 引用[2]:关于Oracle日期格式的说明,但似乎不直接相关。 用户真正的需求是理解DBMS_SCHEDULER代码的逐行解释。用户提到了EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');,所以我应该聚焦在这个代码上。 DBMS_SCHEDULER是Oracle的一个包,用于管理调度任务。GATHER_STATS_JOB是一个自动作业,用于收集数据库统计信息。 我需要解释这个代码: - EXEC:在SQL*Plus中,这是一个命令,用于执行一个PL/SQL块。它等同于BEGIN ... END;。 - DBMS_SCHEDULER.DISABLE:这是一个过程,用于禁用一个调度作业。 - 'GATHER_STATS_JOB':这是作业的名称,表示自动统计收集作业。 所以,逐行解释: 1. EXEC:这是一个SQL*Plus命令,用于执行后续的PL/SQL语句。 2. DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');:调用DBMS_SCHEDULER包中的DISABLE过程,传入作业名称'GATHER_STATS_JOB',以禁用该作业。 完整的代码是:EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB'); 这通常是在SQL*Plus环境中运行的。 为了结构清晰,我应该: - 先介绍DBMS_SCHEDULER和GATHER_STATS_JOB。 - 然后逐行解释代码。 - 最后,生成相关问题。 添加引用:在解释中,如果引用了用户提供的引用,需要添加标识。用户引用[1]提到了这个代码,所以我应该在相关部分添加[^1]。 用户引用[1]的内容是: "EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');" "SELECT STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';" 所以,我可以解释这两部分。 回答结构: 1. 介绍DBMS_SCHEDULER和GATHER_STATS_JOB。 2. 解释代码:EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB'); 3. 解释查询代码:SELECT STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB'; 4. 生成相关问题。 使用中文。 确保真实可靠:基于Oracle文档,DBMS_SCHEDULER.DISABLE过程用于禁用作业、程序或调度。</think>### Oracle DBMS_SCHEDULER 代码逐行解释 在 Oracle 数据库中,`DBMS_SCHEDULER` 是一个内置的 PL/SQL 包,用于管理调度任务(如定期运行作业)。`GATHER_STATS_JOB` 是 Oracle 10g 及以上版本中的一个自动作业,用于收集数据库统计信息(如优化器统计)。默认情况下,该作业在维护窗口运行,但有时需手动禁用以避免高峰时段资源占用[^1]。以下是针对用户提供的代码片段的逐行解释,包括执行命令和查询语句。解释基于 Oracle 官方文档和常见实践。 #### 代码解释 用户引用[1] 中的代码片段如下: ```sql EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB'); SELECT STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB'; ``` 我将逐行解释每个部分: 1. **`EXEC DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');`** - **`EXEC`**:这是 SQL*Plus 或 SQL Developer 等 Oracle 工具中的命令,是 `EXECUTE` 的简写。它用于执行一个 PL/SQL 块或过程。相当于 `BEGIN ... END;` 结构。在脚本中,它直接调用后续的 PL/SQL 代码。 - **`DBMS_SCHEDULER.DISABLE`**:这是 `DBMS_SCHEDULER` 包中的一个过程,用于禁用指定的调度作业、程序或调度器对象。当调用此过程时,它会将作业状态设置为 `DISABLED`,阻止其自动运行。 - **`('GATHER_STATS_JOB')`**:这是传递给 `DISABLE` 过程的参数,指定要禁用的作业名称。`GATHER_STATS_JOB` 是 Oracle 内置的作业,负责自动收集数据库统计信息(如表和索引的统计)。禁用后,该作业将不再运行,直到手动启用。 - **整体作用**:这行代码执行后,会立即禁用 `GATHER_STATS_JOB` 作业,防止其在系统高峰时段运行,从而减少 CPU 和 I/O 资源占用[^1]。注意:在生产环境中禁用此作业后,建议手动安排统计收集(如通过 EBS 的 `gather schema statistics` 请求在非高峰时段运行)。 2. **`SELECT STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';`** - **`SELECT STATE`**:`STATE` 是 `DBA_SCHEDULER_JOBS` 视图中的一个列,表示作业的当前状态(如 `ENABLED`、`DISABLED`、`RUNNING`)。`SELECT` 语句用于查询该列的值。 - **`FROM DBA_SCHEDULER_JOBS`**:`DBA_SCHEDULER_JOBS` 是一个数据字典视图,显示数据库中所有调度作业的详细信息(如作业名称、状态、下次运行时间)。只有具有 DBA 权限的用户才能访问此视图。 - **`WHERE JOB_NAME = 'GATHER_STATS_JOB'`**:这是一个过滤条件,指定查询目标作业的名称(`GATHER_STATS_JOB`)。它确保只返回该作业的状态信息。 - **整体作用**:这行代码用于验证 `GATHER_STATS_JOB` 作业的状态。执行后,如果返回 `DISABLED`,表示禁用成功;如果返回 `ENABLED`,表示作业仍在激活状态。这有助于确认操作效果[^1]。 #### 关键注意事项 - **权限要求**:执行 `DBMS_SCHEDULER.DISABLE` 需要 `MANAGE SCHEDULER` 或 `SYSDBA` 权限。查询 `DBA_SCHEDULER_JOBS` 需要 `SELECT_CATALOG_ROLE` 或 DBA 角色。 - **影响**:禁用 `GATHER_STATS_JOB` 可节省资源,但可能导致优化器统计过时,影响查询性能。建议定期手动运行统计收集(如使用 `DBMS_STATS.GATHER_SCHEMA_STATS`)[^1]。 - **替代方法**:在 Oracle 11g 及以上,可使用 `AUTO_TASK_ADMIN` 包管理自动任务,但 `DBMS_SCHEDULER` 仍兼容。 - **参考来源**:以上解释基于 Oracle 官方文档和用户提供的引用[^1]。引用[2] 涉及日期格式,与本代码无关,仅供参考。 ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值