8. Oracle 联机重做日志文件(ONLINE LOG FILE)

转载自:http://blog.csdn.net/leshami/article/details/5749556

一、Oracle中的几类日志文件

 

Redo log files      	-->联机重做日志
Archive log files   	-->归档日志
Alert log files     	-->告警日志
Trace files         	-->跟踪日志
user_dump_dest          -->用户跟踪日志
backupground_dump_dest  -->进程跟踪日志--查看后台进程相关目录
sys@LEARN01> show parameter dumpNAME				     TYPE		VALUE
----------------------- -------  -------------------------------------------------
background_core_dump	 string	 partial
background_dump_dest	 string	 /data/oracle/diag/rdbms/learn01/learn01/trace
core_dump_dest			 string	 /data/oracle/diag/rdbms/learn01/learn01/cdump
max_dump_file_size		 string	 unlimited
shadow_core_dump		 string	 partial
user_dump_dest			 string	 /data/oracle/diag/rdbms/learn01/learn01/trace关于Oracle 常用目录及路径请参考:Oracle 常用目录结构(10g) 
关于Oracle 体系结构请参考:Oracle实例和Oracle数据库(Oracle体系结构) 

 

  

 

二、联机重做日志的规划管理

--1.联机重做日志      
记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)
提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)
可以被分组管理--2.联机重做日志组
由一个或多个相同的联机日志文件组成一个联机重做日志组
至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)
由LGWR后台进程同时将日志内容写入到一个组的所有成员LGWR的触发条件在事务提交的时候(COMMIT)Redo Log Buffer 三分之一满Redo Log Buffer 多于一兆的变化记录在DBWn写入数据文件之前--3.联机重做日志成员
重做日志组内的每一个联机日志文件称为一个成员
一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同
每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组
LSN号用于唯一区分每一个联机日志组和归档日志
处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中--4.日志文件的工作方式
日志文件采用按顺序循环写的方式
当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入
写入下一组的过程称为日志切换
切换时发生检查点过程
检查点的信息同时写入到控制文件--5.联机日志文件的规划
总原则分散放开,多路复用日志所在的磁盘应当具有较高的I/O一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求建议使用rdo结尾的日志文件名,避免误删日志文件。如redo1.rdo,redo2.rdo
规划样例Redo Log Group1     Redo Log Group2     Redo Log Group3Member1             Member1              Member1            -->Physical Disk 1Member2             Member2              Member2            -->Physical Disk 2Member3             Member3              Member3            -->Physical Disk 3--6.日志切换和检查点切换
ALTER SYSTEM SWITCH LOGFILE;   --强制手动切换
ALTER SYSTEM CHECKPOINT;强制设置检查点间隔
ALTER SYSTEM SET FAST_START_MTTR_TARGET = n--7.添加日志文件组
ALTER DATABASE ADD LOGFILE [GROUP n]('$ORACLE_BASE/oradata/u01/logn1.rdo','$ORACLE_BASE/oradata/u01/logn2.rdo')SIZE mM;--8.添加日志成员
ALTER DATABASE ADD LOGFILE MEMBER
'$ORACLE_BASE/oradata/u01/logn1.rdo' TO GROUP 1,
'$ORACLE_BASE/oradata/u01/logn2.rdo' TO GROUP 2;--9.删除日志成员
不能删除组内的唯一一个成员
不能删除处于active 和current 状态组内的成员
删除处于active 和current 状态组内的成员,应使用日志切换使其处于INACTIVE状态后再删除
对于组内如果一个成员为NULL 值,一个为INVALID,且组处入INACTIVE,仅能删除INVALID状态成员
删除日志成员,物理文件并没有真正删除,需要手动删除
删除日志文件后,控制文件被更新
对于处于归档模式下的数据库,删除成员时确保日志已被归档,查看v$log视图获得归档信息
ALTER DATABASE DROP LOGFILE MEMBER '$ORACLE_BASE/oradata/u01/logn1.rdo'--10.删除日志组
一个实例至少需要两个联机日志文件组
活动或当前的日志组不能被删除
组内成员状态有NULL 值或INVALID状态并存,组不可删除
日志组被删除后,物理文件需要手动删除(对于非OMF)
ALTER DATABASE DROP LOGFILE GROUP n--11.日志的重定位及重命名
所需权限ALTER DATABASE 系统权限复制文件到目的位置操作系统权限(写权限)
CURRENT状态组内的成员不能被重命名
建议该行为之前备份数据库
重命名或重定位之后建议立即备份控制文件
重定位及重命名的两种方法添加一个新成员到日志组,然后删除一个旧的成员使用ALTER DATABASE RENAME FILE 命令(不区分归档与非归档模式)复制联机日志文件到新路径:ho cp <oldfile> <newfile>执行ALTER DATABASE RENAME FILE '<oldfile>' TO '<newfile>'对于处于CURRENT状态的需要改名且不切换的情况下办法是切换到MOUNT状态下再执行上述操作--12.清空日志文件组
ALTER DATABASE CLEAR LOGIFLE GROUP n
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n --使用unarchived 避免归档--13.日志周期循环及切换分析Group 1      Group 2      Group 3 Current      Inactive     Inactive
---------- Log Switch -------------
Active       Current      Inactive
---------- Log Switch -------------
Active       Active       Current
---------- Log Switch -------------
Current      Inactive     Inactive --Active 和Current 称之为在一个循环周期之内(按顺序写日志)
--Inactive 称为一个周期之外(一个新的循环)
--新一轮循环开始如在归档状态则先归档再清空,否则直接清空日志
--数据库启动时Active 和Current 状态的日志不能丢失,否则出错--14.日志的监视
查看日志视图中的物理日志文件是否存在、位置、大小等
SELECT 'ho cp '||member FROM v$logfile;查看日志文件所处的磁盘空间是否足够
SQL> ho df -h查看组内是否存在多个成员,如为单一成员应考虑增加日志成员
日志切换的间隔时间,应满足15-20分钟业务需求,如果切换间隔很短,应当增加日志文件的大小增加方法,先删除日志组,再重建该组(对于current和active的需要切换再做处理)--查看切换时间间隔(下面的示例中为手工切换的时间,不作考虑)
SQL> SELECT TO_CHAR(first_time,'yyyy-mm-dd hh24:mi:ss'),group# FROM v$log;TO_CHAR(FIRST_TIME,     GROUP#
------------------- ----------
2010-07-20 09:43:18          1
2010-07-19 22:44:30          2
2010-07-19 22:44:32          3          --15.日志的异常处理(参照演示中9小节)
不一致的情况(启动时)
ALTER DATABASE CLEAR LOGFILE GROUP n
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n

 三、与日志有关的动态性能视图

V$LOG
V$LOGFILEV$LOG中STATUS的状态值UNUSED: 从未对该联机日志写入任何内容,一般为新增加联机日志文件或是使用resetlog后的状态CURRENT:当前重做日志文件,表示该重做日志文件为活动状态,能够被打开和关闭ACTIVE:处于活动状态,不属于当前日志,崩溃恢复需要该状态,可用于块恢复,可能归档,也可能未归档CLEARING:表示在执行alter database clear logfile命令后正将该日志重建为一个空日志,重建后状态变为unusedCLEARING_CURRENT:当前日志处于关闭线程的清除状态。如日志某些故障或写入新日志标头时发生I/O错误INACTIVE:实例恢复不在需要联机重做文件日志组,可能归档也可能未归档V$LOGFILE中STATUS的状态值INVALID :表明该文件不可访问STALE :表明文件内容不完全DELETED : 表明该文件不再使用NULL :表明文件正在使用

四、演示

--1.查看当前数据库的日志
SQL> SELECT * FROM v$log;GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          5   52428800          1 NO  CURRENT                2758062 19-JUL-102          1          3   52428800          2 YES INACTIVE               2695010 16-JUL-103          1          4  104857600          2 YES INACTIVE               2716552 18-JUL-10SQL> SELECT * FROM v$logfile ORDER BY group#;   GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log                 NO2 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo02.log                 NO2 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo2.log                  NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo03.log                 NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo3.log                  NO   --2.添加日志组
SQL> SELECT * FROM v$logfile;GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---2 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo2.log                  NO2 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo02.log                 NO1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log                 NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo3.log                  NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo03.log                 NO4         ONLINE  /u01/app/oracle/oradata/orcl/redo4.log                  NO4         ONLINE  /u01/app/oracle/oradata/orcl/redo04.log                 NO--3.添加日志成员
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo1.log' TO GROUP 1;
Database altered.SQL> SELECT * FROM v$logfile WHERE group# = 1 ;GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log                 NO1 INVALID ONLINE  /u01/app/oracle/oradata/orcl/redo1.log                  NO--4.删除日志成员
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log';
ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log'
*
ERROR at line 1:  --redo01.log处于NULL状态且该日志组为current状态不能删除
ORA-00362: member is required to form a valid logfile in group 1
ORA-01517: log member: '/u01/app/oracle/oradata/orcl/redo01.log'SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo04.log';
Database altered.SQL>  ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo4.log'; ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo4.log'
*
ERROR at line 1:   --最后一个日志成员不能被删除
ORA-00361: cannot remove last log member /u01/app/oracle/oradata/orcl/redo4.log for group 4--5.日志切换
SQL> SELECT * FROM v$log;  --当前的日志组处于CURRENT状态GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          5   52428800          2 NO  CURRENT                2758062 19-JUL-102          1          3   52428800          2 YES INACTIVE               2695010 16-JUL-103          1          4  104857600          2 YES INACTIVE               2716552 18-JUL-104          1          0   31457280          1 YES UNUSED                       0SQL> ALTER SYSTEM SWITCH LOGFILE;  --进行日志切换System altered.SQL> SELECT * FROM v$log;    --原来的日志组4的unused状态变为current状态GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          5   52428800          2 YES ACTIVE                 2758062 19-JUL-102          1          3   52428800          2 YES INACTIVE               2695010 16-JUL-103          1          4  104857600          2 YES INACTIVE               2716552 18-JUL-104          1          6   31457280          1 NO  CURRENT                2759277 19-JUL-10SQL> ALTER SYSTEM SWITCH LOGFILE;   --再次进行日志切换System altered.SQL> SELECT * FROM v$log;          --日志组1变为current且组4变为active 状态GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          5   52428800          2 YES ACTIVE                 2758062 19-JUL-102          1          7   52428800          2 NO  CURRENT                2759293 19-JUL-103          1          4  104857600          2 YES INACTIVE               2716552 18-JUL-104          1          6   31457280          1 YES ACTIVE                 2759277 19-JUL-10        --由上可得知,在日志切换时对于unused组将优先作为下一组切换对象--再次删除redo01.log还是收到错误提示SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log';ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log'*ERROR at line 1:ORA-00362: member is required to form a valid logfile in group 1ORA-01517: log member: '/u01/app/oracle/oradata/orcl/redo01.log'SQL> ALTER SYSTEM SWITCH LOGFILE;  --再次进行日志切换System altered.SQL> SELECT * FROM v$log;          --group1变为inactiveGROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          5   52428800          2 YES INACTIVE               2758062 19-JUL-102          1          7   52428800          2 YES ACTIVE                 2759293 19-JUL-103          1          8  104857600          2 NO  CURRENT                2759420 19-JUL-104          1          6   31457280          1 YES INACTIVE               2759277 19-JUL-10--反复多切几次日志之后redo01.log被成功删除      
SQL>  ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log';
Database altered.--6.删除日志组(CURRENT和ACTIVE状态的不能被删除)
SQL> SELECT * FROM v$log;GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          9   52428800          1 YES ACTIVE                 2759487 19-JUL-102          1         11   52428800          2 NO  CURRENT                2759502 19-JUL-103          1          8  104857600          2 YES ACTIVE                 2759420 19-JUL-104          1         10   31457280          1 YES ACTIVE                 2759499 19-JUL-10SQL> ALTER DATABASE DROP LOGFILE GROUP 4;
ALTER DATABASE DROP LOGFILE GROUP 4
*
ERROR at line 1:   --处于活动状态的group4 用于灾难恢复,不能被删除
ORA-01624: log 4 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/orcl/redo4.log'SQL> ALTER SYSTEM SWITCH LOGFILE;   --进行日志切换
System altered.SQL> /
System altered.SQL> SELECT * FROM v$log;    --group 4的状态变为inactvieGROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1         13   52428800          1 NO  CURRENT                2759720 19-JUL-102          1         11   52428800          2 YES ACTIVE                 2759502 19-JUL-103          1         12  104857600          2 YES ACTIVE                 2759718 19-JUL-104          1         10   31457280          1 YES INACTIVE               2759499 19-JUL-10SQL> ALTER DATABASE DROP LOGFILE GROUP 4;   --成功删除group 4Database altered.SQL> ho ls /u01/app/oracle/oradata/orcl/redo* 
/u01/app/oracle/oradata/orcl/redo01.log  /u01/app/oracle/oradata/orcl/redo1.log
/u01/app/oracle/oradata/orcl/redo02.log  /u01/app/oracle/oradata/orcl/redo2.log
/u01/app/oracle/oradata/orcl/redo03.log  /u01/app/oracle/oradata/orcl/redo3.log
/u01/app/oracle/oradata/orcl/redo04.log  /u01/app/oracle/oradata/orcl/redo4.logSQL> ho rm /u01/app/oracle/oradata/orcl/redo04.log   --删除物理文件
SQL> ho rm /u01/app/oracle/oradata/orcl/redo4.log    --删除物理文件--7.日志的重定位及重命名(仅演示ALTER DATABASE RENAME FILE 命令)SQL> SELECT name,log_mode FROM v$database; NAME      LOG_MODE--------- ------------ORCL      ARCHIVELOGSQL> SELECT * FROM v$logfile ORDER BY group#;GROUP# STATUS  TYPE    MEMBER                                                  IS_---------- ------- ------- ------------------------------------------------------- ---1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log                 NO2         ONLINE  /u01/app/oracle/oradata/orcl/redo02.log                 NO2         ONLINE  /u01/app/oracle/oradata/orcl/redo2.log                  NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo03.log                 NO3 STALE   ONLINE  /u01/app/oracle/oradata/orcl/redo3.log                  NOSQL> ho cp /u01/app/oracle/oradata/orcl/redo01.log /u01/app/oracle/oradata/redo01.rdo     SQL> ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/redo01.log'2    TO '/u01/app/oracle/oradata/redo01.rdo';Database altered.SQL> SELECT * FROM v$logfile WHERE group# = 1;GROUP# STATUS  TYPE    MEMBER                                                  IS_---------- ------- ------- ------------------------------------------------------- ---1         ONLINE  /u01/app/oracle/oradata/redo01.rdo                      NO--8.清空日志文件组(只有非active 和非current状态的组才能被清空)SQL> SELECT * FROM v$log;GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1         13   52428800          1 YES ACTIVE                 2759720 19-JUL-102          1         14   52428800          2 NO  CURRENT                2761383 19-JUL-103          1         12  104857600          2 YES INACTIVE               2759718 19-JUL-10SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;ALTER DATABASE CLEAR LOGFILE GROUP 1*ERROR at line 1:     --active 状态不能被清空ORA-01624: log 1 needed for crash recovery of instance orcl (thread 1)ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/redo1.rdo'SQL>  ALTER DATABASE CLEAR LOGFILE GROUP 2;ALTER DATABASE CLEAR LOGFILE GROUP 2*ERROR at line 1:    --current 状态不能被清空ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/orcl/redo2.log'ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/orcl/redo02.log'SQL>  ALTER DATABASE CLEAR LOGFILE GROUP 3;Database altered.SQL> SELECT * FROM v$log;   --group 3被清空后状态变为unusedGROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1         13   52428800          1 YES INACTIVE               2759720 19-JUL-102          1         14   52428800          2 NO  CURRENT                2761383 19-JUL-103          1          0  104857600          2 YES UNUSED                 2759718 19-JUL-10--9.日志异常处理
--启动时提示日志不一致
SQL> startup
ORACLE instance started.Total System Global Area  251658240 bytes
Fixed Size                  1218796 bytes
Variable Size              83887892 bytes
Database Buffers          163577856 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-00341:log 1 of thread 1,wrong log # in header
ORA-00312:online log 1 thread 1:'/u01/app/oracle/oradata/orcl/redo1a.rdo'   
ORA-00312:online log 1 thread 1:'/u01/app/oracle/oradata/orcl/redo1b.rdo'SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
Database altered.SQL> ALTER DATABASE OPEN;
Database opened.--日志文件丢失(非current状态日志组)
SQL> startup
ORACLE instance started.Total System Global Area  251658240 bytes
Fixed Size                  1218796 bytes
Variable Size              88082196 bytes
Database Buffers          159383552 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo1a.rdo'
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo1b.rdo'SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
Database altered.SQL> ALTER DATABASE OPEN;
Database altered.--日志文件丢失(current状态日志组)
SQL> startup
ORACLE instance started.Total System Global Area  251658240 bytes
Fixed Size                  1218796 bytes
Variable Size              83887892 bytes
Database Buffers          163577856 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3a.rdo'
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3b.rdo'--查看告警日志
SQL> ho tail -n 30 /u01/app/oracle/admin/orcl/bdump/alert_orcl.log
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3a.rdo'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Tue Jul 20 10:45:58 2010
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_lgwr_4112.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3b.rdo'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3a.rdo'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Tue Jul 20 10:45:58 2010
ARC0: STARTING ARCH PROCESSES
Tue Jul 20 10:45:58 2010
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
Tue Jul 20 10:45:58 2010
ARC2: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
ARC0: Becoming the heartbeat ARCH
ARC2 started with pid=18, OS id=4137
Tue Jul 20 10:45:58 2010
ORA-313 signalled during: ALTER DATABASE OPEN...--查看物理日志文件是否存在
SQL> ho ls /u01/app/oracle/oradata/orcl/redo3a.rdo
ls: /u01/app/oracle/oradata/orcl/redo3a.rdo: No such file or directorySQL> ho ls /u01/app/oracle/oradata/orcl/redo3b.rdo
ls: /u01/app/oracle/oradata/orcl/redo3b.rdo: No such file or directory--尝试使用清空日志组命令
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
ALTER DATABASE CLEAR LOGFILE GROUP 3
*
ERROR at line 1:   --系统处于非归档模式,且group 3状态为CURRENT
ORA-00350: log 3 of instance orcl (thread 1) needs to be archived
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3a.rdo'
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3b.rdo'--尝试使用不归档清空日志
SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3
*
ERROR at line 1:   
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3b.rdo'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo3a.rdo'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3--使用带控制文件的介质恢复
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;
ORA-00279: change 2835232 generated at 07/20/2010 10:40:23 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2010_07_20/o1_mf_1_39_%u_.arc
ORA-00280: change 2835232 for thread 1 is in sequence #39Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2010_07_20/o1_mf_1_39_%u_.arc'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3--使用resetlogs选项打开数据库
SQL> ALTER DATABASE OPEN RESETLOGS;Database altered.       SQL> SELECT * FROM v$log;   --系统重建group 3GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------1          1          2   31457280          2 NO  CURRENT                2835234 20-JUL-102          1          1   31457280          2 YES INACTIVE               2835233 20-JUL-103          1          0   31457280          2 YES UNUSED                       0           SQL> SELECT * FROM v$logfile;   --为group 3增加了两个成员redo3a.rdo ,redo3b.rdo   GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---2         ONLINE  /u01/app/oracle/oradata/orcl/redo2a.rdo                 NO2         ONLINE  /u01/app/oracle/oradata/orcl/redo2b.rdo                 NO1         ONLINE  /u01/app/oracle/oradata/orcl/redo1a.rdo                 NO3         ONLINE  /u01/app/oracle/oradata/orcl/redo3a.rdo                 NO3         ONLINE  /u01/app/oracle/oradata/orcl/redo3b.rdo                 NO1         ONLINE  /u01/app/oracle/oradata/orcl/redo1b.rdo                 NO       对于CURRENT组的也可以使用隐藏参数来解决
步骤:alter system set "_allow_resetlogs_corruption" = true scope = spfile;            recover database using bakcup controlfile;            alter database open resetlogs;            shutdown immediate;            startup mount;            alter database open resetlogs;            alter system reset "_allow_resetlogs_corruption" scope = spfile sid = '*'对于归档模式下的日志文件丢失,同样可以按上述步骤处理

  

转载于:https://www.cnblogs.com/zhuntidaoren/p/8616271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bootstrap中实现图片圆角效果

Bootstrap 对图片的支持。Bootstrap 提供了三个可对图片应用简单样式的 class&#xff1a; .img-rounded&#xff1a;添加 border-radius:6px 来获得图片圆角。.img-circle&#xff1a;添加 border-radius:500px 来让整个图片变成圆形。.img-thumbnail&#xff1a;添加一些内边…

java 唯一索引冲突_JPA merge联合唯一索引无效问题解决方案

问题JPA的merge()操作 是合并的意思&#xff0c;就是当保存的实体时&#xff0c;根据主键id划分&#xff0c;如果已存在&#xff0c;那么就是更新操作&#xff0c;如果不存在&#xff0c;就是新增操作但是这个仅针对 主键id 划分&#xff0c;对联合唯一索引 无效&#xff0c;两…

Spring MVC测试框架入门–第1部分

最新推出的主要Spring框架是Spring MVC测试框架&#xff0c;Spring Guys声称它是“一流的JUnit支持&#xff0c;可通过流畅的API测试客户端和服务器端Spring MVC代码” 1 。 在这个博客以及下一个博客中&#xff0c;我将看一看Spring的MVC测试框架&#xff0c;并将其应用于我现…

metaclass

用metaclass来指定类C的元类是MyTypeclass MyType:def __init__(cls, *args, **kwargs):print(here!)#由于metaclassMyType&#xff0c;所以执行到这一步的时候&#xff0c;会调用MyType的构造函数 class C(metaclassMyType):def __init__(self):pass对象后面跟()&#xff0c;是…

Bootstrap中的条纹进度条使用案例

创建一个条纹的进度条的步骤如下&#xff1a;1.添加一个带有 class .progress 和 .progress-striped 的 <div>2.接着在上面的 <div> 内&#xff0c;添加一个带有 class .progress-bar 和 class progress-bar-* 的空的 <div>。其中&#xff0c;* 可以是succes…

LM拟合算法

一、 Levenberg-Marquardt算法 &#xff08;1&#xff09;ya*e.^(-b*x)形式拟合 clear all % 计算函数f的雅克比矩阵&#xff0c;是解析式 syms a b y x real; fa*exp(-b*x); Jsymjacobian(f,[a b]); % 拟合用数据。参见《数学试验》&#xff0c;p190&#xff0c;例2 % data_1…

java的前生今世_HBaseGC的前生今世-身世篇

网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术&#xff0c;提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PAAS服务&#xff0c;在线教育、远程医疗、娱乐秀网易视频云是网易倾力打造的一款基于云计算的分布式…

CapeDwarf – Java EE上的Google App Engine

我有很多爱好。 从早期的Java EE规范一路走来&#xff0c;并通过Java EE 7进行了“云”之旅&#xff0c;我很好奇看到新宣布的CapeDwarf项目有哪些库存&#xff0c;可以在内部引入Google的平台即服务&#xff0c;提供“ Google App Engine ” 。 到目前为止的故事 我确实使用了…

windows 服务中托管asp.net core

在windows 服务中托管asp.net core SDK 2.1.300 官方示例 1、添加运行标识符xml <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> <RuntimeIdentifier>win7-x64</RuntimeIdentifier> </PropertyGroup> 2、添加包引用 d…

Bootstrap插件之-按钮插件

按钮 button.js 按钮的功能很丰富。通过控制按钮的状态或创建一组按钮并形成一些新的组件&#xff0c;例如工具条。 跨浏览器兼容性 在页面多次加载之间&#xff0c;Firefox 仍然保持表单控件的状态&#xff08;禁用状态和选择状态&#xff09;。一个解决办法是设置autocomplet…

第二周读书笔记——《构建之法》

【对一些实例的看法】 “我写了二叉树的遍历算法实现&#xff0c;在这里&#xff0c;二叉树是数据结构&#xff0c;遍历的实现细节是算法。C程序就是结果。但是这个程序有什么实际用处呢&#xff1f;在Java和其他一些语言中&#xff0c;似乎没有指针&#xff0c;那我可以不必了…

java springmvc 数据库事务_事务的简单回顾_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

SpringMVCSpring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色&#xff0c;这种分离让它们更容易进行定制。SpringSpring是一个开源框架&#xff0c;Spring是于2003 年兴起的…

异步重试模式

当您有一段经常失败且必须重试的代码时&#xff0c;此Java 7/8库提供了丰富且不引人注目的API&#xff0c;并提供了针对此问题的快速且可扩展的解决方案&#xff1a; ScheduledExecutorService scheduler Executors.newSingleThreadScheduledExecutor(); RetryExecutor execu…

前端 ---jQuery的补充

15-jQuery补充 jquery内容补充 jquery除了咱们上面讲解的常用知识点之外&#xff0c;还有jquery 插件、jqueryUI知识点 jqueryUI 官网&#xff1a; https://jqueryui.com/ jqueryUI 中文网&#xff1a; http://www.jqueryui.org.cn/ jquery插件内容包含 官网demo&#xff1a; h…

[软件工程]自我介绍----一个小菜鸡的自我介绍(C++版 手动偷笑~)

#include “iostream” using namespace std; class Lee : protected MyMother,protected MyFather { private:string ChineseName("李怡龙");string EnglishName("Lee");int age 20;string university("青海大学计算机系");string level("…

用Java编写Hadoop MapReduce任务

尽管Hadoop框架本身是使用Java创建的&#xff0c;但MapReduce作业可以用许多不同的语言编写。 在本文中&#xff0c;我将展示如何像其他Java项目一样&#xff0c;基于Maven项目在Java中创建MapReduce作业。 准备示例输入 让我们从一个虚构的商业案例开始。 在这种情况下&#…

java 大二学期总结报告_大二学生自我总结「」

大二学生导师工作总结转眼间&#xff0c;我们的大二学年就这样结束了&#xff0c;在迎接新的一学期前我们来写一份自我总结吧。下面是小编搜集整理的大二学生自我总结&#xff0c;欢迎阅读。更多资讯尽在自我总结栏目!大二学生自我总结回顾大学二年,通过良师的教导和自身的刻苦…

windows下揪出java程序占用cpu很高的线程

背景 天天搞java&#xff0c;这些监控也都知道&#xff0c;用过&#xff0c;但也没往细里追究。因为也没碰见这种问题&#xff0c;这次还是静下来走一遍流程吧。与网上基本一致&#xff0c;不过我区分了下linux和windows的不一样。我感觉基本是程序写成死循环了或者大对象分配多…

jquery -input事件

input输入框的change事件&#xff0c;要在input失去焦点的时候才会触发 $(input[namemyInput]).change(function() { ... }); 在输入框内容变化的时候不会触发change&#xff0c;当鼠标在其他地方点一下才会触发用下面的方法会生效&#xff0c;input [html] view plain copy$(&…

Bootstrap中的下拉列表

下拉列表&#xff08;select&#xff09;注意&#xff0c;很多原生选择菜单单 - 即在 Safari 和 Chrome 中 - 的圆角是无法通过修改 border-radius 属性来改变的。复制<select class"form-control"><option>1</option><option>2</option&…