oracle 日志丢失,Oracle联机日志文件丢失解决方法一例

由于丢失的当前的联机日志文件,所以可能会丢失部分数据,破坏数据库的完整性,而且普通的重建日志文件的方式是不可行的,这个时候我们需要借助隐含参数_ALLOW_READ_ONLY_CORRUPTION或者_ALLOW_RESETLOGS_CORRUPTION打开数据库。打开完数据库后立即用EXP/EXPDP导出数据,然后重建数据库。如果有备份,我们可以考虑借助备份恢复,但是由于数据库处于非归档模式,即使是备份也是数据库某一个时间点的快照,所以会丢失从备份时间点到现在的数据。当然用隐含参数打开数据库,会破坏数据库的完整性。

SQL> SELECT NAME,OPEN_MODE,LOG_MODE FROM V$DATABASE;

NAME      OPEN_MODE  LOG_MODE

--------- ---------- ------------

TOMSYAN   READ WRITE NOARCHIVELOG

SQL> SELECT GROUP#,SEQUENCE#,STATUS FROM V$LOG;

GROUP#  SEQUENCE# STATUS

---------- ---------- ----------------

1        106 INACTIVE

2        104 INACTIVE

3        107 CURRENT

SQL> SELECT MEMBER FROM V$LOGFILE WHERE GROUP#=3;

MEMBER

--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO03.LOG

SQL> SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> HOST DEL C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO03.LOG

SQL> STARTUP

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             239078276 bytes

Database Buffers          364904448 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员

ORA-00312: 联机日志 3 线程 1:

'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO03.LOG'

SQL> SELECT GROUP#,SEQUENCE#,STATUS FROM V$LOG;

GROUP#  SEQUENCE# STATUS

---------- ---------- ----------------

1        106 INACTIVE

3        107 CURRENT

2        104 INACTIVE

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;

ALTER DATABASE CLEAR LOGFILE GROUP 3

*

第 1 行出现错误:

ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员

ORA-00312: 联机日志 3 线程 1:

'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO03.LOG'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

即使日志文件存在,如果日志文件损坏,重建当前的日志文件也不可行。

利用隐含参数_ALLOW_READ_ONLY_CORRUPTION打开数据库

SQL> ALTER SYSTEM SET "_ALLOW_READ_ONLY_CORRUPTION"=TRUE SCOPE=SPFILE;

系统已更改。

SQL> SHUTDOWN IMMEDIATE;

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> STARTUP MOUNT

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             239078276 bytes

Database Buffers          364904448 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

SQL> ALTER DATABASE OPEN READ ONLY;

数据库已更改。

SQL> SELECT NAME,OPEN_MODE,LOG_MODE FROM V$DATABASE;

NAME      OPEN_MODE  LOG_MODE

--------- ---------- ------------

TOMSYAN   READ ONLY  NOARCHIVELOG

这种以只读方法打开的数据库,并不会重建当前的日志文件,优点不会对当前的数据文件造成破坏。

赶紧导出数据库吧。

利用隐含参数_ALLOW_RESETLOGS_CORRUPTION打开数据库

SQL> ALTER SYSTEM RESET "_ALLOW_READ_ONLY_CORRUPTION" SCOPE=SPFILE SID='*';

系统已更改。

SQL> ALTER SYSTEM SET "_ALLOW_RESETLOGS_CORRUPTION"=TRUE SCOPE=SPFILE;

系统已更改。

SQL> SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> STARTUP MOUNT

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             239078276 bytes

Database Buffers          364904448 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

下面需要做一次 media recover 不要OPEN 或者直接OPEN RESETLOGS方式打开数据库。

SQL> RECOVER DATABASE UNTIL CANCEL;

完成介质恢复。

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

如果 OPEN 方式打开数据库 会有下面的错误

SQL> ALTER DATABASE OPEN ;

ALTER DATABASE OPEN

*

第 1 行出现错误:

ORA-03113: 通信通道的文件结束

如果 OPEN RESETLOGS 方式打开数据库 会有下面的错误

SQL> ALTER DATABASE OPEN RESETLOGS;

ALTER DATABASE OPEN RESETLOGS

*

第 1 行出现错误:

ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效。

通过这种方法打开数据库,Oracle会重建日志文件。

通过隐含参数打开数据库,Oracle会跳过数据库的一致性检查,对数据库造成一定的负面影响。这个时候

我们应该立即导出数据,重建个空数据库,然后再导入,以防数据库以后遇到麻烦。

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

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

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

相关文章

junit:junit_简而言之,JUnit:测试隔离

junit:junit作为顾问,我仍然经常遇到程序员,他们对JUnit及其正确用法的理解最多。 这使我有了编写多部分教程的想法,以从我的角度解释要点。 尽管存在一些有关使用该工具进行测试的好书和文章,但是也许可以通过本动手实践系列中的…

python基本模块中的对象_Python 学习笔记 -- OS模块的常用对象方法

1 #这里列举在os模块中关于文件/目录常用的函数使用方法23 #这里需要注意下,在使用这些方法前记得导入os模块4 import os #导入os模块5 """6 os对象方法:7 os.getcwd() #返回当前工作目录8 os.chdir(path) #改变工作目录9 os.listdir(pat…

OCA第2部分中的Java难题

欢迎使用OCA的Java Puzzlers的第二部分。 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符。 在下面的类中,您可以在十进制文字中看到分隔符下划线。 还请注意,该类现在可以正常编译。 八进制是…

msflexgrid允许大选择_选择复式楼、跃层和别墅的装修业主如何做好家里的楼梯...

点击上面蓝色字体关注!装修图例 | 别墅装修 | 装潢装饰 | 样板楼梯 | 装修设计很多复式或者别墅的房子,楼梯是不可缺少的建筑,大部分楼梯是连接客厅以及卧室的,很多朋友都选择在楼梯上面铺地板,木地板的改装空间大&…

php程序xml有必要学习吗,对初学者非常有用的PHP技巧

对初学者非常有用的PHP技巧echo "I is : $i ;}echo print_footer();那么,为什么你应该做输出缓冲呢:你可以在将输出发送给浏览器之前更改它,如果你需要的话。例如做一些str_replaces,或者preg_replaces,又或者是在…

OCA第1部分中的Java难题

我在业余时间正在阅读Mala Gupta的Oracle认证Java SE程序员助理书,我对所学到的一些新知识感到惊讶。 有时候他们真的没有任何意义,有时候他们虽然有道理,但确实令人惊讶。 因此,在本系列文章中,我想将它们共享为“ Ja…

oracle创建数据库用户并授权,oracle创建数据库、表空间、用户并授权

1、创建数据库简单的方式是使用Database Configuration Assistant数据库配置工具根据向导创建2、创建表空间在实际使用中需要创建自定义的表空间和临时表空间2.1、创建表空间create tablespace tabspace_nameloggingdatafile E:\app\oratable_space\ tabspace_name_temp.dbfsiz…

mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...

Mysql查询用户留存/留存率语法计算某日的客户在第n日再次出现的概率--用户n日留存率。计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。计算某日新增的用户在某个时间段内再次出现的概率--新用户n日…

ajax 示例_通过示例了解挥发

ajax 示例我们已经花了几个月的时间来稳定Plumbr中的锁定检测功能 。 在此期间,我们遇到了许多棘手的并发问题。 许多问题是独特的,但是一种特殊类型的问题一直反复出现。 您可能已经猜到了–滥用volatile关键字。 我们已经发现并解决了许多问题&#x…

oracle long转为string,实现全局拦截前端传入的Long类型id转String

1遇到的问题在开发过程中存在这样一种问题,我们使用的id主键主要有long类型和varchar类型当主键id为long类型并且长度超过16位,当返回给前端时,前端会出现js解析的参数如果是Long类型的并且长度过大就会出现精度丢失。这就会造成后台返回的值…

springboot 多线程_redis官方推荐:SpringBoot用这个,一键多线程

Lettuce是一个可伸缩的线程安全的Redis客户端,提供了同步,异步和响应式使用方式。 如果多线程避免阻塞和事务操作(如BLPOP和MULTI / EXEC),则多个线程可共享一个连接。 Lettuce使用通信使用netty。 支持先进的Redis功能,如Sentine…

oracle查询最高一条记录,oracle 查询已有记录,上一条记录,下一条记录

oracle可以使用 lead、lag 函数来查询已有记录的下一条、上一条记录。表结构如下:如要查询Staffno是6-1102的前一条记录select * from staff where staff_no(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c wh…

使用Maven进行增量构建

这是2020年,如果您要启动任何新的基于Java的项目,则应优先选择gradle,但由于某些原因,如果您仍然对Maven感兴趣,那么您可能会发现这篇文章有用。 Maven Java / scala编译器插件对增量编译提供了不错的支持&#xff0c…

夏末浅笑_2014年夏末大Java新闻

夏末浅笑正如即将到来的JavaOne那样 ,最近在Java社区中已经有很多重大新闻。 这篇文章简要地引用了其中的三个项目(Java SE 8更新,Java SE 9和Java EE 8),并对我发现是我在类路径/类加载器问题上见过的更清晰的文章之一…

php删除菜单栏,如何删除WordPress站点健康状态面板和菜单项

下面由WordPress教程栏目给大家介绍删除WordPress站点健康状态面板和菜单项的方法,希望对需要的朋友有所帮助!删除 WordPress 站点健康状态面板和菜单项WordPress站点健康功能始于 5.2 版,如不想显示这玩意,可以使用本文的方法删除…

colspan会影响内部单元格宽度失效_电感失效分析

电感失效分析01电感的作用我们通常所说的电感指的是电感器件,它是用绝缘导线(例如漆包线,沙包线等)绕制而成的电磁感应元件。在电路中,当电流流过导体时,会产生电磁场,电磁场的大小除以电流的大小就是电感。电感是衡量线圈产生电磁…

linux清空redis命令,使用Linux管道批量删除Redis的key

------------------------------------------------------Redis并没有提供批量删除记录的方法,这有时候很不方便,特别是重新初始化数据的时候。一般有两种做法:如果业务场景明确,可以通过DBID进行区分,Redis默认的DBID…

ZeptoN正在将程序放入Java

1.简介 Java编程语言或“ Java”于1995年引入。然而,在近25年的时间里,它增加了最初不是核心语言所具有的功能。 此类功能包括枚举,泛型,对基本C样式功能开关语句的许多增强,断言等。 Java是一种编程语言,随…

深入理解python面向对象_转:Python3 面向对象,较为深入的两个理解

一,1. 类的声明和创建对于 Python 函数来说,声明与定义类没什么区别,因为他们是同时进行的,定义(类体)紧跟在声明(含 class 关键字的头行[header line])和可选(但总是推荐使用)的文档字符串后面。同时,所有的方法也必须…

linux循环脚本while循环,Shell脚本while、until循环语句简明教程

一、while循环while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:while 命令docommand1command2...commandNdone命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。以…