第一章  Oracle hang 之sqlplus -prelim使用方法

很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据。所幸的是Oracle 10g推出了sqlplus -prelim选项,在Oracle挂起时依然能使用sqlplus,从而能获得数据库状态。
使用方法如下

引用

$ sqlplus -prelim "/as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Mar 28 06:40:21 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

在prelim模式下,不可以查询数据字典,但可以关闭数据库

引用

SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01012: not logged on

引用

SQL> shutdown abort
ORACLE instance shut down.

但可以使用oradebug,但对于系统诊断,已经足够了
dump系统状态

引用

SQL> oradebug setmypid                                            
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug dump systemstate 266
Statement processed.

或者dump hanganalyze

引用

SQL> oradebug  hanganalyze 3
Hang Analysis in /oracle/app/oracle/admin/ora10g/udump/ora10g_ora_52642.trc

对于rac

引用

SQLPLUS> oradebug setmypid

SQLPLUS>oradebug setinst all

SQLPLUS>oradebug -g def hanganalyze 3

或者dump 进程状态

引用

SQL> oradebug dump processstate 10
Statement processed.

进一步,如果有10g客户端,数据库是9i,依然可以用-prelim

引用

$ sqlplus -prelim /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Mar 28 06:50:19 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

SQL> conn sys/oracle@ora9i as sysdba
Prelim connection established
SQL>  oradebug setmypid
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL>  oradebug dump systemstate 266
Statement processed.

There are two ways to connect to sqlplus using a preliminary connection.

1. sqlplus -prelim / as sysdba

2. sqlplus /nolog
set _prelim on
connect / as sysdba

1. While running system state dump with "-prelim" option:

sqlplus -prelim / as sysdba

SQL*Plus: Release 10.2.0.2.0 - Production on Mon Dec 11 17:28:14 2006

SQL> oradebug setmypid
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug dump systemstate 266
ORA-03113: end-of-file on communication channel
ORA-24323: value not allowed

2. The following error is reported in the alert.log:

ORA-07445: exception encountered: core dump [kgllkd()+1254] [SIGSEGV] [Address not mapped to
object] [0x000000030] [] []

The error did not crash background process or terminate the instance.

The issue is not resolved in any known patches.

Use any of the below workarounds:

· Connect / as sysdba (without -prelim)

OR

· Force the variable PGA to be initialized:

sqlplus -prelim '/ as sysdba'
oradebug setmypid
oradebug unlimit
oradebug call ksmcpg
oradebug dump systemstate 10

--测试环境11g,获lgwr的spid
SQL> select * from v$process where username='SYSTEM' and program like '%LGWR%';
 
ADDR                    PID SPID                     PNAME USERNAME           SERIAL# TERMINAL         PROGRAM                                                          TRACEID                                                                          TRACEFILE                                                                        BACKGROUND LATCHWAIT        LATCHSPIN        PGA_USED_MEM PGA_ALLOC_MEM PGA_FREEABLE_MEM PGA_MAX_MEM
---------------- ---------- ------------------------ ----- --------------- ---------- ---------------- ---------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------- ---------------- ---------------- ------------ ------------- ---------------- -----------
000007FF614CD768         11 17428                    LGWR  SYSTEM                   1 123-PC           ORACLE.EXE (LGWR)                                                                                                                                 d:\oracle11g_64bit\diag\rdbms\second\second\trace\second_lgwr_17428.trc          1                                                 5007762       5465314           131072     9921762

--另启一会话窗口,暂挂lgwr进程
SQL> oradebug setsospid 17428
ORA-00070: command setsospid is not valid
SQL> oradebug setospid 17428
Oracle pid: 11, Windows thread id: 17428, image: ORACLE.EXE (LGWR)
SQL> oradebug suspend
Statement processed.

--发生日志切换hang住
SQL> alter system switch logfile;
 
System altered
--新建一个会话窗口
create table t_h(a int);--语句hang住

--解挂lgwr进程,上述lgwr及create操作顺利执行完毕
SQL> oradebug resume
Statement processed.

小结:如果日志切换时,会暂住一切所有的数据库前端事务create and dml

About Me

....................................................................................................................................................

本文来自于微信公众号转载文章,若有侵权,请联系小麦苗及时删除

ITPUB BLOG:http://blog.itpub.net/26736162

QQ:642808185 若加QQ请注明您所正在读的文章标题

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】

....................................................................................................................................................

Oracle hang 之sqlplus -prelim使用方法相关推荐

  1. Oracle hang 之sqlplus -prelim方法

       很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据. 所幸的是Oracle 10g推出了sqlplus -pr ...

  2. sqlplus -prelim使用方法

    很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据.从 Oracle10g 开始, sqlplus 提供了-prelim ...

  3. oracle之 sqlplus prelim 参数介绍 ( 处理hang )

    从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...

  4. Oracle sqlplus prelim 参数介绍

    从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...

  5. oracle客户端设置中文,Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法

    本文主要向大家介绍了Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 客户端环境参数NLS_LANG = ...

  6. 数据库无响应(hang住)故障处理思路和方法

    故障现象描述 数据库无响应(hang住)故障,常见的就是数据库实例不能响应客户端发起的SQL语句请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态.最为严重的现象是客户端根本不能连接 ...

  7. sqlplus -prelim,sqplus区别

    偶尔在论坛上看见帖子说"sqlplus -prelim / as sysdba"去连接oracle,都一次见,于是去baidu了一下,如下转了一位兄台的blog文章. ****** ...

  8. oracle hang analyze,Oracle hanganalyze工具的使用

    hanganalyze是ORACLE的一款性能诊断工具,这个款工具是从oracle 8.0.6开始可用,在oracle数据库出现严重的性能问题的时候它可以帮助你定位问题所在. 1.首先说说hangan ...

  9. 转至老熊三分地--inside sqlplus prelim

    在Oracle 10g中,如果数据库实例hang住了,应用及sqlplus都不能连接时,可以用sqlplus -prelim连接数据库.那么sqlplus连接时,加上-prelim这个参数有什么特别的 ...

最新文章

  1. Android Studio 选项菜单和动画结合_谷歌准备为Android增加像iOS一样的功能
  2. DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词
  3. python 获取10位和13位 时间戳
  4. Ciruy英雄谭 Chapter 3 杂谈
  5. muduo之BlockingQueue
  6. Spring @Async注解
  7. SQL Server查询结果中添加自动编号
  8. Linux负载均衡软件LVS之一(概念篇)
  9. JEECG_3.7开发环境搭建与代码生成器入门级教程-张代浩-专题视频课程
  10. mysql根据时间统计数据语句
  11. 伦巴时间步的动作要领_成人拉丁舞_伦巴、恰恰、桑巴舞、牛仔舞、斗牛舞
  12. redis缓存数据库技术
  13. Qt学习——任务一:按钮点击打开和关闭窗口
  14. 各种手机处理器排行榜_手机处理器性能排行榜和代表机型介绍
  15. JSON树转换成线性列表(python)
  16. 2021京东Java面试真题:c和java哪个更适合开发游戏
  17. 滴滴是如何对用户和司机进行派单匹配的?
  18. 小米、Homekit和华为之间能否互相兼容?
  19. 期货开户的条件和流程
  20. 计算机病毒的常用方法,几种检测计算机病毒方法

热门文章

  1. L2-014 列车调度(队列模拟:set)
  2. 解决JS浮点数(小数)计算加减乘除的BUG
  3. 扒一扒那些年我们遇到的奇葩代码
  4. 教你几招识别和防御Web网页木马
  5. poj 1986 Distance Queries
  6. Rails IDE 有很多选择,但是具体到ubuntu 64bit 选择的余地就不多了,这里选择Aptana Studio 3 Beta...
  7. 小女生的Linux技术~~~Linux常识~~21-30
  8. php如何生成公钥私钥,php如何生成公钥私钥(代码)
  9. mysql 5.6.31 winx64_详解介绍MySQL5.6.31winx64.zip安装配置的图文教程
  10. JavaScript之闭包