Oracle 无法在linux中编译Pro*c代码
我在一个C项目中有一个pro*C文件,我正试图编译它,但编译后没有得到C代码 以下是环境变量:Oracle 无法在linux中编译Pro*c代码,oracle,stored-procedures,oracle-pro-c,Oracle,Stored Procedures,Oracle Pro C,我在一个C项目中有一个pro*C文件,我正试图编译它,但编译后没有得到C代码 以下是环境变量: ORACLE_HOME = /opt/vgi/oracle/12.1.0.2/client procTest.pc文件: #include <stdio.h> #include <string.h> #include <sqlda.h> #include <sqlcpr.h> EXEC SQL BEGIN DECLARE SEC
ORACLE_HOME = /opt/vgi/oracle/12.1.0.2/client
procTest.pc文件:
#include <stdio.h>
#include <string.h>
#include <sqlda.h>
#include <sqlcpr.h>
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR uid[30];
VARCHAR pwd[30];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA.H;
void main()
{
strcpy(uid.arr,"SCOTT");
uid.len =strlen(uid.arr);
strcpy(pwd.arr,"TIGER");
pwd.len = strlen(pwd.arr);
EXEC SQL WHENEVER SQLERROR GOTO errexit;
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
printf("Connected to Oracle8i using Scott/Tiger\n");
EXEC SQL COMMIT WORK RELEASE;
return;
errexit:
printf("Connection failed");
return;
}
/* end of main */
我第一次尝试pro*C,我不知道这里出了什么问题 这听起来很像 问题: 从12.1.0.1升级到12.1.0.2后,Pro*C抛出ORA-600[17998] 由“其他”用户预编译时,不安装Oracle用户 解决方法: Oralce安装用户的“chmod 777$ADR_BASE/diag/plsql”。 创建目录$ADR_BASE/diag/plsql/user_后, 即使$ADR_BASE/diag/plsql重置775的许可,Pro*C也可以正常工作
基本上,由于12.1.0.2中的一个bug,除非您以安装Oracle的用户身份运行,否则您没有创建目录的权限,因此它会崩溃。有一个补丁和一个解决方法。这听起来非常像 问题: 从12.1.0.1升级到12.1.0.2后,Pro*C抛出ORA-600[17998] 由“其他”用户预编译时,不安装Oracle用户 解决方法: Oralce安装用户的“chmod 777$ADR_BASE/diag/plsql”。 创建目录$ADR_BASE/diag/plsql/user_后, 即使$ADR_BASE/diag/plsql重置775的许可,Pro*C也可以正常工作
基本上,由于12.1.0.2中的一个bug,除非您以安装Oracle的用户身份运行,否则您没有创建目录的权限,因此它会崩溃。有一个补丁和一个解决方法。处理了一些小的差异:chmod 777到diag文件夹,在第一次编译运行后,需要将其重置为chmod 775 工作时有一些小的差异:chmod 777到diag文件夹,在第一次编译运行后,需要将其重置为chmod 775 使用正确的标签。这显然不是C和C++。我建议你也张贴你的make文件。使用正确的标签。这显然是没有C和C++。我有同样的堆栈跟踪和<代码> CHMOD O+W/OPT/Oracle /数据库/ DIAG < /代码>为我固定-允许非oracle用户在编译期间创建子文件夹。我有相同的堆栈跟踪和<代码> CHODO O+W/OPT/Oracle/Dabase/DoAG/<代码> >为我固定-允许非oracle用户在编译期间创建子文件夹
bash-4.1$ proc procTest.pc
Pro*C/C++: Release 12.1.0.2.0 - Production on Tue Mar 27 13:22:43 2018
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /opt/vgi/oracle/12.1.0.2/client/precomp/admin/pcscfg.cfg
dbgc_init_all failed with ORA-48141
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skgudmp()+188 call kgdsdst() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgeriv_int()+191 call skgudmp() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgeriv()+19 call kgeriv_int() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgeasi()+237 call kgeriv() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcgini()+1438 call kgeasi() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pc2main()+1207 call pcgini() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcmain()+35 call pc2main() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmcall()+680 call pcmain() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmpmai()+420 call lpmcall() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
main()+458 call lpmpmai() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
__libc_start_main() call main() 000000000 ? 000000000 ?
+253 000000000 ? 000000000 ?
000000000 ? 000000000 ?
Call stack signature: 0x4f7f9afc37164890
call stack performance statistics:
total : 0.000000 sec
setup : 0.000000 sec
stack unwind : 0.000000 sec
symbol translation : 0.000000 sec
printing the call stack: 0.000000 sec
printing frame data : 0.000000 sec
printing argument data : 0.000000 sec
----- End of Call Stack Trace -----
kgepop: no error frame to pop to for error 600
ORA-00600: internal error code, arguments: [kgepop: no error frame to pop to], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [kgepop: no error frame to pop to], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skgudmp()+188 call kgdsdst() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgerinv_internal()+ call skgudmp() 000000000 ? 000000000 ?
111 000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgerinv()+40 call kgerinv_internal() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgerin()+130 call kgerinv() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgepop()+633 call kgerin() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgeasi()+382 call kgepop() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcgini()+1438 call kgeasi() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pc2main()+1207 call pcgini() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcmain()+35 call pc2main() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmcall()+680 call pcmain() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmpmai()+420 call lpmcall() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
main()+458 call lpmpmai() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
__libc_start_main() call main() 000000000 ? 000000000 ?
+253 000000000 ? 000000000 ?
000000000 ? 000000000 ?
Call stack signature: 0x6c275a0c4ae84a31
call stack performance statistics:
total : 0.000000 sec
setup : 0.000000 sec
stack unwind : 0.000000 sec
symbol translation : 0.000000 sec
printing the call stack: 0.000000 sec
printing frame data : 0.000000 sec
printing argument data : 0.000000 sec
----- End of Call Stack Trace -----
ORA-00600: internal error code, arguments: [kgepop: no error frame to pop to], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [kgepop: no error frame to pop to], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skgudmp()+188 call kgdsdst() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgepop()+711 call skgudmp() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
kgeasi()+382 call kgepop() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcgini()+1438 call kgeasi() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pc2main()+1207 call pcgini() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
pcmain()+35 call pc2main() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmcall()+680 call pcmain() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
lpmpmai()+420 call lpmcall() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
main()+458 call lpmpmai() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
000000000 ? 000000000 ?
__libc_start_main() call main() 000000000 ? 000000000 ?
+253 000000000 ? 000000000 ?
000000000 ? 000000000 ?
Call stack signature: 0xa8f3ded765e05f1e
call stack performance statistics:
total : 0.010000 sec
setup : 0.000000 sec
stack unwind : 0.000000 sec
symbol translation : 0.010000 sec
printing the call stack: 0.000000 sec
printing frame data : 0.000000 sec
printing argument data : 0.000000 sec
----- End of Call Stack Trace -----