最近在linux 環境下搭建了.NET core 項目,數據庫訪問的是oracle,需要在linux下訪問oracle的服務器,很簡單 環境:centos 7 oracle 11g
首先我們要下載rpm包 https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
找到對應的版本,因為我們的服務器是11g 所以我就下載了 11的客戶端 選擇RPM格式的,需要下載5個包
前面的三個包,是安裝客戶端的,后面的兩個是通過程序連接oracle所需要的的補充包
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm
下載完成后,我這里是使用SecureFX上傳到linux服務器的,隨便找個地方 新建一個OracleClient文件夾把文件傳入
接下來就是安裝了,安裝很快的
cd /usr/local/OracleClient 找到你存放下載好文件的目錄
rpm -ivh ./oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh ./oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
rpm -ivh ./oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
rpm -ivh ./oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
rpm -ivh ./oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm
執行后的結果如下圖
也可以查看安裝后的目錄如下圖,替換一下 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 也可以看看其他的安裝
rpm -qpl oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
接下來我們創建一個 存放監聽腳本的目錄
cd /usr/lib/oracle/11.2/client64/
mkdir network
cd network
mkdir admin
然后把你的tnsnames.ora放到admin下
接下來我們配置一下環境變量輸入 vim ~/.bash_profile
打開后在末尾,添加如下代碼
#enviroment variable of oracle client export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export ORACLE_BASE=/usr/lib/oracle/11.2 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export PATH=$PATH:$ORACLE_HOME/bin
效果如下圖
然后保存並退出。接下來使用source ~/.bash_profile 刷新一下配置文件
然后打開sqlplus測試一下是否連接通過,格式就是如下 sqlplus 后面街上你的配置 /斜杠 和@來隔開
[gitlab-runner@coreservice client64]$ sqlplus 用戶名/密碼@tnsnames.ora配置的網絡名 SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 5 09:35:56 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
可以查詢你數據庫的表
select * from table; 這個分號必須寫哈。
接下來啟動你的項目測試一下吧,如果報錯,有可能是 odbc 和jdbc 沒有安裝,或者是你啟動服務的用戶沒有配置環境變量
你只是在root里面配置了,在你啟動項目的用戶下沒有配置,或者你的用戶沒有訪問oracle目錄的權限
解決方案: 如果還是不可以的話,你可以檢查一下你的tnsnames.ora tns配置文件。或者網絡,防火牆
一般情況 你的sqlplus 可以訪問的話,按照下面三個步驟,理論上是沒問題的,我自己就是這么處理了一下就可以了
1.找到你的用戶 su 用戶 進入用戶 輸入 vim ~/.bash_profile 把環境變量配置一下
2.安裝 odbc 和 jdbc
rpm -ivh ./oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
rpm -ivh ./oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm
3.給你的用戶訪問usr的權限
chown -hR gitlab-runner:gitlab-runner /usr 這里gitlab-runner 是我的用戶,我是通過gitlab-runner啟動dotnet服務的