-
Oracle 11g DataGuard 구성
Oracle Database 11g Enterprise Edition 릴리스 11.1.0.6.0 - 64비트 프로덕션
Red Hat Enterprise Linux Server 릴리스 5.3(Tikanga)
1. 테스트 환경 준비
1. 기본 데이터베이스와 대기 데이터베이스는 동일한 Oracle 버전을 가지며 Linux 등 동일한 플랫폼에서 실행되지만 서버 하드웨어는 다를 수 있습니다.
2. 기본 데이터베이스는 아카이브 모드로 실행되어야 하며, 사용자가 노로깅 및 기타 방법으로 redo를 작성하여 해당 작업이 대기 데이터베이스로 전송되지 못하게 되는 것을 방지하기 위해 기본 데이터베이스에서 FORCE LOGGING을 반드시 열어야 합니다.
3. 기본 및 대기 데이터베이스는 모두 단일 인스턴스 또는 RAC 아키텍처에 적용될 수 있으며 동일한 데이터 가드 구성으로 논리적 대기 및 물리적 대기를 혼합할 수 있습니다.
4. 데이터베이스는 동일한 스토리지 아키텍처를 사용하는 것이 좋습니다. 예를 들어 ASM/OMF를 스토리지로 사용하는 경우 기본 또는 대기에 관계없이 ASM/OMF를 사용해야 합니다.
5. 대기 라이브러리의 환경은 기본 라이브러리의 환경과 동일합니다.
2. 메인 라이브러리 조정
1. 메인 데이터베이스를 강제 로그 모드로 변경
데이터베이스 강제 로깅을 변경합니다.
2. 비밀번호를 생성하세요
orapwd 파일=$ORACLE_HOME/dbs/orapwtest 비밀번호=테스트 항목=3
3. 메인 라이브러리의 초기화 매개변수 수정
db_unique_name ='test01'
db_name은 데이터베이스의 이름을 지정하고, db_unique_name은 db_name의 고유 ID인 데이터베이스(기본 데이터베이스 및 대기 데이터베이스)의 다른 이름을 지정합니다. 실제로 동일한 db_name을 가진 데이터베이스를 구분하여 적용 및 관리를 용이하게 하기 위함이다. 10g 이후의 파라미터입니다.
log_archive_config='DG_CONFIG=(테스트01,테스트02)'
test01, test02는 .db_unique_name입니다.
log_archive_dest_1='위치=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
log_archive_dest_state_1 결정
log_archive_dest_state_1= 활성화 #기본값은 활성화입니다.
log_archive_dest_state_2= 활성화
/*호스트를 스탠바이 데이터베이스로 전환하는데 사용되는 부분은 다음과 같습니다*/
fal_server=test_db_02
fal_client=test_db_01
Standby_file_management=자동
#기본 및 보조 데이터베이스 파일이나 경로가 다른 경우
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
논스톱 라이브러리의 명령을 사용하여 매개변수를 수정할 수 있도록 매개변수 파일은 spfile을 사용하는 것이 좋습니다.
4. 데이터베이스가 아카이브 로그 모드에서 실행되고 있는지 확인하십시오.
SQL> 아카이브 로그 목록
데이터베이스 로그 모드 아카이브 없음 모드
자동 보관 비활성화됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 시퀀스 2
현재 로그 시퀀스 4
데이터베이스를 archivelog 모드로 조정
SQL> 즉시 종료
SQL> 시작 마운트
SQL> 데이터베이스 아카이브 로그 변경;
SQL> 데이터베이스 열기 변경;
5. 메인 데이터베이스에 대기 로그 생성(전환용)
데이터베이스 복구 관리 대기 데이터베이스 변경 취소;#실행되지 않음
SQL>ALTER DATABASE 대기 로그 파일 그룹 4 크기 50M 추가;
SQL>ALTER DATABASE 대기 로그 파일 그룹 5 크기 50M 추가;
SQL>ALTER DATABASE 대기 로그 파일 그룹 6 크기 50M 추가;
mkdir -p /u01/app/oracle/standby/test
SQL> 데이터베이스 추가 대기 로그 파일 그룹 4('/u01/app/oracle/standby/test/stdby_redo04.log') 크기 50M 추가;
SQL> 데이터베이스 추가 대기 로그 파일 그룹 5('/u01/app/oracle/standby/test/stdby_redo05.log') 크기 50M 추가;
SQL> 데이터베이스 추가 대기 로그 파일 그룹 6('/u01/app/oracle/standby/test/stdby_redo06.log') 크기 50M 추가;
SQL>데이터베이스 복구 관리 대기 데이터베이스 세션 연결 끊기 변경;#실행되지 않음
3. 대기 데이터베이스 생성
1. 대기 데이터베이스에 pwdfile 생성
orapwd 파일=$ORACLE_HOME/dbs/orapwtest 비밀번호=테스트 항목=3
비밀번호는 기본 데이터베이스와 동일해야 합니다.
2. 기본 데이터베이스와 다른 대기 데이터베이스 초기화 매개변수를 다음과 같이 수정합니다.
db_unique_name=test02
log_archive_dest_1='위치=/u01/app/oracle/arch/test valid_for=(all_logfiles,all_roles) db_unique_name=test02'
log_archive_dest_2='service=test_db_01 ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test01'
fal_client='test_db_02'
fal_server='test_db_01'
db_file_name_convert='/u01/app/oracle/oradata/TEST01/datafile','/u01/app/oracle/oradata/TEST02/datafile'
log_file_name_convert='/u01/app/oracle/oradata/TEST01/onlinelog','/u01/app/oracle/oradata/TEST02/onlinelog', '/u01/app/oracle/flash_recovery_area/TEST01/onlinelog','/u01 /app/oracle/flash_recovery_area/TEST01/onlinelog'
수정 후 다음 문을 사용하여 확인하세요.
SQL> V$DATAGUARD_CONFIG에서 *를 선택합니다.
DB_UNIQUE_NAME
------------------------------------- ---------------------------
테스트01
테스트02
4. 해당 디렉터리, 덤프 파일 디렉터리, 데이터 파일 디렉터리 및 아카이브 디렉터리를 생성합니다.
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/arch/test
5. 대기 데이터베이스의 Listener.ora 및 tnsnames.ora 파일을 구성하여 기본 데이터베이스에서 수신 대기를 다시 시작하고 tnsping을 통과할 수 있는지 확인합니다.
6. 대기 데이터베이스를 마운트 해제 상태로 시작합니다.
SQL> 시작 마운트 없음
7. RMAN의 복제 기능을 사용하여 대기 데이터베이스를 생성합니다. 11g는 백업을 만들지 않고 이를 대기 데이터베이스에 직접 복사할 수 있습니다.
RMAN> RMAN 보조 /
대상 sys/test@test_db_01 연결
대기 dorecover nofilenamecheck에 대한 중복 대상 데이터베이스;
대기 데이터베이스 상태 확인
SQL> v$database에서 Database_role,protection_mode,protection_level을 선택합니다.
SQL> 시퀀스# 선택, v$archived_log 순서별 시퀀스#에서 적용;
8. Redo 애플리케이션 메인 라이브러리를 시작합니다.
SQL> 시스템 아카이브 로그 현재 변경;
대기 데이터베이스, 11g는 데이터베이스 애플리케이션 로그를 읽기 전용으로 열 수 있습니다.
SQL> 데이터베이스 열기 읽기 전용 변경;
SQL> 데이터베이스 복구 관리 대기 데이터베이스 세션 연결 끊기 변경;
세션 애플리케이션 로그에서 현재 로그 파일 연결을 끊고 데이터베이스 복구 관리형 대기 데이터베이스를 사용할 수도 있습니다.
현재 사용 중인 로그 파일이 없으면 대기 아카이브 로그를 적용한다.
현재 로그 파일을 사용하는 것은 로그가 대기 redo 로그로 전송될 때 적용됩니다. 실시간이며 대기 redo 로그가 있어야 합니다.
4. 대기 서버의 관리 모드와 읽기 전용 모드
1. 관리 모드로 부팅
SQL>즉시 종료;
SQL>시작 없음마운트;
SQL> 데이터베이스 마운트 대기 데이터베이스 변경;
SQL> 데이터베이스 복구 관리 대기 데이터베이스 세션 연결 끊기 변경;
2. 읽기 전용 모드로 부팅
SQL>즉시 종료;
SQL>시작 없음마운트;
SQL> 데이터베이스 마운트 대기 데이터베이스 변경;
SQL>데이터베이스 열기 읽기 전용 변경;
(3) 관리 복구 모드에서 읽기 전용 모드로 진입한 경우
SQL> 관리형 대기 데이터베이스 복구 취소;
SQL> 데이터베이스 열기 읽기 전용 변경;
이때 데이터베이스에 임시 데이터 파일을 추가할 수 있습니다. (핫 백업 중에는 백업되지 않습니다.)
좋다
테이블 공간 임시 변경 임시 파일 추가 '/u02/oradata/test/temp01.dbf' 크기 100M;
5. 읽기 전용 모드에서 관리형 복구 모드로
SQL> 세션에서 관리 대기 데이터베이스 연결 끊김을 복구합니다.
5. 활성 데이터베이스와 대기 데이터베이스 간 전환
lsnrctl 중지
SQL> 세션 종료와 함께 물리적 대기로 전환하도록 데이터베이스 커밋을 변경합니다.
SQL> 즉시 종료;
SQL> 시작 마운트;
SQL> 데이터베이스 복구 관리 대기 데이터베이스 연결 끊기 변경;
lsnrctl 시작
지원
SQL> 기본 데이터베이스로 전환하기 위해 데이터베이스 커밋을 변경합니다.
SQL> 즉시 종료;
SQL> 시작
6. 아래 첨부파일은 구성 파일의 내용입니다.
리스너.ora
청취자 =
(설명=
(주소 = (프로토콜 = TCP)(호스트 = oracle6)(포트 = 1521))
)
tnsnames.ora
TEST_DB_02 =
(설명=
(ADDRESS_LIST =
(주소 = (프로토콜 = TCP)(호스트 = 192.168.202.5)(포트 = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test02)
)
)
TEST_DB_01 =
(설명=
(ADDRESS_LIST =
(주소 = (프로토콜 = TCP)(호스트 = 192.168.202.6)(포트 = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test01)
)
)
p파일
test.__db_cache_size=1526726656
test.__java_pool_size=16777216
test.__large_pool_size=16777216
test.__oracle_base='/u01/app/oracle'#ORACLE_BASE 환경에서 설정됨
test.__pga_aggregate_target=1342177280
test.__sga_target=2013265920
test.__shared_io_pool_size=0
test.__shared_pool_size=436207616
test.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.audit_trail='db'
*.호환='11.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl','/u01/app/oracle/oradata/test/control02.ctl','/u01/app/oracle/oradata/test/ control03.ctl'
*.db_block_size=8192
*.db_domain='greatsky.com'
*.db_name='테스트'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='test01'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.fal_client='TEST_DB_01'
*.fal_server='TEST_DB_02'
*.log_archive_config='dg_config=(test01,test02)'
*.log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
*.log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
*.memory_target=3347054592
*.open_cursors=300
*.프로세스=150
*.remote_login_passwordfile='독점'
*.service_names='test.greatsky.com','test01.greatsky.com'
*.standby_file_management='자동'
*.undo_tablespace='UNDOTBS1'