Oracle 显示重做日志信息
Oracle添加和删除联机重做日志文件

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

重做日志文件重做日志文件记录的两类数据: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数据库管理员操作日志
作为Oracle数据库管理员,操作日志是非常重要的工作之一。
数据库管理员需要定期记录数据库的操作日志,以便追踪和监控数据库的活动,保证数据库的安全性和稳定性。
操作日志记录了数据库管理人员和用户对数据库的操作,包括但不限于数据库的创建、修改、删除,用户的访问和权限变更,以及数据库的备份和恢复等操作。
在Oracle数据库中,可以通过以下几种方式记录操作日志:
1. Oracle数据库自带的日志功能,Oracle数据库提供了详细的日志记录功能,可以通过配置参数来开启日志记录,并设置日志的级别和格式。
管理员可以通过查看数据库的日志文件来了解数据库的操作情况。
2. 使用审计功能,Oracle数据库提供了审计功能,可以对数据库的操作进行审计,并记录到审计日志中。
管理员可以通过配置审计策略来监控数据库的操作,包括对特定对象的操作、特定用户的操作等。
3. 使用第三方工具,除了Oracle数据库自带的日志功能外,
还可以使用第三方的监控和日志记录工具来记录数据库的操作日志。
这些工具通常提供了更丰富的功能和更直观的界面,可以帮助管理
员更方便地管理和分析数据库的操作日志。
无论使用哪种方式记录操作日志,数据库管理员都需要定期对
日志进行分析和归档,以便及时发现潜在的问题并采取相应的措施。
此外,数据库管理员还需要遵守相关的法律法规和公司政策,确保
操作日志的安全和完整性,防止日志被篡改或删除。
操作日志对于
数据库的安全和稳定性至关重要,因此数据库管理员需要高度重视
操作日志的记录和管理工作。
Oracle Archive log

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的告警⽇志的查看与监控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日志分类

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与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 体系结构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结尾的日志文件名,避免误删日志文件。
- 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 字段显示的是重做日志组上一次写入的时间。