博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DBA2 第四章:恢复不太严重的损失

Posted on 2011-09-17 12:17  little健健  阅读(288)  评论(0编辑  收藏  举报

文件丢失的原因

  • 用户错误:管理员可能会因疏忽删除或覆盖了操作系统必需的文件
  • 应用程序错误:应用程序或脚本也可能包含逻辑错误,当它处理数据库文件时,会导致文件丢失或损坏。
  • 介质故障:磁盘驱动器或控制器可能会发生完全或部分故障,从而导致文件损坏,甚至文件完全丢失。
  • 非关键性丢失
    • 数据库仍可继续运行
    • 处理方法
      • 创建一个新文件。
      • 重建文件。
      • 恢复丢失或损坏的文件

丢失 和恢复TEMPFILE

  • 丢失TEMPFILE
    • 如果缺失任何一个临时文件,则需要 TEMP 空间来执行的SQL 语句都将失败。
    • Oracle 数据库可以在临时文件缺失的情况下启动。启动数据库时如果有任何临时文件不存在,系统都会自动创建这些临时文件,从而使数据库可以正常打开
  • 恢复 TEMPFILE 丢失
    • 示例
      • 添加一个新的数据文件
        • 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';

            

日志组

  • 状态
    • CURRENT:此状态表明 LGWR 正在向重做日志组写入,以记录数据库中正在进行的所有事务处理的重做数据。该日志组将保持此状态,直到切换至其它日志组为止。
    • ACTIVE:重做日志组仍包含进行实例恢复所需的重做数据。这是尚未执行检查点期间重做日志组所处的状态,重做日志组中出现的所有数据更改都将写出到数据文件。
    • INACTIVE:以上讨论的检查点已经执行,这表示不再需要该重做日志组来进行实例恢复,它可以变为下一个 CURRENT日志组。
  • 丢失重做日志组成员
    • 缺失重做成员文件时,预警日志和归档进程 (ARCn) 跟踪文件将记录一条错误消息。
    • 丢失了非当前重做日志组
      • ALTER DATABASE CLEAR LOGFILE  重新创建组中的所有成员
    • 丢失的重做日志组在丢失前已经进行了归档,不需要进行任何操作
    • 不符合以上两种情况,应该立即备份
  • 重新创建重做日志文件:必须具有 ALTER DATABASE系统权限
    • 限制和防范措施
      • 实例至少需要两个重做日志文件组,而无论组中成员数目的多少
      • 仅当重做日志组或组成员处于不活动状态时才能将其删除
      • 应当在删除重做日志组前,将其归档(如果启用了归档)。若要查看是否已归档,请使用 V$LOG 视图。
        • SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; --查询日志组状态

          SQL
          > alter system switch logfile; --切换日志组
          SQL> alter system checkpoint;      --使日志组状态变为inactive

            

    • 示例
      • 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;

          

    • EM:管理-->重做日志组-->编辑,查看

重新创建索引

  • 示例
    • SQL> CREATE INDEX rname_idx
      2 ON hr.regions (region_name)
      3 PARALLEL 4;

        

  • PARALLEL :多个进程可以同时协同工作来创建索引。
  • NOLOGGING:创建进程将创建极少的重做日志条目

验证

  • 数据库管理员的验证方法
    • 操作系统验证优先于口令文件验证。特别是,如果您是操作系统的 OSDBA 或 OSOPER组的成员,并且以 SYSDBA或 SYSOPER 身份连接,则连接时将具有相关的管理权限,而与您指定的用户名/口令无关。
  • 重新创建口令验证文件
    • 使用 OS 验证登录到数据库
    • 将REMOTE_LOGIN_PASSWORDFILE 参数设置为 NONE 并重新启动数据库
    • 使用口令实用程序orapwd 创建口令文件。
      • orapwd file=filename password=password entries=max_users
      • Entries 是允许以SYSDBA或 SYSOPER 身份连接的最大相异用户数
    • 将REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE
      • EXCLUSIVE 表示仅一个实例可以使用口令文件且口令文件包含除 SYS 之外的其它名称。
    • 使用在步骤 3 中创建的口令文件连接到数据库。
      • CONNECT sys/admin AS SYSDBA
    • 重新启动实例
  • 口令文件位置
    • UNIX:$ORACLE_HOME/dbs  
    • Windows:%ORACLE_HOME%\database