oracle compile 编译无效对象
原博主: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 编译无效对象的更多相关文章
- oracle 编译无效对象
在数据库中,会存在一些无效的对象,导致这种现象的发生原因很多,其中最常见的就是数据库升级(例如修改了表的结构),迁移而引起. 编译无效对象的方式: 1 使用alter **** compile 语句进 ...
- Oracle EBS 重新编译无效对象 invalid object
1. 查看数据库中的无效对象 check oracle object SQL> select count(*) from dba_objects where status= ...
- ORACLE编译失效对象小结
在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有时候需 ...
- oracle重新编译失效对像
重新编译失效对像可执行utlrp.sql文件: SQL> @?/rdbms/admin/utlrp.sql TIMESTAMP --------------------------------- ...
- Oracle视图编译错误解决办法
因为新搭的环境,数据库是从另一个现成的环境导过来的,直接后台用exp和imp命令操作.但是新环境的Oracle数据库有问题,一些视图创建不了,导致用到这些视图的视图和存储过程也编译不了.后来手工重新编 ...
- 转://oracle 重新编译用户无效对象
select owner,object_name, replace(object_type,' ','') object_type,to_char(created,'yyyy-mm-dd') as c ...
- 处理Oracle数据中的无效对象
今天还原了一份数据库(在服务器上没有无效对象),还原在本地之后有三十几个无效对象,当时很是郁闷,然后我发现还原之后的数据库中缺少表! 开始我怀疑Oracle数据库的还原功能,但是在我创建表的时候发现, ...
- sqlplus编译失效对象
原文整理自:http://www.51testing.com/?uid-16403-action-viewspace-itemid-98161:http://www.eygle.com/archive ...
- Oracle 重新编译存储过程/函数等
第一种 如果你使用 PL/SQL Developer工具 左侧工具栏中选择“存储过程”->选择已经失效的procedure->右键->选择重新编译 即可完成 第二 ...
随机推荐
- 【Linux 网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数:对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三 ...
- js replaceAll全部替换
js不支持replaceAll,可以用函数new RegExp('要替换的内容','g')代替, 代码: str.replace(new RegExp('要替换的内容','g'),"替换内容 ...
- TableViewCell去除选中效果
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ [tableV ...
- c#引用命名空间的作用
System 包含用于定义常用值和引用数据类型.事件和事件处理程序.接口.属性和处理异常的基础类和基类.其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序 ...
- class configured for Signature (provider: BC) cannot be found
java.security.NoSuchAlgorithmException: class configured for Signature (provider: BC) cannot be foun ...
- 访问注解(annotation)的几种常见方法
java的注解处理器类主要是AnnotatedElement接口的实现类实现,为位于java.lang.reflect包下.由下面的class源码可知AnnotatedElement接口是所有元素的父 ...
- mysql中left join设置条件在on与where时的区别
一.首先我们准备两张表来进行测试. CREATE TABLE `a` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `na ...
- C# Request.RawUrl与Request.Url的区别
RawUrl——不包含域名及端口的地址 Url——包含域名,最全
- div中的img垂直居中的方法,最简单! 偷学来的,,,不要说我抄袭啊(*^__^*)
让div中的img垂直居中,水平居中很简单,用text-align:center; 让div中img垂直居中的方法其实也很简单 重点是: display:table-cell; 让标签具有表格的属 ...
- hdu 1059 (多重背包) Dividing
这里;http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意是有价值分别为1,2,3,4,5,6的商品各若干个,给出每种商品的数量,问是否能够分成价值相等的 ...