监控Oracle11G R2数据库的操作,可以实现如下的目的:
Ø 了解数据库数据库的跟踪日志与警告日志的位置
Ø 启用会话跟踪,对相关数据进行查询与优化
使用跟踪日志与警告日志监控错误
trace file:当进程检查到内部错误时,进程就产生错误信息到trace file中。
每一个服务器进程与后台进程能够写到它相关联的trace 文件中,trace file可以用于优化应用程序与实例。Oracle 11G R2的跟踪文件就是以*.trc的文件存在对应的系统目录中
Alert log:就是按时间先后顺序产生的信息与错误日志,包括如下信息:
Ø 所有的内部错误,包括块损坏与死锁错误
Ø 管理员的操作,如创建,修改,删除表达式,启动,关闭数据库等信息
Ø 关于共享服务器与分发器的功能信息与错误
Ø 当数据库与实例启动时,初始化参数为非默认值时,都要记录下这些非初始化参数
Alert log 以xml形式的文件与txt文件的方式存在于oracle系统对应目录中
周期性的检查实例的警告日志与跟踪文件,了解系统进程是否遇到问题。
控制trace 文件大小
参数max_dump_file_size控制trace文件大小
SQL> show parametermax_dump
NAME TYPE VALUE
----------------------------------------------- ------------------------------
max_dump_file_size string unlimited
SQL>
控制trace 文件
当oracle数据库写trace文件时,有可能需要控制trace文件的数量与trace信息的类型
当服务器进程遇见严重错误时,跟踪文件记录服务器的错误行为。 设置初始化参数sql_trace,用来描述sql 跟踪设备为执行所有的sql表达式的语句所产生的跟踪信息,并把这些信息写入ADR信息中。
使用select *from V$diag_info,得到如下表格信息
注意:Diag trace与Default trace file,Diag trace 描述服务器进程与后台进程跟踪文件的目录,Default trace file 描述当前会话启用跟踪后,所产生的跟踪文件。
INST_ID
NAME
VALUE
1
Diag Enabled
TRUE
1
ADR Base
C:\APP\ADMINISTRATOR
1
ADR Home
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb
1
Diag Trace
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace
1
Diag Alert
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\alert
1
Diag Incident
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\incident
1
Diag Cdump
c:\app\Administrator\diag\rdbms\newdb\newdb\cdump
1
Health Monitor
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\hm
1
Default Trace File
C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_ora_3844.trc
1
Active Problem Count
0
1
Active Incident Count
0
为共享服务器会话阅读trace文件
阅读trace文件使用的命令是trcsess与tkprof命令来阅读。
使用服务器产生的警告监控数据库操作
服务器产生的警告信息是oracle数据库服务器端对即将发生的错误的一个通知,将对如下信息产生警告:
Ø 每秒的物理读
Ø 每秒的用户提交数
Ø sql服务的响应时间
为服务器产生警告设置与取回阈值
使用set_threshold与get_threshold过程为服务器警告值来查看与改变阈值的设定。
查看服务器产生的警告
用oracle的企业管理器来查看服务器产生的警告信息
监控性能
监控死锁
监控等待事件
监控Oracle数据库的操作常用的视图
V$lock;
dba_lockers
dba_waiters
dba_ddl_locks
dba_dml_locks
dba_lock
v$session_wait
在oracle 11G中提供了跟踪文件,来优化应用程序与实例
1. oracle 11G R2中查看是否启用会话跟踪(即控制trace 文件)
SQL> show parametersql_trace;
NAME TYPE VALUE
----------------------------------------------- ------------------------------
sql_trace boolean FALSE
2. 启用会话跟踪
(注意:如果用户没有启用会话跟踪,在每一个会话中能够查询到default trace file,但实际位置并没有对应的物理文件。)
利用sqlplus 语句,登陆数据库,默认没有启用会话跟踪。
sql> create tabale T as select * from dba_objects
SQL> alter session setsql_trace=true;
Session altered.
SQL> alter session settracefile_identifier='testtrace02';
Session altered.
SQL> select * from t where object_id <50;
3. 查看跟踪文件的位置(oracle 11G r2中default trace file 就是新产生的trace file 文件位置)
SQL> col name format a30
SQL> col value form a65
SQL> select * fromv$diag_info;
INST_ID NAME VALUE
---------------------------------------------------------------------------------------------------------
1 Diag Enabled TRUE
1 ADR Base C:\APP\ADMINISTRATOR
1 ADR Home C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb
1 Diag Trace C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace
1 Diag Alert C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\alert
1 Diag Incident C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\incident
1 Diag Cdump c:\app\Administrator\diag\rdbms\newdb\newdb\cdump
1 Health Monitor C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\hm
1 Default Trace File C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_ora_2632_ testtrace02.trc
INST_ID NAME VALUE
---------------------------------------- -----------------------------------------------------------------
1 Active Problem Count 0
1 Active Incident Count 0
11 rows selected.
SQL>
4. 通过命令tkprof查看trace 文件内容
SQL> $tkprofC:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_ora_2632_testtrace02.trcc:\app\02.txt
TKPROF: Release 11.2.0.3.0 -Development on Wed May 3 17:25:59 2017
Copyright (c) 1982, 2011,Oracle and/or its affiliates. All rightsreserved.
SQL>
在文件02.txt 中部分内容摘选
***********************************************************************
select * from T whereobject_id <50
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- -------------------- ----------
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 5 0.00 0.00 0 181 0 48
------- ------ -------- ---------- ---------- -------------------- ----------
total 7 0.00 0.00 0 182 0 48
Misses in library cache duringparse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 12
Number of plan statisticscaptured: 1
Rows (1st) Rows (avg) Rows(max) Row Source Operation
---------- -------------------- ---------------------------------------------------
48 48 48 TABLE ACCESS FULL T (cr=181 pr=0 pw=0 time=35 us cost=52 size=414 card=2)
*******************************************************************************
5. 在V$process 视图中查看后台进程的跟踪文件
SQL> col name format a15
SQL> col tracefile formata65
SQL> selectpid,pname,program,tracefile from v$process;
PID PNAME PROGRAM TRACEFILE
---------- --------------------------------------------------------------------------------------------------------------------------------------
1 PSEUDO C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_ora_0.trc
2 PMON ORACLE.EXE (PMON) C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_pmon_1068
.trc
3 PSP0 ORACLE.EXE (PSP0) C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_psp0_1512
.trc
4 VKTM ORACLE.EXE (VKTM) C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_vktm_896.
trc
5 GEN0 ORACLE.EXE (GEN0) C:\APP\ADMINISTRATOR\diag\rdbms\newdb\newdb\trace\newdb_gen0_1204
在新的版本中如何查看其他用户的信息
6. 使用系统管理员权限执行其他用户执行会话跟踪
1)查看用户会话
SQL> select sid,serial#,usernamefrom v$session;
SID SERIAL# USERNAME
---------- ----------------------------------------
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
SID SERIAL# USERNAME
---------- ----------------------------------------
13 1
14 1
15 1
16 1
20 3
21 533 TESTDBA
22 57 NEWDBA
23 51
24 463 NEWDBA
28 3
29 37
SID SERIAL# USERNAME
---------- ----------------------------------------
31 1
34 567
35 381 NEWDBA
37 129 SYS
38 959 SYS
40 677 SYS
42 285 SYS
29 rows selected.
2)用操作系统权限用户执行其他用户的会话跟踪
C:\Users\Administrator>setoracle_sid=newdb
C:\Users\Administrator>sqlplus/ as sysdba
SQL*Plus: Release 11.2.0.3.0Production on Wed May 3 17:49:46 2017
Copyright (c) 1982, 2011,Oracle. All rights reserved.
Connected to:
Oracle Database 11g EnterpriseEdition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP,Data Mining and Real Application Testing options
SQL> exec dbms_system.set_sql_trace_in_session(21, 533,true); # 启用
PL/SQL procedure successfullycompleted.
SQL> execdbms_system.set_sql_trace_in_session(21, 533, false); #结束
在客户端执行select语句,在server端产生跟踪文件
SQL> select * from dba_users;
实际测试,在没有启用会话跟踪时,通过select * from v$diag_info, 虽然default tracefile路径,但在服务器端并没有存在对应的trc文件,启用跟踪会话后,执行查询语句,服务器端产生对应的跟踪文件。
http://yedward.net/post/140.html
http://chenxy.blog.51cto.com/729966/752054
http://www.cnblogs.com/limengqiang/archive/2013/04/18/OracleTraceOne.html