다음 시나리오가 있으며 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
- 답변 # 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을 사용하여 서로 다른 두 오라클 데이터베이스에서 테이블을 동기화합니다.
관련 자료
- sql - 각 직원에 대해 Oracle에서 열별로 두 직원 테이블을 비교하는 방법
- sql - 오라클 데이터베이스 (스키마)에서 모든 테이블의 처음 5 행을 인쇄하는 방법은 무엇입니까?
- Oracle SQL에서 두 SCD2 테이블의 JOIN 성능을 향상시키는 방법
- 파이썬을 사용하여 두 테이블 간의 오라클 데이터를 비교하는 방법 최적화
- 중복없이 여러 테이블과 열에서 Oracle의 데이터를 어떻게 검색합니까?
- oracle11g - Oracle의 다중 테이블에서 하나의 테이블로 데이터를 삽입하는 방법은 무엇입니까?
- JOIN을 수행하려고 할 때 Oracle의 FROM 절에서 테이블 순서를 변경하면 오류가 발생하는 이유
- ruby - 오라클, 동시성 및 글로벌 임시 테이블
- sql - 동일한 하위 쿼리로 여러 테이블을 통합
- oracle12c - 거대한 테이블을 포함하는 성능 조정 Oracle SQL
- database - Oracle에서 사용자에게 부여 된 테이블 열을 확인하는 방법
- Oracle에서 두 개 이상의 알 수없는 테이블을 하나의 테이블로 병합하는 방법
- sql - oracle - 레코드 중복을 피하는 다른 테이블의 조인 결과에서 테이블에 레코드 삽입
- 오라클 SQL에서 두 테이블을 결합하고 피벗하십시오
- sql - 초기 복사 후 Oracle 데이터베이스 테이블 새로 고침
- python - Sqoop을 사용하여 Oracle 테이블을 병렬로 가져 오는 가장 좋은 방법은 무엇입니까?
- oracle : 두 개의 조인된 테이블을 기반으로 트리거를 만들고 세 번째 테이블에서 행이 누락된 경우 오류를 발생시키는 방법은 무엇입니까?
- database : 제한된 세션 및 db 시작 후 Oracle 트리거
- oracle : 프로그램이 eno에 대해 발견된 no_data를 발생시킨 다음 sal>250000을 확인하도록 하려면 어떻게 해야 합니까?
- oracle : 커서 호출 시 PLS-00306(잘못된 수 또는 유형의 인수)
- sql : 트리거가 생성되었지만 실행될 때 일부 오류가 표시됨==>ORA-04091:, ORA-06512:, ORA-04088:
- 5일 이상의 조건이 충족되어야 하는 Oracle 데이터베이스 트리거 쿼리를 작성하는 방법
- 고유 값 삽입을 위한 Oracle 트리거
- ORA-06502: PL/SQL: ora_sql_txt에 의한 숫자 또는 값 오류
- 트리거를 실행하여 데이터를 삽입하지만 Oracle에서 조건을 실행한 후
- 동일한 테이블의 열 값을 업데이트하는 Oracle 트리거
이 두 테이블의 데이터베이스가 서로 다른 두 서버에있는 경우, 다음을 사용하여 테이블 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