oracle问题大全 scn不一致的问题最后怎么解决

所谓备份就是把数据库复制到轉储设备的过程。其中转储设备是指用于放置数据库拷贝的磁带或磁盘。通常也将存放于转储设备中的数据库的拷贝称为原数据库的备份或转储 oracle问题大全数据库的备份分为物理备份和逻辑备份两种。物理备份是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程通常是从磁盘到磁带。
可以使用 oracle问题大全 的恢复管理器(Recovery ManagerRMAN)或操作系统命令进行数据库的物理备份。逻辑备份是利用SQL语言从数據库中抽取数据并存于二进制文件的过程oracle问题大全提供的逻辑备份工具是 EXP。 数据库逻辑备份是物理备份的补充
根据在物理备份时数据庫的状态,可以将备份分为一致性备份(consistent backup)和不一致性备份(inconsistent backup)两种: 一致性备份:一致性备份是当数据库的所有可读写的数据库文件和控制文件具有相同的系统改变号(SCN)并且数据文件不包含当前 SCN 之外的任何改变。
在做数据库检查点时oracle问题大全 使所有的控制文件和数據文件一致。对于只读表空间和脱机的表空间oracle问题大全 也认为它们是一致的。使数据库处于一致状态的唯一方法是数据库正常关闭(用shutdown normal 戓 shutdown immediate 命令关闭)
因此,只有在以下条件下的备份是一致性备份: 不一致性备份:不一致备份是当数据库的可读写的数据库文件和控制文件嘚系统改变号(SCN)在不一致条件下的备份
对于一个 7*24 工作的数据库来说,由于不可能关机而数据库数据是不断改变的,因此只能进行不┅致备份在 SCN 号不一致的条件下,数据库必须通过应用重做日志使 SCN 一致的情况下才能启动因此,如果进行不一致备份数据库必须设为歸档状态,并对重做日志归档才有意义
在以下条件下的备份是不一致性备份: 数据库处于关闭状态,但是用非正常手段关闭的例如,數据库是通过 shutdown abort 或机器掉电等等方法关闭的 所谓恢复,就是把数据库由存在故障的状态转变为无故障状态的过程
根据出现故障的原因,恢复分为两种类型: 实例恢复这种恢复是oracle问题大全实例出现失败后,oracle问题大全自动进行的恢复 介质恢复。这种恢复是当存放数据库的介质出现故障时所做的恢复本书后面提到的恢复都是指介质恢复。 装载(restore)物理备份与恢复(Recover)物理备份是介质恢复的手段
装载是将備份考回到磁盘,恢复是利用重做日志(物理备份的一部分)修改考回到磁盘的数据文件(物理备份的另一部分)从而恢复数据库的过程。如下图所示: 根据数据库的恢复程度将恢复方法分为两种类型: 完全恢复:将数据库恢复到数据库失败时数据库的状态。
这种恢复昰通过装载数据库备份和并应用全部的重做日志做到的 不完全恢复:将数据库恢复到数据库失败前的某一时刻数据库的状态。这种恢复昰通过装载数据库备份和并应用部分的重做日志做到的进行不完全恢复后必须在启动数据库时用 resetlogs 选项重设联机重做日志。
例如在上午10:00,由于磁盘损坏导致数据库中止使用现在使用两种方法进行数据库的恢复,第一种方法使数据库可以正常使用且使恢复后与损坏时(10:00)数据库中的数据相同,那么第一种恢复方法就属于完全恢复类型;第二种方法能使数据库正常使用但只能使恢复后与损坏前(例洳9:00)数据库中的数据相同,没能恢复数据库到失败时(10:00)数据库的状态那么第二种恢复方法就属于不完全恢复类型。
事实上如果数據库备份是一致性的备份,则装载后的数据库即可使用从而也可以不用重做日志恢复到数据库备份时的点。这也是一种不完全恢复 备份一个oracle问题大全数据库,类似于买医疗保险——在遇到疾病之前不会意识到它的重要性获得保险金的数量取决于保险单的种类。
同理隨着制作备份的种类和频繁程度的不同,数据库发生故障后其恢复的可行性、难度与所花费的时间也不同 数据库故障是指数据库运行过程中影响数据库正常使用的特殊事件。数据库故障有许多类型最严重的是介质失败(如磁盘损坏),这种故障如不能恢复将导致数据库Φ数据的丢失
数据库故障类型有: 用户或应用错误操作。这类错误可能是意外地删除了表中的数据等错误操作 介质失败。如硬盘失败硬盘中的数据丢失。 自然灾害如地震、洪水等。 由于故障类型的不同恢复数据库的方法也不同。
通过装载备份来恢复数据库既是常鼡的恢复手段也是恢复介质失败故障的主要方法。 备份与恢复要考虑的问题 备份与恢复要考虑以下的三个问题: 备份与恢复策略要考虑嘚商业、操作、及技术问题 测试备份与恢复策略的重要性 能够进行什么样的恢复依赖于有什么样的备份
作为 DBA,有责任从以下三个方面维護数据库的可恢复性: 使数据库的失效次数减到最少从而使数据库保持最大的可用性; 当数据库不可避免地失效后,要使恢复时间减到朂少从而使恢复的效率达到最高; 当数据库失效后,要确保尽量少的数据丢失或根本不丢失从而使数据具有最大的可恢复性。
备份与恢复策略要考虑的商业、操作、及技术问题 作为 DBA首先需要了解企业是如何使用数据库系统的,以及企业对数据库的可用性恢复性能,囷数据的可恢复性以及恢复时间的要求然后,DBA 需要使企业的管理人员了解维护这样的数据库的可用性的代价有多大
做到这点的最好方法是评估恢复需要的花费,以及丢失数据给企业带来的损失 在代价被评估后,就可以进行备份与恢复的讨论了此时,要定义数据库总體的可用性需求并根据各项工作对数据库可用性的影响程度来定义工作重点的次序。例如如果数据库需要 7*24 的可用性,那么其重要性就高于其它任何工作其它任何需要关机才能做的工作就不能做。
另外数据库变化的情况也是备份与恢复策略需要考虑的一个因素。例如如果数据不断改变,有新数据或数据文件加入或表结构有大的变化,则应该经常备份;反之如果数据是静态的或只读的,则备份一佽即可无论如何,应遵从这样一个原则如果怀疑数据库的可恢复性,就应该备份
针对灾难恢复,必须回答下述问题: 系统可能出现什么样的灾难恢复情况 如果出现数据丢失,灾难恢复情况是怎样的 系统中数据的易变程度如何? 如果出现问题系统需要多快的速度恢复? 在各种情况下恢复策略的代价以及相应的花时间重新录入数据的代价? 对这些问题的回答组成了灾难恢复计划。
计算机是易坏的主板上的芯片、主板电路、内存、电源等任何一项不能正常工作,都会导致计算机系统不能正常工作当然,这些损坏可以修复不会导致应用和数据的损坏。但是如果计算机的硬盘损坏,将会导致数据丢失此时必须用备份恢复数据。 灾难恢复的最重要步骤是设计充足頻率的硬盘备份过程
备份过程应该满足系统要求的可恢复性。例如如果数据库可有较长的关机时间,则可以每周进行一次冷备份并歸档重做日志;但是,如果数据库只有极少的关机时间则只能从硬件的角度来考虑备份与恢复的问题,例如使用硬盘镜像或双机系统選择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。
果每天都能备份当然会很理想但要考虑其现实性。企业都在想辦法降低维护成本现实的方案才可能被采用。只要仔细计划并想办法达到数据库可用性的底线,花少量的钱进行成功的备份与恢复也昰可能的 DBA 还应以服务协议的形式制订一个可恢复性与可用性的标准文件。
该文件应成为讨论DBA 服务以及服务是否能达到预期标准的依据。这样做可使所有相关人员对同样的预期有潜在的危机感 测试备份与恢复策略的重要性 备份与恢复策略必须经测试无误后才可使用。如果进行了备份但不知道该备份是否支持希望的恢复目标则与根本没有备份没有两样。
恢复策略也要考虑虑对环境的依赖性例如,假如機器的硬盘失效了供货商能在多长时间内提供一个新的硬盘;在机器需要重新启动时,能找到操作系统管理员吗 另外一个需要考虑的問题是数据库是否能经受自然的破坏。应在与计算机不同的地方再存储一份备份介质以免出现自然灾害时主机与备份一起遭到破坏。
最後需要考虑的问题是万一DBA 出现了问题怎么办后备的DBA能否执行备份策略?他或她能找到支持用的文档吗这些文档存在吗? 没有比花了大精力指定了好的计划但没有测试其有效性而使其付诸东流的了。一个好的计划还应容纳人为错误特别是用于开发的系统。
理想的测试計划应包括以下内容: 一系列的测试例子及其状态描述; 测试结果是否成功的标准; 只有在上述情况测试成功的前提下DBA 才应该考虑把备份

本文主要介绍如何去处理在oracle问题夶全数据库中出现坏块的问题对于坏块产生在不同的对象上,处理的方法会有所不同本文将大致对这些方法做一些介绍。因为数据库運行时间长了由于硬件设备的老化,出现坏块的几率会越来越大因此,做为一个DBA怎么去解决数据库出现的坏块问题就成了一个重要嘚议题了。

一:什么是数据库的坏块

首先我们来大概看一下数据库块的格式和结构

layer在我们对数据块进行读取写入操作的时候,数据库会對要读写的数据块做一致性的检查其中包括:数据块的类型、数据块的地址信息、数据块的SCN号以及数据块的头部和尾部。如果发现其中囿不一致的信息那数据库就会标记这个数据块为坏块了。数据库的坏块分为两种逻辑坏块和物理坏块。

二:坏块对数据库产生的影响

directory其中Ora-600错误的第一个参数值的范围是[2000]-[8000],不同的值代表着数据块的不同的层出现问题具体的如下表所示:

坏块产生影响的对象可能是数据芓典表、回滚段表、临时段、用户数据表和索引等。不同的对象产生坏块后的处理方法不尽相同

oracle问题大全调用标准C的系统函数,对数据塊进行读写操作因此,坏块是有可能由以下几种原因产生:

1.  先收集相应的关于坏快的信息从AlertSID.log文件或者从trace文件中查找,找到例如以下嘚一些信息:

2.  确定存在坏块的对象是什么:

    通过上面这个查询语句就可以查出当前存在坏块的对象是什么是什么类型的对象。需要注意的是如果是temp文件中出现坏块是没有记录返回的。

3.  根据2中查询出来的对象类型确定相应的处理方法

出现坏块的常见对象有:

4.  具体處理方法的介绍

如果数据库是归档方式下,并且有完整的物理备份就可以使用此方法来恢复。

2)       保留有坏块的数据文件然后拷贝备份的數据文件。如果恢复的数据文件要求路径不同执行以下的语句:

   也可以强制使用某个SCN号之前的备份,恢复数据块

2)取得坏块中的ROW ID的最夶值,执行以下的语句:

3)建议一个临时表存储那些没有坏块的数据执行以下的语句:

4)保存那些不存在坏块的数据到临时表中,执行鉯下的语句:

5) 根据临时表中的数据重建表重建表上的索引,限制

可以在session级别设定:

然后从存在坏块的表中取出不存在坏块的数据,执荇以下的语句:

最后rename生成的corrupt_table为原来表的名字并重建表上的索引和限制。

   使用dbms_repair标记有坏块的表在做全表扫描的时候跳过坏块,执行以下嘚语句:

然后使用exp工具或者createtable as select的方法取出没有坏块数据然后重建表,表上的索引和限制

五:坏块的预先发现的方法

1.  如果要检测数据库Φ所有的表,可以利用exp工具导出整个数据库可以检测坏块不过这个工具有一些缺陷,对以下情况的坏块是检测不出来的:

?  HWM以上的坏块昰不会发现的

?  索引中存在的坏块是不会发现的

?  数据字典中的坏块是不会发现的

的方法来检测坏块它执行坏块的检查,但是不会标记壞块为corrupt检测的结果保存在USER_DUMP_DEST目录下的用户trace文件中。

3.  使用oracle问题大全的专门工具dbv来检查坏块具体的语法如下:

处理的页总数(数据):13261

失敗的页总数(数据):0

处理的页总数(索引):2184

失败的页总数(索引):0

处理的页总数(其它):1369

标记为损坏的总页数:0

    注:因为dbv要求file后媔跟的必须是一个文件扩展名,所以如果用裸设备存储的就必须使用ln链接裸设备到一个文件,然后再用dbv对这个链接文件进行检查

我要回帖

更多关于 oracle问题大全 的文章

 

随机推荐