可以利用登录触发器,如

CREATE OR REPLACE TRIGGER tr_login_record

AFTER logon ON DATABASE

DECLARE

miUserSid NUMBER;

mtSession v$session%ROWTYPE;

CURSOR cSession(iiUserSid IN NUMBER) IS

SELECT * FROM v$session

WHERE sid=iiUserSid;

BEGIN

SELECT sid INTO miUserSid FROM v$mystat WHERE rownum<=1;

OPEN cSession(miUserSid);

FETCH cSession INTO mtSession;

--if user exists then insert data

IF cSession%FOUND THEN

INSERT INTO log$information(login_user,login_time,ip_adress,ausid,terminal,

osuser,machine,program,sid,serial#)

VALUES(ora_login_user,SYSDATE,SYS_CONTEXT (‘USERENV‘,‘IP_ADDRESS‘),

userenv(‘SESSIONID‘),

mtSession.Terminal,mtSession.Osuser,

mtSession.Machine,mtSession.Program,

mtSession.Sid,mtSession.Serial#);

ELSE

--if user don‘t exists then return error

sp_write_log(‘Session Information Error:‘||SQLERRM);

CLOSE cSession;

raise_application_error(-20099,‘Login Exception‘,FALSE);

END IF;

CLOSE cSession;

EXCEPTION

WHEN OTHERS THEN

sp_write_log(‘Login Trigger Error:‘||SQLERRM);

END tr_login_record;

在以上触发器中需要注意以下几点

1、该用户有v_$session与v_$mystat的对象查询权限,可以在sys下对该拥护显式授权。

2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

3、必须在创建该触发器之前创建一个log$information的表记录登录信息。

[Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改

[A]可以采用DDL触发器,如

CREATE OR REPLACE TRIGGER tr_trace_ddl

AFTER DDL ON DATABASE

DECLARE

sql_text ora_name_list_t;

state_sql ddl$trace.ddl_sql%TYPE;

BEGIN

FOR i IN 1..ora_sql_txt(sql_text) LOOP

state_sql := state_sql||sql_text(i);

END LOOP;

INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid,

schema_user,schema_object,ddl_sql)

VALUES(ora_login_user,SYSDATE,userenv(‘SESSIONID‘),

sys_context(‘USERENV‘,‘IP_ADDRESS‘),

ora_dict_obj_owner,ora_dict_obj_name,state_sql);

EXCEPTION

WHEN OTHERS THEN

sp_write_log(‘Capture DDL Excption:‘||SQLERRM);

END tr_trace_ddl;

在创建以上触发器时要注意几点

1、必须创建一个ddl$trace的表,用来记录ddl的记录

2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

oracle怎么捕获用户登录信息,如SID,IP地址等

标签:declare   trigger   loop   exce   语句   logo   obj   users   ror

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:https://www.cnblogs.com/fanweisheng/p/11113418.html

oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等相关推荐

  1. php mysql用户登录_php mysql实现用户登录功能的代码示例

    接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...

  2. python单用户登录_Django实现单用户登录的方法示例

    最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了.今天由于工作需求,需要用Django实现单用户登录.大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数 ...

  3. php后台登录,简单的PHP数据后台实现用户登录,php后台用户登录

    简单的PHP数据后台实现用户登录,php后台用户登录 最近在写iOS一个小项目,用到了登录,所以用SAE搭了个简易的纯数据后台.PHP语句入门很简单,但是结合SQL就有点难度了.(代码都是SAE平台运 ...

  4. 单一用户登录,即当前用户登录后要踢出前一个登录,即做出踢人效果,如何实现?

    单一用户登录,即当前用户登录后要踢出前一个登录,即做出踢人效果,如何实现? 一般情况下,用户登录,有两种方式:cookie方式,session方式.一般情况下,session方式是使用最多的. 一.关 ...

  5. 麒麟系统登录界面开启root用户登录

    文章转自:https://blog.csdn.net/qq_33427869/article/details/123639654,全文转发,主要用于后续使用中可快速查阅. 编者目前使用的麒麟4.0.2 ...

  6. toad关联oracle,配置toad远程连接oracle

    配置toad远程连接oracle 在oracle服务器上: C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录 文件:listen ...

  7. oracle如何exp远程备份,oracle exp远程数据库

    通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库) 通过exp命令可以对Oracle数据库进行备份操作,其命令含义是:exp 用户名/密码@数据库所在ip ...

  8. oracle如何exp远程备份,采用oracle中exp远程备份oracle

    首先建立备份日期,备份目录,再次使用oracle的exp命令就行备份,备份的list存在里脚本的当前目录下.备份完成后会通过ssh远程scp到固定机器上.备份成功和失败都会发邮件提醒用户.可以将该脚本 ...

  9. windows_server_2008_远程桌面(授权、普通用户登录多用户登录

    1. 首先安装系统windows server 2008企业版完全安装.加入域. 2. 用administrator用户登录 3. 开启远程功能,并选择要远程服务器的用户,添加相关的用户. 4.打开服 ...

最新文章

  1. Intellij IDEA Debug 调试技巧
  2. 014_logback中的SiftingAppender
  3. 【Qt教程】1.2 - Qt5 新建工程
  4. 配置VIM语法高亮及自动缩进
  5. 如何带移动技术团队?
  6. (附源码)springboot民宿网站 毕业设计 221901
  7. 直播间实时在线人数方案
  8. Word删除空白页方法汇总
  9. 使用SNMP检查服务器中运行的进程信息
  10. 学习写微信小程序(2)
  11. 浅议信息系统控制在企业中的应用(lunwen+开题报告)
  12. 【张小平工作日志】同一目录下,Maven resource使用include与exclude实现过滤
  13. lua运行外部程序_在C语言程序中嵌入Lua脚本
  14. PowerBuilder篇(2)——如何连接Oracle数据库
  15. python爬 歌曲 视频
  16. tp3.2使用QQ邮箱或163邮箱通过PHPMailer发送邮件
  17. 后海大鲨鱼 猛犸 原版立体声伴奏
  18. 动画:面试官问我 0.1 + 0.2 __ 0.3 ? 为什么?该如何正确回答?
  19. 解决思科 Cisco Packet Tracer 7.2登录问题
  20. python用什么编译器

热门文章

  1. ROI Pooling层解析
  2. 折叠屏来了,开发者们准备好了吗?
  3. JavaScript中map函数和filter的简单举例
  4. 分享-WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
  5. 学习SQL语句之SQL语句大全
  6. 在ASP.Net 2.0中实现多语言界面的方法
  7. AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法...
  8. IBatis.Net学习笔记七--日志处理
  9. 学习 WCF (4)--学会使用配置文件
  10. javq接口_Java的接口及实例