查看: 5840|回复: 0
打印 上一主题 下一主题

oracle sql执行方式 程序里面的SQL怎样执行

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-31 10:46:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
现象:

  在项目中有时会出现这种情况,因为代码编写错误,执行完SQL后,没有关闭数据库连接。当该代码重复执行时,会导致应用服务器和数据库的连接不断增加,最终导致连接超过数据库连接上限,系统崩溃。

  问题:

  项目中的代码很多,很难准确定位到底是哪一段代码出了问题

  解决办法:

  用应用程序的用户登录oracle,执行下面的SQL:

  select sql_text from v$sqlarea a where a.HASH_VALUE in (

  select   b.prev_hash_value from v$session b where b. MACHINE = 'WLS254'

  )

  SQL中的"WLS254"指的是应用服务器的名称,该SQL得到的结果就是WLS254这台机器连接到oracle的正在执行的SQL。通过分析这些SQL,就可以快速的发现是哪部分程序没有释放连接。

  v$session视图的字段说明:

  SADDR RAW(4) 会话地址

  SID NUMBER 会话标识符

  SERIAL# NUMBER 会话序列号。用来唯一地标识绘画

  对象。如果该会话结束且其他会话

  以相同的会话ID 开始,则保证会

  话级的命令被应用到正确会话对象

  AUDSID NUMBER 审计会话ID

  PADDR RAW(4) 拥有这个会话的进程地址

  USER# NUMBER Oracle 用户标识符

  USERNAME VARCHAR(30) Oracle 用户名

  COMMAND NUMBER 正进行的命令(分析的最后一个语

  句),关于值的列表,请参阅表B-

  11

  OWNERID NUMBER 如果值为2147483644,则此列的

  内容无效。否则此列包含拥有可移

  植会话的用户标符。对于利用并行

  从服务器的操作,将这个值解释为

  一个48 字节的值。其低位两字节

  表示会话号,而高位字节表示查询

  协调程序的实例ID

  TADDR VARCHAR2(8) 事务处理状态对象的地址

  LOCKWAIT VARCHAR2(8) 等待锁的地址;如果没有,为NULL

  STATUS VARCHAR2(8) 会话的状态:ACTIVE (当前执行的

  SQL)、INACTIVE、KILLED(标记为

  终止)、CACHED(为Oracle*XA 使

  用而临时高速缓存)、SNIPED(会

  话不活动,在客户机上等待)

  SERVER VARCHAR2(9) 服务器类型:DEDICATED、SHARED、

  PSEUDO、NONE

  SCHEMA# NUMBER 模式用户标识符

  SCHEMANANME VARCHAR2(30) 模式用户名

  OSUSER VARCHAR(15) 操作系统客户机用户名

  PROCESS VARCHAR2(9) 操作系统客户机进程ID

  MACHINE VARCHAR2(64) 操作系统机器名

  TERMINAL VARCHAR2(10) 操作系统终端名

  PROGRAM VARCHAR(48) 操作系统程序名

  TYPE VARCHAR2(10) 会话类型

  SQL_ADDRESS RAW(4) 与SQL_HASH_VALUE 一道使用标识

  当前正在执行的SQL 语句

  SQL_HASH_VALUE NUMBER 与SQL_ADDRESS 一道使用标识当前

  正在执行的SQL 语句

  MODULE VARCHAR2(48) 包含当前正在执行的模块名,正如

  由调用

  DBMS_APPLICATION_INFO.SET_MODU

  LE 过程所设置

  MODULE_HASH NUMBER 上面MODULE 的散列值

  ACTION VARCHAR2(32) 包含当前执行活动的名称,正如由

  调用

  DBMS_APPLICATION_INFO.SET_ACTI

  ON 过程所设置

  ACTION_HASH NUMBER 上列活动名称的散列值

  CLIENT_INFO VARCHAR2(64) 由

  DBMS_APPLICATION_INFO.SET_CLIE

  NT_INFO 过程设置的信息

  FIXED_TABLE_

  SEQUENCE

  NUMBER 此列包含一个数,每当会话完成一

  个数据库调用并且存在来自动态性

  能表的介入选择,它个数就增加。

  这个列可被性能监控程序用来监控

  数据库中的统计数据。每当性能监

  控程序查看数据库时,只需要查看

  当前活动的会话或在这个列中具有

  比上次性能监控程序所看到的最大

  值更大的值的会话即可。所有其他

  会话自上次性能监控程序查看数据

  库以来都是空闲的

  ROW_WAIT_OBJ# NUMBER 包含ROW_WAIT_ROW#中指定的ROW#

  的表的对象ID

  ROW_WAIT_FILE# NUMBER 包含ROW_WAIT_ROW#中指定的

  ROWID 的数据文件的标识符。此列

  仅在会话当前正在等待其他事务处

  理提交并且ROW_ WAIT_OBJ#不为-

  1 时有效

  ROW_WAIT_BLOCK # NUMBER 包含ROW_WAIT_ROW#中指定的

  ROWID 的数据文件的标识符。此列

  仅在会话当前正在等待其他事务处

  理提交并且ROW_正在等待其他事

  务处理提交并且ROW_

  ROW_WAIT_ROW# NUMBER 被锁定的当前ROWID。此列仅在会

  话当前正在等待其他事务处理提交

  并且ROW_ WAIT_OBJ#不为-1 时有

  效

  LOGON_TIME DATE 登录时间

  LAST_CALL_ET NUMBER 最后一次调用

  PDML_STATUS VARCHAR2(8) 如果ENABLED,则会话正处于

  PARALLEL DML 启用方式。如果

  DISABLED,则此会话不支持

  PARALLEL DML 启用方式。如果

  FORCED,则会话已经更改为强制

  PARALLEL DLL

  PDML_ENABLED VARCHAR2(3) 此列已被PDML_ENABLED 和PDML_

  STATUS 所替代。请看上列内容

  FAILOVER_TYPE VARCHAR2(10) 如果这个会话禁止失败切换,则为

  NONE ,如果客户机能够在断开之

  后失败切换其会话,则为

  SESSION,如果客户机还能失败切

  换正在进行的选择,则为SELECT

  FAILOVER_METHOD VARXHAR2(3) 如果这个会话禁止失败切换,则为

  NONE,如果客户机能够在断开之后

  重新连接,为BASIC,如果备份实

  例能够支持它所支持的每个实例的

  所有连接,则为PRECONNECT

  FAILED_OVER VARCHAR2(13) 如果运行在失败切换方式并进行过

  失败切换,为TRUE,否则为FALSE

  RESOURCE_CON

  SU_MER_GROUP

  VARCHAR2(32) 会话的当前资源使用者组的名称
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州维博网络(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:企业网站建设、网站程序开发、手机APP客户端、平面设计、主机域名、虚拟空间、网站推广、网站优化、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2024 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表