programing

오라클에서 동일한 데이터베이스에 전체 스키마의 복사본을 만드는 방법

testmans 2023. 8. 28. 20:53
반응형

오라클에서 동일한 데이터베이스에 전체 스키마의 복사본을 만드는 방법

동일한 데이터베이스에 스키마의 전체 복사본을 작성합니다.그것을 하기 위한 가장 좋은 기술은 무엇입니까?

저는 몇 가지 생각이 있습니다.

  1. 데이터 펌프 Over DB 링크
  2. 네트워크 링크의 IMPDP
  3. EXPDP 다음으로 IMPDP입니다.

각 기법의 장점 및/또는 단점은 무엇입니까?

고급 네트워크 링크나 expdp/impdp 명령만 있으면 됩니다.먼저 원하는 스키마를 내보냅니다.

expdp fromUser/fromPword schemas=sourceSchema directory=DUMPDIR dumpfile=dump.dmp logfile=explog.txt

팁: 해당 사용자가 DUMPDIR 또는 사용자가 DUMPDIR이라고 부르는 것에 쓸 수 있는지 확인합니다.

그런 다음 를 사용하여 스키마를 다시 가져옵니다.remap_schema매개변수:

impdp toUser/toPword directory=DUMPDIR dumpfile=dump.dmp logfile=implog.txt remap_schema=fromUser:toUser

network_link 매개 변수를 사용하려면(어떤 이유로든 덤프 파일을 만들지 않음) 이것이나 이것을 읽는 이 좋습니다.
당신의 질문에 대한 좋은 정보는 여기서도 찾을 수 있습니다.

사용해 보십시오.

스키마를 동일한 데이터베이스로 복사

제가 테스트를 해봤는데 효과가 있었습니다. 하지만 당신은 댓글에 언급된 것처럼 공개 링크를 만들어야 합니다.

테이블스페이스를 재매핑하는 .par 파일을 생성하면 다시 사용할 수 있습니다.물론 검색으로 대체할 수 있습니다.

그리고 변환을 .par 파일에 넣는 것을 잊지 마세요.

TRANSFORM=oid:n

그렇지 않으면 오류가 발생할 수 있습니다.

스키마에서 스키마의 내용을 복사하기 위해 수행한 단계user_a스키마로user_bOracle에서: DBMS는 Oracle Linux Server 컨테이너 안에 있습니다.

스키마가 다음과 같이 정의된다고 가정합니다.

create user user_a identified by user_a_pass default tablespace tablespace_a;
grant
    create materialized view,
    create procedure,
    create sequence,
    create session,
    create table,
    create type,
    create trigger,
    create view to user_a;

create user user_b identified by user_b_pass default tablespace tablespace_a;
grant
    create materialized view,
    create procedure,
    create sequence,
    create session,
    create table,
    create type,
    create trigger,
    create view to user_b;

여기서 중요한 점은 스키마가 동일한 테이블스페이스에 액세스하고 세션을 만들 수 있다는 것입니다.

복사하려면 데이터 스키마의 디렉터리가 필요합니다. 부여된 디렉터리 확인:

select tp.grantee, tp.table_name from all_tab_privs tp where tp.privilege = 'WRITE' and tp.type = 'DIRECTORY';

디렉토리의 경로가 실제로 존재하고 그룹이 있는지 확인합니다.dba그것에 접근할 수 있습니다.

디렉토리가 스키마 사용자에게 할당되지 않은 경우 다음 작업을 수행합니다.

create or replace directory user_dir as '/opt/oracle/product/19c/dbhome_1/user_dir_name';
grant read, write on directory user_dir to user_a;
grant read, write on directory user_dir to user_b;

내보내기 실행:

expdp user_a/user_a_pass@host/database schemas=user_a directory=user_dir dumpfile=user_a.dmp logfile=schema_exp.log

가져오기 실행:

impdp user_b/user_b_pass@host/database directory=user_dir dumpfile=user_a.dmp logfile=schema_imp.log remap_schema=user_a:user_b 

언급URL : https://stackoverflow.com/questions/26785645/how-to-create-copy-of-full-schema-on-same-database-in-oracle

반응형