2012-07-14 21:20

SYSTEM:HP-UX 11.31

ORACLE:10.2.0.5 RAC

PDA RAC服务器其中一节点HANG住,应用及sqlplus都不能连接,印象中老白书中提到有sqlplus -prelim连接数据库可以解决,于是上网找资料

NATURE的空间:http://hi.baidu.com/linuxnature/blog/item/dd94972beb46ae31d42af1ce.html

老熊的文章:http://www.laoxiong.net/inside_sqlplus_prelim.html

于是,跟着做了一遍测试

(备注:在metalink下面这篇文章第一次见到sqlplus -prelim的用法。

Taking Systemstate Dumps when You cannot Connect to Oracle [ID 121779.1])

sqlplus -prelim / as sysdba
oradebug setmypid
oradebug unlimit;
oradebug dump systemstate 10

oradebug TRACEFILE_NAME

普通方式连接

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jul 14 22:42:59 2012

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

SQL> conn / as sysdba
Connected.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

加prelim参数时的情况

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jul 14 22:41:10 2012

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

SQL> set _prelim on
SQL> conn / as sysdba
Prelim connection established

对比发现,使用prelim连接时,提示为“Prelim connection established”,退出sqlplus没有显示banner。

还可以用另一种方式以prelim选项连接数据库:

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jul 14 22:44:35 2012

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

SQL> set _prelim on
SQL> conn / as sysdba
Prelim connection established

启用10046事件trace未做,这里就摘抄老熊里的原文

从生成的trace文件中,可以发现在正常连接时,连接上数据库后,sqlplus自动执行了下面的SQL:

ALTER SESSION SET NLS_LANGUAGE= ‘SIMPLIFIED CHINESE’ NLS_TERRITORY= ‘CHINA’ NLS_CURRENCY= ‘¥’ NLS_ISO_CURRENCY= ‘CHINA’ NLS_NUMERIC_CHARACTERS= ‘.,’ NLS_CALENDAR= ‘GREGORIAN’ NLS_DATE_FORMAT= ‘DD-MON-RR’ NLS_DATE_LANGUAGE= ‘SIMPLIFIED CHINESE’ NLS_SORT= ‘BINARY’ TIME_ZONE= ‘+08:00′ NLS_COMP= ‘BINARY’ NLS_DUAL_CURRENCY= ‘¥’ NLS_TIME_FORMAT= ‘HH.MI.SSXFF AM’ NLS_TIMESTAMP_FORMAT= ‘DD-MON-RR HH.MI.SSXFF AM’ NLS_TIME_TZ_FORMAT= ‘HH.MI.SSXFF AM TZR’ NLS_TIMESTAMP_TZ_FORMAT= ‘DD-MON-RR HH.MI.SSXFF AM TZR’

select value$ from props$ where name = ‘GLOBAL_DB_NAME’

select SYS_CONTEXT(’USERENV’, ‘SERVER_HOST’), SYS_CONTEXT(’USERENV’, ‘DB_UNIQUE_NAME’), SYS_CONTEXT(’USERENV’, ‘INSTANCE_NAME’), SYS_CONTEXT(’USERENV’, ‘SERVICE_NAME’), INSTANCE_NUMBER, STARTUP_TIME, SYS_CONTEXT(’USERENV’, ‘DB_DOMAIN’) from v$instance where INSTANCE_NAME=SYS_CONTEXT(’USERENV’, ‘INSTANCE_NAME’)

select decode(failover_method, NULL, 0 , ‘BASIC’, 1, ‘PRECONNECT’, 2 , ‘PREPARSE’, 4 , 0), decode(failover_type, NULL, 1 , ‘NONE’, 1 , ‘SESSION’, 2, ‘SELECT’, 4, 1), failover_retries, failover_delay, flags from service$ where name = :1

而sqlplus使用prelim连接上数据库后,没有生成10046 trace文件,看起来没有执行SQL,也就是没有执行任何初始化动作和查询必要的信息。也许这也就是称之为“初级连接”的来历吧。

由于使用prelim方式连接,没有执行sql语句的,所以在数据库的某些hang住的情况下,能够连接上数据库。比如由于library cache latch 被长时间持有不能释放,不能解析SQL语句引起的hang。有的人会说,我的应用刚连上去还没做任何操作就hang住了。这只是表面现象,连接上数据库后,一般都会做一些初始化的操作,如设定环境之类的。

sqlplus -prelim能够在数据库hang住的情况下连接数据库,但只能说是连接,并不代表能够做很多操作。比如执行SQL查询。这种情况下,可能最有用的就是使用oradebug。

本文只是简单地“inside”,其实并不很深入,Oracle还会有其他的跟prelim有关的东西,是我们还没发现的。有兴趣的朋友,可以进一步研究。比如通过抓取tns包进行分析等等。

sqlplus prelim选项 常规情况下sqlplus无法登录相关推荐

  1. 如何在不跳转的情况下实现用户登录

     如何在不跳转的情况下实现用户登录 本文详细介绍拦截Response.Redirect的跳转并转换为Js的跳转,有一个很常见的需求,某个页面需要用户登录才能访问,或者某个操作需要用户登录 这就需要 ...

  2. sqlplus -prelim/ as sysdba用法

    原文见:eygle博客 在某些情况下,数据库失去响应,sqlplus也无法连接,此时通常只能通过杀掉进程来解决. 但是我们仍然希望能够获得此时的数据库状态信息,以便用于事后诊断. 从Oracle10g ...

  3. Oracle hang 之sqlplus -prelim使用方法

    第一章  Oracle hang 之sqlplus -prelim使用方法 很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力 ...

  4. Oracle hang 之sqlplus -prelim方法

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

  5. java后门_@Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码...

    从数据库.redis取了些数据,做了一些运算后,没抛异常,但是就是结果不对 抛了个空指针异常,但是看代码,感觉没问题,是取出来就是空,还是中间什么函数把它改坏了 发现导致一个bug的原因是用了JVM缓 ...

  6. Oracle sqlplus prelim 参数介绍

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

  7. sqlplus -prelim使用方法

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

  8. sqlplus prelim参数介绍

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

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

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

最新文章

  1. 安装linux系统报softlock,soft lockup 解决思路
  2. AB1601 PWM注意事项
  3. Qt无法用UTF-8编辑问题
  4. mac mysql 安装 简书_在Mac系统上配置MySQL以及Squel Pro
  5. mysql case 2个返回值_MySQL函数简介 2
  6. css分割线 文字居中的7种实现方式
  7. Java自动跳转到debug模式的解决方法
  8. Java开发团队管理细则
  9. MySQL练习题(经典50题)
  10. 年会抽奖小游戏java_抽奖小游戏
  11. 硬件工程师如何零基础入门?
  12. C语言编程入门(绪论)
  13. 计算机常用的输出设备有什么作用,常用的多媒体输入输出设备有哪些,主要功能是什么...
  14. SNP全称是什么? SNP是什么公司? SNP是什么意思?
  15. [魅族Degao]Android客户端性能优化
  16. Android 激活设备管理器后就无法再次打开设备管理器界面
  17. 个人博客网站接入来必力评论系统
  18. 推荐14个牛逼的代码编辑网站
  19. 门电路图对照表——国标、IEEE、标准符号对照表
  20. BLE ATT和GATT小结

热门文章

  1. 运用波利亚的怎样解题表来解决事件绑定问题
  2. 计算机网络技术人员的内容,计算机网络技术人员标准规范.doc
  3. supervisor使用
  4. 基于php的网上汽车销售系统
  5. 借助zabbix和mysql performance monitor模板实现mysql数据库的监控
  6. 《即学即用的APP时间管理术》笔记
  7. Active Directory 域滲透 (如何访问数据库?)
  8. ECSHOP_顺丰_货到付款设置
  9. 物联网卡相关的商业模式
  10. 【题解】简单的数学题-题解