當前位置:首頁 » 編程語言 » 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