Oracle11g DG 전투 구성(Windows 버전)(5) 기본 및 대기 데이터베이스의 DG 구성

5.1 DG 메인 라이브러리 구성 (메인 라이브러리 동작)

5.1.1 배포 Oracle Data Guard

# 데이터베이스에 로그인

sqlplus / as sysdba

# 데이터베이스 보관 모드를 확인하고 Archivelog가 활성화되어 있는지 확인

select name,log_mode from v$database;

# 데이터베이스에 Oracle Data Guard가 활성화되어 있는지 확인

select * from v$option where parameter = 'Oracle Data Guard';

# 데이터베이스가 필수 로깅으로 활성화되어 있는지 확인합니다(로그 보안 및 데이터 무결성을 보장하기 위해 활성화하는 것이 좋습니다. 기본값은 False입니다)

select name,force_logging from v$database;

# 강제 로깅 활성화

alter database force logging;

# 필수 로깅을 위해 데이터베이스가 활성화되어 있는지 재확인

select name,force_logging from v$database;

 # Redo Log 파일의 크기 보기

select group#,bytes/1024/1024 as Mb from v$log;

# Redo Log 파일과 정확히 같은 크기의 Standby Redo Log 파일을 생성합니다(참고: 크기는 동일해야 함).

alter database add standby logfile group 11 'D:/Oracle/oradata/PMS/standby11.log' size 50M;
alter database add standby logfile group 12 'D:/Oracle/oradata/PMS/standby12.log' size 50M;
alter database add standby logfile group 13 'D:/Oracle/oradata/PMS/standby13.log' size 50M;
alter database add standby logfile group 14 'D:/Oracle/oradata/PMS/standby14.log' size 50M;

참고: SRL(Standby Redo Logs)은 백업의 Redo 로그로, SRL이 생성된 후 Main Database에 기록된 각 Online Redo Log는 Standby Database로 전송되고 SRL에도 기록됩니다.


SRL은 추가 Redo Log이지만 SRL 생성에는 다음과 같은 원칙이 있습니다.
1) Standby Redo Log File은 Online Redo Log File만큼 커야 합니다
.


2) Standby Redo Log Groups의 개수는 Online Redo Log Groups의 개수보다 적어도 하나 이상이어야 합니다.
쿼리 방법: SELECT GROUP#, BYTES/1024/1024 M FROM V$LOG


3) 메인 라이브러리에 Redo Log Group이 추가되면 해당 Redo Log Group도 Standby 라이브러리에 추가되어야 합니다.
SRL 생성 방법: 데이터베이스 변경 대기 로그 파일 그룹 14 'D:/Oracle/oradata/PMS/standby14.log' 크기 50M, (노드 생성)
SRL 삭제 방법: 데이터베이스 삭제 대기 로그 파일 그룹 14 변경,
SRL 보기 방법: 선택 v$standby_log에서 Mb로 group#,bytes/1024/1024;


4) 아카이브 위치 원칙 :
    a) state_archive_dest가 구성된 경우 아카이브는 디렉토리 위치를 사용하는 데 사용됩니다.
    B) log_archive_dest_n 매개변수가 Valid_FOR = (Standby_logfile,*) 옵션을 명확하게 정의하는 경우 아카이브는 log_archive_dest_n을 사용합니다. 레코드 위치
    C) standby_archive_dest 및 log_archive_dest_n이 모두 구성되지 않은 경우 STANDBY_ARCHIVE_DEST %ORACLE_HOME%\database\archive의 기본 위치를 사용합니다(Linux는 %ORACLE_HOME%\dbs\arc에 있음) d) Standby Redo
    Log를 FRA에 보관해야 하는 경우(Fast 복구 영역)
:
        Ⅰ) LOG_ARCHIVE_DEST_n 설정 LOCATION 파라미터는 USE_DB_RECOVERY_FILE_DEST
        Ⅱ) LOG_ARCHIVE_DEST_n의 VALID_FOR 파라미터를 "아카이브 허용"으로 설정합니다. 즉, VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

    e) Standby Redo Log를 로컬 지정 위치에 보관해야 하는 경우:
        Ⅰ) LOG_ARCHIVE_DEST_n의 LOCATION 매개변수를 USE_DB_RECOVERY_FILE_DEST로 설정합니다.
                즉, LOG_ARCHIVE_DEST_1='LOCATION=D:/Oracle/oradata/PMS VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
        Ⅱ) LOG_ARCHIVE_DEST_n의 VALID_FOR 파라미터를 "아카이브 허용"으로 설정합니다.
                즉, VALID_FOR=(STANDBY_LOGFILE, STANDBY_ROLE)

 5.1.2 메인 라이브러리 비밀번호 파일 확인

정상적인 상황에서 암호 파일은 %ORACLE_HOME%/database/PWDPMS.ora에 있고 Linux 시스템 암호 파일은 %ORACLE_HOME%/dbs/orapwpms.ora에 있습니다.
암호 파일이 손실된 경우 복구할 수 있습니다. orapwd 명령

orapwd file=%ORACLE_HOME%/database/PWDPMS.ora password=000000;

암호 파일을 대기 데이터베이스 서버에 복사

복사 과정 생략 (Ctrl + C, Ctrl + V)

5.1.3 메인 라이브러리 모니터링 수정

5.1.3.1 모니터링 파일 수정

D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 파일 수정

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = PMS)       ### 增加该行,增加数据库全局名称
      (SID_NAME = PMS)            ### 增加该行,修改数据库实例SID
#      (SID_NAME = CLRExtProc)    ### 取消该行
      (ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_1)
#      (PROGRAM = extproc)        ### 取消该行
#      (ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")  ### 取消该行
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))    ### 修改HOST为主库IP地址
    )
  )

ADR_BASE_LISTENER = D:\Oracle

5.1.3.2 TNS 파일 수정

D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 파일 수정

# tnsnames.ora Network Configuration File: D:\Oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

# 修改主库连接名称
PMS_PRIMARY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))
    (CONNECT_DATA =
#      (SERVER = DEDICATED)        ### 取消该行
      (SERVICE_NAME = PMS)
    )
  )

# 增加备库连接信息
PMS_STANDBY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = PMS)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

청취 파일 listener.ora 및 tnsnames.ora를 대기 데이터베이스 서버에 복사하십시오.

복사 과정 생략 (Ctrl + C, Ctrl + V)


5.1.4 메인 라이브러리 모니터링 테스트

lsnrctl stop            # 关闭监听
lsnrctl start           # 启动监听(重启监听)
lsnrctl status          # 查看监听状态
tnsping pms             # 测试PMS监听,通过
tnsping pms_standby     # 测试PMS_STANDBY监听,测试不通过(备库还未配置)

5.1.5 기본 라이브러리 매개변수 파일(spfile) 수정

데이터베이스 아카이빙 설정과 같이 직접 매개 변수 파일(spfile)을 수정하기 위해 alter system set 명령을 사용할 수 있지만 여기에는 수정 사항이 많으므로 편의상 pfile을 먼저 생성 및 수정한 다음 pfile을 통해 spfile을 다시 빌드하는 것이 좋습니다.

sqlplus / as sysdba
create pfile='d:/pfile.ora' from spfile;

 pfile.ora 파일 수정

pms.__db_cache_size=35567697920
pms.__java_pool_size=805306368
pms.__large_pool_size=939524096
pms.__oracle_base='D:\Oracle'#ORACLE_BASE set from environment
pms.__pga_aggregate_target=13824425984
pms.__sga_target=41339060224
pms.__shared_io_pool_size=0
pms.__shared_pool_size=3623878656
pms.__streams_pool_size=134217728
*.audit_file_dest='D:\Oracle\admin\PMS\adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='D:\Oracle\oradata\PMS\control01.ctl','D:\Oracle\fast_recovery_area\PMS\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='PMS'                    # 注意,主备必须一致
*.db_unique_name='PMS_PRIMARY'     # 注意,主备全局名称不能一样
*.fal_server='PMS_PRIMARY'         # 设定主库名称
*.fal_client='PMS_STANDBY'         # 设定备库名称
*.db_file_name_convert='D:\Oracle\oraback','D:\Oracle\oraback'    # 设置数据库备份文件恢复路径(主备库路径不一致时可通过此处进行转换)
*.log_file_name_convert='D:\Oracle\oralog','D:\Oracle\oralog'     # 设置日志备份文件恢复路径(主备库路径不一致时可通过此处进行转换)
*.standby_file_management='AUTO'        # 启动热备功能
*.db_recovery_file_dest_size=4385144832
*.db_recovery_file_dest=''
*.deferred_segment_creation=FALSE
*.diagnostic_dest='D:\Oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PMSXDB)'
*.log_archive_config='dg_config=(PMS_PRIMARY,PMS_STANDBY)'        # 设置日志配置
*.log_archive_dest_1='location=D:/Oracle/oralog valid_for=(all_logfiles,all_roles) db_unique_name=PMS_PRIMARY'            # 设置日志推送通道1,主库通道设定
*.log_archive_dest_2='service=PMS_STANDBY lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=PMS_STANDBY'         # 设置日志推送通道2,备库通道设定
*.log_archive_dest_state_1='enable'    # 启用日志推送通道1
*.log_archive_dest_state_2='enable'    # 启用日志推送通道2
*.log_archive_dest=''            # 关闭默认归档通道
*.log_archive_format='%t_%s_%r.arch'   # 格式化归档日志文件格式
*.open_cursors=300
*.pga_aggregate_target=13742637056
*.processes=2000            # 设置数据库最大连接数
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sga_target=41227911168
*.undo_tablespace='UNDOTBS1'

참고: 위 구성에서 매개변수 이름, 작은따옴표 내부 및 등호 양쪽에 공백이 없어야 합니다(내 구성을 직접 복사하는 것은 권장하지 않습니다. 자체 구성을 사용하여 수정하십시오. , 직접 구성 파일의 주석을 삭제하십시오) 수정
완료 위의 구성 후 데이터베이스를 닫고 spfile을 다시 빌드하여 이 구성을 데이터베이스로 가져옵니다.

shutdown immediate
create spfile from pfile='d:/pfile.ora';

데이터베이스 spfile 정보가 업데이트되었습니다(아직 데이터베이스를 정상적으로 시작하지 마십시오).
이제 대기 데이터베이스에 대한 제어 파일을 생성합니다 .

startup mount;
alter database create standby controlfile as 'D:/standby/CONTROL01.CTL';

 참고:
1) 제어 파일은 일반적으로 다중 지점이어야 합니다.생성된 CONTROL01.CTL을 CONTROL02.CTL에 수동으로 복사하거나 위의 명령을 사용하여 CONTROL02.CTL 파일을 생성합니다.
2) 제어 파일 생성 후 대기 데이터베이스에 제어 파일을 적용하기 전에 이 기간 동안 주 데이터베이스 데이터베이스가 구조적 변경(예: 테이블 공간 추가 등)을 받지 않도록 해야 합니다. 동기화에 문제가 있을 것입니다.

애플리케이션을 위해 제어 파일을 대기 데이터베이스 서버에 복사합니다. 복사 과정 생략 (Ctrl + C, Ctrl + V)

5.1.6 마스터 데이터베이스 검증

데이터베이스를 시작하고 데이터베이스가 정상인지 테스트

startup

보관된 정보 보기

archive log list

리두 로그 정보 보기

select group#,bytes/1024/1024 as Mb from v$log;

Standby Redo Log 정보 보기

select group#,bytes/1024/1024 as Mb from v$standby_log;

기본 데이터베이스 구성이 기본적으로 완료되었으므로 pfile 파일을 대기 데이터베이스에 복사하고 대기 데이터베이스 서버 구성을 시작할 수 있습니다.

복사 과정 생략 (Ctrl + C, Ctrl + V)

5.2 DG 대기 데이터베이스 구성 (대기 데이터베이스 운영)

5.2.1 대기 데이터베이스 로딩 파일 확인

1) 기본 데이터베이스 서버에서 대기 데이터베이스 서버 D:\Oracle\product\11.2.0\dbhome_1/database/PWDPMS.ora 의 경로로 비밀번호 파일 PWDPMS.ora를 복사하고 두 데이터베이스의 비밀번호가 동일합니다.
2) 주 DB 서버의 listener.ora, tnsnames.ora를 대기 DB 서버 D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN 경로에 복사하고 해당 설정을 수정한다.
    listener.ora 파일의 HOST 주소를 대기 데이터베이스 서버의 주소로 수정합니다.
3) 메인 DB 서버에서 생성된 "Standby에 적합한 Control Files" CONTROL01.CTL, CONTROL02.CTL을 Standby DB 서버(내 저장 경로: D:/standby/)에 복사한다.
    참고: 제어 파일을 생성해야 하며 메인 라이브러리 제어 파일을 직접 복사할 수 없습니다.
4) pfile 파일을 메인 라이브러리 서버에서 대기 라이브러리 서버로 복사하고 파일 내용을 수정합니다.

pms.__db_cache_size=35567697920
pms.__java_pool_size=805306368
pms.__large_pool_size=939524096
pms.__oracle_base='D:\Oracle'#ORACLE_BASE set from environment
pms.__pga_aggregate_target=13824425984
pms.__sga_target=41339060224
pms.__shared_io_pool_size=0
pms.__shared_pool_size=3623878656
pms.__streams_pool_size=134217728
*.audit_file_dest='D:\Oracle\admin\PMS\adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='D:/standby/CONTROL01.CTL','D:/standby/CONTROL02.CTL'     # 指定初始化数据库的控制文件
*.db_block_size=8192
*.db_domain=''
*.db_name='PMS'
*.db_unique_name='PMS_STANDBY'                # 此处全局名称配置已修改
*.fal_server='PMS_PRIMARY'
*.fal_client='PMS_STANDBY'
*.db_file_name_convert='D:\Oracle\oraback','D:\Oracle\oraback'
*.log_file_name_convert='D:\Oracle\oralog','D:\Oracle\oralog'
*.standby_file_management='AUTO'
*.db_recovery_file_dest_size=4385144832
*.db_recovery_file_dest=''
*.deferred_segment_creation=FALSE
*.diagnostic_dest='D:\Oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PMSXDB)'
*.log_archive_config='dg_config=(PMS_PRIMARY,PMS_STANDBY)'
*.log_archive_dest_1='location=D:/Oracle/oralog valid_for=(all_logfiles,all_roles) db_unique_name=PMS_STANDBY'                  # 设置日志推送通道1,备库通道设定
*.log_archive_dest_2='service=PMS_PRIMARY lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=PMS_PRIMARY'                # 设置日志推送通道2,主库通道设定
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_dest=''
*.log_archive_format='%t_%s_%r.arch'
*.open_cursors=300
*.pga_aggregate_target=13742637056
*.processes=2000
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sga_target=41227911168
*.undo_tablespace='UNDOTBS1'

참고: 일반적으로 마스터 서버와 백업 서버는 동일한 구성을 갖는 것이 좋습니다. 서로 다른 경우 sga_target, __pga_aggregate_target 및 __db_cache_size와 같은 매개 변수를 수동으로 수정해야 합니다. 매개 변수가 서버 부하를 초과하면 데이터베이스가 실패합니다. 시작하고 서버 자체도 충돌합니다. 말했다).

5.2.2 대기 데이터베이스 인스턴스 생성 

5) 대기 데이터베이스에 대한 PMS 인스턴스 서비스를 생성합니다.
관리자 권한으로 명령 창을 사용하여 명령을 실행합니다.

oradim -NEW -SID PMS -STARTMODE manual

그 중 PMS는 지정하려는 인스턴스 이름입니다(메인 라이브러리와 일치).
서비스가 생성되면 자동으로 시작되며 services.msc 시스템에서 볼 수 있습니다.
 

6) 모니터를 다시 시작하고 테스트합니다.

lsnrctl stop
lsnrctl start
lsnrctl status
tnsping pms_primary(测试通过)
tnsping pms_standby(测试通过)

참고: 테스트에 실패하면 테스트를 위해 활성 및 대기 서버의 방화벽을 끄십시오.


7) pfile 파일을 통해 spfile 파라미터 파일 생성

a) 데이터베이스 서비스를 수동으로 다시 시작하는 것을 권장합니다(모니터를 먼저 시작한 다음 데이터베이스를 시작)
b) sqlplus /를 sysdba로 처음 사용하는 경우 연결할 수 없다는 메시지가 표시됩니다(ORA-12560). 대기 데이터베이스는 우리가 수동으로 생성하므로 운영 체제(windows)는 우리가 생성한 PMS 인스턴스를 기록하지 않으므로 먼저
        명령 프롬프트 상자에서 환경 변수를 설정해야 합니다. set oracle_sid=PMS

        성공적으로 로그인하려면 다시 시도하십시오

c) pfile 파일을 통해 spfile 매개변수 파일 생성

create spfile from pfile='D:/pfile.ora';

5.3 활성 및 대기 데이터베이스의 공동 구성

5.3.1 모니터링 구성 확인

대기 데이터베이스 모니터 재시작(처음 시작) (대기 데이터베이스 작업)

lsnrctl stop
lsnrctl start
sqlplus / as sysdba
shutdown immediate
startup nomount        # 此时备库先不挂载,接下来要恢复数据文件,数据库必须处于不挂载状态

메인 라이브러리 모니터링 재시작(나중에 시작) (메인 라이브러리 동작)

lsnrctl stop
lsnrctl start
shutdown immediate
startup

5.3.2 기본 라이브러리 데이터 파일 복원

5.3.2.1 방법 1: RMAN을 통해 데이터 파일 복사

주 데이터베이스가 대기 데이터베이스를 보조하는 방식으로 RMAN을 대기 데이터베이스에 연결 (대기 데이터베이스 운영)

rman target sys/000000@pms_primary auxiliary sys/000000@pms_standby

메인 데이터베이스의 데이터 파일을 명령으로 스탠바이 데이터베이스로 복사합니다 .

duplicate target database for standby from active database nofilenamecheck;

실행이 완료되면 대기 데이터베이스의 데이터 파일이 복사됩니다.

5.3.2.2 방법 2: 수동으로 데이터 파일 복사

또 다른 방법이 있습니다.
기본 데이터베이스의 oracle 디렉터리 아래에 있는 admin, cfgtollogs, diag, flash_recover_area 및 oradata 디렉터리를 대기 데이터베이스의 동일한 경로에 직접 복사하고 대기 데이터베이스의 기존 파일 및 폴더를 직접 덮어씁니다.

그러나 조건이 허락한다면 여전히 첫 번째 솔루션이 권장되며 Oracle은 명령을 통해 자체적으로 복제 및 구성을 수행합니다.

5.3.3 로그 동기화 시작 (대기 데이터베이스 작업)

로그 전달 서비스 시작

alter database recover managed standby database disconnect from session;
recover managed standby database cancel;

미디어 복구가 완료되면 데이터베이스를 다시 시작하고 읽기 전용 대기 데이터베이스 마운트 모드로 시작합니다.

shutdown immediate;
startup nomount;
database mount standby database;
database open read only;

대기 데이터베이스 로그의 실시간 적용 시작

alter database recover managed standby database using current logfile disconnect from session;

참고: 데이터 파일이 생성되기 전에 대기 데이터베이스 로그의 실시간 적용이 활성화되면 대기 데이터베이스는 동기화되지만 데이터베이스를 열 수 없으며 "ORA-01219: 데이터베이스 열리지 않음: 고정 테이블/뷰에서만 쿼리할 수 있음" !" 이때
명령을 사용하여 동기화를 중지할 수 있습니다 . rman을 통해 데이터 파일을 복원하거나 파일을 복사하여 데이터 파일을 복원)

5.4 DG 동기화 검증

동기화 상태 확인
메인 라이브러리 접속 및 아카이브 상태 확인 (메인 라이브러리 동작)

SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

Standby DB 접속 및 아카이브 상태 확인 (Standby DB 동작)

SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

메인 라이브러리의 아카이브 로그 전환(필수 아카이빙) (메인 라이브러리 운영)

ALTER SYSTEM SWITCH LOGFILE;
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

최신 아카이브가 대기 데이터베이스에 동기화되었는지 확인 (대기 데이터베이스 운영)

SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

메인 데이터베이스에 테이블을 생성하고, 데이터를 삽입하고, 스탠바이 데이터베이스가 일관성이 있는지 확인합니다.

지금까지 마스터-대기 동기화(DG)가 설정되었습니다.

전체 기사 검토: 수천 자의 긴 기사, 도움이 되었으면 합니다.

Oracle11g DG 실제 구성(Windows 버전) (1) 기본 지침

Oracle11g DG 전투 구성(Windows 버전) (2) 메인 라이브러리 설치 및 기본 구성

Oracle11g DG 전투 구성(Windows 버전) (3) 메인 라이브러리 데이터베이스 아카이빙 구성

Oracle11g DG 전투 구성(Windows 버전)(4개) 대기 데이터베이스 설치

Oracle11g DG 전투 구성(Windows 버전)(5) 기본 및 대기 데이터베이스의 DG 구성
 

추천

출처blog.csdn.net/Asgard_Hu/article/details/126970995