오라클에서 동일한 데이터베이스에 전체 스키마의 복사본을 만드는 방법
동일한 데이터베이스에 스키마의 전체 복사본을 작성합니다.그것을 하기 위한 가장 좋은 기술은 무엇입니까?
저는 몇 가지 생각이 있습니다.
- 데이터 펌프 Over DB 링크
- 네트워크 링크의 IMPDP
- 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_b
Oracle에서: 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
'programing' 카테고리의 다른 글
어떤 CEP 제품으로 시작해야 합니까? (0) | 2023.08.28 |
---|---|
16진수를 RGBA로 변환 (0) | 2023.08.28 |
SQL: 날짜 범위별, 연도별 그룹별로 두 테이블 결합 (0) | 2023.08.28 |
iOS 13용 SF 심볼에 가중치를 설정하려면 어떻게 해야 합니까? (0) | 2023.08.28 |
스팬의 CSS 고정 너비 (0) | 2023.08.28 |