64bit系統下相容oracle32bit問題

2021-06-12 05:03:28 字數 2203 閱讀 7642

※環境

os:windows server 2008r2 64bit.

開發工具: vs2010 (netfv4.0)+ c# + nhibernate + oracleclient

oracle:10.0.2 64bit server +10.0.2 32bit client ※

錯誤現象

資料庫連線失敗:ora-12514: tns: 監聽程式當前無法識別連線描述符中請求的服務.

※解決方案:

在監聽檔案中加入下面紅字部分:

sid_list_listener =

(sid_list =

(sid_desc =

(sid_name = pl***tproc)

(oracle_home = d:\oracle)

(program = extproc)

)(sid_desc =

(global_dbname = orcl)

(oracle_home = d:\oracle)

(sid_name = orcl)))

※錯誤現象

c#連線oracle 報錯「system.data.oracleclient需有oracle使用者端軟體版本8.1.7或以上版本".

※解決方案:

許可權限制。oracle安裝目錄,network service使用者沒有訪問許可權。

所以只要給oracle安裝目錄,設定network service的訪問許可權即可。詳細步驟如下:

1. 在 oracle 安裝目錄上(如d:\oracle10\),按滑鼠右鍵,選擇 [共享與安全],到 [安全]選項卡。

新增"network service"使用者組,許可權增加「修改、讀取和執行」,如果不夠就加上完全控制。

2. 計算機管理--使用者和組--在administrator組中加上"network service"使用者組。

一般介紹到此重啟機器就可以了,這裡涉及一些vs內部使用元件的問題,事實上有些是不行的,還需要配置下oci.dll.

4. 把"c:\instantclient-basic-win32-10.2.0.4

"加到環境變數path中。

5. 設定環境變數:tns_admin=「tnsnames.ora所在路徑」,如果不行就把tnsnames.ora copy到"c:\instantclient-basic-win32-10.2.0.4

"目錄下。

6. 重啟機器,ok。

※錯誤現象

pl sql developer在以上環境中不能用。 ※

解決方案

1. 按照上面3、4、5所述,做好配置。

2. 開啟plsqldev,在其「工具」--「首選項」中,把oracle主目錄名設為:c:\instantclient-basic-win32-10.2.0.4

3. 把「oci庫」設為:c:\instantclient-basic-win32-10.2.0.4\oci.dll

4. 關閉plsqldev,重啟,ok。

※錯誤現象

程式執行報ora-00911錯誤(無效字元)

※解決方案

1. 通常是sql末尾加了個分號(;)所致。

2. 客戶端和伺服器端字符集不一致所致。

select * from v$nls_parameters;  或

select * from nls_database_parameters 或

select userenv(『language』) from dual;

a. 修改客戶端字符集(設定環境變數)

nls_lang = american_china.zhs16gbk

b. 修改客戶端字符集(修改登錄檔)--不建議。

附:nls_lang 引數組成

nls_lang引數由以下部分組成:

nls_lang=_.

nls_lang各部分含義如下:

language指定:

-oracle訊息使用的語言

-日期中月份和日顯示

territory指定

-貨幣和數字格式

-地區和計算星期及日期的習慣

characterset:

-控制客戶端應用程式使用的字符集

通常設定或者等於客戶端(如windows)**頁

或者對於unicode應用設定為utf8

在windows上檢視當前系統的**頁可以使用chcp命令。

64bit作業系統的重定向

64位作業系統下拷貝檔案重定向問題 問題 installshield2009安裝包在win 7 x64安裝,需要把檔案複製到windows system32 下面 可是系統會自動複製到windows syswow64下面,查一下來是檔案自動轉向 原因 64位作業系統有自動重定向功能,即使寫死了拷貝到...

32bit和64bit的區別

一般指的是cpu 332bit 普通的x86架構 i386,i586,i686 64bit 僅指x86 64架構 amd64,em64t amd64的位技術是在原始32位x86指令集的基礎上加入了x86 64擴充套件64位x86指令集,使這款晶元在硬體上相容原來的32位x86軟體,並同時支援x86 ...

深入理解64 bit(五)

32 bit 表2 編譯器和作業系統關係 32 bit 作業系統 64 bit 作業系統 32 bit 編譯器 可編譯程式 可編譯程式 64 bit 編譯器 可編譯程式 表3 編譯後的應用程式和作業系統關係 32 bit 作業系統 64 bit 作業系統 32 bit 應用程式 可執行可執行 依賴於...