日期:2014-05-16  浏览次数:20546 次

ORACLE Instant Client 11.2 配置方法
    今天突然来了学习oracle数据库的任务,那就开始了,但是网上找了很多资料,不然就不全面,不然那就是很多,大家都拷贝加拷贝,我就边配变试着这里下,暂时记下,为将来做打算嘛~

利用Instant Client ,不安装oracle客户端连接远程数据库的步骤
一)下载
到http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载如下三个包:
instantclient-basic-win32-10.2.0.4.zip :这是最核心的包 (只下这个也可以)
instantclient-jdbc-win32-10.2.0.4.zip  :包含JDBC   Driver的包
instantclient-sqlplus-win32-10.2.0.4.zip :最简单的SQLPLUS包
将这三个包分别解压,然后内容放到D:\Oracle\instantclient_11_2下

(可选步骤:
从http://www.anysql.net/software/ociuldr.zip下载coiuldr.zip,解压后里面有windows,linux,
solaris三个版本,将ociuldr.exe 复制到D:\Oracle\instantclient_11_2,其中ociuldr.exe 是一个文本导出工具,具体参数可以参考http://www.anysql.net/ociuldr.html介绍)

二)设置环境变量:
NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN=D:\Oracle\instantclient_11_2\ADMIN
Path=D:\Oracle\instantclient_10_2;

三)保存以下内容为注册表文件ORA.REG,导入注册表(如果你的安装目录不一样,其自行修改相关部分)
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
"ORACLE_HOME"="D:\\Oracle\\instantclient_11_2"
"ORACLE_SID"="MQY"

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1]
"ORACLE_HOME"="D:\\Oracle\\instantclient_11_22"
"ORACLE_HOME_NAME"="OraClient10g_home1"
"ORACLE_GROUP_NAME"="Oracle - OraClient10g_home1"
"ORACLE_SID"="MQY"
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
"ORACLE_BUNDLE_NAME"="Enterprise"
"ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraClient10g_home1"

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\OO4O]
"CacheBlocks"="20"
"FetchLimit"="100"
"FetchSize"="4096"
"PerBlock"="16"
"SliceSize"="256"
"TempFileDirectory"="e:\\temp"

四)请把以下内容保存为tnsnames.ora,并保存到安装目录:E:\Oracle\instantclient_10_2\ADMIN
databasename =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip address)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = database name)
      )
    )

参数说明:以上参数中

databasename  数据库名称
Ip address 数据库服务器IP地址
例如我的oracle数据库服务器安装在192.168.1.101上,数据库名称为orcl,则tnsnames.ora内容设置如下:

orcl =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = orcl)
      )
    )
关于tnsnames.ora多一点补充
databasename =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ip address)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = hostname)
      (SERVICE_NAME = wpsdb.huacai.com)
    )
)


第一行开头不能有空格,那个wpsdb1是oracle数据库的实例名(ORACLE_SID)(有人说这个可以随便写我没试过。。。),

第二行无所谓,等号后留空即可

第三行很重要,HOST后面那个ip是oracle数据库所在的主机的ip,要是有域名解析的话可以用主机名,后面的那个port是oracle监听的端口,一般是1521(该端口可在oracle主机上用命令netstat -ntlp|grep tnslsnr查看)。

第四行无所谓,留空值即可

第五行那个oracle1是我的oracle的主机的主机名(可用命令hostname查看)

第六行很重要,网上很多资料说这个地方填oracle的sid,其实不然(我把oracle的sid值填上去后报错:ORA-12154 TNS:监听程序当前无法识别连接描述符中请求的服务),实际上这里应该填的是oracle的服务名,要查看这个服务名可在oracle主机上用oracle账户输入命令lsnrctl status查看,我的得到的执行结果里有这样几行:

Services Summary...
Service "wpsdb.huacai.com" has 2 instance(s).
Instance "wpsdb1", status READY, has 2 handler(s) for this service...
Instance "wpsdb2", status