1. 查看数据库中的无效对象
check oracle object
SQL> select count(*) from dba_objects where status='INVALID';
SQL> select count(*) from dba_objects where status='INVALID';
2. 关闭应用,数据库和监听不能关闭
cd $ADMIN_SCRIPTS_HOME
./adadstpall.sh apps/apps
3. 用APP用户,执行adadmin打开维护模式并重新编译APPS Schema;
打开维护模式
adadmin->Change Maintenance Mode->1. Enable Maintenance Mode
重新编译APPS Schema
Compile/Reload Applications Database Entities menu-> 1. Compile APPS schema
打开维护模式
adadmin->Change Maintenance Mode->1. Enable Maintenance Mode
重新编译APPS Schema
Compile/Reload Applications Database Entities menu-> 1. Compile APPS schema
4. 检查无效对象的数量,关闭维护模式,启动应用
SQL> select count(*) from dba_objects where status='INVALID';
adadmin->Change Maintenance Mode->2. Disenable Maintenance Mode
再重启应用即可
cd $ADMIN_SCRIPTS_HOME
./adadstral.sh apps apps
PS :
1、编译整个数据库中的无效对象
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
2、编译数据库中单个的无效对象:
编译无效包体: alter package package_name complie;
编译无效的函数:alter function function_name complies;
本文转自ITPUB博客tolywang的博客,原文链接:Oracle EBS 重新编译无效对象 invalid object,如需转载请自行联系原博主。