oracle 重新编译用户无效对象
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,oracle sys用户无效对象select owner,object_name, replace(object_type,' ','') object_type,to_char(created,'y
千家信息网最后更新 2025年11月09日oracle 重新编译用户无效对象
oracle sys用户无效对象select owner,object_name, replace(object_type,' ','') object_type,to_char(created,'yyyy-mm-dd') as created,to_char(last_ddl_time,'yyyy-mm-dd') as last_ddl_time,statusfrom dba_objects where status='INVALID' and owner='SYS';OWNER OBJECT_NAME OBJECT_TYPE CREATED LAST_DDL_TIME STATUS------ --------------------- ------------- ----------- -------------- ----------SYS ALL_TAB_STATISTICS VIEW 2011-09-17 2012-05-16 INVALIDSYS USER_TAB_STATISTICS VIEW 2011-09-17 2012-05-16 INVALIDSYS ALL_IND_STATISTICS VIEW 2011-09-17 2012-05-16 INVALIDSYS USER_IND_STATISTICS VIEW 2011-09-17 2012-05-16 INVALIDSYS VALIDATE_ORDIM PROCEDURE 2011-09-17 2012-05-16 INVALIDSYS DBMS_CUBE_ADVISE PACKAGEBODY 2011-09-17 2012-05-16 INVALIDSYS DBMS_CUBE PACKAGEBODY 2011-09-17 2012-05-16 INVALID方法1:手动重新rebuiltSQL>alter view sys.ALL_TAB_STATISTICS compile; SQL>alter view sys.USER_TAB_STATISTICS compile; SQL>alter view ALL_IND_STATISTICS compile; SQL>alter view sys.USER_IND_STATISTICS compile;SQL>alter procedure sys.VALIDATE_ORDIM compile;SQL>alter package DBMS_CUBE_ADVISE compile body; SQL>alter package DBMS_CUBE compile body;方法2:oracle用户下执行$cd $ORACLE_HOME/rdbms/admin$sqlplus / as sysdbaSQL>@utlprp.sql编译完成后,再次查看SQL> select owner,object_name 2 , replace(object_type,' ','') object_type 3 ,to_char(created,'yyyy-mm-dd') as created 4 ,to_char(last_ddl_time,'yyyy-mm-dd') as last_ddl_time, 5 status 6 from dba_objects where status='INVALID' and owner='SYS';no rows selected 方法3:以下是一个转帖的方法 --创建自动编译失效过程事务记录表declare tabcnt integer := 0;begin select count(*) into tabcnt from dba_tables where table_name='RECOMPILE_LOG'; if tabcnt = 0 then execute immediate 'create table recompile_log(rdate date,errmsg varchar2(200))'; end if;end;/ --创建编译失效对象的存储过程create or replace procedure recompile_invalid_objects as str_sql varchar2(200); --中间用到的sql语句 p_owner varchar2(20); --所有者名称,即SCHEMA errm varchar2(200); --中间错误信息begin /*****************************************************/ p_owner := 'owner';/***用户名*************************/ /*****************************************************/ insert into recompile_log(rdate, errmsg) values(sysdate,'time to recompile invalid objects'); --编译失效存储过程 for invalid_procedures in (select object_name from all_objects where status = 'INVALID' and object_type = 'PROCEDURE' and owner=upper(p_owner)) loop str_sql := 'alter procedure ' ||invalid_procedures.object_name || ' compile'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_procedures.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; --编译失效函数 for invalid_functions in (select object_name from all_objects where status = 'INVALID' and object_type = 'FUNCTION' and owner=upper(p_owner)) loop str_sql := 'alter function ' ||invalid_functions.object_name || ' compile'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_functions.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; --编译失效包 for invalid_packages in (select object_name from all_objects where status = 'INVALID' and object_type = 'PACKAGE' and owner=upper(p_owner)) loop str_sql := 'alter package ' ||invalid_packages.object_name || ' compile'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_packages.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; --编译失效类型 for invalid_types in (select object_name from all_objects where status = 'INVALID' and object_type = 'TYPE' and owner=upper(p_owner)) loop str_sql := 'alter type ' ||invalid_types.object_name || ' compile'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_types.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; --编译失效索引 for invalid_indexs in (select object_name from all_objects where status = 'INVALID' and object_type = 'INDEX' and owner=upper(p_owner)) loop str_sql := 'alter index ' ||invalid_indexs.object_name || ' rebuild'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_indexs.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; --编译失效触发器 for invalid_triggers in (select object_name from all_objects where status = 'INVALID' and object_type = 'TRIGGER' and owner=upper(p_owner)) loop str_sql := 'alter trigger ' ||invalid_triggers.object_name || ' compile'; begin execute immediate str_sql; exception When Others Then begin errm := 'error by obj:'||invalid_triggers.object_name||' '||sqlerrm; insert into recompile_log(rdate, errmsg) values(sysdate,errm); end; end; end loop; end;/ --创建任务计划,每天早上8点整执行该任务,且保证此任务有且只有一个declare jobcnt integer :=0; job_recompile number := 0; str_sql varchar2(200);begin select count(*) into jobcnt from all_jobs where what = 'recompile_invalid_objects;' and broken = 'N'; if jobcnt > 0 then for jobs in (select job from all_jobs where what = 'recompile_invalid_objects;' and broken = 'N') loop str_sql := 'begin dbms_job.remove('||jobs.job||'); end;'; begin execute immediate str_sql; exception When Others Then null; end; end loop; end if; --创建任务计划 dbms_job.submit(job_recompile,'recompile_invalid_objects;',sysdate,'TRUNC(SYSDATE + 1) + 8/24'); --启动任务计划 dbms_job.run(job_recompile);end;/
编译
任务
方法
用户
过程
对象
存储
事务
信息
再次
函数
只有
名称
所有者
手动
用户名
类型
索引
触发器
记录表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全gms
服务器e5200
cdn服务器连接失败
网络安全人员图片
数据库二级缓存
计算机网络技术前景
nginx视频服务器
计算机网络技术的说说
苹果邮箱服务器怎么填
网络安全相关的词
魔兽不同服务器相同名字
保定豆荚网络技术
沈阳互联网科技公司排名
廉价服务器
现在网络技术的核心是什么
古巴软件开发者
网络安全为人民靠人民简介
国产12核cpu搭载的服务器
软件开发行业3-5年的规划
新丝路大唐无双服务器玩法介绍
梦幻新诛仙服务器开启时间
建立个人诚信数据库
网络技术及应用 翻译
如何搭建服务器集群
网络安全 试卷
集成化网络安全测试软件
500服务器错误服务器内部错误
中心机房服务器功率一般多大
已有数据库加密教程
c 打开数据库代码