当前位置:首页 » 编程语言 » prevsqlid
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

prevsqlid

发布时间: 2022-06-25 00:36:19

❶ oracle查询未释放连接的sql

用如下语句查询未释放连接的sql。

selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id=o.object_idandl.session_id=s.sid;

如图,就是查看未释放连接的语句的sid等内容。

❷ SQL怎么查询每个数据库的标识ID号

1、首先打开安装的SQL数据库;

❸ sql语句如何获取当前ID,求解~

假如你通过URL参数或表单提交的参数名为id,那么可以这样:
<%
Dim Rs,Sql
Set
Rs = Server.CreateObject("ADODB.RecordSet")
Sql = "SELECT * FROM Music_mv WHERE Id = " & CLng(Request("id"))
Rs.Open Sql,Conn,1,1
%>
如果还有问题欢迎追问,问题解决请及时选为满意回答,谢谢.

❹ oracle数据库里怎么查询终端号的心跳异常数

你好!
这时候需要找出造成异常阻塞的session并清除。
oracle
session通常具有三个特征:
(1)一个session可能阻塞多个session;
(2)一个session最多被一个session阻塞;
(3)session阻塞关系不会形成环路。(环路即死锁,oracle能自动解除)
因此session的阻塞关系为一棵树,进而DB系统所有session的BLOCK阻塞关系是一个由若干session阻塞关系树构成的森林,而异常session一定会在故障爆发时成为根(root)。因此,找寻异常锁表session的过程就是找出异常的root。
一般认为异常root有两个特征:(1)block树的规模过大,阻塞树规模即被root层层阻塞的session总数;(2)阻塞的平均等待时间过长。
查找异常session的方法一:
OEM—>
performance—>
Blocking
Sessions
查找异常session的方法二:
select
r.root_sid,
s.serial#,
r.blocked_num,
r.avg_wait_seconds,
s.username,s.status,s.event,s.MACHINE,
s.PROGRAM,s.sql_id,s.prev_sql_id
from
(select
root_sid,
avg(seconds_in_wait)
as
avg_wait_seconds,
count(*)
-
1
as
blocked_num
from
(select
CONNECT_BY_ROOT
sid
as
root_sid,
seconds_in_wait
from
v$session
start
with
blocking_session
is
null
connect
by
prior
sid
=
blocking_session)
group
by
root_sid
having
count(*)
>
1)
r,
v$session
s
where
r.root_sid
=
s.sid
order
by
r.blocked_num
desc,
r.avg_wait_seconds
desc;
该SQL语句即是根据v$session的字段blocking_session统计阻塞树根阻塞session的计数以及平均阻塞时间、并进行排序,排名最前的往往是异常session。

❺ SQL怎么用ID字符串查询ID

1、新建表drop table if exists Category; create table Category ( cateId int(5) not null AUTO_INCREMENT, chiName varchar(80), primary key (cateId) ); drop table if exists OpenRecord; create table OpenRecord ( opreId int(5) not null AUTO_INCREMENT, cateIds varchar(80), primary key (opreId) );

2、初始化数据
insert Category(chiName) values (fish),(shrimp),(crab),(tiger); insert OpenRecord(cateIds) values(1,2); insert OpenRecord(cateIds) values(2,3);

3、查询OpenRecord中Id为1包括的Category 。
#错误的方法
select * from Category where (select INSTR(cateIds,cateId) from OpenRecord where opreId=1)

#正确的方法
select * from Category where (select FIND_IN_SET(cateId,cateIds) from OpenRecord where opreId=1)

用INSTR会出现当ID大于10的时候,查ID为1的数据,会把1,10,11,12......的都拿出来 。
4、扩展会出现的问题 。
用FIND_IN_SET可以解决ID是用","号隔开的问题 。然而会有另外的两种情况 。
A、当ID不包含",",但是用别的符号分开时,如用"|" 。我们有如下的解决办法
select *
from Category
where (select FIND_IN_SET(cateId,REPLACE(cateIds,|,,)) from OpenRecord where opreId=1)

❻ 怎么查询造成oracle行级锁的sql

select .sid,a.serial#,blocking_session,username,event,b.sql_text
from v$session a,v$sql b,v$lock c
where a.prev_sql_id=b.sql_id
and a.sid=c.sid
and type in('TX','TM');

❼ oracle中V$session 表中各个字段的中文说明是什么

SADDR - session address
SID - session identifier 常用于链接其他列
SERIAL# - SID有可能会重复,当两个session的SID重复时,SERIAL#用来区别session(说白了某个session是由sid和serial#这两个值确定的)
AUDSID - audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');
PADDR - process address,关联v$process的addr字段,通过这个可以查询到进程对应的session
USER# - 同于dba_users中的user_id,Oracle内部进程user#为0.
USERNAME - session's username。等于dba_users中的username。Oracle内部进程的username为空。
COMMAND - session正在执行的sql id,1代表create table,3代表select。
TADDR - 当前的transaction address。可以用来关联v$transaction中的addr字段。
LOCKWAIT - 可以通过这个字段查询出当前正在等待的锁的相关信息。sid + lockwait与v$loc中的sid + kaddr相对应。
STATUS - 用来判断session状态。Active:正执行SQL语句。inactive:等待操作。killed:被标注为杀死。
SERVER - 服务类型。
SCHEMA# - schema user id。Oracle内部进程的schema#为0。
SCHEMANAME - schema username。Oracle内部进程的为sys。
OSUSER - 客户端操作系统用户名。
PROCESS - 客户端process id。
MACHINE - 客户端machine name。
TERMINAL - 客户端执行的terminal name。
PROGRAM - 客户端应用程序。比如ORACLE.EXE或sqlplus.exe
TYPE - session类型。
SQL_ADDRESS,SQL_HASH_VALUE,SQL_ID,SQL_CHILD_NUMBER - session正在执行的sql状态,和v$sql中的address,hash_value,sql_id,child_number对应。
PREV_SQL_ADDR,PREV_HASH_VALUE,PREV_SQL_ID,PREV_CHILD_NUMBER - 上一次执行的sql状态。
MODULE,MODULE_HASH,ACTION,ACTION_HASH,CLIENT_INFO - 应用通过DBMS_APPLICATION_INFO设置的一些信息。
FIXED_TABLE_SEQUENCE - 当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加。因此可以根据这个字段来监控某个时间点以来的session性能情况。例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics。
ROW_WAIT_OBJ# - 被锁定行所在table的object_id。和dba_object中的object_id关联可以得到被锁定的table name。
ROW_WAIT_FILE# - 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。
ROW_WAIT_BLOCK# - 同上,对应块。
ROW_WAIT_ROW# - session当前正在等待的被锁定的行。
LOGON_TIME - session logon time.

❽ 如何获取SQL SERVER数据库中特定行的id号

可以用row_number函数,如以下数据:

ID NAME

1 张三

3 李四

5 王五

7 赵六

如查询王五这条数据在数据库里是第几条,可以这样。

1
2
3
select t.rn from
(select *,row_number() over(order by id) rn from 表名) t
where t.name='王五'
结果会显示为3,也就是第三条数据

❾ 如何查找哪个object使用了临时表空间

Oracle提供了视图v$tempseg_usage(v$sort_usage)能够查询到session使用临时段的大小.

Name Null?
Type
----------------------------------------------------- --------
------------------------------------
USERNAME
VARCHAR2(30)
USER
VARCHAR2(30)
SESSION_ADDR
RAW(8)
SESSION_NUM
NUMBER
SQLADDR
RAW(8)
SQLHASH
NUMBER
SQL_ID
VARCHAR2(13)
TABLESPACE
VARCHAR2(31)
CONTENTS
VARCHAR2(9)
SEGTYPE
VARCHAR2(9)
SEGFILE#
NUMBER
SEGBLK#
NUMBER
EXTENTS
NUMBER
BLOCKS
NUMBER
SEGRFNO#
NUMBER

SESSION_ADDR对应v$session.saddr

SESSION_NUM 对应v$session.SERIAL#

BLOCKS为使用临时段的块数量

SEGTYPE对应为: SORT,HASH,DATA,INDEX,LOB_DATA,LOB_INDEX

但是没有提供segtype类型对应的具体对象.

查看该视图的定义:

SQL> SELECT view_definition
2 FROM v$fixed_view_definition

3 WHERE view_name =
'GV$SORT_USAGE';
VIEW_DEFINITION
----------------------------------------------------------------------------------------------------
select
x$ktsso.inst_id, username, username, ktssoses, ktssosno, prev_sql_addr,
prev_hash_value, prev
_sql_id, ktssotsn, decode(ktssocnt, 0, 'PERMANENT', 1,
'TEMPORARY'), decode(ktssosegt, 1, 'SORT', 2,
'HASH', 3, 'DATA', 4, 'INDEX',
5, 'LOB_DATA', 6, 'LOB_INDEX' , 'UNDEFINED'), ktssofno, ktssobno, kt
ssoexts,
ktssoblks, ktssorfno from x$ktsso, v$session where ktssoses = v$session.saddr
and ktssosno
= v$session.serial#

sql格式化后如下

select x$ktsso.inst_id,
username,
username,

ktssoses,
ktssosno,
prev_sql_addr,

prev_hash_value,
prev_sql_id,
ktssotsn,

decode(ktssocnt, 0, 'PERMANENT', 1, 'TEMPORARY'),

decode(ktssosegt,
1,
'SORT',

2,
'HASH',
3,

'DATA',
4,
'INDEX',

5,
'LOB_DATA',
6,

'LOB_INDEX',
'UNDEFINED'),
ktssofno,

ktssobno,
ktssoexts,
ktssoblks,
ktssorfno

from x$ktsso, v$session
where ktssoses = v$session.saddr
and ktssosno
= v$session.serial#

可以看到视图数据主要来源于x$ktsso.

x$ktsso为fix table,只能sys用户才能查询.

用下面SQL进行授权

create view x_$ktsso as select * from x$ktsso;
create public synonym
x$ktsso for x_$ktsso;
grant select on x_$ktsso to &&monitor;

SQL> desc
x$ktsso
Name Null?
Type
----------------------------------------------------- --------
------------------------------------
ADDR
RAW(8)
INDX
NUMBER
INST_ID
NUMBER
KTSSOSES
RAW(8)
KTSSOSNO
NUMBER
KTSSOTSN
VARCHAR2(31)
KTSSOCNT
NUMBER
KTSSOSEGT
NUMBER
KTSSOFNO
NUMBER
KTSSOBNO
NUMBER
KTSSOEXTS
NUMBER
KTSSOBLKS
NUMBER
KTSSORFNO
NUMBER
KTSSOOBJD
NUMBER
KTSSOOBJN
NUMBER
KTSSOTSNUM
NUMBER

开始以为 KTSSOOBJD对应dba_object.object_id,经过测试 KTSSOOBJN 为object_id.

这样我们就能够查询到哪个object使用了临时段.

❿ 如何查询sql对应的prev

试试在dba_hist_active_sess_history
先通过sql_id找到session_id
通过session_id 按照时间排序 找到这个sql前面执行的sql_id,应该是 prev_sql_id