原博主:http://blog.csdn.net/tianlesoftware/article/details/4843600 

Applies to: 
Oracle Server - Enterprise Edition - Version: 10.1.0.5.0 
This problem can occur on any platform. 
Symptoms: 
The issue is that the following error was raised : 
ORA-00600: internal error code, arguments: [kesutlGetBindValue-2], [], [], [], [], [], [], [] 
The recent changes was the : 
Migration from 10.1.0.5.0 database control to Grid Control Agent v10.2.0.3.0 
What was runing at this moment of the error occurance was : 
The attempt to run SQL Tuning Advisor from Grid Control

Cause: 
Possibly invalid objects in the database. 
As the issue here was to try to use these packages and then failed: 
SYS.DBMS_SQLTUNE_INTERNAL 
body SYS.PRVT_ADVISOR 
body SYS.DBMS_ADVISOR 
body SYS.DBMS_SQLTUNE 
And as mentioned with the recent changes was the migration.

Solution: 
1. fixup 
1). connect to the database as sysdba: 
sqlplus "/ as sysdba" 
2). shutdown immediate 
3). startup migrate 
4). @?/rdbms/admin/catalog.sql 
5). @?/rdbms/admin/catproc.sql 
6). @?/rdbms/admin/utlrp.sql 
7). shutdown immediate 
8). startup

SELECT UNIQUE OBJECT_TYPE FROM ALL_objects where status = 'INVALID'; 
select 'ALTER ' || OBJECT_TYPE || ' '||owner||'.' || OBJECT_NAME || ' COMPILE;' 
from  all_objects where  status = 'INVALID' 
and  object_type in ('PACKAGE','FUNCTION','PROCEDURE', 'TABLE', 'VIEW', 'SEQUENCE', 'TRIGGER'); 
   
     
   SELECT * from dba_users; 
   select 'ALTER PACKAGE ' || OWNER||'.'|| OBJECT_NAME || ' COMPILE body;' 
from ALL_objects where status = 'INVALID' and object_type in ('PACKAGE BODY'); 
SELECT UNIQUE OBJECT_TYPE FROM ALL_OBJECTS;

2. Verify that the status of the CATPROC : 
SQL> col comp_id format a10 
SQL> col comp_name format a30 
SQL> col version format a10 
SQL> select comp_id, comp_name, status, version from dba_registry;

and the status of the other objects: 
SQL> col object_name format a30 
SQL> col owner format a15 
SQL> select object_name, owner, object_type, status from dba_objects 
where status = 'INVALID';

2-If they are invalid please do the following: 
To validate the invalid objects 
1)-Please run the utlrp.sql script to try and validate the invalid packages, then check if they are valid or still invalid. 
2 )-If the objects are still invalid after running the utlrp.sql script then run catalog.sql and catproc.sql and then run utlrp.sql 
    a) Startup restrict or startup migrate. 
    b) run catalog.sql 
    c) run catproc.sql 
    d) run utlrp.sql 
3 )-Requery for the invalid objects again. 
select owner,object_type,object_name from dba_objects where status='INVALID' ; 
4 )-If they are still invalid please try to validate them manually using the below: 
Try Manual method of validation: 
Alter procedure <owner>.<procedure_name> compile; 
Alter function <owner>.<function_name> compile; 
Alter view <owner>.<view_name> compile; 
Alter package <owner>.<package_name> compile; 
Alter package <owner>.<package_name> compile body; 
Alter materialized view <owner>.<Package_name> Compile; 
In case you have lots of invalid objects,you can generate scripts that will generate the sqls for compiling the invalid objects : 
In sqlplus connect as sys: 
set heading off 
spool compileinvalid.sql 
select 'alter '||object_type|| ' ' || owner ||'.'||object_name || ' compile;' from dba_objects 
where status='INVALID'; 
spool off 
ORA-06512: at "PS_SYSTEM.ROW_VALIDATOR_T", line 912 
ORA-06512: at "PS_SYSTEM.ROW_VALIDATOR_T", line 924 
ORA-06512: at "WORKORDER.INVENTORY_UTL", line 1260 
select owner,object_name,object_type,status from all_objects where object_name='ROW_VALIDATOR_T' and owner='PS_SYSTEM'; 
OWNER                          OBJECT_NAME                        OBJECT_TYPE       STATUS 
------------------------------ ------------------------------ ------------------- ------- 
PS_SYSTEM                      ROW_VALIDATOR_T           TYPE                      VALID 
PS_SYSTEM                      ROW_VALIDATOR_T          TYPE BODY           VALID

SQL> select owner,object_name,object_type,status from all_objects where object_name='INVENTORY_UTL' and owner='WORKORDER' 
  2  ; 
OWNER                             OBJECT_NAME                     OBJECT_TYPE          STATUS 
------------------------------ ------------------------------ -------------------      ------- 
WORKORDER                      INVENTORY_UTL           PACKAGE                  VALID 
WORKORDER                      INVENTORY_UTL           PACKAGE BODY       VALID

Then run compileinvalid.sql in sqlplus prompt as sys user.. 
To compile invalid package body use: 
alter package <package_name> compile body;

5 )-Also you could do the following  Note 100419.1  SCRIPT: VALIDATE.SQL to ANALYZE VALIDATE 
STRUCTURE objects in a Tablespace 
Please Go through the above action plan and i will be waiting for your update. 
6 )-Please make sure that these packages are valid: 
SYS.DBMS_SQLTUNE_INTERNAL 
body SYS.PRVT_ADVISOR 
body SYS.DBMS_ADVISOR 
body SYS.DBMS_SQLTUNE

References 
Note 100419.1 - SCRIPT: VALIDATE.SQL to ANALYZE .. VALIDATE STRUCTURE objects in a Tablespace

alter PACKAGE BODY SYS.DBMS_XPLAN body compile; 
alter PACKAGE BODY SYS.DBMS_SQLTUNE_INTERNAL body compile; 
alter SYNONYM PUBLIC.HHLINEOR compile; 
alter SYNONYM PUBLIC.HHNEIGHBOUR compile; 
alter SYNONYM PUBLIC.HHLINEPS compile; 
alter SYNONYM PUBLIC.HHIDROWS compile; 
alter SYNONYM PUBLIC.HHIDLROWS compile; 
alter SYNONYM PUBLIC.HHBITS compile;

---------无效索引查询 'INVALID INDEXES'

select s2.owner, s2.tablespace_name, s2.segment_name, 
        i2.table_name, s2.extents, s2.bytes, s2.blocks, i2.status 
from dba_segments s2, 
        dba_indexes i2 
where s2.owner not in ('SYS','SYSTEM') 
and s2.segment_type = 'INDEX' 
and i2.status != 'VALID' 
and s2.segment_name = i2.index_name 
and s2.owner = i2.owner 
order by 1,5,4

Oracle常用脚本
-- use sys to run this one
select    'ALTER ' || OBJECT_TYPE || ' '||owner||'.' || OBJECT_NAME || ' COMPILE;' 
from    all_objects 
where    status = 'INVALID' 
and object_type in ('PACKAGE','FUNCTION','PROCEDURE', 'TABLE', 'VIEW', 'SEQUENCE', 'TRIGGER');

--   select 
   'ANALYZE ' || OBJECT_TYPE || ' ' || OBJECT_NAME || ' COMPUTE STATISTICS;' 
from 
   user_objects 
where 
   object_type = 'TABLE';

 
 

oracle compile 编译无效对象的更多相关文章

  1. oracle 编译无效对象

    在数据库中,会存在一些无效的对象,导致这种现象的发生原因很多,其中最常见的就是数据库升级(例如修改了表的结构),迁移而引起. 编译无效对象的方式: 1 使用alter **** compile 语句进 ...

  2. Oracle EBS 重新编译无效对象 invalid object

    1.  查看数据库中的无效对象      check oracle object      SQL> select count(*) from dba_objects where status= ...

  3. ORACLE编译失效对象小结

    在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有时候需 ...

  4. oracle重新编译失效对像

    重新编译失效对像可执行utlrp.sql文件: SQL> @?/rdbms/admin/utlrp.sql TIMESTAMP --------------------------------- ...

  5. Oracle视图编译错误解决办法

    因为新搭的环境,数据库是从另一个现成的环境导过来的,直接后台用exp和imp命令操作.但是新环境的Oracle数据库有问题,一些视图创建不了,导致用到这些视图的视图和存储过程也编译不了.后来手工重新编 ...

  6. 转://oracle 重新编译用户无效对象

    select owner,object_name, replace(object_type,' ','') object_type,to_char(created,'yyyy-mm-dd') as c ...

  7. 处理Oracle数据中的无效对象

    今天还原了一份数据库(在服务器上没有无效对象),还原在本地之后有三十几个无效对象,当时很是郁闷,然后我发现还原之后的数据库中缺少表! 开始我怀疑Oracle数据库的还原功能,但是在我创建表的时候发现, ...

  8. sqlplus编译失效对象

    原文整理自:http://www.51testing.com/?uid-16403-action-viewspace-itemid-98161:http://www.eygle.com/archive ...

  9. Oracle 重新编译存储过程/函数等

    第一种  如果你使用 PL/SQL Developer工具          左侧工具栏中选择“存储过程”->选择已经失效的procedure->右键->选择重新编译 即可完成 第二 ...

随机推荐

  1. 微信小程序开发——全局配置详细介绍

    本文针对官方文档未说明清楚的进行详细探索研究,官方文档详见:全局配置 . pages: 删除页面,需要先删除app.json中pages对应页面的路径,再去删除页面相关的所有文件,不然会出现页面文件混 ...

  2. PAT L2-013 红色警报(并查集求连通子图)

    战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ...

  3. RSA加密原理使用方式签名验证

      RSA加密原理使用方式签名验证 加密是网络传输中非常重要的一环,它保证了信息的安全性,让他人无法通过抓包来获取通讯的信息也无法通过伪造信息而实现对系统的入侵.其中最为常用的信息传递加密方式就是RS ...

  4. <context:annotation-config/>,<mvc:annotation-driven/>和<context:component-scan>之间的关系

    首先看一下三个注解各自定义: ① <context:annotation-config/> 1.如果你想使用@Autowired注解,那么就必须事先在 spring 容器中声明 Autow ...

  5. 在ALV界面添加下拉框

    1.在alv界面表单属性中设置 if wa_fieldcat-fieldname = 'YC_MARK'.              wa_fieldcat-edit = 'X'.           ...

  6. SprinMVC中文件上传只在内存保留一份拷贝

    背景:web项目里经常有上传文件的模块,某些特殊场景下,上传文件的人不希望在服务器留存一份原始文件,这个时候就需要把文件放到内存里了. 笔者调试了一下springmvc里面的CommonsMultip ...

  7. 百度 echarts

    插件地址:http://echarts.baidu.com/index.html ECharts 特性 特性 丰富的可视化类型 多种数据格式无需转换直接使用 千万数据的前端展现 移动端优化 多渲染方案 ...

  8. dev NavBarControl控件

    一.新建一个导航栏 拖入一个panel到窗口上做为导航栏的容器,然后再拖入一个NavBarControl到其上,点击NavBarControl控件的右上角三角箭头展开任务列表,选择PaintStyle ...

  9. 转:css知多少(1)——我来问你来答

    1. 引言 各位前端或者伪前端(比如作者本人)的同志们,css对你们来说不是很陌生.比如我,在几年之前上大学的时候,给外面做网站就用css,而且必须用css.这样算下来也得六年多了,有些功能可能轻车熟 ...

  10. C# 出现base-64 字符数组的无效长度的解决办法

    最近的一个项目,在传递参数时,在Win2003上正常,在Win7下抛出“base-64 字符数组的无效长度”这样的错误 对比了一下经过Convert.ToBase64String()转换过的参数发现, ...