51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4045|回复: 2
打印 上一主题 下一主题

原创数据库错误追踪专题

[复制链接]
  • TA的每日心情
    擦汗
    2019-7-20 17:20
  • 签到天数: 143 天

    连续签到: 1 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2014-7-17 16:20:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1.知识要点:
    oracle常见错误类型
    oracle 错误解决思路
    2.数据库的错误类型
    数据库安装时的错误
    数据库运行时的错误
    网络错误

    3.数据库安装时会产生如下的错误
    不能启动安装程序(Oracle Universal Installer)
    安装时出现乱码
    先决条件检查没有通过
    不能写临时目录(/tmp)
    安装完成后不能启动数据库
    ……
    4.数据库运行时的错误
    不能启动数据库
    不能关闭数据库
    数据库被挂起(死机)
    不能扩展表空间
    不能往数据库中插入数据
    不能删除表空间

    5.网络错误
    连接数据库时,提示:TNS-12541 : TNS:no listener(没有**器)
    连接数据库时,报告ORA-12170: TNS:Connect timeout occurred
    启动**器时,提示:TNS-12545 : Connect failed because target host or object does not exist  ?
    连接数据库时,报告ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
    连接数据库时,报告TNS-03505 Failed to resolve name
    协议适配器错误(ORA-12560: TNS:protocol adapter error)

    6.数据库错误的追踪方法
    6.1数据库安装时的错误追踪方法
    6.2数据库常规错误的追踪方法
    6.3网络错误的追踪方法

    数据库安装时,会产生千奇百怪的错误,对于大部分错误来说,解决的过程都很类似。
    (1)解决的过程如下:
    首先,查看操作系统的日志文件(跟踪文件)
    其次,查看Oracle Universal Installer(OUI)生成的日志文件
    最后,综合操作系统日志文件和OUI的日志文件,找出问题的所在
    (2)查看操作系统的日志文件
           每个操作系统都有自己的日志文件和跟踪文件,这些操作系统文件记录了操作系统的系统级改变和错误信息,从这些文件中,我们能够获得一些提示,这些提示能够帮助我们分析和定位数据库安装和运行中出现的问题
    (3)操作系统日志文件的读取方式
    大部分日志文件可以直接读取(使用命令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        记录当前登录在主机上的用户

    查看Oracle Universal Installer生成的日志文件
    Step01:找到文件Inventory的位置。
    这个位置,一般从环境变量中查找获得。

    Step02:进入Inventory目录,找到安装日志
    $ cd /opt/oracle/oraInventory
    $ cd logs

    Step03: 查看安装日志文件的内容。
    $ more installActions2013-05-15_12-22-15PM.log

    数据库常规错误的追踪方法
    数据库常规错误的追踪,主要查看两类文件:
    一类是数据库的警报文件(Alert log Files)
    另外一类是数据库的跟踪文件(Trace Log Files)

    警报文件(Alert log Files)介绍
    警报日志文件,本书简称警报文件,它用于记录数据库的重大活动和发生的错误。警报文件按照时间的先后记录发生的事件。特别注意的是,警报文件除了记录数据库中发生的错误外,还记录数据库中发生的重大事件。警报文件记录的内容如下:
    每次数据库启动(STARTUP)和关闭(SHUTDOWN)的详细信息。
    DBA执行的某些管理操作,如:ALTER SYSTEM , ALTER DATABASE。
    某些数据库错误,如Oracle的内部错误(ORA-600),空间错误等。
    共享服务器相关的信息和错误。
    值是非默认值的初始化参数(Initialization Parameters)信息。
    物化视图(materialized view)自动刷新产生的错误。
          通过这些信息,我们可以了解数据库发生的重大事件和错误。警报文件是DBA
    使用最频繁 的文件,DBA常常参考这个文件进行故障排查。      

    警报文件的位置
    警报文件的名字的格式是alertSID.log,其中,SID表示实例名(Instance)。警报文件的位置由初始化参数BACKGROUND_DUMP_DEST指定。
    跟踪文件(Trace Log Files)介绍
    跟踪日志文件,本书叫“跟踪文件“,每个服务器进程和后台进程都写跟踪文件。当一个后台进程检测到错误的时候,Oracle会把错误信息写到跟踪文件中。因此,检查跟踪文件的内容,就可以知道后台进程运行中是否产生错误。
         跟踪信息被写到两个目录,和后台进程(Background Processes)相关的信息被写到初始化参数BACKGROUND_DUMP_DEST指定目录;和服务器进程(Server Processes)相关的信息被写到初始化参数USER_DUMP_DEST指定的目录。跟踪文件的名字在每种操作系统上会有不同,但是,每个跟踪文件的名字都包含进程的名字(如:LGWR)。
        如果数据库长时间运行,跟踪文件会变得越来越大。我们可以手工清除跟踪文件,也可以限制跟踪文件的大小。Oracle的初始化参数MAX_DUMP_FILE_SIZE用于限制跟踪文件的大小。MAX_DUMP_FILE_SIZE的格式如下:
           MAX_DUMP_FILE_SIZE = { integer [K | M] | UNLIMITED
    K | M表示单位,可以把跟踪文件的大小设置在多少K,多少M,也可以设置跟踪文件可以无限制(UNLIMITED)增长。

    数据库常规错误的追踪方法(总结)
    通常,我们首先查看警报文件和跟踪文件,看看这两个文件是否有异常。如果信息还不足够用于诊断错误的所在,我们可以查看操作系统的日志文件,然后再结合当前数据库的各种状态,相信我们定能解决数据库的故障。

    网络错误的追踪方法
    引起客户端不能访问数据库的原因很多,有软件问题,也有硬件问题。有操作系统本身的问题,也有应用程序的问题,也可能是防火墙的问题。但是,多数情况,都是用户配置不当所致。无论什么网络错误,我们都可以按照下面的原则去侦测网络问题。
    第一步: ping目标主机
    用操作系统命令ping目标主机 ,看看目标主机是否存在。
    C:\Users\>ping 10.137.83.18
    正在 Ping 10.137.83.18 具有 32 字节的数据:
    来自 10.137.83.18 的回复: 字节=32 时间<1ms TTL=252
    来自 10.137.83.18 的回复: 字节=32 时间=1ms TTL=252
    来自 10.137.83.18 的回复: 字节=32 时间<1ms TTL=252
    来自 10.137.83.18 的回复: 字节=32 时间<1ms TTL=252
    10.137.83.18 的 Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 0ms,最长 = 1ms,平均 = 0ms
    一般情况,我们从这里基本就可以断定问题的所在。
    如果ping的结果是“Request timed out”,表示客户端到目标主机(10.137.83.18)的网络不通。这时候,需要解决操作系统这一层的网络连接问题。如果不是操作系统的网络问题,我们再查看问题是不是出在Oracle这一层。
      ping不通可能有下面的原因
    客户端的网卡物理故障
    客户端的网卡设置不当
    客户端的防火墙限制
    网线断裂
    服务器的网卡物理故障
    服务器的网卡设置不当
    服务器的防火墙限制

    第二步: 执行tnsping命令
    C:\Users\>tnsping mmsgdb18

    TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 20-8月 -
    2013 13:46:00

    Copyright (c) 1997, 2007, Oracle.  All rights reserved.

    已使用的参数文件:
    C:\app\product\11g\network\admin\sqlnet.ora


    已使用 TNSNAMES 适配器来解析别名
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.8
    3.18)(PORT = 1526)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mmsgdb)
    ))
    OK (170 毫秒)

    tnsping命令主要用于测试客户端是否能够连接到**器

    第三步: 查看**器状态
    oracle@MMSG:~> lsnrctl status

    LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 20-8月 -2013 21:45:14

    Copyright (c) 1991, 2011, Oracle.  All rights reserved.

    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
    Start Date                25-7月 -2013 21:53:04
    Uptime                    25 days 23 hr. 52 min. 9 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /opt/oracrs/product/11gR2/grid/network/admin/listener.ora
    Listener Log File         /opt/oracrs/base/diag/tnslsnr/MMSG/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.137.83.18)(PORT=1521)))
    Services Summary...
    Service "mmsgdb" has 1 instance(s).
      Instance "mmsgdb", status READY, has 1 handler(s) for this service...
    The command completed successfully

    第四步: 查看**器配置文件
    **器启动的时候,会读取一个叫listener.ora的文件,这个文件叫“**器配置文件”,这个文件指定**器所在的主机,**器**的实例名,**的端口号,**的协议等信息。这个文件的内容类似于下:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = mmsgdb)
          (ORACLE_HOME = /opt/oracle/product/db)
          (SID_NAME = mmsgdb)
        )
      )
    LISTENER =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.83.18)(PORT = 1521))
      )
    LISTENER是**器的名字,我们也可以使用别的名字;
    ORACLE_HOME 是oracle的主目录;
    SID_NAME **器**的数据库的实例名。本例中的实例是mmsgdb;
    PROTOCOL **器**的协议。本例中使用的是TCP/IP协议;
    HOST 指定数据库服务器的主机名或者IP地址。本例中的数据库服务器的IP地址是10.137.83.18;
    PORT 指定**器使用的端口号,默认的端口号是1521。
    第五步: 查看客户端网络配置文件tnsnames.ora
    客户端网络配置文件tnsnames.ora的样例如下,这个文件定义了网络服务名MMSGDB。
    MMSGDB =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.83.18)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = mmsgdb)
        )
      )
    PROTOCOL 用于指定使用的协议。本例中使用的是TCP/IP。
    HOST 指定数据库服务器的主机名或者IP地址。本例中的数据库服务器的IP地址是10.137.83.18)
    PORT 指定**器使用的端口号,默认的端口号是1521。
    SERVICE_NAME 指定请求的数据库的实例名。本例中请求的实例是mmsgdb。
    第六步: 查看Oracle网络的日志文件

    如果完成前面的步骤,还是不能诊断出网络故障,我们可以查看Oracle网络的日志文件,从这些文件,我们能够获得更多的信息,这些文件如下:
    listener.log                         Listener
    sqlnet.log                         Client or Database Server
    instance-name_pid.log          Oracle Connection Manager listener


    “数据库错误追踪专题”总结
    有时候我们会碰到一些疑难问题,按照上面的方法难以解决,我们可以到国外的网站进行搜索,一般情况下,国外的同行也会遇到类似的问题。有时候,从国外的网站不能够直接搜索到答案,但是我们还是要去搜索,因为从国外同行的帖子中,我们能够获得一些启示。
         如果从网上不能解决我们的疑难问题,我们只好耐心拜读ORACLE公司的大作(官方文档),你要知道,这是一切ORACLE知识的源泉。以ORACLE的官方文档为工具,开动我们的大脑,相信我们一定能够找出解决问题的办法。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2014-7-17 16:46:15 | 只看该作者
    1.知识要点:
    oracle常见错误类型
    oracle 错误解决思路
    2.数据库的错误类型
    数据库安装时的错误
    数据库 ...
    丰卉者 发表于 2014-7-17 16:20


    不错的分享,支持下~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2014-7-17 16:52:13 | 只看该作者
    这是数据库产品方面的测试功能点吗?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 15:12 , Processed in 0.073460 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表