Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

물리적 대기에서 데이터베이스 복제

이 블로그는 물리적 대기 데이터베이스에서 데이터베이스를 복제하는 방법을 설명합니다.

데이터베이스 복제는 네트워크를 통해 대상 데이터베이스를 보조 대상으로 복사한 다음 복제 데이터베이스를 생성합니다. 기존 RMAN 백업 및 복사본이 필요하지 않습니다.

물리적 대기의 중복 데이터베이스는 Oracle® 11grelease 2 이상에서 지원됩니다.

물리적 대기 상태에서 RMAN 활성 복제를 수행하려면 다음이 필요합니다.

  • 데이터베이스:Oracle 11g에서 최신 버전으로
  • 플랫폼:Linux® 7
  • 대기 DB 이름:PROD_DR
  • 대상 DB 이름:TEST

대기 데이터베이스를 읽기 전용 모드로 열기

물리적 대기 데이터베이스에서 복구를 중지한 다음 데이터베이스를 읽기 전용 모드로 열어 복제를 허용합니다.

다음 명령을 사용하여 대기 데이터베이스의 상태를 확인하십시오.

PROD_DR> select name, open_mode, log_mode from v$database;

다음과 유사한 출력이 표시되어야 합니다.

NAME      	OPEN_MODE             LOG_MODE
--------- 	--------------------  ------------
PROD_DR    	 MOUNTED              ARCHIVELOG

대기 데이터베이스의 복구를 중지하려면 다음 명령을 사용하십시오.

SQL> alter database recover managed standby database cancel;
Database altered.

그런 다음 데이터베이스를 읽기 전용 모드로 엽니다.

SQL> alter database open read only;
Database altered.

데이터베이스 상태를 다시 확인하여 마운트되지 않고 읽기 전용인지 확인하십시오.

PROD_DR> select name, open_mode,log_mode from v$database;

NAME   	      OPEN_MODE           	 LOG_MODE
--------- 	  -------------------- 	 ------------
PROD_DR   	  READ ONLY         	   ARCHIVELOG

대상 서버 준비

이 섹션에서는 전체 대기 Oracle 홈 바이너리를 대상 인스턴스 서버에 복사하고 pfile을 준비합니다. 소스 데이터베이스에서 새 데이터베이스 이름에 따라 변경합니다.

참고: 데이터베이스를 동일한 서버에 복제하는 경우 DB_NAME에 적절한 값을 사용해야 합니다. , DB_UNIQUE_NAME , DB_FILE_NAME_CONVERTLOG_FILE_NAME_CONVERT .

먼저 pfile을 준비합니다. 다음 명령을 사용하여:

cd $ORACLE_HOME/dbs
initTEST.ora

*.control_files='+DATA/cntrl01.dbf', '+DATA/cntrl02.dbf'
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+PROD_DR_DATA','+DATA'
*.db_name='TEST'
*.db_unique_name='TEST'
*.diagnostic_dest='/u01/app/diag'
*.log_file_name_convert='+PROD_DR_DATA','+DATA'

기존 대기 암호 파일을 복사하고 TEST 데이터베이스에 사용된 SID와 일치하도록 이름을 바꾸거나 동일한 소스 암호를 사용하여 대상 서버에 새 암호 파일을 만들 수 있습니다.

cd $ORACLE_HOME/dbs
cp orapwPROD_DR orapwTEST

정적 수신기 구성

다음 단계를 사용하여 테스트 데이터베이스에 대한 정적 리스너를 구성하십시오.

cd $ORACLE_HOME/network/admin
cat listener.ora

ADR_BASE_LISTENER_LOCAL = /u01/app/oracle

LISTENER_LOCAL =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = TEST.ras.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER_LOCAL = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DGNEER) (ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1) (SID_NAME = TEST)))

다음 명령을 사용하여 리스너를 시작하십시오.

lsnrctl status listener_local

다음 예와 유사한 출력이 표시되어야 합니다.

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 09-JUN-2020 02:57:35

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= TEST.ras.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     listener_local
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                04-JAN-2020 04:53:15
Uptime                    156 days 21 hr. 4 min. 19 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/12.1.0.2/dbhome_1/admin/diag/tnslsnr/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= TEST.ras.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "TEST" has 2 instance(s).
  Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
  Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully

Oracle Net 별칭 생성

다음으로, 대기 데이터베이스에 도달하기 위해 Oracle Net 별칭을 생성해야 합니다.

PROD_DR=
        (DESCRIPTION=
                (ADDRESS=(PROTOCOL=tcp)(HOST= standbydb.ras.com)(PORT=1523))
            (CONNECT_DATA=
                (SID=PROD_DR)
            )
        )

대상 데이터베이스 시작

그런 다음 nomount에서 대상 데이터베이스를 시작해야 합니다. 다음 명령을 사용하여 상태:

sqlplus "/ as sysdba"

startup nomount

SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
db_name                              string      TEST

SQL> show parameter uniq
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
db_unique_name                       string      TEST

RMAN을 사용하여 연결 테스트

대상 데이터베이스가 nomount에서 실행된 후 상태, RMAN을 사용하여 연결 테스트:

[[email protected] dbs]$ rman target sys@PROD_DR  auxiliary sys@TEST

Recovery Manager: Release 12.1.0.2.0 - Production on Thu Jun 09 03:25:22 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

target database Password:
connected to target database: PROD_DR (DBID=4252464621)
auxiliary database Password:
connected to auxiliary database: TEST (not mounted)

데이터베이스 복원 및 복제

다음 명령을 사용하여 대기 데이터베이스를 대상 데이터베이스에 복원하고 복제합니다.

RMAN> target sys@PROD_DR  auxiliary sys@TEST
RMAN> duplicate target database to TEST from active database nofilenamecheck;

복제 명령이 완료된 후 다음 명령을 사용하여 대기 데이터베이스를 다시 시작하고 복구를 다시 활성화해야 합니다.

PROD_DR> shut immediate
PROD_DR> startup mount;
PROD_DR> alter database recover managed standby database disconnect from session;

대상 데이터베이스 상태 확인

다음 명령을 사용하여 대상 데이터베이스의 상태를 확인하십시오.

[[email protected] dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 9 05:15:53 2020

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL>  select name, open_mode, log_mode , database_role from v$database;

NAME      OPEN_MODE            LOG_MODE     DATABASE_ROLE
--------- -------------------- ------------ ----------------
TEST      READ WRITE           ARCHIVELOG   PRIMARY

결론

이 블로그에서는 물리적 백업을 수행하지 않고 물리적 대기 데이터베이스에서 데이터베이스를 복제하고 대기 데이터베이스에 제공된 최신 아카이브로 대상 데이터베이스를 복원했습니다.

참조

  • 대기 상태에서 RMAN 복제를 수행하여 새 클론 생성(문서 ID 1665784.1)

데이터베이스에 대해 자세히 알아보십시오.

피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 영업 채팅을 클릭할 수도 있습니다. 지금 채팅하고 대화를 시작하세요.