首页 > 数据库 >Oracle Rescue

Oracle Rescue

时间:2023-11-03 14:24:56浏览次数:25  
标签:Rescue sid su session sql Oracle id se

#######################################查看执行时间长的SQL########################################################
--查询耗时长的sql
select 'alter system kill session ' || '''' || s.sid || ',' || s.serial# || '''' || ';' as kill_command,
s.sid,
s.blocking_session,
s.machine,
s.osuser,
s.program,
s.username,
s.last_call_et,
a.sql_id,
s.logon_time,
a.sql_text,
a.sql_fulltext,
w.event,
a.disk_reads,
a.buffer_gets
from v$process p, v$session s, v$sqlarea a, v$session_wait w
where 1 = 1
and p.addr = s.paddr
and s.sql_id = a.sql_id
and s.sid = w.sid
and s.status = 'ACTIVE'
and s.program != 'plsqldev.exe'
and s.osuser != 'oracle'
-- and a.sql_text like 'select%'
order by s.last_call_et desc;
#######################################数据库表锁解决方案##########################################################
1)Oracle数据库表锁查询语句(可根据锁的时间推断是否死锁,是否需要清理)
SELECT SESS.SID,
SESS.SERIAL#,
LO.ORACLE_USERNAME,
LO.OS_USER_NAME,
AO.OBJECT_NAME 被锁对象名,
LO.LOCKED_MODE 锁模式,
sess.LOGON_TIME 登录数据库时间,
'ALTER SYSTEM KILL SESSION ''' || SESS.SID || ',' || SESS.SERIAL# || '''' FREESQL
FROM V$LOCKED_OBJECT LO, DBA_OBJECTS AO, V$SESSION SESS
WHERE AO.OBJECT_ID = LO.OBJECT_ID
AND LO.SESSION_ID = SESS.SID
ORDER BY sid, sess.serial#;

2)数据库SQL级清除表锁语句
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

3)特殊情况,数据库SQL级清除表锁语句报错,则需在--数据库所在服务器--执行kill命令
ORA-00031:session marked for kill

4)查询Oracle执行SQL语句所在会话所对应的操作系统进程
select spid, osuser, s.program
from v$session s, v$process p
where s.paddr = p.addr
and s.sid = 1851;

5)在数据库所在服务器--执行kill命令
kill -9 spid

#######################################数据库无法扩展表空间问题#######################################################
ORA-01652(unable to extend temp segment by num in tablespace name)
1)查询临时表空间使用情况
select tablespace_name,
current_users,
total_blocks,
used_blocks,
free_blocks
from v$sort_segment;
2)查询占用临时表空间的session
select DISTINCT se.username,
se.sid,
se.SERIAL#,
su.extents,
su.blocks,
su.blocks * to_number(rtrim(p.value)) / 1024 / 1024 as Space,
tablespace,
segtype,
se.status,
se.logon_time,
se. last_call_et,
to_char(sysdate - (se.last_call_et / (60 * 60 * 24)),
'yyyy-mm-dd hh24:mi:ss') last_work_time,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
where p.name = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr;
3)查杀session
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

4)查询session执行的历史sql
select distinct session_id,
y.sql_id,
l.sql_text,
l.elapsed_time / 1000000,
x.CPU_TIME / 1000000,
x.executions,
x.CPU_TIME / x.executions / 1000000 per_cpu
from v$active_session_history y, v$sql l, v$sqlarea x
where y.sql_id = l.sql_id
and l.hash_value = x.hash_value
and session_id =455
order by per_cpu desc;

 

标签:Rescue,sid,su,session,sql,Oracle,id,se
From: https://www.cnblogs.com/forestwolf/p/17807493.html

相关文章

  • 在 Oracle 数据库中,哪些操作会导致索引失效?
    索引失效的七字口诀:模型数空运最快,字面意思就是运送一个模型,要用飞机空运,不要用陆运和海运,数空运最快。口诀中的每一个字都代表一种索引失效的类型。我逐个讲解一下。1.模:代表模糊查询。like的模糊查询以%开头,索引失效。2.型:代表数据类型。类型错误,如字段类型为varchar,wher......
  • Oracle字典表
    --查询某个表在哪些存储过程中被调用select*fromuser_sourceewheree.TYPE='PROCEDURE'andupper(e.TEXT)like'%%';--查看表的创建日期selectCREATED,LAST_DDL_TIME,s.*fromuser_objectsswhereobject_name=upper('ABC');--Oracle查询某个字段名出现在哪些表中SE......
  • oracle分页
    SELECTFROM  (  SELECT    T.,    ROWNUMRN  FROM    (SELECT*FROM表名WHERE条件)T  WHERE    ROWNUM<=((currentPage-1)*pageSize+pageSize)  )WHERE  RN>((currentPage-1)*pageSize)......
  • Oracle OCP 19c认证考试1Z0-082题库最新解析 第十六题
    16.ExaminethedescriptionofthePRODUCTDETAILstable:Whichtwostatementsaretrue?A.PRODUCT_NAMEcannotcontainduplicatevaluesB.EXPIRY_DATEcontainstheSYSDATEbydefaultifnodateisassignedtoitC.EXPIRY_DATEcannotbeusedinarithmetice......
  • Oracle 列传行UNPIVOT
    语法:UNPIVOT(新列名FOR聚合列名IN(对应的列名1…列名n))INCLUDE|EXCLUDENULLS子句参数可以控制在结果集中是否保留值为NULL的行,默认为EXCLUDENULLS,即去除空值行。--列转换行UNPIVOTSELECT*FROM(SELECTA.*,B.DEPT,B.SECTION,B.LZ,B.LZ_DATEFROMGC_DWT_OA.I......
  • sqlserver与Oracle建立连接,查询oracle中的数据(navicat版)
    1,打开navicat选中sqlserver服务器点击其他找到链接服务器(不要选错数据库)2,点击新建链接服务器,如图选着其他数据源,按图填写,程序字符串根据自己情况修改(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.6)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SER......
  • Oracle ORA-01653:无法在表空间中扩展表
    OracleORA-01653:无法在表空间中扩展表在本文中,我们将介绍Oracle数据库中的一个常见错误,即ORA-01653。该错误是由于无法在表空间中扩展表而引起的。我们将解释该错误的原因,并提供一些解决该问题的示例。阅读更多:Oracle教程什么是ORA-01653错误?ORA-01653错误是Oracle数据库中......
  • Jmeter连接Oracle数据库
    1、链接Oracle需要jar包支持,下载地址:https://files.cnblogs.com/files/lymlike/ojdbc6-1.0.rar?t=1698889296&download=true(下载后须将后缀名改为.jar即可使用)2、将下载的jar包放置在jmeter安装路径下:..\apache-jmeter-3.1\lib\ext3、在jmeter的线程组中添加JDBC链接配置JDBC......
  • Oracle DataGuard的架构(面试)
    概述PrimaryDatabase主库处于open状态对外提供服务,用户在PrimaryDatabase上进行操作,操作被记录在联机日志和归档日志中。需要设置loggingforce模式:即使在归档模式下,也可能会有一些有nologging的操作不产生redo,这在DG下是不允许的,因此必须启用数据库强制记录redo。StandbyDat......
  • Docker安装Oracle19c史上最全步骤
    Docker装置Oracle19c史上最全步调 Docker装置Oracle19c装置第一步:下载镜像第二步:创立挂载文件第三步:装置Oracle第四步:衔接Oracle 先容OracleDatabase19c,也就是12.2.0.3,最初在livesql.oracle.com上宣布,是OracleDatabase12c跟18c系列产物的终极版本,因而也是“临......