[20170410]11G ora_sql_txt是否有效.txt

[20170410]11G ora_sql_txt是否有效.txt

--链接问的问题: http://www.itpub.net/thread-2086256-1-1.html
--我写的测试脚本,自己测试看看:

1.环境:
SYS@test> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

CREATE TABLE SYS.ERROR_LOG
(
  IP_ADDRESS       VARCHAR2(30 BYTE),
  USERNAME         VARCHAR2(30 BYTE),
  INSTANCE_NUMBER  NUMBER(2),
  THEDATE          DATE,
  ERRORMSG         VARCHAR2(4000 BYTE),
  OTHERMSG         VARCHAR2(4000 BYTE),
  SQLSTMT          VARCHAR2(4000 BYTE)
)
TABLESPACE USERS;

CREATE OR REPLACE TRIGGER SYS.LOG_ERRORS
   AFTER SERVERERROR ON DATABASE
DECLARE
   sqltext       ora_name_list_t;
   errmsg        VARCHAR2 (4000) := NULL;
   errstmt       VARCHAR2 (4000) := NULL;
   errothermsg   VARCHAR2 (4000) := NULL;
BEGIN
   IF ( is_servererror (942))
   THEN
      FOR DEPTH IN 1 .. ora_server_error_depth
      LOOP
         errmsg := errmsg || ora_server_error_msg (DEPTH);
      END LOOP;

      FOR cntr IN 1 .. ora_sql_txt (sqltext)
      LOOP
         errstmt := errstmt || sqltext (cntr);
      END LOOP;

      SELECT 'sid:' || SID || ' SERIAL#: ' || serial# || ' machina:' || machine || ' program:' || program || ' module:'
             || module
        INTO errothermsg
        FROM v$session
       WHERE SID = (SELECT SID
                      FROM v$mystat
                     WHERE ROWNUM = 1);

      INSERT INTO error_log
                  (ip_address, username, instance_number, thedate, errormsg, othermsg,
                   sqlstmt
                  )
           VALUES (SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), ora_login_user, ora_instance_num, SYSDATE, errmsg, errothermsg,
                   errstmt
                  );
   END IF;
END;
/

2.测试:
SYS@test> SYS@test> select * from aaaaaaaaa;
select * from aaaaaaaaa
              *
ERROR at line 1:
ORA-00942: table or view does not exist

SYS@test>select * from error_log;

Record View
As of: 2017/4/10 20:39:19

IP_ADDRESS:       
USERNAME:         SYS
INSTANCE_NUMBER:  1
THEDATE:          2017/4/10 20:35:55
ERRORMSG:         ORA-00942: table or view does not exist

OTHERMSG:         sid:242 SERIAL#: 3 machina:WORKGROUP\XXXX program:sqlplus.exe module:sqlplus.exe
SQLSTMT:          select * from aaaaaaaaa

--//不是ok的吗?我使用12c.

时间: 2024-09-20 17:48:22

[20170410]11G ora_sql_txt是否有效.txt的相关文章

[20170410]快速找回触发器内容.txt

[20170410]快速找回触发器内容.txt --上午登录发现一个是触发器被人为删除了,需要恢复.链接http://www.itpub.net/thread-2084789-1-1.html. --我提供几个方法:1.取出备份的system数据文件,通过bbed之类的工具定位.2使用logminer 应该也可以定位,表sys.source$. --实际上还有1个简单粗暴的方法,直接通过strings查询归档日志.例子如下: 1.环境: SYS@book> @ &r/ver1 PORT_ST

[20170516]11G use_large_pages参数2.txt

[20170516]11G use_large_pages参数2.txt //前面我提到如果设置use_large_pages=auto.设置页面大小不足时,oracle会oradism经常修改内核参数vm.nr_hugepages. //忘记测试是否在退出后可以收回.链接如下: http://blog.itpub.net/267265/viewspace-2135210/ --//不知道什么回事,以前写的,忘记发了,补上. 1.环境 SYS@book> @ &r/ver1 PORT_STR

[20150929]11g关于行链接.txt

[20150929]11g关于行链接.txt --曾经写过block record flag: http://blog.itpub.net/267265/viewspace-1753924/ http://blog.itpub.net/267265/viewspace-1753933/ --总结如下: #define KDRHFK 0x80 Cluster Key                                    =>使用K表示 #define KDRHFC 0x40 Clu

[20170207]11G审计日志清除.txt

[20170207]11G审计日志清除.txt --//11G缺省打开了许多审计,比如登录审计(我个人建议仅仅审计不成功的登录,特别对登录密集的系统),如果系统上线时没有关闭或者取 --//消一些审计,sys.aud$在system表空间,会导致空间异常增加,而且占用system表空间不是很合理.必须建立良好的监测清理机制. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ---

[20150511]关于11G Direct Path Read.txt

[20150511]关于11G Direct Path Read.txt --前一阵子被别人问到升级到11G要注意那些细节,我给对方讲了审计,用户口令管理(大小写),sql tuning advisor,auto space advisor, --以及Direct Path Read等问题,对方问了很多Direct Path Read相关的问题. --实际上就是讲简单就是一些表大于一定的情况下,读取数据从磁盘,绕过buffer cache的情况. --如果有用户使用Direct Path Rea

[20161130]11g跟踪文件位置.txt

[20161130]11g跟踪文件位置.txt --11G使用adrci管理跟踪文件,支持XML,不再像10g那样的目录管理方式. --实际上在安装时仅仅设置参数diagnostic_dest.看看我的测试机器. 1.环境: SYS@book> @ &r/ver1 PORT_STRING         VERSION     BANNER ------------------- ----------- --------------------------------------------

[20150812]11g子游标obsolete.txt

[20150812]11g子游标obsolete.txt --昨天听别人提到11.2.0.3下有一个bug,当子游标数量达到100后,如果产生101个子游标,那么父游标以及100个子游标会设置为obsoleted. --重新生成新的父游标.但是那些过期的child cursor不会从v$sql中消失,dbms_shared_pool.purge也无法将这些过期的child cursor --flush出去. --正好,我目前的测试环境主要是11.2.0.3,自己测试看看. 1.建立测试环境: S

[20130730]11G的DRCP特性.txt

[20130730]11G的DRCP特性.txt http://www.oracle-base.com/articles/11g/DatabaseResidentConnectionPool_11gR1.php Database Resident Connection Pool (DRCP) in Oracle Database 11g Release 1        The database resident connection pool (DRCP) reduces the resour

[20121004]11G下编译bbed.txt

[20121004]11G下编译bbed.txt cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed $ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed)rm -f /u01/app/oracle11g/product/11.2.0/db_1/rdbms/lib/bbedgcc -o /u01/a