SHUTDOWN IMMEDIATE:不允許新的連接、不等待會話結(jié)束、不等待事務(wù)結(jié)束、做一個檢查點并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務(wù)是自動rollback的。啟動時不需要實例恢復(fù)。
創(chuàng)新互聯(lián)于2013年成立,先為新區(qū)等服務(wù)建站,新區(qū)等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為新區(qū)企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1. 在V$ACCESS視圖中找到要停止進程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存儲過程名稱';
2. 在V$SESSION視圖中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='剛才查到的SID'。
3.殺掉查找出來的進程
alter system kill session 'SID,SERIAL#' immediate;
解釋:進程都有唯一的進程id(SID)和序列號(SERIAL#),之后通過kill命令即可強制停止進程。
Oracle事務(wù)始于DML語句 情況發(fā)事務(wù)結(jié)束: 一、COMMIT/ROLLBACK 二、執(zhí)行DDL/DCL語句 三、客戶端主斷數(shù)據(jù)庫連接(DISCONNECT) 四、數(shù)據(jù)庫關(guān)閉(宕機) 另外DDL/DCL語句實際事務(wù)其隱含COMMIT Oracle需要特別指定事務(wù)始結(jié)束事務(wù)結(jié)束事務(wù)
用以下的sql可以查詢出當前session中正在運行的sql信息:
select
s.module,
sql_text,
sn.osuser,
sn.machine,
s.executions
from
sys.v_$sql
s,
sys.all_users
u,
v$session
sn
where
s.parsing_user_id
=
u.user_id
and
upper(u.username)
in
('username')
and
(upper(s.module)
=
'app.exe')
and
sn.sql_hash_value
=
s.hash_value
and
sn.sql_address
=
s.address
order
by
s.last_load_time
當然不是了,在Oracle中,只有DML才會開啟一個事務(wù)。也就是說Insert,Update,Delete這些都會開啟一個事務(wù),并且該事務(wù)在commit/rollback/ddl命令時會自動結(jié)束。
其他的,像查詢語句Select(不包含F(xiàn)or Update等語句)時,是不會開啟一個事務(wù)的。
補充:
首先有一點非常抱歉,上次的回答中誤將DML寫成了DDL,可能這一點兒讓你誤解了。
“當insert語句后會打開事務(wù),然后再來一個insert語句又會是一個新事物是嗎”這種說法是不正確的,第一個Insert沒有commit或者rollback的情況下,第二個Insert和第一個是屬于同一個事務(wù)的。因為Insert不屬于commit/rollback/ddl命令,而是屬于DML命令。
當?shù)谝粋€Insert結(jié)束后,立即執(zhí)行一個新建表,刪除表等命令(DDL命令),則會結(jié)束當前事務(wù)。