日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle只读事物,oracle的只读事务

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle只读事物,oracle的只读事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一致性讀是oracle區別于其他數據庫的重要特點之一,但一般來說,這個一致性讀是sql級別的,只針對單個sql有效。

由于業務邏輯需要,我們可能需要在一個事務中的多個sql也能實現讀一致性,也就是說,數據源在事務開始時就定下來了,不受其他會話影響。oracle的只讀事務可以實現這個功能,它可以在事務級別上實現讀一致性。

看下面的實驗:

SQL> select * from t1;

ID

---------------------------------------

1

SQL> set serverout on

SQL>

SQL> create or replace procedure p_test is

2 l_id int;

3 begin

4 select id into l_id from t1;

5 dbms_output.put_line(l_id);

6 dbms_lock.sleep(15);

7 select id into l_id from t1;

8 dbms_output.put_line(l_id);

9 end p_test;

10 /

Procedure created

SQL> exec p_test;

--在p_test運行期間(執行dbms_lock.sleep時),修改t1的數據:

SQL> update t1 set id=2;

1 row updated

SQL> commit;

Commit complete

--以下是輸出結果

1

2

可以看到,由于第二次讀取t1表的數據時,由于有其他會話修改并提交了t1表的數據,所以第二次得到的結果是2.

我們對這個p_test做一個簡單的修改,設置只讀事務:

SQL> create or replace procedure p_test is

2 l_id int;

3 begin

4 set transaction read only;

5 select id into l_id from t1;

6 dbms_output.put_line(l_id);

7 dbms_lock.sleep(15);

8 select id into l_id from t1;

9 dbms_output.put_line(l_id);

10 end p_test;

11 /

Procedure created

SQL> exec p_test;

--在p_test運行期間(執行dbms_lock.sleep時),修改t1的數據:

SQL> update t1 set id=3;

1 row updated

SQL> commit;

Commit complete

--以下是輸出結果

2

2

可以看到,雖然第二次讀取t1表的數據前,已經有其他會話修改并提交了t1表的數據,但第二次得到的結果仍然是2.

這就是只讀事務的功能,它在整個事務中保證一致性讀:在整個事務中的數據在事務開始時就決定,即使有其他會話在事務周期內修改并提交數據,也不會影響事務。可以認為在只讀事務周期內,其他事務的對數據的改變就像不存在一樣。

在顯式提交或者回滾后、或執行ddl后,結束只讀事務。需要注意:因為只讀事務的原理是讀取undo中數據的前鏡像來實現一致性讀的,所以,只讀事務運行時間不能過長,否則會報0ra-01555。

還有一點,只讀事務下是不能對數據做修改的:

suk@ORA10G> set transaction read only;

事務處理集。

suk@ORA10G> delete from test;

delete from test

*

第 1 行出現錯誤:

ORA-01456: 不能在 READ ONLY 事務處理中執行插入/刪除/更新操作

總結

以上是生活随笔為你收集整理的oracle只读事物,oracle的只读事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。