1.某系统做数据库脚本升级后,发现job运行有错误,见下图:
2.进一步查看,发现系统sys用户下,有些存储过程和包有编译错误:
3.后经过检查,发现数据库脚本升级前,原来的job可以运行(是否报错不确定),新的job运行虽然报错,但是也完成了要执行的操作,但是无法修改执行时间等信息。
4.尝试使用utlrp.sql脚本对无效对象重新编译:
SQL>$ORACLE_HOME\rdbms\admin\utlrp.sql
该脚本运行前有以下注意事项
4.1 确认以下包是否有错误,如果有错误尝试手工编译
STANDARD
DBMS_STANDARD
4.2 以下为运行脚本的注意事项,请仔细阅读
Rem NOTES
Rem * This script must be run using SQL*PLUS.
Rem * You must be connected AS SYSDBA to run this script.
Rem * There should be no other DDL on the database while running the
Rem script. Not following this recommendation may lead to deadlocks.
4.3 以sys/sysdba权限运行脚本
5.由于工作人员失误,没有按照要求在非生产时间执行脚本,出现数据库死锁,并且plsql和sql plus等工具无法连接,数据库错误信息如下:
日志报的错:ORA-04020: 尝试锁定对象 SYS.CDC_ALTER_CTABLE_BEFORE 时检测到死锁
6.经查,该问题可能与上面提到的死锁不同,是oracle的一个bug
bug信息:
This is cause by internal bug 3017048 fixed in 10.1.0.2.
Internal BUG:3017048 - Ora-4020, Functional Index Locking During Invalidation Causing Self-Deadlock
Researching the issue on ora-4020 and SYS.CDC_CREATE_CTABLE_BEFORE lead to BUG 3228083 which was
experiencing similar problems on the same object. This bug was closed as a duplicate of bug 3017048.
Internal BUG:3228083 - Appsst10g:R8:Utlrcmp Error: Ora-04045: Sys.Cdc_Create_Ctable_Before
fixed in 10.1.0.2.
7.解决方法
Set the following in the INIT.ORA then restart the database:
_system_trig_enabled=false
aq_tm_processes=0
job_queue_processes=0
Then rerun CATALOG.SQL.
After creating and running these scripts and the database is ok then restart the database with the parameters taken out of the init.ora.
8.参考资料
http://ijavagos.iteye.com/blog/1209200
http://www.oracle-base.com/articles/misc/RecompilingInvalidSchemaObjects.php
分享到:
相关推荐
Oracle MySQL数据库故障处理应急方案是一系列针对数据库在运行过程中可能遇到的锁等待、latchfree、cachebufferchains以及librarycachelock等高资源消耗和CPU负载问题的处理方法和步骤。该方案详细描述了上述问题的...
例如银行数据库包含各客户帐户的余额,任何帐户金额的变更都是一次事务的处理。如转账操作:帐户A取款100转帐到帐户B帐户存入100步骤:事务T从A帐户取100¥到B帐户T:read(A);结论:取款和存款两个步骤在一个事务...
以上内容涵盖了数据库故障恢复的关键知识点,包括数据库故障恢复的重要性、备份与恢复策略、故障诊断与定位技术、数据恢复操作步骤、恢复过程中的注意事项以及预防措施与建议等方面。通过对这些知识点的深入理解和...
**具体情形:** 笔者所在医院在一次高峰时段,发现客户端无法正常登录数据库,检查后发现服务器响应缓慢。在未仔细检查数据库状态的情况下,直接重启了Oracle服务,结果发现数据库无法启动。进一步分析发现,这是因为...
- **描述**:本报告详细记录了一次IT故障事件的处理流程,包括事件的发生、影响范围、处理过程以及最终解决方案。旨在为IT团队提供故障处理的参考案例。 #### 二、事件详情 - **事件描述**: - **用户反馈**:...
在第一次将数据库从Oracle7.3升级到Oracle8.1.7后,立即关闭数据库,进行第一次脱机备份。备份完成重新打开数据库,但是数据库无法启动,提示以下错误信息: ORA-01599: failed to acquire roll-back segment (41),...
回滚段的空间不是无限延伸的,它在用户定义的范围内是有限的,当回滚段中最后一块区段使用完后,Orocle 将不得不循环使用其在本回滚段中第一次定义的区段块。 3. 数据库不能正常启动或关闭 数据库管理员可以通过...
链事务的思想是:在提交一个事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务。 4. 嵌套事务:是一个层次结构框架。有一个顶层事务(top-level transaction)控制着各个层次的事务。...
通过将数据批量导入数据库,然后逐段读取绘制到图中,特别是对数据量大的"790"值,采取分段处理的方式,避免一次性加载造成性能瓶颈。对于较少的数据,如"360"值,可一次性读取并绘制。 通过对两种数据处理方式的...
这两个操作在处理数据库迁移或故障恢复时尤其重要。 接着,数据库备份是确保数据安全的关键环节。实验涵盖了完整备份、差异备份和事务日志备份三种类型,每种都有其特定的适用场景。完整备份记录数据库的全貌,差异...
尽管这个仓库管理数据库存在不足,但它为学习者提供了一次宝贵的实战机会。分析其不完善之处,可能包括数据同步延迟、错误处理机制不健全、安全性能待提升等方面。通过对这些问题的深入研究,我们可以了解如何避免...
具体来说,在进行了一次从帝都到魔都的数据中心迁移之后,采用DG(Data Guard)切换的方式完成了数据库迁移。然而,在迁移完成后,出现了远端与目标端数据不一致的情况,这给业务带来了不小的困扰。 #### 二、问题...
风铃设备故障登记处理系统分为两个部分:故障登记处理、设备登记...为了安全起见,第一次使用本系统请修改数据库连接,用记事本或DW打开Conn.asp文件修改, 里面有说明。然后到Data目录下修改数据库名为你刚才修改的。
推荐的做法是每天备份事务日志,并至少每周备份一次数据库。 - **大型数据库处理**:对于活动频繁的大数据库,建议每天备份整个数据库,并每半小时至一小时备份一次事务日志。 - **互依数据库同步备份**:在没有跨...
6. **性能优化**:为了提高合并效率,程序可能采用了批量操作、事务处理等技术,减少单次数据库交互的次数,从而提升整体运行速度。 7. **错误处理与日志记录**:在执行过程中,程序会捕获可能出现的异常,如网络...
分卷备份指的是将大数据库拆分为更小的部分进行备份,这样在恢复时可以逐个部分进行,而不是一次性加载整个数据库。分表备份则是针对具有大量数据的表,可以单独备份每个表,以便于管理和恢复。 `mydb.php`文件可能...
批量附加SQL数据库是一种实用工具,它允许用户一次性附加多个MDF(主数据文件)和LDF(日志文件)到SQL Server实例,极大地提高了工作效率。MSSQL数据库通常由MDF和LDF文件组成,其中MDF存储实际的数据,而LDF记录了...
【知识点详解】 ...通过以上步骤和解释,我们可以看到处理TempDB损毁问题的过程涉及了对操作系统、数据库系统以及错误日志的深入理解和操作,体现了数据库管理员在故障排查和恢复中的专业知识和技能。
8. **备份与恢复策略**:考虑到数据的重要性,数据库的备份和恢复策略也是脚本的一部分,确保在系统故障或数据丢失时能快速恢复。 9. **脚本自动化**:为了方便重复部署或升级,数据库创建脚本通常会设计成自动化...