登陆注册
31848700000020

第20章 数据库的保护(4)

4.数据库审计的命令

使用AUDIT命令可以指定审计选项,由SYS用户所建立的会话不生成审计记录。

权限或语句审计的语法如下:

AUDIT{语句|系统权限|SESSION|USER}

[,{语句|系统权限|SESSION|USER}]……

[BY 用户[,用户]……]

[BY{SESSION|ACCESS}]

[WHENEVER[NOT]SUCCESSFUL]

对象审计的语法如下:

AUDIT 语句[,语句]……

ON{[用户名,]对象|DEFAULT}

[BY{SESSION|ACCESS}]

[WHENEVER[NOT]SUCCESSFUL]

其中:系统权限用于指定需要审计的系统权限;语句表示指定审计的SQL语句类型或者对象;对象表示审计所选择的对象;DEFAULT表示为后续建立的对象进行审计;用户表示只审计列出的这些用户的活动(假如缺少该从句,表示对所有用户的活动进行审计);BY SESSION表示不管相同的SQL语句提交了多少次,对每一个会话中的每一条语句或每一个数据库对象只往审计表中插入一条记录;BY ACCESS表示每一条审计语句被提交时,Oracle往审计表中插入一条记录;WHENEVER用于指定只有在SQL语句成功执行或不成功执行时才审计。

审计命令举例如下。

例8-32 审计与数据库的连接和断开的信息。

SQL>AUDIT SESSION;

例8-33 审计成功登录时的信息。

SQL>AUDIT SESSION WHENEVER SUCCESSFUL;

例8-34 审计登录失败时的信息。

SQL>AUDIT SESSION WHENEVER NOT SUCCESSFUL;

例8-35 审计用户john和scott成功登录时的信息。

SQL>AUDIT SESSION BY john,scott WHENEVER SUCCESSFUL;

例8-36 审计对john用户的CUSTOMER表成功更新和删除的操作。

SQL>AUDIT UPDATE,DELETE ON john.CUSTOMER BY ACCESS WHENEVER SUCCESSFUL;

(1)权限审计

权限审计就是审计所使用的系统权限。

例8-37 当scott用户使用SELECT ANY TABLE系统权限时,生成一条审计记录。

SQL>AUDIT SELECT ANY TABLE BY scott BY ACCESS;

(2)语句审计

通过使用一种类型的SQL语句或一种对象类型进行审计。

例8-38 审计所有用户的所有CREATE USER、ALTER USER和DROP USER语句。

SQL>AUDIT USER;

语句审计选项特别宽,可以审计每一个选项的各种类型的相关动作。

例8-39 跟踪各种DDL(如:CREATE TABLE、DROP TABLE、TRUNCATE TABLE)语句,不管该语句在哪张表上执行。

SQL>AUDIT TABLE;

(3)对象审计

对象审计语句审计在一个特定用户对象上执行的语句。

例8-40 当一个用户在scott用户的emp表上成功地执行LOCK命令时生成一条审计记录。

SQL>AUDIT LOCK ON scott.emp BY ACCESS WHENEVER SUCCESSFUL;

ALL可以作为一个对象的审计选项,可以审计对象类型上能执行的所有选项。

5.停止审计

(1)停止审计的语法

使用NOAUDIT命令可以停止在AUDIT命令中选择的审计,NOAUDIT命令停止语句审计和系统权限审计的语法如下:

NOAUDIT{语句|系统权限|SESSION|USER}

[,{语句|系统权限|SESSION|USER}]……

[BY 用户[,用户]……]

[WHENEVER[NOT]SUCCESSFUL]

NOAUDIT命令停止对象审计的语法如下:

NOAUDIT 语句[,语句]……

ON{[用户名,]对象|DEFAULT}

[WHENEVER[NOT]SUCCESSFUL]

注意:即使审计是不允许的,特权操作的审计总是进行的;一个NOAUDIT语句将以前AUDIT语句的功能颠倒过来,要求NOAUDIT语句必须与以前AUDIT语句的语法一样,并且只颠倒了该AUDIT语句的功能,其他AUDIT语句继续审计。

(2)停止审计命令举例

例8-41 停止对所有用户成功操作的语句审计。

SQL>NOAUDIT USER WHENEVER SUCCESSFUL;

例8-42 停止对scott用户的CREATE TABLE 权限审计。

SQL>NOAUDIT CREATE TABLE BY scott;

例8-43 停止对emp表上锁操作的对象审计。

SQL>NOAUDIT LOCK ON emp;

例8-44 停止对JOHN用户的CUSTOMER表上的对象审计。

SQL>NOAUDIT UPDATE,DELETE ON JOHN.CUSTOMER;

NOAUDIT命令可以关闭除了BY SESSION和BY ACCESS选项之外的所有在AUDIT语句中指定的选项。

6.查询审计信息

审计记录存储由语句、权限及对象审计所产生的记录。数据库管理员可以查询与审计相关的数据字典视图获得在审计过程中生成的审计信息。这些信息用于查看数据库中有疑问的活动或监视数据库活动。

8.2 数据库的恢复

虽然目前计算机软硬件技术已经发展到相当高的水平,但硬件的故障、系统软件和应用软件的错误、操作员的失误及恶意的破坏仍然是不可避免的。这些故障轻则造成运行事务的非正常中断,影响数据库中数据的正确性;重则破坏数据库,使数据库中数据部分或全部丢失。为了保障各种故障发生后,数据库中的数据都能从错误状态恢复到某种逻辑一致的状态,数据库管理系统中恢复子系统是必不可少的。各种现有数据库系统运行情况表明,数据库所采用恢复技术它是否行之有效,不仅对系统的可靠程度起着决定性作用,而且对系统的运行效率也有很大影响,是衡量系统性能好坏的重要指标。

8.2.1 数据库恢复的原理、方法和策略

8.2.1.1 事务的概念和性质

为了便于理解数据库恢复技术,在讨论恢复技术之前,先讲解事务的概念和性质。

1.事务的概念

事务是用户定义的一个数据库操作序列。这些操作要么全做,要么全不做,是一个不可分割的工作单位。一个事务可以是一条SQL语句、多条SQL语句或整个程序。事务与程序的区别在于,一个程序可以包含多个事务。

事务通常以SET TRANSACTION开始,以COMMIT或ROLLBACK语句结束。

COMMIT表示提交,系统会将事务内的所有操作都写入数据库物理文件中,事务成功地结束。此时数据库处于一致性的状态。

ROLLBACK表示回退,系统会将事务内所有已完成的操作全部撤销,回退到事务开始的状态,事务成功地结束。此时数据库处于一致性的状态。

当COMMIT或ROLLBACK后自动又开始一个新的事务。

如果在事务运行过程中发生了故障,事务不能继续进行,事务不成功地结束。此时数据库处于不一致性的状态。

2.事务的性质

事务具有四个特性:原子性、一致性、隔离性和持续性。

(1)原子性

事务是一个不可分割的工作单位,事务中的所有操作要么全部执行,要么全部不执行。原子性由DBMS的事务管理子系统保证。

(2)一致性

事务执行的结果必须是使数据库从一个一致性状态变成另一个一致性状态。如果数据库中只包含事务成功提交后或成功回退后的结果,此数据库状态就称为“一致状态”。

如果数据库运行发生故障,有些事务尚未完成就被迫中断。这些未完成事务对数据库所做的修改有一部分已写入数据库物理文件,有一部分还没有写入数据库物理文件。这时数据库就处于一种不正确状态,或者说是不一致的状态。需要DBMS的恢复子系统根据故障类型采取相应的措施,将数据库恢复到某种一致状态。

一致性可由程序员编写程序来保证,或由DBMS完整性约束子系统自动保证。

例如:某公司在银行的A、B两个账号中,希望从A账号中取出1万元,存入到B账号。那么就可以定义一个事务,该事务有两个操作:第一个操作是从A账号中减1万元,第二个操作是B账号中加1万元。这两个操作如果全做,或全不做,此时数据库都处于一致性状态。如果这两个操作只做任一个,则逻辑上发生了错误,此时数据库处于不一致性状态。

(3)隔离性

在并发事务被执行时,系统应保证与这些事务先后单独(串行)执行时的结果一样,此时称事务达到了隔离性要求。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间互不干扰。隔离性由DBMS的并发控制子系统来保证。

(4)持续性

持续性也称永久性,即一个事务一旦提交,它对数据库的所有更新永久地反映在数据库中。即使以后系统发生故障,也不影响这个事务执行的结果。持续性由DBMS的恢复管理子系统来保证。

8.2.1.2 故障的种类和相应的恢复操作

数据库运行过程中可能发生的故障和相应的恢复操作有以下几类。

1.事务故障及恢复

事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并行事务发生死锁等,使事务未运行至正常终点之前就被撤销,这种情况称为“事务故障”。

当发生事务故障后,那些未运行至正常终点的事务可能已将对数据库的部分修改写回磁盘。恢复程序要在不影响其他事务运行的前提下,清除该事务对数据库的所有修改(回退该事务),使得这个事务像从未启动过一样,这种恢复操作称为“事务撤销”。

2.系统故障与恢复

系统故障是指系统在运行过程中,由于某种原因,如操作系统或DBMS代码错误,操作员操作失误、特定类型的硬件错误(如CPU故障),突然停电等造成系统运行停止,致使事务在执行过程中以非正常方式终止,这时内存中的信息丢失,而存储在外部存储设备上的数据未受影响,这种情况称为“系统故障”。

系统故障时,有些尚未完成的事务的结果已写入磁盘的物理文件中,从而造成数据库可能处于一个不正确的状态。系统重新启动后,恢复子系统要把这些事务回退(ROLLBACK),清除对数据库的所有修改,使这些事务像从来没有运行过一样。即撤销(UNDO)全部未完成的事务,使数据库恢复到一致状态。

系统故障时,有些已完成事务提交的结果可能还有一部分甚至全部留在缓冲区而未写回磁盘的物理文件中。系统故障使得这些事务对数据库的修改部分或全部丢失,造成数据库中的数据不一致状态。在系统重新启动后应将这些事务已提交的结果重新写入数据库,即重做(REDO)这些已提交的事务,将数据库恢复到一致状态。

3.介质故障及恢复

系统在运行过程中,由于某种硬件故障,如磁盘坏损、磁头碰撞或由于操作系统的某种潜在的错误、瞬时强磁场干扰,使存储在外存上的数据部分损失或全部损失,称为“介质故障”。

此类故障比前两种故障的可能性虽然小得多,但破坏性却最大。介质故障发生后,存储在磁盘上的数据被破坏。如果在数据库被破坏之前,对数据库已做了完全备份,则重新启动后,可以利用恢复程序装入数据库发生介质故障前某个时期的备份,并将此时所有成功事务全部重做(REDO),也就是将这些事务已提交的结果重新写入数据库。如果在数据库被破坏之前没有备份,则有可能所有事务必须手工恢复。

4.计算机病毒

计算机病毒是一种人为破坏计算机正常工作的特殊程序。通过读写染有病毒的计算机系统的程序与数据,这些病毒可以迅速繁殖和传播,危害计算机系统和数据库。计算机病毒已成为对计算机系统安全性的重要威胁,为此已研制了不少检查、诊断、消灭计算机病毒的软件,但新的病毒软件仍在不断出现,对数据库的威胁仍然存在,因此一旦数据库被破坏,仍要用恢复技术把数据库恢复到一致的状态。

前面已简要介绍了数据库系统中可能发生的故障以及需要进行的恢复操作。数据库系统可能发生的各类故障对数据库的影响有两种可能性:一是数据库本身被破坏,如发生介质故障,或被计算机病毒所破坏;二是数据库本身并没有被破坏,但数据可能不正确。

对于不同类型的故障,有不同的恢复技术。恢复技术从原理上讲都是利用存储在系统其他地方的冗余数据来重建数据库中已经被破坏或已经不正确的那部分数据。恢复技术原理虽然简单,但实现却相当复杂。一般一个大型数据库产品,恢复子系统的代码占DBMS全部代码的10%以上。下面介绍恢复的实现方法。

8.2.1.3 恢复的实现方法

恢复从原理上讲就是利用存储在系统其他地方的冗余数据来重建被破坏的数据库中的数据。在数据库中用于恢复的数据有两种:一种是备份副本,另一种是日志文件。下面分别介绍备份副本和日志文件,以及如何利用它们来实现相应的恢复操作。

1.数据备份(数据转储)

备份副本是指在故障发生前某一时刻数据库事务一致性的副本。因此它是数据库的一个备用的数据文本,被称为备份副本或后援副本。

制作备份副本的过程称为备份或“转储”,就是DBA定期地将数据库复制到磁带或磁盘上保存起来。当数据库受到破坏时就可以将备份副本重新装入,把数据库恢复到备份时的状态。如果有备份副本和日志文件可以将数据库恢复到某一时刻的正确状态。

数据备份根据备份过程中用户能否对数据库操作,可分为静态备份和动态备份。

静态备份(在Oracle系统中称为冷备份)是备份过程中不允许用户对数据库进行任何存取和修改操作。

动态备份(在Oracle系统中称为热备份)是备份过程中允许用户对数据库进行存取和修改操作,即备份操作与用户事务可以并发执行。

数据备份根据备份时的备份内容,又可分为海量备份和增量备份。

海量备份(在Oracle系统中称为完全备份)是指每次备份整个数据库全部数据。

增量备份(在Oracle系统中也称为增量备份)是指每次只备份上一次备份后更新过的数据。

2.日志文件(LOGFILE)

日志文件是用来记录对数据的每一次更新操作的文件。日志文件一般由DBMS自动产生并根据数据库中的操作自动写日志记录。

(1)日志文件的内容

事务在运行过程中,系统将事务中每个更新操作登记在日志文件中。对每个事务,日志文件需要登记的内容包括:事务开始(SET TRANSACTION)标记、事务结束(COMMIT 或ROLL BACK)标记、事务的所有更新操作。这些信息均是作为一个日志记录(LOG RECORD)存放在日志文件中。每个日志记录包括:事务标志(标明是哪个事务),操作的类型(插入、修改或删除),操作对象,更新前数据的旧值(对插入操作而言,此项为空值),更新后数据的新值(对删除操作而言,此项为空值)。

(2)日志文件的作用

DBMS可以根据日志文件进行事务故障恢复和系统故障恢复,并结合备份副本进行介质故障恢复。日志文件的具体作用如下。

事务故障恢复和系统故障恢复时必须用日志文件。

在动态备份时必须建立日志文件,利用备份副本和日志文件可以进行介质恢复,恢复到失败发生前的数据库状态。

在静态备份时也可以建立日志文件。利用备份文件可以恢复到备份时的数据库状态,利用日志文件可以将备份后发生的事务重做(REDO)或撤销(UNDO)。故障发生时已经完成的事务进行重做,故障发生时未完成的事务进行撤销。

(3)日志文件的登记原则

为保证数据库可恢复,向日志文件中写日志记录时必须遵循以下两条原则。

严格按并发事务执行的时间次序进行登记。

必须先写日志记录,日志记录写入成功后,才能往数据库中写数据。只有事务的所有日志记录都写入日志文件后,才允许事务结束。

同类推荐
  • 云计算、网络安全和网络盗窃:网络世界防盗初学指南

    云计算、网络安全和网络盗窃:网络世界防盗初学指南

    网络犯罪层出不穷,保护自己的安全,防止受到攻击,似乎是一个艰巨的任务。幸运的是,有一些人人都能采取的措施,可以降低成为网络袭击对象的风险。保证基于云计算程序的安全和降低被袭击的风险,关键在于理解云安全的共同责任。云提供商需要全力确保实施尽可能严格的安全策略。
  • 信息革命

    信息革命

    随着经济社会的快速发展,电子产品走进了千家万户,与电子产品相伴的信息技术也已渗透到人们生产生活的方方面面。加强信息技术普及,已成为业内人士的共识。鉴于此,在有关部门的大力支持下,经过认真筹划,我们编辑出版了《信息革命》一书。该书以时间为经,在记述信息技术发展历程的同时,深入浅出地介绍了信息技术的相关知识,对人们更好地利用现代信息技术服务经济社会建设和个人生产生活必将产生积极作用。本书由李大东主编。
  • 无人机:知道这些就够了

    无人机:知道这些就够了

    不久的将来无人机将像智能手机一样司空见惯,而你对无人机的了解有多少?你知道无人机有哪些用途吗?无人机对你和你的家庭又会产生什么样的影响呢?知道这些就够了。
  • 虚拟现实:下一个产业浪潮之巅(第2版)

    虚拟现实:下一个产业浪潮之巅(第2版)

    毫无疑问,虚拟现实时代已经来临,VR不仅将彻底改变人们交互的方式。而且会是互联网的下一个风口,VR会创造新时代,即由人的体验构成的互联网时代。目前,全球范围众多的科技、影视等商业巨头纷纷砸巨资押注VR产业。例如,扎克伯格越来越坚定地认为,VR将会成为下一代计算机平台;任正非在内部讲话中也提到,华为要保持理性地进行VR投入与研究,要在这个充满诱惑的领域里分得一杯羹,谁最后倒下,谁便赢得天下。本书是作者基于VR行业多年的研究以及创立VR公司的经验写成,目的是让读者快速、全面地了解VR产业最新、最重要的信息,如生态链、技术瓶颈、发展前景以及人才结构等,是一部不可多得的VR行业入门读物。
热门推荐
  • 指吟啸风月

    指吟啸风月

    跟班长打了一个赌,班长输了,她哭了……想知道原因吗?追文吧!我不知道我写的好不好,但是,我会努力去写好,不会是一篇水文,一天六千字以上。
  • 狂冷后宫:弃后要爬墙

    狂冷后宫:弃后要爬墙

    被好友和未婚夫背叛,公孙瑶车祸穿越,成了央玥国被废的皇后,皇帝冷漠害她全家,妃子狠辣栽赃陷害,她私逃出宫,而他却步步紧逼,当各种阴谋诡计接踵而来,且看她如何翻手为云覆手为雨,这一世,她誓不为后!【情节虚构,请勿模仿】
  • 净土生无生论会集

    净土生无生论会集

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 陛下何不反乎

    陛下何不反乎

    帝国覆灭之时,兵甲堆积如山。大世繁华,不过空中楼阁。
  • 现在的我们那些年的事情

    现在的我们那些年的事情

    这是我第一次见到泪眼婆娑的她,我什么也没说,只是静静的看着她哭泣着。半晌,她低下头用力的揉了揉早已哭红的眼眶。我的心里有一种说不出的感觉,此时我觉得我们是同一个人,一个一直被囚禁的人突然逃跑,徒步走在一条高速公路上,路上没有车也没有人,只有他自己,哪里都能去,可是放眼望去前后都只有一条看不见尽头的马路。是那样的无助。我是这个人,她更是这个人;我的无助只不过是不知道该对她说什么,而她的无助是真的无助……
  • 时光浮雨惜流年

    时光浮雨惜流年

    南宫汐揉揉欲聋的耳朵,嘟着嘴对坐在床边,寒着脸盯着她的南宫千亦抱怨:“唔……前几夜的那几个阿姨比这个阿姨温柔多了,今夜这个实在是太吵闹了!”“啪!”清脆的响声在静夜中显得格外刺耳,“你个渣男!”女子气愤地大骂,潇洒离去。南宫汐打着哈欠跟着出门,走出几步,猛然撞上了一个结实的胸膛,头顶南宫千亦嗓音低沉:“怎么?闯了祸便想走?”***茶楼里,南宫汐艰难地斟酌着用词,“我……我只是好奇你到底是不是……也是……”“鬼?”沐晨风接过话头。南宫汐一下子抬起头来,望进他的眼眸深处,见他看着自己的眼神如月光般柔美澄澈,却似深藏着一抹沉重而伤情的过往。“你……”“如果我是一抹孤魂,小汐还愿见我吗?”沐晨风深深地望着她。***养父是驭鬼师,整日拖着自己奔走收鬼;好友不是人,三不五时将自己拐去鬼城晃悠。南宫汐表示小心脏有些受不住啊!
  • 我的皇姐是女帝

    我的皇姐是女帝

    一朝穿越,她成了皇帝的妹妹,但这个皇帝哥哥似乎有些奇怪。日渐相处中,她发现了他的秘密,原主死去的真相也渐渐浮出水面。敌人或是战友?处在宫廷之中,或许从来都是身不由己。
  • 大唐剑仙风云

    大唐剑仙风云

    一纸江湖,三生醉话,比起求仙问道,他更乐意做个一生与酒为伴的逍遥郎,岂料老天要将他逼上仙途,既然注定要踏上这条不寻常路,他便决定提着酒壶干票大的,只是那冰宫里的绝色美女性格似乎有点太冷啊喂,还有那条自称跟自己有千年交情,姓韩名信字重言的小白龙又是什么鬼?
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 流年一瞬是芳华

    流年一瞬是芳华

    他,是堂堂轩辕国的二皇子。她,原是不可一世的女杀手,为情自杀,竟不觉穿越,成为最受宠的右丞相之女。那一瞬,他们遇见。那一瞬,变成了一生的永恒。一曲芳华,成为世人的千古绝唱......