이 블로그는 물리적 대기 데이터베이스에서 데이터베이스를 복제하는 방법을 설명합니다.
데이터베이스 복제는 네트워크를 통해 대상 데이터베이스를 보조 대상으로 복사한 다음 복제 데이터베이스를 생성합니다. 기존 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_CONVERT
및 LOG_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)
데이터베이스에 대해 자세히 알아보십시오.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 영업 채팅을 클릭할 수도 있습니다. 지금 채팅하고 대화를 시작하세요.