DB2에 내장된 함수 실행 시 위와 같은 SQ0444N 메시지를 보게 되는 경우가 생길 수 있다. 내장 함수 호출 시, db2 내부적으로는 db2clifn1.a 라이브러리를 참조하게 되는데 이 라이브러리 파일이 없어서 발생을 하는 경우가 있다.
$> db2 ? sql0444n SQL0444N 루틴 "<routine-name>"(특정 이름 "<specific-name>")이(가) 라이브러리 또는 경로 "<library-or-path>", 함수 "<function-code-id>"에서 코드로 구현되었지만 액세스할 수 없습니다. 이유 코드: "<code>". 설명: 데이터베이스 관리 프로그램이 루틴 "<routine-name>"(특정 이름 "<specificname>")을(를) 구현하는 코드 본문에 액세스하려고 했지만, 이유 코드"<code>"(으)로 지정된 이유로 인해 액세스할 수 없습니다(코드는 아래 나열되어 있음). 루틴을 구현하는 파일은 "<library-or-path>"(으)로 식별되고 함수는 "<function-code-id>"(으)로 식별됩니다. 4 다음 중 한 이유로 인해 "<library-or-path>"에서 파일을 찾을 수 없습니다. 1. 루틴 CREATE 문 정의의 EXTERNAL 절에 지정된 위치에서 루틴과 연관된 루틴 라이브러리가 사용 불가능합니다. 2. 루틴 라이브러리가 찾을 수 없는 공유 라이브러리에 종속적입니 다(UNIX 기반 시스템의 LIBPATH 환경 변수 또는 Windows 시스템의 PATH 환경 변수에 지정된 디렉토리 병합 내). 관련된 간접적인 다중 레벨로 인해 이 이유 코드가 발생할 수 있습니다. 예를 들어, 루틴 본문 X를 찾을 수 있으며, 필요로 하는 공유 라이브러리 Y도 찾을 수 있어야 합니다. 그러나 Y에는 찾을 수 없는 또 다른 공유 라이브러리 Z가 필요합니다. |
(확인) 인스턴스 경로 하위의 sqllib/function 에 db2clin.a 링크 파일 존재 유무
엔진의 라이브러리 파일을 가리키는 링크파일로 삭제된 경우 DB2 내부 함수 실행 시 오류 발생함
테스트 (db2clifn.a 파일명을 바꿀 때, 오류 발생 확인) $> mv db2clifn.a db2clifn1.a $> db2 force applications all $> db2 connect to sample $> db2 "select chr(66) from sysibm.sysdummy1" SQL0444N Routine "SYSFUN.CHR" (specific name "CHR") is implemented with code $> mv db2clifn1.a db2clifn.a $> db2 "select chr(66) from sysibm.sysdummy1" 1 - B |
이런 경우 2가지의 해결 방법이 있을 것이다.
OS 환경 및 DB2 버전이 동일한 다른 시스템이 존재한다면 해당 링크 파일을 복사해 넣어 주는 방법이 있을 것이고 (동일한 환경이 없다면 인스턴스를 추가로 생성하고 나서 sqllib/function 하위 파일을 복사)
다른 방법은, 인스턴스를 업데이트(db2iupdt)를 수행하여 인스턴스 환경을 초기 상태로 맞춰 놓는 경우일 것이다. (이 경우, dbm cfg 백업하여 초기화된 변수 값이 있는지 확인 필요)
'Troubleshooting' 카테고리의 다른 글
[일반] TCP/IP function "close" 관련 오류 메시지 (0) | 2012.12.20 |
---|---|
[일반] 64-bit Module Load 관련 오류 메시지 (0) | 2012.12.20 |
[권한] SQL5193N (workload:sysdefaultuserworkload) (0) | 2012.10.15 |
[이중화] SQL1517N (pureScale:db2cluster) (0) | 2012.06.25 |
[이중화] ECF=0x90000542 (HADR:db2haicu) (0) | 2011.11.21 |