Oracle数据安单方面面观(1)

   来历:网海拾贝




跟着计较机的遍及以及网络的发展,数据库已经不再仅仅是那些轨范员所专有的话题。而Oracle数据库更是凭仗其功用杰出,操作方便灵动的特点,在数据库的市场中已经占有了一席之地。可是异样跟着网络技艺的不竭进步,数据信息的不竭添加,数据安静已经不再是从前的“老发展谈”,也更不是从前书籍上那些“可望不成及”的条条框框。
    或许很久从前,大大家都感受Oracle数据库的安静并不存在隐患,因为Oracle公司在去年11月份开端促销其数据库软件时提出的口号是“只需Oracle9i可以做到绝对安静”。可是岂论它这么说是为了促销,还是为了扩大大知名度,总之伴去年12 月份,英国的安静专家 David Litchfield 缔造的9iAS 中存在的轨范错误招致的缓冲溢出坏处以及后来,PenTest Limited 和 eEye Digital Security 各自提出了一个小的坏处,悉数运用Oracle公司产物的人都不由地紧急了原本松懈的大大脑--这个关于用户来说,底细后果干系到了自身的“身家人命”。
      下面笔者将带着大大家走进Oracle数据安静的全国。因为笔者程度无限,所以不敷之处在所难免,望大大家不惜见教。

(一)Oracle数据库的一些根基知识

    这里仅仅是为了以后的安静奠基一些根底,因为我们背面要用到它们。呵呵~!

1.Oracle所包孕的组件

    在 Oracle,数据库是指整个 Oracle RDBMS 环境,它包孕以下组件: 
   ·Oracle 数据库过程和缓冲(实例)。 
   ·SYSTEM 表空间包孕一个齐集系统类目,它可以由一个或多个数据文件组成。 
   ·别的由数据库管理员 (DBA)(可选)定义的表空间,每个都由一个或多个数据文件组成。 
   ·两个以上的联机克复日志。 
   ·归档克复日志(可选)。 
   ·别的文件(节制文件、Init.ora、Config.ora 等)。 
    每个 Oracle 数据库都在一个地方系统类目和数据字典上运转,它位于SYSTEM 表空间。

2.关于“日志”

    Oracle数据库运用几种结构来保护数据:数据库后备、日志、回滚段和节制文件。下面我们将大大体上熟习一下作为主要结构之一的“日志”:
      每一个Oracle数据库实例都提供日志,记载数据库中所作的悉数修正。每一个运转的Oracle数据库实例呼应地有一个在线日志,它与Oracle背景过程LGWR一同事情,马上记载该实例所作的悉数修正。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可组成在线日志归档文件。归档的在线日志文件被唯一标识并兼并成归档日志。 
     ·关于在线日志:一个Oracle数据库的每一实例有一个相关联的在线日志。一个在线日志由多个在线日志文件组成。在线日志文件(online redo log file)填入日志项(redo entry),日志项记载的数据用于重构对数据库所作的悉数修正。 
     ·关于归档日志:Oracle要将填满的在线日志文件组归档时,则要设立建设归档日志(archived redo log)。其对数据库备份和克复有下列用途:
   <1>数据库后备以及在线和归档日志文件,在操作系统和磁盘缺陷中可保证悉数提交的事物可被克复。 
   <2>在数据库翻开和正常系统运用下,假定归档日志是永久保管,在线后备可以举行和运用。 
      数据库可运转在两种不同举措下:NOARCHIVELOG举措或ARCHIVELOG 举措。数据库在NOARCHIVELOG举措下运用时,不能举行在线日志的归档。假定数据库在ARCHIVELOG举措下运转,可实行在线日志的归档。

3.物理和逻辑存储结构

    Oracle RDBMS是由表空间组成的,而表空间又是由数据文件组成的。表空间数据文件被花式化为内部的块单元。块的大大小,是由DBA在Oracle第一次设立建设的工夫设置的,可以在512到8192个字节的领域内变化。当一个东西在Oracle表空间中设立建设的工夫,用户用叫做长度的单元(初始长度((initial extent)、下一个长度(next extent)、最小长度(min extents)、以及最大大长度(max extents))来标明该东西的空间大大小。一个Oracle长度的大大小可以改善,可是要包孕一个由至多五个继续的块组成的链。


(二)Oracle数据安静的维护

    记得某位哲学家说过:“事物的改善离不开内因和外因。”那么关于Oracle数据安静这个话题而言,也势必分为“内”和“外”两个部分。那么好,我们就先从“内”开端提及:

1.从Oracle系统自身提及

    我们先抛开令人闻风色变的“hacker”和其他一些内部的缘由,先想一下我们的数据库。什么硬盘破坏,什么软件受损,什么操作事物……一系列因为我们的“敷衍”而形成的系统题目就完全可以让我们辛劳设立建设的数据库中的数据一去不复返。那么,我们就先从自身身上找找缘由吧。
    【一】处理系统自身题目的举措--数据库的备份及克复
   ·数据库的备份:
   关于Oracle数据库的备份,尺度地有三中举措:导出/导入(Export/Import)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。 
   <1>导出/导入(Export/Import) 
    运用Export可将数据从数据库中提取出来,运用Import则可将提取出来的数据送回Oracle数据库中去。 
   a.简略导出数据(Export)和导入数据(Import)
     Oracle支持三种尺度的输入: 
    (1)表举措(T举措),将指定表的数据导出。 
    (2)用户举措(U举措),将指定用户的悉数东西及数据导出。 
    (3)全库举措(Full举措),将数据库中的悉数东西导出。 
    数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。 
   b.增量导出/导入 
    增量导出是一种常用的数据备份举措,它只能对整个数据库来实行,而且必需作为SYSTEM来导出。在举行此种导出时,系统不要求回答任何题目。导出文件名缺省为export.dmp,假定不企望自身的输入文件命名为export.dmp,必需在命令行中指出要用的文件名。 
     增量导出包孕三个尺度: 
     (1)“完全”增量导出(Complete) 
    即备份整个数据库,譬喻: 
        $exp system/manager inctype=complete file=990702.dmp 
     (2)“增量型”增量导出 
        备份上一次备份后改变的数据。譬喻: 
        $exp system/manager inctype=incremental file=990702.dmp 
     (3)“累计型”增量导出(Cumulative) 
        累计型导出举措只是导出自前次“完全” 导出之后数据库中改善了的信息。譬喻: 
        $exp system/manager inctype=cumulative file=990702.dmp 
     数据库管理员可以排定一个备份日程表,用数据导出的三个不同举措公道高效地完成。譬喻数据库的备份任务可作如下安置: 
       ·星期一:完全导出(A) 
       ·星期二:增量导出(B) 
       ·星期三:增量导出(C) 
       ·木曜日:增量导出(D) 
       ·星期五:累计导出(E) 
       ·星期六:增量导出(F) 
       ·星期日:增量导出(G) 
   假定在星期日,数据库遭到意外破坏,数据库管理员可按以下步调来克单数据库: 
    第一步:用命令CREATE DATABASE从头生成数据库结构; 
    第二步:设立建设一个充足大大的附加回段。 
    第三步:完全增量导入A: 
      $imp system./manager inctype= RECTORE FULL=Y FILE=A 
   第四步:累计增量导入E: 
    $imp system/manager inctype= RECTORE FULL=Y FILE =E 
    第五步:迩来增量导入F: 
    $imp system/manager inctype=RESTORE FULL=Y FILE=F 
    <2>冷备份 
    冷备份孕育发作在数据库已经正常封闭的环境下,当正常封闭时会提提供我们一个齐全的数据库。冷备份是将枢纽性文件拷贝到别的地位的一种说法。关于备份Oracle信息而言,冷备份是最快和最安静的举措。冷备份的所长是:
   ·是很是快速的备份举措(只需拷贝文件) 
   ·等闲归档(简略拷贝即可) 
   ·等闲克复到某个工夫点上(只需将文件再拷贝回去) 
   ·能与归档举措相连系,作数据库“最新状态”的克复。 
   ·低度维护,高度安静。 
    但冷备份也有如下不敷: 
   ·零丁运用时,只能提供到“某暂工夫点上”的克复。 
   ·在实行备份的全过程中,数据库必需要作备份而不能作别的事情。也便是说,在冷备份过程中,数据库必需是封闭状态。 
   ·若磁盘空间无限,只能拷贝到磁带等别的内部存储设备上,速率会很慢。 
   ·不能按表或按用户克复。 
    假定大大概的话(主要看遵从),应将信息备份到磁盘上,然后启动数据库(运用户可以事情)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以事情)。冷备份中必需拷贝的文件包孕: 
   ·悉数数据文件 
   ·悉数节制文件 
   ·悉数联机REDO LOG文件 
   ·Init.ora文件(可选) 
    值得把稳的是冷备份必需在数据库封闭的环境下举行,当数据库处于翻开状态时,实行数据库文件系统备份是有效的 
   下面是做冷备份的齐全例子: 
   (1) 封闭数据库$sqldba lmode=y 
                 SQLDBA >connect internal; 
                 SQLDBA >shutdown normal; 
   (2) 用拷贝命令备份悉数的工夫文件、重做日志文件、节制文件、初始化参数文件 
                 SQLDBA >! cp < file > < backup directory > 
   (3) 重启Oracle数据库 
                 $sqldba lmode=y 
                 SQLDBA >connect internal; 
                 SQLDBA >startup; 
    <3>热备份 
        热备份是在数据库运转的环境下,接纳archivelog mode举措备份数据的举措。所以,假定你有昨天夜里的一个冷备份而且又有明天的热备份文件,在孕育发作题目时,就可以运用这些质料克复更多的信息。热备份要求数据库在Archivelog举措下操作,并需求大少量的档案空间。一旦数据库运转在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成: 
1.数据文件一个表空间一个表空间地备份。 
(1)设置表空间为备份状态 
(2)备份表空间的数据文件 
(3)克复表空间为正常状态 
2.备份归档log文件。 
(1)姑且终了归档过程 
(2)log下那些在archive redo log目标目次中的文件 
(3)从头启动archive过程 
(4)备份归档的redo log 文件 
3.用alter database backup controlfile命令来备份拷贝文件 
   热备份的所长是: 
  ·可在表空间或数据文件级备份,备份工夫短。 
  ·备份时数据库仍可运用。 
  ·可达到秒级克复(克复到某暂工夫点上)。 
  ·可对险些悉数数据库实体作克复。 
  ·克复是快速的,在大大多数环境下在数据库仍事情时克复。 
   热备份的不敷是: 
  ·不能犯错,不然成就严峻。 
  ·若热备份不告成,所得后果不成用于工夫点的克复。 
  ·因难于维护,所以要分外注意小心,不容许“以失败而了却”。




版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。不然将究查法令责任。

posted @ 2011-03-07 20:08  蓝色的天空III  阅读(131)  评论(0编辑  收藏  举报