>

다음 시나리오가 있으며 ORACLE에서 해결해야합니다 :

표 A는 DB 서버에 있습니다 표 B가 다른 서버에 있습니다

표 A에 데이터가 채워집니다. 무언가가 표 A에 삽입 될 때마다 표 B에 복사하고 싶습니다. 표 B는 거의 비슷한 열을 가지고 있지만 때로는 얻고 싶습니다. tableA에서 2 열의 내용을 연결하고 저장하십시오. 표 B.

오라클에 익숙하지 않지만 GOOGLE을 조사한 후 일부는 TRIGGERS 또는 VIEWS로 할 수 있다고 말하면 어떻게 하시겠습니까?

일반적으로, 채워질 테이블과 그 내용이 있습니다. 다른 테이블에 대한 copien이어야합니다.

이것은 지금까지 내가 찾은 솔루션입니다

create public database link
  other_db
connect to
  user
identified by
  pw
using 'tns-entry';
CREATE TRIGGER modify_remote_my_table 
  AFTER INSERT ON my_table 
  BEGIN INSERT INTO ....?
  END; 
/

삽입 된 최신 행을 어떻게 선택합니까?

  • 답변 # 1

    이 두 테이블의 데이터베이스가 서로 다른 두 서버에있는 경우, 다음을 사용하여 테이블 B 데이터에 액세스 (읽기/쓰기) 할 수 있도록 테이블 A 스키마에서 데이터베이스 링크 (db-link)를 작성해야합니다. db-link.

    1 단계 :테이블 B 서버 DB를 가리키는 테이블 A 서버 데이터베이스에 데이터베이스 링크 생성

    2 단계 :데이터베이스 링크를 사용하여 테이블 B에 데이터를 삽입하는 데 도움이되는 테이블 A에 대한 트리거를 만듭니다. 트리거를 테이블 B에 삽입하기 전에 트리거 내부에서 사용자 정의 (값을 연결) 할 수 있습니다.

    이 링크는 당신을 도울 것입니다

    http://searchoracle.techtarget.com/tip/How-to-create-a-database-link-in-Oracle

  • 답변 # 2

    예, 트리거로이 작업을 수행 할 수 있습니다. 그러나 몇 가지 단점이있을 수 있습니다.

    데이터베이스 B를 사용할 수 없으면 어떻게합니까? ->예외 처리가 트리거됩니다.

    2 시간 동안 데이터베이스 B를 사용할 수 없으면 어떻게합니까? 데이터베이스 B에 누락 된 데이터베이스 A에 데이터를 삽입했습니다.->데이터베이스 A의 캐시 테이블에 임시로 삽입하여 미친 짓을하십시오.

    성능. 많은 양의 데이터를 삽입하는 성능은 추악합니다. 데이터를 삽입 할 때마다 Oracle은 원격 데이터베이스에 데이터를 삽입하기 위해 PL/SQL 엔진을 시작합니다.

    아마도 데이터베이스 링크를 통해 데이터를 복제하기 위해 MView (Materialized Views)를 사용하는 것에 대해 생각할 수 있습니다. 나중에 MView를 조인하여 데이터베이스 B의 테이블에 액세스하고 데이터베이스 A의 필수 데이터를 추가 할 수 있도록 쿼리를 작성할 수 있습니다.

    빠른 새로 고침을 사용하여 데이터 (거의)를 실시간으로 복제 할 수도 있습니다.

    Oracle Database Admin의 관점에서 보면 이는 트리거 방식보다 훨씬 더 합리적입니다.

  • 답변 # 3

    이 코드를 사용해보십시오

    데이타베이스 링크는 다소 안전하지 않은 것으로 간주되며 오라클 자체 옵션에는 요즘 관련 라이센스가 있으며 다른 옵션도 더 이상 사용되지 않습니다.

    https://gist.github.com/anonymous/e3051239ba401e416565cdd912e0de8c

    ora_rowscn을 사용하여 서로 다른 두 오라클 데이터베이스에서 테이블을 동기화합니다.

  • 이전 layout - GtkBox 센터 센터 내용
  • 다음 angular - 이오니아 2 페이지 알림에 두 번 푸시