精华内容
下载资源
问答
  • 一、重做日志文件把对数据文件的修改在写入数据文件之前记录下来。日志文件以一种循环的方式被写入信息。当一个日志组被写满时,回自动向另一个日志组写入。管理员可以手工切换当前日志组。alter system switch log...

    一、

    重做日志文件把对数据文件的修改在写入数据文件之前记录下来。日志文件以一种循环的方式被写入信息。当一个日志组被写满时,回自动向另一个日志组写入。管理员可以手工切换当前日志组。alter system switch logfile可以切换当前的日志组。当日志组发生切换时,oracle向新的重做日志组分配一个日志序列号。当存在大量的事务时必须调整重做日志文件的大小,以避免频繁的日志切换发生。重做日志文件被顺序的写在磁盘上,如果磁盘没有其他活动,I/O将会很快。应该把重做日志文件保存在 单独的磁盘上,以获取良好的性能。尤其不要把经常处于活动状态的SYSTEM,UNDOTBS,SYSAUX的表空间或索引表空间文件保存到同一块磁盘上。因为只有在事务的请求被写到重做日志后,请求才能被完成。最大限度的提高重做日志的吞吐量是oracle性能优化首先考虑的因素。当发生重做日志切换而生成 一个新的检查点时,DBWn就会写脏缓冲器块。这样会影响oracle的性能。可以通过fast_start_mttr_target初始化参数来调整检查点。

    每个数据库都有自己的联机重做日志组,一个联机重做日志组有多个重做日志成员,每个日志成员有单独的操作系统文件。在一个rac配置(这种配置中单个数据库装有多个实例),每个实例有一个联机重做日志线程,每个实例的lgwr进程都写到相同的联机重做日志文件。因此oracle必须跟踪数据库实例修改来自那个实例。

    当多路复用重做日志文件时,应该把一个组的成员保存在不同的磁盘上。以避免单点故障的发生。如果重做日志文件组的所有成员都无法写入数据,oracle将被挂起。Dba可以在创建数据库时创建多个联机重做日志文件的副本。

    对日志的操作如下:

    a.创建新的重做日志组:

    Alter database add logfile

    Group 3 (‘/ora02/oradata/mydb01/redo0301.log’,

    ’/ora03/oradata/mdb01/redo0302.log’) size 10m;

    如果省略group子句,oracle分配一个有效的编号,如下:

    Alter database add logfile

    b.添加新的组成员:

    alter database add logfile member

    ‘/ora04/oradata/mydb01/redo0203.log’to group 2;(向第二组中添加新的成员)

    c.重命名日志成员:

    在重命名日志组成员之前新的目标必须已经存在。Oracle的sql命令只是把控制文件中的内部指针指向新的日志文件。Dba需要用操作系统命令来重命名此日志文件。步骤如下:

    1.关闭数据库

    2.使用操作系统命令重命名或移动日志文件

    3. 启动数据库实例(start mount),重命名控制文件中的日志文        件成员。Alter database rename file‘old_redo_file_name’to‘new_redo_file_name’;

    4.打开数据库alter database open

    5.备份控制文件

    D.删除重做日志组:

    将要被删除的重做日志组不能是活动的日志组。Alter database drop logfile group 3;。当重做日志文件被删除后,相关的操作系统文件也被删除,相关的数据库控制文件也给更新。

    E.使用和删除重做日志组相同的方式,dba可以只删除一个非活动的重做日志组的成员。

    Alter database drop logfile member‘/ora04/oradata/mydb01/redo0203.log’;

    f.创建联机重做日志文件:

    当重做日志组成员遭到破坏时,可以删除并重新添加这个重做日志组或组成员。

    二、

    档案重做日志文件:

    它是联机重做日志文件的一个副本。Lgwr和arcn进程的故障都会引起数据库的挂起。只有当arcn进程把联机重做日志写到归档地后,才可以向此重做日志组成员写入数据。

    设置归档目的地:

    可以在参数初始化文件中的log_archive_dest_n来定义归档目的地。归档目的地可以在本地计算机上,也可在远程的数据库服务器上。定义语法如下:

    LOG_ARCHIVE_DEST_n=“null_string”|

    (service=tnsnames_name |

    LOCATION=‘directory_name’)

    [MANDATORY | OPTIONAL]

    [REOPEN[=integer]]

    例1:

    LOG_ARCHIVE_DEST_1=((LOCATION=’/archive/MYDB01’) MANDATORU REOPEN=60)定义归档日志的位置为/archive/MYDB01,mandatory子句的定义向这个位置写日志的操作必须的成功的。Reopen子句定义在日志写入失败时,下次尝试写入操作的时间间隔。缺省是300秒。

    例2:

    LOG_ARCHIVE_DEST_@=(SERVICE=STDBY01) OPTIONAL REOPEN;语句中的stdby01的连接到远程数据库的oracle net连接串。由于写操作是可选的,所以数据库活动继续,当arcn进程不能写档案日志文件时,进程将立即尝试重新写入(这个动作有reopen子句来定义)。

    Log_archive_min_succeed_dest:定义最少归档日志的副本数量。

    Log_archive_format:定义归档日志文件采用的名称和使用的格式。可以使用预定义变量来构造每个归档日志文件的名称。变量如下:

    %s日志序列号

    %t线程号

    %r复位日志id

    %d数据库id

    定义归档日志名称的变量至少包含%s,%t,%r,当多个数据库实例的归档日志采用相同的归档日志位置时,还必须定义%d。例如:%t_%s_%r.dbf

    展开全文
  • 为什么需要redo log内存中数据修改后,不必立即更新到磁盘---效率由日志完成数据的保护目的---效率其他副产品数据恢复(备份集+归档日志)数据同步(DG,streams,goldengate)日志挖掘什么是Redo log重做日志包含所有...

    为什么需要redo log

    • 内存中数据修改后,不必立即更新到磁盘---效率
    • 由日志完成数据的保护目的---效率
    • 其他副产品数据恢复(备份集+归档日志)数据同步(DG,streams,goldengate)日志挖掘

    什么是Redo log

    重做日志包含所有数据产生的历史改变记录。

    重做日志文件通常用于

    • 恢复
    • 日志挖掘
    • 数据库产生的每个改动写入数据块缓冲之前,先写入redo log buffer --内存写入数据文件之前先写入日志文件 --数据文件
    • 当提交后,redo log buffer被刷入redo log files

    关于v$log视图

    v$log从控制文件中显示日志文件的信息。可参考官网资料[v$log]( https://docs.oracle.com/datab...

    abbd802e6b3bf930f5ac8981528857a5.png

    日志文件的六种状态UNUSED,CURRENT,ACTIVE,CLEARING,CLEARING_CURRENT,INACTIVE代表的意思分别如下所述:

    • UNUSED - Online redo log has never been written to. This is the state of a redo log that was just added, or just after a RESETLOGS , when it is not the current redo log.
    • CURRENT - Current redo log. This implies that the redo log is active. The redo log could be open or closed.
    • ACTIVE - Log is active but is not the current log. It is needed for crash recovery. It may be in use for block recovery. It may or may not be archived.
    • CLEARING - Log is being re-created as an empty log after an ALTER DATABASE CLEAR LOGFILE statement. After the log is cleared, the status changes to UNUSED .
    • CLEARING_CURRENT - Current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.
    • INACTIVE - Log is no longer needed for instance recovery. It may be in use for media recovery. It may or may not be archived.

    LGWR如何重复使用redo log files

    7777f01e380e0c7d45b6a105e56b1197.gif

    上图就是Oracle LGWR进程向redo log files中写入redo记录的过程,可见,Oracle数据库每次只是用一个redo log file来存储redo log buffer中的redo记录。LGWR正在写入的那个redo log file就是current redo log file。

    可用于实例恢复的redo log files就是active redo log files。

    不再用于实例恢复的redo log files就是inactive redo log files。

    如果数据库当前是Archivelog模式,那么直到有一个后台归档进程ARCn已经归档成功,数据库才能重用或者覆盖active online log file。

    如果数据库当前是NoArchivelog模式,当最后一个redo log file写满的时候,LGWR会继续按顺序覆盖下一个inactive redo log file。

    查询使用的日志文件的组数及每组的状态

    SQL> select group#,status from v$log;    GROUP# STATUS---------- ----------------         1 CURRENT         2 INACTIVE         3 INACTIVE

    有代码可知当前所用的日志文件组数为3组,其中第一组是curren状态,第二三组是inactive状态。

    我们也可以使用以下命令手动切换当前LGWR操作的redo log file。

    SQL> alter system switch logfile;系统已更改。SQL> select group#,status from v$log;    GROUP# STATUS---------- ----------------         1 ACTIVE         2 CURRENT         3 INACTIVE

    可见当前LGWR操作的redo log file已经由之前的第一组修改为第二组了,并且第一组的redo log file变成了Active,也就是说可以用于实例恢复。

    过了一会之后再次查询redo log file状态出现的结果如下:

    SQL> select group#,status from v$log;    GROUP# STATUS---------- ----------------         1 INACTIVE         2 CURRENT         3 INACTIVE

    此时会发现后台进程会自动将第一个处于active的redo log file变成inactive。这是为什么呢?原来是后台归档进程ARCn将active redo log file归档成归档日志文件,相应的状态就由active变成了inactive。此时group1就不再用于实例恢复了。这个过程用下图来解释:

    dd0425aa02d02e52c7eca142121f5bb3.png

    Multiplexed Redo Log Files

    cea0e38028600a4ffc66e9598c1023ca.gif

    Oracle数据库允许多路复用重做日志,也就是说,重做日志的两个或多个相同的拷贝可以自动保持在不同的地点。为了最大效益,存储的位置应在分开的磁盘。即使重做日志的所有副本都在同一磁盘上,这种冗余措施也是可以防止I / O错误,文件损坏,等等。当使用复用重做日志时,LGWR会将相同的redo log信息同时写入多个相同的重做日志文件,从而解决重做日志的单点故障问题。

    图中A_LOG1和B_LOG1是第1组的成员,A_LOG2和B_LOG2是第2组的两个成员,等等。一组中的每个成员都必须是相同的大小,并且是状态也是同步的(active or inactive)。

    SCN--system change number

    Oracle中的SCN(system change number)和我们的北京时间的意义是相同的, SCN是Oracle中的时间号

    为什么Oracle不用时间来界定呢?

    我在北京时间8:00的时候执行一条DML语句,然后修改机器上的时间为7:00,再执行一条DML语句。如果用机器上的时间区分的话,那Oracle根本区分不出来这两条DML语句的执行顺序——而这一点对于Oracle是很重要的。所以它 采用自己产生的SCN来区分所有操作的先后顺序。

    关于SCN的具体讲解可以参见: http://blog.chinaunix.net/uid-18974058-id-3068592.html

    日志文件

    日志文件使用操作系统块大小

    • 通常是512bytes
    • 格式依赖于操作系统Oracle版本

    Redo日志组成

    • 数据头
    • redo record

    Redo record

    一个redo record记录包括

    • Redo记录台
    • 一个或多个改变向量

    每个redo record包含每个原子改变的undo和redo

    某些改动不需要undo(临时表,直接加载...)

    redo log总结

    • redo log是Oracle中极其重要的组件,它的目的在于保证数据的安全性
    • redo log的丢失可能导致数据库中数据的丢失
    • 应该讲Oracle至于归档模式下

    日志挖掘-logminer

    参考:

    Oracle官网-Using LogMiner to Analyze Redo Log Files

    cnblogs-LogMiner配置使用手册

    用途

    • 对Oracle在线redo和归档日志进行分析

    目的

    • 修正误操作
    • 审计

    dbms_logmnr

    • 可以基于日志文件分析(一个或者多个)
    • 可以基于时间段分析
    • 可以基于SCN分析
    展开全文
  • 强制日志切换和归档当前的重做日志的命令的区别 alter system switch logfilealter system archive log current的区别 我的理解: ...
    强制日志切换和归档当前的重做日志的命令的区别
    alter system switch logfile和alter system archive log current的区别
    我的理解:
    1、alter system switch logfile 是强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档当前的重做日志,若自动归档没有打开,就不归档当前重做日志。)
    【感悟】 切换日志文件,但未必对其进行归档。主要还看自动归档是否打开!
    2、alter system archive log current 是归档当前的重做日志文件,不管自动归档有没有打都归档。
    【感悟】 既切换日志文件,又对其进行归档!
    3、主要的区别在于: 【重要】
    ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换;
    而ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例执行日志切换。
    为什么执行热备后要执行alter system archive log current 这个语句,看到很多脚本都是这样写的。
    是不是必须的?
    一般的RMAN脚本都是这样写的,因为RMAN是可以备份归档日志的。alter system archive log current 这样后就可以将所有的归档都备份出来了。这样做是为了保证数据的完整和一致。
     
    详细说明:
    ALTER SYSTEM SWITCH LOGFILE ;
    SWITCH LOGFILE Clause
    The SWITCH LOGFILE clause lets you explicitly force Oracle to begin writing to a new redo log file group, regardless of whether the files in the current redo log file group are full. When you force a log switch, Oracle begins to perform a checkpoint but returns control to you immediately rather than when the checkpoint is complete. To use this clause, your instance must have the database open.
    SWITCH LOGFILE 条款明确地指出强制oracle开始写入新的一个重做日志组,不管当前的重做日志文件是否写满了。当你强制切换重做日志时,oracle开始执行检查点并且立即返还管理权给你而不是等到检查点完成才返还你控制权。要是该条款生效,您的实例必须处于打开状态。
    ALTER SYSTEM ARCHIVE LOG CURRENT ;
    CURRENT Clause
    Specify CURRENT to manually archive the current redo log file group of the specified thread(instance), forcing a log switch. If you omit the THREAD parameter, then Oracle archives all redo log file groups from all enabled threads(instances), including logs previous to current logs. You can specify CURRENT only when the database is open.
    指定CURRENT参数来手动归档当前重做日志组并指定线程(实例),强制切换日志。如果你忽略THREAD参数,那么oracle将归档所有可用线程(实例)的所有重做日志组,包括当前重做日志以前的所有日志。你也可以只指定当前打开的数据库。
    ALTER SYSTEM ARCHIVE LOG CURRENT NOSWITCH;
    NOSWITCH
    Specify NOSWITCH if you want to manually archive the current redo log file group without forcing a log switch. This setting is used primarily with standby databases to prevent data divergence when the primary database shuts down. Divergence implies the possibility of data loss in case of primary database failure.
    指定不切换日志
    You can use the NO SWITCH clause only when your instance has the database mounted but not open. If the database is open, then this operation closes the database automatically. You must then manually shut down the database before you can reopen it.
    此文为以前在网上看到的为转载 谢谢。

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

    转载于:http://blog.itpub.net/26764973/viewspace-1173609/

    展开全文
  • DataGuard恢复操作最关键的结构是:联机重做日志(redo log)、归档重做日志(archvie log)备用重做日志(standby redo log 需要另外配置)。 联机重做日...
     
        DataGuard恢复操作最关键的结构是:联机重做日志(redo log)、归档重做日志(archvie log)和备用重做日志(standby redo log 需要另外配置)。

        联机重做日志(redo log):

            主备库都包含redolog,物理备库因为不会以"读写"方式打开,所以不使用联机日志,但是联机重做日志是存在的。仅仅是不使用而已。

        归档重做日志(archive log):

            归档日志是主备库之间保持同步的主要文件,主库通过传送归档日志到备库而完成两台数据库间的同步。

        备用重做日志(standby redo log):

            备用重做日志类似于"联机重做日志"。不过备用重做日志是用于存储从主数据库接收的重做条目。

            如果数据库运行在"最大保护"或"最大可用性"模式时,必须在备用库配置备用联机日志。配置备用联机重做日志可以做备用库的实时恢复。

        备用重做日志的优点:

                可以存放在裸设置上;
                与联机重做日志一样可以多重备用重做日志,以提高重做日志的可靠性;
                如果主数据库出现故障,备用重做日志可以恢复比归档日志更多的数据;
                主数据库上的ARCn或LGWR进程直接传送数据到远程备机的备用重做日志,省去了注册归档日志的步骤。



    DataGuard主备机同步步骤:

        1.主库生成重做数据,传输到备用库。
        2.备用库系统通过"RFS进程(远程文件服务)"接收。
        3.RFS进程(远程文件服务)将重做条目写入备用归档日志或备用重做日志(如果配置备用重做日志)中。
        4.备用库通过归档日志或备用重做日志文件来恢复(实时应用情况下,备用重做日志写满后直接应该而不是归档后再应用)。
     
     
    原文出处:http://hi.baidu.com/zwfha/blog/item/9e74b894b7e1421cd21b7014.html

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

    转载于:http://blog.itpub.net/81912/viewspace-1275/

    展开全文
  • 实验说明Oracle重做日志归档日志的作用 2012年11月21日 13:41:25 阅读数:11425更多 个人分类: Oracle备份恢复 版权声明:随意复制转载,走捷径懒省事是中国IT的一大悲哀,继承创新再到原创才是人间正道 ...
  • Oracle-归档日志详解(运行模式、分类) 一、Oracle日志分类  分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户...重做日志分为在线重做日志和归档重做日志。   online Redo log files--在线...
  • LogMiner是集成在Oracle8i/Oracle9i数据库产品中的日志分析工具,通过该工具可以分析重做日志和归档日志中的所有事务变化,并能准确地确定各种DML和DDL操作的具体时间和SCN值。文中以Oracle8i(8.1.5)for Windows ...
  • Oracle的重做日志和归档日志 我先在这里写一个过程以便大家理解:数据更改时,暂存数据库高速缓存区,这个过程有一个日志写优先原则,即先会LGWR写入重做日志文件中,数据继续通过数缓冲区DBWR写入数据文件,当DBWR...
  • 用户对数据库的修改操作都被记录在重做日志文件中,DBA可以根据日志文件备份文件将数据库恢复到最近一次记录日志的状态 重做日志文件由重做记录组成,而重做记录由一组修改向量组成,每个修改向量记录数据库在...
  • 重做日志文件和归档日志文件

    千次阅读 2017-02-13 21:53:30
    日志文件分为重做日志文件(redo log file)和归档日志文件(archive log file)。SQL> select group#, status, member from v$logfile;GROUP# STATUS MEMBER ---------- ------- ---------------------------------...
  • LogMiner是集成在Oracle8i/Oracle9i数据库产品中的日志分析工具,通过该工具可以分析重做日志和归档日志中的所有事务变化,并能准确地确定各种DML和DDL操作的具体时间和SCN值。对重做日志和归档日志进行分析的目的是...
  • 【关键术语】Redo log file 重做日志文件Archive log file 归档日志文件SCN(system change number)系统改变号 Checkpoint 检查点Log switch 日志切换 Redo entry 重做条目Log sequence number 日志序列号 Log file ...
  • 联机重做日志和归档日志的区别

    千次阅读 2012-04-18 11:03:35
    当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。 二、ARCHIVE
  • 联机重做日志(online redo log):由两个或多个联机重做日志文件(online redo log files)构成,记录应用到数据库的所有变化,包括未提交已提交的变化。重做条目(redo entry)临时存储于...
  • 1.2 日志操作通常,DBA 会在创建数据库时按照计划创建所需重做日志各个组成员日志文件。然而在有些情况下,会需要通过手工方式为数据库添加新重做日志成员。比如,如果当前某个重做日志组由于某种原因无法...
  • 作用:通过使用包DBMS_LOGMNR和DBMS_LOGMNR_D,可以分析重做日志和归档日志所记载的事务变化,最终确定误操作(例如DROP TABLE)的时间,跟踪用户事务操作,跟踪并还原表的DML操作. 2、包的组成 1)、dbms_logmnr.add_log...
  • LogMiner是集成在Oracle8i/Oracle9i数据库产品中的日志分析工具,通过该工具可以分析重做日志和归档日志中的所有事务变化,并能准确地确定各种DML和DDL操作的具体时间和SCN值。对重做日志和归档日志进行分析的目 的...
  • 归档日志

    2017-01-06 17:53:00
    oracle 归档日志 归档日志(Archive Log)是非活动的重做日志备份....当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库. 日志操作模式:ARCHIVELOG NOARCHIVELOG 1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,148
精华内容 459
关键字:

归档日志和重做日志