当前位置:文档之家› Tkprof 分析ORACLE跟踪文件

Tkprof 分析ORACLE跟踪文件

Tkprof 分析ORACLE跟踪文件
Tkprof 分析ORACLE跟踪文件

Tkprof: 分析ORACLE跟踪文件

文章分类:数据库

Tkprof: 分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具

TKPROF使用步骤

1.设置参数文件

设置三个参数timed_staticstices、user_dump_dest、max_dump_file_size

timed_staticstices 用于启动或禁止对定时统计信息(如CUP时间、占用时间),以及动态性能表中多种统计信息的收集功能

alter session set timed_statistics true;

alter system set timed_statistics false;

MAX_DUP_FILE_SIZE 当实例层启用SQL TRACE的时候,在每次请求服务器的时候,都将在跟踪文件中产生一个文本行,这些文件的最大尺寸受限于初始化参数的设置。默认为500(blocks)。若里面的数据被截断则增大SIZE。若为UNLIMITED则意味着没有上限。

USER_DUMP_DEST 设置跟踪文件的存储位置。默认为admin/用户/udump;

alter system set user_dump_dest=newdir

2.启动SQL TRACE实用工具

对会话启动SQL TRACE

alter session set sql_trace=true;

alter session set sql_trace=false;

SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION=( SID , SERIAL# ,TRUE );

SID,SERIAL#可以从V$SESSION视图获得。

ALTER SESSION SET EVENTS

alter session set events '10046 trace name context forever,level';

alter session set events '10046 trace name context off';

alter system set events '10046 trace name context forever,level 1'

alter system set events '10046 trace name context off'

n=1---------激活标准SQL_TRACE工具,这与设置SQL_TRACE=TRUE 没有任何不同;

n=4---------激活标准SQL_TRACE,且可以扑获跟踪文件中的绑定变量。

n=8---------激活标准SQL_TRACE,且可在查询级上扑获跟踪文件中的等待事件。

n=12--------激活标准SQL_TRACE,并包括扑获绑定变量与等待事件。

对用户实例启动 SQL TRACE

alter system set sql_trace=true;

alter system set sql_trace=false;

3.使用tkprof格式化trace文件

Usage: tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ] 输入文件格式化后的输出文件

table=schema.tablename Use 'schema.tablename' with 'explain=' option.

用于指定在将执行规划写进输出文件之前,TKPROF用于临时存放执行规划所用表的架构和名称

explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.

print=integer List only the first 'integer' SQL statements. 只列出输出文件中的第一个INTEGER的SQL语句,若忽略,则TKPROF将列出所有跟踪的SQL语句aggregate=yes|no 若用户指定AGGREGATE=NO,TKPROF将不会对相同SQL文本的多个用户进行汇总

insert=filename List SQL statements and data inside INSERT statements. SQL脚本的一种,用于将跟踪文件的动机信息存储到数据库中

sys=no TKPROF does not list SQL statements run as user SYS. 于启动或禁止将用户SYS所发布的SQL语句列表到输出文件之中,也包括递归SQL(为执行用户的SQL 语句,ORACLE还必须执行一些附加语句)语句在内。默认为YES

record=filename Record non-recursive statements found in the trace file. 对于跟踪文件中的所用非递归SQL语句,TKPROF 将以指定的名称来创建某个SQL脚本。用于对跟踪文件中的用户时间进行重放

waits=yes|no Record summary for any wait events found in the trace file.

sort=option Set of zero or more of the following sort options: 在将被跟踪的SQL语句列表输出到跟踪文件之前,先将其按照指定排序选项的降序关系对其进行排序;若指定了多种排序选项,那么根据排序选项所指定值的和的降序关系对其进行排序;若忽略此参数,那么TKPROF将按照使用次序把语句列表到输出文件中

prscnt number of times parse was called 语句解析的数目

prscpu cpu time parsing 语句解析所占用的CPU时间

prsela elapsed time parsing 语句解析所占用的时间(总是大于或等于CPU时间);prsdsk number of disk reads during parse 语句解析期间,从磁盘进行物理读取的数目prsqry number of buffers for consistent read during parse 语句解析期间,一致模式块读取(CONSISTENT MODE BLOCK READ)的数目

prscu number of buffers for current read during parse 语句解析期间,当前模式读取(CURRENT MODE BLOCK READ)的数目

prsmis number of misses in library cache during parse 语句解析期间,库缓存失败的数

execnt number of execute was called 语句执行的数目

execpu cpu time spent executing 语句执行所占用的CPU时间

exeela elapsed time executing 语句执行所占用的时间(总是大于或等于CPU时间)exedsk number of disk reads during execute 语句执行期间,从磁盘进行物理读取的数目

exeqry number of buffers for consistent read during execute 语句执行期间,一致模式块读取(CONSISTENT MODE BLOCK READ)的数目

execu number of buffers for current read during execute 语句执行期间,当前模式读取(CURRENT MODE BLOCK READ)的数目

exerow number of rows processed during execute 语句执行期间,所处理的语句行数exemis number of library cache misses during execute 语句执行期间,库缓存失败的数目

fchcnt number of times fetch was called 取数据的数目

fchcpu cpu time spent fetching 取数据所占用的CPU时间

fchela elapsed time fetching 取数据所占用的时间(总是大于或等于CPU时间)fchdsk number of disk reads during fetch 取数据期间,从磁盘进行物理读取的数目fchqry number of buffers for consistent read during fetch 取数据期间,一致模式块读取(CONSISTENT MODE BLOCK READ)的数目

fchcu number of buffers for current read during fetch 取数据期间,当前模式读取(CURRENT MODE BLOCK READ)的数目

fchrow number of rows fetched 所获取的行数

userid userid of user that parsed the cursor

https://www.doczj.com/doc/1f13976606.html,prof文件的阅读

========另外一篇==========

ORACLE TKPROF使用步骤

1.Tkprof是一个分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具。C:oracleora92bintkprof.exe

2. tkprof 全称

TKPROF stands for transient kernel profiler.

3. 基本的使用步骤

1) SQL> alter system set timed_statistics=true;

2) 用户级自跟踪:

SQL>ALTER SESSION SET SQL_TRACE=TRUE;

SQL>ALTER SESSION SET SQL_TRACE=FALSE;

用户级DBA跟踪:(例如sys跟踪test,需要用sysdba登录)

. a). SQL>select https://www.doczj.com/doc/1f13976606.html,ERNAME,s.SID,s.SERIAL#,https://www.doczj.com/doc/1f13976606.html,MAND from v$session s where https://www.doczj.com/doc/1f13976606.html,ERNAME='COLM' ;

b). SQL>exec sys.dbms_system.set_sql_trace_in_session(9,7,true);

c). SQL>exec sys.dbms_system.set_sql_trace_in_session(9,7,false);

ps:9为SID,7为SERIAL#

3) C:> cd C:oracleadminCOLMudump

4) C:oracleadminCOLMudump> tkprof colm_ora_2056.trc trace.txt print=100

record=sql.txt sys=no

5) 查看trace.txt文件

范例:

************************************************************************ *******

SELECT *

FROM

col_case

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.00 0.00 0 0 0 0

Execute 0 0.00 0.00 0 0 0 0

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 1 0.00 0.00 0 0 0 0

Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: 62

需要调整的语句符合以下几点:

(1).CPU占用过多

(2).Parse,Execute,Fetch花费太多时间

(3).DISK读取太多,query/current(SGA)中数据块读取太少

(4).访问许多块,只返回2行

==========使用TKPROF转换跟踪文件为可读格式==============

Oracle可以使用ALTER SESSION来设置一个底层的跟踪,只要启用该跟踪,Oracle将所有的SQL和应用程序使用的顶层的

PL/SQL调用记录到服务器上的跟踪文件中(udump/*.trc)。该跟踪文件不仅有SQL和PL/SQL调用,也将包括定时的信息、

等待事件的信息,执行的逻辑I/O和物理I/O的数量、CPU和挂钟时间、已经处理的行数、带有行记数的查询计划等,但是.trc

文件很难阅读,我们可以使用TKPROF转换其为易读的格式。

首先、为了起用跟踪并使得Oracle生成有效的.trc文件我们需要做的第一件事就是在session级别上开启SQL_TRACE:

sql 代码

alter session set timed_statistics=true;

alter session set events '10046 trace name context forever,level 12';

上面的SQL语句1主要是设置定时系统,而第2句主要是开启跟踪:需要注意的一点是level ,说明如下:

1 启用标准的SQL_TRACE工具,等价于SQL_TRACE=true

4 启用SQL_TRACE并捕捉跟踪文件中的绑定变量

8 启用SQL_TRACE并捕捉跟踪文件的等待事件

12 启用标准的SQL_TRACE并捕捉绑定变量和等待事件

如果您需要确认某个数据库中有多少.trc文件的话,这里有一个查询可以帮助您

(Oracle9i)上调试通过:

sql 代码

select rtrim(c.value,'/') || '/' || d.instance_name || '_ora_' || ltrim(to_char(a.spid)) || '.trc' from v$process a,v$session b,v$parameter c,v$instance d

where a.addr = b.paddr and b.audsid= sys_context('userenv','sessionid')

and https://www.doczj.com/doc/1f13976606.html, ='user_dump_dest';

测试结果大致为:

absolute_pathdbnameudump/dbname_ora_384.trc

absolute_pathdbnameudump/dbname_ora_2000.trc

下面我们就使用TKPROF来转化dbname_ora_2000.trc为可读的格式(因为本人在win系统上做业,因此转换其为

.txt格式):

>tkprof dbname_ora_2000.trc traceview.txt

执行完此转化后会有一个traceview.txt文件在当前目录下生成(其内容我们结合具体的跟踪语句说明):

这里我们随便执行一条查询语句:

sql 代码

select count(*) from test_trace_an;

exit;--退出sql plus

假设上面的dbname_ora_2000.trc就是目前的跟踪结果:则使用TKPROF转化后的结果文件中,我们可以发现:

select count(*) from test_trace_an

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.00 0.00 0 0 0 0

Execute 1 0.00 0.00 0 0 0 0

Fetch 1 0.00 0.00 0 3 0 1

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 3 0.00 0.00 0 3 0 1

Misses in library cache during parse: 0

Optimizer goal: CHOOSE

Parsing user id: SYS

Rows Row Source Operation

------- ---------------------------------------------------

1 SORT AGGREGATE

1 TABLE ACCESS FULL OBJ#(30327)

Elapsed times include waiting on following events:

Event waited on Times Max. Wait Total Waited

---------------------------------------- Waited ---------- ------------

SQL*Net message to client 2 0.00 0.00

SQL*Net message from client 2 0.00 0.00

至于该.txt文件该怎么阅读,以及从中可以看到什么信息,并将如何处理它所提供的数据

oracle日志记录

【例1】 SQL>set time on SQL>create table hr.mydep1 as select * from hr.department; SQL>delete from hr.mydep1 where department_id=10; SQL>flashback table hr.mydep1 to timestamp 2 to timestamp(to_tate(‘2009-05-29 10:00:00’, ’yyyy-mm-dd hh24:mi:ss’)); 【例2】 SQL>create table student (name Varchar2(10), score Number); SQL>insert into student values(‘zs’, 68); SQL>update student set score=98 where name=’zs’; SQL>commit; SQL>select versions_starttime,versions_operation,name,score 2 from student versions between timestamp minvalue and maxvalue; 【例3】 SQL>CONNECT sys /zzuli AS sysdba SQL>select table_name, undo_sql from flashback_transaction_query where rownum<5;

【例1】控制文件备份为二进制文件 下面的语句可以将控制文件备份为一个二进制文件,即复制当前的控制文件: alter database backup controlfile to 'd:\backup_controlfile\control_09-05-25.bkp'; 【例2】控制文件备份为脚本文件 alter database backup controlfile to trace; 【例3】对视图V$CONTROLFlLE_RECORD_SECTION的查询。 select type,record_size,records_total,records_used from v$controlfile_record_section; 【例4】向数据库添加了一个新的重做日志组: alter database add logfile (‘e:\app\administrator\oradata\orcl\redo04.log’, ‘f:\oradata\log\redo04b.log’) Size 10m; 【例5】创建新的日志组,并将新的日志组指定为第4组: alter database add logfile group 4 (‘e:\app\administrator\oradata\orcl\redo004.log’,‘f:\oradata\log\redo004b.log') size 10m; 【例6】为第1组添加了一个新的成员日志文件: alter database add logfile member 'f:\oradata\log\redo01b.log' to group 1; 【例7】为第2组添加一个新成员: alter database add logfile member 'f:\oradata\log\redo02b.log' to

Oracle日志查看

Oracle日志查看 Oracle数据库的就业前景已经无须多言了,DBA毫无疑问是我们时代最幸福的岗位之一。尚观致力于Oracle技术的普及,以OCP、OCM认证帮助求职者实现就业竞争力的成倍增长。今天跟大家分享一篇由尚观整理,oracle日志查看的技术文档: 一.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日志的查看方法: SQL>select * from v$sql (#查看最近所作的操作) SQL>select * fromv $sqlarea(#查看最近所作的操作) Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。

oracle 日志模式切换

oracle 日志模式切换 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式与归档模式。默认情况下,数据库采用的是非归档模式。作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建立时,选择合适的操作模式。我们在sqlplus 下通过以下命令查看日志模式:archive log list; (非归档模式) (归档模式) 说明一下: database log mode 指定是数据库的日志模式,可为Archive Mode(归档)和No Archive Mode(非归档) Automatic archival 指定数据是否自动归档enable(自动),disabel(手动),要注意一下如果数据库的日志模式在归档下,但归档方为手动时要注意,如果归模日志满了,但没有进行清除数据,数据库停止写数据操作。 下面介绍一些常用操作: 1.查看数据库的日志模式 a.archive log list; 这个不在详细说明,因为上边图片己经很清楚了 b.通过动态性能视图进行查看v$database

那个log_mode字段就可以说明这个数据为归档模式 2.进行日志切换操作 这里我是从非归档模式向归归档模式操作. a.关闭运行数据库实例 shutdown immediate; b.备份数据库 该备份跟以后产生的日志一起用于将来的灾难恢复(很重要,如要改为归档日志模式,没有这个数据库备份,仅有日志文件是无法从该时间点恢复的) c.启动数据库实例到mount状态,但不要打开。 startup mount; d.切换数据库日志模式。 alter database archivelog;(设置数据库为归档日志模式) alter database noarchivelog;(设置数据库为归档日志模式) d.进行自动归档的切换 alter system archive log start alter system archive log stop (在standy模式不能切换为手动归档) e.打开数据库 alter database open; 3.手动归档相关操作

oracle警告日志 (20页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == oracle警告日志 篇一:oracle 11g的警告日志和监听日志 删除oracle 11g的警告日志和监听日志 oracle 11g的监听日志和警告日志都是在 /u01/oracle/diag/tnsls/oracle/listener目录和 /u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录。这两目录下都有如下目录: alert cdump hm incident incpkg ir lck metadata stage sweep trace 其中警告日志在alert目录下,监听日志在trace目录下。listener目录下产生的日志文件比较大,是主要清理的对象,而db1目录下产生的文件比较小,基本不需要清除。在listener目录下监听日志是一个名为listener.log的文件,而警告日志log.xml,这个日志每到11M左右就会分割成一个 log_XXXX.xml的日志,逐渐累加。而在db1目录下两个日志的方式刚好相反,监听日志分割成很多个以.trc .trm的文件,而警告日志只有一个log.xml的文件。不知道oracle在搞什么鬼,也不知道原理是什么。希望有了解的朋友给予指点。 删除监听日志的方法如下: 切换到oracle用户 su oracle $lsctl set log_status off $mv listener.log /backup/ $lsctl set log_status on 监听日志启动后就会自动创建一个全新的listener.log文件,备份好的文件可以删除。如果不执行上述的命令直接删除listener.log,系统是不

使用Oracle的外部表查询警告日志文件

使用Oracle的外部表查询警告日志文件 从Oracle9i开始,Oracle的外部表技术(Oracle External Tables)被极大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互的能力,对于数据仓库和ETL来说,这些增强极大的方便了数据访问。 对于DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件或其他跟踪文件. 以下一个例子用来说明外部表的用途。 首先需要创建一个Directory: [oracle@jumper oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Sun Oct 15 21:42:28 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production SQL> create or replace directory bdump 2 as '/opt/oracle/admin/eygle/bdump'; Directory created. SQL> col DIRECTORY_PATH for a30 SQL> col owner for a10 SQL> select * from dba_directories;

Oracle通过归档日志还原数据

Oracle通过归档日志还原数据 我要投稿 [ Oracle 的日志模式分为 archivelog (启用归档日志) 和 noarchivelog () 两种模式。 查看数据库日志模式: select log_mode from v$database; log_mode ----------------------------------- archivelog 如何启用Oracle的归档方式: 1.参照以下内容编辑init.ora文件: log_archive_start = true log_archive_dest_1 = " LOCATION=D:\Oracle\oradata\ORCL\archive " og_archive_format = %%ORACLE_SID%%T%TS%S.ARC Oracle 归档日志还原数据(还原前请做好冷备份): sqlplus /nolog conn / as sysdba; archive log list; (查看日志文件列表,查看单个日志文件可用 strings xxx.dbf to xx.txt) recover database until time '2011-09-15:15:00:00'; (提示:使用基于时间的恢复,时间的格式是YYYY/MM/DD HH24:MI:SS,并且用单引号括起。) 基于时间的恢复(time-based recovery) 为使用基于时间的恢复,必须知道记录在V$log_history归档重演日志序号387

(丢失重演日志)的时间,通过执行查询语句“select * from v$log_history where sequence#=387;” 或者 recover database until change 9999; alter database open resetlogs; (应用该命令前请确认已数据库已备份,如打开 失败,日志将不可用) 作者“学习笔记” 如何解决ORA-01033问题 (2010-05-08 20:49:35) 转载 标签: oracle my 日志文件 数据文件 sql it Oracle错误:ORA-01033 错误编码:ORA-01033: ORACLE initialization or shutdown in progress 故障描述:因为移动了数据库文件([NAME].DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。 故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO操作而引起的错误。ORACLE将识别为数据库未装载完成而导致出现如上错误。

Oracle数据库日志查看工具LogMiner的使用详解

一、Oracle日志的路径 登录:sqlplus "/as sysdba" 查看路径:SQL> select * from v$logfile; SQL> select * from v$logfile;(#日志文件路径) 二、Oracle日志文件包含哪些内容 1.control01.ctl example01.dbf redo0 2.log sysaux01.dbf undotbs01.dbf 2.control02.ctl redo0 3.log system01.dbf users01.dbf 3.control03.ctl redo01.log SHTTEST.dbf temp01.dbf 三、Oracle日志的查看方法 SQL>select * from v$sql (#查看最近所作的操作) SQL>select * fromv $sqlarea(#查看最近所作的操作) Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。 四、LogMiner的使用 1、创建数据字典文件(data-dictionary) 1).首先在init.ora初始化参数文件中,添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据 库,使新加的参数生效: SQL> shutdown; SQL>startup; 2).然后创建数据字典文件 1.SQL> connect /as sysdba 2.SQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/data1/oracle/logs'); 3.PL/SQL procedure successfully completed 2、创建要分析的日志文件列表 1).创建分析列表,即所要分析的日志 1.SQL>execute dbms logmnr.add logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new); 2.PL/SQL procedure successfully completeds

oracle日志文件

分类:Oracle 体系结构2010-07-20 14:11 2259人阅读评论(5) 收藏举报--========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --========================================= 一、Oracle中的几类日志文件 Redo log files -->联机重做日志 Archive log files -->归档日志 Alert log files -->告警日志 Trace files -->跟踪日志 user_dump_dest -->用户跟踪日志 backupground_dump_dest -->进程跟踪日志 --查看后台进程相关目录 SQL> show parameter dump NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ background_core_dump string partial background_dump_dest string /u01/app/oracle/admin/orcl/bdump core_dump_dest string /u01/app/oracle/admin/orcl/cdump max_dump_file_size string UNLIMITED shadow_core_dump string partial user_dump_dest string /u01/app/oracle/admin/orcl/udump 关于Oracle 常用目录及路径请参考:Oracle 常用目录结构(10g) 关于Oracle 体系结构请参考:Oracle实例和Oracle数据库(Oracle体系结构) 二、联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理 2.联机重做日志组 由一个或多个相同的联机日志文件组成一个联机重做日志组 至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)

oracle 11g的警告日志和监听日志

删除oracle 11g的警告日志和监听日志 oracle 11g的监听日志和警告日志都是在 /u01/oracle/diag/tnslsnr/oracle/listener目录和 /u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录。这两目录下都有如下目录: alert cdump hm incident incpkg ir lck metadata stage swee p trace 其中警告日志在alert目录下,监听日志在trace目录下。listener目录下产生的日志文件比较大,是主要清理的对象,而db1目录下产生的文件比较小,基本不需要清除。在listener目录下监听日志是一个名为listener.log的文件,而警告日志log.xml,这个日志每到11M左右就会分割成一个log_XXXX.xml的日志,逐渐累加。而在db1目录下两个日志的方式刚好相反,监听日志分割成很多个以.trc .trm的文件,而警告日志只有一个log.xml的文件。不知道oracle在搞什么鬼,也不知道原理是什么。希望有了解的朋友给予指点。 删除监听日志的方法如下: 切换到oracle用户 su oracle $lsnrctl set log_status off $mv listener.log /backup/ $lsnrctl set log_status on 监听日志启动后就会自动创建一个全新的listener.log文件,备份好的文件可以删除。如果不执行上述的命令直接删除listener.log,系统是不

OracleOracle日志分类

Oracle-归档日志详解(运行模式、分类) 一、Oracle日志分类 分三大类:Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和redo log 重做日志(记录数据库的更改)。 本文主要关注Oracle的重做日志。 重做日志分为在线重做日志和归档重做日志。 online Redo log files--在线重做日志,又称联机重做日志,指Oracle以SQL脚本的形式实时记录数据库的数据更新,换句话说,实时保存已执行的SQL脚本到在线日志文件中(按特定的格式)。 Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化)。 重做日志的简单原理:在数据更新操作commit前,将更改的SQL脚本写入重做日志。主要用于数据库的增量备份和增量恢复。 重做日志直接对应于硬盘的重做日志文件(有在线和归档二种),重做日志文件以组(Group)的形式组织,一个重做日志组包含一个或者多个日志文件。 二、关于在线重做日志(online redo log) 在线重做日志的原理: 对于在线重做日志,Oracle 11g默认对于每个数据库实例,建立3个在线日志组,每组一个日志文件,文件名称为REDO01.LOG,REDO02.LOG和REDO03.LOG。(用户可以通过视图操作添加/修改/删除日志组和日志文件来自定义在线重做日志)每组内的日志文件的内容完全相同,且保存在不同的位置,用于磁盘日志镜像,以做多次备份提高安全性。默认情况这3组通常只有一组处于活动状态,不断地同步写入已操作的脚本,当日志文件写满时(达到指定的空间配额),如果当前数据库处于归档模式,则将在线日志归档到硬盘,成为归档日志;若当前数据库处于非归档模式,则不进行归档操作,而当前在线日志的内容会被下一次重新写入覆盖而无法保存。因此,通常数据库在运行时,是处于归档模式下的,以保存数据更新的日志。 当前归档日志组写满后,Oracle会切换到下一日志组,继续写入,就这样循环切换;当处于归档模式下,切换至原已写满的日志组,若该日志组归档完毕则覆盖写入,若没有则只能使用日志缓冲区,等待归档完毕之后才能覆盖写入。当然,处于非归档模式下是直接覆盖写入的。(关于数据库归档模式的设置,我会在另外的博文中讲到)。 Oracle提供了2个视图用于维护在线重做日志:V$LOG 和V$LOGFILE,我们可以通过这两个视图查看和修改在线日志。 关于V$LOG视图的详细属性字段可Oracle 11g的官方文档:

oracle性能调优-管理oracle日志之Oracle日志运行机制

理解Oracle的日志机制 ? Oracle的日志是用来记录用户对数据库的改变,这样,当出现服务器硬件故障或者用户错误而丢失数据时,可以通过重做这些日志来恢复已提交的事务,Oracle日志机制包含以下组件: ?日志缓存SGA的一部分,用于缓存服务器进程产生的日志,包括DML和DDL; ? LGWR进程这个后台进程负责将日志缓存的数据写到联机日志文件,每个实例只有一个; ?数据库检查点检查点用于同步数据文件和日志文件,一个检查点事件的完成,代表在这个事件开始之前发生的所有对数据文件的改变都已实际记录到了数据文件,数据库在这个时间点是一致的,在实例恢复的时候,只有在最后一个检查点之后的日志才需要重做; ?联机日志文件用于存放从日志缓存中写出的日志数据,每个数据库最少需要两个日志文件,当前日志文件填满以后,发生日志切换,然后才可以继续写下一个日志文件; ?日志归档LGWR写满所有组的联机日志文件以后,会回头再写第一个组的日志文件,在非归档模式下,被重用的日志文件中的日志会被丢弃,在归档模式下,日志文件被重用前会被ARC0进程复制到归档日志文件; ? 一些可选的日志机制,如归档和Standby,因为附加的I/O会降低系统的性能,同时提供了可靠的灾难恢复能力,不建议因这些性能的下降而关闭生产系统的归档功能。 调整日志缓存 ? 日志缓存的管理机制可以类似理解成一个漏斗,日志数据不断地从漏斗上方加入,然后偶尔打开漏斗下方的开关将加入的数据清空,这个开关就是LGWR进程,为了日志缓存有空间容纳不断加进来的日志数据,LGWR在下面列出的任何一个条件下都会执行写出日志缓存的操作: ?应用程序发出Commit命令时; ?三秒间隔已到时; ?日志缓存三分之一满时; ?日志缓存达到1M时; ?数据库检查点发生时; ? 测量日志缓存的性能通过服务器进程放置日志条到日志缓存时发生等待的次数和时间来测量; Select Name, Value From V$sysstat Where Name In ('redo entries', 'redo buffer allocation retries','redo log space requests'); redo entries 服务器进程放进日志缓存的日志条的总数量; redo buffer allocation retries 服务器放置日志条时必须等待然后再重试的次数; redo log space requests LGWR进程写出日志缓存时等待日志切换的次数; 这个查询用于计算日志缓存重试率,这个比率应该小于百分之一; Select Retries.Value / Entries.Value "Redo log Buffer Retry Ratio" From V$sysstat Entries, V$sysstat Retries Where https://www.doczj.com/doc/1f13976606.html, = 'redo entries' And https://www.doczj.com/doc/1f13976606.html, = 'redo buffer allocation retries'; 这个查询用来显示哪些会话的LGWR正在进行写等待;

oracle日志文件全

oracle日志文件全.txt什么叫神话?请听男人向你表达爱意;什么叫传说?请听男人对你的 承诺;什么叫梦境?请看你自己听到前两者时的反应。如果是安全关闭数据库.数据库处于一 致状态: SQL> STARTUP NOMOUNT SQL> CREATE CONTROLFILE REUSE DATABASE "TEST " RESETLOGS ARCHIVELOG SQL> ALTER DATABASE OPEN RESETLOGS; 马上备份 如果不是非安全关闭: 非当前日志就 SQL> alter database clear unarchived logfile group n; SQL> alter database clear logfile 'C:\oracle\product\10.1.0\oradata\hupan\REDO01 .LOG' group 1; 当前日志: 在initsid> .ora中加入如下参数 _allow_resetlogs_corruption=TRUE alter system set "_allow_resetlogs_corruption" = true scope = spfile; SQL> recover database until cancel; Cancel 如果出错,不再理会,发出 SQL> alter database open resetlogs 一、Oracle中的几类日志文件 Redo log files -->联机重做日志 Archive log files -->归档日志 Alert log files -->告警日志 Trace files -->跟踪日志

Oracle 日志操作模式

Oracle 日志操作模式 日志操作模式是指Oracle数据库处理重做日志的方式,它决定了是否保存重做日志,以保留重做日志所记载的事务变化。Oracle数据库包括非归档日志(NOARCHIVELOG)模式和归档日志(ARCHIVELOG)模式 1.NOARCHIVELOG(非归档模式) NOARCHIVELOG是指不保留重做记录的日志操作模式,只能用于保护实例故障,而不能保护介质故障。当数据库处于NOARCHIVELOG模式是,如果进行日志切换,生成的新内容将直接覆盖日志组成原来的内容。 NOARCHIVELOG模式具有如下一些特点: ●当检查点完成之后,后台进程LGWR可以覆盖原在重做日志内容。 ●如果数据库备份后的重做日志内容已经被覆盖,那么当出现数据文件损坏时只能恢 复到过去的完全备份点。 2.ARCHIVELOG(归档模式) Oracle利用重做日志文件记录对数据库所做的修改,但是重做日志文件是以循环方式使用的,在发生日志切换时,原来重做日志中的重做记录会被覆盖。为了完整地记录数据库的全部修改过程,可以使Oracle数据库的日志操作模式处于归档模式下。 当数据库的运行在归档模式时具有如下优势: ●如果发生磁盘介质损坏,则可以使用数据库备份与归档重做日志恢复已经提交的事 务,保证不会发生任何数据丢失。 ●利用归档日志文件,可以实现使用数据库打开状态下创建的备份文件来进行数据库 恢复。 ●如果为当前数据库建立一个备份数据库备份,通过持续地为备份数据库备份应用归 档重做日志,可以保证源数据库与备份数据库的一致性。 在归档模式下,归档操作可以由后台进程ARCn自动完成,但是也可以由DBA手工来完成。为了提高效率、简化操作,通常使用自动归档操作。图11-3显示了利用归档进程ARC0进行自动归档操作的过程。 LGWR 联机重做日志文件 #1联机重做日志 文件 #2 联机重做日志 文件 #3 ARC0 联机重做日志 文件 #1 LGWR 联机重做日志 文件 #2 联机重做日志 文件 #1 ARC0 LGWR 时间 联机重 做日志 归档重 做日志 图11-3 使用归档模式的联机重做日志文件

如何查看ORACLE日志和日志位置

1、查看操作系统版本 SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for Linux: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production SQL> 2、查看预警日志文件(alert_sid.log)的位置 SQL> show parameter dump NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ background_core_dump string partial background_dump_dest string /u01/oracle/admin/bdump core_dump_dest string /u01/oracle/admin/cdump max_dump_file_size string 10240 shadow_core_dump string partial user_dump_dest string /u01/oracle/admin/udump

oracle获取日志

1日志获取方法 1.1Oracle数据库日志 针对Oracle数据库出现的各种问题,为了全方位的定位问题,当遇到oracle数据库异常时,需要获取如下日志信息。 1.1.1b dump/udump日志 获取$ORACLE_BASE/admin/$SID/bdump, $ORACLE_BASE/admin/$SID/udump 当天的日志。 如:今天是6月16日,/u01/app/oracle/admin/test/bdump目录下: -rw-r----- 1 oracle oinstall 205370 Jun 13 10:59 alert_test1.log -rw-r----- 1 oracle oinstall 8153 Jun 13 10:59 test1_lgwr_16208.trc -rw-r----- 1 oracle oinstall 2791 Jun 13 23:20 test1_m000_25387.trc -rw-r----- 1 oracle oinstall 2791 Jun 14 23:21 test1_m000_20972.trc -rw-r----- 1 oracle oinstall 2790 Jun 15 23:22 test1_m000_14356.trc -rw-r----- 1 oracle oinstall 166589 Jun 16 10:23 test1_lmd0_16196.trc /u01/app/oracle/admin/test/udump 目录下当天的日志文件。 1.1.2C rs日志 crs log目录下crs的相关日志信息,如:/u01/app/oracle/product/10.2.0/crs/log/hp101 drwxr-x--- 2 oracle oinstall 96 May 15 14:21 admin drwxr-x--- 2 oracle oinstall 96 May 15 14:22 evmd drwxr-x--- 2 root oinstall 96 May 15 14:22 crsd drwxr-x--- 5 oracle oinstall 8192 May 15 14:38 cssd drwxrwxr-t 5 oracle oinstall 8192 May 21 17:17 racg -rw-rw-r-- 1 root oinstall 7750 Jun 3 16:46 alerthp101.log drwxr-x--- 2 oracle oinstall 114688 Jun 16 14:06 client 这些目录下当天的日志文件。

oracle内置常用表和视图及其日志管理

DBA_TABLES、ALL_TABLES以及USER_TABLES此三个视图可以用来查询ORACLE中关系表信息,它们之间的关系和区别有: DBA_TABLES >= ALL_TABLES >= USER_TABLES DBA_TABLES意为DBA拥有的或可以访问的所有的关系表。 ALL_TABLES意为某一用户拥有的或可以访问的所有的关系表。 USER_TABLES意为某一用户所拥有的所有的关系表。 由上可知,当某一用户本身就为数据库DBA时,DBA_TABLES与ALL_TABLES等价。此规律可以类推至Oracle中其它类似名称的视图。 需要注意的是在ORACLE数据库中大小写是敏感的,而此三表中数据默认都是大写的,所以在进行查询的时候注意小写的数据可能会造成数据无法查到。 一.Oracle表明细及说明 1.dba_开头表 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息

Oracle日志信息收集1

Oracle日志信息收集 针对Oracle数据库出现的各种问题,为了全方位的定位问题,维护部遇到客户oracle异常问题时,一例要求客户提供如下日志信息: 1.$ORACLE_BASE/admin/$SID/bdump, $ORACLE_BASE/admin/$SID/udump 当天的日志 如:今天是6月16日,/u01/app/oracle/admin/test/bdump目录下: -rw-r----- 1 oracle oinstall 205370 Jun 13 10:59 alert_test1.log -rw-r----- 1 oracle oinstall 8153 Jun 13 10:59 test1_lgwr_16208.trc -rw-r----- 1 oracle oinstall 2791 Jun 13 23:20 test1_m000_25387.trc -rw-r----- 1 oracle oinstall 2791 Jun 14 23:21 test1_m000_20972.trc -rw-r----- 1 oracle oinstall 2790 Jun 15 23:22 test1_m000_14356.trc -rw-r----- 1 oracle oinstall 166589 Jun 16 10:23 test1_lmd0_16196.trc /u01/app/oracle/admin/test/udump 目录下当天的日志文件。 2. crs log目录下crs的相关日志信息: 如:/u01/app/oracle/product/10.2.0/crs/log/hp101 drwxr-x--- 2 oracle oinstall 96 May 15 14:21 admin drwxr-x--- 2 oracle oinstall 96 May 15 14:22 evmd drwxr-x--- 2 root oinstall 96 May 15 14:22 crsd drwxr-x--- 5 oracle oinstall 8192 May 15 14:38 cssd drwxrwxr-t 5 oracle oinstall 8192 May 21 17:17 racg -rw-rw-r-- 1 root oinstall 7750 Jun 3 16:46 alerthp101.log drwxr-x--- 2 oracle oinstall 114688 Jun 16 14:06 client 这些目录下当天的日志文件。 3. 监听器$ORACLE_HOME/network/log当天的日志信息: /u01/app/oracle/product/10.2.0/db/network/log $ ll total 249696 -rw-r--r-- 1 oracle oinstall 126028387 Jun 16 14:14 listener.log -rw-r--r-- 1 oracle oinstall 1743147 May 22 10:15 listener_hp101.log -rw-r--r-- 1 oracle oinstall 3902 Jun 5 21:26 sqlnet.log 4. 故障发生阶段的ash报告(时间段越短越好,一般在5-30分钟之间) 和一个小时的awr报告: 具体操作如下: 生成awr report执行: SQL> @?/rdbms/admin/awrrpt.sql Current Instance ~~~~~~~~~~~~~~~~

深入了解Oracle跟踪事件set events

深入了解Oracle跟踪事件set events 一、Oracle跟踪文件 Oracle跟踪文件分为三种类型, 一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG。 另一种类型是DBWR、LGWR、SMON等后台进程创建的后台跟踪文件。后台跟踪文件根据后台进程运行情况产生,后台跟踪文件也保存在BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为siddbwr.trc、sidsmon.trc等。 还有一种类型是由连接到Oracle的用户进程(Server Processes)生成的用户跟踪文件。这些文件仅在用户会话期间遇到错误时产生。此外,用户可以通过执行oracle 跟踪事件(见后面)来生成该类文件,用户跟踪文件保存在USER_DUMP_DEST 参数指定的目录中,文件格式为oraxxxxx.trc,xxxxx为创建文件的进程号(或线程号)。 二、Oracle跟踪事件 Oracle提供了一类命令,可以将Oracle各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。设置跟踪事件有两种方法,一种是在init.ora文件中设置事件,这样open数据库后,将影响到所有的会话。设置格式如下: EVENT="eventnumber trace name eventname [forever,] [level levelnumber] : ......." 通过:符号,可以连续设置多个事件,也可以通过连续使用event来设置多个

深入分析Oracle数据库日志文件

作为Oracle DBA,我们有时候需要追踪数据误删除或用户的恶意操作情况,此时我们不仅需要查出执行这些操作的数据库账号,还需要知道操作是由哪台客户端(IP地址等)发出的。针对这些问题,一个最有效实用而又低成本的方法就是分析Oracle数据库的日志文件。本文将就Oracle日志分析技术做深入探讨。 一、如何分析即LogMiner解释 从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,Oracle数据库的所有更改都记录在日志中,但是原始的日志信息我们根本无法看懂,而LogMiner就是让我们看懂日志信息的工具。从这一点上看,它和tkprof差不多,一个是用来分析日志信息,一个则是格式化跟踪文件。通过对日志的分析我们可以实现下面的目的: 1、查明数据库的逻辑更改; 2、侦察并更正用户的误操作; 3、执行事后审计; 4、执行变化分析。 不仅如此,日志中记录的信息还包括:数据库的更改历史、更改类型(INSERT、UPDATE、DELETE、DDL等)、更改对应的SCN号、以及执行这些操作的用户信息等,LogMiner 在分析日志时,将重构等价的SQL语句和UNDO语句(分别记录在 V$LOGMNR_CONTENTS视图的SQL_REDO和SQL_UNDO中)。这里需要注意的是等价语句,而并非原始SQL语句,例如:我们最初执行的是“delete a where c1 <>'cyx';”,而LogMiner重构的是等价的6条DELETE语句。所以我们应该意识到 V$LOGMNR_CONTENTS视图中显示的并非是原版的现实,从数据库角度来讲这是很容易理解的,它记录的是元操作,因为同样是“delete a where c1 <>'cyx';”语句,在不同的环境中,实际删除的记录数可能各不相同,因此记录这样的语句实际上并没有什么实际意义,LogMiner重构的是在实际情况下转化成元操作的多个单条语句。

相关主题
文本预览
相关文档 最新文档