日期:2014-05-17 浏览次数:21086 次
--建立一个日志表
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;
------解决方案--------------------
感觉这些应该是人为的错误,地基没打好,肯定没法盖楼