2016-05-16 30 views
0

我正在玩交易,但我有一個奇怪的行爲,我無法解釋。也許你可以幫助我?交易SERIALIZABLE,奇怪的行爲?

考慮2個事務,T1和T2都在隔離級別SERIALIZABLE下運行。 T1開始執行插入而不提交。 T2在T1執行插入操作時開始。但是,T2插入10k行。但是,在插入147個數據後,錯誤ORA-08177:無法序列化此事務的訪問權限。

但是,這不應該發生,因爲T1在這一行沒有鎖(它不重複鍵或類似的東西)所以爲什麼會發生這種情況?

T1 
INSERT INTO A 
VALUES(520089, 1, 'START', '198903111695', 'YEAR', 2017, '675013219393', 'I8', 'CREATED', '2016-08-09 18:26:49','2017-03-15 06:39:27'); 




T2 
INSERT INTO A VALUES(520100,2, 'ACHIEVED', '196107246620', 'YEAR', 2018, '660564690379', 'I0', 'FULL', '2018-07-09 07:54:35', '2010-10-20 17:42:04'); 
INSERT A VALUES(520101,2, 'ACHIEVED', '196107246620', 'YEAR', 2018, '660564690379', 'I0', 'FULL', '2018-07-09 07:54:35', '2010-10-20 17:42:04'); 
.....for loop 
INSERT INTO A VALUES(520147, 2, 'STARTED', '196503264535', 'MONTH', 201105, '305355347867', 'I8', 'TESTED', '2012-11-14 00:31:58', '2015-08-16 09:36:41') 
here it crash, and gives me the error. 

我唯一的主鍵是A中的第一個值,第二個值是外鍵。

那麼,有人可以解釋發生了什麼?

+0

看看這個話題https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7636765105002 – Serg

回答

0

由於您正在使用可序列化的事務,它將等待其他事務鎖定同一個表。真的需要嗎?試試刪除關卡。

+0

serializable不鎖定整個表。你錯了。 – jblad