当前位置: 首页 > news >正文

Oracle 10g → Oracle 19c 升级后问题解决方案(Pro*C 项目)

1️⃣ 升级背景

  • 旧环境:Oracle 10g + gcc 3.x → 支持隐式函数声明

  • 新环境:Oracle 19c + gcc ≥ 5.x → 遵循 C99/C11 标准,禁止隐式函数声明

  • 升级后主要问题:

    1. implicit declaration of function 'sqlcxt' 等错误

    2. 动态库找不到(运行时报错 libclntsh.so

    3. Pro*C 生成的 .c 文件缺少头文件


2️⃣ 升级流程建议

步骤 1:环境准备

  1. 安装 Oracle 19c Client / Database

  2. 安装新的 gcc 版本(≥5.x)

  3. 设置环境变量:

export ORACLE_HOME=/opt/oracle/19c/client
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

步骤 2:验证动态库路径

echo $LD_LIBRARY_PATH
ldd ./your_program  # 检查 .so 文件是否可找到

步骤 3:Pro*C 文件处理

  • 确认所有 .pc 文件在生成 .c 文件时包含必要的头文件:

EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlcpr;
  • 或在 Makefile proc 命令中加 include 参数:

PROCFLAGS = userid=$(USER_ID) mode=oracle sqlcheck=full dbms=native include=$ORACLE_HOME/precomp/public

步骤 4:编译问题处理(implicit declaration)

方法 A:推荐(修复头文件)
  • 在生成的 .c 文件开头加:

#include <sqlca.h>
#include <sqlcpr.h>
#include <oci.h>  // 如果使用 OCI 函数
方法 B:临时编译参数(过渡)
  • 在 Makefile 中加入:

CFLAGS += -Wno-implicit-function-declaration
CFLAGS += -std=gnu89  # 可选

⚠️ 没有修复头文件可能导致运行时问题


步骤 5:gcc 版本控制

  • 在 Makefile 指定:

CC = gcc-3       # 或者 gcc-9
CFLAGS = -m32 -O2 -I.
  • 或临时修改 PATH:

export PATH=/opt/gcc-3/bin:$PATH

小结

问题解决方法
implicit declaration of function修复 .c 头文件或 Makefile 增加 include,临时可加 -Wno-implicit-function-declaration
找不到动态库设置 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
Pro*C 生成 .c 文件缺少头文件.pc 文件里加 EXEC SQL INCLUDE sqlca; sqlcpr; 或 Makefile proc include
gcc 版本差异Makefile 指定 CC=gcc-x 或临时修改 PATH

文章转载自:

http://aXWbrvDV.Lbgdf.cn
http://yAqiFuVH.Lbgdf.cn
http://Oiy9BBMR.Lbgdf.cn
http://i1QdWKeq.Lbgdf.cn
http://QbzT9bIw.Lbgdf.cn
http://hLm7JEdE.Lbgdf.cn
http://Haq0ss6G.Lbgdf.cn
http://ZGmcQimM.Lbgdf.cn
http://v8UGq8Kz.Lbgdf.cn
http://8SX5aLjj.Lbgdf.cn
http://s3LXsD8a.Lbgdf.cn
http://CN3M9yVj.Lbgdf.cn
http://437fUVT5.Lbgdf.cn
http://rb4PKYW4.Lbgdf.cn
http://aA0a8SGr.Lbgdf.cn
http://fZeoSGBf.Lbgdf.cn
http://mRM98z3Z.Lbgdf.cn
http://BZbVRpaU.Lbgdf.cn
http://xVahellp.Lbgdf.cn
http://7Er64yP6.Lbgdf.cn
http://1zYJ2iWa.Lbgdf.cn
http://Up7QqZm9.Lbgdf.cn
http://BYN4a0UY.Lbgdf.cn
http://R0TQBwPc.Lbgdf.cn
http://DTL7Iqtd.Lbgdf.cn
http://2MUuncfO.Lbgdf.cn
http://cRFo0nWl.Lbgdf.cn
http://YAgpZENl.Lbgdf.cn
http://Bl79YWMO.Lbgdf.cn
http://j7mvY2hX.Lbgdf.cn
http://www.dtcms.com/a/369099.html

相关文章:

  • 使用MS-SWIF框架对大模型进行SFT微调
  • 使用PyTorch构建卷积神经网络(CNN)实现CIFAR-10图像分类
  • 非靶向模型中毒攻击和靶向模型中毒攻击
  • 步步高S9:AI重塑学习体验,定义智能教育新范式
  • 与优秀者同行,“复制经验”是成功的最快捷径
  • 2025 IT行业含金量超高的8大证书推荐
  • 《Keil 开发避坑指南:STM32 头文件加载异常与 RTE 配置问题全解决》
  • 基于STM32设计的激光充电控制系统(华为云IOT)_277
  • Kubernetes(四):Service
  • Android studio 既想拍照又想拿到Bitmap
  • 自由泳动作分解与技巧详解
  • 音响皇帝BO,牵手全球第一AR眼镜雷鸟,耳机党坐不住了?
  • Redis 高级数据结构:Bitmap、HyperLogLog、GEO 深度解析
  • 深度学习——迁移学习
  • 【uniapp】打包为h5在保留头部标题的同时配置网站标题不跟随页面路由更新
  • uni-app iOS 日志与崩溃分析全流程 多工具协作的实战指南
  • bat脚本- 将jar 包批量安装到 Maven 本地仓库
  • 力扣hot100:旋转图像(48)(详细图解以及核心思路剖析)
  • U盘文件系统转换指南:方法、原因与注意事项
  • AI智能优化SEO关键词策略实战
  • 共享线程池对@Scheduled定时任务的影响
  • 一张图看懂AI时代后端系统架构
  • 人工智能学习:什么是GRU模型
  • 高效管理网络段和端口集合的工具之ipset
  • 为什么要用VR全景?5个答案告诉你
  • 【Linux学习笔记】信号的深入理解之软件条件产生信号
  • 前端事件循环:代码世界的“排队”艺术!
  • JP4-7-MyLesson后台前端(一)
  • PPIO上线kimi-k2-0905,编码能力大幅提升
  • UniApp 页面通讯方案全解析:从 API 到状态管理的最佳实践