'pro*c'에 해당되는 글 4

  1. 2008.10.17 Linux에서 Pro C 설치
IT_Expert/Unix-Linux | Posted by 낫기법필 2008. 10. 17. 18:30

Linux에서 Pro C 설치

Pro*C Precompiler 설치
?Oracle Database Install 시
-Database Install 후 Oracle Client Category에서 Precompiler를 다시 Install 해야 한다.
-Oracle v9.2.x 인 경우
-Oracle 9i Database -> Enterprise Edition 설치 후, 다시 Installer 를 실행하여 Oracle 9i Client -> Administrator Edition 설치.
-Oracle 9i Client 의 Net Services 와 Pro*C 가 필요하기 때문.
-Oracle v10.1.x인 경우
-Oracle 10g Database -> Enterprise Edition 설치 후, 다시 Installer 를 실행하여 Oracle 10g Client -> Administrator Edition 설치.
-Oracle 10g 에서는 Sample Code 가 설치 되지 않으므로, 다시 Installer 를 실행하여 Companion CD 를 설치.
-Sample Code 의 위치 : $ORACLE_HOME/precomp/demo


Pro*C Precompiler 옵션


?Precompiler optiion 확인
-option 의 종류와 current value 등을 확인할 수 있다.
?Precompiler option 설정 방법
1.System configuration file 에 설정
$ORACLE_HOME/precomp/admin/pcscfg.cfg
2.User configuration file 에 설정
Precompiler option의 “CONFIG” option으로 user configuration file을 지정할 수 있다.
3.Command line 에 설정
$ proc iname=[program명] userid=scott/tiger ...
4.Pro*C 소스 내에 설정
EXEC ORACLE OPTION(HOLD_CURSORS=NO);


 
Pro*C Precompiler 환경 변수(Unix, Linux)


?Compile 시 필요한 환경변수
-ORACLE_HOME
-PATH
-$ORACLE_HOME/bin과 정확한 C compiler가 있는 directory 설정.
-LD_LIBRARY_PATH
-libclntsh shared library를 찾기 위해 $ORACLE_HOME/lib ( 또는 $ORACLE_HOME/lib32 ) 설정.
** SUN : LD_LIBRARY_PATH
** HP : LD_LIBRARY_PATH, SHLIB_PATH
** AIX : LD_LIBRARY_PATH, LIBPATH
** LINUX : LD_LIBRARY_PATH
-LINUX 에서 stddef.h, stddef.h 등 default library directory 에 없는 파일은 찾아서 symbolic link를 생성해 줘야 하는 경우도 있다.

Pro*c sample program
 
$ cd $ORACLE_HOME/precomp/demo/proc
$ make ?f demo_proc.mk smaple1

user program


 
$ cd [user program이 있는 위치]
$ cd $ORACLE_HOME/precomp/demo/proc .
$ make ?f demo_proc.mk EXE=[prog] OBJS=[prog].o build
$ make ?f demo_proc.mk EXE=[prog]
                          OBJS=“prog1.o prog2.o”build


###################################

프리컴파일, 즉 잘 변형이 안되는 고정적인 헤더 파일들(ex : Windows.h등)을 미리
컴파일해서 정보를 가지고 있게 하는 기능을 가지고 있다.
위의 헤더 파일안에 변형이 잘 안되는 헤더 파일들을 넣고 첨에 컴파일 할땐 느리지만...
두 번째 부턴 미리 컴파일된 정보를 가지고 있어서 stdafx.h 안에 속한 헤더 파일들은 다시 컴파일 안하므로
컴파일 속도가 높아진다.
#####################################
Pro*C란?
"Oracle RDBMS에 준비된 Pro*C들은 SQL문을 써넣은 C프로그램을 Oracle 데이타베이스
에 있는 데이터의 액세스와 조작을 할 수 있는 C 프로그램으로 변환하기 위한 것이다.
Pro*C는 프리컴파일러이기 때문에, 입력 파일내에 있는 EXEC SQL문을 적당한 Oracle
Call로 변환해서 출력 파일을 작성한다. 그 다음, 이 출력 파일을 C 프로그램에 대한
통상의 방법으로 컴파일하고 링크해서 실행할 수 있다.
Pro*C(또는 Pro*Fortran이나 Pro*PL/I 등과 같은 제품)를 Oracle Call 인터페이스와
비교해 보자. Oracle Call 인터페이스(OCI)는 Oracle 데이터베이스의 Call 인터페이스
이므로 유저는 C, Fortran, Cobol 등의 고급언어 내에 직접 Oracle Call을 짜넣는다.
각각의 트랜잭션은 복수개의 Call과 Cursor(커서:이해할려나?)를 사용함으로써 수행된
다."
<<<<< 장점 및 이점 >>>>>
-. 1개의 Pro*C Call은 자동적으로 복수의 실행시 라이브러리 콜로 변환되기 때문에
프로그램 작성에 필요한 시간을 단축할 수 있다.
-. 1개의 프로그램을 다른 데이터베이스내의 데이터에 대해서 사용할 수 있다.
-. 복수의 프로그램을 각각 프리컴파일해서 함께 실행할 수 있다.
이상이 한글판 메뉴얼에 나와 있는 Pro*C에 대한 개략적인 정의입니다.
일반 C언어에 SQL query 문장을 넣어 파일로 저장한 다음 Pro*C로 컴파일(프리컴파일:
전처리 컴파일)하면 pc(맞나?)라는 확장자가 나오는데, 이것을 C 컴파일러로 컴파일하
면 일반 C 프로그램과 마찬가지로 실행파일이 생긴다. 이러한 실행파일은 일반적인
CGI 스크립트(이것도 이해할려나?)와 같이 작동해서 DB내에 있는 데이타를 query 해
온다.

[출처] http://tong.nate.com/odusan/21789892