前言:將windows 下開發的 .net 控制台程式(連接Oracle資料庫)部署到 ubuntu 下步驟記錄 2017-09-19 實驗所用機器為虛擬機Ubuntu16.04 amd64 安裝Mono環境 首先添加Mono安裝源: vi /etc/apt/sources.list.d/mono. ...
前言:將windows 下開發的 .net 控制台程式(連接Oracle資料庫)部署到 ubuntu 下步驟記錄 2017-09-19
實驗所用機器為虛擬機Ubuntu16.04 amd64
安裝Mono環境
首先添加Mono安裝源:
vi /etc/apt/sources.list.d/mono.list |
添加內容:
deb http://download.mono-project.com/repo/debian wheezy main |
保存後運行 apt-get update ,可能會出現錯誤提示:
W: GPG error: http://download.mono-project.com wheezy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A6A19B38D3D831EF |
運行以下命令添加key:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com A6A19B38D3D831EF |
再次運行 apt-get update ,更新完成後運行 apt-get install mono-complete 即可安裝最新版本的Mono,安裝完成後運行 mono -V 查看Mono版本
安裝Oracle Client
- 下載Oracle client (oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm)http://www.oracle.com/technetwork/cn/topics/linuxx86-64soft-095635-zhs.html
2. 安裝alien,和依賴包
sudo apt-get install alien
sudo apt-get install libaio1
3. 使用alien吧rpm包轉換成deb包,並且安裝:
sudo alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
4.安裝完後,類庫會放到 /usr/lib/oracle/版本號/client/lib/ ,需要做一個軟連接,否則Mono找不到需要的共用庫
sudo ln -s /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1 /usr/lib/oracle/12.2/client64/lib/libclntsh.so
5. 更新ldconfig設置:
在 /etc/ld.so.conf.d目錄下新建 oracle-client.conf , 輸入Oracle Client 類庫的路徑, /usr/lib/oracle/12.1/client/lib
別忘了執行 sudo ldconfig
6.在伺服器上執行:select userenv('language') from dual; 獲取伺服器的字元集
查看客戶端字元集,在終端下執行:
echo $NLS_LANG
修改客戶端字元集:
sudo gedit /etc/environment
在environment 文件中增加以下內容:
NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_LANG
重新啟動操作系統即可。
修改程式
1.PetaPoco源碼修改:
PetaPoco報空對象引用 的錯誤,修改PetaPoco.cs中下麵代碼:
public override void PreExecute(IDbCommand cmd)
{
//註掉下麵一行,修改為下麵的代碼。Command對象里不存在"BindByName"的屬性,此處會報錯
//cmd.GetType().GetProperty("BindByName").SetValue(cmd, true, null);
PropertyInfo bindByNameInfo = cmd.GetType ().GetProperty ("BindByName");
if (bindByNameInfo!=null) {
bindByNameInfo.SetValue (cmd, true, null);
}
}
2. 添加 System.Data.OracleClient.dll 引用
3. 資料庫連接字元串修改為
<add name="xxx" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=(DESCRIPTION= (ADDRESS_LIST=(ADDRESS= (PROTOCOL=TCP)(HOST=xxx)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=xxxx)));User Id=xxx;PassWord=xxx;" />
運行程式
mono xxx.exe