精华内容
下载资源
问答
  • Oracle日志文件

    万次阅读 2018-01-18 16:58:53
    -------海明威Oracle日志文件相当于数据库的日记,记录着每一个对数据库的更改,当发生数据库记忆丢失的情况时(如数据文件意外删除,数据表意外删除,数据文件块损坏等),oracle只要规规矩矩地按照日志文件记载...



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


    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 日志文件

    2010-04-13 15:52:00
    本篇博文呢主要是介绍 Oracle 日志文件的管理, 对 Oracle 日志文件呢,有两个比较关键的名词, 即日志文件组 LogFileGroup 和日志文件 LogFile, 下面介绍的就是如何添加一个日志文件组, 如何从一个日志文件组中...

    本篇博文呢主要是介绍 Oracle 日志文件的管理,

    对 Oracle 日志文件呢,有两个比较关键的名词,

    即日志文件组 LogFileGroup 和日志文件 LogFile,

    下面介绍的就是如何添加一个日志文件组,

    如何从一个日志文件组中添加日志文件,如何从一个日志文件组中删除日志文件,

    又或者是删除一个日志文件组,

    还是先来介绍一下日志文件组吧,日志文件组呢,其实就是一个由多个日志文件组成的分组,

    这个分组中的所有的日志文件呢都是一致的,也就是内容均一样,

    添加日志文件组

    先来查看一下当前的日志文件信息

    image

    然后呢,就来添加一个日志文件组,

    在创建的同时呢,又在这个日志文件组中添加两个日志文件,

    image

    添加成功一个 日志文件组后,便来查看一下以确定 ,

    从下面的截图可以看出,我以成功添加了一个文件日志组,且组号为 4 ,

    同时在里面也添加了两个日志文件成员

    image

    添加日志文件

    下面呢,再来给组号为 1 的日志文件组添加一个日志文件,

    image

    再来查看一下是否添加成功

    image

    删除日志文件组

    下面呢就是要删除上面添加的日志文件组了,

    image

    再来查看一下是否删除成功了,

    image

    需要注意的是,尽管您在数据库里面删除了日志文件,但是这些文件在 OS 中还是存在的,

    您必须手动进行删除,

    删除日志文件

    下面呢就删除上面添加到日志文件组 1 中的位于 disk5(虚拟的磁盘) 磁盘上的日志文件

    image

    在这里您是删除成功了,如果您要删除的日志文件时系统正在使用的日志文件的话,

    那么将提示删除失败,此时呢,您可以使用如下命令进行日志文件的强制切换,

    image

    切换成功后,您便可以删除您原来想要删除的日志文件了,

    需要注意的是,在这里的删除仅仅是从 Oracle 数据库中删除,而文件还是存在于 OS 上的,

    所以还必须手动在操作系统上删除这些垃圾文件。

    展开全文
  • oracle日志文件

    2019-05-21 10:38:32
    转载于:...先备份 然后把文件清空: (1)备份 cp aleter_<$ORACLE_SID>.log /u01/backup_alert (2)清空 echo ‘’ >alert.log 或者 cat /dev/null...

    转载于:http://www.itkeyword.com/doc/8294933343272245x138/oracle-alert

    1.先备份在清空(不是删除)

    先备份 然后把文件清空:
    (1)备份
    cp aleter_<$ORACLE_SID>.log /u01/backup_alert
    (2)清空
    echo ‘’ >alert.log

    或者
    cat /dev/null >alert.log

    可能我们会做这样一个操作,直接对日志文件进行rm -rf ,如果日志文件很大,当你进行rm操作后,在磁盘进行df -h会发现,空间未释放。明明是删除了,但是为什么呢??

    ####如果直接rm 文件时出现磁盘空间未释放

    lsof |grep deleted 会找到该进程,

    /********

    未释放磁盘空间原因:

    在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被
    打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是oracle的告警log文件
    删除的时候文件应该正在被使用

    如何让进程释放呢?
    一种方法是kill掉相应的进程,或者停掉使用这个文件的应用,让os自动回收磁盘空间
    我这个环境有很多进程在使用的这个文件,停掉进程有点麻烦,再有就是风险很大

    当linux打开一个文件的时候,Linux内核会为每一个进程在/proc/ 『/proc/nnnn/fd/目录(nnnn为pid)』建立一个以其pid
    为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文件的fd(fd:file descriptor)。
    kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。
    这是一项高级技术,仅到管理员确定不会对运行中的进程造成影响时使用。应用程序对这种方
    式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题

    所以我还是采用停应用来解决

    restart oracle数据库,发现/home/oracle/admin/dbticb/bdump/alert_dbticb.log对应的空间被释放

    推荐:oracle 11g 监听日志 设置

    11g开始引入ADR,监听日志就从原来的$ORACLE_HOME/network/log/listener.log变为了 $ORACLE_BASE/diag/tnslsnr/hostname/listener/alert/log.xml 当然也存在一份

    listener.log日志文件过大 ,以下两种处理方式
    11g会重新生成listener.log
    su - oracle

    $lsnrctl set log_status off
    $mv listener.log /backup/
    $lsnrctl set log_status on
    监听日志启动后就会自动创建一个全新的listener.log文件,备份好的文件可以删除。

    1、关闭监听日志记录
    lsnrctl set log_status off
    2、备份listener.log
    3、清空日志
    echo /dev/null > listener.log
    4、开启监听日志记录
    lsnrctl set log_status on

    展开全文
  • oracle日志解析、logminer解析oracle日志文件 文章目录oracle日志解析、logminer解析oracle日志文件前言一、logminer简介二、安装logminer(sqlplus窗口下)1.引入库2.读入数据总结 前言 解析oracle日志方法分为两种...

    oracle日志解析、logminer解析oracle日志文件


    前言

    解析oracle日志方法分为两种:
    1.Oracle Logminer
    2.Oracle Golden Gate
    这里推荐使用Oracle Logminer,因为Oracle8i以后的版本都带有LogMiner。

    一、logminer简介

    解析Oracle 在线(online)日志或归档(offline)日志。

    二、安装logminer

    1.查看sql脚本是否存在(oracle8i之后默认存在该sql脚本)

    在此以oracle安装在D:\oracle\oracle为例

    $ORACLE_HOME\RDBMS\ADMIN
    

    D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\
    

    二选一即可

    2.在sqlplus命令行执行脚本

    SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslm.sql;
    SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslmd.sql;
    SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslms.sql;
    

    SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslm.sql;
    SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslmd.sql;
    SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslms.sql;
    

    二选一即可

    3.设置字典文件位置

    UTL_FILE_DIR路径可随意设置;

    alter system set UTL_FILE_DIR='D:\oracle\oracle\oradata\practice\logmnr' scope=spfile;
    

    4.重启oracle

    shutdown immediate;
    startup;
    

    5.生成字典文件

    SQL>execute dbms_logmnr_d.build('dictdic.dic','D:\oracle\oracle\oradata\practice\logmnr');
    

    SQL>execute dbms_logmnr_d.build('dict.ora','D:\oracle\oracle\oradata\practice\logmnr');
    

    二选一即可

    6.为什么生成字典文件

    生成字典文件是为了翻译oracle日志文件信息

    三、logminer命令介绍

    1.添加解析文件dbms_logmnr.add_logfile;

    2.解析文件dbms_logmnr.start_logmnr;

    3.查询动态数据 select * from v$logmnr_contents;

    4.结束解析dbms_logmnr.end_logmnr;(不一定每次都要结束解析,默认情况下当进程结束自动结束解析)

    四、logminer命令使用

    1.添加解析文件
    第一个文件用dbms_logmnr.new
    追加文件用dbms_logmnr.addfile

    SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO01.LOG',Options=>dbms_logmnr.new);
    SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO02.LOG',Options=>dbms_logmnr.addfile);
    SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO03.LOG',Options=>dbms_logmnr.addfile);
    

    2.解析文件
    ①无条件解析
    dictfilename的值为字典文件路径

    SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dictdic.dic');
    

    SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dict.ora');
    

    ②条件解析

    SQL> execute dbms_logmnr.start_logmnr(
    dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dictdic.dic', 
    StartTime =>to_date('2020-11-27 00:00:00','YYYY-MM-DD HH24:MI:SS'),
    EndTime =>to_date('2020-11-27 23:59:59','YYYY-MM-DD HH24:MI:SS'));
    

    3.查看动态数据表

    在解析时(dbms_logmnr.start_logmnr)生成
    v$logmnr_contents,当解析结束v$logmnr_contents消失。
    
    SQL> select * from v$logmnr_contents;
    SQL> select sql_redo,sql_undo ,operation,timestamp  from v$logmnr_contents where operation = 'UPDATE' and seg_name='SCOTTONE' and table_name='SCOTTONE';
    

    注operation和table_name的值需要大写

    字段 注释
    sql_redo 记录sql(sql_redo字段长度为4000,如果超过长度将在下一条数据显示)
    sql_undo 回退事务sql(sql_undo字段长度为4000,如果超过长度将在下一条数据显示)
    operation sql类型(insert、update等)
    timestamp 数据库数据改变时间
    seg_name 修改后的数据段的名称
    table_name 表名

    更多字段请查看: https://blog.csdn.net/weixin_43938004/article/details/110226987

    4.结束分析

    SQL>execute dbms_logmnr.end_logmnr
    

    注意

    1.生成字典文件时,字典文件对应的是oracle当前数据库所有表的对应关系,如果表的字段或类型改变都需要重新生产字典文件

    2.解析归档日志需要开启补充日志
    查看是否开启

    SQL>select supplemental_log_data_pk, supplemental_log_data_ui from v$database;
    

    supplemental_log_data_pk = no和supplemental_log_data_ui = no,则未开启。
    开启命令

    SQL>alter database add supplemental log data (primary key, unique index) columns;
    

    Database altered

    官方文档: https://docs.oracle.com/en/database/oracle/oracle-database/18/sutil/oracle-logminer-utility.html#GUID-3417B738-374C-4EE3-B15C-3A66E01AE2B5

    展开全文
  • Oracle日志文件

    2006-12-29 00:00:00
    1.查询系统使用的是哪一组日志文件:select * from v$log; 2.查询正在使用的组所对应的日志文件:select * from v$logfile; 3.强制日志切换:alter system switch logfile; 4.查询历史日志:select * from v$log_...
  • oracle日志文件学习

    2016-11-06 22:16:35
    oracle日志文件学习 一、重做日志  1、 重做日志分为在线重做日志和归档重做日志。   online Redo log files--在线重做日志,又称联机重做日志,指Oracle以SQL脚本的形式实时记录数据库的数据更新,换句话说,...
  • Oracle 日志文件的使用

    2020-05-22 10:16:57
    Oracle 日志文件的使用 数据在块在数据缓冲区被修改,单不会立即写入到物理文件中,Oracle先将数据块的变动情况写入日志文件中去,再写入表的物理文件。日志文件有两个记录方式逻辑记录和物理记录。 逻辑记录方法 用...
  • 查看oracle日志文件

    2017-06-11 21:51:24
    查看oracle日志文件 1.使用命令 show parameter dump SQL> show parameter dump NAME TYPE VALUE ------------------------------------ ----------- -----------------------
  • Oracle日志文件达到4G 1、停止oracle服务器 2、删除以前的listener.log文件,新建一个listener.log文件。 (注:日志所在位置D:\app\danganadmin\diag\tnslsnr\DA-APP\listener\trace)
  • oracle数据库中分为联机日志文件和归档日志文件两种日志文件类型,下面就让我们一起来了解一下oracle日志文件类型。       oracle日志文件相信大家都已经有一定的了解了,下面主要为您介绍oracle日志文件...
  • Oracle日志文件管理

    2013-01-28 20:18:00
    ORACLE数据库的Oracle日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log记录了重作日志的转换,数据库启动和关闭,数据库结构的改变,回退段的修改,死锁,内部错误等信息. 数据库管理员需要检查这个文件...
  • Oracle日志文件过大Oracle日志文件过大ORACLE数据库的日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log记录了redo log的转换,数据库启动和关闭,数据...
  • Oracle日志文件丢失后恢复操作流程 查看当前日志文件状态: SQL> select group#,members,status from v$log;  GROUP# MEMBERS STATUS ---------- ---------- ---------------- 1 2 CURRENT 2 2 UNUSED ...
  • Oracle日志文件管理与查看  1.查询系统使用的是哪一组日志文件:  select * from v$log;  2.查询正在使用的组所对应的日志文件:  select * from v$logfile;  3.强制日志切换:  alter system switch ...
  • oracle日志文件相关问题汇总。 1:条件一: 正常关闭数据库的情况下(shutdown immediate或者shutdown nomal),redo文件全部丢失。 此种情况下,由于是正常关闭数据库,数据文件,redo文件以及控制文件SCN...
  • oracle日志文件位置

    2016-08-10 09:20:59
    oracle日志文件有几种:警告日志,trace日志,audit日志,redo日志,归档日志 警告日志:也就是alert log,在系统初始化参数文件设置的background_dump_dest对应的就是它的位置。 trace日志:一般放seesion追踪...
  • oracle日志文件丢失(ORA-O1109:数据库没有打开)处理办法  误删oracle11g表空间文件后,数据库未打开  造成上述问题的原因是误把'F:\ORADB.DEF'这个数据文件删掉了,这种删法是不正常的,如果删掉了用户及表空间,...
  • oracle 日志文件位置

    2020-06-09 10:38:42
    alert 为运行日志的目录。 以下为 sql记录。 --先查锁 select * from v$lock where lmode > 0 and type in ('TM','TX'); --查用户名 select * from v$session where username = 'PROD_JCJ' -- 查...
  • oracle的文件可以分为 数据文件、控制文件和重做日志文件(也就是咱们平时说的redo), oracle日志文件时分组存放的, 一个oracle数据库最少使用3个日志文件存放这些信息, 以防写满之后的溢出, 为了防止数据库的灾难...
  • oracle日志文件误删的解决方法

    千次阅读 2012-04-23 14:12:21
    oracle日志文件被删除(主要是那些360安全卫士,QQ电脑管家,金山卫士等之类的软件把日志当作垃圾给清理掉了,当使用他们的时候一定要慎重,或者清理的时候把日志文件这项的复选框去掉)和,导致oracle监听启动不了...
  • oracle日志文件头解析

    2018-09-15 16:12:29
    首先,日志文件的格式如下: redo logfile的结构 block 0: file header block 1: redo header block 2: redo record 1 block 3: redo record 2 ... ... block N: redo record n 使用dbfsize(oracle自带工具)可以...
  • Oracle关于日志文件基本操作1.查询系统使用的是哪一组日志文件:select * from v$log; 2.查询正在使用的组所对应的日志文件:select * from v$logfile; 3.强制日志切换:alter system switch logfile; 4.查询历史...
  • 使用logminer分析oracle日志文件 一,介绍logminer 日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。 logminer 工具即可以用来分析在线,也...
  • Oracle日志文件过大引自:http://space.itpub.net/10640532/viewspace-512116ORACLE数据库的日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log记录了redo log的转换,数据库启动和关闭,数据库结构的改变,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,810
精华内容 4,324
关键字:

oracle日志文件