Oracle 显示重做日志信息
Oracle添加和删除联机重做日志文件
![Oracle添加和删除联机重做日志文件](https://img.taocdn.com/s3/m/de8e2813650e52ea551898d9.png)
Oracle添加和删除联机重做日志文件作者:雨竹清风数据库管理员应该在每个重做日志组中保证至少两个,以防止重做日志的物理错误。
创建重做日志文件的命令为:alter database add logfile member‘路径’to group 组号;示例如下:SQL>desc v$logfile;名称是否为空?类型-----------------------------------------------------------------------------GROUP#NUMBERSTATUS VARCHAR2(7)TYPE VARCHAR2(7)MEMBER VARCHAR2(513)IS_RECOVERY_DEST_FILE VARCHAR2(3)SQL>col member for a50SQL>select GROUP#,STATUS,TYPE,MEMBER from v$logfile;GROUP#STATUS TYPE MEMBER--------------------------------------------------------------------------3ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG2ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG1ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOGSQL>alter database add logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01b.LOG'to group1;数据库已更改。
添加后查询一下是否成功。
oracle 重做日志文件
![oracle 重做日志文件](https://img.taocdn.com/s3/m/3cf38b0952ea551810a687f0.png)
重做日志文件重做日志文件记录的两类数据:1.修改前的数据2.修改后的数据当满足一定条件时先将修改操作所产生的重做记录写入重做日志文件中,然后才将内存中的修改结果成批的写入数据文件,最后在提交事务重做日志文件是由重做记录组成的,重做记录是由修改向量组成的。
当用户执行一条update 语句对某一个表中的记录进行修改时,会生成一条记录,这条记录用多个向量记录下了被这条语句修改过的各个db块中的信息。
重做记录采用循环的方式在SGA区的重做日志缓存区中进行缓冲,并且由后台进程LGWR 写入到其中的某个重做日志文件中。
用户无论何时提交事务,LGWR都会将该事务的重做记录从SGA的重做日志缓存区写入到某个重做日志文件中,并且为提交的每个事务分别分配一个识别重做记录的系统修改编号。
只有当与已知事务相关的所有重做记录都安全的写入重做日志文件后,用户进程才被告之已经提交。
LGWR进程在开始写入下一个重做日志文件之前,必须确保这个即将覆盖的重做日志文件已经完成了如下的工作:1.如果数据库处于“非归档日志模式(noarchivelog)”,则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中。
2.如果数据库处于“归档日志模式(archivelog)”,则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中,并且归档进程ARCH已经将该重做日志文件进行了归档。
活动的,非活动的,当前的联机重做日志文件LGWR当前写入的重做日志文件称为当前的联机重做日志文件,例程恢复时需要的重做日志文件称为活动的重做日志文件,例程恢复时不需要的重做日志文件称为非活动的重做日志文件。
如果已经能够进行归档,oracle就不能重新使用或重写活动的重做日志文件,知道ARCH 存储了这个文件的内容。
如果不能进行归档,当最后一个重做日志文件被填满是时,将通过重写的方法继续使用第一个可用的活动重做日志文件。
日志切换1.当一个重做日志文件被完全填满,必须填写下一个联机重做日志文件2.手动强制执行日志切换强制切换日志,需要有alter system权限,使用alter system switch logfile强制切换日志顺序号没次发生日志切换和LGWR开始进行填写时,oracle都会为每个联机重做日志文件分配一个新的日志序列号重做日志文件的归档归档就是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的方式,保存到指定的位置。
oracle数据库管理员操作日志
![oracle数据库管理员操作日志](https://img.taocdn.com/s3/m/6ed65456c4da50e2524de518964bcf84b9d52d99.png)
oracle数据库管理员操作日志
作为Oracle数据库管理员,操作日志是非常重要的工作之一。
数据库管理员需要定期记录数据库的操作日志,以便追踪和监控数据库的活动,保证数据库的安全性和稳定性。
操作日志记录了数据库管理人员和用户对数据库的操作,包括但不限于数据库的创建、修改、删除,用户的访问和权限变更,以及数据库的备份和恢复等操作。
在Oracle数据库中,可以通过以下几种方式记录操作日志:
1. Oracle数据库自带的日志功能,Oracle数据库提供了详细的日志记录功能,可以通过配置参数来开启日志记录,并设置日志的级别和格式。
管理员可以通过查看数据库的日志文件来了解数据库的操作情况。
2. 使用审计功能,Oracle数据库提供了审计功能,可以对数据库的操作进行审计,并记录到审计日志中。
管理员可以通过配置审计策略来监控数据库的操作,包括对特定对象的操作、特定用户的操作等。
3. 使用第三方工具,除了Oracle数据库自带的日志功能外,
还可以使用第三方的监控和日志记录工具来记录数据库的操作日志。
这些工具通常提供了更丰富的功能和更直观的界面,可以帮助管理
员更方便地管理和分析数据库的操作日志。
无论使用哪种方式记录操作日志,数据库管理员都需要定期对
日志进行分析和归档,以便及时发现潜在的问题并采取相应的措施。
此外,数据库管理员还需要遵守相关的法律法规和公司政策,确保
操作日志的安全和完整性,防止日志被篡改或删除。
操作日志对于
数据库的安全和稳定性至关重要,因此数据库管理员需要高度重视
操作日志的记录和管理工作。
Oracle Archive log
![Oracle Archive log](https://img.taocdn.com/s3/m/3d33ef6c1eb91a37f1115c77.png)
Oracle归档日志(Archive Log 一)归档日志即重做日志的备份,使用归档日志的目的是为了实现介质恢复。
一.日志操作模式1.Noarchivelog(非归档模式)不保存重做日志。
不能在open状态下进行物理备份;要定期执行完全数据库备份;只能将数据库恢复到上次的完全备份点。
2.Archivelog当进行日志切换时,ARCH进程会将重做日志的内容复制到归档日志中。
在归档重做日志前,新事务变化不能覆盖旧事务变化。
可以在open 状态下进行物理备份。
可以将数据库恢复到失败前的状态。
可以是用备份数据库与主数据库保持同步。
二.开启归档1.改变日志操作模式shutdown immediate;startup mount;alter database archivelog;alter database open;修改日志操作模式后,必须重新备份数据库2.归档重做日志1).手工归档alter system archive log all;2).自动归档设置初始化参数:log_archive_start=trueshutdown immediate;startup pfile=.3).检查日志操作模式archive log list;三.指定归档位置1.使用log_archive_dest1).设置归档目录log_archive_dest log_archive_duplex_dest 2).设置归档日志格式2.使用log_archive_dest_n1).指定归档位置log_archive_dest_1=’location=f:\arc1’log_archive_dest_3=’service=standby’2).设置其他初始化参数log_archive_dest_state_1=enablelog_archive_dest_state_3=defer四.相关的一些脚本1.显示日志操作模式select log_mode from v$database2.显示归档日志信息select name,sequence#,first_change# from v$archived_log3.显示归档日志位置select destination from v$arvhive_dest4.显示日志历史信息select * from v$loghist;Oracle中的归档日志(Archive Log 二)在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle 最大的区别之一就是数据库可以在数据出错的时候进行恢复。
Oracle的告警日志的查看与监控
![Oracle的告警日志的查看与监控](https://img.taocdn.com/s3/m/f233c0ebfbb069dc5022aaea998fcc22bcd1433f.png)
Oracle的告警⽇志的查看与监控Oracle的数据库⽇志⼤致可以分为三⼤类告警⽇志、跟踪⽇志、重做⽇志今天主要来谈谈告警⽇志告警⽇志(记录报错信息)⼀般命名为alert_<SID>.log,数据库告警⽇志是按时间顺序记录message和错误信息。
告警⽇志具体记录的内容1:所有的内部错误(ORA-600)信息,块损坏错误(ORA-1578)信息,以及死锁错误(ORA-60)信息等。
2:管理操作,例如CREATE、ALTER、DROP语句等,以及数据库启动、关闭以及⽇志归档的⼀些信息。
2.1 涉及物理结构的所有操作:例如创建、删除、重命名数据⽂件与联机重做⽇志⽂件的ALTER DATABASE命令,此外还涉及重新分配数据⽂件⼤⼩以及将数据⽂件联机与脱机的操作。
2.2 表空间操作,例如DROP与CREATE命令,此外还包括为了进⾏⽤户管理的备份⽽将表空间置⼊和取出热备份模式的操作3:与共享服务器或调度进程相关功能的消息和错误信息。
4:物化视图的⾃动刷新过程中出现的错误。
5:动态参数的修改信息。
查看告警⽇志所在的路径SQL> show parameter background_dump_dest;如何监控告警⽇志1.通过外部表来查看告警⽇志⽂件的内容。
相当的⽅便。
然后也是使⽤定制SQL语句来查询错误信息依据⽇志所在路径创建逻辑⽬录create or replace directory alert_log as'/home/oracle/app/product/19.3.0/dbhome_1/rdbms/log';创建外部表关联这个⽬录,就可以直接通过表查看⽇志信息了create table alert_logs(text varchar2(2000))organization external(type oracle_loaderdefault directory alert_logaccess parameters(records delimited by newlinefieldsreject rows with all null fields)location('alert_CDB.log'))reject limit unlimited;检查是否存在数据库系统错误提⽰信息,查看有⽆“ORA-”,Error”,“Failed”等出错信息。
OracleOracle日志分类
![OracleOracle日志分类](https://img.taocdn.com/s3/m/cb15851476c66137ef061904.png)
Oracle-归档日志详解(运行模式、分类)一、Oracle日志分类分三大类:Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和redo log 重做日志(记录数据库的更改)。
本文主要关注Oracle的重做日志。
重做日志分为在线重做日志和归档重做日志。
online Redo log files--在线重做日志,又称联机重做日志,指Oracle以SQL脚本的形式实时记录数据库的数据更新,换句话说,实时保存已执行的SQL脚本到在线日志文件中(按特定的格式)。
Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)。
重做日志的简单原理:在数据更新操作commit前,将更改的SQL脚本写入重做日志。
主要用于数据库的增量备份和增量恢复。
重做日志直接对应于硬盘的重做日志文件(有在线和归档二种),重做日志文件以组(Group)的形式组织,一个重做日志组包含一个或者多个日志文件。
二、关于在线重做日志(online redo log)在线重做日志的原理:对于在线重做日志,Oracle 11g默认对于每个数据库实例,建立3个在线日志组,每组一个日志文件,文件名称为REDO01.LOG,REDO02.LOG和REDO03.LOG。
(用户可以通过视图操作添加/修改/删除日志组和日志文件来自定义在线重做日志)每组内的日志文件的内容完全相同,且保存在不同的位置,用于磁盘日志镜像,以做多次备份提高安全性。
默认情况这3组通常只有一组处于活动状态,不断地同步写入已操作的脚本,当日志文件写满时(达到指定的空间配额),如果当前数据库处于归档模式,则将在线日志归档到硬盘,成为归档日志;若当前数据库处于非归档模式,则不进行归档操作,而当前在线日志的内容会被下一次重新写入覆盖而无法保存。
因此,通常数据库在运行时,是处于归档模式下的,以保存数据更新的日志。
Oracleredo与undo
![Oracleredo与undo](https://img.taocdn.com/s3/m/554d1bbe68dc5022aaea998fcc22bcd126ff4294.png)
Oracleredo与undoUndo and redoOracle最重要的两部分数据,undo 与redo,redo(重做信息)是oracle在线(或归档)重做⽇志⽂件中记录的信息,可以利⽤redo重放事务信息,undo(撤销信息)是oracle在undo段中记录的信息,⽤于撤销或回滚事务。
1 redo重做⽇志⽂件redo log,是数据库的事务⽇志,oracle维护着2类重做⽇志,在线重做⽇志⽂件和归档重做⽇志⽂件,归档⽇志⽂件就是重做⽇志的副本,系统将⽇志⽂件填满时arch进程会在另⼀个位置建⽴⼀个在线重做⽇志的副本每个oracle数据库⾄少有2个重做⽇志组,以便切换⽇志,每个⽇志组⾄少有1个⽇志组成员,这些在线重做⽇志⽂件是以循环写的⽅式使⽤,2 undo你对数据库执⾏修改时,数据库会⽣成undo信息,以便回滚到更改前的状态,undo⽤于取消⼀条语句或⼀组语句的作⽤,undo在数据库内部存放在⼀组特殊的段中,为undo段(回滚段 rollback segment),利⽤undo,数据库只是逻辑的恢复到原来的样⼦,所有修改都逻辑的取消,但是数据结构以及数据块本⾝在回滚后可能不⼤相同,对于undo⽣成对于直接路径操作不适⽤,直接路径操作能够绕过表上的undo⽣成。
SQL>set autotrace traceonly statisticsSQL>select*from t;--not first executeno rows selectedStatistics----------------------------------------------------------0 recursive calls0 db block gets3 consistent gets0 physical reads0 redo size995 bytes sent via SQL*Net to client374 bytes received via SQL*Net from client1 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)0 rows processedSQL>insert into t select*from all_objects;49789 rows created.SQL>rollback;Rollback complete.SQL>select*from t;no rows selectedStatistics----------------------------------------------------------0 recursive calls0 db block gets689 consistent gets -----I/O0 physical reads0 redo size995 bytes sent via SQL*Net to client374 bytes received via SQL*Net from client1 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)0 rows processedInsert导致⼀些块增加到表的⾼⽔位线(HWM),这些块没有因为回滚⽽消失,select extent_id, bytes, blocks from user_extentswhere segment_name = 'X' order by extent_id; 分配给表的存储空间—这个表没有使⽤任何区段3 undo 跟redo如何协作尽管undo信息存储在undo表空间或undo段中,但也会受到redo保护,会把undo信息当成表数据或索引数据⼀样,对undo的修改会⽣成⼀些redo,将记⼊重做⽇志,将undo数据增加到undo段中,并像其他部分的数据⼀样,在缓冲区缓存中得到缓存Insert-update-delete场景3.1 insertInsert语句,都会⽣成redo跟undo信息,插⼊发⽣后,如下图缓存了⼀下已修改的undo块,索引块和表数据块,这些块得到重做⽇志缓冲区相应条⽬的保护1假象现在系统崩溃,sga全部被清空,但是我们不需要sga的中的任何内容,重启动时就好像这个事务就没发⽣过,没有将任何修改的块刷新输出到磁盘,也没有任何redo信息刷新输出到磁盘,我们不需要这些undo或redo信息来实现实例失败恢复2假象:缓冲区缓存已满Dbwr进程要把已修改的块从缓存输出到磁盘,⾸先要求lgwr进程将保护这些数据库的redo条⽬输出到磁盘,dbwr在将任何修改的块输出到磁盘之前,都必须要求lgwr进程先刷新输出到redo⽇志,3.2 updateUpdate所带来的⼯作与insert⼤体⼀样,不过undo信息量更⼤,update,要保存系统的前映像,缓冲区中会有更多的undo块,为了撤销update,如果必要,已修改的数据库表和索引都会存在缓存中,其中重做⽇志有的已经输出到磁盘,有的还在redo buffer 中1 系统崩溃:启动时,oracle会读取重做⽇志,给定系统的当前状态,利⽤重做⽇志⽂件中对应的插⼊的redo条⽬,并利⽤仍在缓冲区中对应的redo条⽬,oracle会前滚插⼊,连接断开,oracle发现事务从未提交,因此将其回滚,利⽤undo,2 应⽤回滚事务Oracle发现这个事务的undo信息可能缓存在undo段中,也肯能已经刷新输出到磁盘,会把und信息应⽤到缓存中的数据和索引上,不在缓存中,则先要读⼊到缓存,恢复其原来的⾏,并刷新输出数据⽂件,回滚过程不涉及重组⽇志,只有恢复和归档才会读取重做⽇志,重做⽇志是⽤来写的,不⽤于读,3 deleteDelete 会⽣成undo⽇志,块将被修改,并把redo⽇志发送到重做⽇志缓冲区,与update类似4 commit已经修改的块放在缓冲区缓存中,可能已经输出到磁盘,重做这个事务所需的全部redo都安全的存放在磁盘上,undo信息会⼀直存在,除⾮undo段回绕并重⽤了这些undo块,4 提交和回滚处理Commit:commit并没有做太多的⼯作,Commit开销,频繁提交,会增加与数据库的往返同学,如果每个记录都提交,⽣成的往返通信量会⼤得多,每次提交时,必须等待redo写到磁盘,这会导致等待在commit之前可能:已经在sga中⽣成了undo 块,已经在sga中⽣成了已修改的数据块,已经在sga中⽣成了对应的2想的redo信息,取决于前3项的⼤⼩,已经这些花费的时间,前⾯的数据可能已经输出到磁盘,已经得到全部锁需要的锁在实际commit时, 1为事务⽣成⼀个scn(系统改变号),scn⽤于保证事务的顺序,并⽀持失败恢复,scn还⽤于保证数据库中的读⼀致性和检查点,每次有⼈commit,scn都会增加1。
oracle日志文件
![oracle日志文件](https://img.taocdn.com/s3/m/fd7f40a23968011ca30091db.png)
分类:Oracle 体系结构2010-07-20 14:11 2259人阅读评论(5) 收藏举报--=========================================-- Oracle 联机重做日志文件(ONLINE LOG FILE)--=========================================一、Oracle中的几类日志文件Redo log files -->联机重做日志Archive log files -->归档日志Alert log files -->告警日志Trace files -->跟踪日志user_dump_dest -->用户跟踪日志backupground_dump_dest -->进程跟踪日志--查看后台进程相关目录SQL> show parameter dumpNAME TYPE VALUE------------------------------------ -----------------------------------------background_core_dump string partialbackground_dump_dest string/u01/app/oracle/admin/orcl/bdumpcore_dump_dest string/u01/app/oracle/admin/orcl/cdumpmax_dump_file_size string UNLIMITEDshadow_core_dump string partialuser_dump_dest string/u01/app/oracle/admin/orcl/udump关于Oracle 常用目录及路径请参考:Oracle 常用目录结构(10g)关于Oracle 体系结构请参考:Oracle实例和Oracle数据库(Oracle体系结构)二、联机重做日志的规划管理1.联机重做日志记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)可以被分组管理2.联机重做日志组由一个或多个相同的联机日志文件组成一个联机重做日志组至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)由LGWR后台进程同时将日志内容写入到一个组的所有成员LGWR的触发条件在事务提交的时候(COMMIT)Redo Log Buffer 三分之一满Redo Log Buffer 多于一兆的变化记录在DBWn写入数据文件之前3.联机重做日志成员重做日志组内的每一个联机日志文件称为一个成员一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组LSN号用于唯一区分每一个联机日志组和归档日志处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中4.日志文件的工作方式日志文件采用按顺序循环写的方式当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入写入下一组的过程称为日志切换切换时发生检查点过程检查点的信息同时写入到控制文件5.联机日志文件的规划总原则分散放开,多路复用日志所在的磁盘应当具有较高的I/O一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求建议使用rdo结尾的日志文件名,避免误删日志文件。
Oracle 增加重做日志
![Oracle 增加重做日志](https://img.taocdn.com/s3/m/fe9b6605581b6bd97f19ea7b.png)
Oracle 增加重做日志如果发现LGWR经常处于等待状态,则就需要考虑添加日志组及其成员,一个数据库最多可以拥有MAXLOGFILES个日志组。
增加重做日志是使用ALTER DA TABASE语句完成的,执行该语句时要求用户必须具有ALTER DATABASE系统权限。
1.增加重做日志组当管理重做日志时,为防止后台进程LGWR等待写入日志组,DBA必须选择合适的日志组个数。
要增加重做日志组,可以使用带ADD LOGFILE子句的ALTER DATABASE语句。
例如,下面的语句向数据库中添加了一个新的重做日志组:SQL> alter database add logfile2 ('d:\app\Administrator\oradata\orcl\redo04.log',3 'e:\oradata\orcl\redo04b.log')4 size 10m;数据库已更改。
新增的重做日志组具有两个成员,每个成员文件的大小均为10MB。
一般情况下,日志文件的大小在10MB到50MB之间,Oracle默认的日志文件大小为50MB。
如果在ALTER DA TABASE ADD LOGFILE语句指定GROUP子句,Oracle将自动为新建的重做日志组设置编号,例如:下面的语句可以在创建日志组时指定为第4组:SQL> alter database add logfile group 42 ('d:\app\Administrator\oradata\orcl\redo04.log',3 'e:\oradata\orcl\redo04b.log')4 size 10m;数据库已更改。
使用组号可以更加方便地管理重做日志组,但是,对日志组的编号必须为连续的,不要跳跃式地指定日志组编号。
也就是说,不要将组号编为10,20,30等这样不连续的数。
如何查看Oracle日志
![如何查看Oracle日志](https://img.taocdn.com/s3/m/aeeb01dea0c7aa00b52acfc789eb172ded6399f7.png)
如何查看Oracle⽇志Oracle⽇志查看⼀.Oracle⽇志的路径:登录:sqlplus "/as sysdba"查看路径:SQL> select * from v$logfile;SQL> select * from v$logfile;(#⽇志⽂件路径)⼆.Oracle⽇志⽂件包含哪些内容:(⽇志的数量可能略有不同)control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbfcontrol02.ctl redo03.log system01.dbf users01.dbfcontrol03.ctl redo01.log SHTTEST.dbf temp01.dbf三.Oracle⽇志的查看⽅法:SQL>select * from v$sql (#查看最近所作的操作)SQL>select * fromv $sqlarea(#查看最近所作的操作)Oracle 数据库的所有更改都记录在⽇志中,从⽬前来看,分析Oracle⽇志的唯⼀⽅法就是使⽤Oracle公司提供的LogMiner来进⾏,因为原始的⽇志信息我们根本⽆法看懂,Oracle8i后续版本中⾃带了LogMiner,⽽LogMiner就是让我们看懂⽇志信息的⼯具,通过这个⼯具可以:查明数据库的逻辑更改,侦察并更正⽤户的误操作,执⾏事后审计,执⾏变化分析。
四.LogMiner的使⽤:1、创建数据字典⽂件(data-dictionary)1).⾸先在init.ora初始化参数⽂件中,添加⼀个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典⽂件的⽬录。
如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据库,使新加的参数⽣效:SQL> shutdown;SQL>startup;2).然后创建数据字典⽂件SQL> connect /as sysdbaSQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/data1/oracle/logs');PL/SQL procedure successfully completed2、创建要分析的⽇志⽂件列表1).创建分析列表,即所要分析的⽇志SQL>execute dbms logmnr.add logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new); PL/SQL procedure successfully completeds2).添加分析⽇志⽂件,⼀次添加1个为宜SQL>execute dbms_ logmnr.add_ logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options =>dbms_logmnr.ADDFILE);PL/SQL procedure successfully completed3、使⽤LogMiner进⾏⽇志分析(具体要查询什么内容可以⾃⼰修改)(1)⽆限制条件SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'/data1/oracle/logs/v816dict.ora ');(2)有限制条件通过对过程DBMS_ LOGMNR.START_LOGMNR中⼏个不同参数的设置,可以缩⼩要分析⽇志⽂件的范围。
ORACLE日志分析logmnr使用
![ORACLE日志分析logmnr使用](https://img.taocdn.com/s3/m/a1c030d2b9f3f90f76c61bc2.png)
ORACLE日志v$logmnr_contents分析一、产生日志命令:分析日志脚本文件logmnr.sql如下:SQL> @c:\logmnr.sql===================================================================== ========rem ********************开始执行日志分析脚本********************** rem 设置环境参数set echo offset termout off --//显示脚本中的命令的执行结果,缺省为onset trimout on --//去除标准输出每行的拖尾空格,缺省为offset trimspool on --//去除重定向(spool)输出每行的拖尾空格,缺省为off set heading off --//输出域标题,缺省为onset pagesize 0 --//输出每页行数,缺省为24,为了避免分页,可设定为0。
set verify off --//可以关闭和打开提示确认信息old 1和new 1的显示. set linesize 800 --//输出一行字符个数,缺省为80rem 字典信息文件路径为:show parameter utlrem 创建Logminer包:@D:\oracle\ora92\rdbms\admin\dbmslmd.sqlrem 创建字典信息文件exec dbms_logmnr_d.build(dictionary_filename=>'dic.ora',dictionary_location =>'D:\oracle\oradata\zfmi');rem 增加数据库对应的重做日志文件:execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo01. log', options=>dbms_logmnr.new);execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo02. log', options=>dbms_logmnr.addfile);execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo03. log', options=>dbms_logmnr.addfile);select db_name,filename from v$logmnr_logs;rem 结合字典信息文件,开始分析重做日志文件execdbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\zfmi\dic.or a',starttime => to_date('2008-05-06 10:00:00','YYYY-MM-DDHH24:MI:SS'),endtime => to_date('2008-05-06 20:00:00','YYYY-MM-DD HH24:MI:SS'));rem 开始保存分析结果:spool c:\zfmiLog08-05-06_10.00.00to08-05-06_20.00.00.txt;select to_char(TIMESTAMP,'YYYY-MM-DD HH24:MI:SS'), SQL_REDO fromv$logmnr_contents where USERNAME='ZFMI' order by TIMESTAMP ;spool offrem 关闭分析器Logminer!dbms_logmnr.end_logmnr;rem ********************日志分析脚本执行完毕**********************===================================================================== ===========二、视图v$logmnr_contents字段分析一下内容根据oracle官方文档部分翻译:SQL> desc v$logmnr_contents;名称类型---------------------------------------------------------------------TIMESTAMP DATE //SQL执行时间COMMIT_TIMESTAMP DATE //事务提交时间SEG_OWNER VARCHAR2(32) //被修改对象创建者SEG_NAME VARCHAR2(256) //被修改对象的名字,如表名SEG_TYPE NUMBER //被修改对象类型SEG_TYPE_NAME VARCHAR2(32) //被修改对象类型名TABLE_SPACE VARCHAR2(32) //被修改对象所属表空间ROW_ID VARCHAR2(19) //被修改行的ROWID,如果SESSION# NUMBER //执行修改的SESSION号SERIAL# NUMBER //执行修改的SESSION序号USERNAME VARCHAR2(30) //执行事务的用户名SESSION_INFO VARCHAR2(4000) //执行修改的SESSION信息,例如:login_username= client_info=OS_username=SYSTEM Machine_name=ZFMISERVER OS_terminal=ZFMISERVER OS_process_id=1812 OS_program name=ORACLE.EXETX_NAME VARCHAR2(256) //执行的事务名,当该事务被命名时ROLLBACK NUMBER //回滚标记OPERATION VARCHAR2(32) //操作类型INSERTUPDATEDELETEDDLSTARTCOMMITROLLBACKLOB_WRITELOB_TRIMLOB_ERASESELECT_FOR_UPDATESEL_LOB_LOCATORMISSING_SCNINTERNALUNSUPPORTEDOPERATION_CODE NUMBER //操作类型代码0 = INTERNAL1 = INSERT2 = DELETE3 = UPDATE5 = DDL6 = START7 = COMMIT9 = SELECT_LOB_LOCATOR10 = LOB_WRITE11 = LOB_TRIM25 = SELECT_FOR_UPDATE28 = LOB_ERASE34 = MISSING_SCN36 = ROLLBACK255 = UNSUPPORTEDSQL_REDO VARCHAR2(4000) //重做日志SQLSQL_UNDO VARCHAR2(4000) //相反操作SQLSEQUENCE# NUMBER //重做日志的序号。
redo 日志相关
![redo 日志相关](https://img.taocdn.com/s3/m/9fe33b2310661ed9ad51f3e6.png)
Redo日志重做日志文件(REDO LOGFILE)又被称为事务日志文件(TRANSACTION LOGFILE)。
它对ORACLE 数据库来说是至关重要的。
ORACLE中每执行一条更新操作时,都会引起数据库的变化,因此都会生成一定数量的重做日志,他们将被记录到重做日志文件中。
以便在数据库出现例程失败或介质故障时,可以利用重做日志文件来恢复数据库。
一、重做日志文件概述重做日志文件是ORACLE三类文件中最为复杂的一类。
在ORACLE 10G安装完毕后,会自动创建3个重做日志文件。
重做日志文件主要以重做记录的形式记录、保存对数据库所作的修改(或事务)。
如果在一段时间内只对数据库进行了查询操作,则不产生重做日志记录信息。
如果对一个表的数据进行了修改,并完成了事务的提交,这时数据文件只存储修改后的数据,但重做日志文件中要记录两类数据:一类是修改前的数据;一类是修改后的数据。
所以重做日志文件的管理方式与数据文件的管理方式有所不同。
(一)重做日志文件的作用与目的重做日志文件在数据库的恢复过程中起着非常重要的作用,可以用来进行例程和介质恢复,以及事务的撤销。
1.数据库运行不正常,如由于断电而出现的例程失败,或者是由于磁盘损坏而出现的介质失败时,都能够实现例程恢复或介质恢复。
其中介质恢复需要借助于归档日志文件;2.数据库运行正常时,由于不正确的删除或修改了某条记录、某个表,甚至表空间时,能够实现事务的撤销。
在撤销时要借助于撤销表空间或撤销段。
(二)重做记录重做日志文件是由一条一条重做记录组成的,重做记录(REDO RECORD)是有一个个修改向量(CHANGE VECTOR)组成的。
每个修改向量记录了对数据库中的某个数据块所作的修改。
重做记录记录了可以用来对数据可进行恢复的所有修改的数据,包括回退段。
因此,重做日志文件同样也会保护回退数据。
当使用重做日志文件来进行数据库恢复时,ORACLE将读取其中的重做记录(包括其中的修改向量),并且将这些修改用于相关的块中。
Oracle 重做日志简介
![Oracle 重做日志简介](https://img.taocdn.com/s3/m/6adf5b3f83c4bb4cf7ecd17b.png)
Oracle 重做日志简介日志文件也称为重做日志文件(Redo Log File),重做日志文件用于记载事务操作所引起的数据库变化。
执行DDL或DML操作时,Oracle会将事务变化的信息顺序写入重做日志。
当丢失或损坏数据库中的数据时,Oracle会根据重做日志文件中的记录,恢复丢失的数据。
1.重做记录重做日志文件是由重做记录组成,重做记录又称为重做条目,它由一组修改向量组成。
每个修改向量都记录了数据库中某个数据块所做的修改。
例如,如果用户执行了一条UPDATE语句对某个表中的一条记录进行修改,同时将生成一条重做记录。
这条重做记录可能由多个变更向量组成,在这些变更向量中记录了所有被这条语句修改过的数据块中的信息,被修改的数据块包括表中存储这条记录的数据块,以及回退段中存储的相应的回退条目的数据块。
如果由于某种原因导致数据库丢失了这条UPDA TE语句操作的结果,则可以通过与这条UPDATE语句对应的重做记录找到被修改结果并复制到各个数据块中,从而完成数据恢复。
利用重做记录,不仅能够恢复对数据文件所做的修改操作,还能够恢复对回退段所做的修改操作。
因此,重做日志文件不仅可以保护用户数据库,还能够保护回退段数据。
在进行数据库恢复时,Oracle会读取每个变更向量,然后将其中记录的修改信息重新应用到相应的数据块上。
重做记录将以循环方式在SGA区的重做日志高速缓存中进行缓存,并且由后台进程LGWR写入到重做日志文件中。
当一个事条被提交时,LGWR进程将与该事务相关的所有重做记录全部写入重做日志文件中,同时生成一个“系统变更码SCN”。
系统变更码SCN 会随重做记录一起保存到重做日志文件中,以标识与重做记录相关的事务。
只有当某个事务所产生的重做记录全部被写入重做日志文件后,Oracle才会认为该事务提交成功。
2.写入重做日志文件在Oracle中,用户对数据库所做的修改首先被保存在内存中,这样可以提高数据库的性能,因为对内存中的数据进行操作要比对磁盘进行操作快得多。
oracleredolog讲解
![oracleredolog讲解](https://img.taocdn.com/s3/m/f21fb393ed3a87c24028915f804d2b160b4e8678.png)
1 :官方教程2 :dba-oracle讲解3 :WIKI redo log4 :操作联机重做日志文件和组几乎所有的发生在oracl e的内部变化都记录在on line redo log file中,oracle使用这些redo log groups去恢复数据库,因此它们是非常的重要。
联机重做日志文件的主要工作是:备份数据,1:记录所有的数据改变2:提供了一种恢复机制3:一定是被组织成组的4:至少有两组联机重做日志文件每一个redo log 是被分配到组中, oralce一次值写一个onlineredo log 组,一旦这个组中的联机重做日志被填满,oracle将转换写到下一个联机重做日志组中因此o racle在多个组之间写是一个循环操作。
每一个联机重做日志文件被分配一个唯一的序列号(sequenc e number)。
除非重建数据库,否则联机重做日志文件的序列号不会出现重复。
我们可以有多个联机重组偶日志文件在一个组中,这意味着每一个联机重做日志组包含至少两个联机重做日志文件,在组中的每一个文件成为一个mem ber,每一个 member应该被分配在不同的磁盘,为了包含这些组文件丢失,oracle往组里面的me mber中并发的写信息,一个组的联机重做日志文件是一模一样的,通过LGWR进程向所有 onlineredo log file 组中写信息。
组中的每一个m ember具有相同的大小,oracle数据在往 redo log file 组中写信息的时候首先分配一个 log sequenc e numbers,多路复用:一个组里至少两个 member,避免了redo log files 的单点故障,redo log files中一个组中包含多个 member,每个组都有一个编号。
Oracle 显示归档日志信息
![Oracle 显示归档日志信息](https://img.taocdn.com/s3/m/7c40acf50242a8956bece47f.png)
Oracle 显示归档日志信息
查询关于归档的信息有两种方法:一种是使用数据字典和动态性能视图;使用ARCHIVE LOG LIST命令。
在SQL*Plus中执行ARCHIVE LOG LIST命令,将显示当前数据库的归档信息。
例如:
SQL> connect /as sysdba
已连接。
SQL> archive log list;
数据库日志模式存档模式
自动存档启用
存档终点d:\oracledata\archive3
最早的联机日志序列68
下一个存档日志序列71
当前日志序列71
在上述信息中可以得知:
●数据库处于归档模式。
●自动归档功能被启用
●归档目标为本地目录D:\ORACLEDA TA\ARCHIVE3。
●已经归档的最早的重做日志序号为68。
●当前正在归档的重做日志序列号为71。
在表11-3中列出了各种包含归档信息的数据字典视图和动态性能视图。
表11-3 包含归档信息的视图
数据字典视图描述
V$DA TABASE 可以用于查询数据库是否处理归档模式
V$ARCHIVED_LOG 包含从控制文件中所有已经归档的日志信息
V$ARCHIVED_DEST 包含所有归档目标信息
V$ARCHIVE_PROCE
包含已启动的ARCn进程状态信息
SSES
包含所有已经备份的归档日志信息
V$BACKUP_REDOL
OG
V$LOG 包含所有重做日志组的信息,在其中可以查看日志组是否需要
归档。
oracle重做日志文件和归档日志
![oracle重做日志文件和归档日志](https://img.taocdn.com/s3/m/d3b3a58c9fc3d5bbfd0a79563c1ec5da51e2d651.png)
数据库恢复的原理
当数据库发生故障时,可以利用重做 日志文件来进行恢复。Oracle会根据 重做日志文件中的记录,重新执行对 数据库所做的更改,从而将数据库恢 复到一致的状态。
04 Oracle重做日志文件和归 档日志的管理和维护
日志文件的备份与恢复
备份策略
制定定期备份和增量备份策略,确保重做日志文件和归档日志的安全。
恢复方法
在发生故障时,根据备份情况选择适当的恢复方法,如全量恢复或增量恢复。
日志文件的清理与维护
清理过期日志
定期清理过期或不再需要的日志文件 ,释放存储空间。
Oracle重做日志文件和归档日志
contents
目录
• Oracle重做日志文件 • 归档日志 • Oracle重做日志文件和归档日志的关系 • Oracle重做日志文件和归档日志的管理
和维护 • Oracle重做日志文件和归档日志的故障
处理
ቤተ መጻሕፍቲ ባይዱ
01 Oracle重做日志文件
重做日志文件的作用
数据恢复
THANKS FOR WATCHING
感谢您的观看
存储容量
需要合理规划存储空间,确保有足够的空间存储归档日志文件,避 免空间不足导致数据库故障。
归档日志的恢复
恢复方法
当数据库发生故障时,可以使用归档日志进行恢复。可以选择完全恢复或部分恢复,根据需要选择相应的归档日志文 件。
恢复过程
在恢复过程中,需要按照时间顺序应用归档日志文件,确保数据的一致性。可以使用RMAN(Oracle Recovery Manager)进行自动恢复或手动恢复。
Oracleg日志查看方法
![Oracleg日志查看方法](https://img.taocdn.com/s3/m/b9b73e7ab207e87101f69e3143323968011cf487.png)
Oracleg日志查看方法Oracle 11g的日志文件包括数据库日志(Redo Log)、归档日志(Archive Log)和警告日志(Alert Log)。
这些日志文件记录了数据库的运行状态、操作记录、错误信息等重要信息,对于数据库管理员来说非常重要。
下面将详细介绍Oracle 11g的日志查看方法。
1. 数据库日志(Redo Log):数据库日志是Oracle数据库中最重要的日志文件之一,它记录了数据库中所有修改操作的详细信息,包括插入、更新和删除操作。
数据库日志文件的默认位置是$ORACLE_HOME/oradata/<SID>/redo<file_number>.log。
查看数据库日志的方法如下:- 使用SQL*Plus登录到数据库。
-运行以下命令查看数据库日志的信息:```SELECT group#, thread#, sequence#, members, archivedFROM v$log;```这个命令将显示数据库日志的组号(group#)、线程号(thread#)、序列号(sequence#)、成员数(members)和是否已归档(archived)等信息。
-运行以下命令查看数据库日志的详细信息:```SELECT * FROM v$log;```这个命令将显示数据库日志的详细信息,包括日志组的状态、大小、成员的路径等。
2. 归档日志(Archive Log):归档日志是数据库日志的备份,它可以用于数据库的恢复和还原。
归档日志文件的默认位置是$ORACLE_HOME/dbs/arch<thread_number>_<sequence_number>.arc。
查看归档日志的方法如下:- 使用SQL*Plus登录到数据库。
-运行以下命令查看已归档的日志文件:```FROM v$archived_logWHERE status='A';```-运行以下命令查看归档日志的详细信息:```SELECT * FROM v$archived_log;```这个命令将显示归档日志的详细信息,包括日志文件的路径、大小、归档时间等。
oracle_重做日志文件--笔记
![oracle_重做日志文件--笔记](https://img.taocdn.com/s3/m/d4667dd48ad63186bceb19e8b8f67c1cfad6eee4.png)
oracle_重做⽇志⽂件--笔记重做⽇志⽂件(redo log file)⽬录重做⽇志⽂件相关。
重做⽇志⽂件简介。
查询重做⽇志⽂件的信息。
⽇志切换。
管理⽇志⽂件组增删⽇志⽂件组。
增删⽇志⽂件成员。
归档与⾮归档模式。
⼀.重做⽇志⽂件相关。
Oracle引⼊重做⽇志的⽬的:数据库的恢复。
Oracle相关进程:重做⽇志写进程(LGWR)。
重做⽇志性质:联机⽇志⽂件,oracle服务器运⾏时需要管理它们。
相关数据字典:v$log ; v$logfile。
操作者权限:具有sys⽤户或system⽤户权限。
1.1重做⽇志⽂件的规划。
(于⽹络上收集)联机⽇志⽂件的规划原则如下:1:分散放开,多路复⽤。
⼀般会将同⼀组的不同⽇志成员⽂件放到不同的磁盘或不同的裸设备上。
以提⾼安全性。
2:把重做⽇志放在速度最快的硬盘上(即:⽇志所在的磁盘应当具有较⾼的I/O),⼀般会将⽇志⽂件放在裸设备上。
3:把重做⽇志⽂件设为合理⼤⼩:例如,增⼤⽇志⽂件⼤⼩可以加快⼀些⼤型的INSERT、UPDATE、DELETE操作,也能降低⽇志⽂件切换频率。
减少⼀些⽇志等待事件。
⼀般根据具体业务情况有所不同。
⼀般⽇志组⼤⼩应满⾜⾃动切换间隔⾄少15-20分钟左右业务需求4:ORACLE推荐,同⼀个重做⽇值组下的所有重做⽇志⽂件⼤⼩、成员个数⼀致.⼆.重做⽇志⽂件简介。
2.1重做⽇志重做⽇志⽂件⼜叫联机⽇志⽂件,记录了对数据库修改的信息,包括⽤户对数据修改和数据库管理员对数据库结构的修改。
2.2重做⽇志的作⽤。
它主要⽤于在oracle发⽣故障的时候和数据库备份⽂件配合恢复数据库。
⼀般来说,数据库故障丢失数据,有两种情况。
⼀是,因为停电或死机,脏块未写⼊磁盘,造成该数据丢失。
⼆是,磁盘损坏,数据全完蛋。
对应第⼀种情况,oracle会使⽤实例恢复,使⽤重做⽇志⾃动恢复数据,不需要⽤户⼲预。
没错,实例恢复,它是⾃动的。
对应第⼆种情况,便需要DBA使⽤备份,重做⽇志,归档⽇志来恢复数据了。
oracle数据库归档日志使用情况 -回复
![oracle数据库归档日志使用情况 -回复](https://img.taocdn.com/s3/m/931212a8afaad1f34693daef5ef7ba0d4b736d56.png)
oracle数据库归档日志使用情况 -回复Oracle数据库归档日志使用情况在Oracle数据库中,归档日志是一种重要的机制,用于记录数据库的所有操作以及数据库中数据的变更。
它在数据库出现故障时,提供了恢复数据的关键手段。
本文将逐步回答关于Oracle数据库归档日志使用情况的问题,帮助读者加深对该机制的了解。
问题一:什么是Oracle数据库归档日志?Oracle数据库归档日志(Archived Redo Log)是一种用于记录数据库操作以及数据变更的日志文件。
它包含了数据库在运行过程中所发生的所有事务操作,如插入、更新和删除等。
归档日志以二进制格式存储在操作系统的磁盘上,用于保留数据库的历史记录,以备发生灾难性故障或数据损坏时进行数据恢复。
问题二:为什么需要开启归档日志模式?在Oracle数据库中,默认情况下是关闭归档日志的。
但是,为了确保数据库的完整性和可用性,建议将数据库设置为归档日志模式。
开启归档日志模式后,数据库会自动在每次日志切换时将当前的在线重做日志文件转换为归档日志文件,并保存到指定的归档目录下。
这样,即使数据库发生故障,也能通过归档日志来还原数据库到故障发生前的状态。
问题三:如何查看归档日志模式的使用情况?可以通过查询数据库的日志模式来查看当前是否开启了归档日志模式。
在SQL*Plus命令行中,执行如下SQL语句即可:sqlSELECT log_mode FROM vdatabase;返回的结果中,如果log_mode的值为'ARCHIVELOG',则表示数据库已开启归档日志模式。
如果值为'NOARCHIVELOG',则表示数据库目前未开启归档日志模式。
问题四:如何开启归档日志模式?要将数据库设置为归档日志模式,需要以下步骤:1. 进入SQL*Plus命令行,以SYS用户登录数据库。
2. 执行如下SQL语句,将数据库设置为归档日志模式:sqlALTER DATABASE ARCHIVELOG;执行完毕后,数据库将开启归档日志模式,并自动将当前的在线重做日志文件转换为归档日志文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 显示重做日志信息
对于DBA而言,可能经常要查询重做日志文件,以了解其使用情况。
要了解Oracle数据库的日志文件信息,可以查询如表11-2所示的数据字典视图和动态性能视图。
表11-2 包含重做日志文件信息的视图
视图说明
V$LOG 包含从控制文件中获取的所有重做日志文件的基本信息
V$LOGFILE 包含各个成员日志文件的信息,例如成员的状态和所属的重做日志组V$LOG_HISTROY 包含重做日志文件的历史信息
下面列出了V$LOG的结构信息:
SQL> desc v$log
名称是否为空? 类型
---------------------------- ------------------- --------------
GROUP# NUMBER
THREAD# NUMBER
SEQUENCE# NUMBER
BYTES NUMBER
MEMBERS NUMBER
ARCHIVED V ARCHAR2(3)
STATUS V ARCHAR2(16)
FIRST_CHANGE# NUMBER
FIRST_TIME DA TE
其中,GROUP#字段显示的是重做日志文件组的编号,THREAD#显示的是重做日志组所属的日志写入线程,SEQUENCE#字段显示的是重做日志组的日志序列号,BYTES字段显示重做日志组中各个成员的大小,MEMBERS字段显示的是重做日志组中的成员数,ARCHIVED字段显示的是重做日志的归档情况,STA TUS字段显示重做日志组的状态(CURRENT表示当前正在使用的,NACTIVE表示非活动组,ACTIVE表示归档未完成),FIRST_CHANGE#字段显示的是重做日志组上一次写入时的系统改变号SCN,FIRST_TIME 字段显示的是重做日志组上一次写入的时间。