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;
/
相关阅读:两台Oracle之间配置OGG-未配置同步DDL http://www.linuxidc.com/Linux/2013-10/92015.htmOracle GoldenGate 11g单向DDL配置实战 http://www.linuxidc.com/Linux/2013-01/77706.htmOracle利用dbms_metadata.get_DDL查看DDL语句 http://www.linuxidc.com/Linux/2012-12/76113.htmOracle使用系统级触发器禁用DDL语句 http://www.linuxidc.com/Linux/2012-10/72955.htmOracle使用系统级触发器审计重要帐号的DDL语句 http://www.linuxidc.com/Linux/2012-10/72954.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle Flashback table的使用AIX6.1 安装Oracle 11g R2相关资讯 Oracle DDL DDL脚本
- Oracle 11.2.0.3和MySQL5.6 DDL比 (09/17/2015 19:15:08)
- Oracle处理数据(DML+DDL+DCL)+事 (01/25/2014 13:46:28)
| - Oracle数据库对象(共12个)DDL (01/25/2014 13:49:16)
- 两台Oracle之间配置OGG-未配置同步 (10/28/2013 17:14:50)
|
本文评论 查看全部评论 (0)