Oracle 은 rac 에 단일 인 스 턴 스 dg 를 만 들 고 주 된 전환 기능 을 만 듭 니 다.

개술
본 고 는 rac 에 단일 노드 의 dg 를 구축 하 는 방법 과 이 를 어떻게 역할 전환 하 는 지 소개 할 것 이다.미리 갖 춘 지식(rac 구축,단일 인 스 턴 스-단일 인 스 턴 스 dg 구축)
2.실험 환경 소개
주 라 이브 러 리 rac(rac 가 설치 되 어 있 고 데이터베이스 orcl 이 있 습 니 다)

rac1:192.168.56.11,sid1:orcl1,version:11.2.0.4
rac2:192.168.56.12,sid2:orcl2,version:11.2.0.4
라 이브 러 리(단일 인 스 턴 스 데이터베이스 소프트웨어 가 설치 되 어 있 으 며 데이터베이스 인 스 턴 스 가 없습니다)
oradg:192.168.56.102,sid:orcldg,version:11.2.0.4

건설 dg
**아래 의 모든 메 인 라 이브 러 리 작업 은 노드 1 에서 합 니 다.노드 2 에서 해 야 한다 면 표시 하 겠 습 니 다.
1.주 라 이브 러 리 에서 압축 파일 모드 를 열 고 로 그 를 강제로 쓰기
먼저 데이터베이스 의 압축 파일 상태 와 강제 쓰기 로 그 를 열 었 는 지 확인 합 니 다.아래 그림 에서 현재 데이터 베 이 스 는 압축 파일 을 열지 않 았 고 강제 쓰기 로 그 를 열지 않 았 음 을 알 수 있 습 니 다.

SQL> select log_mode, force_logging from v$database;
데이터 베 이 스 는 mount 상태 에서 압축 파일 을 엽 니 다.

SQL> alter system set log_archive_dest_1='location=+data' sid='*' scope=spfile;
SQL> shutdown immediate; #       
SQL> startup mount; #      1
SQL> alter database archivelog;
SQL> alter database open;
로그 작성 을 강제 합 니 다.데이터 베 이 스 는 open 상태 에서 수정 할 수 있 습 니 다.

SQL> alter database force logging;
SQL> startup; #    1open   ,   2      
데이터베이스 의 압축 파일 상태 와 강제 쓰기 로 그 를 열 었 는 지 확인 합 니 다.

SQL> select log_mode, force_logging from v$database;
2.메 인 라 이브 러 리 에서 dataguard 스위치 열기

SQL> alter system set log_archive_config='dg_config=(orcl,orcldg)' sid='*'; # orcl    db_unique_name,orcldg    db_unique_name
3.주 라 이브 러 리 원 격 압축 파일 설정

SQL> alter system set log_archive_dest_3='service=orcldg valid_for=(online_logfiles,primary_role) db_unique_name=orcldg' sid='*';
4.주 라 이브 러 리 의 암호 파일 을 라 이브 러 리 에서 전송

[oracle@rac1 ~]$ scp $ORACLE_HOME/dbs/orapw$ORACLE_SID 192.168.56.102:$ORACLE_HOME/dbs/orapworcldg
5.라 이브 러 리 에서 매개 변수 파일 준비
이 매개 변수 파일 은 단일 인 스 턴 스 를 위 한 인 스 턴 스 dg 와 다 를 것 이 없 기 때문에 구체 적 인 소 개 를 하지 않 습 니 다.

[root@oradg ~]# vi $ORACLE_HOME/dbs/initorcldg.ora

*.audit_file_dest='/u01/app/oracle/admin/orcldg/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcldg/controlfile/control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_config='dg_config=(orcl,orcldg)'
*.log_archive_dest_2='location=/u01/app/oracle/oradata/orcldg/archstdlog/ valid_for=(standby_logfiles,standby_role) db_unique_name=orcldg'
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
*.undo_tablespace='UNDOTBS1'
standby_file_management=auto #        manual,      auto,             (   ,    ),           
db_unique_name='orcldg'
db_file_name_convert='+DATA/orcl/datafile/','/u01/app/oracle/oradata/orcldg/datafile/','+DATA/orcl/tempfile/','/u01/app/oracle/oradata/orcldg/tempfile/'
log_file_name_convert='+DATA/orcl/onlinelog/','/u01/app/oracle/oradata/orcldg/onlinelog/'
6.라 이브 러 리 에서 관련 디 렉 터 리 준비

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/admin/orcldg/adump
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/controlfile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/archstdlog
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/datafile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/tempfile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/onlinelog
7.라 이브 러 리 인 스 턴 스 시작

[oracle@oradg ~]$ export ORACLE_SID=orcldg
[oracle@oradg ~]$ sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup nomount
8.라 이브 러 리 에서 감청 프로그램 설정 및 시작
주 라 이브 러 리 데 이 터 를 duplicate 방식 으로 복사 하기 때문에 라 이브 러 리 에서 정적 등록 형식 으로 설정 해 야 합 니 다.

[oracle@oradg ~]$ vi $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER =
 (SID_LIST =
 (SID_DESC =
  (GLOBAL_DBNAME = orcldg)
  (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
  (SID_NAME = orcldg)
 )
 )

LISTENER =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
 )

[oracle@oradg ~]$ lsnrctl start
9.메 인 라 이브 러 리 설정 서비스 이름

#         
[oracle@rac1 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

orcldg =
 (DESCRIPTION =
 (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
 )
 (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcldg)
 )
 )
 
[oracle@rac2 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
내용
10.메 인 라 이브 러 리 는 네트워크 연결 을 사용 하여 라 이브 러 리 에서 연결 합 니 다(연결 성 테스트)

#        sys   123456,       
[oracle@rac1 ~]$ sqlplus sys/123456@orcldg as sysdba
11.메 인 라 이브 러 리 에서 rman 복사 라 이브 러 리 시작
rman 주 라 이브 러 리 와 라 이브 러 리 연결

[oracle@rac1 ~]$ rman target / auxiliary sys/123456@orcldg
RMAN> duplicate target database for standby from active database;
12.라 이브 러 리 에 standby log 추가
추 가 된 로그 크기 는 주 라 이브 러 리 의 onlinelog 와 일치 합 니 다.두 그룹 이상(주 라 이브 러 리 의 onlinelog 정 보 는 v$log 를 봅 니 다)
group 의 번 호 는 현재 onlinelog 와 중복 되 지 않 으 면 됩 니 다.

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/standbylog/
  
SQL> alter database add standby logfile group 21 '/u01/app/oracle/oradata/orcldg/standbylog/std01.log' size 50M;
SQL> alter database add standby logfile group 22 '/u01/app/oracle/oradata/orcldg/standbylog/std02.log' size 50M;
SQL> alter database add standby logfile group 23 '/u01/app/oracle/oradata/orcldg/standbylog/std03.log' size 50M;
SQL> alter database add standby logfile group 24 '/u01/app/oracle/oradata/orcldg/standbylog/std04.log' size 50M;
SQL> alter database add standby logfile group 25 '/u01/app/oracle/oradata/orcldg/standbylog/std05.log' size 50M;
SQL> alter database add standby logfile group 26 '/u01/app/oracle/oradata/orcldg/standbylog/std06.log' size 50M;
13.라 이브 러 리 에서 응용 로그 열기

SQL> alter database recover managed standby database disconnect from session;
14.메 인 라 이브 러 리 압축 파일 전환

SQL> alter system switch logfile;
15.창고 에서 열기
라 이브 러 리 에서 압축 파일 을 적용 한 후 압축 파일 로 그 를 닫 고 라 이브 러 리 에서 엽 니 다.

SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;
16.검증 동기 화
주 라 이브 러 리 수정

SQL> update scott.emp set sal=2000;
SQL> commit;
라 이브 러 리 에서 조회 하 다

SQL> select * from scott.emp;
이로써 rac 에 게 하나의 인 스 턴 스 를 구축 하 는 dg 는 이미 완성 되 었 고 하나의 인 스 턴 스 를 구축 하 는 dg 와 다 를 것 이 없다.다음은 어떻게 전환 하 는 지 소개 합 니 다.
4.주종 전환 준비
17.메 인 라 이브 러 리 에 standby logfile 압축 파일 경 로 를 추가 합 니 다.
grid 계 정 을 사용 하여 압축 파일 경 로 를 만 듭 니 다.

[grid@rac1 ~]$ asmcmd
ASMCMD> lsdg #        
ASMCMD> cd data
ASMCMD> cd orcl
ASMCMD> mkdir ARCHSTDLOG
sys 데이터베이스 계 정 을 사용 하여 데이터베이스 파 라 메 터 를 수정 합 니 다.

SQL> alter system set log_archive_dest_2='location=+DATA/ORCL/ARCHSTDLOG/ valid_for=(standby_logfiles,standby_role) db_unique_name=orcl' sid='*';
18.메 인 라 이브 러 리 에 standby logfile 추가
추 가 된 로그 의 크기 는 주 라 이브 러 리 의 onlinelog 와 일치 합 니 다.두 그룹 이상(주 라 이브 러 리 의 onlinelog 정 보 는 v$log 를 봅 니 다)

SQL> alter database add standby logfile thread 1 group 21 ('+data') size 50M;
SQL> alter database add standby logfile thread 1 group 22 ('+data') size 50M;
SQL> alter database add standby logfile thread 1 group 23 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 24 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 25 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 26 ('+data') size 50M;
19.메 인 라 이브 러 리 수정 매개 변수 파일

SQL> alter system set standby_file_management=auto sid='*';
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/orcldg/datafile/','+DATA/orcl/datafile/','/u01/app/oracle/oradata/orcldg/tempfile/','+DATA/orcl/tempfile/' sid='*' scope=spfile;
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/orcldg/onlinelog/','+DATA/orcl/onlinelog/' sid='*' scope=spfile;
여기까지,주 라 이브 러 리 를 준비 라 이브 러 리 로 전환 하 는 준비 작업 이 완료 되 었 습 니 다!
20.라 이브 러 리 에서 tnsnames.ora 설정
이 설정 tnsnames.ora 의 목적 은 라 이브 러 리 에서 새 메 인 라 이브 러 리 로 바 뀐 후에 메 인 라 이브 러 리 가 라 이브 러 리 에서 새 메 인 라 이브 러 리 로 바 뀌 고 새 메 인 라 이브 러 리 는 라 이브 러 리 에서 압축 파일 로 그 를 보 내야 하기 때문에 여기 tnsnames 는 라 이브 러 리 에서 새 라 이브 러 리 를 가리 키 고 dg 라 이브 러 리 응용 압축 파일 은 한 노드 에 만 있 기 때문에 toorcl 은 노드 1 만 가리 키 는 것 입 니 다.

[oracle@oradg ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

toorcl =
 (DESCRIPTION =
 (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
 )
 (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
 )
 )
21.라 이브 러 리 에서 onlinelog 로 압축 파일 경 로 를 설정 합 니 다.

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/archivelog

SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/orcldg/archivelog/ valid_for=(online_logfiles,primary_role) db_unique_name=orcldg';
22.라 이브 러 리 에서 원 격 압축 파일 파 라 메 터 를 설정 합 니 다.

SQL> alter system set log_archive_dest_3='service=toorcl valid_for=(online_logfiles,primary_role) db_unique_name=orcl';
여기까지,라 이브 러 리 에서 주 라 이브 러 리 로 전환 할 준비 가 완료 되 었 습 니 다!
4.주종 전환

23.메 인 라 이브 러 리 의 캐릭터 전환 상태 보기

SQL> select database_role,switchover_status from v$database;
24.노드 1 에서 주 전환
클 러 스 터 가 캐릭터 변환 을 할 때 하나의 인 스 턴 스 만 열 린 상태 이 고 나머지 는 닫 아야 하기 때문에 노드 2 의 인 스 턴 스 를 닫 습 니 다.
SQL> shutdown immediate; # 노드 2 에서 만 해 요.
노드 1 에서 다음 명령 을 실행 하고 주 라 이브 러 리 를 라 이브 러 리 에서 인 스 턴 스 로 전환 하 며 인 스 턴 스 를 닫 습 니 다.

SQL> alter database commit to switchover to physical standby with session shutdown;
25.노드 3 에서 주 를 바꾼다.

SQL> select database_role,switchover_status from v$database;
만약"NOT ALLOWED"가 압축 파일 이 아직 응용 프로그램 이 완성 되 지 않 았 음 을 나타 내 면 한동안 기다 릴 수 있 습 니 다.
로그 가 모두 적용 되면 캐릭터 전환 상 태 를 확인 합 니 다.

SQL> select database_role,switchover_status from v$database;
캐릭터 전환 상태 가 TO PRIMARY 라면 캐릭터 전환 이 가능 하 다 는 뜻 이다.
주 를 바 꾸 는 명령 을 실행 하면 명령 이 실 행 된 후 데이터베이스 상태 가 mount 로 변 합 니 다.

SQL> alter database commit to switchover to primary;
SQL> alter database open;
26.새 라 이브 러 리 열기
노드 1 과 노드 2 에
SQL> startup
노드 1 에 압축 파일 적용

SQL> alter database recover managed standby database using current logfile disconnect from session;
노드 3 에서 압축 파일 전환

SQL> alter system switch logfile;
27.검증 동기 화
주 라 이브 러 리 수정

SQL> update scott.emp set sal=3000;
SQL> commit;
라 이브 러 리 에서 조회 하 다

SQL> select * from scott.emp;
28.오류 처리
로그 가 준비 라 이브 러 리 에 전송 되 지 않 는 것 을 발견 하면 주 라 이브 러 리 에서 다음 명령 을 통 해 오류 원인 을 볼 수 있 습 니 다.

SQL> select dest_id,dest_name,log_sequence,status,error from v$archive_dest;
위의 오 류 를 보고 하면 압축 파일 스위치 를 다시 켜 면 됩 니 다.

SQL> alter system set log_archive_dest_state_3='defer' sid='*';
SQL> alter system set log_archive_dest_state_3='enable' sid='*';
총화
1.dg 의 전환 은 모든 애플 리 케 이 션 을 중지 하고 데이터베이스 의 모든 연결 을 kill 로 제거 하 며 계 정 을 모두 잠 그 고 전환 이 완료 되면 잠 금 을 풀 어야 합 니 다.
2.rac 가 전환 할 때 살 아 있 는 인 스 턴 스 만 남 겨 두 고 다른 것 은 모두 닫 습 니 다.
3.명령 을 실행 할 때마다 되 돌아 오 는 결 과 를 주의 하고 alert.log 를 실시 간 으로 봅 니 다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Oracle 이 rac 에 게 단일 인 스 턴 스 dg 를 만 들 고 전환 기능 을 주관 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기