oracle之 Oracle歸檔日志管理

? ? ? 在Oracle中,數據一般是存放在數據文件中,不過數據庫與Oracle最大的區別之一就是數據庫可以在數據出錯的時候進行恢復。這個也就是我們常見的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一個是在線重做日志文件,另外一個就是歸檔日志文件。

  這里不詳細說明在線重做日志,而是說一下歸檔日志(Archive Log)。在線重做日志大小畢竟是有限的,當都寫滿了的時候,就面臨著2個選擇,第一個就是把以前在線重做日志從頭擦除開始繼續寫,第二種就是把以前的在線重做日志先進行備份,然后對被備份的日志擦除開始寫新的在線Redo File。這種備份的在線重做日志就是歸檔日志。而數據庫如果采用這種生成歸檔日志的模式的話,就是歸檔日志模式(ARCHIVELOG模式),反之如果不生成歸檔日志,就是非歸檔日志模式(NOARCHIVELOG模式)。

  有了歸檔日志有什么好處了。比如在這個月1號的時候備份了一次數據,然后過了10天,這10天生成了成百上千個在線重做日志,突然發現其中有一個數據磁盤出問題了,不能用了,那我該如何是好呢。

  如果沒有采用歸檔日志,那么實際上磁盤中只會有幾個最新的在線重做日志。那么我只能要不然把出問題的數據磁盤上所占據的表空間都刪除掉。但是如果是SYSTEM表空間所涉及的磁盤出錯,就沒辦法這么做了,只能用第二種方法。那第二種方法就是把1號備份的數據拿出來恢復。那么1號到10號之間的10天的數據都丟了,如果是關鍵系統,比如證券金融什么的系統,就要讓你賠錢賠死掉。

  但是如果有了歸檔日志,那么你這10天的重做日志都會存放起來,那么DBA首先把1號的備份數據恢復,然后再拿這10天的REDO日志來進行一次數據操作重放,那么就可以完全恢復最新的數據庫,不會有什么后果了。

  在軟件開發的時候,由于測試服務器的配置有限,特別是磁盤空間有限,所以有可能要限制REDO文件的大小,有可能就把系統設置為NOARCHIVELOG模式了。但是在實際的生產運行環境下,基本上一定要使用ARCHIVELOG模式,否則萬一出了問題,真是哭都來不及了。

  有人可能會怕歸檔日志造成性能損失。其實這個完全是杞人憂天的,歸檔日志只是做一個備份,其實也就是多耗一些磁盤空間而已。在當前的軟件系統中,硬盤的存儲容量成本已經屬于低到可以忽略的地步,而最重要的是數據庫的安全。DBA的任務本來就是確保數據的安全,如果連安全都保證不了,那點微乎其微的性能提高又有什么用呢。

  歸檔日志(Archive Log)是非活動的重做日志備份.通過使用歸檔日志,可以保留所有重做歷史記錄,當數據庫處于ARCHIVELOG模式并進行日志切換式,后臺進程ARCH會將重做日志的內容保存到歸檔日志中.當數據庫出現介質失敗時,使用數據文件備份,歸檔日志和重做日志可以完全恢復數據庫.

  日志操作模式:ARCHIVELOG NOARCHIVELOG

  1,改變日志操作模式:

  檢查當前日志操作模式

  SELECT log_mode from v$database;

  關閉數據庫,然后裝載數據庫

  SHUTDOWN IMMEDIATE

  STARTUP MOUNT

  改變日志操作模式,然后打開數據庫

  ALTER DATABASE ARCHIVELOG;

  ARCHIVE LOG START;

  ALTER DATABASE OPEN;

  2,執行手工歸檔

  從oracle database 10g開始,當將日志操作模式轉變未ARCHIVELOG模式時,oracle會自動啟動ARCH進程.如果要使用手工歸檔.那么在改變日志操作模式時必須使用命令ALTER DATABASE ARCHIVELOG MANUAL.

  需要注意,使用手工歸檔方式,數據庫管理員必須手工執行歸檔命令.如果沒有執行手工歸檔命令,日志組的原有內容將不能被覆蓋.ALTER DATABASE ARCHIVELOG MANUAL 命令是為了與先前的版本兼容而保留的,.將來的oracle版本會淘汰該命令,使用手工歸檔方式是,數據庫管理員可以執行以下命令歸檔重做日志:

  SLTER SYSTEM ARCHIVELOG ALL;

  3,配置歸檔進程

  初始化參數LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始啟動的最大歸檔進程個數,當將數據庫轉變為ARCHIVELOG模式時,默認情況下oracle會自動啟動兩個歸檔進程.通過改變初始化參數LOG_ARCHIVE_MAX_PROCESS的值,可以動態地增加或降低歸檔進程的個數:

  ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;

  配置歸檔位置和文件格式

  當數據庫處于ARCHIVELOG模式時,如果進行日志切換,后臺進程將自動生成歸檔日志,歸檔日志的默認位置為%oracle_home%rdbms,在oracle database 10g中,歸檔日志的默認文件格式為ARC%S_%R.%T.為了改變歸檔日志的位置和名稱格式,必須改變相應的初始化參數,

  1,初始化參數LOG_ARCHIVE_FORMAT用于指定歸檔日志的文件名格式,設置該初始化參數時,可以指定以下匹配符:

  %s: 日志序列號:

  %S: 日志序列號(帶有前導0)

  %t: 重做線程編號.

  %T: 重做線程編號(帶有前導0)

  %a: 活動ID號

  %d: 數據庫ID號

  %r RESETLOGS的ID值.

  從10g開始,配置歸檔日志文件格式時,必須帶有%s,%t和%r匹配符,配置了歸檔文件格式后,必須重啟數據庫.

  2,使用LOG_ARCHIVE_DEST配置歸檔位置

  如果不使用備用數據庫,只需要將歸檔日志存放到本地目錄.配置本地歸檔位置可以使用初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一個參數用于設置第一個歸檔位置,第二個參數用于指定第二個歸檔位置.

  ALTER SYSTEM SET log_archive_dest=’d:demoarchive1’;

  ALTER SYSTEM SET log_archive_duplex_dest=’d:demoarchive2’;

3,使用LOG_ARCHIVE_DEST_n配置多個歸檔位置.

  初始化參數LOG_ARCHIVE_DEST_n用于指定多個歸檔位置,該參數最多可以指定10個歸檔位置.通過使用初始化參數LOG_ARCHIVE_DEST_n,不僅可以配置本地歸檔位置,還可以配置遠程歸檔位置.

  如果既要在主節點上生成歸檔日志,又要將歸檔日志傳遞到備用節點,那么必須使用參數LOG_ARCHIVE_DEST_n.該參數與LOG_ARCHIVE_DEST具有如下區別;

  初始化參數LOG_ARCHIVE_DEST_n可以配置本地歸檔位置和遠程歸檔位置,而初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地歸檔位置.

  初始化參數LOG_ARCHIVE_DEST_n可以配置多達10個歸檔位置,而初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置兩個歸檔位置.

  初始化參數LOG_ARCHIVE_DEST_n 不能與初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用.

  因為初始化參數LOG_ARCHIVE_DEST_n不能與初始化參數LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用,所以必須禁用初始化參數LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.當使用初始化參數LOG_ARCHIVE_DEST_n配置本地歸檔位置時,需要指定LOCALTION選項.當配置遠程歸檔位置時,需要指定SERVICE選項.

  示例如下:

  ALTER SYSTEM SET log_archive_duplex_dest=’’;

  ALTER SYSTEM SET log_archive_dest=’’;

  ALTER SYSTEM SET log_archive_dest_1=’location=d:demoarchive1’;

  ALTER SYSTEM SET log_archive_dest_2=’location=d:demoarchive2’;

  ALTER SYSTEM SET log_archive_dest_3=’location=d:demoarchive3’;

  ALTER SYSTEM SET log_archive_dest_4=’service=standby’;

  配置遠程歸檔位置時,SERVICE選項需要指定遠程數據庫的網絡服務名(在tnsnames.ora文件中配置)

  4,使用LOG_ARCHIVE_DEST_n選項

  使用初始化參數LOG_ARCHIVE_DEST_n配置歸檔位置時,可以在歸檔位置上指定OPTIONAL或MANDATORY選項.指定MANDATORY選項時,可以設置REOPEN屬性.

  OPTIONAL:該選項是默認選項.使用該選項時,無論歸檔是否成功,都可以覆蓋重做日志.

  MANDATORY:強制歸檔.使用該選項時,只有在歸檔成功之后,重做日志才能被覆蓋.

  REOPEN:該屬性用于指定重新歸檔的時間間隔,默認值為300秒,必須跟在MANDATORY后.

  例:

  Alter system set log_archive_dest_1=’location=d:demoarchive1 mandatory’;

  Alter system set log_archive_dest_2=’location=d:demoarchive2 mandatory reopen=500’;

  Alter system set log_archive_dest_3=’location=d:demoarchive3 optional’;

  5,控制本地歸檔成功的最小個數.

  使用初始化參數LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地歸檔的最小成功個數

  Alter system set log_archive_min_succeed_dest=2;

  6,使用初始化參數LOG_ARCHIVE_DEST_STATE_n控制歸檔位置的可用性.設置該參數為ENABLE(默認值),表示會激活相應的歸檔位置;設置該參數為DEFER,表示禁用相應歸檔位置.當歸檔日志所在磁盤損壞或填滿時,DBA需要暫時禁用該歸檔位置.

  Alter system set log_archive_dest_state_3=defer;(禁用)

  Alter system set log_archive_dest_state_3=enable;(啟用)

  顯示歸檔日志信息

  1,使用ARCHIVE LOG?LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機器要歸檔的日志序列號等信息.

  2顯示日志操作模式

  SELECT name,log_mode FROM v$database;

  3,顯示歸檔日志信息.

  Col name format a40

  Select name, swquence#, first_change# FROM v$archived_log;

  Name用于表示歸檔日志文件名,sequence#用于表示歸檔日志對應的日志序列號,firs_change#用于標識歸檔日志的起始SCN值.

  4執行介質恢復時,需要使用歸檔日志文件,此四必須準確定位歸檔日志的存放位置.通過查詢動態性能視圖v$archive_dest可以取得歸檔日志所在目錄.

  SELECT destination FROM v$archive dest;

  5,顯示日志歷史信息

  SELECT * FROM v$loghist;

  THREAD#用于標識重做線程號,SEQUNCE#用于標識日志序列號,FIRST_CHANGE#用于標識日志序列號對應的起始SCN值,FIRST_TIME用于標識起始SCN的發生時間.SWICTH_CHANGE#用于標識日志切換的SCN值.

  6.顯示歸檔進程信息.

  進行日志切換時,ARCH進程會自動將重做日志內容復制到歸檔日志中,為了加快歸檔速度,應該啟用多個ARCH進程.通過查詢動態性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進程的信息!

  SELECT * FROM v$archive_processes;

  Porcess用于標識ARCH進程的編號,status用于標識ARCH進程的狀態(ACTIVE:活動,STOPPED:未啟動),log_sequence用于標識正在進行歸檔的日志序列號,state用于標識ARCH進程的工作狀態.

? ? ? ?說明:整理與網絡

文章可以轉載,必須以鏈接形式標明出處。


本文轉自 張沖andy 博客園博客,原文鏈接:?http://www.cnblogs.com/andy6/p/7729371.html? ,如需轉載請自行聯系原作者

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

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

相關文章

linux 安裝rmp服務,Linux LAMP服務的rpm包安裝與配置

1.apache(httpd) 所在光盤裝包apr-xxx.rpm (二)postgresql-libs-xxx.rpm (二)apr-util-xxx.rpm (二)http-xxx.rpm (二)2.mysql (二)裝包perl-DBI-xxx.rpm (二)mysql-xxx.rpm (二)3.mysqlserver裝包perl-DBD-mysql-xxx.rpm (二)mysql-server-xxx.rpm (二)4.PHP裝包gmp-xxx.rpm (…

紅外感應模塊+蜂鳴器實現簡易報警(轉)

拿到了一個紅外感應模塊HC-SR501,于是就用它和蜂鳴器簡單試驗了下。主要是試驗一下這個紅外感應模塊的功能,所以代碼也寫的很隨便啦,邏輯上也欠考慮。實現基本功能:運行腳本后,感應模塊每隔一定時間檢測,如…

leetcode51. N 皇后(回溯算法)

n 皇后問題研究的是如何將 n 個皇后放置在 nn 的棋盤上,并且使皇后彼此之間不能相互攻擊。 上圖為 8 皇后問題的一種解法。 給定一個整數 n,返回所有不同的 n 皇后問題的解決方案。 每一種解法包含一個明確的 n 皇后問題的棋子放置方案,該方案…

ubuntu下python的錯誤

ubuntu python 2.7 python test.py *.py permission denied chmod x *.py 轉載于:https://www.cnblogs.com/gisalameda/p/11086624.html

kotlin半生對象_如何在Kotlin中使用Actor實現對象池

kotlin半生對象by osha1由osha1 如何在Kotlin中使用Actor實現對象池 (How to implement an Object-Pool with an Actor in Kotlin) We use object pool in jasync-sql to manage connections to the database. In this post, I will share how it is done in a performant, lo…

linux運行apktool簽名,解決Linux中使用ApkTool遇到問題

8種機械鍵盤軸體對比本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?遇到問題在Linux中使用IntelliDroid工具時,按要求配置好環境之后,始終無法成功運行該工具內部的ApkTool,導致后續的安卓靜態分析…

python 腳本學習(二)

task1: 在一個文件中,單詞之間使用空格、分號、逗號或者句號分隔,請提取全部單詞。 代碼實例: 1234567891011#!/usr/local/python27/bin/python2.7import sys import re words [] with open(sys.argv[1]) as f: for line in f: #…

2.2 Consumer API官網剖析(博主推薦)

不多說,直接上干貨! 一切來源于官網 http://kafka.apache.org/documentation/ 2.2 Consumer API 2.2、消費者API 隨著0.9.0版本,我們已經增加了一個新的Java消費者替換我們現有的基于zookeeper的高級和低級消費者。這個客戶端還是測試版的質量…

leetcode1053. 交換一次的先前排列(貪心算法)

給你一個正整數的數組 A(其中的元素不一定完全不同),請你返回可在 一次交換(交換兩數字 A[i] 和 A[j] 的位置)后得到的、按字典序排列小于 A 的最大可能排列。 如果無法這么操作,就請返回原數組。 示例 1&a…

mybatis-generator-gui如何打包成exe

快速閱讀: ? 用wix和inno setup把mybatis-generator-gui 打包成exe和安裝文件。 以后使用的時候方便,不用每次打開eclipse運行。 使用inno setup 5 和wix 3.11 基于mybatis generator開發一款界面工具, 非常容易及快速生成Mybatis的Java POJO文件及數據…

分步表單如何實現 html_HTML表單入門的分步指南

分步表單如何實現 htmlby Abhishek Jakhar通過阿比舍克賈卡(Abhishek Jakhar) HTML表單入門的分步指南 (A step-by-step guide to getting started with HTML forms) 總覽 (Overview) HTML forms are required when you want to collect some data from the person who visits…

linux網絡服務偶爾失效,判斷linux下的網絡服務是否正常啟動

# 自動判斷samba,http,named,dovecot,tomcat等服務是否正常啟動##作者:胡昌文#時間:2008-09-28#MSN:[email]hucw_rhcehotmail.com[/email]###!/bin/shSAMBA1netstat -nutlp | grep :137 | grep smbdSAMBA2netstat -nutlp | grep :138 | grep …

leetcode809. 情感豐富的文字

有時候人們會用重復寫一些字母來表示額外的感受,比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我們將相鄰字母都相同的一串字符定義為相同字母組,例如:“h”, “eee”, “ll”, “ooo”。 對于一個給定的字符串 S &#xff…

NeHe OpenGL教程 第三十課:碰撞檢測

轉自【翻譯】NeHe OpenGL 教程 前言 聲明,此 NeHe OpenGL教程系列文章由51博客yarin翻譯(2010-08-19),本博客為轉載并稍加整理與修改。對NeHe的OpenGL管線教程的編寫,以及yarn的翻譯整理表示感謝。 NeHe OpenGL第三十課…

andorid手機電腦操作

之前一直使用androidscreencast在pc上對手機進行操作,好久都沒用了,前些天再次用的時候,提演示樣例如以下: 決定還是自己寫一個吧,由于7月份要做一個小分享,打算講一些android的東西,須要在電腦上顯示手機這邊的畫面,提供一定的操作. 花了一點時間做好了,給大家截一個圖,代碼放…

struct.error: cannot convert argument to integer解決辦法

更新Python包轉載于:https://www.cnblogs.com/long5683/p/11086768.html

sphinx_Sphinx之謎:如何輕松地編寫代碼

sphinx為什么我在這里? (Why Am I Here?) You, the reader, are here because you wrote some awesome tool in Python, and you want to make it accessible and easy to use.讀者之所以在這里,是因為您使用Python編寫了一些很棒的工具,并且…

linux貪吃蛇c程序,Linux環境下C語言實現貪吃蛇游戲

Linux環境下C語言實現貪吃蛇游戲[liultest snake]$ more snake.c#include #include #include #include #include #define NUM 60struct direct //用來表示方向的{int cx;int cy;};typedef struct node //鏈表的結點{int cx;int cy;struct node *back;struct node *next;}node;v…

Java正則表達式的使用和詳解(上)

1.匹配驗證-驗證Email是否正確 public static void main(String[] args) {// 要驗證的字符串String str "servicexsoftlab.net";// 郵箱驗證規則String regEx "[a-zA-Z_]{1,}[0-9]{0,}(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";// 編譯正則表達式P…

在組策略中使用腳本為域用戶添加網絡打印機

使用腳本為用戶添加網絡打印機 如果你想讓培訓部門的用戶登錄后就能添加網絡打印機,就可以使用登錄腳本來實現。其中DCServer是域控制,MarketPC1是市場部門的計算機,韓立輝用戶是培訓部門的用戶。下面就驗證使用組策略為培訓部門的用戶添加網…