Oracle记录用户DDL操作的脚本

--当前普通用户创建 issgzt
create table TAB_DDL
(
  LOGIN_USER         VARCHAR2(60),
  AUDSID             NUMBER,
  MACHINE            VARCHAR2(60),
  IPADDRESS          VARCHAR2(20),
  SCHEMA_USER        VARCHAR2(60),
  SCHEMA_OBJECT      VARCHAR2(60),
  DDL_TIME           DATE,
  DDL_SQL            VARCHAR2(4000),
  MODULE             VARCHAR2(100),
  SCHEMA_OBJECT_TYPE VARCHAR2(60)
)
;  

--sys用户创建,监视用户对Oracle进行DDL操作
CREATE OR REPLACE TRIGGER SYS.tr_issgzt_ddl
  AFTER ddl ON database
DECLARE
  sql_text  ora_name_list_t;
  state_sql issgzt.TAB_DDL.ddl_sql%TYPE;
  v_program issgzt.TAB_DDL.module%TYPE;
  error1 exception;  

BEGIN

  IF SUBSTR(SYS_CONTEXT('USERENV', 'SESSION_USER'), 1, 1) = 'T' AND
     SYS_CONTEXT('USERENV', 'SESSION_USER') NOT IN ('username') AND
     lower(state_sql) not like 'alter user t%' THEN
    raise error1;  

  end if;  

  FOR i IN 1 .. nvl(ora_sql_txt(sql_text), 2) LOOP
    begin
      state_sql := state_sql || sql_text(i);
    Exception
      when others then
        null;
    end;
  END LOOP;
  select nvl(s.program, s.MODULE)
    into v_program
    from v$session s
   where s.SID = (select distinct sid from v$mystat);  

  INSERT INTO issgzt.TAB_DDL
    (login_user,
     audsid,
     machine,
     ipaddress,
     schema_user,
     schema_object,
     SCHEMA_OBJECT_TYPE,
     ddl_time,
     ddl_sql,
     module)
  VALUES
    (ora_login_user,
     userenv('SESSIONID'),
     SYS_CONTEXT('USERENV', 'TERMINAL'),
     sys_context('userenv', 'ip_address'),
     ora_dict_obj_owner,
     ora_dict_obj_name,
     ora_dict_obj_type,
     SYSDATE,
     substr(state_sql, 1, 3000),
     v_program);
EXCEPTION
  WHEN error1 THEN

    raise_application_error(num => -20000,
                            msg => ' ERROR');
END tr_trace_ddl;
/

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索用户
varchar2
oracle ddl 操作ip、oracle ddl操作、oracle 创建用户脚本、oracle hr用户脚本、shell脚本操作oracle,以便于您获取更多的相关知识。

时间: 2024-10-28 12:42:31

Oracle记录用户DDL操作的脚本的相关文章

Windows10技术预览版免责声明:将记录用户一切操作

Windows10技术预览版免责声明:将记录用户一切操作前几天刚刚发布的Windows 10技术预览版,相信已经有不少同学忍不住已经下载尝鲜了吧.估计几乎不会有人认真看完安装之前的吧,现在来看看里面都说了些什么吧."感谢您选择参与有关我们下一版Windows的预发布计划! 此计划的目的是:使您能够在试用Microsoft的预发布软件和服务时,向Microsoft提供用法数据和反馈. 您的参与非常重要,您向我们提供的数据可用于改进我们的产品和服务. 此隐私声明适用于预发布Microsoft Win

php 记录操作-php实现记录用户的操作

问题描述 php实现记录用户的操作 我需要做的是,首先有一张列表页,有若干条数据,用户可以对数据进行查看.修改.编辑等操作,然后就是还有一个按钮,点击以后显示用户对该数据做过的所有操作(包括操作人.操作的Action.时间等),请高手指点一二.

洞察用户的操作行为

冬天的时候被窝里.坐着公交车的时候.无聊的课堂的时候,都会拿出手机,打开手机QQ的阅读中心,看看一本书,也是一个不错的消遣方式,手机QQ除了提供好的阅读内容供用户消遣,用户研究人员和设计师对怎么给给用户带来好的阅读翻页操作体验,减少用户的翻页误操作情况也非常关心,所以针对手机QQ4.5版的阅读中心用户翻页热区操作进行了一场测试. 研究目的 如今,手机QQ的新手引导图(测试时在用的是引导图一)会不会对会对用户操作有引导效果; 跟踪用户在阅读过程中翻页(翻上一页.翻一页和出菜单)操作的热区. 实验设

Linux下使用脚本记录所有用户的操作

这个脚本是在网上找到的,稍微做了一些修改,可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并生成包含"用户/IP/时间"的文件存放在指定位置,方便管理员以后查看不同用户都在服务器上干了些什么! 目前这个代码只实现了记录用户的操作命令,但是像vi编辑只会记录vi这条命令,但是在文件里所修改的内容无法记录...有时间再研究一下! 将下面的代码追加到/etc/profile文件里即可 PS1="`whoami`@`hostname`:"

如何实现trigger集中记录所有库ddl操作

今天客户说了一个我感觉有意思的需求:在一个库上的一张表记录所有库的ddl操作,实现方式:在一个库上建立表和触发器,其他库上通过dblink+同义词+触发器实现ddl操作记录到远程的表中.他当时写了一个触发器,但是有错误,想让我协助解决.在我们的一起努力下,解决了该触发器在dblink同义词的库上出错的问题.我这里测试使用的是10g的库做为存储所有库的ddl记录的库,11g库做为一个通过dblink插入ddl操作记录的库. 在10g数据库库中操作 1.创建记录ddl操作表 SQL> conn ch

在redhat上安装ftp服务器并创建用户的操作步骤记录

在redhat上安装ftp服务器并创建用户的操作步骤记录: (1)安装的rpm包拷贝到在/opt/目录下 在/opt下创建ftp目录 mkdir ftp (2)rpm -ivh vsfptd.rpm rpm -qa | grep vsftpd (3)设置seLinux权限: setsebool -P ftp_home_dir true setsebool -P allow_ftpd_full_access true   (4)修改配置文件: 控制只能在所进入的目录活动,不能进入其他目录 /etc

记录每个用户的操作 记录每个用户的操作

问题描述 记录每个用户的操作 记录每个用户的操作 1.JoinPoint和ProceedingJoinPoint(aspectjrt-1.6.11.jar包):采用AOP的方法,记录每个用户的操作. (1)记录用户操作主要记录用户对系统进行操作时,对后台controller中的方法进行调用进行记录. 首先对要记录的方法进行配置(针对controller中的方法调用进行调用),即: aop:config /aop:aspect/aop:config 这样,当调用com.paic.mercury.v

服务器-客户端程序检测并记录用户执行了哪些操作,怎么实现呢?

问题描述 客户端程序检测并记录用户执行了哪些操作,怎么实现呢? 比如用户按下了Button1,Button2等等,那么全部记录下来形成操作日志. 怎样将记录下来的操作日志传给服务器,再由服务器存入数据库? 小弟大一初学者还请各位指点一下 谢谢! 解决方案 是自己的程序的话,重写PreTranslateMessage,记录下所有的事件.然后socket上传服务器 解决方案二: 按下button等事件都会调用submit,在服务器端调用对应action的函数时,在该函数的最前面加入insert语句,

基于 Jquery操作Cookie记录用户查询过信息

这是一个Cookie数据生成的列表, 每次单击查询会存储一个域名,并把最后一次查询的域名放在最上方.本例子最多存储10个,大家可以根据自己情况进行设置 下在咱们一起来看看是怎么实现的吧. 先写一个操作Cookie的JS文件如下 Code  代码如下 复制代码 function getid(id) {return (typeof id == 'string') ? document.getElementById(id) : id};function getOffsetTop(el, p) {var