linux 7.2下Oracle8i的Pro*c编译环境

时间:2022-06-23 09:17:36
我在redhat linux7.2装完oracle8i后,在 $ORACLE_HOME/bin下找不到proc命令,是不是要搭建proc的编译环境,怎么搭建?是不是要自定义安装,但是我在自定义安装时没有找到Proc的组件,请高手指教。还有,编译proc的步骤。

7 个解决方案

#1


安装oracle8i时,
oracle programmer  - 自定义安装

ORACLE预编译器在ORACLE 8I安装时是默认或选择安装的,安装了PRO*C,则在$ORACLE_HOME/bin路径下就有了可执行程序PROC,以及相应的未经配置预编译环境。为使PRO*C预编译器能工作我们还必须对环境做一些配置。 

ORACLE的PRO*C是对预编译器的选项值的改变来配置环境的。预编译指令基本格式如下: 

Proc 选项名=选项值 源文件 


也可把选项值的改变放到CONFIG指定的文件中做。 

PROC的选项 auto_connect
 允许自动连接到 ops$ 帐号
 
char_map
 正在映射字符数组和字符串 
 
Close_on_commit
 关闭所有 COMMIT 游标
 
codekr_c
 将要生成的代码类型 
 
Comp_charset
 C 编译器支持的字符集类型
 
Config
 用另一配置文件覆盖系统配置文件 
 
Cpp_suffix 
 覆盖缺省的 C++ 文件名后缀
 
dbmsnative 
 兼容模式 
 
Def_sqlcode
 生成 '#define SQLCODE sqlca.sqlcode' 宏
 
Define 
 定义预处理器符号 
 
Durationtransaction 
 设置高速缓存中对象的 pin 持续时间
 
Dynamic
 指定 Oracle 或 ANSI 动态 SQL 语义
 
Errors
 是否将错误消息发送到终端 
 
Errtype 
 输入文件的列表文件名称错误 
 
Fips
 ANSI 的 FIPS 标志不符合用法
 
Header
 为预编译标题指定文件扩展名 
 
hold_cursor 
 在游标高速缓存中控制游标保留 
 
iname 
 输入文件的名称 
 
Include
 包括文件的目录路径 
 
Intype 
 有关类型信息的输入文件名称 
 
Lines
 将 #line 指令添加到生成的代码中
 
Lname
 覆盖缺省列表文件名 
 
Ltype
 列表文件中生成的数据量 
 
maxliteral 
 生成的文字串的最大长度 
 
maxopencursors 
 高速缓存的开放游标的最大数量 
 
mode 
 代码符合 Oracle 或 ANSI 规则
 
Nls_char 
 指定国家语言字符变量 
 
Nls_local
 控制 NLS 字符语义的实现方法
 
Objects 
 支持对象类型 
 
oname 
 输出文件名 
 
oraca 
 控制 ORACA 的使用
 
Pagelen 
 列表文件页面长度 
 
parse 
 控制进行语法分析的非 SQL 代码
 
prefetch 
 游标 OPEN 期间预读取的行数
 
Release_cursor 
 控制从游标高速缓存中释放游标 
 
Select_error
 控制选择标记错误 
 
sqlcheck 
 编译时间 SQL 校验总量
 
Sys_include 
 系统标题文件所在目录 
 
Threads 
 指示多线程应用程序 
 
type_code 
 将 Oracle 或 ANSI 类型代码用于动态 SQL
 
Unsafe_null 
 允许在没有指示变量的情况下进行> NULL 读取
 
Userid 
 用户名/口令 [@dbname] 连接串
 
Varchar 
 允许使用隐式 varchar 结构
 
Version 
 将要返回的对象版本 
 



大部分选项我们都可以用默认值,但其中有几个选项是需要配置的。 

l CONFIG:指定PROC的CONFIG文件。PROC默认配置文件为$ORACLE_HOME/precomp/admin/pcscfg.cfg,我们可以编辑我们要使用的CONFIG文件。 

l INCLUDE:包括文件的目录路径,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。 

l SYS_INCLUDE:系统头文件所在目录,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。但要注意可能默认的系统头文件的路径不对。如 
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include) 

lUSERID:用户名/口令 [@dbname] 连接串 

B、配置: 

配置工作比较简单,只要将默认的>CONFIG文件COPY到源程序所在的路径下,修改其中的USERID。 

使用如下命令对PROC源文件进行预编译,输出相应的C源程序。 

Proc config=myconfg.cfg iname=myprog.pc oname=myprog.c 

PRO*C将对INAME指定的PROC源文件进行预编译,输出ONAME指定的文件。 

3、联编环境: 

预编译只是将PROC源文预编译成C源文件,而要将不同源文件编译生成的目标文件联编,则要指定联编所需要的LIBRARY,ORACLE接口程序(PROC程序)需要的the client shared library分布在许多路径下,为联编方便,ORACLE提供了$ORACLE_HOME/precomp/demo/proc/demo_proc.mk文件。 

使用如下命令: 


make–f demo_proc.mk OBJS=”myporg.o mydb.o” EXE=myprog.e build 

就可以完成联编。 



#2


这篇文章我在网上看过。我找不到$ORACLE_HOME/precomp/admin/pcscfg.cfg和$ORACLE_HOME/bin路径下就有了可执行程序PROC

#3


问题解决了吗?

#4


原来没有人解决的了阿!

#5


我自己解决了。

#6


up

#7


up

#1


安装oracle8i时,
oracle programmer  - 自定义安装

ORACLE预编译器在ORACLE 8I安装时是默认或选择安装的,安装了PRO*C,则在$ORACLE_HOME/bin路径下就有了可执行程序PROC,以及相应的未经配置预编译环境。为使PRO*C预编译器能工作我们还必须对环境做一些配置。 

ORACLE的PRO*C是对预编译器的选项值的改变来配置环境的。预编译指令基本格式如下: 

Proc 选项名=选项值 源文件 


也可把选项值的改变放到CONFIG指定的文件中做。 

PROC的选项 auto_connect
 允许自动连接到 ops$ 帐号
 
char_map
 正在映射字符数组和字符串 
 
Close_on_commit
 关闭所有 COMMIT 游标
 
codekr_c
 将要生成的代码类型 
 
Comp_charset
 C 编译器支持的字符集类型
 
Config
 用另一配置文件覆盖系统配置文件 
 
Cpp_suffix 
 覆盖缺省的 C++ 文件名后缀
 
dbmsnative 
 兼容模式 
 
Def_sqlcode
 生成 '#define SQLCODE sqlca.sqlcode' 宏
 
Define 
 定义预处理器符号 
 
Durationtransaction 
 设置高速缓存中对象的 pin 持续时间
 
Dynamic
 指定 Oracle 或 ANSI 动态 SQL 语义
 
Errors
 是否将错误消息发送到终端 
 
Errtype 
 输入文件的列表文件名称错误 
 
Fips
 ANSI 的 FIPS 标志不符合用法
 
Header
 为预编译标题指定文件扩展名 
 
hold_cursor 
 在游标高速缓存中控制游标保留 
 
iname 
 输入文件的名称 
 
Include
 包括文件的目录路径 
 
Intype 
 有关类型信息的输入文件名称 
 
Lines
 将 #line 指令添加到生成的代码中
 
Lname
 覆盖缺省列表文件名 
 
Ltype
 列表文件中生成的数据量 
 
maxliteral 
 生成的文字串的最大长度 
 
maxopencursors 
 高速缓存的开放游标的最大数量 
 
mode 
 代码符合 Oracle 或 ANSI 规则
 
Nls_char 
 指定国家语言字符变量 
 
Nls_local
 控制 NLS 字符语义的实现方法
 
Objects 
 支持对象类型 
 
oname 
 输出文件名 
 
oraca 
 控制 ORACA 的使用
 
Pagelen 
 列表文件页面长度 
 
parse 
 控制进行语法分析的非 SQL 代码
 
prefetch 
 游标 OPEN 期间预读取的行数
 
Release_cursor 
 控制从游标高速缓存中释放游标 
 
Select_error
 控制选择标记错误 
 
sqlcheck 
 编译时间 SQL 校验总量
 
Sys_include 
 系统标题文件所在目录 
 
Threads 
 指示多线程应用程序 
 
type_code 
 将 Oracle 或 ANSI 类型代码用于动态 SQL
 
Unsafe_null 
 允许在没有指示变量的情况下进行> NULL 读取
 
Userid 
 用户名/口令 [@dbname] 连接串
 
Varchar 
 允许使用隐式 varchar 结构
 
Version 
 将要返回的对象版本 
 



大部分选项我们都可以用默认值,但其中有几个选项是需要配置的。 

l CONFIG:指定PROC的CONFIG文件。PROC默认配置文件为$ORACLE_HOME/precomp/admin/pcscfg.cfg,我们可以编辑我们要使用的CONFIG文件。 

l INCLUDE:包括文件的目录路径,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。 

l SYS_INCLUDE:系统头文件所在目录,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。但要注意可能默认的系统头文件的路径不对。如 
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include) 

lUSERID:用户名/口令 [@dbname] 连接串 

B、配置: 

配置工作比较简单,只要将默认的>CONFIG文件COPY到源程序所在的路径下,修改其中的USERID。 

使用如下命令对PROC源文件进行预编译,输出相应的C源程序。 

Proc config=myconfg.cfg iname=myprog.pc oname=myprog.c 

PRO*C将对INAME指定的PROC源文件进行预编译,输出ONAME指定的文件。 

3、联编环境: 

预编译只是将PROC源文预编译成C源文件,而要将不同源文件编译生成的目标文件联编,则要指定联编所需要的LIBRARY,ORACLE接口程序(PROC程序)需要的the client shared library分布在许多路径下,为联编方便,ORACLE提供了$ORACLE_HOME/precomp/demo/proc/demo_proc.mk文件。 

使用如下命令: 


make–f demo_proc.mk OBJS=”myporg.o mydb.o” EXE=myprog.e build 

就可以完成联编。 



#2


这篇文章我在网上看过。我找不到$ORACLE_HOME/precomp/admin/pcscfg.cfg和$ORACLE_HOME/bin路径下就有了可执行程序PROC

#3


问题解决了吗?

#4


原来没有人解决的了阿!

#5


我自己解决了。

#6


up

#7


up