oracle日志

日志分類

redo?log?files聯機日志或重做日志
archived?log?files歸檔日志??1184198alert?log?files??告警日志

?trace?files??user_?_dump_?_dest??用戶信息日志如跟蹤會話日志
background?dump_?dest進程日志還有其他一-些不常用的日志

?

v$database的log_mode 數據庫歸檔模式
v$archived_log 控制文件中已經歸檔的日志文件信息
v$archive_dest 所有歸檔目標
v$archive_processes 已啟動的歸檔進程狀態
v$archive_redolog ???已經備份的歸檔日志信息 ??
?

?

redo log files?重做日志分為在線重做日志和歸檔重做日志。
? online Redo log files--在線重做日志,又稱聯機重做日志,指Oracle以SQL腳本的形式實時記錄數據庫的數據更新,換句話說,實時保 ? ? ? ? ? ? 存已執行的SQL腳本到在線日志文件中(按特定的格式)。
? Archive Redo log files--歸檔重做日志,簡稱歸檔日志,指當條件滿足時,Oracle將在線重做日志以文件形式保存到硬盤(持久化)。
? ? ? ? 重做日志文件是數據庫中一種非常重要的日志文件,也是其一一個很有特色的功能。
? ? ? ? 重做日志文件會記錄對于數據庫的任何操作,如利用DML語句或者DDL語句對數據進行更改,或者數據庫管理員對數據庫結構進行更改,都會在重做日志中進行記錄。
? ? ? ? 當數據被意外的刪除或者修改,我們可以利用重新日志文件進行恢復;當出現例程失敗或者介質失敗的情況下,也可以利用日志文件實現例程恢復或者介質恢復。所以說,我們若能夠管理好重做日志文件的話,對于保障數據 ? ? ? ? 庫數據的安全是非常重要的。

? ? ? 聯機重做日志有以下特性:
? ? ? ? ? 1.記錄所有對數據的改變
? ? ? ? ? 2.提供恢復機制
? ? ? ? ? 3.能夠被分組

? ? ? ? ? 4.至少需要兩個日志組

?當前歸檔日志組寫滿后,Oracle會切換到下一日志組,繼續寫入,就這樣循環切換;當處于歸檔模式下,切換至原已寫滿的日志組,若該日志組歸檔完畢則覆蓋寫入,若沒有則只能使用日志緩沖區,等待歸檔完畢之后才能覆蓋寫入。當然,處于非歸檔模式下是直接覆蓋寫入的

?Oracle提供了2個視圖用于維護在線重做日志:V$LOG 和? V$LOGFILE,我們可以通過這兩個視圖查看和修改在線日志

工作機制

1.聯機重做日志文件是循環使用的.
2.當一個聯機重做日志文件被寫滿了,LGWR將移到下個聯機重做日志文件組.被稱為日志切換,同時發生檢查點,信息將被寫入控制文件
3.redo?log是二進制文件
4.日志文件的組織模式是組組下是成員至少兩個組
5.組和組是平等的關系
6.實例同-?-時刻只能向-一個組寫日志
7.-個組寫滿了,寫下一個組,這個過程叫WiTCH自動切換和手工切換
8.日志切換產生checkpoint有增量檢測和完全檢測兩種
9.完全檢測:一致性?SHUTDOWN時;alter?system?checkpoint,

結果為:所有的臟數據塊寫入文件,改寫文件頭的信息
參數log._?checkpoints_to_alert=true?決定檢測點的信息寫入報警日志,如果將日志文件轉出到DUMP中

select?*?from?v$log;
select to_char(first_time, 'yyyy-mm-dd') day2 ?from v$log_history?group?by?day2,

alter?session?set?events?'immediate?trace?name?redohdr?level?n';增加|減少日志組的成員,
select to_number('fffffffffff','xxxxxxxxxxxxxxxxxx')from dual;

Redo寫的觸發條件:

1,每三秒鐘超時(timeout):
當LGWR處于空閑狀態時,它依賴于rdbms?rpc?message等待事件,處于休眠狀態,直到三秒時間到,如果這個時候LGWRf發現有Redo信息需要寫出的話,那么LGWR將執行寫的操作,log?file?parallel?write等待事件將會出現。
2.閥值的達到:
Redo?log?buffer?1/3滿;
Redo?log?buffer擁有1MB的臟數據;

參數_?log?_io _size的設置很重要,一般為?log_buffer?的1/3大小
3.用戶提交:
當一個transaction?提交的時候,在Redo?stream?中將記錄一-個?提交標志。在這些Redo被寫到磁盤上之前,這個transaction是不能恢復的。所以,在transaction返回成功標志之前,必須等待LGWR寫的完成。進程通知LGWR寫,并且以log?file?sync事件開始休眠。超時為1秒
4.在DBWn寫之前:
如果DBWR將要寫出的數據的高RBA超過LGWR的on-diskRBA,則DBWR將通知LGWR執行寫的操作,在Oracle8i之前,此時DBWR將等待Log?file?sync事件。從Oracle8i開始,DBWR把這些block(將要寫出的block,這種block的高RBA超過了LGWR的on-diskRBA)放入defer隊列中,同時通知LGVR執行Redo寫出。
注:
logbufferspace等待事件說明logbuffer空間不夠用了。

redo日志文件管理

?規劃原則:分散放開到不同的硬盤,日志所在盤的IO要足夠,IO讀寫都要快增加減少日志成員或組日志狀態與監視處理日志異常[日志不一-致,日志丟失,日志損壞]
?增加減少日志成員或組:
alter?database?add?logfle?group?<?member(<dir>'

<dir>)?size?<?;alter?database?add?logfile?member?dir'?to?group?<?D;alter?database?drop?logfile?‘dir';
alter?database?drop?logfile?group?

redo日志文件的狀態UNUSED:表示從未對聯機重做日志文件組進行寫入。這是剛添加的聯機重做日志文件的狀態
CURRENT:表示當前的聯機重做日志文件組。這說明該聯機重做日志文件組是活動的
ACTIVE:表示聯機重做日志文件組是活動的,但是并非當前聯機重做日志文件組。崩潰恢復需要該狀態。它可用于塊恢復。它可能已歸檔,也可能未歸檔
CLEARING:表示在執行ALTER?DATABASE?CLEAR?LOGFILE命令后正在將該日志重建為一個空日志。日志清除后,其狀態更改為
?CLEARING_?CURRENT:表示正在清除當前日志文件中的已關閉線程。如果切換時發生某些故障,如寫入新日志標頭時發生了輸入/輸出(I/O)?錯誤,則日志可能處于此狀態。

?INACTIVE:表示例程恢復不再需要聯機重做文件日志組。它可能已歸檔,也可能未歸檔。
注:處于active的日志文件組無法刪除,因為這個日志文件組可能會在實例恢復的時候使用。
我們可以使用alter database checkpoint命令手動的創建一個檢查點,來是active的日志文件組變成inactive的日志文件組,這一點在擴容日志文件組(先刪除再添加)的時候會用到!
可以使用alter system switch logfile命令手動的切換日志文件組
另外在說一下active和inactive的一些區別,其實這兩種狀態的重做日志都是已經歸檔的,不同的只是,active狀態的重做日志文件組是在實例恢復的時候被需要的,因為有一些事務雖然已經提交了,但是這些記錄的更改還沒有寫到datafile中,如果這個時候實例一旦失敗(斷電或者其他的突發情況),在進行實例恢復的時候會需要這些active狀態的日志文件組,每過一段時間,當系統負載不是很大的時候,Oracle會嘗試將內存中的數據寫入到datafile中,這個時候active的日志文件組就會變成inactive狀態,我們可以使用alter database checkpoint強制來執行這個過程;而inactive是在實例恢復的時候不被需要的日志文件組。

V$logfile的status

INVALID:表明該文件不可訪問STALE:表示文件內容不完全

stale表示文件內容不完全

deleted表示文件已經不再使用

空白表示文件在使用中

?要確定一個數據庫例程的聯機重做日志文件的合適數量,您必須測試不同的配置。在某些情況下,數據庫例程可能只需要兩個組。在其它情況下,數據庫例程可能需要更多的組以保證各個組始終可供LGWR使用。例如,如果LGWR跟蹤文件或警報文件中的消息表明LGWR經常不得不因為檢查點操作尚未完成或者組尚未歸檔而等待,您就需要添加組。

??????盡管Oracle服務器允許多元備份的組可以包含不同數量的成員,但應該盡量建立對稱配置。不對稱配置應只是非常情況(?如磁盤故障)的臨時結果。

??????聯機重做日志文件的位置:?.

??????對聯機重做日志文件進行多元備份時,請將組內的成員放置在不同磁盤上。這樣,即使一個成員不可用而其它成員可用,該例程也不會關閉。將歸檔日志文件和聯機重做日志文件分放在不同磁盤上,以減少ARCn和LGWR后臺進程之間的爭用。

??????數據文件和聯機重做日志文件應當放置在不同的磁盤上以減少LGWR和DBWn的爭用,并降低發生介質故障時同時丟失數據文件和聯機重做日志文件的風險。

??????調整聯機重做日彎文件的大小:

??????聯機重做日志文件最小為50?KB,最大文件大小視操作系統而定。不同組的成員可以有不同的大小:但是,大小不同的組不會帶來任何好處。

??????只有當需要更改聯機重做日志組的成員大小時,才需要大小不同的組作為臨時結果。在,?有不同的大小:但是,大小不同的組不會帶來任何好處
?
-添加新的重做日志文件組,group 4 可以缺省,大小最好10M到50M之間
select * from v$logfile;
alter database add logfile group 4
'F:\APP\HANLIN\ORADATA\ORCL\REDO04.LOG'  size 20M;
多個成員
alter database add logfile group 6
('F:\APP\HANLIN\ORADATA\ORCL\REDO06_A.LOG',
'F:\APP\HANLIN\ORADATA\ORCL\REDO06_B.LOG')size 20M;
————————————————
下面語句只修改數據字典和控制文件,不刪除實際文件
alter database drop logfile group 4;
下面語句清空重做日志文件
alter database clear logfile group 4;alter database add logfile member 
'F:\APP\HANLIN\ORADATA\ORCL\REDO04_B.LOG' to group 4;
刪除日志成員(只修改數據字典和控制文件,不刪除實際文件)
alter database drop logfile member 
'F:\APP\HANLIN\ORADATA\ORCL\REDO04_B.LOG' 
更改重做日志文件的位置或名稱的步驟:
shutdown;
復制日志文件,修改日志文件名稱
startup mount;
--舉例兩個成員的路徑和名稱修改
alter database rename file 
'成員1j舊路徑\新文件名','成員2舊路徑\新文件名'
to
''成員1新路徑\新文件名,'成員2新路徑\新文件名';
alter database open;

?

?

alter?system?set?1og_?archive_?dest_?2?=’SERVICE=standby1'?;alter?system?set?1og_?_archive_?format?=’arch_?_%t_?_%s_?_%r.?arc'?;

co1?dest_?name?format?a20;col?destination?format?a30;

select?dest_?_name,?status,?archiver,?destination,?1og_?_sequence,?reopen_?_secs,?transmit_?_mode,?processfrom?vSarchive_?dest;

selectname,?sequence#,?registrar,?standby_?dest,?archived,?status?from?v$archived_?1og;

v$archived_?1ogvSarchive_?destv$1og_?historyv$database

vSarchive_?processes

??????-->從控制文件中獲得歸檔的相關信息-->歸檔路徑及狀態

??????-->控制文件中日志的歷史信息-->查看數據庫是否處于歸檔狀態-->歸檔相關的后臺進程信息

select?*?from?v$logfile;

select?member,?bytes/1024/1024?from?v$1og?a,?v$logfile?bwhere?a.?group#=b.?group#

select?NAME,?STATUS?from?v$archived_?1og;

?

Log?buffer大小設置

??????9i以前,-?-般是3M

??????在10g中ORACLE會自動調整它的值,他遵循這樣一個原則,’Fixed?SGA?Size'?+’Redo?Buffers'?是granule?size的整數倍;select?*?from?vSsgainfo?where.?name?in?('?Fixed?SGA?Size'?,’Redo?Buffers'?,’Granule?Size’?)?;--在10.2.0.3中Log?Buffer?默認值是14M,在10.2.0.?4中,默認值是15Mselect?*?from?vSversion?where?rownum<2;8、LGWR觸發條件:Write-?Ahead-Log:?日志寫入優先

??????1.用戶提交

??????2.有1/3重做日志緩沖區未被寫入磁盤

??????3.有大于1M的重做日志緩沖區未被寫入磁盤4.每隔3秒鐘

??????5.?DBWR需要寫入的數據的SCN大于LGWR記錄的SCN,DBWR觸?發LGWR寫入9、L0G優化建議

??????在OLTP?系統上,REDO?LOG文件的寫操作主要是小型的,比較頻繁,一般的寫大小在幾K,而每秒鐘產生的寫I0次數會達到幾十次,數百次甚至_上千次。因此REDO?LOG文件適合存放于IOPS?較高的轉速較快的磁盤上,I0PS僅能達到數百次的SATA盤不適合存放REDO?LOG文件。另外由于REDO?LOG文件的寫入是串行的,因此對于REDO?LOG文件所做的底層條帶化處理,對于REDO?LOG寫性能的提升是十分有限的。10、REDO?LOG切換的時間應該盡可能的不低于10-20分鐘

select?to_?char?(FIRST?_TIME,’?yyy-mm-dd?hh24:mi:ss'?)?f.?_time,?SEQUENCE#?from?vS1og_?history11、日志相關的一-些操作

alter?database?add?logfile?group?5_?’/opt/?orac1e/?oradata/?dbtest/redo05_?1.?1og’?SIZE?10Malter?database?add?1ogfile?member'?/?opt/?oracle/?oradata/?dbtest/redo04_?3.?1og’to?group?4alter?database?drop?logfile?group?5

alter?database?drop?logfile?('?/opt/oracle/?oradata/?dbtest/redo05_?1.?1og'?,’/opt/?oracle/?oradata/?dbtest/redo05_?2.?1og'?)\\

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535515.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL:分庫分表知識點盤點

本篇內容包括&#xff1a;數據庫瓶頸、分庫分表以及分庫分表相關問題 一、數據庫瓶頸 不管是IO瓶頸&#xff0c;還是CPU瓶頸&#xff0c;最終都會導致數據庫的活躍連接數增加&#xff0c;進而逼近甚至達到數據庫可承載活躍連接數的閾值。在業務Service來看就是&#xff0c;可用…

oracle的sga

sga SGA的管理 ■有三種方式&#xff1a; ●8i:SGA的總大小由所有內存組件大小之和決定&#xff0c;不能直接定義SCA大小。對內部組件大小的修改必須在數據庫重起 后 才能生為&#xff0c;所以叫做SGA的靜態管理。 ●9i&#xff…

MySQL:日志知識點盤點

本篇內容包括&#xff1a;binlog&#xff08;二進制日志&#xff09;、redo log 以及 undo log 一、binlog&#xff08;二進制日志&#xff09; binlog 用于記錄數據庫執行的寫入性操作(不包括查詢)信息&#xff0c;以二進制的形式保存在磁盤中。binlog是mysql的邏輯日志&…

ROWNUM的使用

一個偽列看起來像是一個表中的列&#xff0c;但實際上并不保存在表中。你可以查詢&#xff0c; 但是不能插入&#xff0c;修改和刪除其中的值。一個偽列也類似于一個沒有參數的函 數。但是在典型情況下&#xff0c;在結果集中可以為每一行返回相同的值&#xff0c;而偽列通 常為…

MySQL:主從相關知識點盤點

本篇內容包括&#xff1a;MySQL 主從復制簡介、主從復制的原理以及主從搭建 一、MySQL 主從復制簡介 在實際的生產中&#xff0c;為了解決Mysql的單點故障已經提高MySQL的整體服務性能&#xff0c;一般都會采用**「主從復制」**。 比如&#xff1a;在復雜的業務系統中&#x…

oracle導出expdp

expdp/impdp 是 oracle 10g 版本后推出的服務器端工具--數據泵&#xff0c;作用是為了將數據庫中的邏輯對象&#xff0c;比如表、用戶、全庫、表空間進 行導入&#xff0c;導出 命令解析 ATTACH ATTACH [[schema_name.]job_name] schema_name 表示用戶名,job_name 表示導出的作…

oracle導入impdp

expdp/impdp 是 oracle 10g 版本后推出的服務器端工具--數據泵&#xff0c;作用是為了將數據庫中的邏輯對象&#xff0c;比如表、用戶、全庫、表空間進 行導入&#xff0c;導出REMAP_DATAFILE 該選項用于將源數據文件名轉變為目標數據文件名, 在不同平臺之間搬移表空間時可能需…

oracle高水位線

ORACLE在邏輯存儲上分4個粒度: 表空間, 段, 區 和 塊. 1.1 塊: 是粒度最小的存儲單位,現在標準的塊大小是8K,ORACLE每一次I/O操作也是按塊來操作的,也就是說當ORACLE從數據文件讀數據時,是讀取多少個塊,而不是多少行. 每一個Block里可以包含多個row. 1.2 區:…

oracle檢查點

檢 查 點 概述 ■l當修改數據時&#xff0c;需要首先將數據讀入內存中&#xff08;Buffer Cache&#xff09;&#xff0c;修改數據的同時&#xff0c;Oracle會記錄重做信息&#xff08;Redo&#xff09;用于恢復。因 為有了重做信息的存在&#xff0c;Oracle不需要在提交時…

文獻翻譯:Java theory and practice: Fixing the Java Memory Model, Part 2

Java theory and practice: Fixing the Java Memory Model, Part 2 譯&#xff1a;Java 理論與實踐&#xff1a;修復 Java 內存模型&#xff0c;第 2 部分 翻譯自&#xff1a;http://www.ibm.com/developerworks/library/j-jtp03304/&#xff08;原文寫于2004年3月&#xff0…

oracle的buffercache

LRU空閑或者干凈的鏈&#xff0c;可以從這里找到未修改的數據LRUW臟鏈&#xff0c;一個臟塊同時掛到了lruw和檢查點隊列&#xff0c;LRUW分冷端和熱端&#xff0c;冷端即為更新頻率較低的一端&#xff0c;熱端為更新頻率較高的一端&#xff0c;dbwn寫入數據文件時從冷端開始寫入…

oracle的undo

Undo段中區的狀態free expiredinactiveactive 顯示UNDO區信息 SELECT extent_ id, bytes&#xff0c; status FROM dba_ _undo_ _extentsWHERE segment_ name SYSSMU1S ; 圖解一一個事務的操作流程 Undo段的組成:段頭、回滾塊 事務ID …

SQLPlus命令詳細說明

SQLPlus命令詳細說明 2011-10-19 17:23:01 分類&#xff1a; Oracle 1. 執行一個SQL腳本文件 SQL>start file_name SQL> file_name 2. 對當前的輸入進行編輯 SQL>edit 3. 重新運行上一次運行的sql語句 SQL>/ 4. 將顯示的內容輸出到指定文件 SQL> S…

oracle的EMCTL

Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\Users\Administrator>emctl start dbconsole Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to da tabase unique name. C:\Users\Administ…

RHEL7 修改SSH默認端口

1.查詢seliunx [roottest10597 ~]# getenforce Enforcing [roottest10597 ~]# semanage port -l|grep ssh ssh_port_t tcp 222.設置selinux端口 [roottest10597 ~]# semanage port -a -t ssh_port_t -p tcp 10022 [roottest10597 ~]# semanage …

oracle預定義異常

NO_DATA_FOUND&#xff1a;執行查詢無數據、引用一個末初使化的表、通過UTL_FILE包調用到尾的文件TOO_MANY_ROWS&#xff1a;采用SELECT INTO語句&#xff0c;但返回的記錄超過了1條DUP_VAL_ON_INDEX:插入或者更新語句&#xff0c;與唯一索引相沖突TIMEOUT_ON_RESOURCE:等待資源…

常用系統函數oracle

單行函數日期函數ADD_MONTHS(date, n):用于從一個日期值增加或減少一些月份 MONTHS_BETWEEN(date1, date2):判斷兩個日期之間相差的月份 LAST_DAY(date): 函數返回包含日期的月份的最后一天 ROUND(date[,fmt]): 將日期d按照fmt指定的格式舍入&#xff0c;fmt為字符串 TRU…

oracle游標

游標&#xff08;cursor &#xff09;是一個私有的SQL工作區域,是一個指向上下文區的句柄或指針&#xff0c;位于內存中的 "臨時表"。 游標是SQL的一個內存工作區&#xff0c;由系統或用戶以變量的形式定義。游標的作用就是用于臨時存儲從數據庫中提取的數據塊。在某…

找出占用cpu最高的線程

ps -eo %cpu,pid |sort -n -k1 -r | head -n 1| awk {print $2}| xargs top -b -n1 -Hp | grep COMMAND -A1 |tail -n 1 |awk {print $1}| xargs printf 0x%x ? 在命令行輸入top&#xff0c;然后shiftp查看占用CPU最高的進程&#xff0c;記下進程號 ? 在命令行輸入top -Hp…

系統學習SpringFramework:Spring 概述

本篇內容包括&#xff1a;Spring/SpringFrame 概述、Spring IOC 和 AOP 概述、Spring 全家桶內容概述&#xff08;包括&#xff1a;Spring Boot、Spring Cloud、Spring Cloud data flow …&#xff09;等內容&#xff01; 一、Spring/SpringFrame 概述 Spring 是一個生態體系&…