优于别人,并不高贵,真正的高贵应该是优于过去的自己。-------海明威

Oracle日志文件相当于数据库的日记,记录着每一个对数据库的更改,当发生数据库记忆丢失的情况时(如数据文件意外删除,数据表意外删除,数据文件块损坏等),oracle只要规规矩矩地按照日志文件记载一步一步把曾经执行过的操作再重做一遍,数据库还是可以回到应用的状态。

Oracle日志文件分为redo日志文件和归档日志文件,归档日志文件可以看成是redo日志文件的备份累积,在数据库开启归档模式下才会产生。redo日志文件中,将按照scn先后顺序,以重做条目的形式记录数据库的操作。

一、redo日志文件

1.1,查看redo日志文件

SQL> select group#,sequence#,status,first_change#,next_change# from v$log

GROUP#  SEQUENCE#  STATUS    FIRST_CHANGE#  NEXT_CHANGE#

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

1                   52           INACTIVE           2074299              2094768

2                   53           INACTIVE           2094768              2099479

3                   54           CURRENT           2099479      281474976710655

SQL> select group#,status,type,member from v$logfile;

GROUP# STATUS  TYPE    MEMBER

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

1         ONLINE  /oracle/app/data/ORCL/redo01.log

3         ONLINE  /oracle/app/data/ORCL/redo03.log

2         ONLINE  /oracle/app/data/ORCL/redo02.log

1.2,增加减少日志成员或者组

增加日志组:

SQL>alter database add logfile group 4 '/oracle/app/data/ORCL/redo04.log' size 50M;

增加日志组成员:

SQL>alter database add logfile member '/oracle/app/oradata/redo04_b.log' size 50M;

删除日志组:

SQL>alter database drop logfile group 4;

删除日志组成员:

SQL>alter database drop logfile member '/oracle/app/oradata/redo04_b.log' size 50M;

注意:删除日志组和日志文件成员时,状态为current及active的日志文件不要操作,否则会导致数据库不一致,数据库报错而实例崩溃,数据库无法打开。

二、归档日志文件

Oracle数据库有两种模式,一种是非归档模式,另一种是非归档模式。归档模式下,数据库将会把redo记录写入到归档文件中,从而把数据库所有操作记录记录下来(redo日志文件是循环使用的,历史的日志记录会被覆盖),而非归档模式就不会拥有归档文件。

2.1,查看是否开启归档

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     53

Next log sequence to archive   55

Current log sequence           55

Database log mode记录了数据库是否开启归档模式。Automatic archival表示自动归档为Enabled;Archive destination代表归档文件存放位置;Oldest online log sequence代表归档文件最老序列号;

查看v$database视图:

SQL> select log_mode from v$database;

LOG_MODE

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

ARCHIVELOG

查看v$instance视图:

SQL> select archiver from v$instance;

ARCHIVE

-------

STARTED

2.2,查看其它视图

查看归档文件信息:

SQL>select * from v$archived_log;

查看归档文件目标位置信息:

SQL>select * from v$archive_dest;

查看归档进程信息:

SQL>select * from v$archive_processes;

查看已备份的归档文件信息

SQL>select * fro v$backup_redolog;

2.3,归档操作

归档模式切换:

非归档模式转换归档模式:mount状态下,执行alter database archivelog,再打开数据库即可;归档模式转非归档:mount状态下,执行alter database noarchivelog,再打开数据库即可。

执行手动归档:

(1)对所有没有归档的重做日志进行归档:

SQL>ALTER SYSTEM ARCHIVE LOG ALL;

(2)当前的重做日志文件进行归档:

SQL>ALTER SYSTEM ARCHIVE CURRENT;

(3)指定日志序列号的重做日志文件进行归档

SQL>ALTER SYSTEM ARCHIVE LOG SEQUCNE 56;

(4)指定日志组编号的重做日志文件进行归档

SQL>ALTER SYSTEM ARCHIVE LOG GROUP 2;

(5)指定联机的重做日志文件进行归档

SQL>ALTER SYSTEM ARCHIVE LOG LOGFILE 'D:\oracle\oradata\work\REDO01.LOG ';

(6)将下一个没有归档的重做日志文件组进行归档:

SQL>ALTER SYSTEM ARCHIVE LOG NEXT

三、故障解决

3.1,日志不一致

对于unused和inactive的日志文件出现不一致情况,可以执行以下命令进行清空(active和current日志组不能进行清除):

SQL>alter database clear logfile group 4;

对于active状态的日志文件,在数据库启动过程中报不一致情况,可以执行:

SQL>alter database clear unarchived logfile group 4;

3.2,数据库因日志文件错误无法打开

数据库打开时,ora-00312和ora-00313错误,报日志文件丢失,不存在。如果数据库是正常关闭的,执行以下命令:

SQL>alter database clear logfile group n;

如果数据库非正常关闭,执行以下命令:

SQL>alter database clear logfile group n;

或者

SQL>alter database unarchived logfilegroup n;

执行完成后,日志文件报错,执行恢复:

SQL>recover database using backup controlfile;

再执行:

SQL>alter database open resetlog(归档模式下使用);

如果数据库能够打开,那么数据库可以正常使用。

如果是非归档模式下,就需要使用非常规手段打开数据库了。

后续将会继续学习日志文件dump内容研究和故障问题深入解决。

喜欢的朋友可以扫描以下二维码进行关注,公众号将每天更新文章:

Oracle日志文件相关推荐

  1. 查询oracle的联机日志文件,查询Oracle日志文件的方法(摘自http://database.51cto.com/art/201010/231519.htm)...

    Oracle日志文件相信经常使用Oracle数据库的朋友都比较熟悉了,下面将为您介绍的是查询Oracle日志文件的几种方法,供您参考学习. 1.查询系统使用的是哪一组日志文件: select * fr ...

  2. Oracle 日志文件

    本篇博文呢主要是介绍 Oracle 日志文件的管理, 对 Oracle 日志文件呢,有两个比较关键的名词, 即日志文件组 LogFileGroup 和日志文件 LogFile, 下面介绍的就是如何添加 ...

  3. oracle重命名日志成员出错,Oracle日志文件

    一.一些oracle日志的常用命令 oracle的日志文件是记录数据库变化的一个凭证,就是oracle对于一切数据库的操作的记录方便以后查找分析错误.有可以恢复数据等作用.oracle的文件可以分为数 ...

  4. oracle日志文件打开,oracle日志文件和控制文件损坏的恢复

    oracle日志文件和控制文件损坏的恢复 恢复步骤: 1.加入_allow_resetlogs_corruption=true,_corrupted_rollback_segments=true,_o ...

  5. oracle的日志在哪找,oracle日志文件路径怎么找

    oracle日志文件路径怎么找 1.默认情况下,oracle的日志文件记录在$ORACLE/rdbms/log目录下[oracle@oracle log]$ pwd /home/oracle/orac ...

  6. Oracle日志文件中状态为INVALID(原因分析)

    Oracle中向日志组中添加日志文件,查询结果显示状态为invalid: alter database add logfile member '/u01/app/oracle/oradata/orcl ...

  7. 谈谈Oracle日志文件的INVALID状态(上)

    在Oracle数据库中,三大文件(Data File.Control File和Online Redo Log)扮演着极其重要的地位和作用.其中,Redo Log和Oracle Redo Log机制更 ...

  8. oracle 日志大于4g,Oracle日志文件达到4G

    解决方案一:停止监听器 1)LSNRCTL进入交互模式   cmd 输入 LSNRCTL 2)执行set current_listener LISTENER 3)set log_status off ...

  9. oracle使用sql关闭trace日志,Linux清理Oracle日志巧用close_trace命令释放误删trace文件...

    可能很多朋友都遇到过这样的情况,在UNIX/Linux上定期清理Oracle日志文件夹时可能删除到仍被后台进程open着的trace文件,即某些后台进程一直持有着这些"被已经误删了的&quo ...

最新文章

  1. 第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉
  2. java中object转int
  3. PJSIP学习笔记——PJSUA层发起呼叫的主要流程
  4. mysql查询表变量_MySQL 之SQL语言、表库操作、查询及变量精讲
  5. 一文总结More Effective c++
  6. Kotlin 或将取代 Java —— 《Java 编程思想》作者 Bruce Eckel
  7. EOS主网上线,如何在Imtoken里导入EOS钱包?
  8. 磁碟机病毒(Dummycom)专杀工具
  9. S3C2440裸机------GPIO
  10. (转)Openbravo ERP介绍(二)
  11. 对Jekyll的初步了解
  12. 七天百度飞桨强化学习心得
  13. java 判断三角形计算面积
  14. BZOJ 3036 绿豆蛙的归宿 期望DP
  15. ef oracle 双引号,Oracle 数据库中字符串和日期必须使用双引号标识。
  16. 2022-2028全球水下清洁机器人行业调研及趋势分析报告
  17. 显示器色彩精度测试软件,色彩精确度、亮度均匀度及伽玛线测试
  18. [机缘参悟-77]:深度思考-《天道》中强势文化、弱势文化与人的行为模式的关系
  19. 盲源分离技术 matlab,基于ICA盲源分离的研究及matlab实现(毕业学术论文设计).doc...
  20. 谨防上当:揭露那些披着大数据外衣的假大数据课程

热门文章

  1. 客户能从CRM中得到什么好处?
  2. ChatGPT通过谷歌L3入职测试,拿到18万美元offer?程序员们该何去何从?
  3. 被判3年罚250万 珊瑚虫QQ作者提起上诉
  4. 非常好的新版网盘系统,是一款PHP网盘与外链分享程序,支持文件预览
  5. python使用多线程进行爬豆瓣电影top250海报图片,附源码加运行结果
  6. 2022年[最新]泰晤士高等教育世界大学声誉排名(完整版)
  7. 利用XML技术获取域名的世界排名数字
  8. mw310r无线路由器怎么设置虚拟服务器,如何设置水星MW310R路由器静态IP地址上网...
  9. 没有人能随随便便成功,十年磨一剑
  10. keil c语言字符串赋值,keil c指针变量赋值 请指点下迷津