oracle-ORA-12012: error on auto execute of job "SYS"."ORA$AT_SA_SPC_SY_%

本文记录了在Oracle11.2.0.3版本中遇到的空间顾问自动执行任务时出现的数值溢出错误ORA-01426,并提供了详细的错误日志。分析指出这是由于bug16621589导致,在计算未压缩块的未压缩字节数时发生了溢出。文中给出了三种解决方案:升级数据库到12.1.0.2或以上版本;应用补丁16621589;禁用自动空间顾问。

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

今天查看alert日志的时候发下如下错误信息:

Sat Nov 11 06:29:37 2017
Errors in file /u01/app/oracle/diag/rdbms/xxxxj002_38682.trc:
ORA-12012: error on auto execute of job “SYS”.”ORA$AT_SA_SPC_SY_6070”
ORA-01426: numeric overflow
ORA-06512: at “SYS.DBMS_ADVISOR”, line 201
ORA-06512: at “SYS.DBMS_SPACE”, line 2480
ORA-06512: at “SYS.DBMS_SPACE”, line 2560
Sat Nov 11 14:41:18 2017

查询和分析解决如下:

CHANGES
TRecently upgraded to 11.2.0.3. It used to work in 11.1.0.7 or earlier releases.

CAUSE
This is due to the bug 16621589. As per this bug, when the space advisor is running, calculation of uncompressed bytes from uncompressed blocks generated overflow. This is because the uncompresses bytes are stored in PLS_INTEGER storage data type and after internal multiplication and calculation, this datatype was not able to withhold the resultant value and is throwing the overflow error. The fix is to make data types of uncmp_bytes and cmp_bytes to use INTEGER instead of PLS_INTEGER.

SOLUTION
To resolve this issue:
- Upgrade the database to version 12.1.0.2 (and above) or 12.2 (future version) where this bug is fixed.
OR 下面
- Apply Patch 16621589.

OR

  • As a workaround: Disable autospace advisor, if you are not using it, by executing the following steps:
    BEGIN
    DBMS_AUTO_TASK_ADMIN.DISABLE(
    client_name => ‘auto space advisor’,
    operation => NULL,
    window_name => NULL);
    END;
    /
<think>我们正在处理一个关于RMAN错误的问题。用户遇到的错误是: RMAN-06136: Oracle error ORA-04045: errors during recompilation/revalidation of SYS.KU$_TTS_TAB_TABLESPACE_VIEW ORA-16000: database open for read-only access 根据错误信息,有两个关键点: 1. ORA-04045:在重新编译/验证SYS.KU$_TTS_TAB_TABLESPACE_VIEW时出错。 2. ORA-16000:数据库处于只读模式。 结合引用内容,我们注意到引用[2]提到了RMAN跨版本恢复,引用[3]提到了替换OPatch目录(即打补丁操作)。因此,这个错误可能发生在跨版本恢复或升级过程中。 分析错误原因: - ORA-16000表明数据库当前以只读方式打开。在只读数据库上,不能执行任何DDL操作(包括重新编译视图)。 - 错误发生在尝试重新编译SYS.KU$_TTS_TAB_TABLESPACE_VIEW时,这是一个系统视图,通常与传输表空间(TTS)相关。 可能的原因: 1. 在只读数据库上执行了需要写操作的任务(例如,重新编译视图)。 2. 数据库升级或恢复过程中,某些步骤要求数据库处于读写模式,但当前却是只读模式。 解决方案: 1. 将数据库切换到读写模式: - 如果数据库是正常打开的只读模式,可以关闭数据库并以读写模式重新打开。 - 执行以下步骤: ```sql SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ WRITE; ``` 然后重试导致错误的操作。 2. 如果错误发生在跨版本恢复或升级过程中,需要确保在恢复完成并打开数据库时,数据库处于读写模式。特别是,当使用RMAN恢复后,打开数据库时可能指定了只读模式,需要改为读写模式。 3. 检查是否在只读数据库上运行了不兼容的操作。例如,RMAN的某些操作(如恢复目录的重新同步)可能需要写系统表,因此不能在只读数据库上执行。 4. 如果问题发生在升级后,可能需要重新编译无效对象,但同样需要数据库处于读写模式。可以尝试在读写模式下重新编译: ```sql ALTER VIEW SYS.KU$_TTS_TAB_TABLESPACE_VIEW COMPILE; ``` 但是,由于这是一个系统对象,通常由catproc.sql或其他脚本处理,所以可能需要运行升级后脚本。 5. 参考引用[3]中提到的打补丁操作,如果这个错误发生在打补丁过程中,可能是因为补丁应用不完整。确保按照补丁说明正确应用了所有步骤,包括运行必要的脚本。 注意事项: - 在更改数据库模式之前,确保有备份。 - 如果数据库是物理备库(处于只读模式),那么不能直接切换为读写模式,因为这会破坏备库。此时,需要确认操作是否应该在主库上执行。 根据用户提供的信息,我们没有直接的引用解决这个错误,但根据错误信息分析,将数据库切换到读写模式是首要步骤。 相关问题: 1. 如何将Oracle数据库从只读模式改为读写模式? 2. 在只读数据库上可以执行哪些RMAN操作? 3. 如何解决ORA-04045错误? 4. Oracle数据库升级后常见问题有哪些?</think>### 解决RMAN-06136与ORA-04045错误 **错误分析** 该错误包含两个关键信息: 1. `ORA-16000`:数据库处于只读模式 2. `ORA-04045`:尝试在只读数据库上重新编译系统视图`SYS.KU$_TTS_TAB_TABLESPACE_VIEW`(该视图与表空间传输相关) 根本原因是:**RMAN操作需要在读写模式下执行系统对象编译,但当前数据库被意外打开为只读模式**。 --- ### 解决方案 #### 步骤1:检查数据库模式 ```sql SELECT open_mode FROM v$database; ``` - 若返回 `READ ONLY` 则需切换模式[^1] #### 步骤2:切换到读写模式 ```sql SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ WRITE; -- 关键操作 ``` #### 步骤3:重新执行失败的RMAN操作 ```bash rman target / RMAN> RECOVER DATABASE; -- 根据实际场景替换为原操作 ``` #### 步骤4:验证系统对象状态 ```sql SELECT object_name, status FROM dba_objects WHERE object_name='KU$_TTS_TAB_TABLESPACE_VIEW'; ``` - 若状态为`INVALID`,需手动编译: ```sql ALTER VIEW SYS.KU$_TTS_TAB_TABLESPACE_VIEW COMPILE; ``` --- ### 根本原因预防 1. **环境检查** 执行关键操作前验证数据库模式: ```bash echo $ORACLE_SID # 确认实例名[^1] sqlplus / as sysdba <<EOF SELECT open_mode FROM v\$database; EOF ``` 2. **跨版本操作规范** - 跨版本恢复时(如10g→11g)确保目标库版本兼容性[^2] - 使用`DBMS_TTS`包前必须处于读写模式 3. **补丁管理** 升级后及时应用最新OPatch: ```bash unzip -q p6880880_*.zip -d $ORACLE_HOME # 替换OPatch[^3] ``` --- ### 附加说明 - 此错误常见于**表空间传输**或**数据库升级**场景 - 若在Data Guard备库出现,需在主库执行操作 - 系统视图编译错误可能需运行`utlrp.sql`重新编译无效对象
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若行若冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值