database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Q&A 3480 게시물 읽기
No. 3480
remote database에서 결과값 조회시 틀림
작성자
Moon
작성일
2017-11-08 13:35:13
조회수
614

 안녕하세요.

1번 서버와 2번 서버가 있는 상태에서

1번 서버에서 쿼리를 실행을 하면 결과값이 나오는데

2번 서버에서 1번 서버로 접속 후 같은 쿼리를 실행할 경우 결과값이 나오지 않습니다.

해당 쿼리에는 where in 조건에 서브쿼리를 이용하여 udr도 사용하고 있습니다.

이렇게 사용시에 제약조건이 있는 건가요?

구글과 ibm 사이트에서 찾아 봐도 비슷한 관련 내용이 없어 질문 드립니다.

 

이 글에 대한 댓글이 총 6건 있습니다.

 안녕하세요.

쿼리에서 사용하는 테이블과 udr이 1번서버에 모두 존재한다면 어느원격지에서 접속하더라도 결과는 같습니다.

1번, 2번 모두 인포믹스 서버이신가요?

2번에서 1번 데이터베이스에 접속하신다고 하셨는데

쿼리에서 1번,2번 서버 양쪽의 테이블을 다 사용하는지요?

2번에서 1번으로 접속하실때 dbaccess 또는 c나 java 어떤것으로 접속하시는지요?

결과값이 나오지 않는다고 하셨는데 건수가 다르신건지 아니면 오류로 결과가 나오지 않는다는 말씀이신가요?

 

그리고 재현할만한 시나리오를 공유해주실수있나요?

정상규(pajama)님이 2017-11-08 17:48:16에 작성한 댓글입니다.
이 댓글은 2017-11-08 23:36:58에 마지막으로 수정되었습니다.

우선 답변 감사합니다.

1. 1번 2번 둘다 인포믹스 서버입니다.

2. 서버 양쪽의 테이블은 아니고 1번 서버의 테이블만 사용합니다.

3. dbaccess로 접속

4. 오류는 발생하지 않고 no rows로 결과 값이 없다고 나옵니다.

5. 해당 쿼리

select * from ocusdb@db01:cr_mcy

wherer enc in (select ocusdb@db01:spc_enc('1234561111111')

from ppcommon@db01:dual);

위의 쿼리로 조회를 합니다.

 

테스트로 2번 서버에서 dbaccess로 1번 서버 접속후 해당 쿼리로 동일한 결과값이 나와서

다시 확인해 보니 2번 서버에서 dbaccess로 2번 서버 접속후 쿼리만 위의 쿼리로 실행하면

no rows가 나온다고 합니다. 

저도 재현해 볼려고 2번 서버에서 dbaccess로 2번 서버 접속후 해당 쿼리 실행하면 

2번 서버 online.log에 -956에러 떠서 접속이 안되네요 ㅜ

 

 

Moon님이 2017-11-09 12:29:10에 작성한 댓글입니다. Edit

안녕하세요.

 
제가 간단히 테스트한 결과를 공유드립니다.
물리적으로 분리된 장비 server1, server2가 있다고 가정하겠습니다.
호스트명: server1, server2
인스턴스명: inst1, inst2
DB명: inst1 (stores_demo), inst2 (stores_demo)
 
 
**인스턴스 inst1 작업
 
<인스턴스 inst1의 DB에 접속>
$ dbaccess stores_demo@inst1 -
 
<테스트용 테이블 작성>
> create table cr_mcy (enc int);
> insert into cr_mcy values (1234);
 
<테스트용 UDR>
> create function spc_enc (a bigint) returning int;
return 1234;
end function;
 
<인스턴스 inst1의 테이블에 대한 쿼리 실행 결과>
> select * from stores_demo@inst1:cr_mcy
where enc in (select stores_demo@inst1:spc_enc('1234561111111')
from sysmaster@inst1:sysdual);
 
        enc
 
       1234
 
1 row(s) retrieved.
 
 
** 인스턴스 inst2 작업
 
<인스턴스 inst2의 DB에 접속>
$ dbaccess stores_demo@inst2 -
 
<인스턴스 inst1의 테이블에 대한 쿼리 실행 결과>
> select * from stores_demo@inst1:cr_mcy
where enc in (select stores_demo@inst1:spc_enc('1234561111111')
from sysmaster@inst1:sysdual);
 
        enc
 
       1234
 
1 row(s) retrieved.
 
 
 
UDR이 원격DB에 있으나 결과값이 달라지지는 않았습니다.
 
2번 서버 접속후 쿼리 실행을 하였는데, 1번서버가 아닌 2번서버에서 -956 오류가 발생한 것이 맞나요?
 
그런 문제라면 접속한 환경이나 사용자 계정이 달라서 생기는 문제일 수 있습니다.
정상규(pajama)님이 2017-11-09 14:43:33에 작성한 댓글입니다.

직접 테스까지 해주시고 감사합니다.

 

 

 

2번 서버에서는 dbaccess로 접속하려고 하면 951 : incorrect password or user informix@dbname is not known on the database server. 이라고 에러메세지 발생하고 접속이 안되네요, 특이한거는 2번 서버에는 온라인 로그에는 아무 로그가 남지 않고

1번 서버 온라인 로그에 listener-thread: err = -956: orserr = 0: errstr = infromix@dbname : client host or user informix@dbname is not trusted by the server 로 기록 되어 있습니다.

2번 서버에서 dbaceess 접속후 1번 서버 conncetion 선택 할때 유저랑 패스워드 직접 입력해서 접속할 경우는 정상적으로 접속이 됩니다.

sqlhosts 쪽에 따로 접속 할 서버의 유저명과 패스워드를 입력하는 곳이 있나요? 

Moon님이 2017-11-13 13:49:58에 작성한 댓글입니다.
이 댓글은 2017-11-13 15:24:13에 마지막으로 수정되었습니다. Edit

sqlhosts 파일에서 ID/패스워드를 관리하지 않습니다.

인포믹스는 OS계정을 사용해서 접속합니다. 따라서 원격지에서 접속하려면 서버에서 패스워드 없이 로그인을 허용하도록 설정하는데요.

일반적으로는

1. DB서버의 /etc/hosts에 클라이언트 호스트명과 IP를 등록하고,

2. 사용자 계정 홈디렉토리의 .rhosts 파일에 허용할 클라이언트 호스트명과 계정이름을 기록해두면 

원격지에서 패스워드 입력없이 접속할 수 있습니다.

 

계정이 informix라면 2번 db서버 informix 계정의 ~/.rhosts 파일을 확인해보세요.

정상규(pajama)님이 2017-11-13 15:28:26에 작성한 댓글입니다.
이 댓글은 2017-11-13 15:29:14에 마지막으로 수정되었습니다.

답변 감사합니다.

.rhosts 라는 파일이 없어서 설정을 못 했는데

rsh를 받아서 따로 설정을 해줘야 하는 거였네요.

설정 완료하고는 에러 없이 정상적으로 접근 가능합니다.

 

위에 테스트 해주신 쿼리로 저도 테스트 해봤을때는 

정상적으로 둘다 1234 결과 값이 나옵니다.

그런데 제가 사용해야될 udr 사용했을 경우에는 

2번 서버에서는 같은 쿼리인데 no rows 가 뜨네요.

1번 서버에서는 같은 쿼리에 결과값이 출력이 됩니다.

 

informix 제약사항인가 싶었는데 아무래도 udr 문제인거 같네요.

문안기님이 2017-11-13 18:35:51에 작성한 댓글입니다.
이 댓글은 2017-11-14 10:09:32에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3482informix 실행계획 질문입니다. [1]
goblin
2018-06-12
139
3480remote database에서 결과값 조회시 틀림 [6]
Moon
2017-11-08
614
3479Decimal 형식을 TO_DATE형식으로 select가 가능한가요? [1]
Informix
2017-10-13
582
3477syslicenseinfo 같은 SMI 테이블의 데이터를 수정하거나 또는 초기화 할 수 있나요? [1]
최일원
2017-08-07
820
3476windows informix 패스워드 변경 [3]
몽몽
2017-06-14
1090
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.071초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다