11.10.26 恢复非关键性文件

本文介绍一些简单的恢复情况
目标是完成:
  1. 恢复临时表空间
  2. 恢复重做日志组成员
  3. 恢复丢失的索引
  4. 重新创建口令文件

目录:
--文件丢失
----恢复临时文件
----恢复重做日志文件
----恢复索引
----恢复验证文件


文件丢失

※以下原因可能会导致文件丢失或损坏:
  1. 用户错误
  2. 应用程序错误
  3. 介质故障

※丢失的文件也分为 关键性文件非关键性文件

※非关键性文件:数据库和大多数应用程序没有它也可以继续运行的文件
例如丢失了一个多路复用重做日志文件,仍可以使用其他重做日志文件来保证数据库持续运行
※虽然丢失非关键性文件不会使数据库崩溃,但会削弱数据库功能,例如:
  1. 丢失索引表空间会使应用程序和查询的速度大大减慢
  2. 丢失联机重做日志组(只要不是当前联机日志组)会导致数据库被挂起,直到生成新的日志文件为止
  3. 丢失临时表空间会使得用户无法创建索引或者使用查询,直到用户分配到新的临时表空间为止
※可以采用以下办法进行非关键性文件的修复:
  1. 创建一个新文件
  2. 重建文件
  3. 恢复丢失或者损坏的文件


临时文件

※如果属于临时表空间的临时文件丢失或者损坏,则TEMP表空间将不可用。需要TEMP 空间来执行的SQL 语句都将失败。
※ORACLE数据库可以在临时文件缺失的情况下启动。启动数据库时如果有任何临时文件不存在,系统都会自动创建这些临时文件。
发生这种情况时,启动过程中会在预警日志中进行记录。

恢复TEMPFILE的丢失
※不需要重新启动数据库就可以恢复丢失的TEMPFILE。

※通过创建新文件恢复,示例如下:
例如在OS层面删除了属于临时表空间TEMP的数据文件temp01.dbf后,如果需要恢复数据库,可以采用以下步骤:
①在数据库临时表空间中添加一个新的数据文件
SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 20M;
②删除那个已在OS层删除的文件
SQL> ALTER TABLESPACE temp DROP TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf';


重做日志文件

※处理重做日志文件的丢失情况前,先来了解下重做日志组的可能状态:
  1. CURRENT:LGWR 进程当前正在向重做日志组写入重做数据,该日志组将保持此状态,直到切换至其他日志组为止。
  2. ACTIVE:不再向重做日志组写入数据,但其仍包含进行实例恢复所需的重做数据。
  3. INACTIVE:不再向重做日志组写入数据,且不再需要它来进行实例恢复,可以变成下一个CURRENT日志组。
△oracle数据库正常运行过程中,重做日志组会循环经历这三种不同的状态。

※重做数据对于恢复操作至关重要,因为它包含对数据库所有修改的记录,从而允许您在从备份还原后进行前滚操作。
※重做日志组可以包含多个成员,每个成员与组内的其他成员相同,目的是为了提供冗余。
△确保数据库的正常运行,必须至少有两个重做日志组可以用,且每组中至少有一个成员可用。

※如果缺失重做成员文件时,预警日志和归档进程(ARCn) 跟踪文件将记录一条错误消息。
※若果丢失了非当前重做日志组,则可以使用alter database clear logfile 语句重新创建组中的所有成员。
※删除 重做日志组之前,有以下注意事项:
  1. 实例至少需要两个重做日志文件组,而无论组中的成员数目多少
  2. 仅当重做日志或组成员处于不活动状态时才能将其删除
  3. 应在删除重做日志组前,将其归档
△查看重做日志组是否归档及其状态,可以通过查看V$LOG视图
例如
SQL>SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;

GROUP# ARC STATUS
---------  ---  ----------------
YES  ACTIVE
2 NO  CURRENT
YES  INACTIVE 
※可以通过使用有DROP LOGFILE子句的ALTER DATABASE语句来删除重做日志组
例如:
下面的语句将删除编号为3 的重做日志组:
ALTER DATABASE DROP LOGFILE GROUP 3;

※删除单独的 重做日志组成员之前,有以下注意事项:
  1. 实例始终至少需要两个有效重做日志文件组,而无论组中成员数目的多少。
  2. 删除成员前,请确保重做日志成员所属的组已经归档
  3. 仅当重做日志成员不是活动组或当前组的一部分时才能删除该成员
※可以通过使用有DROP LOGFILE MEMBER子句的ALTER DATABASE语句来删除重做日志组成员

※如果某个需要删除的重做日志组是处于活动状态,更改状态步骤如下:
  1. 强制进行日志转换
  2. 强制检查点(如果强制日志转换后日志组还是处于活动状态的话)
示例如下:
使当前日志组转换为活动或非活动状态:
SQL>ALTER SYSTEM SWITCH LOGFILE;
强制检查点,使活动日志组转换为非活动状态:
SQL>ALTER SYSTEM CHECKPOINT;

※重新创建重做日志组成员文件示例如下:
SQL> ALTER DATABASE DROP LOGFILE MEMBER 
 '/u01/app/oracle/oradata/orcl/redo02b.log';

SQL> !rm /u01/app/oracle/oradata/orcl/redo02b.log

SQL> ALTER DATABASE ADD LOGFILE MEMBER  
 '/u01/app/oracle/oradata/orcl/redo02b.log'  TO GROUP 2; 

△从数据库中删除重做日志组或重做日志成员,并未使用OMF时,将不会从磁盘上删除相应文件,仅更新控制文件。
使用ALTER DATABASE删除重做日志组或重做日志成员后,应使用适当的OS层命令来清除已删除的重做日志文件。


索引

※索引丢失时,更为快速、简单的方法是重新创建而不是尝试恢复索引。

※创建或重新创建索引时,可以使用以下关键字来缩短创建时间:
  1. PARALLEL:使用并行多个进程同时协同工作来创建索引
  2. NOLOGGING:使创建进程创建极少的重做日志条目,使索引创建速度更快

※实例如下:
使用PARALLEL关键字
SQL>CREATE INDEX idx ON table(column) PARALLEL 4;

※nologging/logging是永久属性,因此将显示在数据字典中,通过ALTER INDEX 命令可以随时更新
SQL>ALTER INDEX NOLOGGING;
SQL>ALTER INDEX LOGGING;



验证文件

※数据库验证分为OS验证与口令文件验证
△操作系统验证优先于口令文件验证
※通常,口令文件不包含在备份中,因为在大多数情况下,可在万不得已时重新创建口令文件。如果丢失了口令文件,要重新创建该文件需要至少关闭并重新启动数据库一次。为了避免不必要的停机时间,应该在备份中包含口令文件。
※如果使用REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE(或SHARED)装载了数据库或实例,请不要删除或修改口令文件。否则,将无法使用该口令文件从远程重新连接。即使替换了该文件,也无法使用新口令文件,因为时间戳和校验和将是错误的。
※Oracle 数据库提供了一个口令实用程序orapwd 来创建口令文件
orapwd语法:
 $# orapwd  file=filename  password=password  entries=max_users
△参数解释:
  1. file--口令文件的名称 
  2. password--SYSOPER和SYSDBA的口令 
  3. entries--允许以SYSOPER或SYSDBA身份连接的最大相异用户数
例如:
orapwd file=$ORACLE_HOME/dbs/orapwU15
password=admin entries=5  


※重新创建口令验证文件步骤实例如下:
  1. 使用OS验证登录到数据库
  2. 将REMOTE_LOGIN_PASSWORDFILE参数设置为NONE并重启数据库
  3. 使用口令实用程序orapwd创建口令文件
  4. 将REMOTE_LOGIN_PASSWORDFILE 参数设置为EXCLUSIVE
  5. 使用步骤3创建的口令文件连接到数据库,例如connect sys/admin as sysdba
  6. 重新启动实例



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26121819/viewspace-709668/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26121819/viewspace-709668/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值