logminer作為相關(guān)的日志分析工具集成與oracle中,我們可通過該工具清楚的分析重做相關(guān)日志和歸檔日志中的所有事物變化,并且可以準(zhǔn)確的確定各種DML和DDL操作的具體時間和SCN值。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),海陽企業(yè)網(wǎng)站建設(shè),海陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,海陽網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,海陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
通過logminer我們可以實現(xiàn):
1,確定數(shù)據(jù)的邏輯損壞的時間
2,跟蹤用戶執(zhí)行的事務(wù)變化操作
3,跟蹤表的DML操作
如果我們要分析歸檔日志,我們首先修改oracle歸檔日志的模式,我們要把默認(rèn)的歸檔路徑改成我們自己的路徑:
start mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=d:\oracle' scope=spfile;
alter system set log_archive_format='arch_%t_%s_%r.trc' scope=spfile;
查看我們修改過的歸檔路徑:
archive log list;
查看歸檔日志:
select name,dest_id from v$archived_log;
如果查詢的沒有更改,我們需要重啟一下數(shù)據(jù)庫
安裝logminer,安裝logminer需要我們安裝下面的幾個包:
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql
$ORACLE_HOME/rdbms/admin/dbmslms.sql
這幾個腳本必須是sys用戶運行
@$ORACLE_HOME/rdbms/admin/dbmslm.sql
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
@$ORACLE_HOME/rdbms/admin/dbmslms.sql
添加數(shù)據(jù)字典,需要添加參數(shù)utl_file_dir,
alter system set utl_file_dir='/home/oracle/dir' scope=spfile;
添加supplement logging
首先查看
select name,supplemental_log_data_min from v$database;是否是yes
YES為打開狀態(tài),會記錄session_info,username等信息
NO為關(guān)閉狀態(tài),不會記錄sesion_info,username等信息
添加
alter database add supplemental log data;
關(guān)閉
alter database drop supplemental log data;
重啟數(shù)據(jù)庫,這樣我們剛才的兩個參數(shù)就會生效;
查看數(shù)據(jù)字典:
show parameter utl;
添加數(shù)據(jù)字典:
SQL begin
2 dbms_logmnr_d.build(
3 dictionary_filename='logminer_dict.dat',
4 dictionary_location='/home/oracle/logminer');
5 end;
6 /
PL/SQL procedure successfully completed.
或是:
execute dbms_logmnr_d.build(dictionary_filename='logminer_dict.dat',dictionary_location='/home/oracle/logminer');
創(chuàng)建登錄觸發(fā)器:
SQL create or replace trigger on_logon_tigger
2 after logon on database
3 begin
4 dbms_application_info.set_client_info(sys_context('userenv','ip_address'));
5 end;
6 /
Trigger created.
我們就可以在V$SESSION視圖的CLIENT_INFO列中看到新登錄的客戶端IP地址了。那么現(xiàn)在就可以在
添加要分析的歸檔日志文件
SQL begin
2 dbms_logmnr.add_logfile(
3 logfilename='/home/oracle/arch/arch_6_758944049_1.trc',options=dbms_logmnr.new);
4 end;
5 /
PL/SQL procedure successfully completed.
SQL begin
2 dbms_logmnr.add_logfile(
3 logfilename='/home/oracle/arch/arch_7_758944049_1.trc',
4 options=dbms_logmnr.addfile);
5 end;
6 /
PL/SQL procedure successfully completed.
切換歸檔日志:
alter system switch logfile;
開啟分析:
execute dmbs_logmnr.start_logmnr(dictfilename='/home/oracle/logminer/logminer_dict.dat');
或是:
execute dbms_logmnr.start_logmnr;
查詢歸檔日志:
SQL select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/home/oracle/arch/arch_6_758944049_1.trc
/home/oracle/arch/arch_7_758944049_1.trc
/home/oracle/arch/arch_8_758944049_1.trc
為了節(jié)約pga的空間,當(dāng)我們分析完日志后,移除不需要的日志:
SQL begin
2 dbms_logmnr.add_logfile(
3 logfilename='/home/oracle/arch/arch_7_758944049_1.trc',
4 options=dbms_logmnr.removefile);
5 end;
6 /
PL/SQL procedure successfully completed.
查詢結(jié)果在v$logmnr_contents;
查詢數(shù)據(jù)庫上面的操作
select scn,sql_redo,timestamp from v$logmnr.contents;
關(guān)閉分析
execute dbms_logmnr.stop_logmnr;
查詢的時候最好使用plsql查詢。
環(huán)境:
AIX6.1
Oracle 11g RAC
故障:
數(shù)據(jù)庫頻繁出現(xiàn)歸檔日志空間不夠,導(dǎo)致數(shù)據(jù)庫無法登陸的故障。一查發(fā)現(xiàn)原因是歸檔日志切換頻繁,操作系統(tǒng)空間不夠。
確定原因:
[aix01@oracle]/oracledf -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 0.50 0.28 44% 13674 17% /
/dev/hd2 3.00 0.67 78% 49208 23% /usr
/dev/hd9var 1.00 0.37 63% 9285 10% /var
/dev/hd3 2.00 1.03 49% 2407 1% /tmp
/dev/fwdump 1.00 0.99 2% 30 1% /var/adm/ras/platform
/dev/hd1 0.25 0.18 28% 465 2% /home
/dev/hd11admin 0.25 0.25 1% 5 1% /admin
/proc - - - - - /proc
/dev/hd10opt 0.50 0.28 44% 10241 14% /opt
/dev/livedump 0.25 0.25 1% 12 1% /var/adm/ras/livedump
/dev/oraclelv 30.00 11.29 63% 161681 6% /oracle
/dev/installlv 15.00 3.38 78% 6478 1% /install
/dev/crslv 10.00 3.35 67% 7807 1% /crs
/dev/wmsapplv 30.00 17.49 42% 15537 1% /wmprod
/dev/archivelv 29.25 29.25 1% 4 1% /arch1
/dev/backuplv 400.00 107.13 74% 306 1% /sysbackup
aix02:arch2 30.25 0.64 99% 3 1% /arch2
可以看到,/arch2里文件系統(tǒng)空間已經(jīng)達(dá)到99%,/arch2是用來存放歸檔日志的文件系統(tǒng),進(jìn)而導(dǎo)致數(shù)據(jù)庫出錯。
提出問題:
這下問題來了,/arch2的空間是30G,每天備份腳本都會自動rman備份歸檔日志,并自動清除歸檔日志文件,按照正常情況下,數(shù)據(jù)庫不可能一天產(chǎn)生這么大的歸檔日志量。
如何查詢歸檔日志都是由什么應(yīng)用產(chǎn)生的,這就是logminer的用途。
使用方法:
-- 1.指定要分析的日志文件
exec sys.dbms_logmnr.add_logfile(logfilename = '/arch2/2_825_733092736.dbf',options = dbms_logmnr.new);
-- 2.使用本地的在線數(shù)據(jù)字典分析歸檔日志
exec sys.dbms_logmnr.start_logmnr(options = sys.dbms_logmnr.dict_from_online_catalog);
-- 3.查詢分析出來的歸檔日志內(nèi)容,例如統(tǒng)計最大修改量的Schema
select seg_owner,count(*) from v$logmnr_contents group by seg_owner;
-- 4.增加別的日志文件
exec sys.dbms_logmnr.add_logfile(logfilename='/arch2/2_825_733092736.dbf');
-- 5.結(jié)束分析歸檔日志
exec sys.dbms_logmnr.end_logmnr;
下面是具體的過程:
SQL exec sys.dbms_logmnr.add_logfile(logfilename = '/arch2/2_825_733092736.dbf',options = dbms_logmnr.new);
PL/SQL procedure successfully completed
SQL exec sys.dbms_logmnr.start_logmnr(options = sys.dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed
SQL select seg_owner,count(*) from v$logmnr_contents group by seg_owner;
SEG_OWNER COUNT(*)
-------------------------------- ----------
2237
SYS 688
TMS 60
SPHSY 70
SINOSYNEW 30
SINOSY 381
WAS 4551934
7 rows selected
SQL execute dbms_logmnr.end_logmnr ;
PL/SQL procedure successfully completed
結(jié)論:
從上面查詢結(jié)果可以看出操作量最大的用戶是WAS用戶,再具體看下v$logmnr_contents可以發(fā)現(xiàn)基本修改的內(nèi)容是一致的。
與開發(fā)人員溝通后,最終確認(rèn)是一個執(zhí)行update過程存在問題,where條件未正確定位到記錄,每執(zhí)行一次都會導(dǎo)致大規(guī)模的修改數(shù)據(jù)。
小鬼ODM / ODM ODM檔= I:\ odm.dmp FROMUSER = ODM TOUSER = ODM忽略= Y
,寫忽略的數(shù)據(jù)庫對象存在錯誤,但您的數(shù)據(jù)可能會重復(fù)。不想重復(fù)的話:
1,出口,使用的查詢選項,您需要更新的數(shù)據(jù)導(dǎo)出(如果您的數(shù)據(jù)來區(qū)分是否更新輸入字段)。
2,您的計算機(jī)將數(shù)據(jù)刪除(刪除或截斷,截斷個人建議),是最新的進(jìn)口數(shù)據(jù)。
3,將你的電腦ODM的所有對象時,將自動創(chuàng)建在imp。
oracle日志查看
一.oracle日志的路徑:
登錄:sqlplus
"/as
sysdba"
查看路徑:sql
select
*
from
v$logfile;
sql
select
*
from
v$logfile;(#日志文件路徑)
二.oracle日志文件包含哪些內(nèi)容:(日志的數(shù)量可能略有不同)
control01.ctl
example01.dbf
redo02.log
sysaux01.dbf
undotbs01.dbf
control02.ctl
redo03.log
system01.dbf
users01.dbf
control03.ctl
redo01.log
shttest.dbf
temp01.dbf
三.oracle日志的查看方法:
sqlselect
*
from
v$sql
(#查看最近所作的操作)
sqlselect
*
fromv
$sqlarea(#查看最近所作的操作)
oracle
數(shù)據(jù)庫的所有更改都記錄在日志中,從目前來看,分析oracle日志的唯一方法就是使用oracle公司提供的logminer來進(jìn)行,因為原始的日志信息我們根本無法看懂,oracle8i后續(xù)版本中自帶了logminer,而logminer就是讓我們看懂日志信息的工具,通過這個工具可以:查明數(shù)據(jù)庫的邏輯更改,偵察并更正用戶的誤操作,執(zhí)行事后審計,執(zhí)行變化分析。
1、打開oracle sql developer工具,沒有此工具的可以去oracle官網(wǎng)下載安裝即可,剛剛安裝完成的是沒有記錄的,只有使用工具執(zhí)行過后才會留下記錄可以查詢。打開之后不需要連接數(shù)據(jù)庫就可以查詢到sql記錄了。
2、在二級菜單中,選擇SQL歷史記錄選項,或者按快捷鍵F8打開窗口。
3、默認(rèn)打開是會顯示在最下方的小窗口,在標(biāo)題欄雙擊鼠標(biāo)左鍵,即可最大化窗口,再次雙擊左鍵還原窗口。
4、最大化窗口之后,便于更好的查詢記錄結(jié)果,如圖所示,以往執(zhí)行的sql記錄都顯示出來了,可以在每個欄目標(biāo)題上單擊,進(jìn)行排序操作,一般可以點擊時間戳字段,按時間來排序查詢記錄。第二次點擊,可以切換順序和逆序。
5、最后一個字段是持續(xù)時間,點擊排序之后可以查詢出哪些sql語句最快,哪些sql語句執(zhí)行比較慢,需要優(yōu)先等。
6、對于一些不需要的sql記錄可以刪除的,因為記錄多了不便于查詢,沒有用的sql最好及時清除了。只需要選擇您需要刪除的記錄,然后點擊如圖所示的清除按鈕,在二次確認(rèn)彈框中選擇是,即可刪除。
7、在刪除按鈕后面就是一個搜索輸入框,在此處輸入搜索關(guān)鍵字可以模糊匹配到記錄,對于記不清的記錄,采用模糊搜索的方式查詢,效率非常高。工具會自動根據(jù)我們輸入的關(guān)鍵字進(jìn)行篩選過濾的。
顯示歸檔日志信息
1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機(jī)器要歸檔的日志序列號等信息.
2顯示日志操作模式
SELECT name,log_mode FROM v$database;
3,顯示Oracle歸歸檔日志信息.
Col name format a46
Select name, swquence#, first_change# FROM v$archived_log;
Name用于表示Oracle歸歸檔日志文件名,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ù)制到Oracle歸歸檔日志中,為了加快歸檔速度,應(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)
網(wǎng)站名稱:oracle如何解析日志,oracle日志怎么看
網(wǎng)站路徑:http://jinyejixie.com/article32/hojjsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、企業(yè)建站、面包屑導(dǎo)航、全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計公司、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)