各位Oracle大侠怎么不回音啊?
解决方案 »
- rman基于丢失部分归档日志不完全恢复失败
- 行级触发器和语句触发器
- SQL Loader导入数据速度不稳定的原因
- 菜鸟求助 建表时语句问题
- Linux上面的ORACLE数据库,在一次关机后重启时,出现ORA-24324错误,请帮忙????
- 有没有熟悉oracle7的专家,有急事请教!!!
- 我的全连接报告错误,大家帮我看一下(立即结帖)
- 怎么把数据库里时间字段的日期部分值取出来啊
- 我在Oracle 8i中插入数据时,为什么有的时候数据纪录没有在最后插入?(100分!)
- 如何将ORACLE数据库的表记录输出到文本文件(成功后加分100)
- 刚学Oracle,菜鸟一个,很多问题不懂,请教大家:建完库后怎么建表?......
- 刚学习oracle,一个棘手的问题
下面这个procedure我就用job自动跑。CREATE OR REPLACE PROCEDURE Compile_Invalid_Trigger
AS
CURSOR c1
IS SELECT * FROM user_objects WHERE status='INVALID' AND object_type = 'TRIGGER';
l_c1 c1%ROWTYPE;
sql_str VARCHAR2(200);
sql_code VARCHAR2(15);
sql_errtxt VARCHAR2(100);
-- TRIGGER和PROCEDURE失效很有可能是所涉及到的对象被改变
-- 需要重新编译或者修改
-- 本过程试着找寻出无效的trigger并且自动重新编译
-- 若编译无法通过再发出警告
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO l_c1;
EXIT WHEN c1%NOTFOUND;
sql_str:='alter ' || l_c1.object_type|| ' ' ||l_c1.object_name||' compile';
EXECUTE IMMEDIATE sql_str;
sql_code:=SQLCODE;
sql_errtxt:=SUBSTR(SQLERRM,1,100);
INSERT INTO TRIGGER_INVALID_LOG_LIULF
VALUES(p_date,l_c1.object_name,sql_code,sql_errtxt,0);
COMMIT;
END LOOP;
CLOSE c1;
EXCEPTION
WHEN OTHERS THEN
sql_code:=SQLCODE;
sql_errtxt:=SUBSTR(SQLERRM,1,100);
INSERT INTO TRIGGER_INVALID_LOG_LIULF
VALUES(p_date,l_c1.object_name,sql_code,sql_errtxt,1);
COMMIT;
END;
/
等下一次执行这些对象的时候,Oracle会自动重新编译它们.
一、存储过程(触发器)关联到的对象有过变动,比如先drop再create。
还有一个忘记是什么原因了。我一般都是ALKEEN一样处理,自己写一个job定时编译失效的对象