日期:2014-05-17 浏览次数:20899 次
--建立一个日志表 create table ERROR_LOG ( TIMESTAMP DATE, USERNAME VARCHAR2(30), INSTANCE NUMBER, DATABASE_NAME VARCHAR2(50), ERROR_STACK VARCHAR2(2000), SQL_TEXT VARCHAR2(4000) ); --建立一个错误触发器,注意sql_text字段值 CREATE OR REPLACE TRIGGER LogErrors AFTER ServerError ON TEST.SCHEMA --这里针对TEST用户,可修改,也可针对所有数据库使用on database DECLARE sql_txt ora_name_list_t; v_stmt VARCHAR2(4000); n BINARY_INTEGER := 0; BEGIN n := ora_sql_txt(sql_txt); IF nvl(n, 200) <> 200 THEN FOR i IN 1 .. n LOOP v_stmt := v_stmt || sql_txt(i); END LOOP; dbms_output.put_line(v_stmt); END IF; INSERT INTO error_log VALUES (SYSDATE, sys.Login_user, sys.Instance_num, sys.DataBase_Name, Dbms_Utility.Format_Error_Stack, v_stmt); END LogErrors;
------解决方案--------------------
感觉这些应该是人为的错误,地基没打好,肯定没法盖楼