MATLAB读写远程Oracle

最近项目上需要用MATLAB对服务器上的Oracle进行读写,因此研究了一下,今天记录下来。

Keywords: MATLAB;Oracle;远程连接


本文目录如下:

#1. Oracle客户端下载
由于我之前没有接触过Oracle,因此将软件的下载也放上。熟悉操作的同学可以跳过本部分。

由于我们目的是连接至其他数据库,因此只需下载Oracle客户端即可。同时因为InstantClient客户端所占体积小(大约只有full-client的1/4),因此使用InstantClient

Oracle提供了多种Client package, 这里下载basic/sqlplus/odbc. 三个package作用如下:

Package作用
Basic实现OCI/OCCI/ODBC等最基本的包
sqlplus支持实现sqlplus语句及命令流
ODBC支持实现ODBC

这里我下载的是12.2版本,该basic版本需要Microsoft Visual Studio 2013 Redistributable.

#2. Oracle Instant Client 配置

  1. step1: 同时选择三个文件,将之解压至同一文件夹内,如D:\instant_client ;

  2. step2: 管理员模式打开cmd,
    cd至D:\instant_client,运行odbc_install.exe;双击运行也可以(此时提示oracle ODBC
    Driver has been successfully
    installed.此时“管理工具”中的ODBC数据源的驱动程序中就会多出来一个oracle in client_12_2)

  3. step3: 修改系统环境变量。
    >将D:\instant_client 添加至PATH;
    >新增 NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK;
    >新增 TNS_ADMIN = D:\instant_client

  4. step4: 在D:\instant_client中新建tnsnames.ora文件,内容如下1

orcl =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.26)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = orcl)
   )
 )

其中192.168.1.26是服务器的IP地址,大家根据需要改动
PORT= 1521是默认的端口号,不需要改动

#3. 配置服务器上的监听程序和本地网络服务,参考网址

  1. 开始菜单中打开“Oracle Net Configuration Assistance”,选择“监听程序配置”,点击下一步;
  2. 选择“重新配置”;
  3. 选择监听程序,选择协议,默认为LISTENER,点击下一步;
  4. 选择TCP协议和默认的端口号;
  5. 是否配置另外一个监听?选择否;
  6. 同样的方法配置本地网络服务。

若不进行这一步,则会提示“ORA-12541: TNS: 无监听程序

#4. 添加ODBC数据源

控制面板-管理工具-ODBC数据源-系统DSN中添加oracle数据源-选择oracle in InstantClient 12.2.0, DataSourceName=ORCL2; TNS Service Name = orcl3; 并输入id和password,配置好之后会出现connection successful.

注意要关闭服务器端的防火墙

#4. matlab连接ODBC数据源

conn_odbc = database('ORCL',ID, PASSWORD)

ID和password分别是登录Oracle的账号和密码

matlab 2018连接ODBC是非常慢(大约半个小时),但是2016就没有这个问题。不知道为什么

#5 测试是否连接成功

在matlab中运行一些查询命令,通过查看返回的值,就能够判断是否连接成功。

   %执行查询,单引号后面是SQL语句,用于查询数据库名称
curs = exec(conn_odbc, 'select name from v$database;');
    %获取查询结果
curs = fetch(curs);
    %结果输出至矩阵变量
Data = curs.Data

结果一般为ORCL,表示连接成功。
在结束查询之后,退出MATLAB之前,一定要记得关闭游标,断开MATLAB与数据库的连接。若不成功,则打开即时客户端中的sqlplus.exe,输入

id/password@ip/service_name

若提示连接到,则表明配置客户端是没有问题的。

%关闭游标
close(curs);
%在操作数据库之后一定要断开连接
close(conn_odbc);

**注意:**本人的计算机是win7 64位,Oracle版本为12.2。在win10上面装InstantClient也是可以的。


  1. 参考https://www.cnblogs.com/ivictor/p/3898702.html. ↩︎

  2. 此处的NAME可以随便取。 ↩︎

  3. 此处需要与服务器中的SID相同。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值