DG - 논리 대기 생 성
논리 적 standby 를 만 들 기 전에 primary 데이터베이스 상 태 를 먼저 확인 하고 primary 데이터 베 이 스 는 논리 적 standby 를 만 들 기 위해 모든 준 비 를 마 쳤 는 지 확인 합 니 다. 예 를 들 어 압축 파일 을 시 작 했 는 지, forced logging 을 사 용 했 는 지 등 입 니 다. redo 응용 은 실제 물리 적 standby 단 에서 recover 를 하고 sql 응용 은 redo 파일 을 분석 합 니 다.논리 적 standby 에서 sql 문 구 를 실행 하기 때문에 주의해 야 합 니 다.
모든 데이터 형식 이 논리 적 standby 에 의 해 지원 되 는 것 은 아 닙 니 다.
SQL> SELECT * FROM DBA_LOGSTDBY_UNSUPPORTED;
알림: DBA 에 대하 여LOGSTDBY_UNSUPPORTED 이 보 기 는 지원 되 지 않 는 데이터 형식 을 포함 하 는 표 의 열 이름과 이 열의 데이터 형식 을 보 여 줍 니 다.이 보기 의 ATTRIBUTES 열 을 주의 하 십시오. 열 값 은 sql 응용 프로그램 이 지원 하지 않 는 이 유 를 표시 합 니 다.
어떻게 primary 라 이브 러 리 의 각 표 의 줄 이 유일한 표지 가 될 수 있 는 지 확보 합 니까?
Oracle 은 메 인 키, 유일한 색인 / 제약 보충 로그 (supplemental logging) 를 통 해 업데이트 할 논리 standby 라 이브 러 리 의 줄 을 확인 합 니 다.데이터베이스 에 추가 로그 (supplemental logging) 를 사용 하면 모든 update 문 구 는 redo 를 쓸 때 열 값 의 유일한 정 보 를 추가 합 니 다. 예 를 들 어 a). 표 가 메 인 키 를 정의 하면 메 인 키 값 은 업 데 이 트 된 열 과 함께 update 문장의 일부분 으로 업데이트 되 어야 하 는 열 을 구별 할 수 있 습 니 다.b). 홈 키 가 없 으 면 비어 있 지 않 은 유일한 색인 / 제약 은 업데이트 열 을 update 문장의 일부분 으로 하여 실행 할 때 어떤 열 이 업데이트 되 어야 하 는 지 구분 할 수 있 습 니 다. 이 표 에 여러 개의 유일한 색인 / 제약 이 있 으 면 Oacle 은 자동 으로 가장 짧 은 것 을 선택 합 니 다.c). 표 에 메 인 키 가 없 으 면 유일한 색인 / 제약 이 정의 되 지 않 습 니 다. 모든 길 이 를 정할 수 있 는 열 은 업 데 이 트 된 열 과 업데이트 되 는 열 을 업데이트 문장의 일부분 으로 합 니 다.더 명확 하면 길 이 를 정할 수 있 는 열 은 long, lob, long raw, object type, collection 유형 을 제외 한 열 을 말한다.
주 데이터베이스 에서 추가 로그 가 활성화 되 었 는 지 확인 하 십시오. v $database 를 조회 할 수 있 습 니 다. 다음 과 같 습 니 다.
SQL> select supplemental_log_data_pk,supplemental_log_data_ui from v$database;
따라서 Oracle 은 sql 응용 이 redo 데 이 터 를 효과적으로 응용 할 수 있 도록 논리 standby 데이터 베 이 스 를 업데이트 할 수 있 도록 메 인 키 나 비어 있 지 않 은 유일한 색인 / 제약 을 만 드 는 것 을 권장 합 니 다.
다음 문 구 를 실행 하여 sql 응용 프로그램 이 유일 하 게 표 열 을 식별 할 수 있 는 지 확인 하고 지원 되 지 않 는 표를 찾 습 니 다.
SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE 2> WHERE (OWNER, TABLE_NAME) NOT IN
3> (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED) 4> AND BAD_COLLUMN = 'Y';
primary - key RELY 제약 조건:
표 의 줄 이 유일 하 다 는 것 을 확인 할 수 있다 면 이 표 에 rely 메 인 키 를 만 들 수 있 습 니 다. RELY 제약 은 시스템 유지보수 메 인 키 의 비용 을 발생 시 키 지 않 습 니 다. 메 인 은 표 에 rely 제약 을 만 들 었 습 니 다. 시스템 은 이 표 의 줄 이 유일 하 다 고 가정 하여 sql 응용 시의 성능 을 제공 할 수 있 습 니 다.그러나 rely 의 메 인 키 제약 은 가정 만 유일 하기 때문에 실제 적 으로 유일한 것 이 아니라면 잘못된 업 데 이 트 를 초래 할 수 있 습 니 다.
rely 의 메 인 키 제약 조건 을 만 드 는 것 은 매우 간단 합 니 다. 표준 생 성 문 구 를 만 든 후에 RELY DISABLE 을 추가 하면 됩 니 다.
SQL> alter table jss.b add primary key (id) rely disable;
2. 창설 절차
1. 물리 적 대기 모드 만 들 기
논리 적 standby 로 전환 하기 로 결정 하면 이 물리 적 standby 의 redo 응용 을 중지 해 야 합 니 다. LogMiner 사전 을 포함 한 redo 데 이 터 를 미리 사용 하지 않도록 논리 적 standby 로 전환 한 후 sql 응용 시 logMiner 사전 데이터 가 부족 하여 논리 적 standby 와 primary 의 정상 적 인 동기 화 에 영향 을 주지 않도록 해 야 합 니 다.
2. primary 데이터베이스 설정
물리 적 standby 캐릭터 전환 의 매개 변수 와 다 름 없 지만 primary 데이터베이스 가 논리 적 standby 캐릭터 로 정상적으로 전환 되 기 를 원한 다 면 해당 하 는 log 를 설정 해 야 합 니 다.archive_dest_N, 그리고 validfor 속성 을 변경 해 야 합 니 다: (STANDBY LOGFILES, STANDBY ROLE).그리고 LogMiner 사전 정보 생 성:
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;
이 과정 은 기 록 된 메타 데이터 정 보 를 redo log 에 만 생 성 하 는 데 사 용 됩 니 다. 이렇게 변경 해 야 논리 적 standby 로 전송 되 고 논리 적 standby 에 의 해 SQL 응용 을 할 수 있 습 니 다.
알림: 이 과정 은 데이터 사전 의 일치 성 을 플래시 조회 방식 으로 가 져 오기 때문에 Oacle 초기 화 매개 변수 UNDORETENTION 값 을 충분히 설정 해 야 합 니 다.
3. 물리 적 standby 를 논리 적 standby 로 변환
SQL> alter database recover to logical standby NEW_DBNAME;
메모: 논리 standby 는 새로운 데이터베이스 입 니 다. 현재 spfile 을 사용 하면 데이터 베 이 스 는 관련 정 보 를 자동 으로 수정 합 니 다. pfile 을 사용 하면 다음 에 shutdown 을 실행 할 때 Oacle 은 db 를 수정 하 라 고 알려 줍 니 다.name 매개 변수의 값 을 초기 화 합 니 다.
4. 논리 standby 의 암호 파일 재 구축
5. 논리 대기 초기 화 매개 변수 조정
한편, 여기 서 우리 의 논리 적 standby 는 물리 적 standby 에서 전환 되 었 기 때문에 일부 매개 변 수 는 적합 하지 않 고 심지어 오 류 를 일 으 킬 수 있 습 니 다. 예 를 들 어 logarchive_dest_인자 설정다른 한편, 논리 적 standby 는 읽 기와 쓰기 동작 이 있 기 때문에 로 컬 online redologs 를 읽 고 아 카 이브 logs 를 만들어 야 합 니 다. 로 컬 archivelogs 경 로 는 primary 데이터 베 이 스 를 받 은 redo 데이터 로 생 성 된 archivelogs 경로 와 충돌 하지 않도록 주의해 야 합 니 다.
6. 논리 대기 모드 열기
논리 적 standby 와 primary 데이터베이스 업무 가 일치 하지 않 기 때문에 처음 열 때 resetlogs 를 지정 해 야 합 니 다.
SQL> alter database open resetlogs;
그리고 sql 명령 을 통 해 redo 데 이 터 를 적용 합 니 다:
SQL> alter database start logical standby apply immediate;
논리 standby 의 sql 응용 을 중단 하려 면:
SQL> alter database stop logical standby apply immediate
논리 standby 생 성 예제
1. 물리 적 standby 만 들 기
... 알림: standby 의 redo 응용 을 일시 정지 합 니 다.
SQL> alter database recover managed standby database cancel;
2. primary 데이터베이스 설정
LogMiner 사전 정보 생 성
SQL> execute dbms_logstdby.build;
3. 물리 적 standby 를 논리 적 standby 로 변환 합 니 다.
SQL> alter database recover to logical standby jssldg;
4. 논리 standby 의 암호 파일 재 구축
c:\xxx orapwd file=c:\oracle\database\PWDjssldg.ora password=verysafe entries=30
sys 암호 가 primary 데이터베이스 와 일치 하도록 주의 하 십시오.
5. 논리 standby 초기 화 매개 변수 조정
압축 파일 경로 가 충돌 하지 않도록 주의 하 십시오:
SQL>alter system set log_archive_dest_1='location=xxx\JSSLDG\arc\ valid_for=(online_logfiles,all_roles) db_unique_name=JSSLDG';
SQL>alter system set log_archive_dest_2='location=XXX\oradata\JSSLDG\std\ valid_for=(standby_logfiles,standby_role) db_unique_name=JSSLDG';
JSslDG 를 만 들 때 standby redologs 를 만 들 지 는 않 았 지만 논리 적 standby 의 sql 응용 프로그램 에 대해 standby redologs 는 필수 적 입 니 다. 따라서 이 standby 를 위해 standby redologs 를 만 들 것 입 니 다.
SQL>alter database add standby logfile group 4 ('XXX\oradata\JSSLDG\standbyrd01.log') size 20m;
6. 논리 적 standby 열기
SQL> alter database open resetlogs;
SQL> alter database start logical standby apply immediate;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.