- 浏览: 1100998 次
- 性别:
- 来自: 南京
博客专栏
-
Oracle管理和开发
浏览量:353785
最新评论
-
Simon.Ezer:
请问对于“如果非主键字段值发生改变,则不会同步过去”这种情况, ...
创建增量同步Oracle物化视图问题 -
dahai639:
挺好的,支持一下
Oracle的pipelined函数实现高性能大数据处理 -
zealotpz:
不错,原来是用户oracle 的所属组的问题
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 -
mikixiyou:
zhangyuslam 写道如果担心全局索引失效,可以使用如下 ...
Oracle分区表的分区交互技术实现数据快速转移 -
sea0108:
...
Oracle sql loader使用速成
在Oracle 10g中某个用户下表OBJECT_ID_FACTORY 的记录再次出现重复。这是一张字典表,用于生成某些表的记录主键值。重复的键值导致了某些业务操作不能正常进行。
该问题以前出现过一次。通过logminer 也没能找到操作的应用,因此我们采用audit 技术来处理这个问题。
logminer的使用方法请见此文。链接: http://mikixiyou.iteye.com/blog/1514632
(miki西游 @mikixiyou 文档原文链接: http://mikixiyou.iteye.com/blog/1563796
)
1. 解决过程
在Oracle 10g 数据库中,此表的记录出现异常,无故增加了某条记录。我们使用logminer 无法查出是什么应用程序所为。因此,我们启用审计功能来捕捉错误的操作来解决这个问题。
Oracle 的审计功能是一个高级选项,默认是不开放的,需要修改审计类初始化参数来能使用。
第一步,检查审计类参数
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/zxdb/adu
mp
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string DB
如果audit_trail 是空,则需要修改并重启实例使之生效后才能继续进行对象的审计操作。
调整审计结果的存储表aud$ 的表空间。原来是system 表空间,所以需要迁移到另外的表空间上,防止system 表空间暴涨不好收场。
SQL> alter table sys.aud$ move tablespace users;
第二步,设置对象操作的审计
审计mikixiyou 用户下表OBJECT_ID_FACTORY 每一次访问的插入操作,不管成功或失败,都记录下来;
审计 mikixiyou 用户下表OBJECT_ID_FACTORY 每一个会话的更新操作,不管成功或失败,都记录下来;
audit insert on mikixiyou .OBJECT_ID_FACTORY by access;
audit update on mikixiyou .OBJECT_ID_FACTORY; --by session [ WHENEVER [ NOT ] SUCCESSFUL ] 都可以省略掉。
第三步,检查哪些对象、哪些操作、哪些权限设置了审计
Select * from dba_stmt_audit_opts;
Select * from dba_priv_audit_opts;
Select * from dba_obj_audit_opts;
如这里 mikixiyou 用户下表OBJECT_ID_FACTORY 设置了insert 和update 的操作的审计
SQL> Select * from dba_obj_audit_opts;
OWNER OBJECT_NAME OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE
CRE REA WRI FBK
------------------------------ ------------------------------ ----------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- --- -----
----- ----- ----- -----
mikixiyou OBJECT_ID_FACTORY TABLE -/- -/- -/- -/- -/- -/- A/A -/- -/- -/- S/S -/- -/-
-/- -/- -/- -/-
第四步,使用noaudit 取消对象操作的审计
noaudit insert on mikixiyou .OBJECT_ID_FACTORY by access;
noaudit update on mikixiyou .OBJECT_ID_FACTORY;
如果审计目标已经实现,需要及时关闭审计设置。这点很重要,需在实现过程中予以注意。
第五步,检查审计结果
在审计设置完成后,定期去查看视图dba_audit_trail 的记录情况。
SQL> desc dba_audit_trail;
名称 是否为空 ? 类型
----------------------------------------- -------- ----------------------------
OS_USERNAME VARCHAR2(255)
USERNAME VARCHAR2(30)
USERHOST VARCHAR2(128)
TERMINAL VARCHAR2(255)
TIMESTAMP DATE
OWNER VARCHAR2(30)
OBJ_NAME VARCHAR2(128)
ACTION NOT NULL NUMBER
ACTION_NAME VARCHAR2(28)
NEW_OWNER VARCHAR2(30)
NEW_NAME VARCHAR2(128)
OBJ_PRIVILEGE VARCHAR2(16)
SYS_PRIVILEGE VARCHAR2(40)
ADMIN_OPTION VARCHAR2(2)
GRANTEE VARCHAR2(30)
AUDIT_OPTION VARCHAR2(40)
SES_ACTIONS VARCHAR2(19)
LOGOFF_TIME DATE
LOGOFF_LREAD NUMBER
LOGOFF_PREAD NUMBER
LOGOFF_LWRITE NUMBER
LOGOFF_DLOCK VARCHAR2(40)
COMMENT_TEXT VARCHAR2(4000)
SESSIONID NOT NULL NUMBER
ENTRYID NOT NULL NUMBER
STATEMENTID NOT NULL NUMBER
RETURNCODE NOT NULL NUMBER
PRIV_USED VARCHAR2(40)
CLIENT_ID VARCHAR2(64)
ECONTEXT_ID VARCHAR2(64)
SESSION_CPU NUMBER
EXTENDED_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE
PROXY_SESSIONID NUMBER
GLOBAL_UID VARCHAR2(32)
INSTANCE_NUMBER NUMBER
OS_PROCESS VARCHAR2(16)
TRANSACTIONID RAW(8)
SCN NUMBER
SQL_BIND NVARCHAR2(2000)
SQL_TEXT NVARCHAR2(2000)
SQL>
注意,该视图是建立在sys.aud$ 表之上,最好定期去转存清理它的数据。
2. 小结
这个只是 Oracle 中一种普通的审计方法。它可以监控到数据库中表一级对象的增删改查等操作。该功能由来已久,在 10g 开始,增加了一种更细致的审计方法,可以监控到表中记录一级的增删改查操作。
这种方法称之为细粒度审计,在有些场合能使用到。
更完整的审计设置和细粒度审计设置,可以参考此文,链接http://mikixiyou.iteye.com/blog/1547353
当然,您可以去参考oracle.doc,那里更详细。
发表评论
-
Oracle分区表的分区交互技术实现数据快速转移
2013-01-22 11:48 14841有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33307在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 12998UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3819在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8714这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5296在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢 ... -
db block gets和consistent gets的分析
2012-12-26 18:09 0在Oracle的文档中有这样一段解释: db block g ... -
创建增量同步Oracle物化视图问题
2012-12-25 14:07 15343我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10798在O racle数据库中,通过v$archived_lo ... -
如何删掉临时表空间的文件
2012-12-18 15:40 0Unlike Oracle datafiles which m ... -
Oracle sql性能诊断暨event 10046和10053使用
2012-12-17 10:24 0早上em grid control监控显示数据库的负载增加,其 ... -
查LOB字段占用的空间大小
2012-12-13 16:00 4588查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4084这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 4993Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4403Oracle的监听器服务注册 ... -
Deleting archivelog on physical standby with RMAN in Oracle 10g
2012-11-28 13:25 0Turns out to be quite easy ... -
to_char将number转成string的小技巧
2012-11-27 14:14 10650很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29333(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1928Oracle的data guard创建完成 ...
相关推荐
Oracle数据库是全球最广泛使用的...通过分析和实践这些实际案例,你可以更好地将理论知识应用于实际操作中,提升对Oracle数据库的理解和应用能力。记得不断练习和实验,理论结合实践,才能真正掌握Oracle数据库的精髓。
本课程设计案例将为你提供深入理解Oracle数据库系统及其操作的宝贵机会。以下将围绕Oracle数据库的课程设计案例展开详细的讨论: 一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据管理...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它在企业级数据存储、管理和分析中扮演着核心角色。本"Oracle课程设计案例精编"旨在帮助学习者深入理解Oracle的特性和功能,通过实际操作案例来提升技能。...
数据库是存储和管理数据的系统,Oracle数据库采用SQL(结构化查询语言)作为其主要的数据操作和管理语言。 2. Oracle体系结构:学习Oracle数据库的组成部分,如数据库实例、数据库进程、内存结构(如SGA和PGA)、...
1. **Oracle 9i与10g概述**:这两个版本在Oracle数据库历史中具有重要地位,9i引入了自动内存管理、XML支持和Real Application Clusters(RAC)等创新特性,10g则进一步增强了数据仓库功能,推出了Database 10g Grid...
这个压缩包文件“oracle数据库”很可能包含了关于Oracle数据库的深入知识和实用代码示例,帮助用户理解和操作Oracle系统。 Oracle数据库的核心特性包括: 1. **数据存储**:Oracle使用表、索引、视图等数据结构来...
通过深入学习这些内容,无论是初学者还是有一定经验的DBA,都能增强对Oracle数据库的理解,掌握实际操作技能,为应对复杂的企业级数据库管理挑战做好准备。这个压缩包中的资源无疑是学习和提升Oracle技能的宝贵资料...
本案例中的“案例_Oracle.rar”压缩包文件可能包含一系列与Oracle数据库相关的实践操作、教程或者问题解决方案。由于没有具体的文件内容,我将根据Oracle数据库的一般特性、管理和应用来阐述相关知识点。 1. 数据库...
在Oracle中,SQL用于创建和修改表、视图、索引等数据库对象,执行查询、插入、更新和删除数据,以及管理权限和角色。 5. **PL/SQL编程**: PL/SQL是Oracle特有的过程化语言,扩展了SQL的功能,允许编写复杂的业务...
4. **数据类型与表结构**:理解Oracle中的数据类型,如NUMBER、VARCHAR2、DATE等,并学会设计合理的数据库表结构,包括主键、外键、索引等概念。 5. **PL/SQL编程**:Oracle的PL/SQL是一种过程式语言,用于编写...
这份内部培训资料不仅涵盖了理论知识,还可能包含实际操作案例和最佳实践,对于希望深入理解Oracle数据库的专业人士来说是一份宝贵的资源。通过深入学习,你可以提升自己的数据库管理技能,更好地应对各种企业级...
这门课程将带你深入了解Oracle数据库的核心概念、管理和操作技巧。 1. **Oracle数据库基础**: - 数据库系统:了解数据库的基本原理,包括关系型数据库模型、数据存储结构和事务处理。 - SQL语言:学习SQL(结构...
Oracle课程设计案例精编教程是针对学习Oracle数据库管理和开发的学员所准备的一份宝贵资源。这份教程通过一系列的实例,帮助读者深入理解Oracle数据库的工作原理和应用技巧,从而提升在实际工作中的技能。 1. ...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级数据管理、数据分析以及事务处理中扮演着核心角色。本集锦旨在深入探讨Oracle数据库的应用实例与编程技术,帮助读者更好地理解和掌握这一...
《Oracle数据库系统实践》教学大纲主要涵盖了Oracle数据库的基础理论与实际操作技能的培养。课程旨在让学生深入理解Oracle数据库系统的工作原理,掌握其管理和维护技术,以及在实际应用中的问题解决能力。 课程内容...
Oracle数据库实用教程(第二版)是一本针对Oracle数据库学习者的宝贵资源,由唐远新编著,包含了丰富的实践案例和源代码,旨在帮助读者深入理解并掌握Oracle数据库系统的核心概念和技术。这本书分为12个章节,涵盖了...
Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,尤其在企业级应用中占据主导地位。这个"Oracle学习资料包"显然为初学者提供了一个很好的起点,帮助他们踏入Oracle DBA(数据库管理员)的世界。Oracle...
第一章 Oracle9i概述:这部分介绍了Oracle数据库的历史,Oracle9i的主要特性,如数据仓库、网格计算以及其在企业级应用中的角色。读者将了解到Oracle9i数据库的基本架构,包括数据库实例、内存结构和进程。 第二章 ...
1. 数据库基础知识:Oracle数据库的基本概念,包括表空间、数据文件、控制文件、重做日志、索引等。理解这些基础元素是使用Oracle的第一步,它们构成了Oracle存储和操作数据的物理结构。 2. SQL语言:Oracle支持...