- 浏览: 1762444 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (520)
- Oracle (10)
- Oracle错误集 (8)
- Oracle安装升级 (15)
- Oracle日常管理 (51)
- Oracle字符集 (7)
- Oracle备份恢复 (24)
- Oracle优化 (4)
- Oracle编程 (52)
- Oracle导入导出 (19)
- Oracle体系结构 (15)
- Oracle网络 (2)
- Oracle安全 (2)
- Oracle权限 (3)
- Oracle数据字典和性能视图 (2)
- Oracle常用地址 (5)
- SQLPLUS专栏 (7)
- SqlServer (13)
- SqlServer2005编程 (27)
- SqlServer2005管理 (15)
- MySQL (20)
- Dorado应用 (1)
- C# (24)
- Arcgis Server开发 (20)
- ArcSDE技术 (19)
- UML学习 (2)
- 设计模式 (2)
- JAVA EE (4)
- JavaScript (3)
- OFBIZ (27)
- JAVA WEB开发 (22)
- Linux&Unix (34)
- SHELL编程 (14)
- C语言 (11)
- 网络协议 (14)
- FREEMARKER (2)
- GROOVY (2)
- JAVA语言 (3)
- 防火墙 (0)
- PHP (2)
- Apache (2)
- Loader Runner (1)
- Nginx (3)
- 数据库理论 (2)
- maven (1)
最新评论
-
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
pg_guo:
感谢
oracle中查看用户权限 -
xu234234:
5、MapResourceManager控件中添加了两个服务, ...
北京ArcGis Server应用基础培训笔记1
经验总结:
联机日志分为当前联机日志和非当前联机日志,非当前联机日志的损坏是比较简单的,一般通过clear命令就可以解决问题。
损坏非当前联机日志:
1、启动数据库,遇到ORA-00312 or ORA-00313错误,如:
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 3 thread 1: '/opt/oracle/db04/oradata/ORCL/redo03.log'
从这里我们知道日志组1的数据文件损坏或丢失了
从报警文件可以看到更详细的信息
2、查看V$log视图:
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 54 YES INACTIVE
2 55 NO CURRENT
3 53 YES INACTIVE
可以知道,该组是非当前状态,而且已经归档。
3、用CLEAR命令重建该日志文件
SQL>alter database clear logfile group 3;
如果是该日志组还没有归档,则需要用
SQL>alter database clear unarchived logfile group 3;
4、打开数据库,重新备份数据库
SQL>alter database open;
说明:
1)、如果损坏的是非当前的联机日志文件,一般只需要clear就可以重建该日志文件,但是如果该数据库处于归档状态但该日志还没有归档,就需要强行clear。
2)、建议clear,特别是强行clear后作一次数据库的全备份。
3)、此方法适用于归档与非归档数据库。
损坏当前联机日志:
归档模式下当前日志的损坏有两种情况,
一、是数据库是正常关闭,日志文件中没有未决的事务需要实例恢复,当前日志组的损坏就可以直接用alter database clear unarchived logfile group n来重建。
二、是日志组中有活动的事务,数据库需要媒体恢复,日志组需要用来同步,有两种补救办法
A. 最好的办法就是通过不完全恢复,可以保证数据库的一致性,但是这种办法要求在归档方式下,并且有可用的备份
B. 通过强制性恢复,但是可能导致数据库不一致。
下面分别用来说明这两种恢复方法
A、通过备份来恢复
1、打开数据库,会遇到一个类似的错误
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件
2、查看V$log,发现是当前日志
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1 1 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE
3、发现clear不成功
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
4、拷贝有效的数据库的全备份,并不完全恢复数据库
可以采用获取最近的SCN的办法用until scn恢复或用until cnacel恢复
recover database until cancel
先选择auto,尽量恢复可以利用的归档日志,然后重新
recover database until cancel
这次输入cancel,完成不完全恢复,也就是说恢复两次。
如:
SQL> recover database until cancel;
Auto
……
SQL> recover database until cancel;
Cancel;
5、利用alter database open resetlogs打开数据库
说明:
1、这种办法恢复的数据库是一致的不完全恢复,会丢失当前联机日志中的事务数据
2、这种方法适合于归档数据库并且有可用的数据库全备份。
3、恢复成功之后,记得再做一次数据库的全备份。
4、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。
B、如果没有备份,进行强制性恢复
1、打开数据库,会遇到一个类似的错误
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件
2、查看V$log,发现是当前日志
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1 1 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE
3、发现clear不成功
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
4、把数据库down掉
SQL>shutdown immediate
5、在init<sid>.ora中加入如下参数
_allow_resetlogs_corruption=TRUE
注意:如果使用的是spfile 则在shutdown之前使用 alter system set "_allow_resetlogs_corruption"=true scope=spfile;
6、重新启动数据库,利用until cancel恢复
SQL>recover database until cancel;
Cancel
如果出错,不再理会,发出
SQL>alter database open resetlogs;
7、数据库被打开后,马上执行一个full export
8、shutdown数据库,去掉_all_resetlogs_corrupt参数
9、重建库
10、import并完成恢复
11、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;
说明:
1、该恢复方法是没有办法之后的恢复方法,一般情况下建议不要采用,因为该方法可能导致数据库的不一致
2、该方法也丢失数据,但是丢失的数据没有上一种方法的数据多,主要是未写入数据文件的已提交或未提交数据。
3、建议成功后严格执行以上的7到11步,完成数据库的检查与分析
4、全部完成后做一次数据库的全备份
5、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。
发表评论
-
Rman备份中obsolete和expired的区别
2014-01-23 09:07 1034obsolete:与retention policy ... -
怎样才能提高Oracle 10G增量备份速度
2008-10-13 16:37 19231.你可以通过发布以下命令来启用该跟踪机制: SQL> ... -
[Oracle 10g] 闪回恢复区 (Flash Recovery Area)
2008-10-10 10:36 2581何为闪回恢复区 Oracle 10 ... -
Oracle 8i下temp表空间文件缺失时的恢复
2008-09-08 17:20 2089[描述] Errors in file e:\oracle\a ... -
使用RMAN恢复数据库到不同主机
2008-09-04 17:38 5246当未使用catalog方式进行rman备份时,将备份集转移到其 ... -
完全恢复与Resetlogs
2008-08-21 12:16 1611很多朋友经常会对完全恢复与Resetlogs产生误解,以为使用 ... -
using backup controlfile和 until cancel 区别
2008-08-21 11:19 19331. recover database using backu ... -
不完全恢复类别
2008-08-21 11:17 1729用户管理备份的三种不完全恢复:1. 基于变化的不完全恢复 Ch ... -
Nocatalog方式的备份方案
2008-08-14 14:30 1993在没有目录数据库的情况下,Oracle的备份信息是存储在控制文 ... -
Oracle9i rman备份恢复总结
2008-08-11 17:18 4562Recovery Manager(RMAN)是一种用于备份(b ... -
10g:ora_rowscn伪列介绍和使用
2008-08-01 09:13 395910g里为表新增加了一个伪列ora_rowscn下面一段英文是 ... -
Oracle闪回特性
2008-07-31 13:57 2992在利用闪回功能前需要 ... -
按日期区分exp导出的文件名称
2008-07-17 12:08 3468方法一、通过数据库查询获取日期 1、创建expbydt.s ... -
ORACLE自动备份方法
2008-04-28 13:27 2482步骤如下: 1. AP服务器上建立c:\backup文件夹(文 ... -
自己做的一次不完全恢复试验
2007-11-12 17:07 1548C:\>rman target sys/admin@ac ... -
利用incarnation恢复数据库到resetlogs前的某状态
2007-11-12 16:57 2141前提:有resetlogs前的备份文件和归档日至备份文件 Mi ... -
RMAN中常用configure命令
2007-11-08 16:26 26061 显示当前的配置信息 =================== ... -
RMAN 动态性能视图
2007-11-07 16:40 2082以下是与RMAN 备份有关系的一些动态性能视图 ... -
RMAN增量备份
2007-11-07 16:27 3895在说明增量备份之前,首先要理解差异增量与累计增量备份,以及增量 ... -
RMAN备份文件格式
2007-11-07 13:47 3432备份文件可以自定义各种各样的格式,如下: %c 备份片的拷贝数 ...
相关推荐
- **组的概念**:一个日志组由一个或多个相同的联机日志文件组成,至少包含两个组,每组至少有一个成员。 - **成员管理**:每个组内的成员具有相同的日志序列号,成员的大小相同,并分散存放在不同的物理磁盘上以...
当在归档模式下遇到数据文件丢失或损坏的情况时,恢复过程既是一门技术也是一门艺术,需要深刻理解Oracle的恢复机制和熟练掌握相关命令。 #### 归档模式下的恢复基础 归档模式是Oracle提供的一种高级数据保护机制...
每个副本都存放在不同的位置,这样即便某一处的日志文件损坏或丢失,也不会影响到数据库的整体运行。建议将这些副本分布在不同的磁盘上,以进一步降低单点故障的风险。 #### 三、联机重做日志文件的结构与内容 **1...
5. 在 internal 或 sys 下运行创建控制文件的脚本,注意完整列出联机日志或数据文件的路径。 在创建控制文件的脚本中,需要指定数据库的名称、日志文件的路径、数据文件的路径等信息。例如: STARTUP NOMOUNT ...
4. **故障检测与恢复**:设置监控工具,及时发现并处理日志文件丢失或损坏的情况。 了解并熟练掌握控制文件和联机日志的管理,对于保障Oracle数据库的安全运行和高效恢复至关重要。通过合理配置和维护,可以有效...
2. **识别损坏情况**:确定哪些数据文件丢失或损坏,以及受影响的表空间。 3. **关闭数据库**:在进行恢复操作前,安全地关闭数据库以防止进一步的数据损坏。 4. **替换损坏文件**:如果系统01.dbf或undotbs01.dbf...
2. 不完全恢复:若归档日志丢失或损坏,无法应用所有归档日志和联机日志中的redo条目,只能将数据库恢复到故障前的某个时间点,导致该时间点之后的数据丢失。 案例分析 假定在t1时刻对数据库进行了物理备份,数据库...
#### 二、Oracle联机日志文件丢失或损坏的处理办法 **背景**:在Oracle数据库运行过程中,联机日志文件可能出现丢失或损坏的情况,这会影响到数据库的正常工作。 **分类及处理方法**: 1. **非当前联机日志文件...
7. **系统数据文件的问题**: 如果system数据文件损坏或丢失,需要特别处理,因为它们包含了数据库的关键系统表和视图。 8. **非system数据文件的问题**: 对于非system数据文件的丢失或损坏,恢复过程通常与普通数据...
第三,我们讨论了ORA-15214和ORA-00313错误,这两个错误通常与联机日志文件丢失或损坏有关。联机日志是数据库进行事务持久化的重要部分,分为当前和非当前两种状态。对于非当前联机日志的损坏,可以通过`ALTER ...
Oracle 数据库包含了用于存放数据的数据文件(DataFiles)、用于保护数据不丢失的联机重做日志文件(Online Redolog Files)和用于连接 Oracle 实例和数据库所需要的控制文件(Control Files)。 五、内存结构 ...
如果成功,执行`checkpoint`以同步数据文件和控制文件,然后激活联机日志。最后,如果需要,可以执行`alter database open resetlogs`以更改日志序列,特别是在使用resetlogs选项恢复数据库后。 总的来说,Oracle...
7. **恢复数据文件**:如果数据文件丢失或损坏,可以使用备份和归档日志进行恢复。RMAN(恢复管理器)是Oracle提供的工具,用于执行这种恢复操作。 8. **表空间和数据文件的关系**:每个数据文件都属于一个特定的表...
15. **激活联机日志**: 一旦恢复完成,需要确保所有日志文件处于活动状态,以便记录后续的数据库更改。 16. **备份和维护**: 最后,确保定期进行数据库备份,这是防止数据丢失的关键步骤。 这个流程图详细展示了...
Oracle数据库主要包含数据文件、控制文件和联机日志文件三种类型,每种文件的移动方法略有不同。 首先,我们来看如何移动数据文件。Oracle提供了两种方法:ALTER DATABASE和ALTER TABLESPACE。 1. ALTER DATABASE...
- 如果日志文件损坏,需要先执行checkpoint操作,然后激活联机日志。 - 从备份恢复所有数据库文件后,应用所有有效的重做日志,并最终打开数据库。 ##### 4. 数据库重启与验证 - **数据库重启**:完成所有恢复...
Oracle11g提供了一套完整的恢复机制,包括联机日志(Redo Logs)、归档日志以及控制文件等。在数据恢复过程中,通常需要以下步骤: 1. **创建备份**:在任何恢复操作之前,确保有最新的数据库备份至关重要。这可以...