ORACLE 11G 触发器调试记录Error: PLS-00201: identifier'SYS.DBMS_SYSTEM' must be declared
2015-05-21 22:35
288 查看
1,触发器内容如下
CREATE OR REPLACE TRIGGER"LOGON_DENIED_TO_ALERT"AFTER servererror ON DATABASE
DECLARE
message VARCHAR2(168);
ip VARCHAR2(15);
v_os_user VARCHAR2(80);
v_module VARCHAR2(50);
v_action VARCHAR2(50);
v_pid VARCHAR2(10);
v_sid NUMBER;
v_program VARCHAR2(48);
BEGIN
IF(ora_is_servererror(1017)) THEN
-- get ip FOR remote connections :
IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN
ip := sys_context('userenv', 'ip_address');
END IF;
SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;
SELECT p.spid, v.program
INTO v_pid, v_program
FROM v$process p, v$session v
WHERE p.addr = v.paddr
AND v.sid = v_sid;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||
' logon denied from ' || nvl(ip,'localhost') || ' ' ||
v_pid || ' ' || v_os_user || 'with ' || v_program || ' – ' ||
v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
ENDIF;
END;
----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址: /article/1563893.html
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
2,执行报错信息:
Compilation errors for TRIGGERTIMDBA.LOGON_DENIED_TO_ALERTError: PL/SQL: ORA-00942: table or viewdoes not exist
Line: 20
Text: SELECT sid INTO v_sid FROMsys.v_$mystat WHERE rownum < 2;
Error: PL/SQL: SQL Statement ignored
Line: 20
Text: SELECT sid INTO v_sid FROMsys.v_$mystat WHERE rownum < 2;
Error: PL/SQL: ORA-00942: table or viewdoes not exist
Line: 23
Text: FROM v$process p, v$session v
Error: PL/SQL: SQL Statement ignored
Line: 21
Text: SELECT p.spid, v.program
Error: PLS-00201: identifier'SYS.DBMS_SYSTEM' must be declared
Line: 35
Text: sys.dbms_system.ksdwrt(2, message);
Error: PL/SQL: Statement ignored
Line: 35
Text: sys.dbms_system.ksdwrt(2, message);
解决办法
grant execute on sys.dbms_system to timdba;
3,再次执行还在报错:
Compilation errors for TRIGGER TIMDBA.LOGON_DENIED_TO_ALERTError: PL/SQL: ORA-00942: table or viewdoes not exist
Line: 20
Text: SELECT sid INTO v_sid FROMsys.v_$mystat WHERE rownum < 2;
Error: PL/SQL: SQL Statement ignored
Line: 20
Text: SELECT sid INTO v_sid FROMsys.v_$mystat WHERE rownum < 2;
Error: PL/SQL: ORA-00942: table or viewdoes not exist
Line: 23
Text: FROM v$process p, v$session v
Error: PL/SQL: SQL Statement ignored
Line: 21
Text: SELECT p.spid, v.program
解决办法:
grant select on sys.v_$mystat to timdba;
4,再次调试报错信息3
Compilation errors for TRIGGERTIMDBA.LOGON_DENIED_TO_ALERTError: PL/SQL: ORA-00942: table or viewdoes not exist
Line: 23
Text: FROM v$process p, v$session v
Error: PL/SQL: SQL Statement ignored
Line: 21
Text: SELECT p.spid, v.program
解决办法:
grant select on sys.v_$process to timdba;
grant select on sys.v_$session to timdba;
参考文章地址:https://blogs.oracle.com/mandalika/entry/resolving_pls_00201_identifier_dbms
相关文章推荐
- Oracle 11gR2 RMAN Duplicate 触发PLS-00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared 错误
- oracle 11.2.0.3 expdp 时报错,PLS-00201: identifier 'DMSYS.DBMS_DM_MODEL_EXP' must be declared
- identifier 'SYS.DBMS_LOCK' must be declared错误处理方法
- EXP-00056:ORA-06550:PLS-00201: identifier ‘SYS.DBMS_EXPORT_EXTENSION’ must be declared
- PLS-S-00201, identifier 'CALLDEMO.GET_EMPLOYEES' must be declared 预编译错误原因及解决办法
- identifier 'DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION' must be declared
- PLS-00201: identifier 'SYS.DBMS_JOB' must be declared 错误处理办法
- 存储过程里的序列报错Error: PLS-00302: component 'SEQUENCE_NAME' must be declared
- oracle adg PLS-00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared
- 【PLS】PLS-00201: identifier 'DBMS_REGISTRY' must be declared
- Oracle 11gR2 RMAN Duplicate 触发PLS-00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared 错误
- 也遭遇 PLS-00302: component 'SET_NO_OUTLINES' must be declared
- Oracle 11gR2 RMAN Duplicate 触发PLS00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared 错误
- imp PLS-00302: component 'SET_NO_OUTLINES' must be declared 问题的处理
- python:PyInstaller打包发布单个文件错误struct.error: argument for 's' must be a string解决
- C 报错:Error 1 error C3861: 'checkSystem': identifier not found 处理方式
- Android源码编译时遇到的问题:error:reference 'counts' cannot be declared 'mutable'
- python32版本,出现问题“struct.error: argument for 's' must be a bytes object”的解决办法
- Oracle 10g&11g sys,system 密码忘记设置解决办法