Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件

WBOY
发布: 2016-06-07 16:44:24
原创
1027 人浏览过

Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件

增量备份的应用在recovery阶段,不再restore阶段

了解数据库设置表:
SQL>desc database_properties
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PROPERTY_NAME                            NOT NULL VARCHAR2(30)
 PROPERTY_VALUE                                    VARCHAR2(4000)
 DESCRIPTION                                        VARCHAR2(4000)

关键性与非关键性
非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件。例如,如果数据库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件副本来保持数据库持续运行。
虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能。例如:丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,,则丢失后甚至会导致应用程序无法使用。
丢失联机重做日志组(只要不是当前联机日志组)会导致在 LGWR 下一次尝试写入组时数据库操作被挂起,直到生成新的日志文件为止。


丢失临时表空间会使用户无法运行查询或创建索引,直到将这些用户分配到新的临时表空间为止。
 --10g时丢失临时表空间,数据库不能启动,当11g时,丢失了临时文件,数据库会自动创建一个同名同位的临时文件;
 --11g中发生此情时发生这种情况时,启动过程中会在预警日志中显示类似下面的消息:
 --
Re-creating tempfile /u01/app/Oracle/oradata/orcl/temp01.dbf
----------------------------------------------------------------------------------------------------------------

关于redo log的修改与重建

undo表空间与redo日志

一、日志成员丢失:
    要处理重做日志文件的丢失问题,了解重做日志组的可能状态非常重要。在 Oracle DB 正常运行过程中,重做日志组会循环经历三种不同的状态。按照循环的顺序,状态分别是:

CURRENT:此状态表明 LGWR 正在向重做日志组写入数据,以记录数据库中正在进行的所有事务处理的重做数据。该日志组将保持此状态,直到切换至其它日志组为止。

ACTIVE:重做日志组仍包含恢复实例所需的重做数据。这是尚未执行检查点期间重做日志组所处的状态,重做日志组中出现的所有数据更改都将写出到数据文件。

INACTIVE:上述检查点已经执行,这表示不再需要该重做日志组来恢复实例,它可以变为下一个 CURRENT 日志组。

对在线redo log的操作:

查看日志组的状态:
SQL>select GROUP#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS from v$log;

    GROUP#  SEQUENCE#    MEMBERS ARC STATUS
---------- ---------- ---------- --- ----------------
        1          7          2 YES INACTIVE
        2          8          2 NO  CURRENT
        3          6          2 YES INACTIVE
查看日志文件的状态:
SQL>select GROUP# ,TYPE,MEMBER from v$logfile;

    GROUP# TYPE      MEMBER
---------- -----------------------------------------------------------------
        3 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_3_b22567o2_.log

        3 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_3_b2256827_.log

        2 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b2255zsg_.log

        2 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_2_b22560gb_.log

        1 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log

        1 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_1_b2255nxl_.log

  --删除原有的日志组;(只操作状态为inactive的日志组)
  --若要操作日志组为current时,需先进行日志切换:alter system switch logfile;
  --若为active时,则可强制进行检查点:alter system checkpoint;

1.操作日志文件;

1).当某个日志组中的一个数据文件丢失,对其在线操作,先添加,再删除;

alter database add logfile member '/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b_.log' to group 2;

alter database drop logfile member '/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log' to group 2;

2).在线添加一个组,再添加一个成员;

SQL>alter database add logfile group 4 '/u01/app/oracle/oradata/ORCL/onlinelog/redo04.log'size 100m;

SQL>alter database add logfile member'/u01/app/oracle/oradata/ORCL/onlinelog/redo04_b.log' to group 4;

3).查看日志组及成员;
SQL>select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;


2.日志文件丢失,重启或alter system switch logfile 触发报错;生产库中一般是日志切换触发错误;

1)丢失非current redo日志组

select a.group#, a.status, a.archived,b.member from v$log a,v$logfile b where a.group#=b.group#;
  --查看日志组状态及文件虽在位置

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板