教你怎样用Oracle方便地查看报警日志错误
在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题。
一:备份并清除告警日志内容
将每天的告警日志备份好,然后进行清除。
1:备份报警日志
在$ORACLE_HOME/SID/bdump/ 目录下,
按日期备份alert_ORACLE_你的实例名.LOG这个文件,如:alert_ORACLE_orcl_201408111639_bak.LOG。
2:清除日志内容
打开报警日志文件,用true>文件名可清除掉里面的内容
具体示例:
假如,我现在第一次进行该设置,我先把现有的告警日志进行备份,如:
--备份文件名称:今天16点24分前的告警日志信息
[oracle@rac2bdump]$cpalert_orcl2.logalert_orcl2_before_201408111624_bak.log
-清空报警日志
[oracle@rac2bdump]$true>alert_orcl2.log
现在告警日志是空的。
切换下归档日志,检查报警日志里是否出现了新内容:
SQL>altersystemswitchlogfile; Systemaltered.
则现在alert_orcl2.log记录的是2014年8月11日16点24分后至你下次对报警日志进行备份,截取前的信息。
二:建外部表查看报警日志错误
如果已建立了一个用户,并赋相应的权限,所以直接建立目录对象并建立外部表就可以了。
1.建立目录对象
SQL>conntest/123
Connected. SQL>createdirectorybdumpas'/oracle/u01/app/oracle/admin/db2/bdump'; Directorycreated.
2.建立外部表
SQL>createtablealert_log( textvarchar2(400) )organizationexternal (typeoracle_loader defaultdirectorybdump accessparameters (recordsdelimitedbynewline )location('alert_db2.log') );
3.测试首先查看能否查到alert_db2.log的内容
SQL>select*fromalert_logwhererownum<10; TEXT -------------------------------------------------------------------------------- ThuJun1100:51:462009 StartingORACLEinstance(normal) Cannotdeterminealldependentdynamiclibrariesfor/proc/self/exe Unabletofinddynamiclibrarylibocr10.soinsearchpaths RPATH=/ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/a de/aime1_build2101/oracle/has/lib/: LD_LIBRARY_PATHisnotset! Thedefaultlibrarydirectoriesare/liband/usr/lib Unabletofinddynamiclibrarylibocrb10.soinsearchpaths Unabletofinddynamiclibrarylibocrutl10.soinsearchpaths 9rowsselected.
测试成功
然后我们测试查报警信息'ORA-%'
SQL>select*fromalert_logwheretextlike'ORA-%'; TEXT -------------------------------------------------------------------------------- ORA-00202:controlfile:'/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2 .dbf' ORA-27037:unabletoobtainfilestatus ORA-205signalledduring:ALTERDATABASEMOUNT... ORA-00301:errorinaddinglogfile'/home/oracle/oracle/oradata/testdb/redo01.l og'-filecannotbecreated ORA-27040:filecreateerror ORA-1501signalledduring:CREATEDATABASEdb2 ORA-00200:controlfilecouldnotbecreated TEXT -------------------------------------------------------------------------------- ORA-00202:controlfile:'/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2 .dbf' ORA-27038:createdfilealreadyexists ORA-1501signalledduring:CREATEDATABASEdb2 ORA-00200:controlfilecouldnotbecreated ORA-00202:controlfile:'/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2 .dbf' ORA-27038:createdfilealreadyexists ORA-1501signalledduring:CREATEDATABASEdb2
--假如,你的报警日志文件只包含今天的信息(可以通过备份并清除告警日志内容实现),则通过外部表可以查到当天产生了哪些错误。