千家信息网

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

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候。我们可以连接到SGA而不是数据库,也就是说没有session被创建。一. 通过以下步骤可
千家信息网最后更新 2024年11月26日oracle之 sqlplus prelim 参数介绍 ( 处理hang )

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

一. 通过以下步骤可以获取系统信息:
sqlplus -prelim / as sysdba
oradebug setmypid
oradebug unlimit;
oradebug dump systemstate 10

对于9i数据库,可以通过安装10g的客户端连接 9iR2工作正常。

二. prelim参数特点
1.首先在数据库上启用10046事件:
SQL> alter system set events '10046 trace name context forever';
System altered.

2. 先用普通的方式连接:
D:/>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 11月 15 15:36:02 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn sys/manage as sysdba
已连接。
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

3. 看看加prelim参数时的情况:
D:/>sqlplus -prelim /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 11月 15 15:36:34 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn sys/manage as sysdba
初级连接已建立
SQL> exit
从 ORACLE 断开
从上面的信息可以看到,在使用prelim连接时,提示为"初级连接已建立",退出sqlplus没有显示banner。

4. 也可以通过下面的方式来用prelim方式连接数据库:
[oracle@xty ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on Tue Dec 2 07:04:28 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> set _prelim on
SQL> connect / as sysdba
Prelim connection established

5. 看看数据库的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。

6. oradebug 介绍
oradebug是oracle 最初设计的时候做调试的一个工具,后来进一步发展到通过事件(event)来定义跟踪,然后event 又发展到支持 sql trace ,而sql trace 就是编号为10046 的event

也就是说这是一个从底层调试到高级支持的一个发展的过程,oracle逐步完善。 oracle 的events 事件支持这一体系的定义和延伸出来的功能,非常强大。 其实也就是从 软件开发人员自己调试代码的工具逐渐发展到给用户提供接口进行跟踪和调试应用。

补充:http://blog.csdn.net/zhang123456456/article/details/77281608 oradebug操作参考

数据 数据库 也就是 参数 情况 方式 发展 事件 信息 面的 支持 也就是说 可以通过 就是 工具 文件 时候 星期 系统 语句 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 铁路数据通信网络安全 软件开发的生命周期几个步骤 衍射光神经网络技术 广州鑫盛互联网科技有限公司 宝山区品质网络技术服务供应商家 浙江互联网科技公司 浙江企朋网络技术 ipo 网络技术的出现总结100字 信息安全技术服务器 数据库信息交换 电力软件开发支撑平台 直接影响软件开发风险的因素 江苏软件开发者合法吗 广州泽诺互联网科技有限公司 银行软件开发中心 合肥 电脑软件开发案例展示 lol其他服务器 浙江专业网络技术分类创新服务 武汉大学网络安全学院研究生调剂 僵尸毁灭工程服务器卡在初始化中 数据库如何运行sql语句 网络技术明年工作总结 嵌入式软件开发定做 什么是数据库中的冗余 启明星辰济南网络安全 微信号服务器繁忙 进销存管理服务器 服务器虚拟化结构图 杭州迈集客网络技术有限公司 广州网络安全应急招聘报名
0