oracle基础:redo log file

Redo Log Buffer 
redo log buffer 可以循环使用,存放数据库改变牵涉的信息,其内部放的是redo entry。 
redo entry存放的是INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 等操作对数据库的改变信息,这些信息在recovery的时候是很重要。这些redo entry 由oracle server进程从用户内存放到redo buffer。 


LGWR(Log writer) 
LGWR(Log writer)是oracle启动时候必须启动的进程,它负责把redo log buffer中的redo entry写到redo log文件中。 
在如下情况下写文件: 
- redo log buffer 三分之一满了 
- 达到某时间点 
- 在 DBWR w把修改的数据块写到数据文件之前写redo log file 
- 事务 commit的时候 
- 在数据库做归档redo log 文件的时候 

Redo Log file 
redo log就是存放redo log 信息的文件了,至少有两个redo log 组,oracle循环使用之。当然推荐又更多的redo log 组。既然是循环使用redo log,必然会有一个log switch的过程。 

log switch发生在: 
- log file 已经写满了 
- 使用了ALTER SYSTEM SWITCH LOGFILE 命令 

在log switch 的时候自动会做checkpoint。 

只要redo log组里面有一个redo log file可以用,就能进行log switch。当然如果redo log file坏了,LGWR肯定会记录到 trace和alert文件. 

关于redo log的设置 
一般至少两组redo log 文件, 
每组中的redo log文件最好在不同的磁盘上,防止一起损坏。 
每组中的redo log文件必须大小一致,它们是同时修改的。 
不同组的redo log文件大小不一定一致。 
每组的redo log文件数目必须一致。 


修改redo log的位置 
- 看看当前的redo log文件是不是正在使用,如果在使用如下命令 
ALTER SYSTEM SWITCH LOG FILE; 
- 把该文件copy到你想要放到位置 
- ALTER DATABASE RENAME FILE ’filename’ TO filename’  

增加redo log 文件 
ALTER DATABASE [database] 
ADD LOGFILE MEMBER 
[ ’filename’ [REUSE] 
[, ’filename’ [REUSE]]... 
TO {GROUP integer 
|(’filename’[, ’filename’]...) 


删除redo log 文件 
如果redo log 文件是invalid状态,可以删除之 
ALTER DATABASE [database] DROP LOGFILE MEMBER ’filename’[, ’filename’]... 

相关数据字典 
察看 
v$log 
v$logfile 
v$log_history 

你可能感兴趣的:(oracle基础:redo log file)