使用臨時表解決表衝突一例
使用oracle的全域性臨時表。
本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告
http://blog.itpub.net/post/11/1194
平臺:windows 2000 server sp3
資料庫:Oracle 9.0.1.1.1
現場描述:使用者抱怨不能同時對多個單位進行資料處理,執行出現的錯誤資訊為:
SQL> exec sp_hyb_da_ryxx_dwbh_test('331028')
BEGIN sp_hyb_da_ryxx_dwbh_test('331028'); END;
*
ERROR 位於第 1 行:
ORA-02055: 分散式更新操作失效;要求回退
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小
ORA-06512: 在"SIDB.SP_HYB_DA_RYXX_DWBH_TEST", line 55
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小
ORA-06512: 在"SIDB.SP_HYB_DA_RYXX", line 145
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小
ORA-06512: 在"SIDB.SP_HYB_DA_RYXX_YZ1", line 25
ORA-20901: 過程SP_HYB_DAXX出錯;grbh = 1000607288 ORA-02049: 超時:
分散式事務處理等待鎖定
請聯絡系統管理員;1
ORA-06512: 在line 1
經檢查後發現是後臺儲存過程中使用了‘臨時’表,這些臨時表用於臨時儲存部分正式表的資料,應用程式儲存過程的程式碼形如
DELETE ;
INSERT INTO SELECT *FROM WHERE …;
這種方法造成了在同時執行的時候由於對鎖定的等待而只能同時進行一個單位的資料處理。
可以透過使用Oracle真正意義上的臨時表消除對臨時表的鎖定。
臨時表的基本定義是:
資料庫中的所有會話均可以訪問臨時表,但只有插入資料到臨時表中的會話才能看到本身插入的資料。可以把臨時表指定為事務相關(預設)或者是會話相關:
ON COMMIT DELETE ROWS:指定臨時表是事務相關的,Oracle在每次提交後截斷表。
ON COMMIT PRESERVE ROWS:指定臨時表是會話相關的,Oracle在會話中止後截斷表。
透過使用Oracle的臨時表後可以並行的對資料進行處理,有效的提高了資料處理的速度。
附:建立臨時表的例子
CREATE GLOBAL TEMPORARY TABLE
AS
SELECT *FROM WHERE 1 = 2;
CREATE INDEX ON ();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21518/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- composer包依賴衝突解決一例
- 依賴衝突時的解決方法
- Git 解決衝突Git
- git 解決衝突Git
- 建立結算清單時提示衝突解決方案
- 使用SUI與JQuery衝突的解決方法UIjQuery
- oracle 臨時表的使用Oracle
- SQLServer臨時表的使用SQLServer
- 程式衝突及其解決
- git pull 衝突解決Git
- windows解決埠衝突Windows
- IP衝突解決方案
- SVN 版本衝突解決
- hash衝突解決方法
- Git衝突解決技巧Git
- H5-Jquery和Vue同時使用衝突H5jQueryVue
- SQL SERVER臨時表的使用SQLServer
- css命名衝突解決方法CSS
- SVN解決衝突 記錄
- 流衝突解決方案——流
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- mysql 新增時,唯一索引衝突時更新MySql索引
- IP衝突 資料庫時斷時續資料庫
- 【實驗】重建臨時表空間解決臨時表空間過大問題
- Oracle臨時表使用注意事項Oracle
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案
- Git 衝突了怎麼辦,如何高效快速的解決程式碼衝突?Git
- git pull衝突的解決方案Git
- JAR衝突問題的解決JAR
- git 解決版本衝突問題Git
- 關於hash衝突的解決
- Git命令列下解決衝突Git命令列
- Eclipse中Egit衝突解決EclipseGit
- 如何解決git程式碼衝突Git
- 實戰資料結構(10)_雜湊表的使用--開地址法解決衝突資料結構
- 【臨時表空間】11g中使用 SHRINK方法縮小臨時表空間和臨時檔案(續)
- win10系統下360與windows defender衝突不能同時使用如何解決Win10Windows
- Gradle 使用技巧(四) - 如何定位和解決依賴衝突Gradle