win7 64位上安装pb9.0和12.5如何连接oracle11g

本文详细记录了作者在Windows 7 64位系统下,从熟悉MSSQL转战Oracle的过程,包括安装Oracle 11g的64位版本与32位客户端,利用企业管理器建立表空间、表、存储器,并通过SQL*Plus进行数据插入和查询。着重介绍了在PowerBuilder PB9和PB12.5中使用不同版本的Oracle接口进行连接与操作的方法。

工作中用mssql比较多,今天学习oracle。尝试在9和12.5中连接oracle。

1. win7是64位的,故安装64位的oracle 11,然后安装32位的客户端。

2.用em建立了表空间,表,存储器,用sqlplus插入了数据行和执行了select试了一下。

3. pb9的dbprofile中连接:

用接口O84 Oracle8/8i接口

server:localhost:1521/orcl (主机名+端口+sid: net manager中配置)

login ID: SYSTEM

Password: 密码

O90 Oracle9.0.1接口:

server:localhost:1521/orcl (主机名+端口+sid:net manager中配置,默认1521端口时可以不写)

login ID: SYSTEM

Password: 密码

Connect as: 如SYSTEM, 只能default

如SYS,只能选择SYSOPER或SYSDBA



12.5中使用O10 oracle 10g,O90 Oracle 9i,ORA Oracle均可连接情况同上第二种。



具体还在学习中,各种接口能否正常使用还在学习中。此文字仅当学习的记录。
 

 推荐查看我的软件作品:

1. PB反编译大师

2. PB混淆加密大师

3. 互联网数据组件:DataWindowHTTP

4. ESC/POS打印组件:ESC/POS ImagePrint

5. SQLConnectManager:数据库连接断线管理(年后即将测试)

PB反编译, PB反编译大师, PB加密, PB混淆加密大师,DatawindowHTTP,PB DeCompiler,PB Obfuscatoricon-default.png?t=M0H8http://powerbuilder.ltd/indexcn.html



 

<think>我们正在解决一个复合问题:1.PowerBuilder9.0使用Oracle11g客户端连接 Oracle12c服务器2.报错缺少 oci.dll(通常是由于32/64不匹配或路径问题)3.同时要考虑跨版本连接的身份验证问题(ORA-01017或ORA-28040)根据引用资料: -引用[1]:PB11.5需要32Oracle客户端,否则会报OCI.DLL加载错误。 -引用[2]:使用旧版Instant Client(如11.2.0.3.0之前)连接Oracle12c时,需要设置SQLNET.ALLOWED_LOGON_VERSION=8,但可能还会遇到ORA-01017,最终通过升级到12.2.0.1.0的32客户端解决。 -引用[3]:客户端数问题会导致OCI.DLL加载失败,可以通过查询v$version确认。-引用[4]:PB安装客户端的方法(复制文件注册表)。因此,解决方案需要同时解决两个问题:1.确保使用32Oracle客户端(因为PB9只支持32)。2.解决Oracle12c服务器的身份验证协议兼容性问题(ORA-01017或ORA-28040)。步骤:一、安装正确的客户端(32)由于PowerBuilder9.0是32应用程序,必须使用32Oracle客户端。即使操作系统是64,也要安装32客户端。二、解决身份验证协议问题方法1:修改服务器端sqlnet.ora(兼容旧客户端)方法2:升级客户端到12c(32)以匹配服务器(推荐)考虑到PB9可能只支持较旧的OCI版本,我们有两种选择:选择A:使用11g32客户端,并在服务器端设置兼容性参数(需重置密码)选择B:直接使用12c32客户端(可能更简单,且避免服务器端修改)但注意引用[2]中提到,使用12.2.0.1.0的32客户端解决了问题。因此推荐使用12c的32客户端。然而,PB9可能不支持12c客户端?但引用[2]中使用了12.2.0.1.0的32客户端成功连接,说明PB9可以通过ORACLE8i接口连接12c(只要客户端是32)。具体步骤:第一步:安装32Oracle客户端(12c或11g)推荐安装Oracle12c Release2(12.2.0.1.0)32客户端(因为引用[2]中成功案例)。下载地址:Oracle官网的Instant Client32(版本12.2.0.1.0)第二步:配置客户端1.解压Instant Client到某个目录(如C:\oracle\instantclient_12_2_32)2.设置环境变量:-PATH:添加客户端目录(C:\oracle\instantclient_12_2_32)-TNS_ADMIN:设置为包含tnsnames.ora文件的目录(如果有网络配置)第三步:在PB9中配置数据库连接使用ORACLE8i接口(根据引用[2]),在DatabaseProfile中选择:-Service:使用TNS别名(在tnsnames.ora中配置)或直接使用连接字符串-用户名密码第四步:解决身份验证问题(如果使用11g客户端则可能需要)如果坚持使用11g客户端(32),则需要在Oracle12c服务器端修改sqlnet.ora:SQLNET.ALLOWED_LOGON_VERSION_SERVER=8SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8然后重置用户密码(必须步骤),并重启监听。但强烈建议使用12c客户端以避免服务器端的安全降级。第五步:测试连接PB9中测试连接。如果遇到oci.dll问题,检查:-客户端目录是否在PATH的最前面(避免其他Oracle客户端干扰)-确保没有多个oci.dll(搜索oci.dll,确保使用的是32的)另外,引用[4]提供了免安装客户端的方法(适用于Oracle10g),但同样适用于11g/12c客户端。我们可以将32的Instant Client文件打包,然后设置PATH注册表(但InstantClient通常不需要注册表,只需设置PATH即可)。所以,如果需要在多台机器上部署,可以:-复制32Instant Client目录到目标机器-将目录添加到系统PATH(或应用程序启动前临时设置PATH)总结:推荐方案:使用Oracle12.2.0.1.032InstantClient1.下载12.2.0.1.032Instant ClientBasic包2.解压到目标目录3.设置PATH环境变量指向该目录4.PB9中配置数据库连接(使用ORACLE8i接口)备选方案:使用Oracle11g32客户端(需服务器端调整)1.安装11.2.0.432客户端(注意:必须是32)2.在服务器端设置sqlnet.ora为兼容模式(SQLNET.ALLOWED_LOGON_VERSION=8)并重置密码3.配置PB9连接注意:如果使用InstantClient,可能需要额外下载ODBC包(如果PB使用ODBC连接)或SQL*Plus包(用于测试),但PB9使用OCI接口(ORACLE8i),所以只需要Basic包。详细步骤:一、使用Oracle12.2.0.1.032Instant Client1.下载:从Oracle官网下载以下包(需要注册账号):instantclient-basic-nt-12.2.0.1.0.zip(32)2.解压到:C:\oracle\instantclient_12_2_323.设置环境变量:PATH=C:\oracle\instantclient_12_2_32;%PATH%(注意:确保该路径在系统PATH中,并且没有其他Oracle路径干扰)4.创建tnsnames.ora文件(如果需要):在C:\oracle\instantclient_12_2_32\network\admin目录下创建tnsnames.ora,内容参考:ALIAS =(DESCRIPTION=(ADDRESS =(PROTOCOL= TCP)(HOST =your_host)(PORT=1521))(CONNECT_DATA=(SERVER= DEDICATED)(SERVICE_NAME =your_service)))5.PB9中配置:-打开DatabaseProfile(ORACLE8i)-在Service栏填写tnsnames.ora中的别名(或直接填写连接字符串:如user/pass@host:port/service_name)-测试连接二、如果使用Oracle11g客户端(32)1.下载11.2.0.432客户端(完整安装或Instant Client)2.安装(或解压)并设置PATH3.Oracle12c服务器端:-修改sqlnet.ora(在$ORACLE_HOME/network/admin下)添加:SQLNET.ALLOWED_LOGON_VERSION_SERVER=8SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8-重启监听:lsnrctl reload-重置用户密码:ALTER USERusername IDENTIFIEDBY new_password;4.PB9中配置连接(同样使用ORACLE8i接口)三、免安装部署(适用于打包发布)参考引用[4]的方法,但针对InstantClient简化:1.将InstantClient目录(如instantclient_12_2_32)复制到目标机器(例如C:\app\instantclient)2.在应用程序启动前设置PATH(或者让用户手动设置系统PATH):set PATH=C:\app\instantclient;%PATH%3.由于InstantClient不需要注册表,所以不需要处理注册表(除非需要其他配置,如TNS_ADMIN)4.如果使用TNS,确保tnsnames.ora在正确置(如C:\app\instantclient\network\admin)常见问题排查:1.如果报错OCI.DLL未加载:-检查PATH中第一个oci.dll是否为32(可以在命令提示符中执行:`wmic processwhere "name=&#39;pb9.exe&#39;" getExecutablePath`然后检查该进程加载的oci.dll路径)-使用Dependency Walker(32)打开pb9.exe,查看依赖的dll是否都能找到(特别是oci.dll其依赖的dll)2.如果连接时报身份验证错误:-尝试用sqlplus测试连接(将sqlplus.exe放在同一目录,并运行:sqlplususername/password@tns_alias)-如果sqlplus能连,则PB9应该也能连(检查PB9中的用户名密码是否正确)注意:Oracle12c的Instant Client可以连接Oracle12c数据库,并且由于版本匹配,不需要设置服务器端的SQLNET.ALLOWED_LOGON_VERSION参数,避免了安全降级。因此,最佳方案是使用Oracle12.2.0.1.032Instant Client。</think>### 解决 PowerBuilder 9.0 使用 Oracle 11g 客户端连接 Oracle 12c 时缺少 oci.dll 的问题 #### 核心问题分析 1. **数不匹配**: PowerBuilder 9.0 是纯32应用程序,必须使用32Oracle客户端。若安装64客户端会导致 `oci.dll` 加载失败[^1][^3]。 2. **版本兼容问题**: Oracle 12c 使用新认证协议(SHA256),而 Oracle 11g 客户端使用旧协议(SHA1),需特殊配置[^2]。 3. **路径配置错误**: PB9 无法自动定 oci.dll,需手动设置环境变量。 --- ### 完整解决方案 #### 步骤 1:安装正确的 Oracle 客户端 1. **卸载现有64客户端**(若有) 通过控制面板彻底移除所有64Oracle组件。 2. **安装32 Oracle 12c Instant Client**(推荐方案) ```bash # 下载地址(需Oracle账号): https://www.oracle.com/database/technologies/instant-client/win32-downloads.html ``` - 选择版本:**Instant Client Basic 32-bit for Microsoft Windows (32-bit) 12.2.0.1.0** - 解压到目录:`C:\oracle\instantclient_12_2_32` 3. **备选:安装32 Oracle 11g 客户端**(需服务器配置) - 版本要求:**11.2.0.4** 及以上(旧版有协议兼容问题[^2]) - 安装时选择"管理员"模式,确保包含OCI组件 #### 步骤 2:配置环境变量 1. 添加系统环境变量: ```ini PATH = C:\oracle\instantclient_12_2_32;%PATH% # 必须放在最前 TNS_ADMIN = C:\oracle\instantclient_12_2_32\network\admin ``` > 验证:命令行执行 `echo %PATH%`,确保路径首 2. 创建 `tnsnames.ora`(在TNS_ADMIN目录): ```ini ORCL12C = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 服务名) ) ) ``` #### 步骤 3:解决认证协议兼容(仅当使用11g客户端时) 在 **Oracle 12c 服务器** 执行: ```sql -- 修改sqlnet.ora ALTER SYSTEM SET SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 SCOPE=SPFILE; ALTER SYSTEM SET SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11 SCOPE=SPFILE; -- 重置用户密码(必须操作) ALTER USER 用户名 IDENTIFIED BY 新密码; ``` 重启数据库使配置生效。 #### 步骤 4:配置 PowerBuilder 9.0 1. 打开 Database Profile: - 选择 **ORACLE 8i/8.0+** 接口(非OLE/ODBC) - 配置参数: ``` Service: ORCL12C # tnsnames.ora中的别名 User ID: 用户名 Password: 密码 ``` <center> ![PB9连接配置](https://example.com/pb9-oracle-config.png) *图:PB9 数据库连接配置界面* </center> 2. 测试连接: - 成功标志:状态栏显示 "Connected" - 失败排查:查看 `PBLOG.INI` 日志文件 #### 步骤 5:免安装部署(发布方案) 参考引用[^4]方法打包32客户端: 1. 将以下文件复制到应用目录: ``` C:\oracle\instantclient_12_2_32\ ├── oci.dll # 核心文件 ├── oraociei12.dll # 加密库 ├── orannzsbb12.dll # 安全服务 └── network\admin\tnsnames.ora ``` 2. 添加启动脚本 `start_pbapp.bat`: ```bat @echo off set PATH=%~dp0\instantclient;%PATH% start pb9app.exe ``` --- ### 兼容性对照表 | 客户端方案 | 是否需要服务器配置 | 安全性 | 部署复杂度 | |------------|-------------------|--------|------------| | **12c Instant Client 32** | 否 | 高 ★★★☆ | 低 ★★☆ | | **11g 客户端 32** | 需改sqlnet.ora | 中 ★★☆ | 高 ★★★ | | **免安装打包** | 否 | 高 ★★★☆ | 中 ★★☆ | --- ### 故障排查清单 ```mermaid graph TD A[oci.dll 加载失败] --> B{检查客户端数} B -->|64| C[卸载并安装32客户端] B -->|32| D[检查PATH排序] D --> E[确认路径首] E -->|仍失败| F[使用Dependency Walker检查依赖] F --> G[补充缺失dll] G --> H[测试连接] H -->|成功| I[解决] H -->|ORA-01017| J[重置密码+协议配置] ``` > **关键提示**: > - 使用 `Dependency Walker` 打开 PB9.exe,检查所有标黄/红的缺失dll[^3] > - 服务器监听日志置:`$ORACLE_HOME/network/log/listener.log` > - PB9 连接日志:`%APPDATA%\Sybase\PowerBuilder\PBLOG.INI`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值