【问题标题】:How did i get oracle particular table's column history?我如何获得 oracle 特定表的列历史记录?
【发布时间】:2015-08-29 15:51:45
【问题描述】:

我如何获得特定表的列历史记录? 例如

table name :employee
column name     column adddate    column modifydate
empname           08/07/15            09/08/15  
empcode           08/07/15            01/08/15
empsal            08/07/15            10/09/15

当特定数据类型或其长度或新列(字段)添加到表中时。

【问题讨论】:

  • 也许您需要 DDL 触发器?

标签: oracle


【解决方案1】:

是的,如果您想跟踪架构对象级别的详细信息,您可以使用 DDL 触发器来执行此操作,而且最好微调您的审计。

创建表 .ddl_audit ( os_user_name varchar2(255), current_user varchar2(255), 主机 varchar2(255), 终端 varchar2(255), ddl_type varchar2(255), 所有者 varchar2(30), object_type varchar2(255), 对象名 varchar2(128), system_event varchar2(20), ddl_sql_stmt varchar2(2000), ddl_date 时间戳 );

在 ddl ON .schema 之后创建或替换 TRIGGER audit_ddl_trg 宣布 sql_text ora_name_list_t; v_stmt VARCHAR2(2000); retval pls_integer; 开始 retval := ora_sql_txt(sql_text); FOR i IN 1..retval 环形 v_stmt := v_stmt || sql_text(i); 结束循环; 插入 INTO .DDL_AUDIT ( os_user_name, 当前用户, 主持人, 终端, ddl_type, 所有者, 对象类型, 对象名称, 系统事件, ddl_sql_stmt, ddl_date ) 价值观 ( sys_context('USERENV','OS_USER') , sys_context('USERENV','CURRENT_USER') , sys_context('USERENV','HOST') , sys_context('USERENV','TERMINAL') , ora_dict_obj_type, ora_dict_obj_owner, ora_dict_obj_type, ora_dict_obj_name, ora_sysevent, v_stmt, 系统时间戳 ); 结束;

-- 使用相同的应用架构 创建表 t1(c1 int,c2 varchar(10));

--进行更多更改

alter table t1 add c3 varchar2(50);

查询按ddl_date排序的ddl_audit表...

注意:- 确保授予必要的权限。

【讨论】:

  • 感谢您的宝贵回复。
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 2017-06-24
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
相关资源
最近更新 更多