网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle中通过触发器来追踪用户的.
.Oracle性能究极优化 中.
.Oracle产品中的错误的诊断.
.新手浅谈数据库中的设计技巧(一).
.Oracle 10G 最佳20位新特性:自动.
.ORACLE问答精选.
.Oracle:如何对CLOB行字段执行全文.
.Oracle存储过程中去掉重复字符串.
.Oracle 9i 数据库里指针共享的增.
.如何正确的在对in操作使用变量绑.
.Oracle常见错误代码.
.oracle执行计划刨析.
.Oracle7.X 回滚表空间数据文件的.
.如何使用Leading提示改变表连接方.
.如何使用oracle的decode函数进行.
.用Oracle导入导出工具实现Oracle.
.Oracle9i里指针共享的增强.
.利用Hibernate Synchronizer插入.
.用java实现ORACLE数据库的文件上.
.Oracle约束管理脚本.

找到并终止Oracle9i里被锁定的会话

发表日期:2008-2-9



  由于Oracle有内部锁定(的机制),因此有些时候它对于找到并终止Oracle里锁定数据库资源的会话很有用。首先,你需要找到所有的Oracle会话。下面是一段脚本,用来显示Oracle内所有会话的细节。 
  
  remsession.sql - displays all connected sessions
  set echo off;
  set termout on;
  set linesize 80;
  set pagesize 60;
  set newpage 0;
  
  select
  rpad(c.name':',11)rpad(' current logons='
  (to_number(b.sessions_current)),20)'cumulative logons='
  rpad(substr(a.value,1,10),10)'highwater mark='
  b.sessions_highwater Information
  from
  v$sysstat a,
  v$license b,
  v$database c
  where
  a.name = 'logons cumulative'
  ;
  
  ttitle "dbnameDatabaseUNIX/Oracle Sessions";
  
  set heading off;
  select 'Sessions on database 'substr(name,1,8) from v$database;
  set heading on;
  select
  substr(a.spid,1,9) pid,
  substr(b.sid,1,5) sid,
  substr(b.serial#,1,5) ser#,
  substr(b.machine,1,6) box,
  substr(b.username,1,10) username,
  substr(b.osuser,1,8) os_user,
  substr(b.program,1,30) program
  from
  v$session b,
  v$process a
  where
  b.paddr = a.addr
  and
  type='USER'
  order by
  spid;
  ttitle off;
  set heading off;
  select 'To kill, enter SQLPLUS> ALTER SYSTEM KILL SESSION',
  '''''SID, SER#'''''';' from dual;
  spool off;
   找到并终止Oracle9i里被锁定的会话(图一)
  一旦我们找到了Oracle里所有的会话,那么下一步就是运行一个脚本来检测所有已经被锁定的会话。这是因为,Oracle可能无法以足够快的速度检测到一个不活动(dead)的会话,用以防止对数据访问的阻断(blockage)。你可以运行下面的脚本以定位那些管制着锁定资源的会话。
  
  select
  sess.sid,
  sess.serial#,
  lo.oracle_username,
  lo.os_user_name,
  ao.object_name,
  lo.locked_mode
  from
  v$locked_object lo,
  dba_objects   ao,
  v$session    sess
  where
  ao.object_id = lo.object_id
  and
  lo.session_id = s.sid;
  找到并终止Oracle9i里被锁定的会话(图二)
  一旦定位了已锁定的会话,你就可以使用下面的脚本来自动地创建ALTER SESSION句法,用来终止你所希望终止的会话,这样就能够将锁定的会话从Oracle里清除掉。
  
  spoolrun_nuke.sql
  
  select
  'alter system kill session '''
  sess.sid', 'sess.serial#';'
  from
  v$locked_object lo,
  dba_objects   ao,
  v$session    sess
  where
  ao.object_id = lo.object_id
  and
  lo.session_id = s.sid;
  
  在创建完run_nuke.sql文件之后,你就可以迅速地选择那些要被终止的会话并单独地运行它们。
上一篇:利用 Ghost 复制您的Linux 系统 人气:759
下一篇:Linux下的远程控制—VNC 人气:1399
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐