오라클 동적 호출 외부 C 라이브러리 함수

 카테고리 : 오라클

2016년 8월 20일 5시 24분 52초

개발 시간을 단축하기 위해 프로젝트로, 좋은 전화 오라클에서 외부 C 프로그램을 개발합니다.
이 문서의 실제 요약과 함께, 온라인 일부 게시물을 찾을 수 있습니다. 내가 도와주고 싶어요.
참조 문서 : HTTP : //www.cnblogs.com/mathitlin99/archive/2013/09/05/3303717.html는

먼저 외부 동적 라이브러리를 컴파일 <기간 "=" "> libDialPlan.so

(클릭 여기) 접거나 펼쳐

  1. GCC -fPIC -c LibDialPlan.cpp
  2. GCC -shared -o libDialPlan.so LibDialPlan.o -lstdc ++

파일 및 Oracle TNS 리스너 파일을 수정합니다.
내가 직접 복사를 사용할 수 모른다. 당신은 질문이있는 경우, 등호 및 괄호 공간의 양쪽에주의하시기 바랍니다 .
tnsnames.ora를

(클릭 여기) 접거나 펼쳐

  1. ORADB =
  2.   (DESCRIPTION =
  3.     (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.69.166) (PORT = 1521))
  4.     (CONNECT_DATA =
  5.       (SERVER = DEDICATED)
  6.       (SERVICE_NAME = oradb)
  7.     ) 
  8.   )
  9. EXTPROC_CONNECTION_DATA =
  10.   (DESCRIPTION =
  11.     (ADDRESS_LIST =
  12.     (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1521))
  13.   )
  14.   (CONNECT_DATA =
  15.     (SID = PLSExtProc)
  16.     (PRESENTATION = RO)
  17.   )
  18.   )
listener.ora를

(클릭 여기) 접거나 펼쳐

  1. LISTENER =
  2.   (DESCRIPTION_LIST =
  3.     (DESCRIPTION =
  4.       (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1521))
  5.       (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.69.166) (PORT = 1521))
  6.     )
  7.   )
  8. ADR_BASE_LISTENER = / 가정 / 오라클 / DB / 응용 프로그램
  9. SID_LIST_LISTENER =
  10. (SID_LIST =
  11.   (SID_DESC =
  12.   (GLOBAL_DBNAME = oradb)
  13.   (SID_NAME = oradb)
  14.   )
  15.   (SID_DESC =
  16.   (SID_NAME = PLSExtProc)
  17.   (ORACLE_HOME = /opt/local/oracle/app/product/11.2.0/dbhome_2)
  18.   (ENVS = EXTPROC_DLLS = ANY)
  19.   (PROGRAM = extproc)
  20.   ) 
  21. )

수정 후 리스너 다시 시작 : LSNRCTL 정지, 시작 LSNRCTL
모니터 상태를보고, 다음 모니터 항목을 표시해야합니다 PLSExtProc <범위를 "=" "> 

(클릭 여기) 접거나 펼쳐

  1. [루트 @ 로컬 호스트 관리자] # 개의 LSNRCTL 상태
  2. Linux 용 LSNRCTL : 버전 11.2.0.1.0 - 생산 04 월 - 2016 19시 33분 50초에
  3. 저작권 (C) 1991, 2009, 오라클. 판권 소유.
  4. 연결 (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1521)))
  5. 리스너의 상태
  6. ------------------------
  7. 별칭 LISTENER
  8. 리눅스 버전 tnslsnr로 : 버전 11.2.0.1.0 - 생산
  9. 날짜 시작 04 월 - 2016 16시 23분 54초
  10. 0일 3 시간을 가동 시간. 9 분. 55 초
  11. 추적 수준 떨어져
  12. 현지 OS 인증 : ON 보안
  13. SNMP OFF
  14. 리스너 매개 변수 파일 /opt/local/oracle/app/product/11.2.0/dbhome_2/network/admin/listener.ora
  15. 리스너 로그 파일 /opt/local/oracle/app/product/11.2.0/dbhome_2/network/log/listener.log
  16. 엔드 포인트 요약 듣기 ...
  17.   (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1521)))
  18.   (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.69.166) (PORT = 1521)))
  19. 서비스 요약 ...
  20. 서비스 "PLSExtProc는"1 예 (들)을 가지고있다.
  21.   인스턴스 "PLSExtProc"상태 UNKNOWN는이 서비스에 대한 1 핸들러 (들)을 가지고 ...
  22. 서비스 "oradb는"1 예 (들)을 가지고있다.
  23.   인스턴스 "oradb"상태 UNKNOWN는이 서비스에 대한 1 핸들러 (들)을 가지고 ...
  24. 명령이 성공적으로 완료
  25. [루트 @ 로컬 호스트 관리자] #
오라클 라이브러리 오브젝트 만들기

(클릭 여기) 접거나 펼쳐

  1. 만들거나 라이브러리 hytpdtbilldb.Fun_Ext_Proc 교체
  2.   '/opt/local/Oracle_install/Oracle_Call_External_C/libDialPlan.so'와 같은;
기능 만들기
) 온라인 기사뿐만 아니라 매개 변수 (1)에 따라 매개 변수를.
내가 가입 한 후 그러나이 매개 변수는 컴파일되지 않았습니다. 제거 후 함수의 사용에는 영향을 미치지 않습니다.
2) BINARY_INTEGER 숫자 및 문자열 VARCHAR2 타입에 대응한다. 원래 배열 형식 매개 변수에 C은 문자열을 통해 진짜 오라클 배열 대신 필요하지만됩니다.
3) 때때로 내 테스트의 과정, 그리고에서 호출 정상적인 기능을 다시 부팅해야합니다. 당신이 볼 수있는 프로세스를 사용할 수 있습니다.

(클릭 여기) 접거나 펼쳐

  1. 만들거나 기능 hytpdtbilldb.Air2Gsi 교체
  2. (X의 BINARY_INTEGER, Y의 VARCHAR2)
  3. VARCHAR2 반환
  4. 같이
  5. 언어 C
  6. 라이브러리 hytpdtbilldb.Fun_Ext_Proc 
  7. "Air2Gsi를"이름;
  8. /

추천

출처www.cnblogs.com/buffercache/p/11446224.html