基于BDE的遗留C++应用连接Oracle 19 Enterprise问题排查
Oracle 19c 适配BDE连接的调整设置
针对BDE(Borland Database Engine)遗留应用连接Oracle 19c Enterprise时出现的账户锁定、连接异常问题,可通过以下Oracle端设置调整来兼容:
1. 调整密码验证算法
BDE依赖Oracle旧版密码哈希算法(如10G及更早),而Oracle 19c默认强制使用高安全算法,需为应用用户修改密码验证规则:
-- 取消默认的密码复杂度验证函数(若存在) ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL; -- 重置用户密码并指定兼容旧版哈希的算法(O3对应10G兼容版本) ALTER USER your_app_user IDENTIFIED BY your_new_password USING 'O3';
2. 修改SQLNET.ORA网络配置
在Oracle服务器的$ORACLE_HOME/network/admin目录下编辑sqlnet.ora,添加/修改以下参数以允许旧版连接协议和认证:
-- 允许客户端/服务器使用10G版本的认证协议 SQLNET.ALLOWED_LOGON_VERSION_SERVER=10 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10 -- 禁用强制加密(BDE通常不支持加密连接) SQLNET.ENCRYPTION_SERVER=ACCEPT SQLNET.ENCRYPTION_CLIENT=ACCEPT -- 禁用校验和强制要求 SQLNET.CRYPTO_CHECKSUM_SERVER=ACCEPT
修改后需重启监听服务:lsnrctl restart
3. 调整用户权限与锁定规则
- 确保应用用户拥有基础连接权限:
GRANT CREATE SESSION TO your_app_user; GRANT SELECT ON SYS.DUAL TO your_app_user; -- 根据应用需求补充对应表的读写权限 GRANT SELECT, INSERT, UPDATE, DELETE ON your_app_table TO your_app_user;
- 放宽登录失败锁定限制,避免因BDE连接重试导致账户快速锁定:
-- 取消登录失败次数限制,或设置较高阈值 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
4. 调整数据库兼容模式(可选)
若上述设置仍无效,可尝试降低数据库兼容版本(注意:此操作会限制Oracle 19c新特性的使用):
ALTER SYSTEM SET COMPATIBLE = '12.2.0' SCOPE=SPFILE;
修改后需重启数据库实例生效。
内容的提问来源于stack exchange,提问作者Jason Smith
相关产品推荐
相关产品推荐

