前言

  最近客户在测试新系统A时,遭遇ORA28,回话被终止的问题。

  先了解一下大致环境,系统A由系统B通过rman还原恢复,应用程序已经在系统B跑批通过,现在系统A上遇到下面问题。

  应用程序报错如下

  

  Oracle alert日志也有相关ORA 28报错

  

分析过程

  Oracle 官网对ORA 28解释如下,很明显此错误产生是由于正在执行的回话被kill掉,准确点说就是被语句alter system kill session 'xx,xx'杀掉。

那么问题来了,操作时没有DBA对此回话进行kill操作,难道数据库有相关设置,开始检查数据库相关项。

  [oracle@redhat3 ~]$ oerr ora 28

  00028, 00000, "your session has been killed"
  // *Cause: A privileged user has killed your session and you are no longer
  // logged on to the database.
  // *Action: Login again if you wish to continue working.

  1、检查监听文件配置,sqlnet.ora,并没有特殊参数配置,明显不是此处的问题。

  

  2、检查数据库资源配置,并没有配置resource_manager_plan参数,也不是此处的问题。

  

  3、静下来想想,数据库肯定不会自己执行alter system kill session,既然数据库方面没有问题,那就从客户端应用方面开始查找问题。

  4、检查客户端sqlnet.ora配置,无异常。

  

  5、现在就剩下前台应用程序没有检查,由于前台应用程序为C++编写,生成了一个.exe执行程序,并不能直接看到其业务逻辑,好在可以通过其他方法查看

部分代码,首先将AAAA.exe单独复制出来,修改其后缀名AAAA.txt,这样用txt记事本的方式打开,就会出现下面代码,虽然是乱码,但还有部分可以查看,搜索

kill sesion相关语句,果然查到相关kill sesion语句,至此,问题来源基本查明,剩下的移交给应用商,检查业务逻辑就可以了。

  

  6、最后的深思,为什么系统A由系统B还原恢复所得,而系统B确没有问题,后来听应用说明才知道,系统B后来是经过补丁升级,所以避开了kill session的

逻辑处理,并没有对测试系统A进行升级。。。。。。倒腾这么久,竟是应用的一不留神。

总结

  虽说问题是由应用商大意所致,但是从此次问题的排查过程,可以收获一下几点:

  1、在分析问题时,例如ORA报错,首先分析其报错触发原因,在分析谁能触发此报错

  2、排查问题时,从多方面入手,数据库和应用都可能触发,不要一看ORA就把问题定位到数据库服务器

  3、对应用不了解的情况下,可从其他方面探查。

  下面附上ORA28报错的情景重现。

  

Session 1
================
SQL> select SID, SERIAL# from v$session where sid=(select distinct sid from v$mystat); SID SERIAL#
---------- ----------
63 7 SQL> declare
2 pp number;
3 begin
4 for i in 1..1000000 loop
5 select count(1) into pp from SYS_TEST; <<<<<<<<<<Runing the scripts then kill session in the session 2
6 end loop;
7 end;
8 / Session 2
================
SQL> alter system kill session '63,7'; System altered. Alert log
============
Thu Apr 18 07:39:04 2019
opiodr aborting process unknown ospid (30547) as a result of ORA-28

  

一起ORA-00028案例的处理过程的更多相关文章

  1. Oracle ORA 12541 报错解决过程

    Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...

  2. 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01

    百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...

  3. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  4. 快速入门GreenDao框架并实现增删改查案例

    大家的项目中不可避免的使用到SQLite,为此我们要花费心思编写一个增删改查框架.而一个好的ORM框架则能够给我们带来极大的方便,今天给大家讲解一个非常火热的ORM-GreenDao. 基本概念 Gr ...

  5. D3js初探及数据可视化案例设计实战

    摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...

  6. JavaWeb:基于MVC设计模式的一个小案例(一)

    (未经允许,请勿转载,谢谢.) 本案例的处理过程: 客户端发送一个请求给服务器,服务器把这个请求给Servlet,Servlet 获取请求信息,根据请求信息的情况去调用 model (在这里是一个普通 ...

  7. Java设计模式之模板方法设计模式(银行计息案例)

    不知道为什么,这几天对Java中的设计模式非常感兴趣,恰巧呢这几天公司的开发任务还不算太多,趁着有时间昨天又把模板方法模式深入学习了一下,做了一个客户在不同银行计息的小案例,感触颇深,今天给各位分享一 ...

  8. drf 需求案例1

    案例: 实现过程: 1. 创建一个项目: django-adim startproject dfr3 2.  创建 一个app    homwork python manage.py startapp ...

  9. vue2.0+Element-ui实战案例

    前言 我们将会选择使用一些 vue 周边的库vue-cli, vue-router,axios,moment,Element-ui搭建一个前端项目案例,后端数据接口,会使用json-server快速搭 ...

随机推荐

  1. Java List根据对象的某个属性合并list

    package com.test; import java.util.ArrayList; import java.util.List; public class FileTest { public ...

  2. 络谷AT941(水提高+)题解

    蒟蒻刷水题的日常 这个题虽然模拟也不会超时,但我不喜欢模拟,能不模拟就不模拟,容易超时. 接下来进入正题: 实际上一开始是个很无聊的过程,你拿点,我拿点....贼无聊.我们可以把这个过程去掉.只看最后 ...

  3. Doctrine2-基础概念

    使用框架操作数据库的几个要求 1.安全,比如防止sql注入等,pdo里面prepare,execute 就可以 2.性能,数据库操作是最基本的操作,频繁使用,需要考虑到执行效率 3.ORM(objec ...

  4. 根据文件大小自动判断单位B,KB,MB,GB

    <php> /** * 文件大小格式化 * @param integer $size 初始文件大小,单位为byte * @return array 格式化后的文件大小和单位数组,单位为by ...

  5. Vue(二十六)父子组件通信

    今天写了一个分页公共组件,就出现了父子组件通信的问题,今天来总结下我遇到的父子组件通信问题 一.子组件调取父组件的数据或方法 (1)props 想要把父组件的值,传到子组件中,使用props 比如你在 ...

  6. 运用JS判断代码可以参考学习

    JAVAScript代码加CSS和HTML <%-- Created by IntelliJ IDEA. User: zengxiangcai Date: 2018/6/27 Time: 11: ...

  7. GMA Round 1

    学弟说我好久没更blog了. 因为自己最近其实没干什么. 所以来搬运一下GMA Round 1 的比赛内容吧,blog访问量.网站流量一举两得. 链接:https://enceladus.cf/con ...

  8. CSS3_扇形导航_transitionend 事件

    扇形导航 圆形按钮,切换一系列图片导航的显示与隐藏. 如果涉及过渡动画,定位的 top 和 left 必须写 Math.sin(弧度) 一圈弧度 = 2π,一圈角度 = 360 弧度 = (deg*2 ...

  9. 安装Percona版本的MySQL主从复制

    准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake     //也需要安装gcc-c++,openssl openssl-deve ...

  10. 利用XPT2046制作一个电位器AD转换装置

    XPT2046是一款四线制电阻触摸屏控制芯片,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器,支持从1.5V到5.25V的低电压I/O接口. 所谓逐步逼近型,就是输入一个模拟量,其与100 ...