Redo log 的分享與記憶
1. 檢視redo log file的相關情況,
a) select * from v$logfile;
b) select * from v$log;
2. 向redo log group 裡面新增redo 檔案是操作
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ ’filename’ [REUSE]
[, ’filename’ [REUSE]]...
TO {GROUP integer
|(’filename’[, ’filename’]...)
}
3. 新增一組新的redo log file.
alter database add logfile group 1 '/opt/oracle/product/9i/oradata/oracle9i/redo01.log' size 200M;
4. 刪除
alter database drop logfile group 1;
5. 修改redo log 的大小
轉載網友部落格中例項供參考:
要將日誌檔案組1,2,3從100M修改到200M方法如下
$ ls
control01.ctl drsys01.dbf redo01.log temp01.dbf xdb01.dbf
control02.ctl example01.dbf redo02.log tools01.dbf
control03.ctl indx01.dbf redo03.log undotbs01.dbf
cwmlite01.dbf odm01.dbf system01.dbf users01.dbf
$ ls -l redo01.log
-rw-r----- 1 oracle dba 104858112 Jan 04 16:34 redo01.log
$ du -m redo01.log
100.00 redo01.log
登陸SQLPLUS
--------------------
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.7.0 - Production on Fri Jan 4 16:48:40 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba;
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1377274120 bytes
Fixed Size 743688 bytes
Variable Size 738197504 bytes
Database Buffers 637534208 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
SQL> select group# from v$log;
GROUP#
----------
1
2
3
ITPUB個人空間j‑?d0{,z Wer
建立日誌檔案組4,5
---------------------------
SQL> alter database add logfile group 4 '/opt/oracle/product/9i/oradata/oracle9i/redo04.log' size 200M;
Database altered.
SQL> alter database add logfile group 5 '/opt/oracle/product/9i/oradata/oracle9i/redo05.log' size 200M;
Database altered.
3l3?O-hX+] [3_.e/w26464953
將日誌檔案組切換到新建立的4,5日誌檔案組上
--------------------------------------------------------------
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 INACTIVE
3 INACTIVE
4 INACTIVE
5 CURRENT
KA L+a%Y z!ve26464953
刪除已有的1,2,3日誌檔案組
---------------------------------------
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
*w$U.S:w3p c A
W26464953
增加新的日誌檔案1,2,3,並設定容量為200M
------------------------------------------------------------
SQL> alter database add logfile group 1 '/opt/oracle/product/9i/oradata/oracle9i/redo01.log' size 200M;
Database altered.
SQL> alter database add logfile group 2 '/opt/oracle/product/9i/oradata/oracle9i/redo02.log' size 200M;
Database altered.
SQL> alter database add logfile group 3 '/opt/oracle/product/9i/oradata/oracle9i/redo03.log' size 200M;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 UNUSED
4 INACTIVE
5 INACTIVE
刪除剛剛增加的日誌檔案組4,5
-----------------------------------------
SQL> alter database drop logfile group 4;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
注意:每一步刪除drop操作,都需要手工刪除os中的實體檔案。
另外注意備份控制檔案。
6. 與redo log 相關的知識:
刪除redo log 檔案
如果redo log 檔案是invalid狀態,可以刪除之
ALTER DATABASE [database] DROP LOGFILE MEMBER ’filename’[, ’filename’]...
相關資料字典
察看
v$log
v$logfile
v$log_histor
修改redo log的位置
- 看看當前的redo log檔案是不是正在使用,如果在使用如下命令
ALTER SYSTEM SWITCH LOGFILE;
- 把該檔案copy到你想要放到位置
- ALTER DATABASE RENAME FILE ’filename’ TO filename’
關於redo log的設定
一般至少兩組redo log 檔案,
每組中的redo log檔案最好在不同的磁碟上,防止一起損壞。
每組中的redo log檔案必須大小一致,它們是同時修改的。
不同組的redo log檔案大小不一定一致。
每組的redo log檔案數目必須一致。
跟redo logfile有關的其它資料庫引數
1、log_buffer
log_buffer是ORACLE SGA的一部分, 所有DML命令修改的資料塊先放在log_buffer裡, 如果滿了或者到了check_point時候通過lgwr後臺程式寫
到redo logfile裡去。它不能設得太大,這樣在意外發生時會丟失很多改變過的資料。它最好不要大於512K或者128K*CPU個數。
我們可以用下面的SQL語句檢測log_buffer使用情況:
SQL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
這個比率小於1%才好,否則增加log_buffer的大小
2、log_checkpoint_interval
Oracle8.1 版本後log_checkpoint_interval指的是兩次checkpoint之間作業系統資料塊的個數。
checkpoint時Oracle把記憶體裡修改過的資料塊用DBWR寫到物理檔案,用LGWR寫到日誌和控制檔案。
一般UNIX作業系統的資料塊為 512 bytes。
從效能優化來說log_checkpoint_interval = redo logfile size bytes / 512 bytes
3、log_checkpoint_timeout
Oracle8.1 版本後log_checkpoint_timeout指的是兩次checkpoint之間時間秒數。
Oracle建議不用這個引數來控制,因為事務(transaction)大小不是按時間等量分佈的。
log_checkpoint_timeout = 0
log_checkpoint_timeout = 900
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檔案.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26464953/viewspace-712834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- InnoDB文件筆記(二)—— Redo Log筆記
- MySQL的Redo log 以及Bin logMySql
- undo log和redo log
- MySQL中的redo log和undo logMySql
- mysql日誌:redo log、binlog、undo log 區別與作用MySql
- mysql之 redo logMySql
- MySQL Undo Log和Redo Log介紹MySql
- MySQL中的redo log和checkpointMySql
- 【Mysql】三大日誌 redo log、bin log、undo logMySql
- MySQL redo log最佳化MySql
- MySQL重做日誌(redo log)MySql
- redo log file 最佳化
- Oracle redo解析之-1、oracle redo log結構計算Oracle Redo
- How to Dump Redo Log File Information --metalinkORM
- 基於Redo Log和Undo Log的MySQL崩潰恢復流程MySql
- redo log 和 binlog 的一些總結
- 硬核乾貨!一文掌握 binlog 、redo log、undo log
- MySQL中redo log、undo log、binlog關係以及區別MySql
- 深入理解MySQL系列之redo log、undo log和binlogMySql
- MySQL 日誌系統 redo log、binlogMySql
- 必須瞭解的mysql三大日誌-binlog、redo log和undo logMySql
- MySQL學習之change buffer 和 redo logMySql
- MySQL如何計算統計redo log大小MySql
- innodb 的 redo log,不會對未引起資料塊變化的sql做記錄的SQL
- MySQL中Redo Log相關的重要引數總結MySql
- MySQL Redo log頁內邏輯怎麼理解MySql
- Oracle RAC+DG 調整redo/standby log fileOracle
- MYSQL 是如何保證binlog 和redo log同時提交的?MySql
- Python分享之Python的記憶體管理Python記憶體
- 3000幀動畫圖解MySQL為什麼需要binlog、redo log和undo log動畫圖解MySql
- 4.2.1.6 選擇資料庫並設定 Redo Log 塊的大小資料庫
- 談談傳說中的redo log是什麼?有啥用?
- 技術分享:記憶體管理記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- 【知識分享】伺服器記憶體和普通記憶體的區別伺服器記憶體
- Linux記憶體洩露案例分析和記憶體管理分享Linux記憶體洩露
- duplicate遇到RMAN-05535: warning: All redo log files were not defined
- 更改online redo log file 提示 ORA-01511 ORA-01141
- 聊聊 記憶體模型與記憶體序記憶體模型