验证ORA_CLIENT_IP_ADDRESS只在系统触发器中有效
ORA_CLIENT_IP_ADDRESS函数的功能是以VARCHAR2类型返回客户端IP地址,一般只用在系统触发器中,其实它也只在系统触发器中有效.经常
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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)
