新聞中心
請(qǐng)問Oracle何時(shí)開啟一個(gè)事務(wù)啊,謝謝
當(dāng)然不是了,在Oracle中,只有DML才會(huì)開啟一個(gè)事務(wù)。也就是說Insert,Update,Delete這些都會(huì)開啟一個(gè)事務(wù),并且該事務(wù)在commit/rollback/ddl命令時(shí)會(huì)自動(dòng)結(jié)束。
為黎城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及黎城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、做網(wǎng)站、黎城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
其他的,像查詢語句Select(不包含F(xiàn)or Update等語句)時(shí),是不會(huì)開啟一個(gè)事務(wù)的。
補(bǔ)充:
首先有一點(diǎn)非常抱歉,上次的回答中誤將DML寫成了DDL,可能這一點(diǎn)兒讓你誤解了。
“當(dāng)insert語句后會(huì)打開事務(wù),然后再來一個(gè)insert語句又會(huì)是一個(gè)新事物是嗎”這種說法是不正確的,第一個(gè)Insert沒有commit或者rollback的情況下,第二個(gè)Insert和第一個(gè)是屬于同一個(gè)事務(wù)的。因?yàn)镮nsert不屬于commit/rollback/ddl命令,而是屬于DML命令。
當(dāng)?shù)谝粋€(gè)Insert結(jié)束后,立即執(zhí)行一個(gè)新建表,刪除表等命令(DDL命令),則會(huì)結(jié)束當(dāng)前事務(wù)。
如何用語句關(guān)閉oracle數(shù)據(jù)庫
1、正常關(guān)閉
正常關(guān)閉數(shù)據(jù)庫所用的選項(xiàng)是normal,數(shù)據(jù)庫在關(guān)閉前將檢查所有的連接,并且發(fā)出命令后不允許再有新的用戶連接,在等待所有連接都斷開后再關(guān)閉數(shù)據(jù)庫,再次啟動(dòng)數(shù)據(jù)庫不需要任何恢復(fù)過程。
聯(lián)入sys用戶
sqlshutdown normal;
2、緊急關(guān)閉
該方式用在某些緊急的情況下,比如通知馬上停電,此時(shí)需要緊急關(guān)閉數(shù)據(jù)庫以應(yīng)付這些情況。這種方式用的選項(xiàng)是immediate,在這種方式下并不等待所有的用戶斷開連接再關(guān)閉,而是由系統(tǒng)斷開連接,然后關(guān)閉數(shù)據(jù)庫。
sqlshutdown immediate;
一旦執(zhí)行了這條命令,則將當(dāng)前正在處理的sql語句馬上停止,然后將所有未提交的事務(wù)回退,并且不等待當(dāng)前聯(lián)入數(shù)據(jù)庫的用戶斷開連接,而是由系統(tǒng)強(qiáng)行將各個(gè)聯(lián)接斷開。在下次啟動(dòng)數(shù)據(jù)庫時(shí)要執(zhí)行恢復(fù)動(dòng)作,不過是由系統(tǒng)自動(dòng)執(zhí)行的,用戶不必去了解它。
3、異常關(guān)閉
異常關(guān)閉選項(xiàng)是abort,此種方式下系統(tǒng)并不做任何檢查和斷開用戶操作以及回退操作,而是直接將數(shù)據(jù)庫現(xiàn)場(chǎng)撤銷,這樣現(xiàn)場(chǎng)中的數(shù)據(jù)庫數(shù)據(jù)當(dāng)然就無效了,數(shù)據(jù)庫自然也就被關(guān)掉了。
sqlshutdown abort;
以abort方式關(guān)閉數(shù)據(jù)庫時(shí)只有一行關(guān)閉信息表示關(guān)閉了數(shù)據(jù)庫現(xiàn)場(chǎng)。以abort方式關(guān)閉的數(shù)據(jù)庫再次啟動(dòng)時(shí)必須要進(jìn)行恢復(fù)動(dòng)作,這些恢復(fù)操作同樣是系統(tǒng)自動(dòng)來完成的,需要的時(shí)間較長。
為什么一個(gè)DDL語句執(zhí)行的前后需要結(jié)束事務(wù)
Oracle事務(wù)始于DML語句 情況發(fā)事務(wù)結(jié)束: 一、COMMIT/ROLLBACK 二、執(zhí)行DDL/DCL語句 三、客戶端主斷數(shù)據(jù)庫連接(DISCONNECT) 四、數(shù)據(jù)庫關(guān)閉(宕機(jī)) 另外DDL/DCL語句實(shí)際事務(wù)其隱含COMMIT Oracle需要特別指定事務(wù)始結(jié)束事務(wù)結(jié)束事務(wù)
oracle 如何結(jié)束正在運(yùn)行的語句
用以下的sql可以查詢出當(dāng)前session中正在運(yùn)行的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中怎么結(jié)束存儲(chǔ)過程
1. 在V$ACCESS視圖中找到要停止進(jìn)程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存儲(chǔ)過程名稱';
2. 在V$SESSION視圖中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='剛才查到的SID'。
3.殺掉查找出來的進(jìn)程
alter system kill session 'SID,SERIAL#' immediate;
解釋:進(jìn)程都有唯一的進(jìn)程id(SID)和序列號(hào)(SERIAL#),之后通過kill命令即可強(qiáng)制停止進(jìn)程。
oracle shutdown immediate 怎么操作
SHUTDOWN IMMEDIATE:不允許新的連接、不等待會(huì)話結(jié)束、不等待事務(wù)結(jié)束、做一個(gè)檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務(wù)是自動(dòng)rollback的。啟動(dòng)時(shí)不需要實(shí)例恢復(fù)。
本文標(biāo)題:oracle如何結(jié)束事物,oracle強(qiáng)制結(jié)束事務(wù)
文章URL:http://fisionsoft.com.cn/article/hsjeie.html