国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle里面使用臨時表解決表沖突一例(轉貼)

2024-08-29 13:30:09
字體:
來源:轉載
供稿:網友

平臺: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 <temp table>;

insert into <temp table> select *from <normal table> where …;

這種方法造成了在同時執行的時候由于對<temp table>鎖定的等待而只能同時進行一個單位的數據處理。

可以通過使用oracle真正意義上的臨時表消除對臨時表的鎖定。

臨時表的基本定義是:

數據庫中的所有會話均可以訪問臨時表,但只有插入數據到臨時表中的會話才能看到本身插入的數據。可以把臨時表指定為事務相關(默認)或者是會話相關:

on commit delete rows:指定臨時表是事務相關的,oracle在每次提交后截斷表。

on commit preserve rows:指定臨時表是會話相關的,oracle在會話中止后截斷表。

通過使用oracle的臨時表后可以并行的對數據進行處理,有效的提高了數據處理的速度。




附:創建臨時表的例子




create global temporary table <temp table>

as

select *from <normal table> where 1 = 2;

create index <index name> on <temp table> (<column name>);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清流县| 莱阳市| 资源县| 桦南县| 邵武市| 安徽省| 平昌县| 青铜峡市| 湖口县| 方山县| 江达县| 长治市| 张北县| 怀化市| 金湖县| 和平县| 昌江| 壶关县| 筠连县| 澎湖县| 德州市| 菏泽市| 孙吴县| 响水县| 兖州市| 新郑市| 高阳县| 荣成市| 大化| 常山县| 文化| 昌吉市| 遂昌县| 泰和县| 孝义市| 宽甸| 海宁市| 新绛县| 宜宾市| 惠东县| 江津市|