sqlplus prelim选项 常规情况下sqlplus无法登录
2012-07-14 21:20
SYSTEM:HP-UX 11.31
ORACLE:10.2.0.5 RAC
PDA RAC服务器其中一节点HANG住,应用及sqlplus都不能连接,印象中老白书中提到有sqlplus -prelim连接数据库可以解决,于是上网找资料
老熊的文章: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无法登录相关推荐
- 如何在不跳转的情况下实现用户登录
如何在不跳转的情况下实现用户登录 本文详细介绍拦截Response.Redirect的跳转并转换为Js的跳转,有一个很常见的需求,某个页面需要用户登录才能访问,或者某个操作需要用户登录 这就需要 ...
- sqlplus -prelim/ as sysdba用法
原文见:eygle博客 在某些情况下,数据库失去响应,sqlplus也无法连接,此时通常只能通过杀掉进程来解决. 但是我们仍然希望能够获得此时的数据库状态信息,以便用于事后诊断. 从Oracle10g ...
- Oracle hang 之sqlplus -prelim使用方法
第一章 Oracle hang 之sqlplus -prelim使用方法 很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力 ...
- Oracle hang 之sqlplus -prelim方法
很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据. 所幸的是Oracle 10g推出了sqlplus -pr ...
- java后门_@Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码...
从数据库.redis取了些数据,做了一些运算后,没抛异常,但是就是结果不对 抛了个空指针异常,但是看代码,感觉没问题,是取出来就是空,还是中间什么函数把它改坏了 发现导致一个bug的原因是用了JVM缓 ...
- Oracle sqlplus prelim 参数介绍
从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...
- sqlplus -prelim使用方法
很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据.从 Oracle10g 开始, sqlplus 提供了-prelim ...
- sqlplus prelim参数介绍
从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...
- oracle之 sqlplus prelim 参数介绍 ( 处理hang )
从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...
最新文章
- 安装linux系统报softlock,soft lockup 解决思路
- AB1601 PWM注意事项
- Qt无法用UTF-8编辑问题
- mac mysql 安装 简书_在Mac系统上配置MySQL以及Squel Pro
- mysql case 2个返回值_MySQL函数简介 2
- css分割线 文字居中的7种实现方式
- Java自动跳转到debug模式的解决方法
- Java开发团队管理细则
- MySQL练习题(经典50题)
- 年会抽奖小游戏java_抽奖小游戏
- 硬件工程师如何零基础入门?
- C语言编程入门(绪论)
- 计算机常用的输出设备有什么作用,常用的多媒体输入输出设备有哪些,主要功能是什么...
- SNP全称是什么? SNP是什么公司? SNP是什么意思?
- [魅族Degao]Android客户端性能优化
- Android 激活设备管理器后就无法再次打开设备管理器界面
- 个人博客网站接入来必力评论系统
- 推荐14个牛逼的代码编辑网站
- 门电路图对照表——国标、IEEE、标准符号对照表
- BLE ATT和GATT小结