2014-02-05 41 views
1

我有理論上的問題。 我的應用程序使用Odp.Net。我添加爲參考文件Oracle.DataAccess.dll版本2.112.3.0。 我正在使用Odp.Net查詢數據庫和註冊表查詢通知。 在每臺計算機上,我從http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html安裝ODAC 11.2 Release 5(11.2.0.3.20)。Odp.Net - 根據客戶和服務器

我想知道我的Odp.Net版本,Oracle客戶端版本(可以安裝在客戶端計算機上)和Oracle服務器版本之間的依賴關係。

問題是,我註冊查詢通知後,我可以看到USER_CHANGE_NOTIFICATION_REGS表中的行。但幾秒鐘後,此通知未註冊並消失。我讀到這與版本問題有關,但我不明白我必須做什麼。

我的目標是在我的應用程序中使用相同的Odp.Net文件(Oracle.DataAccess.dll +一些額外的依賴項,如oci.dll等)。

回答

0

解決 Oracle服務器版本11.2.0.1.0 11.2.0.2.0和有一個bug。如果其他版本的客戶端註冊事件,它會在第一次數據庫更改後自動取消註冊。爲了解決這個問題,我必須保持堅持不懈的命令: alter system set event ='10867 trace name context context forever,level 1,COMMENT ='komentarz'SCOPE = SPFILE;

+1

上述解決方案是一種解決方法,不應長期依賴。正確的解決方法是修補數據庫和odp.net客戶端。這是一個非常古老的錯誤,兩者的最新補丁將解決它。 –

1

ODP版本解密

ABCD(例如2.112.3.0):

  • 一個(2).NET版本(2.0+你的情況)
  • B(112)的Oracle客戶端版本( 11.2以上版本你的情況)
  • C,d(3,0)ODP版本(ODP的3D版爲.NET 2.0 Oracle客戶端11.2)

另一個EXA mple:「4.100.1.0」 - ODP for .Net 4.0+和Oracle Client 10.0+第一版

+0

那麼爲什麼在服務器10.2.0.4.0和客戶端10.2.0.3.0更改通知工作良好,但在服務器11.2.0.1.0和客戶端10.2.0.3.0它不起作用(就像我寫的通知從數據庫dissapear幾秒鐘後)。在這兩種情況下,我使用相同的odp 2.112.3.0 – templaris

0

11.2.0.1數據庫中有關於更改通知的錯誤。

下面的SQL導致甲骨文以避免與舊版本的bug的代碼路徑,但建議您升級數據庫:

ALTER SYSTEM SET事件「10867痕跡的名字永遠背景下,1級」;

這並不意味着永久性的解決方案。您應該升級兩個ODP.NET並將數據庫修補到最新的11.2補丁集。

基督教吉文

甲骨文

+0

我知道你的解決方案,但1)我有案件時,服務器是在11.2.0.2版本,我仍然沒有收到通知2)後改變系統...所有的作品,但只有時間當我重新啓動服務器 - 我可以解決它並添加永久系統更改? – templaris

+0

如果這個alter system修復了這個問題,那麼你正在碰到這個bug。除了數據庫正在升級,ODP。NET也必須升級來修復這個bug。我認爲在發行說明中應該提到這一點。 –