Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)

前言

版本:11.2.0.4.0。

Oracle 11G中没特殊要求还是要建议关闭审计功能:alter system set audit_trail = none scope=spfile sid='*';

由于默认审计数据的AUD$和FGA_LOG$表在system表空间,在开启审计情况下,可能会导致AUD$表体积巨大导致system表空间不足。

如果不关闭审计,则建议将这两张表迁移至其他表空间。

如何迁移

在不关闭审计情况下,建议迁移AUD$和FGA_LOG$,根据How To Move The DB Audit Trails To A New Tablespace Using DBMS_AUDIT_MGMT (Doc ID 1328239.1),有(示例):

表空间:

SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name;

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

AUD$ SYSTEM

FGA_LOG$ SYSTEM

段大小:

col segment_name for a25

set linesize 500

select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name in ('AUD$','FGA_LOG$');

SEGMENT_NAME SIZE_IN_MEGABYTES

------------------------- -----------------

FGA_LOG$ .0625

AUD$ 4448

创建新的表空间用来存放AUD$以及FGA_LOG$表:

create tablespace audit_tbs datafile '+DATA' size 6G autoextend off uniform size 1M;

然后再移动表即可:

BEGIN

DBMS_AUDIT_MGMT.set_audit_trail_location(

audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,--this moves table AUD$

audit_trail_location_value = 'AUDIT_TBS');

END;

/

BEGIN

DBMS_AUDIT_MGMT.set_audit_trail_location(

audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,--this moves table FGA_LOG$

audit_trail_location_value = 'AUDIT_TBS');

END;

/

SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name;

如何管理/清除

在不关闭审计情况下,建议定期对AUD$表做备份清理的动作,控制AUD$表体积。

发现有的第三方审计安全软件会对AUD$做读取操作(只能是全表,AUD$表没有索引(The Effect Of Creating Index On Table Sys.Aud$ (Doc ID 1329731.1)))。

Oracle建议使用dbms_audit_mgmt来管理AUD$表,这个包还能用来定制清理策略、清理数据等。

根据SCRIPT: Basic example to manage AUD$ table with dbms_audit_mgmt (Doc ID 1362997.1),有

如下(将脚本的内容复制到文件中,对其进行自定义并以sysdba身份运行。):

-- Example re-locating AUD$ and setting up a purge job

set serveroutput on

prompt First Step: init cleanup (if not already)

BEGIN

IF NOT

DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN

dbms_output.put_line('Calling DBMS_AUDIT_MGMT.INIT_CLEANUP');

DBMS_AUDIT_MGMT.INIT_CLEANUP(audit_trail_type = dbms_audit_mgmt.AUDIT_TRAIL_AUD_STD,

default_cleanup_interval = 24 * 7);

else

dbms_output.put_line('Cleanup for STD was already initialized');

end if;

end;

/

prompt Relocate AUD$ to a dedicated tablespace AUDIT_DATA

begin

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type = dbms_audit_mgmt.AUDIT_TRAIL_AUD_STD,

audit_trail_location_value = 'AUDIT_DATA');

end;

/

prompt set last archive timestamp to a week before now

begin

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

last_archive_time = sysdate - 7);

end;

/

prompt setup a purge job

BEGIN

DBMS_AUDIT_MGMT.DROP_PURGE_JOB(AUDIT_TRAIL_PURGE_NAME = 'Standard_Audit_Trail_PJ');

-- exception

-- when others then

-- null;

end;

/

BEGIN

DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(AUDIT_TRAIL_TYPE = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

AUDIT_TRAIL_PURGE_INTERVAL = 24,

AUDIT_TRAIL_PURGE_NAME = 'Standard_Audit_Trail_PJ',

USE_LAST_ARCH_TIMESTAMP = TRUE);

END;

/

prompt Stop here if you use Audit Vault, otherwise press Enter

pause

prompt call DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP regularly to advance

prompt the last archive ts, Audit Vault will do this for you automatically

prompt Optionally Schedule automatic advancement of the archive timestamp

create or replace procedure set_archive_retention(retention in number default 7) as

begin

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

last_archive_time = sysdate -

retention);

end;

/

begin

DBMS_SCHEDULER.disable('advance_archive_timestamp');

DBMS_SCHEDULER.drop_job('advance_archive_timestamp');

-- exception

-- when others then

-- null;

end;

/

BEGIN

DBMS_SCHEDULER.create_job(job_name = 'advance_archive_timestamp',

job_type = 'STORED_PROCEDURE',

job_action = 'SET_ARCHIVE_RETENTION',

number_of_arguments = 1,

start_date = SYSDATE,

repeat_interval = 'freq=daily',

enabled = false,

auto_drop = FALSE);

dbms_scheduler.set_job_argument_value(job_name = 'advance_archive_timestamp',

argument_position = 1,

-- one week, you can customize this line:

argument_value = 7);

DBMS_SCHEDULER.ENABLE('advance_archive_timestamp');

End;

/

BEGIN

DBMS_SCHEDULER.run_job(job_name = 'advance_archive_timestamp',

use_current_session = FALSE);

END;

/

-- end example

以上脚本通过自定义job来定期清理7天前的数据,可以访问清理Audit数据帮助理解各个步骤的意思。

也可以手工清理数据:

set serveroutput on

prompt First Step: init cleanup (if not already)

BEGIN

IF NOT

DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN

dbms_output.put_line('Calling DBMS_AUDIT_MGMT.INIT_CLEANUP');

DBMS_AUDIT_MGMT.INIT_CLEANUP(audit_trail_type = dbms_audit_mgmt.AUDIT_TRAIL_AUD_STD,

default_cleanup_interval = 24 * 7);

else

dbms_output.put_line('Cleanup for STD was already initialized');

end if;

end;

/

begin

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

last_archive_time = sysdate - 7);

end;

/

BEGIN

sys.DBMS_AUDIT_MGMT.clean_audit_trail(audit_trail_type = sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

use_last_arch_timestamp = TRUE);

END;

/

我遇到的问题是审计是关闭的,但是由于关闭之前AUD$以及达到了6个多G的数据,使用上边手工清理语句,在执行斜体部分进行清理的时候清理时间达到了2个多小时。

Oracle虽然说尽量避免对AUD$做truncate操作,但是根据我网上查找资料,还是可以truncate的没问题。

至于FGA_LOG$表,How to cleanup the log table FGA_LOG$ (Doc ID 402528.1)表明可以直接delete或者truncate没问题,如下:

The FGA_LOG$ table can be deleted from or truncated to manage its space, for example:

SQL connect / as sysdba

Connected.

SQL truncate table fga_log$;

Table truncated.

Alternatively you can delete records based on the TIMESTAMP# (date) column as follows:

SQL delete from fga_log$ where timestamp# sysdate-14;

This deletes all rows older than 2 weeks.

Cleaning up the records in FGA_LOG$ is much like cleaning up audit records for standard auditing in table SYS.AUD$ .

至此。

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表) 相关文章

如何设置ppt每页停留时间

设置ppt每页停留时间的方法:首先切换到“幻灯片浏览”视图,选中需要设置时间的幻灯片并点击“动画”;然后选中需要设置相同时间的幻灯片,并设置时间。 本文操作环境:Windows7系统,Microsoft Office PowerPoint2020版本,Dell G3电脑。 设置ppt每页停留

ps如何做一寸证件照

ps做一寸证件照的方法:首先打开软件并打开图片;然后选择裁剪工具,对照片进行裁剪;接着定义图案,并新建文件存8张图片;最后使用之前定义的图案填充图片。 本文操作环境:Windows7系统,Adobe Photoshop CS6版本,Dell G3电脑。 ps做一寸证件照的方法: 1

etcd迁移存储目录

背景: 最近在Azure上自建原生k8s集群,然后很不稳定有时雪崩,日志一直报如下,网上查了很多资料说是etcd数据存储磁盘io影响etcd查查询慢。确实我这块存储盘是hdd,于是打算迁到ssd盘试下还会不会有这种情况。 etcdserver: read-only range request took to

centos7安装oracle参考

oracle数据库官方文档 一、检查环境 [root@node82 ~]# cat /etc/centos-releaseCentOS Linux release 7.6.1810 (Core) 验证处理器体系结构与要安装的Oracle软件版本相匹配。如果看不到预期的输出,则无法在该系统上安装软件。 检查内存和交换分区 free -m 或

ASP.NET Core中如何对不同类型的用户进行区别限流

老板提出了一个新需求,从某某天起,免费用户每天只能查询100次,收费用户100W次。 这是一个限流问题,聪明的你也一定想到了如何去做:记录用户每一天的查询次数,然后根据当前用户的类型使用不同的数字做比较,超过指定的数字就返回错误。 嗯,原理就是这么

使用 nuxt 开发网站 之 如何展示子页面

这里是我自己踩过的一个坑,也许是学术不精,没有在一开始领悟到子页面如何展示,这里放一个小栗子,方便以后遇见时查看: 小栗子: 新闻列表路由 : your_domain/en/news;新闻详情路由:your_domain/en/news/${id} pages中: pages/news 1 script2 import

如何成为一个精力充沛的程序员——掌控

在程序员这个行业中996工作制几乎已经成为了常态,除了着超负荷的工作以外,还有着众多的不良习惯:晚睡、久坐、 不按时吃饭,再加上工作和生活上的压力,使得整个人每天都处于一个忙碌和焦虑的状态。这样的后果就是换来了一个不健康的身体。根据数据显示上

又复习了一遍oracle数据库

【key】 PRIMARY KEY主键:只能有一个 UNIQUE唯一约束: 确保每一行的数据是唯一的。比如email unique就不能加两条数据都是一样的email CHECK:添加条件 ---- 【数据过滤】 DISTINCT:只查不重复的数据。//SELECT DISTINCT state FROM locations,就只有不重

.Net程序如何防止被注入(整站通用)

防止sql注入,通常一个一个文件修改不仅麻烦而且还有漏掉的危险,下面说一下如何从整个系统防止注入。 做到以下三步,相信的程序将会比较安全了,而且对整个网站的维护也将会变的简单。 一、数据验证类: parametercheck.cspublic class parametercheck{ pub

如何玩转CSS链接(link)的知识点

CSS 链接 不同的链接可以有不同的样式。 链接样式 链接的样式,可以用任何CSS属性(如颜色,字体,背景等)。 特别的链接,可以有不同的样式,这取决于他们是什么状态。 这四个链接状态是: a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a

oracle aud$ 清理,Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)相关推荐

  1. oracle flashback清理,Oracle的Flashback Drop闪回删除功能实践

    Oracle的Flashback Drop闪回删除功能给出我们一种误DROP删除表的便捷恢复方式,实现这种功能的原理是Oracle的"回收站"(RecycleBin)功能.注意,如 ...

  2. oracle u01清理,Oracleの/u01/11g/diag/rdbms/orcl/orcl/incident 的清理

    https://docs.oracle.com/cd/E11882_01/server.112/e25494/diag.htm#ADMIN11007 每当一个错误发生的时候,oracle会创建一个in ...

  3. mysql2ora datacopy,oracle的clone及冷迁移(直接拷贝数据文件)

    最近做了个oracle 10g数据冷迁移,很简单,但还是写一下基本的操作过程: 首先是准备迁移目标服务器,初始化环境,安装数据软件. 基本的环境初始化.依赖包先安装好.相关目录.用户都需要安装好(目标 ...

  4. Oracle的resouce、unlimited tablespace 及如何把数据导入不同的表空间

    resouce是角色,unlimited tablespace是权限. 很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间. 本例举例说明解决这个问 ...

  5. Oracle 概念(Oracle 10.2)

    1.Oracle介绍 本章提供了针对Oracle数据库服务器的概述,包含以下主题 Oracle数据库体系结构 Oracle数据库特点 Oracle数据库应用开发 Oracle数据库体系结构 Oracl ...

  6. oracle asm 缺省用户,oracle asm自动存储使用及管理说明(下)

    接上篇:oracle asm自动存储使用及管理说明(上) 六.文件及tempate 1.数据文件命名含义 SQL> select file_name from dba_data_files; F ...

  7. Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

    崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load ...

  8. Oracle RAC 环境下的连接管理

    转自 http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-165 ...

  9. Oracle PCTfree assm,Oracle 段空间管理方式与PCTFREE和PCTUSED的概念

    Oracle 段空间管理方式与PCTFREE和PCTUSED的概念 SQL> create table test11 (ID number(10),score number(10,1),name ...

最新文章

  1. 用C#钩子写一个改键外挂
  2. 2011年7月28日星期四精彩网语
  3. 详解python中的用法_详解python中*号的用法
  4. Windows四大傻X功能——那些拖慢系统性能的罪魁祸首
  5. Android攻城狮SurfaceView
  6. 【牛客刷题记录】2021-03-10
  7. Java并发编程(01):线程的创建方式,状态周期管理
  8. python扫描端口脚本_python扫描端口脚本
  9. 数据存储的问题(1)
  10. easyui---基础组件:window
  11. 红帽发布虚拟化策略 产品即将上市
  12. Outlook替代Hotmail:社交很重要,但邮箱是根本
  13. Visio风格源代码组件库,流程图,矢量图,图形编辑,打印,导入,导出,VC++源代码...
  14. Windows下Cmake安装步骤详解(图文)
  15. oracle instantclient 64,instantclient 64位
  16. PS-如何用ps软件看psd文件中的字体大小
  17. 使用ZUNE从marketplace安装wp7 app的方法
  18. html 自定义打印模板,如何自定义打印模板
  19. 7-2 求交错序列前N项和 (10 分)
  20. configure: error: Your system does not support systemd

热门文章

  1. 根号3如何输入计算机当中,请教一下:如何在电脑上输入数学符号“根号”?并在根号下输入数字?...
  2. Intel酷睿前世今生(一)
  3. 神经网络训练之数据归一化处理
  4. 这 9 个 Java 开源项目 yyds(转载)
  5. Mac一直弹框(xxx将对你的电脑造成伤害),关闭SIP
  6. 20190429马士兵
  7. visual studio 2017添加数据源(mysql)报 missing server and user in credentials 或报 给定关键字不在字典
  8. 教师节:感谢人生中的每位老师!
  9. 使用urillb获取北京公交线路信息
  10. golang实现微信公众号发送代金券及获取代金券的功能