2014-06-12 3 views
0

oracle에 2 개의 다른 연결에 2 개의 테이블이 있습니다. 나는 그것을 서버 연결과 클라이언트 연결이라고 부른다. 그리고 데이터를 전송할 데이터베이스 링크를 만들었고 정상적으로 작동합니다. 데이터베이스 링크를 통해 서버의 클라이언트 테이블에 새 레코드를 삽입하면됩니다. 그러나 클라이언트에서 해당 테이블을 선택하면 해당 레코드가 표시되지 않습니다. 예를 들어, 클라이언트에 "1"레코드가있는 테이블이 있습니다. 서버 측에서oracle에 데이터베이스 링크를 통해 테이블에 행을 삽입하는 방법

:

select * from [table_name]@[database_link_name] 

것은 그것은 잘 작동! 나는 기록 "1"을 얻을 수있다. 그리고 서버에서 클라이언트 테이블에 새로운 레코드를 삽입하고 다시 선택

insert into [table_name]@[database_link_name] values(2) 

OK, I 2 개 기록 "1"과 "2"를 얻을 수 있습니다. 하지만 클라이언트 쪽에서 테이블을 선택할 때 :

select * from [tblname] 

그냥 "1"레코드를 반환합니다. 어떻게 서버 측에서 2 개의 레코드를 얻을 수 있습니까? 내 문제는 어디에 있습니까? 서버의 insert 명령 또는 클라이언트의 select 명령?

감사합니다.

+3

삽입을 커밋 했습니까? –

답변

1

설명을 따르는 경우 insert을 수행 한 '서버'세션에서 commit을 발급하면됩니다.

세션이 로컬 또는 원격으로 변경되었는지 여부에 관계없이 세션은 다른 세션의 커밋되지 않은 데이터를 볼 수 없습니다. 데이터베이스 링크는 실제로 관련이 없습니다. 데이터가 '클라이언트'의 다른 세션에서 삽입 된 경우에도 동일한 효과가 나타납니다.

concurrency and consistencytransactions에 대한 자세한 내용은 설명서를 참조하십시오.

+0

아, 나는 서버 측에서 저 지르지 않는다. 고맙습니다! –

관련 문제