数据库错误追踪专题 -- 赵振平 ( 大部分内容摘自《 Oracle 数据库精讲与疑难解析》一书 )

Slides:



Advertisements
Similar presentations
校园网的基本使用和 常见问题 主讲:高 健 信息部.
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
奥田2016年经销商大会传播方案.
欢迎各位网管员参加培训!
6 Copyright © Oracle Corporation, All rights reserved. 维护控制文件.
2012單位主機及電腦教室管理人員資訊安全管理會議
《电算化会计》形成性考核 简易操作流程.
伺服器網路檢測與管理 資訊中心網路管理組 王裕仁 2006/06/29.
实验八 配置动态路由-OSPF协议.
Oracle数据库 Oracle 子程序.
第四次大作业 登陆学校图书馆网站的电子数据库
在PHP和MYSQL中实现完美的中文显示
Advance Health Check Sample ALT zhanquan
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Oracle数据库入门.
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
Oracle9i数据库专题培训 第三讲(数据库配置) 朱华廷(9i OCP)
SVN的基本概念 柳峰
AngularJS -- 使用AngularJS进行开发
第二讲 搭建Java Web开发环境 主讲人:孙娜
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
SQL Injection.
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
S 数控机床故障诊断与维修.
如何下载英飞凌单片机相关资料? 中英文用户手册、数据手册、应用笔记等.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
ENS 10.1安装配置指南 王俊涛 | SE.
Windows 7 的系统设置.
VSS使用简介 王树升
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
NoteExpress进阶 宋敏 电子资源部
第二章 登录UNIX操作系统.
Web安全基础教程
第四章 团队音乐会序幕: 团队协作平台的快速创建
可愛的鍬形蟲 五年四班2.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
教育部 财政部 网络教育数字化学习资源中心平台系统 安装与配置
Web安全基础教程
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
Visual Basic程序设计 第13章 访问数据库
SpringerLink数据库使用说明 上海师范大学图书馆
Python 环境搭建 基于Anaconda和VSCode.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
实验六静态路由.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
JUDDI安装手册.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

数据库错误追踪专题 -- 赵振平 ( 大部分内容摘自《 Oracle 数据库精讲与疑难解析》一书 )

数据库的错误类型 数据库安装时的错误 数据库运行时的错误 网络错误 …

数据库安装时会产生如下的错误 不能启动安装程序( Oracle Universal Installer ) 安装时出现乱码 先决条件检查没有通过 不能写临时目录( /tmp ) 安装完成后不能启动数据库 ……

数据库运行时的错误 不能启动数据库 不能关闭数据库 数据库被挂起(死机) 不能扩展表空间 不能往数据库中插入数据 不能删除表空间 …

网络错误 连接数据库时,提示: TNS : TNS:no listener (没有监听器) 连接数据库时,报告 ORA-12170: TNS:Connect timeout occurred 启动监听器时,提示: TNS : 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 Failed to resolve name 协议适配器错误( ORA-12560: TNS:protocol adapter error ) …

数据库错误的追踪方法 数据库安装时的错误追踪方法 数据库常规错误的追踪方法 网络错误的追踪方法 …

数据库安装时的错误追踪方法 数据库安装时,会产生千奇百怪的错误, 对于大部分错误来说,解决的过程都很类 似。 解决的过程如下: 首先,查看操作系统的日志文件 ( 跟踪文件 ) 其次,查看 Oracle Universal Installer(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 记录当前登录在主机上的用户

查看 Oracle Universal Installer 生成的日志文件 Step01 :找到文件 oraInst.loc 。 oraInst.loc 文件的位置如下:  对于 AIX , Linux x86 , or Linux Itanium : 文件的位置是 /etc/oraInst.loc  对于其它 UNIX 操作系统: 文件的位置是 /var/opt/Oracle/oraInst.loc 从文件 oraInst.loc 中,找到 Inventory 的位置。 $ cat /var/opt/Oracle/oraInst.loc inventory_loc=/Oracle/app/Oracle/oraInventory inst_group=oinstall 这里的 Inventory 目录是 /Oracle/app/Oracle/oraInventory Step02 :进入 Inventory 目录,找到安装日志 $ cd /Oracle/app/Oracle/oraInventory $ cd logs Step03 : 查看安装日志文件的内容 。 $ more installActions _ PM 。 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 )增长。

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

网络错误的追踪方法 引起客户端不能访问数据库的原因很多,有软件 问题,也有硬件问题。有操作系统本身的问题,也有 应用程序的问题,也可能是防火墙的问题。但是,多 数情况,都是用户配置不当所致。无论什么网络错误, 我们都可以按照下面的原则去侦测网络问题。

第一步: ping 目标主机 用操作系统命令 ping 目标主机 ,看看目标主机是否存在。 C:\Documents and Settings\netshong>ping Pinging with 32 bytes of data: Request timed out. Ping statistics for : Packets: Sent = 4, Received = 0, Lost = 4 (100% loss) 一般情况,我们从这里基本就可以断定问题的所在。 如果 ping 的结果是 “Request timed out” ,表示客户端到目标主机 ( ) 的网络不通。这时候,需要解决操作系统这一层的网络连 接问题。如果不是操作系统的网络问题,我们再查看问题是不是出在 Oracle 这一层。 ping 不通可能有下面的原因 客户端的网卡物理故障 客户端的网卡设置不当 客户端的防火墙限制 网线断裂 服务器的网卡物理故障 服务器的网卡设置不当 服务器的防火墙限制

第二步: 执行 tnsping 命令 C:\Documents and Settings\Administrator>tnsping NNC TNS Ping Utility for 32-bit Windows: Version Production on 08-2 月 :12:10 Copyright (c) 1997, 2005, Oracle. All rights reserved. 已使用的参数文件 : D:\oracle_client\network\admin\sqlnet.ora 已使用 TNSNAMES 适配器来解析别名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = XXXX)(PORT = OK (60 毫秒 ) tnsping 命令主要用于测试客户端是否能够连接到监听器

第三步: 查看监听器状态  登陆监听器控件 C:\Documents and Settings\Administrator>lsnrctl LSNRCTL for 32-bit Windows: Version Production on 07-2 月 :34:07 Copyright (c) 1991, 2005, Oracle. All rights reserved. 欢迎来到 LSNRCTL, 请键入 "help" 以获得信息。 LSNRCTL>  显示监听器的状态 LSNRCTL> status 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521))) LISTENER 的 STATUS 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version Production 启动日期 08-2 月 :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 = )(PORT = 1521)) ) LISTENER 是监听器的名字,我们也可以使用别的名字。 ORACLE_HOME 是 Oracle 的主目录。 SID_NAME 监听器监听的数据库的实例名。本例中的实例是 nbo 。 PROTOCOL 监听器监听的协议。本例中使用的是 T C P / I P 协议。 HOST 指定数据库服务器的主机名或者 IP 地址。本例中的数据库服务器的 IP 地址是 PORT 指定监听器使用的端口号,默认的端口号是 1521 。

第五步: 查看客户端网络配置文件 tnsnames.ora 客户端网络配置文件 tnsnames.ora 的样例如下,这个文件定义了网络服务名 TONBO 。 TONBO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = nbo) ) PROTOCOL 用于指定使用的协议。本例中使用的是 T C P / I P 。 HOST 指定数据库服务器的主机名或者 IP 地址。本例中的数据库服务器的 IP 地 址是 ) PORT 指定监听器使用的端口号,默认的端口号是 1521 。 SERVICE_NAME 指定请求的数据库的实例名。本例中请求的实例是 nbo 。

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

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

《 Oracle 数据库精讲与疑难解析》一书的作者将在 中关村图书大厦举办数据库专题讲座 时间: 6 月 28 日,下午 1 点到 3 点 地点:中关村图书大厦 主题:《构建高速运行的 SQL 语句》 届时,期望对数据库感兴趣的朋友一起去探讨学习 数据库的体会和感受。。。

感谢 ITPUB 和电子工业出版社

Thanks !