如何通过调用包实现对数据库快照的重新编译

[复制链接]
查看11 | 回复2 | 2009-10-9 08:28:00 | 显示全部楼层 |阅读模式
在用exp和imp进行数据库回复时,原先建立的数据库快照,可能因为导入时的依附关系,其状态为INVALID(查询 select * from user_objects where status='INVALID'),原先我曾经写过一个重新编译的过程,用到了DBMS_DDL.ALTER包,但是由于快照在上面的查询中返回的OBJECT_TYPE为UNDEFINDED,结果报错为“权限不够或对象不存在”,现在不知如何解决,请高手指点。
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
大家都没有遇到过这个问题么?这是我写的Produrce
create or replace procedure ExObjectsCompile_P
(V_SchemaName in string
,v_Exec in out integer
) is
cursor cu_package is
select object_name, object_type
from all_objects
where status = 'INVALID'and owner = V_SchemaName and object_type'UNDEFINED'; --不可用对象数据集
v_rec cu_package%rowtype;
v_LastTimes integer;
e_DataBaseHasErr Exception;
begin
v_LastTimes:= -1;
while V_Exec>0 Loop
V_Exec:=0;
for v_rec in cu_package loop
sys.dbms_ddl.alter_compile(type => v_rec.object_type,

schema => V_SchemaName,

name => v_rec.object_name);
V_Exec:=V_Exec+1;
end loop;
if v_LastTimes=v_Exec then
raise

e_DataBaseHasErr;
else
v_LastTimes:=V_Exec;
end if;
end loop;
exception
when e_DataBaseHasErr then
v_Exec:= 1;
end ExObjectsCompile_P;
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
大家没有遇到过这样的问题么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行