我们要连接oracle经常需要安装庞大的oracle客户端,很占用硬盘空间,所以我们通过下面的设置就可以在不安装客户端的情况下连接到oracle。
首先需要下载Oracle Client Package(免安装包)
从http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载
Instant Client Package – Basic包( 标注:All files required to run OCI, OCCI, and JDBC-OCI applications)
basic包中仅包含oracle驱动程序,如果需要做.net开发应该下载 ODAC组建
http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html
本地保存Oracle Client Package:
创建文件夹,比如oracle_client,将下载的文件加压缩到此文件夹里 (D:\oracle_client)
注:实际上需要以下几个文件即可
oci.dll
ociw32.dll
orannzsbb11.dll
oraocci11.dll
oraociei11.dll
OraOps11w.dll
在当前目录(D:\oracle_client)下创建文件夹 “\NETWORK\ADMIN”, 在“ADMIN”下创建文件“sqlnet.ora”和“tnsnames.ora”。
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
配置环境变量(可选)
第一个:第一个是指向TNS文件所在目录的,TNS文件就是保存了连接信息的文件。(就是tnsnames.ora和sqlnet.ora文件的路径)
变量名: TNS_ADMIN
变量值: D:\oracle_client\NETWORK\ADMIN
否则出现:ORA-12154: TNS:could not resolve the connect identifier specified错误
第二个是指定数据库使用的编码。如果不设置成以下值,那么连接上数据库后,你看到的所有中文的内容将会是乱码,都是一堆问号。
变量名: NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
第三个是plsql,BDE等类型程序找驱动路径,否则找不到 oci.dll文件(是 oci.dll文件的路径)
变量名: path
变量值:D:\oracle_client
第四个是日期格式的问题,程序总报日期格式有问题
变量名: NLS_DATE_FORMAT
变量值:YYYY-MM-DD HH24:MI:SS
注意:设定了环境变量之后,一定要注销或者重启一下电脑才生效!
如果之前安装了Oracle 又卸载,会遗留NLS_LANG=NA的键值.
输入RegEdit打开注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE.在右面找到NLS_LANG=NA并删除掉,否则会报ORA-12705: Cannot access NLS data files or invalid 错误.
配置PL/SQL
如果第4步配置了环境变量则直接打开PL/SQL就可以使用了。
如果没有配置环境变量需要在PL/SQL中配置以下两项即可:
a. 【工具】-》【首选项】-【连接】中的【Oracle主目录名】设置为:D:\oracle_client\NETWORK\ADMIN
b. 【工具】-》【首选项】-【连接】中的【OCI库】设置为:D:\oracle_client\oci.dll
plsql连接64位oracle的方法
如果本机器上安装的是64位的oracle则plsql就无法调用64位的 oci.dll 文件导致无法plsql无法连接到oracle,也可以用这个方法
只是环境变量稍作改变
变量名: TNS_ADMIN
变量值: 64位oracle安装目录下面的tnsnames.ora文件的路径(例如:D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN )
变量名: path
变量值:D:\oracle_client (注意如果path中存在64位oci.dll文件的路径,则这个路径要加在64位路径之前)