PostgreSQL) oracle_fdw 사용 중 테이블 select가 안되는 오류 0 2 3,767

by chaney [DB 기타] postgresql oracle [2024.01.31 10:02:27]


ORA1.PNG (30,102Bytes)
ORA2.PNG (6,319Bytes)
PG.PNG (38,789Bytes)

Oracle에서 PostgreSQL로 마이그레이션 하는 과정에서 아래와 같이 환경정보와 파일설치, 환경변수 설정까지 완료한 상태입니다.
 

환경정보

 - Red Hat Enterprise Linux release 8.4 (Ootpa)

 - PostgreSQL 15.0

 - Oracle Database 12c Enterprise Edition Release 12.2.0.1.0

 

설치자료 및 다운로드 정보

 - Oracle Instant Client for Linux x86-64 (64-bit) 다운로드 : https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

 - Postgresql 15 관련 LIbrary 파일 다운로드 : https://download.postgresql.org/pub/reps/yum/15/redhat/rhel-8-x86_64/

 - oracle_fdw-ORACLE_FDW_2_6_0 다운로드 : https://github.com/laurenz/oracle_fdw/releases/tag/ORACLE_FDW_2_6_0

 

환경변수 설정

export PG_HOME=/usr/pgsql-15

export ORACLE_HOME=/usr/lib/oracle/12.2/client64

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LB_LIBRARY_PATH

export PATH=$LD_LIBRARY_PATH:$PG_HOME/lib:$PG_HOME/bin:$ORACLE_HOME/bin:$PATH

------------------------------------------------------------------------------------------------------------------------------------------------
아래부터 에러항목입니다.

1. oracle_fdw Module을 Extension 시킴 (잘됨)
#create etension oracle_fdw;

2. oracle 데이터베이스 연결서버 생성
# create server ora foreign data wrapper oracle_fdw options(dbserver '//000.00.00.236:1521/orcl'); (잘됨, SID 문제없음)

3. oracle 데이터베이스와 연결할 유저 생성 (여기도 잘되긴 하는데 매핑하는 부분이 맞는지 의심스럽습니다)
# create user (postgresql super role 입력) password '0000' login;
# grant usage on foreign server ora to (postgresql super role 입력);
# create user mapping for (postgresql super role 입력) server ora options(user '오라클유저아이디', password '오라클 패스워드');

4. 외래테이블 생성 (잘 생성됩니다. pgadmin4에서 확인)
# create foreign table test (
empno numeric
) server ora options(schema 'public', table 'emp');

5. 외래테이블 확인 (여기부터 진행이 안됩니다.)
# select * from test;

ERROR: Oracle table "public"."emp" for foreign table "test" does not exist or does not allow read access
DETAIL: ORA-00943: table or view does not exist.
HINT: Oracle table names are case sensitive (normally all uppercase).


위와 같은 에러가 뜹니다. 대소문자 문제는 아닌듯합니다..

이해를 위해 포스트그레와 오라클 db 일부를 캡쳐해서 올립니다.


비슷한 상황을 겪어보신 분들 도움 꼭 부탁드립니다.

by 마농 [2024.01.31 11:18:14]

질문글의 스크립트의 스키마명, 테이블명이 (public, emp, test)
캡처 이미지의 명창과 다르네요.
대문자로 테이블명 주신 것 맞는지? (PROPONEST_SAAS, TEST1)


by chaney [2024.01.31 14:01:54]

ㅎㅎ 덕분에 해결했습니다! oracle에 해당 테이블을 pg랑 동일하게 생성하고 대소문자 신경써서 select하니 되네요! 회사 선배님인거 같은데.. 감사합니다!ㅎㅎ 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입