OCI连接oracle数据库,不用安装客户端(不需要tnsnames.ora来指定数据库ip地址),不需要服务命名

时间:2020-12-08 07:45:54
本来使用oracle数据库提供的访问数据库的接口OCI连接数据库,一般采用“服务命名”来指定数据库ip地址和数据库实例名,配置在tnsnames.ora里面的,所以在程序里面就不用写死数据库的ip地址和数据库实例名了,这样达到了程序移植不需要修改程序而只需修改配置的目的。
但是这样一来就引起了另外一个问题,想要跑数据库操作的程序就必须安装oracle数据库客户端,配置数据库所需的环境变量,实在是太麻烦了。所以现在我想是否能够实现不用安装客户端也不用配置环境变量的方法,想到sqlplus能通过直接指定ip地址和数据库实例名连接,故用程序肯定也能实现。

sqlplus连接数据库可以这样,所以在oci中我把需要“服务命名”的地方我改为下面单引号中的串,实验一下,结果连接成功。就是这么简单。当然,所需要的oci.dll(windows系统中)或者libclntsh.so(linux系统中)的动态库文件还是需要的。自己的水平有限,欢迎一起学习OCI编程,或者是linux c编程,我的一个群号:284635371

sqlplus user/pwd@'(DESCRIPTION=(ADDRESS=(protocol_address_information))
(CONNECT_DATA=(SERVICE_NAME=service_name)))'

sample:

sqlplus test/test@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(Host=yourDBhost)(Port=1521))(CONNECT_DATA=(SERVICE_NAME=ARK2)
(SERVER=DEDICATED)))'

SQL*Plus: Release 9.2.0.1.0 - Production on Fri Jul 26

Copyright (c) 1982, 2002, Oracle Corporation.
All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL>