当前位置:  数据库>oracle

验证ORA_CLIENT_IP_ADDRESS只在系统触发器中有效

    来源: 互联网  发布时间:2017-05-21

    本文导语: ORA_CLIENT_IP_ADDRESS函数的功能是以VARCHAR2类型返回客户端IP地址,一般只用在系统触发器中,其实它也只在系统触发器中有效. 经常看到有人说使用ORA_CLIENT_IP_ADDRESS获得的IP为空,大概也是这个原因造成的. 这里采用DDL触发器和系统触发...

ORA_CLIENT_IP_ADDRESS函数的功能是以VARCHAR2类型返回客户端IP地址,一般只用在系统触发器中,其实它也只在系统触发器中有效.
 
经常看到有人说使用ORA_CLIENT_IP_ADDRESS获得的IP为空,大概也是这个原因造成的.
 
这里采用DDL触发器和系统触发器做对比.
 
首先准备实验用的表及两个触发器对象(一个DDL触发器,一个系统触发器)

--建立记录表
23:37:15 SYS@orcl> create table t01(id number,nn varchar2(40));
Elapsed: 00:00:00.05
--建立系统触发器
23:37:53 SYS@orcl> create or replace trigger ORA_TEST
23:38:16  2    after logon ON database
23:38:16  3  BEGIN
23:38:16  4    dbms_output.put_line(ORA_LOGIN_USER||'IP:'||NVL(ORA_CLIENT_IP_ADDRESS,'AA'));
23:38:16  5    insert into t01 select nvl(max(id),0)+1,ORA_LOGIN_USER||'[system Trigger]IP:'||NVL(ORA_CLIENT_IP_ADDRESS,'AA') from t01;
23:38:16  6  end;
23:38:17  7  /
Elapsed: 00:00:00.05
--建立DDL触发器
23:38:19 SYS@orcl> create or replace trigger ORA_TEST_ddl
23:38:38  2    after ddl ON database
23:38:38  3  BEGIN
23:38:38  4    dbms_output.put_line(ORA_LOGIN_USER||'IP:'||NVL(ORA_CLIENT_IP_ADDRESS,'AA'));
23:38:38  5    insert into t01 select nvl(max(id),0)+1,ORA_LOGIN_USER||'[DDL Trigger]IP:'||NVL(ORA_CLIENT_IP_ADDRESS,'AA') from t01;
23:38:38  6  end;
23:38:38  7  /
Elapsed: 00:00:00.11

其中特别加了ORA_LOGIN_USER来标识登录的用户,以及DDL Trigger和system Trigger字串来标识触发的是哪个触发器.

--先测试系统触发器,发现dbms_output.put_line没有输出
00:06:11 @orcl> conn cry/cry
Connected.
00:09:28 CRY@orcl> conn scott/tiger
Connected.
00:09:37 SCOTT@orcl> conn sys/ as sysdba
Connected.

此时的表t01为

00:09:40 SYS@orcl> select * from t01;

        ID NN
---------- ----------------------------------------
        1 CRY[system Trigger]IP:192.168.123.102
        2 SCOTT[system Trigger]IP:192.168.123.102
        3 SYS[system Trigger]IP:192.168.123.102
Elapsed: 00:00:00.02


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Uploadify 'uploadify.php'存在多个输入验证漏洞
  • JSP单选按钮验证、下拉框验证、复选框验证实现代码
  • 广告系统中weak-and算法原理及编码验证
  • sqlserver服务器验证改为混合验证模式步骤
  • MVC2 jQuery的验证时,关于客户端验证绑定复选框问题。
  • MD5SUM 用来验证下载的redhat7.3iso文件数据完整性可不可以在windows98中进行验证!
  • 表单验证插件 Jquery表单验证插件
  • 我用了C写了MYSQL的登陆命令CONNECT()但它不验证就进入,该如何验证
  • MD5怎么验证?我下载了ISO文件具体怎么验证?急!
  • jquery表单验证框架提供的身份证验证方法(示例代码)
  • php验证码 php非预置图片生成验证码
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)
  • php使用filter过滤器验证邮箱 ipv6地址 url验证
  • asp.net创建位图生成验证图片类(验证码类)
  • jquery内置验证(validate)使用方法示例(表单验证)
  • PHP验证码生成脚本 Securimage
  • python生成随机验证码(中文验证码)示例
  • jquery validate 自定义验证方法介绍 日期验证
  • VVC思想页面解耦合JS验证框架 vtor
  • jQuery表单验证插件 validVal


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,