通过外部表读取alert警告文件

--查看alert日志所在目录

select value from v$diag_info where name=‘Diag Trace‘;

VALUE

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

/home/oracle/app/oracle/diag/rdbms/ecom/ecom/trace

--查到alert文件的名称(alert文件命名原则:alert_dbname.log)

select ‘alert_‘||lower(name)||‘.log‘  from v$database;

--创建目录

create or replace directory data_dir as ‘/home/oracle/app/oracle/diag/rdbms/ecom/ecom/trace‘;

--创建警告日志表【directory、location要替换成你自己的】

create table alert_log

(

text_line varchar(255)

)

organization external

(

type oracle_loader

default directory data_dir

access parameters

(

records delimited by newline

fields

reject rows with all null fields

)

location

(

‘alert_ecom.log‘

)

)

reject limit unlimited;  ----注意这点,否则在查询时会报错 ora-30653

查询一、 

select r,

to_date(last_time, ‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘) last_time,

to_date(start_time,‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘) start_time

from (

select r,

text_line,

lag(text_line,1) over (order by r) start_time,

lag(text_line,2) over (order by r) last_time

from (

select rownum r, text_line

from alert_log

where text_line like ‘___ ___ __ __:__:__ 20__‘

or text_line like ‘Starting ORACLE instance %‘

)

)

where text_line like ‘Starting ORACLE instance %‘;

查询二、 

select to_char(last_time,‘dd-mon-yyyy hh24:mi‘) shutdown,

to_char(start_time,‘dd-mon-yyyy hh24:mi‘) startup,

round((start_time-last_time)*24*60,2) mins_down,

round((last_time-lag(start_time) over (order by r)),2) days_up,

case when (lead(r) over (order by r) is null )

then round((sysdate-start_time),2)

end days_still_up

from (

select r,

to_date(last_time, ‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘) last_time,

to_date(start_time,‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘) start_time

from (

select r,

text_line,

lag(text_line,1) over (order by r) start_time,

lag(text_line,2) over (order by r) last_time

from (

select rownum r, text_line

from alert_log

where text_line like ‘___ ___ __ __:__:__ 20__‘

or text_line like ‘Starting ORACLE instance %‘

)

)

where text_line like ‘Starting ORACLE instance %‘

);

查询三、  

select * from alert_log t where t.TEXT_LINE like ‘%ORA-%‘;

---------------------额外说明-----------------

to_date(last_time, ‘Dy Mon DD HH24:MI:SS YYYY‘,‘NLS_DATE_LANGUAGE = American‘) last_time

上面的例子里面是没有‘NLS_DATE_LANGUAGE = American‘这部分的,执行时老提示“周中的日无效”,

后来查询才知道要加这部分,用了这么久to_date才知道原来还有第三个参数。

时间: 2024-10-16 22:25:01

通过外部表读取alert警告文件的相关文章

PLSQL_Oracle外部表的概念和使用(案例)(通过外部表直接查询数据文件以节数据库表空间)

2014-08-25 BaoXinjian 一.摘要 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件. 因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中. 外部表,顾名思义,存储在数据库外面的表. 当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作). 不能对外部表建立索引.因为创建索引就意味着要存在对应的索引记录.而外部表其

利用外部表查询alert日志中的ora错误

SQL> show parameter dump NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------background_core_dump                 string      partialbackground_dump_dest                

Oracle外部表详解(转载)

(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中数据格式与创建表时access parameters中的定义需保持同步,适当用skip=1) 外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储

如何利用Oracle外部表导入文本文件的数据

同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)

环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常. 调试代码,创建连接对象oleDbConnection也正常,但在conn.Open()打开链接时出错. 仔细看了下链接字符串,检查出了错误,Excel版本问题,Exce连接字符串版本是office2003的 ,更改为Excel2

导入excel错误:外部表不是预期的格式 解决方案

环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常. 调试代码,创建连接对象oleDbConnection也正常,但在conn.Open()打开链接时出错. 仔细看了下链接字符串,检查出了错误,Excel版本问题,Exce连接字符串版本是office2003的 ,更改为Excel2

C# 导入EXCEL 报错外部表不是预期的格式错误 .

错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel “External table is not in the expected format.” . Question: I'm trying to read an Excel (xlsx) file using the code shown below. I get an "External table is no

文件上传表单 上传文件的细节 文件上传下载和数据库结合

1 文件上传表单   1)上传文件的本质是文本复制的过程   2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写   3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如:     IE6:upfile=c:\aa\bb\a.JPG     非IE6: upfile=a.JPG   4)可以将form以MIME协议的方式将上传文件传递到服务端,服务端以二进制流的方式读写     代码:客户端form enctype="multipart/form-data&quo