반응형

아래와 같이 길게 에러가 나왔다.

185 줄, 45 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 185, 열 45에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#define __glibc_fortify(f, __l, __s, __osz, ...) \
............................................1
PCC-S-02014, 심볼 "..."를 만났습니다 다음 중 하나가 기대될 때:
   an identifier, define, elif, else, endif, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef, exec,
   sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, create,
   function, package, procedure, trigger, or, replace,

187 줄, 9 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 187, 열 9에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
   ? __ ## f ## _alias (__VA_ARGS__)                                          \
........1
PCC-S-02014, 심볼 "##"를 만났습니다 다음 중 하나가 기대될 때:
   ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %=
   += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- ->
   ... .. <> ** => an identifier, a string, a numeric constant,
   a sql string, misc. punctuation, newline, define, elif, else,
   endif, error, if, ifdef, ifndef, include, include_next, line,
   pragma, undef, exec, sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, exec sql,
   exec sql include, exec sql var, exec sql begin, exec sql end,
   end-exec, exec sql type, exec oracle, exec oracle else,
   exec oracle endif, exec oracle begin, a sql hint, create,
   function, package, procedure, trigger, or, replace,
   a C++ token,

201 줄, 2 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 201, 열 2에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#endif
.1
PCC-S-02014, 심볼 "endif"를 만났습니다 다음 중 하나가 기대될 때:
   a numeric constant, newline, define, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef,
   an immediate preprocessor command, a C token,

라인 33, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 36, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stdarg.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
31 줄, 1 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 31, 열 1에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef unsigned char __u_char;
1
PCC-S-02201, 심볼 "typedef"를 만났습니다 다음 중 하나가 기대될 때:
   ; , = ( [
심볼이 ";" 계속하기 위하여 "typedef"로 치환되었습니다
52 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 52, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int8_t __int_least8_t;
........1
PCC-S-02201, 심볼 "__int8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int8_t"로 치환되었습니다
53 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 53, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint8_t __uint_least8_t;
........1
PCC-S-02201, 심볼 "__uint8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint8_t"로 치환되었습니다
54 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 54, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int16_t __int_least16_t;
........1
PCC-S-02201, 심볼 "__int16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int16_t"로 치환되었습니다
55 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 55, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint16_t __uint_least16_t;
........1
PCC-S-02201, 심볼 "__uint16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint16_t"로 치환되었습니다
56 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 56, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int32_t __int_least32_t;
........1
PCC-S-02201, 심볼 "__int32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int32_t"로 치환되었습니다
57 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 57, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint32_t __uint_least32_t;
........1
PCC-S-02201, 심볼 "__uint32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint32_t"로 치환되었습니다
59 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 59, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint64_t __uint_least64_t;
........1
PCC-S-02201, 심볼 "__uint64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint64_t"로 치환되었습니다
203 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 203, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __off64_t __loff_t;     /* Type of file sizes and offsets (LFS).  */
........1
PCC-S-02201, 심볼 "__off64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__off64_t"로 치환되었습니다
12 줄, 3 열, /usr/include/bits/types/__fpos_t.h 파일에 구문 오류입니다:라인 12, 열 3에 /usr/include/bits/types/__fpos_t.h 파일에서 오류가 생겼습니다
  __off_t __pos;
..1
PCC-S-02201, 심볼 "__off_t"를 만났습니다 다음 중 하나가 기대될 때:
   char, const, double, enum, float, int, long, ulong_varchar,
   OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
   OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
   OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
   struct, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name,

라인 56, 열 12에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#  include <stdarg.h>
...........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 33, 열 10에 /usr/include/string.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 23, 열 10에 /usr/include/strings.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
0 줄, 0 열, test.pc 파일에 구문 오류입니다:라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-S-02201, 심볼 "<eof>"를 만났습니다 다음 중 하나가 기대될 때:
   ; : an identifier, end-exec, random_terminal

라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-F-02102, C 선행 처리 동안 치명적 오류 발생
make: *** [makefile:9: test] Error 1

 

다른거를 다 차처하고 stdio.h , string.h , strings.h 의 파일을 열수 없다면 보면 된다.

결국 위 헤더들을 찾을 수 없는 것이다.

Pro*C 에서 빌드할때 환경파일인 pcscfg.cfg 파일에 include 하는 무언가가 있는것같았다.

파일을 열어보았다. 

sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include)
ltype=short
define=__x86_64__

위와 같이 나와있었다.

sys_include 부분에서 빌드를 할 때 필요한 include 들이 있는 것 같았다.

자세히 들여다보니 gcc의 4.1.2 버전에 해당하는 include 들이여서 못찾는 것 같았다.

필자의 gcc 버전을 확인했다

[abc@test ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-host-pie --enable-host-bind-now --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-plugin --enable-initfini-array --without-isl --enable-multilib --with-linker-hash-style=gnu --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.1 20230605 (Red Hat 11.4.1-2) (GCC)

아무래도 rocky 9 버전이다보니 gcc가 11.4.1 버전이였다.

위에 해당하는 include를 잡아주어야해서 sys_include 의 맨 뒷부분에 11버전의 gcc의 include 경로를 잡아주었다.

#pcscfg.cfg 파일
#맨 끝 부분 /usr/lib/gcc/x86_64-redhat-linux/11/include 추가
sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include,/usr/lib/gcc/x86_64-redhat-linux/11/include)

이후 pro*c 를 빌드를 하였더니 정상적으로 작동하였다.

(필자의 경우 다른 에러가 발생... ㅠㅠ)

 

위와 같이 gcc 버전을 주의해서 Pro*c 환경을 셋팅을 해야겠다.

 

참고 : https://smok95.tistory.com/141

 

Pro*C 컴파일오류 : PCC-S-02015, unable to open include file ( stddef.h, stdarg.h )

redhat linux 엔터프라이즈 4 버전에서 proc를 컴파일 하는 과정에서 아래와 비슷한 내용의 에러가 발생했습니다. ---------------------------------------------------------------------------------- make -f /opt/oracle/product/

smok95.tistory.com

 

반응형

'에러 > Oracle' 카테고리의 다른 글

[sqlplus] -bash : event not found  (0) 2024.02.22
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

sqlplus 사용시에 아래와 같은 에러가 났다.

[abc@hostname src]$ sqlplus abc/abc123!@TESTDB
-bash: !@TESTDB: event not found

 

해당 에러는 느낌표 '!' 때문에 일어난다.

bash 쉘에서는 '!' 가 이전에 실행한 히스토리를 실행하는 명령어의 히스토리를 참조하는 역할을 한다.

따라서 해당 에러를 없애기 위해서는 ! 가 문자열이라는 것을 알려줄 필요가 있다.

 

해결방법은 두가지이다.

# 1번 방법
[abc@hostname src]$ sqlplus 'abc/abc123!@TESTDB'

# 2번 방법
[abc@hostname src]$ sqlplus abc/abc123\!@TESTDB

 

그러면 해결이 될것이다.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

OS version : Rocky Linux release 9.3 (Blue Onyx)

 

sqlplus 를 사용하는 도중 나온 에러이다.

[abc@hostname instantclient_12_2]$ ./sqlplus 
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

[abc@hostname instantclient_12_2]$ ./sqlplus 
Segmentation fault (core dumped)

 

원인 : ORACLE_HOME 을 못찾는다.

 

그래서 ORACLE_HOME 을 보았다.

[abc@hostname ~]$ echo $ORACLE_HOME
/home/abc/oracle_client/instantclient_12_2

ORACLE_HOME을 .bash_profile 에 잘 설정해 놓았다.

그런데 왜 안될까를 확인해보았다.

 

본인의 환경에 따라 다를꺼같다.

필자는 아래 파일을 $ORACLE_HOME에다가 풀었다.

  • instantclient-basic-linux.x64-12.2.0.1.0.zip

그리고 .bash_profile 이다.

export ORACLE_HOME=/home/abc/oracle_client/instantclient_12_2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$PATH
export NLS_LANG=KOREAN_KOREA.AL32UTF8
export TNS_ADMIN=/home/abc/oracle_client

필자는 LD_LIBRARY_PATH 에 lib 로 설정을 해놓았다.

LD_LIBRARY_PATH 에 .so 파일을 참조하는데 이 .so 파일은

oracle client 를 설치할 때 instantclient-basic-linux.x64-12.2.0.1.0.zip 이 파일에 있다.

 

이 파일을 $ORACLE_HOME/lib 디렉토리 밑에다가 풀던지

아니면 LD_LIBRARY_PATH에 $ORACLE_HOME을 추가하던지 하면 된다.

이후 sqlplus 를 실행하면 잘 작동할 것이다.

 

밑에 stackoverflow 를 참고하였다.

https://stackoverflow.com/questions/6013508/error-6-initializing-sqlplus

 

Error 6 Initializing SQL*Plus

When i open sqlplus it shows Error 6 Initializing SQL*Plus Message file sp1<Lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

stackoverflow.com

 

요약 :  *.so 파일들이 LD_LIBRARY_PATH 에 있는지 확인해라.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] -bash : event not found  (0) 2024.02.22

+ Recent posts