【oracle笔记】实例恢复instance failure and recovry

 

预备知识

对数据库进行修改的时候,服务进程先将要修改的数据块读入数据库高速缓冲区database buffer cache,然后在日志缓冲区中写入即将应用于数据块的变化(包括应用于数据块的变化和撤销块undo的变化)。如果是更新列,新值(应用于表数据块的变化)和旧值(应用于撤销块的变化)都会被写入日志缓冲区redo log buffer。生成重做日志后,就可以在database buffer cache内完成更新操作了:使用变化后的列更新表数据块,未变化的列被写入撤销段数据块。从此刻到提交update操作,所有查询都会被重定向至撤销段,即隔离性isolation。

 

COMMIT后,会将日志缓冲区redo log buffer的内容写入重做日志文件online redo log files。被写入重做日志文件的重做流 包含了被提交的事务以及未被提交的事务。而与DBWn无关

 

服务器进程在内存中工作,在数据高速缓冲区内更新数据块和撤销段,然后DBWn根据LRU算法将数据高速缓冲区的内容写入数据文件。其中可能包含用于已提交事务和未提交事务的数据文件的数据块或撤销块。

the server processes work in the memory: they update blocks of data and undo segments in the database buffer cache, not on disk. then DBWn will write the changed block down to the datafiles according the algorithm that DBWn uses.

 

 

instance failure and reasons

instance failure is a disorderly shutdown of the instance , popularly referred as a crash.

this could be caused by a power cut, by switching off or rebooting the server machine, or by any number of critical hardware problems. In some circumstances one of the Oracle backuground processes may fail; this will also trigger an immediate instance failure.  just the same as issuing the SHUTDOWN ABORT command.

 

即在发生instance failure的时候,可能 已提交事务的未被写入数据文件,而未提交事务被写入数据文件。此时数据库发生讹误。

我们知道重做日志总是先于数据的,所以在重做日志中已经保存有对数据文件的修改(数据块和撤销块)。

 

在roll forward完成之前,数据库不能被打开,用户无法连接到数据库。

instance recovery

as the ACID says, it may never lose a committed transaction and never show an uncommitted transaction.

and when instance failure hanppens, Oracle will start the instance recovery automaticly when you start it.

 

roll forward

it will use the contents of the online logfiles torebuild the database buffer cache to the state it was in before the crash.this phase of recovery, calls the roll forward 前滚, reinstates(恢复原来状态) all changes: changes to data blocks and changes toundo blocks, for both committed and uncommitted transactions. the appropriate block is loaded from the datafiles into the database buffer cache, and the change is applied. then the block is written back to disk. 即根据数据文件和重做日志文件的SCN(?),将相应的(最大的一直状态的数据文件)数据文件读取到数据库高速缓冲区,并将此SCN之后的日志文件应用于读取的数据文件上,还原到崩溃之前的数据高速缓冲区的状态。

 

 

rollback phase

once the roll forward is complete, it is as though the crash had never occured.

then Oracle will roll back the uncommitted transactionsin the database automatically. but it happens after the database has been opened for use. if a user connects and hits some data that needs to be rolled back but hasn't yet been, the server will roll back the changes with undo segment.

 

the process of instance recovry

when you issue STARTUP command, first it read the parameter file,build the instance in memory分配内存启动后台进程; then it reads the controlfile when the database transitions to mount mode. 

then in the transition to open mode, SMON checks thefile headers of all the datafiles and online redo logfiles. At this point, if there had been an instance failure, it is apparent(obvious) the file headers are all out of sync. so SMON goes into the instance recovery routine, and the database is only actually opened after the roll forward phase has completed.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MSSQL是一种常用的关系型数据库管理系统,用于存储和管理大量的数据。当MSSQL数据库出现故障或者意外情况导致数据丢失时,我们需要进行恢复操作以恢复数据库的正常运行状态。 MSSQL数据库恢复一般分为物理恢复和逻辑恢复两种方式。 物理恢复是通过数据库备份和日志文件的恢复来实现的。首先,我们需要检查数据库的备份是否可用,并将备份文件还原到一个新的位置。然后,我们需要找到最近的事务日志文件,将其应用到已还原的备份文件中,以完成数据的恢复。 逻辑恢复主要适用于当数据库的结构出现问题,例如表结构发生变化或者某些数据被意外删除时。在这种情况下,我们需要根据数据库的结构和逻辑关系,手动进行数据的修复和恢复。 无论是物理恢复还是逻辑恢复,我们在进行数据库恢复之前,需要先进行数据备份,以确保在出现问题时能够方便地恢复数据到之前的状态。 另外,为了防止数据库故障和数据丢失,我们还可以考虑使用一些数据库故障恢复的最佳实践: 1. 定期备份数据库,包括完整备份和增量备份,并将备份文件存储在不同的位置,以防止单点故障。 2. 定期检查数据库的完整性和一致性,以及日志文件的状态,及时发现并修复潜在的问题。 3. 使用事务来确保数据库的一致性和完整性,及时提交或者回滚事务,避免数据损坏。 4. 设置数据库监控和告警机制,及时发现数据库的异常情况并采取相应的措施进行修复。 综上所述,MSSQL数据库恢复是一个相对复杂的过程,需要根据具体的故障情况选择合适的恢复方式,并保持定期备份和监控,以确保数据库的安全性和可靠性。 ### 回答2: MSSQL恢复是指在MSSQL数据库遇到故障或数据丢失的情况下进行数据恢复和修复的过程。 对于MSSQL数据库而言,常见的故障包括硬件故障、操作系统崩溃、数据库文件损坏等。在出现这些故障时,数据库可能无法正常运行,数据可能会丢失或损坏,这就需要进行MSSQL恢复操作。 在MSSQL恢复过程中,首先需要进行数据库备份的恢复数据库备份可以是完整备份、差异备份或日志备份。根据备份类型的不同,恢复操作的步骤也会有所不同。 对于完整备份,可以直接将备份文件还原到原始数据库中。对于差异备份,需要先还原最近的完整备份,然后再还原差异备份。对于日志备份,则需要先还原最近一次的完整备份和差异备份,然后再逐个还原日志备份,以保证数据库的一致性。 除了备份恢复,还可以使用数据库的事务日志进行MSSQL恢复。MSSQL数据库会将所有的事务操作记录在事务日志中,如果数据库出现故障,可以通过事务日志进行故障恢复。事务日志可以包括活动日志、事务描述日志和备份日志等。 在进行MSSQL恢复操作时,需要根据具体的故障状况和备份策略选择恢复方法。同时,也需要保证在进行恢复操作之前,数据库的备份文件是完整可用的,以免造成数据的进一步丢失。 总之,MSSQL恢复是一个重要的数据库管理操作,可以帮助数据库管理员及时修复数据库故障,保护重要数据的完整性和可用性。 ### 回答3: MSSQL Recovery是指对Microsoft SQL Server数据库进行恢复的过程。 MSSQL数据库可能会因为各种原因遭受损坏,例如硬件故障、系统崩溃、人为错误或恶意软件攻击等。当数据库受损时,可能会导致数据丢失、数据不一致或系统无法正常运行。 进行MSSQL Recovery的目标是尽量最大程度地恢复数据库,以便保留尽可能多的数据并确保其完整性。 进行MSSQL Recovery的主要步骤包括: 1. 识别损坏的数据库:通过检查错误日志和相关症状,确定数据库是否受损。 2. 停止数据库服务:在进行恢复过程之前,需要停止MSSQL服务以防止进一步破坏。 3. 备份恢复:如果存在最近的备份文件,可以通过恢复该备份来恢复数据库。这是最常见和简单的恢复方法。 4. 事务日志恢复:如果没有可用的备份文件或日志备份文件,可以尝试使用事务日志来恢复数据库。MSSQL Server使用事务日志来记录对数据库的更改,以便在系统故障后恢复。 5. 修复和恢复:最后一种方法是尝试修复和恢复数据库文件。这通常需要使用特定工具和技术进行。 需要注意的是,MSSQL Recovery的成功与否取决于损坏的程度、可用的备份文件以及操作者的专业知识和经验。因此,在进行恢复操作之前,建议咨询专业人士或使用有经验的人员进行操作,以尽量确保数据的安全和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值