oracle编译无效对象
2012-11-15 22:36
681 查看
查询无效对象SQL: SELECT COUNT (*) FROM user_objects WHERE object_type IN ('PROCEDURE','FUNCTION','TRIGGER','VIEW','PACKAGE') AND status = 'INVALID'; 很多时候,由于数据库的变更或迁移,会导致数据库中的对象失效。比如EXP/IMP操作后,由于对象之间可能存在复杂的倚赖关系,所以手工编译通常无法顺利通过。Oracle提供一个脚本用于按照顺序/依赖关系重新编译失效对象。 这个脚本是: $ORACLE_HOME/rdbms/admin/utlrp.sql 其中会调用: $ORACLE_HOME/rdbms/admin/utlrcmp.sql $Oracle_Home = Oracle的安装根目录 (d:\oracle\ora92) 这是一个通用脚本,可以在任意时候运行以重新编译数据库失效对象。通常我们会在Oracle的升级指导中看到这个脚本,Oracle强烈推荐在migration/upgrade/downgrade之后,通过运行此脚本编译失效对象。但是注意,Oracle提醒,此脚本需要用SQLPLUS以SYSDBA身份运行,并且当时数据库中最好不要有活动事物或DDL操作,否则极容易导致死锁的出现(这是很容易理解的)。如果仔细阅读一下utlrcmp.sql脚本,大家就会知道Oracle的操作方式。 执行命令如下: SQL> conn sys/change_on_install@orcl as sysdba 已连接。 SQL> @d:\oracle\ora92\rdbms\admin\utlrp.sql; PL/SQL 过程已成功完成。 表已创建。 表已创建。 表已创建。 索引已创建。 表已创建。 表已创建。 视图已建立。 视图已建立。 程序包已创建。 没有错误。 程序包主体已创建。 没有错误。 PL/SQL 过程已成功完成。 PL/SQL 过程已成功完成。 而在一般情况下,我们一般使用PLSQL Developer工具中的‘compile Invalid Objects’来查找失效对象,然后再编译;
相关文章推荐
- ORACLE批量编译无效对象
- Oracle编译用户无效对象
- Oracle Compile 编译 无效对象(ORA-04063: package body "SYS.DBMS_XPLAN" 有错误)
- oracle 重新编译用户无效对象
- ORACLE编译无效对象
- (转)编译Oracle中无效的对象的N中方法
- oracle 编译无效对象
- Oracle中重新编译无效的存储过程, 或函数、触发器等对象
- Oracle 中重新编译无效的存储过程, 或函数、触发器等对象(转)
- oracle 编译无效对象
- ORACLE批量编译无效对象
- oracle 重新编译用户无效对象
- Oracle 中重新编译无效的存储过程, 或函数、触发器等对象
- 转://oracle 重新编译用户无效对象
- oracle编译无效对象卡住--等待事件single-task message
- Oracle Compile 编译 无效对象
- Oracle Compile 编译 无效对象
- 编译所有oracle无效的对象
- 编译无效的Oracle对象
- Oracle编译无效对象方法