--================================================
-- 使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
--================================================
Oracle 告警日志时DBA维护数据库经常需要关注的一部分内容。然而告警日志以文本文件,按时间的先后顺序不断累积的形式来存储,久而
久之,势必造成告警日志的过大,难于维护和查找相关的信息。使用外表表方式来管理告警日志将大大简化维护工作量,也更直关的获取所需的
信息。
有关外部表的使用请参考:Oracle 外部表
一、告警日志的内容
消息和错误的类型(Types of messages and errors)
ORA-600内部错误(ORA-600 internal errors that need immediate support from Oracle's customer support )'
ORA-1578块损坏错误(ORA-1578 block corruption errors that require recovery)
ORA-12012(作业队列错误(ORA-12012 job queue errors)
实例启动关闭,恢复等信息(STARTUP & SHUTDOWN, and RECOVER statement execution messages)
特定的DDL命令(Certain CREATE, ALTER, & DROP statements )
影响表空间,数据文件及回滚段的命令(Statements that effect TABLESPACES, DATAFILES, and ROLLBACK SEGMENTS )
可持续的命令被挂起(When a resumable statement is suspended )
LGWR不能写入到日志文件(When log writer (LGWR) cannot write to a member of a group )
归档进程启动信息(When new Archiver Process (ARCn) is started )
调度进程的相关信息(Dispatcher information)
动态参数的修改信息(The occurrence of someone changing a dynamic parameter)
二、建立外部表
1.查看后台日志路径
sys@ORCL> show parameter %b%_dump_dest --此可以省略,在后面直接用脚本cre_ext_tb.sql 实现
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string /u01/oracle/admin/orcl/bdump
2.创建用户并赋予特定的权限,并创建数据库目录
sys@ORCL> create user usr1 identified by usr1 --创建帐户usr1
2 temporary tablespace temp
3 default tablespace users
4 quota unlimited on users;
sys@ORCL> grant connect,resource to usr1; --为帐户usr1授予connect,resource角色
sys@ORCL> grant create any directory to usr1; --为帐户usr1授予创建目录的权限
sys@ORCL> conn usr1/usr1 --使用usr1连接数据库
3.下面使用脚本来完成对告警日志的跟踪及管理
脚本描述
cre_ext_tb.sql
主要是创建了一个alert_log表用于存放告警日志的重要信息,一个外部表alert_log_disk使得查看告警日志可以直接在本地数据
库中完成。
update_alert_log.sql
用于从外部表将重要信息经过过滤并且将没有存放到alert_log表中的最新信息更新到alert_log表。
4.使用下面的脚本来创建alert_log表及alert_log_disk外部表
usr1@ORCL> get /u01/bk/scripts/cre_ext_tb.sql --查看建表的代码
1 define alert_length="500"
2 drop table alert_log;
3 create table alert_log ( --创建表alert_log用于存放告警日志的重要信息
4 alert_date date,
5 alert_text varchar2(&&alert_length)
6 )
7 storage (initial 512k next 512K pctincrease 0);
8 create index alert_log_idx on alert_log(alert_date) --为表alert_log创建索引
9 storage (initial 512k next 512K pctincrease 0);
10 column db new_value _DB noprint;
11 column bdump new_value _bdump noprint;
12 select instance_name db from v$instance; --获得实例名以及告警日志路径
13 select value bdump from v$parameter
14 where name ='background_dump_dest';
15 drop directory BDUMP;
16 create directory BDUMP as '&&_bdump';
17 drop table alert_log_disk;
18 create table alert_log_disk ( text varchar2(&&alert_length) ) --创建外部表
19 organization external (
20 type oracle_loader
21 default directory BDUMP
22 access parameters (
23 records delimited by newline nologfile nobadfile
24 fields terminated by "&" ltrim
25 )
26 location('alert_&&_DB..log')
27 )
28* reject limit unlimited;
usr1@ORCL> start /u01/bk/scripts/cre_ext_tb.sql --执行建表的代码
5.使用下面的脚本填充alert_log表
usr1@ORCL> get /u01/bk/scripts/update_alert_log.sql --脚本update_alert_log.sql用于将外部表的重要信息填充到alert_log
1 set serveroutput on
2 declare
3 isdate number := 0;
4 start_updating number := 0;
5 rows_inserted number := 0;
6 alert_date date;
7 max_date date;
8 alert_text alert_log_disk.text%type;
9 begin
10 /* find a starting date */
11 select max(alert_date) into max_date from alert_log;
12 if (max_date is null) then
13 max_date := to_date('01-jan-1980', 'dd-mon-yyyy');
14 end if;
15 for r in (
16 select substr(text,1,180) text from alert_log_disk --使用for循环从告警日志过滤信息
17 where text not like '%offlining%'
18 and text not like 'ARC_:%'
19 and text not like '%LOG_ARCHIVE_DEST_1%'
20 and text not like '%Thread 1 advanced to log sequence%'
21 and text not like '%Current log#%seq#%mem#%'
22 and text not like '%Undo Segment%lined%'
23 and text not like '%alter tablespace%back%'
24 and text not like '%Log actively being archived by another process%'
25 and text not like '%alter database backup controlfile to trace%'
26 and text not like '%Created Undo Segment%'
27 and text not like '%started with pid%'
28 and text not like '%ORA-12012%'
29 and text not like '%ORA-06512%'
30 and text not like '%ORA-000060:%'
31 and text not like '%coalesce%'
32 and text not like '%Beginning log switch checkpoint up to RBA%'
33 and text not like '%Completed checkpoint up to RBA%'
34 and text not like '%specifies an obsolete parameter%'
35 and text not like '%BEGIN BACKUP%'
36 and text not like '%END BACKUP%'
37 )
38 loop
39 isdate := 0;
40 alert_text := null;
41 select count(*) into isdate --设定标志位,用于判断改行是否为时间数据
42 from dual
43 where substr(r.text, 21) in ('2009','2010','2011','2012','2013')
44 and r.text not like '%cycle_run_year%';
45 if (isdate = 1) then --将时间数据格式化
46 select to_date(substr(r.text, 5),'Mon dd hh24:mi:ss rrrr')
47 into alert_date
48 from dual;
49 if (alert_date > max_date) then --设定标志位用于判断是否需要update
50 start_updating := 1;
51 end if;
52 else
53 alert_text := r.text;
54 end if;
55 if (alert_text is not null) and (start_updating = 1) then --start_updating标志位与alert_text为真,插入记录
56 insert into alert_log values (alert_date, substr(alert_text, 1, 180));
57 rows_inserted := rows_inserted + 1;
58 commit;
59 end if;
60 end loop;
61 sys.dbms_output.put_line('Inserting after date '||to_char(max_date, 'MM/DD/RR HH24:MI:SS'));
62 sys.dbms_output.put_line('Rows Inserted: '||rows_inserted);
63 commit;
64* end;
65
usr1@ORCL> start /u01/bk/scripts/update_alert_log.sql
Inserting after date 01/01/80 00:00:00
Rows Inserted: 632
PL/SQL procedure successfully completed.
基于上述方法,可以定期将告警日志更新到本地数据库,然后清空告警日志文件
三、查看告警日志的内容
1.修改会话日期的显示格式
usr1@ORCL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
2.查看告警日志的信息
usr1@ORCL> select * from alert_log where rownum < 5;
ALERT_DATE ALERT_TEXT
------------------- --------------------------------------------------------------------------------
2011-02-14 21:36:11 SYS auditing is disabled
2011-02-14 21:36:11 ksdpec: called for event 13740 prior to event group initialization
2011-02-14 21:36:11 Starting up ORACLE RDBMS Version: 10.2.0.1.0.
2011-02-14 21:36:11 System parameters with non-default values:
3.查看告警日志最新的5条信息
usr1@ORCL> select * from alert_log where rownum < 5 order by alert_date desc;
ALERT_DATE ALERT_TEXT
------------------- --------------------------------------------------------------------------------
2011-02-14 21:36:11 SYS auditing is disabled
2011-02-14 21:36:11 ksdpec: called for event 13740 prior to event group initialization
2011-02-14 21:36:11 Starting up ORACLE RDBMS Version: 10.2.0.1.0.
2011-02-14 21:36:11 System parameters with non-default values:
4.查看告警日志ORA错误信息
usr1@ORCL> select * from alert_log where alert_text like 'ORA-%';
ALERT_DATE ALERT_TEXT
------------------- --------------------------------------------------------------------------------
2011-02-14 21:36:13 ORA-00202: control file: '/u01/oracle/oradata/orcl/control03.ctl'
2011-02-14 21:36:13 ORA-27037: unable to obtain file status
2011-02-14 21:36:13 ORA-205 signalled during: ALTER DATABASE MOUNT...
2011-02-14 21:36:23 ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...
2011-02-14 21:36:27 ORA-00202: control file: '/u01/oracle/oradata/orcl/control03.ctl'
四、更多参考
有关闪回特性请参考
Oracle 闪回特性(FLASHBACK DATABASE)
Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle 闪回特性(Flashback Query、Flashback Table)
Oracle 闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考:
Oracle 冷备份
Oracle 热备份
Oracle 备份恢复概念
Oracle 实例恢复
Oracle 基于用户管理恢复的处理(详细描述了介质恢复及其处理)
有关RMAN的恢复与管理请参考:
RMAN 概述及其体系结构
RMAN 配置、监控与管理
RMAN 备份详解
RMAN 还原与恢复
有关Oracle体系结构请参考:
Oracle 实例和Oracle数据库(Oracle体系结构)
Oracle 表空间与数据文件
Oracle 密码文件
Oracle 参数文件
Oracle 数据库实例启动关闭过程
Oracle 联机重做日志文件(ONLINE LOG FILE)
Oracle 控制文件(CONTROLFILE)
Oracle 归档日志
分享到:
相关推荐
具体而言,它会将当前的`alert_$ORACLE_SID.log`文件内容追加到一个新的文件`alert_${ORACLE_SID}_${DATE}.log`中,并清空原`alert_$ORACLE_SID.log`文件的内容,以此来达到日志文件按日期进行切割的目的。...
Oracle数据库是企业级应用中广泛使用的数据库管理系统之一,为了确保数据库系统的稳定运行和快速定位问题,掌握Oracle数据库日志查看方法至关重要。本文将详细介绍如何查看Oracle数据库中的各种日志文件,并提供具体...
nls_charset12.jar 之前在csdn上下载的这个文件有问题,导致程序调试了很久 我这边上传这个没有问题
6. **告警配置**:在Grafana或Prometheus中创建告警规则,当特定指标超过阈值时,触发警报通知。 总的来说,OracleDB Exporter作为一款强大的Oracle数据库监控工具,不仅提供了丰富的监控指标,而且具有良好的可...
oracle-xe-client_10.2.0.1-1.0_i386.deb
### Oracle的日志管理攻略 #### 一、Oracle数据库的日志管理 **1.1 日志文件的作用** 在Oracle数据库管理中,日志文件扮演着极其重要的角色。它们不仅记录了数据库的各种活动,还帮助数据库管理员(DBA)及时发现并...
修改 Oracle_sid 和 db_name 名字 在 Oracle 数据库中,sid 和 db_name 是两个非常重要的参数,分别表示数据库实例名和数据库名字。修改这两个参数需要谨慎,因为它们对数据库的运行和性能有着直接的影响。在本文中...
Oracle 日志分析工具 LogMiner 是 Oracle 数据库中的一种功能强大且灵活的日志分析工具,它可以帮助数据库管理员、开发人员和用户快速地对数据库进行日志分析和问题诊断。下面是对 LogMiner 的详细介绍和使用方法。 ...
- 表空间与存储管理:创建、扩展和管理表空间,了解数据块、段、区和表空间的关系。 - 用户与权限管理:创建用户、角色,分配权限,理解默认对象权限和系统权限。 3. 高可用性与灾难恢复: - RAC(Real ...
### Oracle 查看谁锁表知识点详解 在Oracle数据库管理中,锁定是确保数据一致性与并发控制的重要机制之一。当一个用户或进程对某张表进行更新操作时,可能会导致其他用户无法对该表进行读写操作,这就产生了锁。...
这篇指南将教你如何方便地查看和管理Oracle的报警日志,包括备份、清除以及通过外部表进行查询。 首先,备份和清除报警日志是维护数据库健康状态的基础步骤。在Oracle的默认安装路径 `$ORACLE_HOME/SID/bdump/` 下...
oracle-instantclient-basic-11.1.0.1-1.x86_64.rpm
### Oracle日志学习知识点 ...通过以上介绍可以看出,Oracle日志管理对于确保数据库系统的稳定运行至关重要。合理地管理和维护Oracle日志不仅可以帮助我们快速定位问题,还可以提高系统的整体性能。
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。在安装Oracle过程中可能会遇到各种问题,例如“ORA-12557: TNS: 协议适配器不可加载”这样的错误。这个错误通常表示系统...
ODAC(Oracle Data Access Components)是Oracle公司提供的一套用于.NET框架的数据访问组件,它使得.NET开发者无需安装完整的Oracle客户端就能连接到Oracle数据库。"ODAC112040Xcopy_32bit.zip"这个文件是一个针对32...
oracleasm-support-2.1.8-1.el6.x86_64.rpm
Oracle_win32_11gR2_client Oracle 32位客户端 下载链接
头文件:/usr/include/oracle/11.2/client64/ 下,如果在使用时报错找不到头文件,记得看路径是否是这个。 包文件:/usr/lib/oracle/11.2/client64/ 下,包含{bin、lib}两个文件夹; 1.3 创建文件夹: #mkdir -p /...
Oracle 11.2.0.4 客户端安装包是专为Linux x64平台设计的数据库访问工具,包含三个主要组件:Basic、SDK和SQL*Plus,这些都是Oracle数据库用户和开发者不可或缺的部分。 首先,`instantclient-basic-linux.x64-11.2...
下面将详细介绍如何利用Oracle的重做日志(Redo Log)和归档日志(Archived Logs)来分析数据库的变更记录。 ### Oracle日志系统概览 Oracle数据库的日志系统主要包括重做日志(Redo Log)和归档日志(Archived ...