oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等
可以利用登录触发器,如
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地址等相关推荐
- php mysql用户登录_php mysql实现用户登录功能的代码示例
接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...
- python单用户登录_Django实现单用户登录的方法示例
最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了.今天由于工作需求,需要用Django实现单用户登录.大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数 ...
- php后台登录,简单的PHP数据后台实现用户登录,php后台用户登录
简单的PHP数据后台实现用户登录,php后台用户登录 最近在写iOS一个小项目,用到了登录,所以用SAE搭了个简易的纯数据后台.PHP语句入门很简单,但是结合SQL就有点难度了.(代码都是SAE平台运 ...
- 单一用户登录,即当前用户登录后要踢出前一个登录,即做出踢人效果,如何实现?
单一用户登录,即当前用户登录后要踢出前一个登录,即做出踢人效果,如何实现? 一般情况下,用户登录,有两种方式:cookie方式,session方式.一般情况下,session方式是使用最多的. 一.关 ...
- 麒麟系统登录界面开启root用户登录
文章转自:https://blog.csdn.net/qq_33427869/article/details/123639654,全文转发,主要用于后续使用中可快速查阅. 编者目前使用的麒麟4.0.2 ...
- toad关联oracle,配置toad远程连接oracle
配置toad远程连接oracle 在oracle服务器上: C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录 文件:listen ...
- oracle如何exp远程备份,oracle exp远程数据库
通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库) 通过exp命令可以对Oracle数据库进行备份操作,其命令含义是:exp 用户名/密码@数据库所在ip ...
- oracle如何exp远程备份,采用oracle中exp远程备份oracle
首先建立备份日期,备份目录,再次使用oracle的exp命令就行备份,备份的list存在里脚本的当前目录下.备份完成后会通过ssh远程scp到固定机器上.备份成功和失败都会发邮件提醒用户.可以将该脚本 ...
- windows_server_2008_远程桌面(授权、普通用户登录多用户登录
1. 首先安装系统windows server 2008企业版完全安装.加入域. 2. 用administrator用户登录 3. 开启远程功能,并选择要远程服务器的用户,添加相关的用户. 4.打开服 ...
最新文章
- Intellij IDEA Debug 调试技巧
- 014_logback中的SiftingAppender
- 【Qt教程】1.2 - Qt5 新建工程
- 配置VIM语法高亮及自动缩进
- 如何带移动技术团队?
- (附源码)springboot民宿网站 毕业设计 221901
- 直播间实时在线人数方案
- Word删除空白页方法汇总
- 使用SNMP检查服务器中运行的进程信息
- 学习写微信小程序(2)
- 浅议信息系统控制在企业中的应用(lunwen+开题报告)
- 【张小平工作日志】同一目录下,Maven resource使用include与exclude实现过滤
- lua运行外部程序_在C语言程序中嵌入Lua脚本
- PowerBuilder篇(2)——如何连接Oracle数据库
- python爬 歌曲 视频
- tp3.2使用QQ邮箱或163邮箱通过PHPMailer发送邮件
- 后海大鲨鱼 猛犸 原版立体声伴奏
- 动画:面试官问我 0.1 + 0.2 __ 0.3 ? 为什么?该如何正确回答?
- 解决思科 Cisco Packet Tracer 7.2登录问题
- python用什么编译器
热门文章
- ROI Pooling层解析
- 折叠屏来了,开发者们准备好了吗?
- JavaScript中map函数和filter的简单举例
- 分享-WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
- 学习SQL语句之SQL语句大全
- 在ASP.Net 2.0中实现多语言界面的方法
- AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法...
- IBatis.Net学习笔记七--日志处理
- 学习 WCF (4)--学会使用配置文件
- javq接口_Java的接口及实例