oracle 会话 死锁 执行sql 执行job的方法

作者:mdxy-dxy 时间:2024-01-18 20:24:59 


//根据用户分组会话
select t.USERNAME,count(*) from v$session t group by t.USERNAME
//查找某一用户正在执行的sql_id值
select * from v$session t where t.USERNAME = 'BUDGET' and t.SQL_ID is not null
//查找对应sql_id的对应sql语句
select m.SQL_TEXT from v$session t , v$sqlarea m where t.USERNAME ='BUDGET' and t.sql_id = m.SQL_ID
//
select * from v$sqlarea t where t.SQL_ID = 'g92sy7kwt6mrq'
//查询死锁对象
select * from v$locked_object

1、修改Oracle最大连接数的方法


a、以sysdba身份登陆PL/SQL 或者 Worksheet
b、查询目前连接数
show parameter processes;
c、更改系统连接数
alter system set processes=1000 scope=spfile;
d、创建pfile
create pfile from spfile;
e、重启Oracle服务或重启Oracle服务器
2、查询Oracle游标使用情况的方法
select * from v$open_cursor where user_name = 'TRAFFIC';
3、查询Oracle会话的方法
select * from v$session

杀掉会话:

方法一:SQL> SELECT pid,spid FROM V$PROCESS WHERE ADDR IN (SELECT PADDR FROM V$SESSION where username ='SYS');
PID SPID
---------- ------------
17 13657

ps -ef |grep 13657
kill -9 13657

方法二
SQL> SELECT sid,serial# FROM V$SESSION WHERE sid in (SELECT distinct sid FROM V$MYSTAT);
SID SERIAL#

---------- ----------
1637 13894

alter system disconnect session '1637,13894' immediate;
执行这句会提示:ora-00031:标记要终止的会话。。。但是其实执行成功了。
如果用pl/sql登陆客户端那边会提示:ora-00028:您的会话已经被终止。

查看正在执行sql进度:
SELECT SE.SID,OPNAME,TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK,ELAPSED_SECONDS ELAPSED,ROUND(ELAPSED_SECONDS * (TOTALWORK - SOFAR) / SOFAR) REMAIN_TIME,SQL_TEXT
FROM V$SESSION_LONGOPS SL, V$SQLAREA SA, V$SESSION SE
WHERE SL.SQL_HASH_VALUE = SA.HASH_VALUE AND SL.SID = SE.SID AND SOFAR != TOTALWORK
ORDER BY START_TIME

SELECT a.tablespace_name "表空间名",round(total/1024/1024/1024,4) 表空间大小Gb,round(free/1024/1024/1024,4) 表空间剩余大小Gb,
round((total-free)/1024/1024/1024,4) 表空间使用大小Gb,ROUND((total-free)/total,4)*100 "使用率 %"
FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE
GROUP BY tablespace_name ) a,
(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b
WHERE a.tablespace_name=b.tablespace_name order by 5 desc
 
强制停止oracle正在执行的job:
 
1、查看所有job;
select * from dba_jobs;
2、查看正在运行的job;
select * from dba_jobs_running;
3、根据sid查出对应的session;
select SID,SERIAL# from V$Session where SID='&SID';
4、kill对应的session;
alter system kill session '&SID,&SERIAL';
5、将job置为broken;
exec dbms_job.broken('&JOB',true);
6、sysdba用户权限删除job;
delete from dba_jobs where JOB='&JOB';
---实在无奈时启动数据库

标签:会话,死锁,执行sql,执行job
0
投稿

猜你喜欢

  • Python使用Pickle模块进行数据保存和读取的讲解

    2021-08-23 19:37:55
  • 详解Pycharm出现out of memory的终极解决方法

    2021-12-08 18:14:23
  • python重复值处理得方法

    2023-07-03 20:57:43
  • Python抓取框架Scrapy爬虫入门:页面提取

    2022-04-16 18:57:47
  • MySQL修改数据库大小

    2011-01-13 20:00:00
  • swoole和websocket简单聊天室开发

    2023-10-23 07:20:24
  • python打开文件并获取文件相关属性的方法

    2021-02-21 15:24:26
  • 交互设计实用指南系列(10)—别让我思考

    2010-03-01 12:50:00
  • 讲解MySQL中的事务特性

    2024-01-25 19:37:13
  • Mysql中explain的使用详解

    2009-12-08 16:18:00
  • PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】

    2023-09-08 11:36:58
  • django 使用全局搜索功能的实例详解

    2023-01-26 05:56:56
  • python数据分析:关键字提取方式

    2022-03-08 09:23:37
  • 关于ASP中脚本执行顺序的讲解

    2008-11-04 12:02:00
  • python中关于xmltodict的使用

    2022-11-04 03:03:46
  • 显示ASP页面源码的代码

    2008-10-12 13:05:00
  • python3写的简单本地文件上传服务器实例

    2023-08-23 02:50:58
  • mysql 8.0.12安装配置方法图文教程(Windows版)

    2024-01-13 14:57:40
  • bootstrap实现点击删除按钮弹出确认框的实例代码

    2023-08-28 09:36:20
  • python使用matplotlib画柱状图、散点图

    2023-05-18 11:50:06
  • asp之家 网络编程 m.aspxhome.com