一、安装oracle即时客户端
1.根据Oracle的版本对应下载
下载地址:
Instant Client for Linux x86-64 (64-bit) (oracle.com)
例如:
安装rpm包
#安装客户端
rpm -ivh *.rpm
2.配置环境变量
vim ~/.bashrc
如果是zsh,则vim ~/.zshrc
如果是/etc/profile,则vim /etc/profile
#ORACLE
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=/usr/include/oracle/11.2/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG='Simplified Chinese_China. AL32UTF8'
不知道在哪儿的可以用find命令找一下
find / -name client64 2>/dev/null
3.配置tnsnames.ora文件
#创建目录
mkdir /usr/include/oracle/11.2/network/admin
#创建文件
cd /usr/include/oracle/11.2/network/admin
vim tnsnames.ora
#写入如下内容
xxxxxx =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xxxxxxx)
)
)
例如
ORACLE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = helowin)
)
)SERVICE_NAME可以在数据库方使用lsnrctl status查看
4.尝试连接到数据库
sqlplus user/password@ConName
连不上查看1521端口是否放行
二、安装OCILIB库
1.下载安装
参考:linux下安装并调试ocilib(小白踩坑后记录) - litandy - 博客园 (cnblogs.com)
下载地址:Releases · vrogier/ocilib (github.com)
下载完后,解压切换到文件夹下执行
cd /project/oci/ocilib-4.7.6/
./configure CFLAGS="-O2 -m64 -std=gnu99" --with-oracle-lib-path=/usr/lib/oracle/11.2/client64/lib --with-oracle-headers-path=/usr/include/oracle/11.2/client64
编译成64位版本
-O2 -m64为了防止报: "只允许在 C99 模式下使用‘for’循环初始化声明" 的错误,必须加上
-std=gnu99后面是指定ocilib的库文件和头文件的位置
#最后执行
make && make install
#库应该是安装到/usr/local/lib
2.环境变量
#将LD_LIBRARY_PATH更改为
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/project/oci/ocilib-4.7.6/src/.libs:/usr/local/lib
#改完后source一下,如果在.bashrc就
source ~/.bashrc
注意:LD_LIBRARY_PATH中的
/project/oci/ocilib-4.7.6/src/.libs
改为自己安装的地址
3.测试
testConn.cpp
#include "ocilib.hpp"
#include <iostream>
using namespace ocilib;
using namespace std;
int main()
{
Environment::Initialize();
Connection con("ORACLE","user","password");//ORACLE是在tnsnames.ora那设置的
cout << "GetConnectionString:\t" << con.GetConnectionString() << endl;
cout << "GetDatabase:\t" << con.GetDatabase() << endl;
cout << "GetServer:\t" <<con.GetServer() << endl;
cout << "GetServerMajorVersion:\t" << con.GetServerMajorVersion() << endl;
cout << "GetServerMinorVersion:\t" << con.GetServerMinorVersion() << endl;
cout << "GetServerRevisionVersion:" << con.GetServerRevisionVersion() << endl;
cout << "GetService:\t" << con.GetService() << endl;
cout << "GetUserName:\t" <<con.GetUserName() << endl;
cout << "IsServerAlive:\t"<< con.IsServerAlive() << endl;
Environment::Cleanup();
return 0;
}
g++ -o testConn testConn.cpp -I/project/oci/ocilib-4.7.6/include -L/project/oci/ocilib-4.7.6/src/.libs -locilib
根据自己安装的位置修改
怎么使用OCILIB的更多操作,可以查看官方文档或者问ChatGPT,很快能入手
官方文档:OCILIB (C and C++ Driver for Oracle): Introduction (vrogier.github.io)