您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > OracleErrorFind
数据库错误追踪专题--赵振平(大部分内容摘自《Oracle数据库精讲与疑难解析》一书)数据库的错误类型•数据库安装时的错误•数据库运行时的错误•网络错误•…数据库安装时会产生如下的错误•不能启动安装程序(OracleUniversalInstaller)•安装时出现乱码•先决条件检查没有通过•不能写临时目录(/tmp)•安装完成后不能启动数据库•……数据库运行时的错误•不能启动数据库•不能关闭数据库•数据库被挂起(死机)•不能扩展表空间•不能往数据库中插入数据•不能删除表空间•…网络错误•连接数据库时,提示:TNS-12541:TNS:nolistener(没有监听器)•连接数据库时,报告ORA-12170:TNS:Connecttimeoutoccurred•启动监听器时,提示:TNS-12545:Connectfailedbecausetargethostorobjectdoesnotexist?•连接数据库时,报告ORA-12505:TNS:listenerdoesnotcurrentlyknowofSIDgiveninconnectdescriptor•连接数据库时,报告TNS-03505Failedtoresolvename•协议适配器错误(ORA-12560:TNS:protocoladaptererror)•…数据库错误的追踪方法•数据库安装时的错误追踪方法•数据库常规错误的追踪方法•网络错误的追踪方法•…数据库安装时的错误追踪方法•数据库安装时,会产生千奇百怪的错误,对于大部分错误来说,解决的过程都很类似。解决的过程如下:首先,查看操作系统的日志文件(跟踪文件)其次,查看OracleUniversalInstaller(OUI)生成的日志文件最后,综合操作系统日志文件和OUI的日志文件,找出问题的所在查看操作系统的日志文件每个操作系统都有自己的日志文件和跟踪文件,这些操作系统文件记录了操作系统的系统级改变和错误信息,从这些文件中,我们能够获得一些提示,这些提示能够帮助我们分析和定位数据库安装和运行中出现的问题。操作系统日志文件的读取方式大部分日志文件可以直接读取(使用命令more,cat等)。有的操作系统日志文件要使用特殊的命令才能读取如:AIX,查看错误日志,使用errpt命令用more或者其它文本查看命令来查看errlog文件(AIX日志文件)我们看到的将是一堆乱码。操作系统日志文件的位置(LINUX)在LINUX中,/etc/syslog.conf记录了日志文件的位置。大部分日志文件都位于目录/var/log/之下。LINUX中存在如下日志文件。/var/log/messages将info或更高级别的消息写到该文件/var/log/maillog记录电子邮件相关的信息/var/log/boot.log记录系统启动相关的信息/var/log/cron记录系统中定时执行的任务相关的信息。。。还有其它日志文件,这里就不一一作介绍操作系统日志文件的位置(Solaris)Solaris的日志文件通常位于目录/var/adm下,Solaris有如下的日志文件:messags记录来自系统核心的各种运行日志syslog记录mail事件sulog记录普通用户使用su成为其它用户的记录utmp记录当前登录在主机上的用户查看OracleUniversalInstaller生成的日志文件Step01:找到文件oraInst.loc。oraInst.loc文件的位置如下:对于AIX,Linuxx86,orLinuxItanium:文件的位置是/etc/oraInst.loc对于其它UNIX操作系统:文件的位置是/var/opt/Oracle/oraInst.loc从文件oraInst.loc中,找到Inventory的位置。$cat/var/opt/Oracle/oraInst.locinventory_loc=/Oracle/app/Oracle/oraInventoryinst_group=oinstall这里的Inventory目录是/Oracle/app/Oracle/oraInventoryStep02:进入Inventory目录,找到安装日志$cd/Oracle/app/Oracle/oraInventory$cdlogsStep03:查看安装日志文件的内容。$moreinstallActions2006-07-19_11-21-21PM。log数据库常规错误的追踪方法数据库常规错误的追踪,主要查看两类文件。一类是数据库的警报文件(AlertlogFiles)另外一类是数据库的跟踪文件(TraceLogFiles)警报文件(AlertlogFiles)介绍警报日志文件,本书简称警报文件,它用于记录数据库的重大活动和发生的错误。警报文件按照时间的先后记录发生的事件。特别注意的是,警报文件除了记录数据库中发生的错误外,还记录数据库中发生的重大事件。警报文件记录的内容如下:每次数据库启动(STARTUP)和关闭(SHUTDOWN)的详细信息。DBA执行的某些管理操作,如:ALTERSYSTEM,ALTERDATABASE。某些数据库错误,如Oracle的内部错误(ORA-600),空间错误等。共享服务器相关的信息和错误。值是非默认值的初始化参数(InitializationParameters)信息。物化视图(materializedview)自动刷新产生的错误。通过这些信息,我们可以了解数据库发生的重大事件和错误。警报文件是DBA使用最频繁的文件,DBA常常参考这个文件进行故障排查。警报文件的位置警报文件的名字的格式是alertSID.log,其中,SID表示实例名(Instance)。警报文件的位置由初始化参数BACKGROUND_DUMP_DEST指定。跟踪文件(TraceLogFiles)介绍跟踪日志文件,本书叫“跟踪文件“,每个服务器进程和后台进程都写跟踪文件。当一个后台进程检测到错误的时候,Oracle会把错误信息写到跟踪文件中。因此,检查跟踪文件的内容,就可以知道后台进程运行中是否产生错误。跟踪信息被写到两个目录,和后台进程(BackgroundProcesses)相关的信息被写到初始化参数BACKGROUND_DUMP_DEST指定目录;和服务器进程(ServerProcesses)相关的信息被写到初始化参数USER_DUMP_DEST指定的目录。跟踪文件的名字在每种操作系统上会有不同,但是,每个跟踪文件的名字都包含进程的名字(如:LGWR)。如果数据库长时间运行,跟踪文件会变得越来越大。我们可以手工清除跟踪文件,也可以限制跟踪文件的大小。Oracle的初始化参数MAX_DUMP_FILE_SIZE用于限制跟踪文件的大小。MAX_DUMP_FILE_SIZE的格式如下:MAX_DUMP_FILE_SIZE={integer[K|M]|UNLIMITEDK|M表示单位,可以把跟踪文件的大小设置在多少K,多少M,也可以设置跟踪文件可以无限制(UNLIMITED)增长。数据库常规错误的追踪方法(总结)通常,我们首先查看警报文件和跟踪文件,看看这两个文件是否有异常。如果信息还不足够用于诊断错误的所在,我们可以查看操作系统的日志文件,然后再结合当前数据库的各种状态,相信我们定能解决数据库的故障。有关操作系统日志文件的详细信息,请参考前面的PPT网络错误的追踪方法引起客户端不能访问数据库的原因很多,有软件问题,也有硬件问题。有操作系统本身的问题,也有应用程序的问题,也可能是防火墙的问题。但是,多数情况,都是用户配置不当所致。无论什么网络错误,我们都可以按照下面的原则去侦测网络问题。第一步:ping目标主机用操作系统命令ping目标主机,看看目标主机是否存在。C:\DocumentsandSettings\netshongping192.168.200.38Pinging192.168.200.38with32bytesofdata:Requesttimedout.Pingstatisticsfor192.168.200.38:Packets:Sent=4,Received=0,Lost=4(100%loss)一般情况,我们从这里基本就可以断定问题的所在。如果ping的结果是“Requesttimedout”,表示客户端到目标主机(192.168.200.38)的网络不通。这时候,需要解决操作系统这一层的网络连接问题。如果不是操作系统的网络问题,我们再查看问题是不是出在Oracle这一层。ping不通可能有下面的原因客户端的网卡物理故障客户端的网卡设置不当客户端的防火墙限制网线断裂服务器的网卡物理故障服务器的网卡设置不当服务器的防火墙限制第二步:执行tnsping命令C:\DocumentsandSettings\AdministratortnspingNNCTNSPingUtilityfor32-bitWindows:Version10.2.0.1.0-Productionon08-2月-200716:12:10Copyright(c)1997,2005,Oracle.Allrightsreserved.已使用的参数文件:D:\oracle_client\network\admin\sqlnet.ora已使用TNSNAMES适配器来解析别名Attemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=OK(60毫秒)tnsping命令主要用于测试客户端是否能够连接到监听器第三步:查看监听器状态登陆监听器控件C:\DocumentsandSettings\AdministratorlsnrctlLSNRCTLfor32-bitWindows:Version10.2.0.1.0-Productionon07-2月-200720:34:07Copyright(c)1991,2005,Oracle.Allrightsreserved.欢迎来到LSNRCTL,请键入help以获得信息。LSNRCTL显示监听器的状态LSNRCTLstatus正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521)))LISTENER的STATUS------------------------别名LISTENER版本TNSLSNRfor32-bitWindows:Version10.2.0.1.0-Production启动日期08-2月-200709:56:52正常运行时间0天0小时20分27秒跟踪级别off。。。。。服务nbo包含2个例程。例程nbo,状态UNKNOWN,包含此服务的1个处理程序...例程nbo,状态READY,包含此服务的1个处理程序...服务nboXDB包含1个例程。例程nbo,状态READY,包含此服务的1个处理程序...服务nbo_XPT包含1个例程。例程nbo,状态READY,包含此服务的1个处理程序...命令执行成功第四步:查看监听器配置文件监听器启动的时候,会读取一个叫listener.ora的文件,这个文件叫“监听器配置文件”,这个文件指定监听器所在的主机,监听器监听的实例名,监听的端口号,监听的协议等信息。这个文件的内容类似于下:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=nbo)(ORACLE_HOME=D:\oracle\product\10.2.0\db_1)(SID_NAME=nbo)))LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.123.6)(PORT=1521)))LISTENER是监听器的名字,我们也可以使用别的名字。ORACLE_HOME是Oracle
本文标题:OracleErrorFind
链接地址:https://www.777doc.com/doc-3969791 .html