必須配置Utl_file_dir初始化參數(shù),并保證日志路徑與Utl_file_dir路徑一致或者是其中一個
為曲麻萊等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及曲麻萊網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、曲麻萊網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2)
IS
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
BEGIN
批量執(zhí)行sql文件并輸出執(zhí)行日志
1、建立betchinsert.bat文件。內(nèi)容:sqlplus username/password@服務(wù)名 @BETCH.SQL SQLINSERT.log exit
2、建立betah.sql文件。內(nèi)容:
@@nkgis.sql\AE_USERS.sql
@@nkgis.sql\AE_ROLES.sql
@@nkgis.sql\AE_MENUS.sql
可以寫多個sql文件,注意路徑要正確。在這里的nkgis.sql是文件夾名
3、建立相應(yīng)的sql文件,如AE_USERS.sql
4、執(zhí)行betchinsert.bat就可以執(zhí)行所有的sql文件。并且會在betchinsert.bat文件的同目錄中生成SQLINSER.log文件。
執(zhí)行結(jié)束后會自動退出.
深入分析Oracle數(shù)據(jù)庫日志文件
作為Oracle DBA,我們有時候需要追蹤數(shù)據(jù)誤刪除或用戶的惡意操作情況,此時我們不僅需要查出執(zhí)行這些操作的數(shù)據(jù)庫賬號,還需要知道操作是由哪臺客戶端(IP地址等)發(fā)出的。針對這些問題,一個最有效實用而又低成本的方法就是分析Oracle數(shù)據(jù)庫的日志文件。本文將就Oracle日志分析技術(shù)做深入探討。
一、如何分析即LogMiner解釋
從目前來看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner來進(jìn)行, Oracle數(shù)據(jù)庫的所有更改都記錄在日志中,但是原始的日志信息我們根本無法看懂,而LogMiner就是讓我們看懂日志信息的工具。從這一點上看,它和tkprof差不多,一個是用來分析日志信息,一個則是格式化跟蹤文件。通過對日志的分析我們可以實現(xiàn)下面的目的:
1、查明數(shù)據(jù)庫的邏輯更改;
2、偵察并更正用戶的誤操作;
3、執(zhí)行事后審計;
4、執(zhí)行變化分析。
不僅如此,日志中記錄的信息還包括:數(shù)據(jù)庫的更改歷史、更改類型(INSERT、UPDATE、DELETE、DDL等)、更改對應(yīng)的SCN號、以及執(zhí)行這些操作的用戶信息等,LogMiner在分析日志時,將重構(gòu)等價的SQL語句和UNDO語句(分別記錄在V$LOGMNR_CONTENTS視圖的SQL_REDO和SQL_UNDO中)。這里需要注意的是等價語句,而并非原始SQL語句,例如:我們最初執(zhí)行的是delete a where c1 cyx;,而LogMiner重構(gòu)的是等價的6條DELETE語句。所以我們應(yīng)該意識到V$LOGMNR_CONTENTS視圖中顯示的并非是原版的現(xiàn)實,從數(shù)據(jù)庫角度來講這是很容易理解的,它記錄的是元操作,因為同樣是delete a where c1 cyx;語句,在不同的環(huán)境中,實際刪除的記錄數(shù)可能各不相同,因此記錄這樣的語句實際上并沒有什么實際意義,LogMiner重構(gòu)的是在實際情況下轉(zhuǎn)化成元操作的多個單條語句。
另外由于Oracle重做日志中記錄的并非原始的對象(如表以及其中的列)名稱,而只是它們在Oracle數(shù)據(jù)庫中的內(nèi)部編號(對于表來說是它們在數(shù)據(jù)庫中的對象ID,而對于表中的列來說,對應(yīng)的則是該列在表中的排列序號:COL 1, COL 2 等),因此為了使LogMiner重構(gòu)出的SQL語句易于識別,我們需要將這些編號轉(zhuǎn)化成相應(yīng)的名稱,這就需要用到數(shù)據(jù)字典(也就說LogMiner本身是可以不用數(shù)據(jù)字典的,詳見下面的分析過程),LogMiner利用DBMS_LOGMNR_D.BUILD()過程來提取數(shù)據(jù)字典信息。
LogMiner包含兩個PL/SQL包和幾個視圖:
1、dbms_logmnr_d包,這個包只包括一個用于提取數(shù)據(jù)字典信息的過程,即dbms_logmnr_d.build()過程。
2、dbms_logmnr包,它有三個過程:
add_logfile(name varchar2, options number) - 用來添加/刪除用于分析的日志文件;
start_logmnr(start_scn number, end_scn number, start_time number,end_time number, dictfilename varchar2, options number) - 用來開啟日志分析,同時確定分析的時間/SCN窗口以及確認(rèn)是否使用提取出來的數(shù)據(jù)字典信息。
end_logmnr() - 用來終止分析會話,它將回收LogMiner所占用的內(nèi)存。
與LogMiner相關(guān)的數(shù)據(jù)字典。
1、v$logmnr_dictionary,LogMiner可能使用的數(shù)據(jù)字典信息,因logmnr可以有多個字典文件,該視圖用于顯示這方面信息。
2、v$logmnr_parameters,當(dāng)前LogMiner所設(shè)定的參數(shù)信息。
3、v$logmnr_logs,當(dāng)前用于分析的日志列表。
4、v$logmnr_contents,日志分析結(jié)果。
二、Oracle9i LogMiner的增強(qiáng):
1、支持更多數(shù)據(jù)/存儲類型:鏈接/遷移行、CLUSTER表操作、DIRECT PATH插入以及DDL操作。在V$LOGMNR_CONTENTS的SQL_REDO中可以看到DDL操作的原句(CREATE USER除外,其中的密碼將以加密的形式出現(xiàn),而不是原始密碼)。如果TX_AUDITING初始化參數(shù)設(shè)為TRUE,則所有操作的數(shù)據(jù)庫賬號將被記錄。
2、提取和使用數(shù)據(jù)字典的選項:現(xiàn)在數(shù)據(jù)字典不僅可以提取到一個外部文件中,還可以直接提取到重做日志流中,它在日志流中提供了操作當(dāng)時的數(shù)據(jù)字典快照,這樣就可以實現(xiàn)離線分析。
3、允許對DML操作按事務(wù)進(jìn)行分組:可以在START_LOGMNR()中設(shè)置COMMITTED_DATA_ONLY選項,實現(xiàn)對DML操作的分組,這樣將按SCN的順序返回已經(jīng)提交的事務(wù)。
4、支持SCHEMA的變化:在數(shù)據(jù)庫打開的狀態(tài)下,如果使用了LogMiner的DDL_DICT_TRACKING選項,Oracle9i的LogMiner將自動對比最初的日志流和當(dāng)前系統(tǒng)的數(shù)據(jù)字典,并返回正確的DDL語句,并且會自動偵察并標(biāo)記當(dāng)前數(shù)據(jù)字典和最初日志流之間的差別,這樣即使最初日志流中所涉及的表已經(jīng)被更改或者根本已經(jīng)不存在,LogMiner同樣會返回正確的DDL語句。
5、在日志中記錄更多列信息的能力:例如對于UPDATE操作不僅會記錄被更新行的情況,還可以捕捉更多前影信息。
6、支持基于數(shù)值的查詢:Oracle9i LogMiner在支持原有基于元數(shù)據(jù)(操作、對象等)查詢的基礎(chǔ)上,開始支持基于實際涉及到的數(shù)據(jù)的查詢。例如涉及一個工資表,現(xiàn)在我們可以很容易地查出員工工資由1000變成2000的原始更新語句,而在之前我們只能選出所有的更新語句。
三、Oracle8i/9i的日志分析過程
LogMiner只要在實例起來的情況下都可以運行,LogMiner使用一個字典文件來實現(xiàn)Oracle內(nèi)部對象名稱的轉(zhuǎn)換,如果沒有這個字典文件,則直接顯示內(nèi)部對象編號,例如我們執(zhí)行下面的語句:
delete from "C"."A" where "C1" = ‘gototop’ and ROWID = AAABg1AAFAAABQaAAH;
如果沒有字典文件,LogMiner分析出來的結(jié)果將是:
delete from "UNKNOWN"."OBJ# 6197" where "COL 1" = HEXTORAW(d6a7d4ae) and ROWID
= AAABg1AAFAAABQaAAH;
oracle 歸檔日志
歸檔日志(Archive Log)是非活動的重做日志備份.通過使用歸檔日志,可以保留所有重做歷史記錄,當(dāng)數(shù)據(jù)庫處于ARCHIVELOG模式并進(jìn)行日志切換式,后臺進(jìn)程ARCH會將重做日志的內(nèi)容保存到歸檔日志中.當(dāng)數(shù)據(jù)庫出現(xiàn)介質(zhì)失敗時,使用數(shù)據(jù)文件備份,歸檔日志和重做日志可以完全恢復(fù)數(shù)據(jù)庫.
日志操作模式:ARCHIVELOG NOARCHIVELOG
1,改變?nèi)罩静僮髂J?
檢查當(dāng)前日志操作模式
SELECT log_mode from v$database;
關(guān)閉數(shù)據(jù)庫,然后裝載數(shù)據(jù)庫
SHUTDOWN IMMEDIATE
STARTUP MOUNT
改變?nèi)罩静僮髂J?然后打開數(shù)據(jù)庫
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
2,執(zhí)行手工歸檔
從oracle database 10g開始,當(dāng)將日志操作模式轉(zhuǎn)變未ARCHIVELOG模式時,oracle會自動啟動ARCH進(jìn)程.如果要使用手工歸檔.那么在改變?nèi)罩静僮髂J綍r必須使用命令A(yù)LTER DATABASE ARCHIVELOG MANUAL.
需要注意,使用手工歸檔方式,數(shù)據(jù)庫管理員必須手工執(zhí)行歸檔命令.如果沒有執(zhí)行手工歸檔命令,日志組的原有內(nèi)容將不能被覆蓋.ALTER DATABASE ARCHIVELOG MANUAL 命令是為了與先前的版本兼容而保留的,.將來的oracle版本會淘汰該命令,使用手工歸檔方式是,數(shù)據(jù)庫管理員可以執(zhí)行以下命令歸檔重做日志:
ALTER SYSTEM ARCHIVELOG ALL;
3,配置歸檔進(jìn)程
初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始啟動的最大歸檔進(jìn)程個數(shù),當(dāng)將數(shù)據(jù)庫轉(zhuǎn)變?yōu)锳RCHIVELOG模式時,默認(rèn)情況下oracle會自動啟動兩個歸檔進(jìn)程.通過改變初始化參數(shù)LOG_ARCHIVE_MAX_PROCESS的值,可以動態(tài)地增加或降低歸檔進(jìn)程的個數(shù):
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;配置歸檔位置和文件格式
當(dāng)數(shù)據(jù)庫處于ARCHIVELOG模式時,如果進(jìn)行日志切換,后臺進(jìn)程將自動生成歸檔日志,歸檔日志的默認(rèn)位置為%oracle_home%rdbms,在oracle database 10g中,歸檔日志的默認(rèn)文件格式為ARC%S_%R.%T.為了改變歸檔日志的位置和名稱格式,必須改變相應(yīng)的初始化參數(shù),1,初始化參數(shù)LOG_ARCHIVE_FORMAT用于指定歸檔日志的文件名格式,設(shè)置該初始化參數(shù)時,可以指定以下匹配符:
%s: 日志序列號:
%S: 日志序列號(帶有前導(dǎo)0)
%t: 重做線程編號.
%T: 重做線程編號(帶有前導(dǎo)0)
%a: 活動ID號
%d: 數(shù)據(jù)庫ID號
%r RESETLOGS的ID值.
從10g開始,配置歸檔日志文件格式時,必須帶有%s,%t和%r匹配符,配置了歸檔文件格式后,必須重啟數(shù)據(jù)庫.
2,使用LOG_ARCHIVE_DEST配置歸檔位置
如果不使用備用數(shù)據(jù)庫,只需要將歸檔日志存放到本地目錄.配置本地歸檔位置可以使用初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一個參數(shù)用于設(shè)置第一個歸檔位置,第二個參數(shù)用于指定第二個歸檔位置.
ALTER SYSTEM SET log_archive_dest='d:demoarchive1';ALTER SYSTEM SET log_archive_duplex_dest='d:demoarchive2';3,使用LOG_ARCHIVE_DEST_n配置多個歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n用于指定多個歸檔位置,該參數(shù)最多可以指定10個歸檔位置.通過使用初始化參數(shù)LOG_ARCHIVE_DEST_n,不僅可以配置本地歸檔位置,還可以配置遠(yuǎn)程歸檔位置.
如果既要在主節(jié)點上生成歸檔日志,又要將歸檔日志傳遞到備用節(jié)點,那么必須使用參數(shù)LOG_ARCHIVE_DEST_n.該參數(shù)與LOG_ARCHIVE_DEST具有如下區(qū)別;初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置本地歸檔位置和遠(yuǎn)程歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n可以配置多達(dá)10個歸檔位置,而初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置兩個歸檔位置.
初始化參數(shù)LOG_ARCHIVE_DEST_n 不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用.
因為初始化參數(shù)LOG_ARCHIVE_DEST_n不能與初始化參數(shù)LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同時使用,所以必須禁用初始化參數(shù)LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.當(dāng)使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置本地歸檔位置時,需要指定LOCALTION選項.當(dāng)配置遠(yuǎn)程歸檔位置時,需要指定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';配置遠(yuǎn)程歸檔位置時,SERVICE選項需要指定遠(yuǎn)程數(shù)據(jù)庫的網(wǎng)絡(luò)服務(wù)名(在tnsnames.ora文件中配置)4,使用LOG_ARCHIVE_DEST_n選項
使用初始化參數(shù)LOG_ARCHIVE_DEST_n配置歸檔位置時,可以在歸檔位置上指定OPTIONAL或MANDATORY選項.指定MANDATORY選項時,可以設(shè)置REOPEN屬性.
OPTIONAL:該選項是默認(rèn)選項.使用該選項時,無論歸檔是否成功,都可以覆蓋重做日志.
MANDATORY:強(qiáng)制歸檔.使用該選項時,只有在歸檔成功之后,重做日志才能被覆蓋.
REOPEN:該屬性用于指定重新歸檔的時間間隔,默認(rèn)值為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,控制本地歸檔成功的最小個數(shù).
使用初始化參數(shù)LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地歸檔的最小成功個數(shù)Alter system set log_archive_min_succeed_dest=2;6,使用初始化參數(shù)LOG_ARCHIVE_DEST_STATE_n控制歸檔位置的可用性.設(shè)置該參數(shù)為ENABLE(默認(rèn)值),表示會激活相應(yīng)的歸檔位置;設(shè)置該參數(shù)為DEFER,表示禁用相應(yīng)歸檔位置.當(dāng)歸檔日志所在磁盤損壞或填滿時,DBA需要暫時禁用該歸檔位置.
Alter system set log_archive_dest_state_3=defer;(禁用)Alter system set log_archive_dest_state_3=enable;(啟用)顯示歸檔日志信息
1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機(jī)器要歸檔的日志序列號等信息.
2顯示日志操作模式
SELECT name,log_mode FROM v$database;
3,顯示歸檔日志信息.
Col name format a46
Select name, swquence#, first_change# FROM v$archived_log;Name用于表示歸檔日志文件名,sequence#用于表示歸檔日志對應(yīng)的日志序列號,firs_change#用于標(biāo)識歸檔日志的起始SCN值.
4、執(zhí)行介質(zhì)恢復(fù)時,需要使用歸檔日志文件,此四必須準(zhǔn)確定位歸檔日志的存放位置.通過查詢動態(tài)性能視圖v$archive_dest可以取得歸檔日志所在目錄.
SELECT destination FROM v$archive dest;
5,顯示日志歷史信息
SELECT * FROM v$loghist;
THREAD#用于標(biāo)識重做線程號,SEQUNCE#用于標(biāo)識日志序列號,FIRST_CHANGE#用于標(biāo)識日志序列號對應(yīng)的起始SCN值,FIRST_TIME用于標(biāo)識起始SCN的發(fā)生時間.SWICTH_CHANGE#用于標(biāo)識日志切換的SCN值.
6.顯示歸檔進(jìn)程信息.
進(jìn)行日志切換時,ARCH進(jìn)程會自動將重做日志內(nèi)容復(fù)制到歸檔日志中,為了加快歸檔速度,應(yīng)該啟用多個ARCH進(jìn)程.通過查詢動態(tài)性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進(jìn)程的信息!
SELECT * FROM v$archive_processes;
Porcess用于標(biāo)識ARCH進(jìn)程的編號,status用于標(biāo)識ARCH進(jìn)程的狀態(tài)(ACTIVE:活動,STOPPED:未啟動),log_sequence用于標(biāo)識正在進(jìn)行歸檔的日志序列號,state用于標(biāo)識ARCH進(jìn)程的工作狀態(tài)==========================================用Oracle歸檔日志進(jìn)行恢復(fù)的方法
用Oracle歸檔日志進(jìn)行恢復(fù)的方法
聯(lián)機(jī)重演日志沒有丟失應(yīng)使用完成恢復(fù),如聯(lián)機(jī)重演日志損壞,而又沒有備份,就只能進(jìn)行不完全恢復(fù)。
一、完全恢復(fù):
1.使用命令“svrmgrl”調(diào)用行方式服務(wù)器管理;2.輸入命令“connect internal”,然后輸入命令“startup mount’;3.輸入命令“recover database;”
4.按下ENTER,接受默認(rèn)值。
5.然后輸入命令“alter database open;”完成數(shù)據(jù)庫恢復(fù)。
二、不完全恢復(fù)
警告:
應(yīng)用不完成恢復(fù)前,必須將數(shù)據(jù)庫做一次完全冷備份,因為應(yīng)用不完全恢復(fù)后,聯(lián)機(jī)重演日志將重置,以前的所有日志不可用。
如果恢復(fù)不成功,數(shù)據(jù)庫就不能使用了。再次強(qiáng)調(diào),做完全冷備份后再應(yīng)用不完全恢復(fù)。
1).基于變化的恢復(fù)(change-based recovery)要執(zhí)行基于變化的恢復(fù),需要知道丟失日志之前的系統(tǒng)寫入歸檔重演日志的最大的變化號(SCN),然后可以啟動恢復(fù)語句恢復(fù)數(shù)據(jù)庫直到改變scn_number,其中比scn_number是寫到已歸檔重演日志文件順序號386的SCN(即,小于丟失日志順序號387的SCN)??梢詮腣$log_history視圖中得到SCN信息。
select first_change# from v$log_history where sequence#=387;其中387為最后一個有效的日志文件號加1,該例是查找386.
知道了SCN后,使用下述步驟完成恢復(fù)
1.使用命令“svrmgrl”調(diào)用行方式服務(wù)器管理;2.輸入命令“connect internal”,然后輸入命令“startup mount’;3.輸入命令“recover database until change 9999;”
4.在回答Oracle第一個歸檔重演日志建議信息時,輸入“auto”,Oracle在找到第387號重演日志之前停止恢復(fù)。
5.用命令“alter database open resetlogs;”打開數(shù)據(jù)庫。(應(yīng)用該命令前請確認(rèn)數(shù)據(jù)庫已備份,如打開失敗,日志將不可用)2).基于停止的恢復(fù)(cancel-based recovery)
1.使用命令“svrmgrl”調(diào)用行方式服務(wù)器管理;2.輸入命令“connect internal”,然后輸入命令“startup mount’;3.輸入命令“recover database until cancel;”,Oracle提示需要的第一個歸檔重演日志文件名.按下ENTER鍵接受缺省文件名,并且—路ENTER直到詢問順序號387的日志。輸入“cancel”,停止恢復(fù)操作。
4.用命令“alter database open resetlogs;”打開數(shù)據(jù)庫。(應(yīng)用該命令前請確認(rèn)數(shù)據(jù)庫已備份,如打開失敗,日志將不可用)3).基于時間的恢復(fù)(time-based recovery)
為使用基于時間的恢復(fù),必須知道記錄在V$log_history歸檔重演日志序號387(丟失重演日志)的時間,通過執(zhí)行查詢語句“select time from v$log_history where sequence#=387;”得到。本例得到的時間是:2002-06-23 14:42:04現(xiàn)在開始實施恢復(fù)。
1.使用命令“svrmgrl”調(diào)用行方式服務(wù)器管理;2.輸入命令“connect internal”,然后輸入命令“startup mount’;3.輸入命令“recover database until time '2002/06/23 14:42:04';”,Oracle提示需要的第一個歸檔重演日志文件名,輸入“auto”,Oracle恢復(fù)歸檔重演日志直到序號為387的日志,停止恢復(fù)操作。
4.用命令“alter database open resetlogs;”打開數(shù)據(jù)庫。(應(yīng)用該命令前請確認(rèn)已數(shù)據(jù)庫已備份,如打開失敗,日志將不可用)提示: 使用基于時間的恢復(fù),時間的格式是YYYY/MM/DD HH24:MI:SS,并且用單引號括起。
附:如何啟用Oracle的歸檔方式
1.參照以下內(nèi)容編輯init.ora文件:
log_archive_start = true
log_archive_dest_1 = " LOCATION=D:\Oracle\oradata\ORCL\archive "og_archive_format = %%ORACLE_SID%%T%TS%S.ARC2.關(guān)閉數(shù)據(jù)庫
svrmgrl connect internal
svrmgrl shutdown normal
3.然后啟動實例并安裝該數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。
svrmgrl startup mount
4.接著,發(fā)布下列更改數(shù)據(jù)庫的命令。
Svrmgrl alter database archivelog;
5.現(xiàn)在,數(shù)據(jù)庫已經(jīng)更改為歸檔方式,您可以打開數(shù)據(jù)庫。
svrmgrl alter database open;
提示:也可以使用DBA studio工具啟用數(shù)據(jù)庫的歸檔方式,操作很簡單=============================================================ORACLE歸檔模式的設(shè)置
在ORACLE 數(shù)據(jù)庫的開發(fā)環(huán)境和測試環(huán)境中,數(shù)據(jù)庫的日志模式和自動歸檔模式一般都是不設(shè)置的,這樣有利于系統(tǒng)應(yīng)用的調(diào)整,也免的生成大量的歸檔日志文件將磁盤空間大量的消耗。但在系統(tǒng)上線,成為生產(chǎn)環(huán)境時,將其設(shè)置為日志模式并自動歸檔就相當(dāng)重要了,因為,這是保證系統(tǒng)的安全性,有效預(yù)防災(zāi)難的重要措施。這樣,通過定時備份數(shù)據(jù)庫和在兩次備份間隔之間的日志文件,可以有效的恢復(fù)這段時間的任何時間點的數(shù)據(jù),可以在很多時候挽回或最大可能的減少數(shù)據(jù)丟失。
一、 要使OARCLE 數(shù)據(jù)庫進(jìn)行日志的自動歸檔,需要做兩方面的事情;1.是數(shù)據(jù)庫日志模式的設(shè)置(可為Archive Mode 和No Archive Mode);2.就是自動歸檔模式設(shè)置(Automatic archival,可為Enabled 和Disabled)。
二、 如何查看數(shù)據(jù)庫的現(xiàn)行日志和自動歸檔模式的設(shè)置可用archive log list 命令來查看。
運行在日志自動歸檔模式下的數(shù)據(jù)庫系統(tǒng)查看結(jié)果如下(一般是生產(chǎn)環(huán)境):
SQL archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /backup/archivelog
Oldest online log sequence 2131
Next log sequence to archive 2133
Current log sequence 2133
沒有啟動數(shù)據(jù)庫日志模式和自動歸檔的數(shù)據(jù)庫系統(tǒng)查看結(jié)果如下(一般是測試環(huán)境):
SQL archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/8.1.7/dbs/archOldest online log sequence 194
Current log sequence 196
三. 數(shù)據(jù)庫日志模式的設(shè)置
在創(chuàng)建數(shù)據(jù)庫時,可以在CREATE DATABASE 語句中指定數(shù)據(jù)庫的日志模式。假如沒有指明,則缺省為NOARCHIVELOG 模式。由于如果在創(chuàng)建數(shù)據(jù)庫時指明是Archive Mode的話,會增加約20%的創(chuàng)建時間,而在以后啟動INSTANCE 時再設(shè)置的話,一般只用去幾秒的時間,所以一般在創(chuàng)建數(shù)據(jù)庫時是不設(shè)置為ARCHIVE MODE 的。
將數(shù)據(jù)庫的日志模式設(shè)置切換(Archive Mode 和No Archive Mode 之間的切換)的步驟和操作如下:
1. 關(guān)閉運行的數(shù)據(jù)庫實例
SQL shutdown
在進(jìn)行日志模式切換之前,必須將運行的數(shù)據(jù)庫正常關(guān)閉。
2. 備份數(shù)據(jù)庫
該備份跟以后產(chǎn)生的日志一起用于將來的災(zāi)難恢復(fù)(很重要,如要改為歸檔日志模式,沒有這個數(shù)據(jù)庫備份,僅有日志文件是無法從該時間點恢復(fù)的)。
3. 啟動數(shù)據(jù)庫實例到mount 狀態(tài),但不要打開。
SQL startup mount
4. 切換數(shù)據(jù)庫日志模式。
SQL alter database archivelog;(設(shè)置數(shù)據(jù)庫為歸檔日志模式)或SQL alter database noarchivelog;(設(shè)置數(shù)據(jù)庫為非歸檔日志模式)5. 打開數(shù)據(jù)庫
SQL alter database open;
6. 確認(rèn)數(shù)據(jù)庫現(xiàn)在處于歸檔日志模式。
SQL archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination for example: $ORACLE_HOME/dbs/archOldest on-line log sequence 275
Next log sequence 277
Current log sequence 278
7. 將這個時間點的redo logs 歸檔
SQL archive log all;
8. 確認(rèn)新產(chǎn)生的日志文件已在相應(yīng)的歸檔目錄下面。
四. 自動歸檔模式設(shè)置(Automatic archival,可為Enabled 和Disabled)。
在該模式下,數(shù)據(jù)庫啟動一個arch 進(jìn)程,專門負(fù)責(zé)將redo logs 寫到系統(tǒng)歸檔設(shè)備的相應(yīng)目錄下。在數(shù)據(jù)庫的參數(shù)文件中設(shè)置參數(shù)(一般是在$ORACLE_HOME/dbs/init*.ora 文件中):
LOG_ARCHIVE_START=
LOG_ARCHIVE_DEST=
LOG_ARCHIVE_FORMAT=
LOG_ARCHIVE_START: