oracle日志查看
在通遼等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站制作、成都網站制作 網站設計制作定制網站建設,公司網站建設,企業(yè)網站建設,成都品牌網站建設,營銷型網站建設,外貿網站制作,通遼網站建設費用合理。
一.oracle日志的路徑:
登錄:sqlplus
"/as
sysdba"
查看路徑:sql
select
*
from
v$logfile;
sql
select
*
from
v$logfile;(#日志文件路徑)
二.oracle日志文件包含哪些內容:(日志的數量可能略有不同)
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
數據庫的所有更改都記錄在日志中,從目前來看,分析oracle日志的唯一方法就是使用oracle公司提供的logminer來進行,因為原始的日志信息我們根本無法看懂,oracle8i后續(xù)版本中自帶了logminer,而logminer就是讓我們看懂日志信息的工具,通過這個工具可以:查明數據庫的邏輯更改,偵察并更正用戶的誤操作,執(zhí)行事后審計,執(zhí)行變化分析。
Oracle日志文件查看方法:
1、以sysdba權限用戶登錄數據庫。
2、執(zhí)行sql語句:select*fromv$logfile;
3、結果顯示即為日志路徑:
4、另外還有其他的操作日志可用以下兩個sql語句查詢:
select*fromv$sql;--(#查看最近所作的操作)select*fromv$sqlarea;--(#查看最近所作的操作)
Oracle日志的查看方法:
SQLselect*fromv$sql(#查看最近所作的操作)
SQLselect*fromv$sqlarea(#查看最近所作的操作)
Oracle數據庫的所有更改都記錄在日志中,從目前來看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner來進行,因為原始的日志信息我們根本無法看懂,Oracle8i后續(xù)版本中自帶了LogMiner,而LogMiner就是讓我們看懂日志信息的工具,通過這個工具可以:查明數據庫的邏輯更改,偵察并更正用戶的誤操作,執(zhí)行事后審計,執(zhí)行變化分析。
Oracle數據庫診斷文件(日志)查看
Diagnostic File(診斷文件)
1:診斷文件的作用
Diagnostic files :
包含了后臺遇見重大事件的信息。
被用于解析問題,
被用于日常管理日志文件。
2:診斷文件日志的分類
分為兩類:
1: alterSID.log
-----background trace files (后臺進程跟蹤文件)
2: trace files ---
-----user trace file (用戶trace 文件)
1:對于Background trace files文件的命名:
命名方式: SID_processname_PID.trc 對應解釋 SID_進程名_進程號.trc
2: 對于user trace files 的文件命名為:
SID_ora_PID.trc 解釋: SID_ora_進程號.trc
3:對于 alertSID.log 說明:
這個文件是為了記錄: 1:記錄一些操作命令
2:記錄主要事件的結果
3:以及日常的操作信息
4:被用于診斷數據庫錯誤
每一個entry 都有一個time stamp(時間戳)和它關聯
該文件必須被ORACLE DBA管理
這個文件的位置在: BACKGROUND_DUMP_DEST
通過 show parameter dump 查看這個文件的位置:
這個文件中也包含數據庫的啟動信息相當于pfile或者spfile的內容。
用管理員登錄:
2:下面是實戰(zhàn)操作:
首先用sysdba登錄后執(zhí)行:
[sql]
SQL show parameter dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\trace
core_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\cdump
max_dump_file_size string unlimited
shadow_core_dump string none
user_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\trace
可以看到這些文件的路徑信息。
根據顯式的信息我找到我的文件位置:
目錄結構如下:
下面說一下如何才能記錄信息到這些日志文件,需要一些開關,如果不開,記錄的只是
一點點信息而已:
兩種方式 能夠讓用戶tracing
1:session 級別的:
使用如下命令:
ALTER SESSSION SET SQL_TRACE = TRUE
第二種是執(zhí)行如下存儲過程:
dbms_system.SET_SQL_TRACE_IN_SESSION
第二個方式是 instance級別的:
設置初始化參數: SQL_TRACE = TRUE
一般采用session級別的。因為設置instance級別的容易造成log文件過大;
可以通過alterSID.log文件中的信息制作pfile 或者spfile文件啟動
數據庫。
下面采用session級別的修改sql_trace為true即可在user_dump_dest中對應文件中看到相應的信息。
[sql]
SQL conn /as sysdba
已連接。
SQL alter session set sql_trace = true;
會話已更改。
執(zhí)行過后:查看
orcl_ora_7188.trc文件信息 PS:如果不知道哪個文件就把這個目錄下的全部刪除,再執(zhí)行sql就會看到生成的文件:
查看這個文件信息如下:
很詳細的執(zhí)行信息:
比如一個語句為:select * from dual
這個文件中會生成如下信息:
[plain]
*** 2013-06-13 22:58:20.776
=====================
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=9184375464 hv=942515969 ad='232363f8' sqlid='a5ks9fhw2v9s1'
select * from dual
END OF STMT
PARSE #1:c=0,e=32,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184375458
EXEC #1:c=0,e=50,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184376205
FETCH #1:c=0,e=109,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,tim=9184376423
STAT #1 id=1 cnt=1 pid=0 pos=1 obj=115 op='TABLE ACCESS FULL DUAL (cr=3 pr=0 pw=0 time=0 us cost=2 size=2 card=1)'
FETCH #1:c=0,e=2,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=9184376893
是對這個sql的執(zhí)行的詳細解讀分析
下面貼上今天的部分執(zhí)行的信息:
[plain]
*** 2013-06-13 22:58:20.776
=====================
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=9184375464 hv=942515969 ad='232363f8' sqlid='a5ks9fhw2v9s1'
select * from dual
END OF STMT
PARSE #1:c=0,e=32,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184375458
EXEC #1:c=0,e=50,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184376205
FETCH #1:c=0,e=109,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,tim=9184376423
STAT #1 id=1 cnt=1 pid=0 pos=1 obj=115 op='TABLE ACCESS FULL DUAL (cr=3 pr=0 pw=0 time=0 us cost=2 size=2 card=1)'
FETCH #1:c=0,e=2,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=9184376893
*** 2013-06-13 23:15:15.474
=====================
PARSING IN CURSOR #1 len=289 dep=0 uid=0 oct=3 lid=0 tim=10199053291 hv=2462394820 ad='232017e0' sqlid='7cfz5wy9caaf4'
SELECT NAME
NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',
6,'big integer', 'unknown') TYPE,DISPLAY_VALUE
VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE
UPPER(:NMBIND_SHOW_OBJ) ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM
END OF STMT
PARSE #1:c=0,e=438,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=10199053285
=====================
PARSING IN CURSOR #2 len=210 dep=1 uid=0 oct=3 lid=0 tim=10199056088 hv=864012087 ad='29162590' sqlid='96g93hntrzjtr'
select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt,
timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival,
density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and
intcol#=:2
END OF STMT
PARSE #2:c=0,e=568,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=3,tim=10199056084
EXEC #2:c=0,e=1024,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=3,tim=10199057412
FETCH #2:c=0,e=30,p=0,cr=2,cu=0,mis=0,r=0,dep=1,og=3,tim=10199057533
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=411 op='TABLE ACCESS BY INDEX ROWID HIST_HEAD$ (cr=2 pr=0 pw=0 time=0 us)'
STAT #2 id=2 cnt=0 pid=1 pos=1 obj=413 op='INDEX RANGE SCAN I_HH_OBJ#_INTCOL# (cr=2 pr=0 pw=0 time=0 us)'
=====================
PARSING IN CURSOR #2 len=210 dep=1 uid=0 oct=3 lid=0 tim=10199057848 hv=864012087 ad='29162590' sqlid='96g93hntrzjtr'
select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt,
timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival,
density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and
intcol#=:2
END OF STMT
EXEC #2:c=0,e=25,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=3,tim=10199057844
FETCH #2:c=0,e=13,p=0,cr=2,cu=0,mis=0,r=0,dep=1,og=3,tim=10199058128
EXEC #1:c=0,e=7034,p=0,cr=4,cu=0,mis=1,r=0,dep=0,og=1,tim=10199060756
FETCH #1:c=15600,e=13882,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=10199075783
FETCH #1:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=5,dep=0,og=1,tim=10199076326
STAT #1 id=1 cnt=6 pid=0 pos=1 obj=0 op='SORT ORDER BY (cr=0 pr=0 pw=0 time=0 us cost=2 size=2115 card=1)'
STAT #1 id=2 cnt=6 pid=1 pos=1 obj=0 op='COUNT (cr=0 pr=0 pw=0 time=8 us)'
STAT #1 id=3 cnt=6 pid=2 pos=1 obj=0 op='HASH JOIN (cr=0 pr=0 pw=0 time=6 us cost=1 size=2115 card=1)'
STAT #1 id=4 cnt=35 pid=3 pos=1 obj=0 op='FIXED TABLE FULL X$KSPPI (cr=0 pr=0 pw=0 time=70 us cost=0 size=81 card=1)'
STAT #1 id=5 cnt=1915 pid=3 pos=2 obj=0 op='FIXED TABLE FULL X$KSPPCV (cr=0 pr=0 pw=0 time=19 us cost=0 size=203400 card=100)'
關于alter_SID.log中的內容如下: 今天的:
注意這個文件中包含Oracle啟動的參數信息:可以利用這些信息配置spfile或者pfile文件嘗試用這個配置的文件啟動數據庫也可以的
[plain]
Thu Jun 13 22:13:43 2013
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as D:\app\topwqp\product\11.1.0\db_1\RDBMS
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 11.1.0.6.0.
Using parameter settings in server-side spfile D:\APP\TOPWQP\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEORCL.ORA
System parameters with non-default values:
processes = 150
memory_target = 412M
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL01.CTL"
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL02.CTL"
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL03.CTL"
db_block_size = 8192
compatible = "11.1.0.0.0"
db_recovery_file_dest = "D:\app\topwqp\flash_recovery_area"
db_recovery_file_dest_size= 2G
fast_start_mttr_target = 0
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
audit_file_dest = "D:\APP\TOPWQP\ADMIN\ORCL\ADUMP"
audit_trail = "DB"
db_name = "orcl"
open_cursors = 300
diagnostic_dest = "D:\APP\TOPWQP"
Thu Jun 13 22:13:46 2013
PMON started with pid=2, OS id=1888
Thu Jun 13 22:13:46 2013
VKTM started with pid=3, OS id=4296 at elevated priority
Thu Jun 13 22:13:46 2013
DIAG started with pid=4, OS id=6804
VKTM running at (20)ms precision
Thu Jun 13 22:13:46 2013
1、因為oracle運行在Linux系統(tǒng)下,首先,要連接Linux系統(tǒng)。
2、切換到oracle安裝用戶下。 我的用戶是 oracle。
3、運行oracle的環(huán)境變量,在oracle 的根目錄下面,運行 soruce .bash_prfile 命令, 以便 ? ? ? ?輸入相關命令。
4、運行命令: cd $ORACLE_HOME 進入oracle的安裝目錄。
5、在此輸入命令: find -name listener.log ,查找監(jiān)控日志文件。
6、運行命令 cd ?到查看到的日志文件目錄。
7、運行cat listener.log命令 查看日志文件。
查看歸檔模式
conn /as sysdba
archive log list
如果數據庫為歸檔模式的話,可以通過logmnr來進行挖掘日志文件查看這些信息的。如果是非歸檔模式。對不起無法查看了
開啟后臺進程跟蹤,
設置參數(initsid.ora)
.backgroudn_dump_dest=目錄名 -- 指定根蹤文件存放的路徑
.user_dmup_test=目錄名 --指定用戶信息跟蹤文件的存放路徑
.用戶的跟蹤文件(.trc), 用TKPROF 來格式化用戶跟蹤文件
SQL 語句跟蹤即可。
.imed_statistics=true; --設置啟用 sql_trace =true;
.user_dump_dest=目錄 --指定跟蹤文件的存放路徑
.max_dump_file_size=5M --指定跟蹤文件最大尺寸
.SQL_TRACE=TRUE;
.動態(tài)改變 :alter session set sql_trace=true;
或者打開生成的跟蹤文件:
默認在..\oralce\admin\user\udump\*.trc,由于oralce 生成的*.trc 直接打開格式不規(guī)格,看得很累,可以用tkprof gk 來格式化 :c:\tkprof ora00001.trc a.txt
顯示歸檔日志信息
1,使用ARCHIVE LOG LIST命令可以顯示日志操作模式,歸檔位置,自動歸檔機器要歸檔的日志序列號等信息.
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#用于表示歸檔日志對應的日志序列號,firs_change#用于標識歸檔日志的起始SCN值.
4、執(zhí)行介質 恢復 時,需要使用歸檔日志文件,此四必須準確定位歸檔日志的存放位置.通過查詢動態(tài)性能視圖v$archive_dest可以取得歸檔日志所在目錄.
SELECT destination FROM v$archive dest;
5,顯示日志歷史信息
SELECT * FROM v$loghist;
THREAD#用于標識重做線程號,SEQUNCE#用于標識日志序列號,FIRST_CHANGE#用于標識日志序列號對應的起始SCN值,FIRST_TIME用于標識起始SCN的發(fā)生時間.SWICTH_CHANGE#用于標識日志切換的SCN值.
6.顯示歸檔進程信息.
進行日志切換時,ARCH進程會自動將重做日志內容復制到Oracle歸歸檔日志中,為了加快歸檔速度,應該啟用多個ARCH進程.通過查詢動態(tài)性能視圖V$ARCHIVE_PROCESSES可以顯示所有歸檔進程的信息!
SELECT * FROM v$archive_processes;
Porcess用于標識ARCH進程的編號,status用于標識ARCH進程的狀態(tài)(ACTIVE:活動,STOPPED:未啟動),log_sequence用于標識正在進行歸檔的日志序列號,state用于標識ARCH進程的工作狀態(tài)