关于oracle 11g 64位与 32位的 plsql、及其他32位应用程序共存的问题
2015-01-23 18:36
429 查看
因为 plsql 不支持 64位 oracle 客户端,所以plsql 必须使用 oracle 的 32位 instanclient 包。 解压缩后放一个目录,例如: D:\Oracle\instantclient_10_2
ps: 用 10g 的32位 instantclient 包也可以连接 11g oracle 64位库
1、进 plsql 后,在首选项下设置 oracle home 的地址:D:\Oracle\instantclient_10_2, 同时设置 oci 的位置: D:\Oracle\instantclient_10_2\oci.dll
2、需要在系统的环境变量内设置 tns_admin, 值为 D:\Oracle\instantclient_10_2, 这让 plsql 启动时知道去哪找 tnsnames.ora 文件
3、环境变量还需要设置 nls_lang, 值为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK, 当然这根据你自己的数据库来
一般情况下这样后, plsql 就可以用了
如果此时登陆发现提示 无法解析指定的连接标识符,或类似的语句, 那多半是因为监听程序没设置好了。 默认监听程序的监听列表中不指定具体的oracle 实例是哪个, 碰到这种情况就把具体的监听实例描述加上就好了(红色那段), 具体原因不知道... 配置完后,记得去重启 oracle 的listener 服务。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = d:\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:d:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = d:\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Tyson-mac)(PORT = 1521))
(ADDRESS = (PROTOCOL = NMP)(SERVER = TYSON-MAC)(PIPE = ORAPIPE))
)
)
注意: 这个位于oracle 11g安装目录下的 listener.ora 文件, 例如:D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN
而不是 instantclient 下的, 因为oracle 的服务用的,指向的还是那边
==========================
接着再补充:
注意: 最好使用配套的32位 instant, 例如, 服务器是 11.2 64位,则下载 11.2 的 32位版本
另外, 为了让其他32位应用程序使用正常, 需要设置环境变量,具体设置如下:
ORACLE_HOME :是所有需要关联更多oracle 文件时去取的根目录, 如果你错误地设置为了 原先的 instant 的地址,那么你运行 sql plus 之类的程序就会提示错误。实验发现32位程序也需要指向 64 位的oracle根目录才正常(这点为什么没细想)
TNS_ADMIN: 这是取 oracle 服务列表的目录, 设置后,plsql 才能正确列表列出并链接服务器。 所以这可以设置 instant 目录,并把 tnsnames.ora 文件放此目录下
PATH: 这是其他32位应用程序找到 oci 等dll文件的搜索路径,如果不设置自然报错说没有找到组件啥的。所以,需要设置 32位的 instant 目录
NLS_LANG: 这决定了你应用程序所链接的数据库存储的数据是用的什么格式的数据。 一般可设置为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如果不设应该默认是的是 unicode, 也就是3位字节存储, 那你应用程序打开后看到的从数据库中调入的数据很可能是乱码
ps: 用 10g 的32位 instantclient 包也可以连接 11g oracle 64位库
1、进 plsql 后,在首选项下设置 oracle home 的地址:D:\Oracle\instantclient_10_2, 同时设置 oci 的位置: D:\Oracle\instantclient_10_2\oci.dll
2、需要在系统的环境变量内设置 tns_admin, 值为 D:\Oracle\instantclient_10_2, 这让 plsql 启动时知道去哪找 tnsnames.ora 文件
3、环境变量还需要设置 nls_lang, 值为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK, 当然这根据你自己的数据库来
一般情况下这样后, plsql 就可以用了
如果此时登陆发现提示 无法解析指定的连接标识符,或类似的语句, 那多半是因为监听程序没设置好了。 默认监听程序的监听列表中不指定具体的oracle 实例是哪个, 碰到这种情况就把具体的监听实例描述加上就好了(红色那段), 具体原因不知道... 配置完后,记得去重启 oracle 的listener 服务。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = d:\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:d:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = d:\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Tyson-mac)(PORT = 1521))
(ADDRESS = (PROTOCOL = NMP)(SERVER = TYSON-MAC)(PIPE = ORAPIPE))
)
)
注意: 这个位于oracle 11g安装目录下的 listener.ora 文件, 例如:D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN
而不是 instantclient 下的, 因为oracle 的服务用的,指向的还是那边
==========================
接着再补充:
注意: 最好使用配套的32位 instant, 例如, 服务器是 11.2 64位,则下载 11.2 的 32位版本
另外, 为了让其他32位应用程序使用正常, 需要设置环境变量,具体设置如下:
ORACLE_HOME :是所有需要关联更多oracle 文件时去取的根目录, 如果你错误地设置为了 原先的 instant 的地址,那么你运行 sql plus 之类的程序就会提示错误。实验发现32位程序也需要指向 64 位的oracle根目录才正常(这点为什么没细想)
TNS_ADMIN: 这是取 oracle 服务列表的目录, 设置后,plsql 才能正确列表列出并链接服务器。 所以这可以设置 instant 目录,并把 tnsnames.ora 文件放此目录下
PATH: 这是其他32位应用程序找到 oci 等dll文件的搜索路径,如果不设置自然报错说没有找到组件啥的。所以,需要设置 32位的 instant 目录
NLS_LANG: 这决定了你应用程序所链接的数据库存储的数据是用的什么格式的数据。 一般可设置为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如果不设应该默认是的是 unicode, 也就是3位字节存储, 那你应用程序打开后看到的从数据库中调入的数据很可能是乱码
相关文章推荐
- 64位oracle数据库安装32位plsql解决方法/关于win7 x64 连接oracle 客户端 VS2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
- 关于用其他32位客户端 连接64位oracle 的lisner的配置方案
- oracle 11g 64位连接32位PLSQL的方法
- 关于oracle32位64位组件运行问题
- 64位系统使用32位的plsql连接64位的Oracle 11g
- 32位PL/SQL Developer连接64位oracle 11g数据库蛋疼的问题
- ORACLE 11g R2 64位备份恢复到ORACLE 11g R2 32位 问题处理
- 32位plsql配置连接64位ORACLE 11g的方法
- 记录在WIN7 64位安装32位Oracle 11G遇到的问题
- 64位 Windows 8/7 系统下的 32位PLSQL 联接 64 位 Oracle 11g
- ORACLE64位服务器端+ORACLE32位客户端,解决PLSQL连接错误问题
- Eucalyptus 中32位与64位说明-关于在32/64位NC中的虚拟机中运行64 /32位 Instance的问题
- debian6 32位 oracle 11g r2 & debian6 64位 oracle ...
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
- 未能加载文件或程序集“Oracle.DataAccess, " 64位OS运行32位程序的问题
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法(转)
- Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed) 转载
- 转载:用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解
- 关于64位和32位yum源冲突问题