ora-04068 ora-06508 已丟棄程式包 的當前狀態
在呼叫含有全域性變數的包的儲存過程裡的異常處理模組加一句:
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
IF SQLCODE = -6508 THEN
dbms_session.reset_package;
......
這樣當全域性變數包被修訂後,儲存過程會報一次警告通知使用者再次重試一次即可成功,達到重新整理包快取的效果。
在包頭中宣告的變數的作用域為全域性範圍,故稱為全域性變數,這些變數對於具有執行許可權的任何PL/QSL塊都是可見的。由於包的變數都存放在使用者全域性區(UGA)的會話儲存區中,全域性變數自然也不例外。故全域性變數的值是基於會話級別的,在整個會話期間它都會維持它的最新值,在會話中設定、修改、維護全域性變數的值對其它會話不會有影響。不同的會話都有自己全域性變數的本地副本。當pl/sql包pkgA進行重編時,引用了pkgA的其它包,包括pkgB,全都會自動變成失效狀態。pkgB下次執行時,發現狀態已失效,於是按oracle機制自動進行重編。由於全域性變數的全域性性是會話級別的,每個會話本地副本中全域性變數的值可能都不一樣。但自動重編譯導致全域性變數值的重新獲取,覆蓋了本地副本中的值。此時,oracle若再“靜默”地自動重編譯,會導致各會話本地全域性變數的值變得不可控,因為它不再是以前的值了,而是被重置成了初始值。因此,oracle必須採取丟擲錯誤的辦法來顯式地通知使用者會話,否則,使用者沒辦法知道全域性變數的值已發生了變化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24870090/viewspace-1059759/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaFX:當前的狀態和不久的將來Java
- unity 動態修改當前橫豎屏狀態Unity
- status 返回當前請求的http狀態碼HTTP
- 如何檢視資料庫當前的狀態?資料庫
- 統計當前系統中不同執行狀態的程式數量
- java檢測當前CPU負載狀態的方法Java負載
- Oracle 定時Job報錯ORA-04068 ORA-06508Oracle
- 使用sestatus命令來檢視SELinux的當前狀態Linux
- 提取DB2多分割槽環境當前的狀態DB2
- [100分求助]如何使用VC程式設計獲取網路卡當前的狀態 - IT者C程式程式設計
- JS在瀏覽器中判斷當前網路狀態JS瀏覽器
- H5 記錄當前頁面的選中狀態,sessionStorageH5Session
- 直播平臺原始碼,快速獲取當前狀態列高度原始碼
- Android推斷程式前後臺狀態Android
- 容器網路防火牆狀態異常導致丟包排查記錄防火牆
- 當前控制檔案全部丟失恢復
- 區塊鏈當前的發展現狀區塊鏈
- Fragment Transactions和Activity狀態丟失Fragment
- js外掛--獲取指定時間距離當前時間狀態:上週,當前周,前天,昨天,今天,明天,後天,當前周,下週。JS
- rman恢復:資料檔案丟失,控制檔案丟失,聯機日誌檔案丟失(非當前使用與當前使用)
- linux下如何關閉防火牆?如何檢視防火牆當前的狀態Linux防火牆
- Linux當前當前程式Linux
- Android檢測網路狀態,判斷當前網路是否可用Android
- 使用常見的網路命令檢視當前網路狀態——Mac OS X篇Mac
- ORA-04068,ORA-04065,ORA-06508 PL/SQL: could not find program unit being calledSQL
- 如何檢測 SAP 電商雲 Spartacus UI 當前正處於導航狀態UI
- 規劃ASM DISK GROUP、檢視asm 磁碟當前狀態、mount or dismount 磁碟組ASM
- iOS 獲取當前已連線 WiFi 資訊iOSWiFi
- Python: 攜帶狀態的閉包Python
- 更改模型中的請求包狀態模型
- 【JS】在連續性監聽事件中,監聽當前狀態是否變化JS事件
- Android判斷當前棧頂Activity的包名Android
- 程式的建立和程式的狀態
- Linux作業系統中如何檢視當前程式的狀態?Linux作業系統
- 程式的3種狀態
- javaScript動態顯示當前時間JavaScript
- 短視訊平臺開發,按返回鍵直接結束當前連麥狀態
- 求助:JSF中下拉框中如何控制預設狀態當前值選中?JS