2012-09-06 2 views
1

매일 한 스키마에서 다른 스키마로 한 테이블의 데이터를로드하려고합니다.Oracle PL/SQL 및 쉘 스크립팅 : 한 스키마에서 다른 스키마

  • 테이블
  • 데이터베이스가 다른에 있습니다 ....
  • 정보 만 기록이 과정을 얻을 것이다 .... 그래서 데이터베이스 링크 인해 일부 보안 목적에 옵션이 될 수 없습니다 만드는 다른 데이터베이스에있는 서버에서 "A"데이터베이스에서 한 달 동안 emp 세부 정보와 emp 존재 테이블을 결합하고이 데이터를 데이터베이스 "B"의 다른 테이블에로드하여 Employee 존재 세부 정보를 가져옵니다. 매일이 활동을 실행해야합니다.
  • 다른 데이터베이스에 테이블의 완전한 복사본을 얻으려면 낮은 피크 시간에 매일 작업을 실행해야합니다.
  • sqlldr의 도움으로 데이터를 가져 오거나 내보내거나로드합니까?

은 .. 내가 올바른 방법 .. 미리 감사를 알려 주시기 바랍니다

내 최고의 옵션은 무엇입니까?

답변

1

는, 당신이보고 싶을 수도 같은 소리 오라클 스케줄러

개요 : http://docs.oracle.com/cd/B28359_01/server.111/b28310/schedover001.htm

당신이 데이터를 내보내고 새 데이터베이스에 추가하려면 내보내기 및 가져 오기를 모두 수행 할 수있는 Oracle DataPump를 안전하게 사용할 수 있습니다.

데이터 펌프 내보내기 : 가져 오기가 상기 http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm

그래서 내기가 다음 데이터베이스 번호 2에서 내보내기 파일을 생성하는 데이터 펌프를 사용하고, 쉘 스크립트를 만들 수 있습니다 다시 데이터 펌프를 사용하여 데이터베이스 번호 1로 파일 스크립트가 있으면 밤이나 트래픽이 적은 시간에 스크립트를 실행하도록 예약 할 수 있습니다.

감사합니다.

3

글쎄, 데이터베이스 링크를 사용하면 상황에 가장 적합 할 것 같습니다. 데이터베이스에서 테이블을 읽으려면 읽기 특권이 있어야합니다. 아마도 DBA에게 특정 테이블에 대한 읽기 권한 만 가진 계정 (사용자)을 만들도록 요청할 수 있습니다. 그런 다음 새 사용자와 연결하는 데이터베이스 링크를 사용할 수 있습니다. 연결하는 사용자에게 쓰기 권한이 없으므로 테이블에서 데이터를 업데이트하거나 삭제할 수 없습니다. 이것은 보안 문제를 해결할 수 있습니다.

exp/imp와 sqlldr은 서로 다른 도구입니다. 그들은 함께 일하지 않습니다. 내보내기 파일에서만 데이터를 가져올 수 있습니다. sqlldr을 사용하여 내보내기 파일을로드 할 수 없습니다. 당신이 정기적으로이를 실행하려는 경우

+0

+1 특정 dblink acct 및 privs를 만드는 것은 제가 한 것처럼 보입니다. 데이터를 밀어 넣을 지 또는 가져올 지 여부는 또 하나의 질문입니다. – tbone

+0

데이터베이스의 _one_에만 DB 링크를 만들 수도 있습니다. 따라서 인터넷/클라이언트가 향한 경우 다른 데이터베이스가 존재한다는 것을 알 필요가 없습니다. – Ben

관련 문제