最近在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服务的