当前位置:北库历史网>中华杂谈>正文

oracle查看历史session oracle查看历史session

导语:甲骨文查看历史会议以下文本材料由边肖为每个人收集和出版。让我们快速看一下!1.如何查询会话执行的历史sql语句如何知道一个会话中执行了哪些SQL语句?[方法1]查询v$sqltext、v$sqlarea和v$sqlstats视图从v$sqlarea t中选择*其中t.PARSING_SCHEMA_NAME按t.LAST_ACTIVE_TIME desc的顺序;#对于v$sqltext和v$sqla

甲骨文查看历史会议以下文本材料由边肖为每个人收集和出版。让我们快速看一下!

1.如何查询会话执行的历史sql语句

如何知道一个会话中执行了哪些SQL语句?

[方法1]查询v$sqltext、v$sqlarea和v$sqlstats视图

从v$sqlarea t中选择*其中t.PARSING_SCHEMA_NAME按t.LAST_ACTIVE_TIME desc的顺序;

#对于v$sqltext和v$sqlarea,查看的是共享池中的SQL,其时间索引是其解析历史,因为由于共享的问题,这个查询可能无法完全反映执行历史。

#v$sqlstats的信息保留时间比v$sql、v$sqltext、v$sqlarea长,及时从共享池中换出后仍然可以找到sql

[方法2]

联合v $活动_会话_历史和v$sqlarea

#v$active_session_history此表仅为采样数据,以秒为单位执行,仅计算采样点在cpu上或未空闲的会话。所以可能不完整,会忽略一些短时运行的SQL。此视图无法还原完整的会话历史记录。

#v$sqlarea中有已执行的sql语句,但没有与会话的关联信息,只有当前的SQL与v $会话关联,所以也不会起作用。

查看视图:dba_hist_sqlstats,dba_hist_sqltext

二、如何使用PL/SQL Developer查看和杀死会话

Oracle多用户操作有时会导致会话阻塞,从而导致表锁定等问题。

您可以使用sql语句进行查询,但是使用工具更方便。本文介绍了使用PL/SQL开发工具来查看或终止oracle会话。

工具/原材料PL/SQL Developer的版本是8.0.0.1480。方法/步骤:打开PL/SQL Developer,输入用户名、密码、数据库等信息。在工具栏中选择工具,并在弹出窗口中选择会话。

动手吧。如图所示,列出了所有会话和sid,因此我们需要找到状态为活动的会话和sid。

单击它,或选择如图所示的下拉菜单,然后选择活动会话。如图所示,有两个活动会话,选择其中一个后,您可以在下面查看该会话的更多信息。在“sql文本”列中,您可以查看正在执行的SQL语句。

在“锁”列中,您可以查看当前的锁表和其他信息。要终止其中一个会话,右键单击会话行并选择“终止”。

三、如何查看PL/SQL执行历史

除了PL/SQL的ctrl+e view方法外,还有以下方法:[方法1] query v$sql,v$sqltext,v$sqlarea,v $ sqlstats view select * from v $ sqlarea t其中t. parsing _ schema _ name按顺序由t. last _ active _ timedesc#对于v$sqltext和v$sqlarea,查看的是共享池中的SQL,其时间索引是其解析历史,因为由于共享的问题,这个查询可能无法完全反映执行历史。

#v$sqlstats反映了实例启动的sql执行统计信息,sql语句本身比v$sqltext/area更完整,因为后者可能无法交换出缓存。[方法2]将v$active_session_history与v $ sqlarea # v $ active _ session _ history结合起来只是对数据进行采样,以秒为单位进行,只统计采样点在cpu上或者没有等待空闲的会话。

所以可能不完整,会忽略一些短时运行的SQL。此视图无法还原完整的会话历史记录。

#v$sqlarea中有已执行的sql语句,但没有与会话的关联信息,只有当前的SQL与v $会话关联,所以也不会起作用。从v$sqlstat可以查看数据库启动的所有SQL信息,但是没有时序关系,没有执行用户信息,只有执行次数和资源统计。

AWR快照之间的SQL统计可以从dba_hist_sqlstat中看到。与v$sqlstats相比,它不受实例重启的影响,因为v$sqlstats中的信息在实例重启后被清除。[方法3:会话跟踪] SQL >执行DBMS _ session . session _ trace _ enable;PL/SQL过程已成功完成。SQL >从dba_hist_sqltext中选择countCOUNT - 478SQL >从V$sesstat中选择*其中row num = 1;SID statistical # VALUE---134 0 1Sql >执行DBMS _ session . session _ trace _ disable;PL/SQL过程已成功完成。$ CD $ ORACLE _ HOME/admin/test/Udump $ ls-lrt $ tkproftest _ ora _ 2195620 . trcreport . txt sys = no explain = no aggregate = yes $ more report . txt-此文件包括跟踪开始和停止之间所有SQL语句的执行信息。执行计划和统计[方法4: logminer]只包含DML和DDL语句,不能查询select

此外,需要打开补充日志记录,默认情况下不会打开。conn/assysdba-install log miner SQL > @ $ Oracle _ home/RDBMS/admin/dbmslmd . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/db mslm . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/DBMS LMS . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/prvtlm . plb;-打开附加日志变更数据库添加补充日志数据;-模拟DML操作conn p _陈明/。

SQL >从test2中选择*;SQL >插入到test2值中;SQL > mitConn/as sysdba -剪切存档SQL >更改系统开关日志文件;SQL >从v$archived_log中选择名称、dest_id、线程号、序列号;-最后一个是新的存档-create logminer SQL > executeddbms _ logmnr。add _ logfile-start miner SQL > execute DBMS _ log mnr。start _ logmnr-检查结果SQL> col用户名格式A8;SQL> col sql_redo format a50 SQL >从v$logmnr_contents中选择username,s,timestamp,sql_redo,其中table _ name = ' TEST2SQL >从v$logmnr_contents中选择username,s,timestamp,sql_redo,其中username = ' P _陈明';-关闭minersql > executedbms _ logmnr。end _ logmnr-关闭辅助日志SQL >更改数据库删除辅助日志数据;【总结】查看v$sqlarea只能查看粗略历史,因为很多SQL是共享的。检查ASH不全,因为是采样数据,测试的时候基本不查询SQL。

查看V$sqlSTATS,可以看到所有执行的SQL及其执行统计,但是没有时间顺序,也没有用户信息。检查跟踪应该是最完整的,但是它需要在运行SQL之前打开。

check logminer无法检查select语句,默认系统不打开补充日志,所以可以检查的内容有限。也许有审计方法。我没有测试他们。

每种方法都有自己的缺陷,所以似乎很难有一个完整的方法来查看SQL执行历史。

四、如何查看PL/SQL执行历史

除了PL/SQL的ctrl+e view方法外,还有以下方法:[方法1] query v$sql,v$sqltext,v$sqlarea,v $ sqlstats view select * from v $ sqlarea t其中t. parsing _ schema _ name按顺序由t. last _ active _ timedesc#对于v$sqltext和v$sqlarea,查看的是共享池中的SQL,其时间索引是其解析历史,因为由于共享的问题,这个查询可能无法完全反映执行历史。

#v$sqlstats反映了实例启动的sql执行统计信息,sql语句本身比v$sqltext/area更完整,因为后者可能无法交换出缓存。[方法2]将v$active_session_history与v $ sqlarea # v $ active _ session _ history结合起来只是对数据进行采样,以秒为单位进行,只统计采样点在cpu上或者没有等待空闲的会话。

所以可能不完整,会忽略一些短时运行的SQL。此视图无法还原完整的会话历史记录。

#v$sqlarea中有已执行的sql语句,但没有与会话的关联信息,只有当前的SQL与v $会话关联,所以也不会起作用。从v$sqlstat可以查看数据库启动的所有SQL信息,但是没有时序关系,没有执行用户信息,只有执行次数和资源统计。

AWR快照之间的SQL统计可以从dba_hist_sqlstat中看到。与v$sqlstats相比,它不受实例重启的影响,因为v$sqlstats中的信息在实例重启后被清除。[方法3:会话跟踪] SQL >执行DBMS _ session . session _ trace _ enable;PL/SQL过程已成功完成。SQL >从dba_hist_sqltext中选择countCOUNT - 478SQL >从V$sesstat中选择*其中row num = 1;SID statistical # VALUE---134 0 1Sql >执行DBMS _ session . session _ trace _ disable;PL/SQL过程已成功完成。$ CD $ ORACLE _ HOME/admin/test/Udump $ ls-lrt $ tkproftest _ ora _ 2195620 . trcreport . txt sys = no explain = no aggregate = yes $ more report . txt-此文件包括跟踪开始和停止之间所有SQL语句的执行信息。执行计划和统计[方法4: logminer]只包含DML和DDL语句,不能查询select

此外,需要打开补充日志记录,默认情况下不会打开。conn/assysdba-install log miner SQL > @ $ Oracle _ home/RDBMS/admin/dbmslmd . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/db mslm . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/DBMS LMS . SQL;SQL > @ $ ORACLE _ HOME/RDBMS/admin/prvtlm . plb;-打开附加日志变更数据库添加补充日志数据;-模拟DML操作conn p _陈明/。

SQL >从test2中选择*;SQL >插入到test2值中;SQL > mitConn/as sysdba -剪切存档SQL >更改系统开关日志文件;SQL >从v$archived_log中选择名称、dest_id、线程号、序列号;-最后一个是新的存档-create logminer SQL > executeddbms _ logmnr。add _ logfile-start miner SQL > execute DBMS _ log mnr。start _ logmnr-检查结果SQL> col用户名格式A8;SQL> col sql_redo format a50 SQL >从v$logmnr_contents中选择username,s,timestamp,sql_redo,其中table _ name = ' TEST2SQL >从v$logmnr_contents中选择username,s,timestamp,sql_redo,其中username = ' P _陈明';-关闭minersql > executedbms _ logmnr。end _ logmnr-关闭辅助日志SQL >更改数据库删除辅助日志数据;【总结】查看v$sqlarea只能查看粗略历史,因为很多SQL是共享的。检查ASH不全,因为是采样数据,测试的时候基本不查询SQL。

查看V$sqlSTATS,可以看到所有执行的SQL及其执行统计,但是没有时间顺序,也没有用户信息。检查跟踪应该是最完整的,但是它需要在运行SQL之前打开。

check logminer无法检查select语句,默认系统不打开补充日志,所以可以检查的内容有限。也许有审计方法。我没有测试他们。

每种方法都有自己的缺陷,所以似乎很难有一个完整的方法来查看SQL执行历史。

动词 (verb的缩写)如何查看oracle中存储过程的执行历史

选择t.sql_id,

t.sql_text,

s.plan_hash_value,

s.optimizer_cost

s.executions_total,

s . passage _ time _ total,

s.disk_reads_total,

s.buffer _ gets _ total

来自DBA_HIST_SQLSTAT s,DBA_HIST_SQLTEXT t

其中s.sql_id=t.sql_id

和t.sql_text,如“%存储过程名%”;

没想到别的好方法,真的不好查。将存储过程查找为SQL。

不及物动词查询oracle中占用会话最多的进程

当失败发生时,尝试用下面的语句抓住数据库导致失败的点。

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */SELECT sn . username,m.SID,sn。SERIAL#,m.TYPE,DECODE)) lmode,DECODE))请求,m.id1,M. id2来自v $ sessionsn,v $ lock m其中-有一个锁请求,即blocked OR IN) ORDER BY id1,id2,m . request;;/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *从v$sql中选择sql_text,其中hash_value在)/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */* * * * *它的基本语法结构是:一个会话被杀死,它的状态会被标记为杀死,下次用户触碰时Oracle会清除进程。我们发现当一个会话被终止时,该会话的paddr被修改。如果一个以上的会话被终止,则多个会话的Paddr将被更改为相同的进程地址:/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *有时,在oracle中已经被终止的进程需要等待pmon回滚已经被数据库占用的资源。有时,我们需要使用下面的脚本来找出那些在oracle中被终止的进程。在操作系统中,杀一次/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。$ kill -9 &paddr .

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表北库历史网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
上一篇:北洋军阀的发展历史 北洋军阀的发展历史下一篇:历史上的刘贺 历史上的刘贺

文章评论