Navicat使用Instant Client创建连接到Oracle数据库的正确姿势
太长不看版:
1.你什么操作系统,Instant Client就选什么操作系统
2.你的navicat是多少位(32、64),Instant Client就选多少位
3.你的Oracle是哪个版本,Instant Client就选哪个版本
4.下载Instant Client Package - Basic和Instant Client Package - SQL*Plus(这个可选),解压到一个单文件夹
5.配置navicat:工具->选项->环境,把OCI环境和SQL*Plus(如果需要,且有)配上,重新启动 Navicat
以下是正文:
===================== 我是分割线 =====================
Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 和/或 MariaDB 等不同类型的数据库,并支持管理某些云数据库,例如阿里云、腾讯云。Navicat 的功能足以符合专业开发人员的所有需求,但是对数据库服务器初学者来说又相当容易学习。Navicat 的用户界面 (GUI) 设计良好,让你以安全且简单的方法创建、组织、访问和共享信息。Navicat 提供了三种平台的版本 - Microsoft Windows、macOS 和 Linux。它可以让用户连接到本地或远程服务器,并提供一些实用的数据库工具以协助用户管理数据,包括 Navicat Cloud 协同合作、数据建模、数据传输、数据同步、结构同步、导入、导出、备份、还原、报表创建工具和自动运行。
Navicat确实很好用,特别是Navicat Premium,它可以让你在单一应用程序中同时连接多达六种数据库,可一次快速方便地访问所有数据库。相信大家在连接MySQL、MariaDB、SQL Server、SQLite 和 PostgreSQL时,问题都不大,但是遇到Oracle,总会出现这样那样的问题。
今天就和大家分享一下使用Navicat连接Oracle数据库的正确姿势。
知其然,更要知其所以然。弄清楚了原理,再解决问题就不是什么难事了。我们首先需要知道的是,Navicat是怎么连接和管理Oracle的,当然,这里指的是Navicat Premium和Navicat for Oracle两款产品。
Oracle基础不扎实的同学,请自行补课,我这里就简单说下。
在普通的情况下,用户可以通过SQL和PL/SQL来访问ORACLE数据库中的数据。此外,ORACLE数据库还提供了一组接口,让用户可以通过C语言等来编程访问数据库,OCI就是为了实现高级语言访问数据库而提供的接口。通俗地讲,Navicat就是一个使用OCI来访问ORACLE数据库的一个图形化界面。因此,我们要想使用Navicat来连接和管理Oracle,首先要正确配置OCI。
OCI从哪里来?把Oracle在你机器上装一遍,就有了,只是,这么庞大的家伙,装都装了,还要Navicat干嘛?不急,Oracle给大家提供了一个叫做Instant Client的东西。地址:http://www.oracle.com/technet...。他是这么描述的:
Free, light-weight, and easily installed Oracle Database tools, libraries and SDKs for building and connecting applications to an Oracle Database instance.Oracle Instant Client enables applications to connect to a local or remote Oracle Database for development and production deployment. The Instant Client libraries provide the necessary network connectivity, as well as basic and high end data features, to make full use of Oracle Database. It underlies the Oracle APIs of popular languages and environments including Node.js, Python and PHP, as well as providing access for OCI, OCCI, JDBC, ODBC and ProC applications. Tools included in Instant Client, such as SQLPlus and Oracle Data Pump, provide quick and convenient data access.
看不懂?没关系!要么谷歌要么度娘。关键是看到“Free, light-weight, and easily”就可以了。二话不说,先下载下来,不过,点Downloads之后就懵了,选哪个?随便点个window的进去看看,更懵了,还有这么多版本、类型。。。心中一万点伤害,有木有!没事,这就是我们要说的重点。(感情上面一堆全是废话啊,嗯,没错,都是废话!)
1.选操作系统
我的navicat是在windows上用的,我就选了windows,其他我没亲测,各位看官自己来吧。
2.32位还是64位
这是个重点。网上到处都是说,navicat只支持32位,云云……我想说,那TM是从前了!Navicat 版本 10 或以下,Navicat 的确是只支持 32位的,但人家现在都出到12了好不。
我的,64-bit。
就一句话,你的navicat是32位你就下32位的Instant Client,你的navicat是64位你就下64位的Instant Client。原理,请自行谷歌。
3.Instant Client版本选择
选好了操作系统和位数,点进去发现,还有各种版本,各种类型,可谓是玲琅满目,眼花缭乱。该如何选择呢?
先确认一下你的Oracle数据库的版本。
SELECT * FROM v$version
可以看到你的Oracle版本,我的是11.2,然后就选择版本一致的Instant Client就可以了。
4.需要下哪些
首先是Instant Client Package - Basic,其实就这一个就可以了。
但是,为了方便命令操作(navicat里叫命令列),我们需要再弄个sqlplus:Instant Client Package - SQL*Plus。
5.如何安装
把上面下载的一个或两个解压(如果是两个,放一起就行了),我就直接放C:instantclient_11_2里了。
接下来就是配置navicat。工具->选项->环境。把OCI环境和SQL*Plus配上,重新启动 Navicat,就OK了。
6.一点废话
有地方会说(包括官方),需要把解压后的路径(我的是C:instantclient_11_2)加入环境变量。我这里是没有加的。如果你需要在全局是用sqlplus等,就需要加进去,我没有这个需求,所以就没加了,根据你的情况来,反正不是必须的。另外要说的是,如果你加了环境变量,在配置OCI环境时,就可以在下拉时看到这个oci.dll文件。
其实,navicat本身是带了oci的,为什么我们还要费那么大劲去自己弄了。因为用不了呗。为什么用不了呢?看了前面就知道了,版本对不上~~~
7.常见错误
ORA-XXX:Oracle 那边飞过来的错误,一般是OCI/instantclient版本不对,比如,你直接用了navicat自带的oci环境。
oracle library is not loaded:navicat这边报的错,oci库根本就没加载,一般就是32位64位搞错了