Oracle DB还原和恢复任务

本文详细介绍了Oracle数据库在遭遇文件丢失、日志组问题等状况时的恢复操作,包括自动恢复临时文件、丢失重做日志组后的恢复、索引表空间恢复、口令验证文件重建以及不同类型的恢复过程,如完全恢复、时间点恢复和只读表空间恢复等。
摘要由CSDN通过智能技术生成
• 描述文件丢失的原因并确定相应的
• 描述主要的恢复操作
• 备份和恢复控制文件
• 在丢失了重做日志组后进行恢复
  • 还原和恢复
备份和恢复任务的“恢复”部分包括的活动有两种主要类型:还原和恢复。
“还原”文件是指将备份复制到位以供数据库使用的过程。
 
例如,如果由于文件所在的物理磁盘出现故障而使文件受损,则还原文件是必要的。
出现这种情况通常是由于硬件问题,如磁盘写入错误或控制器故障。
在这种情况下,需要将文件备份复制到新的(或已修复的)磁盘上。
 
“恢复”文件需要应用重做,以便将文件的状态恢复到所需的任何时间点。
该点通常应尽可能地接近故障时间。
在数据库行业中,这两个操作通常全部用一个术语“恢复”来指代。
  • 文件丢失的原因
以下原因可能会导致文件丢失:
• 用户错误
• 应用程序错误
• 介质故障
 
文件丢失的原因
 
以下原因可能会导致文件丢失或损坏:
• 用户错误:管理员可能因疏忽而删除或覆盖了必需的操作系统文件。
• 应用程序错误:应用程序或脚本也可能包含逻辑错误,当它处理数据库文件时,会导致文件丢失或损坏。
• 介质故障:磁盘驱动器或控制器可能会完全或部分发生故障,从而导致文件损坏,甚至文件完全丢失。
  • 关键性与非关键性
非关键性文件丢失是指数据库可以继续运行的故障。
通过执行以下操作之一,可以解决该问题:
• 创建一个新文件。
• 重建文件。
• 恢复丢失或损坏的文件。
 
关键性与非关键性
非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件。
例如,如果数据库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件副本来保持数据库持续运行。
虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能。
 
例如:
• 丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,则丢失后甚至会导致应用程序无法使用。
• 只要丢失的联机重做日志组不是当前的联机日志组,就可能会导致数据库操作挂起(当LGWR 下次尝试写入组时),直到生成新的日志文件为止。
• 丢失临时表空间会使用户无法运行查询或创建索引,直到将这些用户分配到新的临时表空间为止。
  • 自动恢复临时文件
如果缺失任何一个临时文件,则需要临时空间来执行的SQL 语句会失败。
SQL> select * from big_table order by
1,2,3,4,5,6,7,8,9,10,11,12,13;
select * from big_table order by
1,2,3,4,5,6,7,8,9,10,11,12,13
*
ERROR at line 1:
ORA-01565: error in identifying file '/u01/app/oracle/oradata/orcl/temp01.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
 
好消息:
• 启动时自动重新创建临时文件
• (也可以手动重新创建)
 
自动恢复临时文件
 
如果属于临时表空间的某个临时文件(tempfile) 丢失或损坏,则该文件中的区将不可用。
在执行需要临时空间进行排序的SQL 语句期间,此问题会声明自己为错误。
上面显示的SQL 语句有很长一串要作为排序依据的列,因此需要临时空间。
 
执行需要排序的此语句时会遇到缺失文件错误。
Oracle DB 实例可以在临时文件缺失的情况下启动。
启动数据库实例时如果有任何临时文件不存在,系统都会自动创建这些临时文件,从而使数据库可以正常打开。
发生这种情况时,启动过程中会在预警日志中显示类似下面的消息:
Re-creating tempfile /u01/app/oracle/oradata/orcl/temp01.dbf
 
如果用户认为手动重新创建能更好地服务(这种情况的可能性不大),可以使用下列命令:
SQL> ALTER TABLESPACE temp ADD TEMPFILE
'/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 20M;
SQL> ALTER TABLESPACE temp DROP TEMPFILE
'/u01/app/oracle/oradata/orcl/temp01.dbf';
 
 
  • 日志组状态:综述
在任何给定时间,重做日志组的状态都会是以下值之一:
• CURRENT:LGWR 进程当前正在向该重做日志组写入重做数据。
• ACTIVE:不再向该重做日志组写入数据,但是恢复实例时仍然需要它。
• INACTIVE:不再向该重做日志组写入数据,且恢复实例时也不再需要它。
 
日志组状态:综述
 
要处理重做日志文件的丢失问题,了解重做日志组的可能状态非常重要。
 
在Oracle DB 正常运行过程中,重做日志组会循环经历三种不同的状态。按照循环的顺序,状态分别是:
• CURRENT:此状态表明LGWR 正在向该重做日志组写入数据,以记录数据库中正在进行的所有事务处理的重做数据。该日志组将保持此状态,直到切换至其它日志组为止。
 
• ACTIVE:该重做日志组仍包含恢复实例所需的重做数据。这是尚未执行检查点时重做日志组所处的状态,检查点会将重做日志组中出现的所有数据更改写出到数据文件。
 
• INACTIVE:已实际执行了上面讨论的检查点,这意味着恢复实例时不再需要该重做日志组,它可以变为下一个CURRENT日志组。
 

sys@TEST0924> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ -------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值