redo log
redo log 都是重做记录。
重做记录(也称为重做条目)由一组更改向量组成,每个向量都是对数据库中单个块所做更改的描述。例如,如果更改员工表中的薪资值,则会生成包含更改向量的重做记录,这些更改向量描述对该表的数据段块、撤消段数据块和撤消段的事务表所做的更改。
重做条目记录数据,可用于重建对数据库所做的所有更改,包括撤消段。因此,重做日志还保护回滚数据。使用重做数据恢复数据库时,数据库将读取重做记录中的更改向量,并将更改应用于相关块。
重做记录以循环方式缓冲在SGA的重做日志缓冲区中(请参阅“Oracle数据库如何写入重做日志”),并由LGWR数据库后台进程写入其中一个重做日志文件。每当提交事务时,LGWR将事务重做记录从SGA的重做日志缓冲区写入重做日志文件,并为每个提交的事务分配一个系统更改号(SCN)来标识重做记录。只有在联机日志中与给定事务相关联的所有重做记录都安全地位于磁盘上时,用户进程才会通知该事务已提交。
在提交相应事务之前,还可以将重做记录写入重做日志文件。如果重做日志缓冲区已满或另一个事务提交,则LGWR会将重做日志缓冲区中的所有重做日志条目刷新到重做日志文件,即使某些重做记录可能未提交。如果需要,数据库可以回滚这些更改。
添加日志文件,可设置块大小(512到4k)
ALTER DATABASE orcl ADD LOGFILE GROUP 4 ('/u01/logs/orcl/redo04a.log','/u01/logs/orcl/redo04b.log') SIZE 100M BLOCKSIZE 512 REUSE;
查询目前的块大小
SQL> SELECT BLOCKSIZE FROM V$LOG;
BLOCKSIZE --------- 512
当设置ARCHIVE_LAG_TARGET初始化参数时,将使数据库定期检查实例的当前重做日志,并确定何时切换日志。
ARCHIVE_LAG_TARGET = 1800
30分钟
Creating Redo Log Groups
ALTER DATABASE ADD LOGFILE ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 100M;
指定group号
ALTER DATABASE ADD LOGFILE GROUP 10 ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 100M BLOCKSIZE 512;
给group加成员
ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2b.rdo' TO GROUP 2;
Dropping Log Groups
先查看redo的状态,是否已归档,处于INACTIVE状态
SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; GROUP# ARC STATUS --------- --- ---------------- 1 YES ACTIVE 2 NO CURRENT 3 YES INACTIVE 4 YES INACTIVE
然后在删除
ALTER DATABASE DROP LOGFILE GROUP 3;
删除group中的成员
ALTER DATABASE DROP LOGFILE MEMBER '/oracle/dbs/log3c.rdo';
切换日志
ALTER SYSTEM SWITCH LOGFILE;
Clearing a Redo Log File
当数据库打开时,重做日志文件可能会损坏,并最终停止数据库活动,因为存档无法继续。
需要clear redo log。
ALTER DATABASE CLEAR LOGFILE GROUP 3;
如果日志未被归档
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;
与redo相关的数据字典视图
View | Description |
---|---|
Displays the redo log file information from the control file |
|
Identifies redo log groups and members and member status |
|
Contains log history information |