[제목]
[2025-12-20] Oracle 12cR2 2 Node RAC to Single ADG 구축 (DG Broker 사용)
[테스트 환경]
<Primary>
OS : Oracle Linux Server 7.9 (grep ^PRETTY_NAME=
/etc/os-release | cut -d= -f2- | tr -d '"')
OS Kernal :
5.4.17-2102.201.3.el7uek.x86_64 (uname -r)
Oracle
Version : Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
(echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from v\$version where banner like 'Oracle Database%';" | sqlplus -s / as sysdba)
Oracle
Configuration
DB명 : ORA12RF (echo -e 'set pages 0
feedback off heading off verify off\nselect '\''DB명 : '\''||name from
v$database;' | sqlplus -s / as sysdba) '
RAC Node 1
Hostname : ol7ora12rf1 (hostname)
Public IP : 192.168.240.11 (getent ahostsv4
`hostname` | awk '{print $1; exit}')
Virtual
IP : 192.168.240.14
Instance Name : ORA12RF1
(echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance
Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba)
'
RAC Node
2
Hostname : ol7ora12rf2
Public IP : 192.168.240.12 (getent ahostsv4
`hostname` | awk '{print $1; exit}')
Virtual
IP : 192.168.240.15
Instance Name : ORA12RF2
(echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance
Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba)
'
Patch Info
Grid (opatch lspatches) (grid os user)
33610989;TOMCAT RELEASE UPDATE 12.2.0.1.0(ID:RELEASE)
(33610989)
26839277;DBWLM RELEASE UPDATE
12.2.0.1.0(ID:170913) (26839277)
33116894;ACFS JUL
2021 RELEASE UPDATE 12.2.0.1.210720 (33116894)
33678030;OCW JAN 2022 RELEASE UPDATE 12.2.0.1.220118 (33678030)
33587128;Database Jan 2022 Release Update :
12.2.0.1.220118 (33587128)
Oracle
(opatch lspatches) (oracle os user)
33678030;OCW
JAN 2022 RELEASE UPDATE 12.2.0.1.220118 (33678030)
33587128;Database Jan 2022 Release Update : 12.2.0.1.220118
(33587128)
<Standby>
OS : Oracle Linux
Server 7.9 (grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d '"')
OS Kernal : 5.4.17-2102.201.3.el7uek.x86_64 (uname -r)
Oracle Version : Oracle Database 12c Enterprise Edition
Release 12.2.0.1.0 - 64bit Production
(echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from
v\$version where banner like 'Oracle Database%';" | sqlplus -s / as sysdba)
Hostname : ol7ora12sf (hostname)
Public IP : 192.168.240.111 (getent ahostsv4 `hostname` |
awk '{print $1; exit}')
Oracle Configuration
DB명 : ORA12RF (echo -e 'set pages 0
feedback off heading off verify off\nselect '\''DB명 : '\''||name from
v$database;' | sqlplus -s / as sysdba) '
--> 이걸로 생성될것임
DB Unique Name :
ORA12RF_STB
--> 이걸로 생성될것임
Instance Name : ORA12RF
(echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance
Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba) '
--> 이걸로 생성될것임
Patch Info
Grid (opatch lspatches) (grid os user)
33678030;OCW JAN 2022 RELEASE UPDATE 12.2.0.1.220118
(33678030)
33610989;TOMCAT RELEASE UPDATE
12.2.0.1.0(ID:RELEASE) (33610989)
33116894;ACFS
JUL 2021 RELEASE UPDATE 12.2.0.1.210720 (33116894)
26839277;DBWLM RELEASE UPDATE 12.2.0.1.0(ID:170913) (26839277)
33587128;Database Jan 2022 Release Update :
12.2.0.1.220118 (33587128)
Oracle
(opatch lspatches) (oracle os user)
33678030;OCW
JAN 2022 RELEASE UPDATE 12.2.0.1.220118 (33678030)
33587128;Database Jan 2022 Release Update : 12.2.0.1.220118
(33587128)
<Observer>
OS : Oracle Linux
Server 7.9 (grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d '"')
OS Kernal : 5.4.17-2102.201.3.el7uek.x86_64 (uname -r)
Oracle Version : Oracle Database 12c Enterprise Edition
Release 12.2.0.1.0 - 64bit Production
(echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from
v\$version where banner like 'Oracle Database%';" | sqlplus -s / as sysdba)
Hostname : ol7ora12ss (hostname)
Public IP : 192.168.240.112 (getent ahostsv4 `hostname` |
awk '{print $1; exit}')
--> 해당 서버에 Oralce 12cr2
Cleint를 설치할 것임
Patch Info
Oracle (opatch lspatches) (oracle os user)
33587128;Database Jan 2022 Release Update :
12.2.0.1.220118 (33587128)
--> 해당 패치를 진행할
것임
[테스트 개요]
테스트 목적 본 테스트는
Oracle Database 12cR2 (12.2.0.1) 환경에서 고가용성(HA)을 보장하는 2-Node RAC Primary 시스템과 비용
효율적인 Single Instance Standby 시스템 간의 Active Data Guard (ADG)를 구축하는 것을 목표로 함
또한, Data Guard Broker를 통해 관리를 자동화하고, FSFO (Fast-Start
Failover) 기능을 구현하여 장애 발생 시 Observer를 통한 자동 페일오버(Automated Failover) 및 데이터 무결성을
검증함
[구성 아키텍처
요약]
Primary Database
(RAC): 2개의 노드(ol7ora12rf1, ol7ora12rf2)로 구성된 RAC 환경.
Standby Database (Single): 단일 노드(ol7ora12sf)로 구성된 Physical
Standby 환경.
Observer (Client): 별도 서버(ol7ora12ss)에 Oracle
Client만 설치하여 FSFO 감시 역할 수행.
네트워크: 데이터 전송 및 관리를 위해 별도의 리스너
포트(1522)를 구성하여 운영 트래픽과 분리.
[주요 수행 절차]
<네트워크 구성>
ADG 전용 리스너(Port 1522) 생성 및 정적 리스너(Static Registration)
등록.
tnsnames.ora 및 /etc/hosts 설정을 통해 RAC와 Single 간 통신 경로
확보.
<Primary DB 사전
설정>
Archive Log Mode, Flashback Database, Force
Logging 활성화.
Standby Redo Log (SRL) 생성 (Redo Group 수 +
1).
Standby DB 구축 (Duplicate):
RMAN 백업(Archivelog 및 Standby Controlfile 포함) 수행.
백업본을 Standby 서버로 전송 후 복구(Restore & Recover) 수행.
RAC to Single 변환을 위한 파라미터(cluster_database=false, 파일 경로 변환
등) 수정.
<Data Guard
Broker 구성>
dgmgrl을 사용하여 Configuration 생성 및 Standby
Database 등록.
브로커를 통한 동기화 상태 확인
(SUCCESS).
[검증 시나리오 (Testing Scenarios)]
본 테스트에서는 구축 후 시스템의 안정성과 가용성을 확인하기 위해 다음 항목들을 수행하였음.
<데이터 동기화 테스트
(Synchronization)>
Primary에서 DML(Table 생성 및 Insert) 수행
후 Standby에 실시간 반영 여부 확인.
<재기동 테스트
(Restart)>
올바른 기동/종료 순서(Standby 기동 -> Primary 기동)
검증 및 재접속 확인.
<Role Transition
(Switchover)>
계획된 유지보수를 가정한 Primary ↔ Standby 간의 역할
전환(Switchover) 및 데이터 유실 없음 확인.
<Role Transition
(Failover)>
Primary 강제 종료(Abort) 상황 시 수동 Failover 수행 및
STANDBY_BECAME_PRIMARY_SCN 확인.
구(Old) Primary를 REINSTATE
명령어로 복구하여 Standby로 전환.
<FSFO
(Fast-Start Failover) 테스트>
Observer 프로세스 구성 및 Wallet
설정을 통한 자동 인증 처리.
Primary 장애(Abort) 발생 시 Observer에 의한 자동
Failover 동작 및 시간(Threshold) 검증.
장애 복구 후 자동 Reinstate 동작
확인.
<Snapshot
Standby 테스트>
Physical Standby를 일시적으로 Read-Write 모드로
전환하여 테스트 데이터 조작 수행.
다시 Physical Standby로 환원(Convert) 시 변경
사항 롤백 및 동기화 재개 확인.
<환경 복구 (Deconfiguration)>
FSFO 비활성화, Broker 구성 제거, Standby DB 삭제 및 네트워크 설정을 원복하여 테스트 종료.
[내용]
1. ADG 전용 신규 리스너 생성 및 정적 리스너 등록
--1522 포트를 사용하는 ADG 전용 리스너를 생성하고 정적 리스너로 등록할 것임
1-1. Primary 서버 설정
1-1-1. 신규 리스너 생성
--1번 노드 (grid os
user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl config
listener
Name: LISTENER
Type: Database Listener
Network: 1,
Owner: grid
Home: <CRS home>
End points: TCP:1521
Listener is
enabled.
Listener is individually enabled on nodes:
Listener is individually disabled on nodes:
--> 현재
1521 포트를 사용하는 LISTENER 만 존재하는 상황임.
[+ASM1:grid@ol7ora12rf1][/home/grid]$ echo
$GRID_HOME
/u01/app/12c/grid
--1522 포트를 사용하는 새로운 리스너인
LISTENER_ADG 리스너를 생성함
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl add listener
-listener LISTENER_ADG -oraclehome $GRID_HOME -endpoints
"TCP:1522"
--> 2개의 RAC노드에 모두 생성됨
--> RAC 환경에서 한쪽 노드에서 리스너를 add하면 다른쪽 노드에도 자동으로 등록되는 것을 알 수
있음
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl config listener
-listener LISTENER_ADG
Name: LISTENER_ADG
Type: Database Listener
Network: 1,
Owner: grid
Home: <CRS home>
End points: TCP:1522
Listener is
enabled.
Listener is individually enabled on nodes:
Listener is individually disabled on nodes:
--> 1522
포트를 사용하는 신규 리스너 생성 완료
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl status listener
-listener LISTENER_ADG
Listener LISTENER_ADG is
enabled
Listener LISTENER_ADG is not running
-->
LISTENER_ADG 리스너가 아직 실행되고 있지는 않음
--리스너 시작
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl start listener
-listener LISTENER_ADG
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl status listener
-listener LISTENER_ADG
Listener LISTENER_ADG is enabled
Listener LISTENER_ADG is running on node(s):
ol7ora12rf1,ol7ora12rf2
--LISTENER_ADG 리스너가 ONLINE 상태인지
확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res
ora.LISTENER_ADG.lsnr -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER_ADG.lsnr
ONLINE ONLINE
ol7ora12rf1
STABLE
ONLINE ONLINE
ol7ora12rf2
STABLE
--------------------------------------------------------------------------------
1-1-2. 정적 리스너 설정
--1번 노드 (grid os
user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ alias
cdt
alias cdt='cd
$ORACLE_HOME/network/admin'
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cdt
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
vi listener.ora
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
cat listener.ora
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG))))
# line added by Agent
MGMTLSNR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=MGMTLSNR))))
# line added by Agent
# listener.ora Network
Configuration File: /u01/app/12c/grid/network/admin/listener.ora
# Generated by Oracle configuration
tools.
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3 = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2 = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1 = ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN3 = OFF
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2 = OFF
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1 = OFF
VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM = SUBNET
ASMNET1LSNR_ASM
=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = ASMNET1LSNR_ASM))
)
)
VALID_NODE_CHECKING_REGISTRATION_LISTENER = SUBNET
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON
LISTENER_SCAN3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN3))
)
)
LISTENER_SCAN2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN2))
)
)
LISTENER_SCAN1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN1))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_MGMTLSNR=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_MGMTLSNR=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ADG=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_ADG=SUBNET
# line added by Agent
-----------------------------------아래 부분을 추가
BEGIN-----------------------------------
SID_LIST_LISTENER_ADG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME =
ORA12RF_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/12c/db_1)
(SID_NAME = ORA12RF1)
)
)
-----------------------------------아래 부분을 추가
END-------------------------------------
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl setenv
database -d ORA12RF -t
"TNS_ADMIN=/u01/app/oracle/product/12c/db_1/network/admin"
--> TNS_ADMIN 환경변수를 세팅해줌 (grid도 해당 위치를 알 수 있도록
해줌)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl getenv
database -d ORA12RF
ORA12RF:
TNS_ADMIN=/u01/app/oracle/product/12c/db_1/network/admin
--1번 노드 (grid os
user)
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
lsnrctl reload LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:34:58
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
The command completed successfully
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$ lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:36:08
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 13:16:21
Uptime
0 days 0 hr. 19 min. 46 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol7ora12rf1/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
Services Summary...
Service
"ORA12RF_DGMGRL" has 1 instance(s).
Instance
"ORA12RF1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
--> 1522
포트를 사용하는 LISTENER_ADG 리스너에 ORA12RF_DGMGRL 서비스가 추가된 것을 확인할 수
있음
--2번 노드 (grid os
user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ alias
cdt
alias cdt='cd
$ORACLE_HOME/network/admin'
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cdt
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
vi listener.ora
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
cat listener.ora
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG))))
# line added by Agent
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3))))
# line added by Agent
MGMTLSNR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=MGMTLSNR))))
# line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2))))
# line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))
# line added by Agent
ASMNET1LSNR_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=ASMNET1LSNR_ASM))))
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=OFF
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2=OFF
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_MGMTLSNR=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_MGMTLSNR=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN3=OFF
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ADG=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_ADG=SUBNET
# line added by Agent
-----------------------------------아래 부분을 추가
BEGIN-----------------------------------
SID_LIST_LISTENER_ADG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME =
ORA12RF_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/12c/db_1)
(SID_NAME = ORA12RF2)
)
)
-----------------------------------아래 부분을 추가
END-----------------------------------
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ srvctl getenv
database -db ora12rf
ORA12RF:
TNS_ADMIN=/u01/app/oracle/product/12c/db_1/network/admin
-->
TNS_ADMIN 환경변수가 세팅된 것을 확인
--2번 노드 (grid os
user)
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
lsnrctl reload LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:39:55
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
The command completed successfully
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$ lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:40:11
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 13:16:21
Uptime
0 days 0 hr. 23 min. 49 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol7ora12rf2/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
Services Summary...
Service
"ORA12RF_DGMGRL" has 1 instance(s).
Instance
"ORA12RF2", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
--> 1522
포트를 사용하는 LISTENER_ADG 리스너에 ORA12RF_DGMGRL 서비스가 추가된 것을 확인할 수
있음
1-1-3. 신규로 생성한 리스너를 동적 리스너에도 등록 시킴
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 13:41:14 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter local_listener
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.240.14)(PORT=1521))
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set local_listener='
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.14)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.14)(PORT=1522))
)' scope=both sid='ORA12RF1';
--> VIP를
사용해서 동적 리스너를 걸어줌
System altered.
Elapsed: 00:00:00.00
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system register;
System altered.
Elapsed: 00:00:00.00
--grid os
user
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:49:45
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 13:16:21
Uptime
0 days 0 hr. 33 min. 23 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol7ora12rf1/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.11)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.14)(PORT=1522)))
Services Summary...
Service "+ASM"
has 1 instance(s).
Instance "+ASM1", status READY,
has 1 handler(s) for this service...
Service "+ASM_CRS"
has 1 instance(s).
Instance "+ASM1", status READY,
has 1 handler(s) for this service...
Service "+ASM_DATA1"
has 1 instance(s).
Instance "+ASM1", status READY,
has 1 handler(s) for this service...
Service "+ASM_FRA1"
has 1 instance(s).
Instance "+ASM1", status READY,
has 1 handler(s) for this service...
Service "+ASM_MGMT"
has 1 instance(s).
Instance "+ASM1", status READY,
has 1 handler(s) for this service...
Service "ORA12RF"
has 1 instance(s).
Instance "ORA12RF1", status
READY, has 1 handler(s) for this service...
Service
"ORA12RFXDB" has 1 instance(s).
Instance
"ORA12RF1", status READY, has 1 handler(s) for this service...
Service "ORA12RF_DGMGRL" has 1 instance(s).
Instance "ORA12RF1", status UNKNOWN, has 1 handler(s)
for this service...
The command completed successfully
--> ASM1
인스턴스, ORA12RF1 인스턴스 등이 모두 붙은 것을 확인
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 7 17:36:00 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf2]<SYS@ORA12RF2>$
alter system set
local_listener='
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.15)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.15)(PORT=1522))
)' scope=both sid='ORA12RF2';
[ol7ora12rf2]<SYS@ORA12RF2>$ alter system register;
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$ lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-DEC-2025 13:52:09
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 13:16:21
Uptime
0 days 0 hr. 35 min. 47 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol7ora12rf2/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.12)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.15)(PORT=1522)))
Services Summary...
Service "+ASM"
has 1 instance(s).
Instance "+ASM2", status READY,
has 1 handler(s) for this service...
Service "+ASM_CRS"
has 1 instance(s).
Instance "+ASM2", status READY,
has 1 handler(s) for this service...
Service "+ASM_DATA1"
has 1 instance(s).
Instance "+ASM2", status READY,
has 1 handler(s) for this service...
Service "+ASM_FRA1"
has 1 instance(s).
Instance "+ASM2", status READY,
has 1 handler(s) for this service...
Service "+ASM_MGMT"
has 1 instance(s).
Instance "+ASM2", status READY,
has 1 handler(s) for this service...
Service "ORA12RF"
has 1 instance(s).
Instance "ORA12RF2", status
READY, has 1 handler(s) for this service...
Service
"ORA12RFXDB" has 1 instance(s).
Instance
"ORA12RF2", status READY, has 1 handler(s) for this service...
Service "ORA12RF_DGMGRL" has 1 instance(s).
Instance "ORA12RF2", status UNKNOWN, has 1 handler(s)
for this service...
The command completed
successfully
1-2. Standby 서버 설정
1-2-1. 신규 리스너 생성
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl config
listener
Name: LISTENER
Type: Database Listener
Home:
/u01/app/12c/grid
End points: TCP:1521
Listener is enabled.
--> 현재 1521 포트를 사용하는 LISTENER 리스너만
존재함.
[+ASM:grid@ol7ora12sf][/home/grid]$ echo
$GRID_HOME
/u01/app/12c/grid
--신규 리스너 생성
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl add listener
-listener LISTENER_ADG -oraclehome $GRID_HOME -endpoints
"TCP:1522"
--> 1522 포트를 사용하는
LISTENER_ADG 리스너를 신규로 생성함
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl config listener
-listener LISTENER_ADG
Name: LISTENER_ADG
Type: Database
Listener
Home: /u01/app/12c/grid
End points: TCP:1522
Listener is
enabled.
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl status listener
-listener LISTENER_ADG
Listener LISTENER_ADG is enabled
Listener LISTENER_ADG is not running
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl start listener -listener LISTENER_ADG
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl status listener
-listener LISTENER_ADG
Listener LISTENER_ADG is enabled
Listener LISTENER_ADG is running on node(s):
ol7ora12sf
[+ASM:grid@ol7ora12sf][/home/grid]$ crsctl stat res
ora.LISTENER_ADG.lsnr -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER_ADG.lsnr
ONLINE ONLINE
ol7ora12sf
STABLE
--------------------------------------------------------------------------------
-->
LISTENER_ADG 리스너가 ONLINE 상태인 것을 확인
1-2-2. 정적 리스너 설정
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ alias
cdt
alias cdt='cd
$ORACLE_HOME/network/admin'
[+ASM:grid@ol7ora12sf][/home/grid]$ cdt
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$ vi
listener.ora
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$ cat
listener.ora
#Backup file is
/u01/app/12c/grid/network/admin/listener.ora.bak.ol7ora12sf line added by
Agent
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG))))
# line added by Agent
# listener.ora Network
Configuration File: /u01/app/12c/grid/network/admin/listener.ora
# Generated by Oracle configuration
tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL =
TCP)(HOST = ol7ora12sf)(PORT = 1521))
(ADDRESS = (PROTOCOL =
IPC)(KEY = EXTPROC1521))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET
# line added by Agent
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
SID_LIST_LISTENER_ADG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME =
ORA12RF_STB_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/12c/db_1)
(SID_NAME = ORA12RF)
)
)
---------------------------------아래의 내용을 추가
END-----------------------------------
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ADG=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_ADG=SUBNET
# line added by Agent
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$
lsnrctl reload LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-DEC-2025 15:51:25
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
The command completed successfully
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$ lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-DEC-2025 15:51:45
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 14:08:05
Uptime
1 days 1 hr. 43 min. 39 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol7ora12sf/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
Services Summary...
Service
"ORA12RF_STB_DGMGRL" has 1 instance(s).
Instance
"ORA12RF", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
2. /etc/hosts 설정
2-1. Primary 서버
--1번 노드 (root os
user)
[root@ol7ora12rf1][/root]$ vi /etc/hosts
[root@ol7ora12rf1][/root]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.11
ol7ora12rf1
192.168.240.12
ol7ora12rf2
### Private IP
10.0.1.11
ol7ora12rf1-priv
10.0.1.12
ol7ora12rf2-priv
### Virtual IP
192.168.240.14 ol7ora12rf1-vip
192.168.240.15 ol7ora12rf2-vip
### DNS
192.168.240.17 ol7ora12rf-scan
192.168.240.18 ol7ora12rf-scan
192.168.240.19 ol7ora12rf-scan
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
## Standby
192.168.240.111 ol7ora12sf
---------------------------------아래의 내용을 추가
END-----------------------------------
--2번 노드 (root os
user)
[root@ol7ora12rf2][/root]$ vi /etc/hosts
[root@ol7ora12rf2][/root]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.11
ol7ora12rf1
192.168.240.12
ol7ora12rf2
### Private IP
10.0.1.11
ol7ora12rf1-priv
10.0.1.12
ol7ora12rf2-priv
### Virtual IP
192.168.240.14 ol7ora12rf1-vip
192.168.240.15 ol7ora12rf2-vip
### DNS
192.168.240.17 ol7ora12rf-scan
192.168.240.18 ol7ora12rf-scan
192.168.240.19 ol7ora12rf-scan
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
## Standby
192.168.240.111 ol7ora12sf
---------------------------------아래의 내용을 추가
END-----------------------------------
2-2. Standby 서버
--root os
user
[root@ol7ora12sf][/root]$ vi /etc/hosts
[root@ol7ora12sf][/root]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.111
ol7ora12sf
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
## Primary
192.168.240.11 ol7ora12rf1
192.168.240.12 ol7ora12rf2
---------------------------------아래의 내용을 추가
END-----------------------------------
3. tnsnames.ora 설정
3-1. Primary 서버
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ vi
$ORACLE_HOME/network/admin/tnsnames.ora
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat
$ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora
Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12RF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12rf-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12RF)
)
)
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
#Primary
TNS_ORA12RF =
(DESCRIPTION
=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF)
(FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
)
)
#Standby
TNS_ORA12RF_STB =
(DESCRIPTION
=
(ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.111)(PORT = 1522))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12RF_STB)
)
)
---------------------------------아래의 내용을 추가
END-----------------------------------
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ vi
$ORACLE_HOME/network/admin/tnsnames.ora
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat
$ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora
Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12RF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12rf-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12RF)
)
)
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
#Primary
TNS_ORA12RF =
(DESCRIPTION
=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF)
(FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
)
)
#Standby
TNS_ORA12RF_STB =
(DESCRIPTION
=
(ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.111)(PORT = 1522))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12RF_STB)
)
)
---------------------------------아래의 내용을 추가
END-----------------------------------
3-2. Standby 서버
--oracle os
user
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ vi
$ORACLE_HOME/network/admin/tnsnames.ora
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ cat
$ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora
Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12SF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12sf)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12SF)
)
)
LISTENER_ORA12SF
=
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12sf)(PORT = 1521))
---------------------------------아래의 내용을 추가
BEGIN---------------------------------
#Primary
TNS_ORA12RF =
(DESCRIPTION
=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF)
(FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
)
)
#Standby
TNS_ORA12RF_STB =
(DESCRIPTION
=
(ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.111)(PORT = 1522))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME =
ORA12RF_STB)
)
)
---------------------------------아래의 내용을 추가
END-----------------------------------
4. tnsping Test
4-1. Primary 에서 Standby 로 접속
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ tnsping
TNS_ORA12RF_STB
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 29-NOV-2025 16:52:58
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.111)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF_STB)))
OK (10
msec)
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ tnsping
TNS_ORA12RF_STB
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 29-NOV-2025 16:53:18
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.111)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF_STB)))
OK (10
msec)
4-2. Standby 에서 Primary 로 접속
--oracle os
user
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ tnsping
TNS_ORA12RF
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 07-DEC-2025 17:50:58
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES
adapter to resolve the alias
Attempting to contact
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.14)(PORT =
1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.240.15)(PORT = 1522))
(LOAD_BALANCE = OFF) (FAILOVER = ON))
(CONNECT_DATA
= (SERVER = DEDICATED) (SERVICE_NAME =
ORA12RF)< /P >
< P align = left > <
STRONG > < FONT style = "BACKGROUND-COLOR:
#d4ffd4" size = 2 > (FAILOVER_MODE =
(TYPE = SELECT)(METHOD = BASIC))))
OK (0
msec)
5. Primary DB에서 ADG 설정
5-1. 아카이브 로그 모드인지 확인
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:24:46 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ archive log list
Database log
mode
Archive Mode
Automatic
archival
Enabled
Archive
destination
+FRA1
Oldest online log sequence
23
Next log sequence to archive 25
Current log
sequence 25
--> 아카이브
로그 모드인 것을 확인함.
[ol7ora12rf1]<SYS@ORA12RF1>$
col name for a20
col database_role for a20
col
open_mode for a20
col log_mode for a20
select name, inst_id, database_role, open_mode, log_mode
from gv$database;
NAME
INST_ID DATABASE_ROLE
OPEN_MODE
LOG_MODE
-------------------- ----------
-------------------- -------------------- --------------------
ORA12RF
1
PRIMARY
READ WRITE
ARCHIVELOG
ORA12RF
2
PRIMARY
READ WRITE
ARCHIVELOG
2 rows selected.
Elapsed: 00:00:00.01
5-2. 플래시백 로그 활성화
--1번 노드 (oracle os
user)
[ol7ora12rf1]<SYS@ORA12RF1>$ select inst_id, flashback_on from
gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1 NO
2 NO
--> 플래시백
로그를 활성화 해야함
2 rows selected.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter recovery
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
db_recovery_file_dest
string
(NULL)
db_recovery_file_dest_size
big
integer
0
recovery_parallelism
integer
0
remote_recovery_file_dest
string
(NULL)
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_recovery_file_dest='+FRA1' scope=spfile sid='*';
System altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_recovery_file_dest_size=32G scope=both sid='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter flashback
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
db_flashback_retention_target
integer
2880
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_flashback_retention_target=2880 scope=both sid='*';
System altered.
Elapsed: 00:00:00.01
--ora12rf DB 내림 (양쪽 노드 모두
내려감)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res
ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
2 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:34:29 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
--1번 노드(한쪽 노드만 mount 모드로
기동)
[ol7ora12rf1]<SYS@ORA12RF1>$ startup mount
ORACLE instance
started.
Total System Global Area 5033164800 bytes
Fixed
Size
8631048 bytes
Variable
Size
1476398328 bytes
Database
Buffers 3539992576 bytes
Redo
Buffers
8142848 bytes
Database mounted.
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database flashback on;
Database altered.
Elapsed: 00:00:06.10
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database open;
Database altered.
Elapsed: 00:00:01.07
[ol7ora12rf1]<SYS@ORA12RF1>$ select flashback_on from v$database;
FLASHBACK_ON
------------------------------------------------------
YES
1 row selected.
Elapsed: 00:00:00.01
--2번 노드도 올림
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
instance -db ora12rf -instance ORA12RF2 -startoption open
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res
ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 7 18:37:40 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
[ol7ora12rf1]<SYS@ORA12RF1>$ select inst_id, flashback_on from gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1 YES
2
YES
2 rows selected.
Elapsed: 00:00:00.01
--> 플래시백 데이터베이스가 활성화 된것을
확인함
5-3. force logging 설정
--Primary 서버
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:40:09 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
col force_logging
for a20
col inst_id for 999
select inst_id, force_logging from
gv$database;
INST_ID
FORCE_LOGGING
------- --------------------
1 NO
2 NO
2 rows selected.
Elapsed: 00:00:00.02
--force logging
활성화
--해당 설정은 RAC환경에서 한쪽노드에서만 수행하면 됨
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database force logging;
Database altered.
Elapsed: 00:00:00.05
[ol7ora12rf1]<SYS@ORA12RF1>$
col force_logging
for a20
col inst_id for 999
select inst_id, force_logging from
gv$database;
INST_ID FORCE_LOGGING
-------
--------------------
1
YES
2 YES
-->
Force Logging 설정이 완료됨
2 rows selected.
Elapsed: 00:00:00.01
--ADG 구축에 필요한
--Archived log 모드 (필수)
--Flashback
database (선택, Failover 시 빠른 복구)
--Force
Logging (필수)
--위 3가지 설정이 완료된 상황임
5-4. ADG 관련 파라미터 조회 SQL Script 작성
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mkdir -p
/home/oracle/oracle_scripts
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >
/home/oracle/oracle_scripts/adg_par.sql << 'EOF'
SET LINESIZE 300 PAGES 100
COL
VALUE FOR A90
COL NAME FOR A50
SELECT NAME
, VALUE
FROM V$PARAMETER
WHERE
UPPER(NAME)
IN (
UPPER(TRIM('DB_NAME'
))
,
UPPER(TRIM('DB_UNIQUE_NAME'
))
,
UPPER(TRIM('LOG_ARCHIVE_CONFIG' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_2' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_2' ))
,
UPPER(TRIM('REMOTE_LOGIN_PASSWORDFILE'))
,
UPPER(TRIM('LOG_ARCHIVE_FORMAT' ))
,
UPPER(TRIM('LOG_ARCHIVE_MAX_PROCESSES'))
,
UPPER(TRIM('FAL_CLIENT'
))
,
UPPER(TRIM('FAL_SERVER'
))
,
UPPER(TRIM('DB_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('LOG_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('STANDBY_FILE_MANAGEMENT' ))
);
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ chmod 744
/home/oracle/oracle_scripts/adg_par.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ls -l
/home/oracle/oracle_scripts/adg_par.sql
-rwxr--r--. 1 oracle
oinstall 885 Dec 7 20:08
/home/oracle/oracle_scripts/adg_par.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:53:09 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @adg_par
NAME
VALUE
--------------------------------------------------
-----------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
enable
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
(NULL)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
MANUAL
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ mkdir -p
/home/oracle/oracle_scripts
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat >
/home/oracle/oracle_scripts/adg_par.sql << 'EOF'
SET LINESIZE 300 PAGES 100
COL
VALUE FOR A90
COL NAME FOR A50
SELECT NAME
, VALUE
FROM V$PARAMETER
WHERE
UPPER(NAME)
IN (
UPPER(TRIM('DB_NAME'
))
,
UPPER(TRIM('DB_UNIQUE_NAME'
))
,
UPPER(TRIM('LOG_ARCHIVE_CONFIG' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_2' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_2' ))
,
UPPER(TRIM('REMOTE_LOGIN_PASSWORDFILE'))
,
UPPER(TRIM('LOG_ARCHIVE_FORMAT' ))
,
UPPER(TRIM('LOG_ARCHIVE_MAX_PROCESSES'))
,
UPPER(TRIM('FAL_CLIENT'
))
,
UPPER(TRIM('FAL_SERVER'
))
,
UPPER(TRIM('DB_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('LOG_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('STANDBY_FILE_MANAGEMENT' ))
);
EOF
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ chmod 744 /home/oracle/oracle_scripts/adg_par.sql
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ alias cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$
cdos
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus
"/as sysdba"'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:53:09 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF2>$ @adg_par
NAME
VALUE
--------------------------------------------------
--------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
enable
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
(NULL)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
MANUAL
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed: 00:00:00.01
[ol7ora12rf2]<SYS@ORA12RF2>$
5-5. 파라미터 설정
--1번 노드 (oracle os
user)
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH
SID= '*';
System altered.
Elapsed: 00:00:00.03
5-6. 리두 로그 추가
--Primary DB에 Standby Redo
Log를 추가한다.
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >
/home/oracle/oracle_scripts/rdl.sql << 'EOF'
col
group# for 999
col thread# for 999
col member for a50
col STATUS for
a10
col TYPE for a10
col MB for
999,999,999
col STATUS for a15
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$ chmod 744 /home/oracle/oracle_scripts/rdl.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 17:59:16 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @rdl
GROUP#
THREAD# SEQUENCE#
MEMBER
STATUS
TYPE
MB STATUS
------ ------- ----------
-------------------------------------------------- --------------- ----------
------------ ---------------
1
1 28
+FRA1/ORA12RF/ONLINELOG/group_1.259.1213483395
(NULL)
ONLINE
200 CURRENT
1
1 28
+DATA1/ORA12RF/ONLINELOG/group_1.262.1213483395
(NULL)
ONLINE
200 CURRENT
2
1 26
+DATA1/ORA12RF/ONLINELOG/group_2.263.1213483395
(NULL)
ONLINE
200 INACTIVE
2
1 26
+FRA1/ORA12RF/ONLINELOG/group_2.257.1213483395
(NULL)
ONLINE
200 INACTIVE
3
1 27
+FRA1/ORA12RF/ONLINELOG/group_3.258.1213483395
(NULL)
ONLINE
200 INACTIVE
3
1 27
+DATA1/ORA12RF/ONLINELOG/group_3.264.1213483395
(NULL)
ONLINE
200 INACTIVE
4
2 28
+DATA1/ORA12RF/ONLINELOG/group_4.267.1213483489
(NULL)
ONLINE
200 INACTIVE
4
2 28
+FRA1/ORA12RF/ONLINELOG/group_4.260.1213483491
(NULL)
ONLINE
200 INACTIVE
5
2 29
+DATA1/ORA12RF/ONLINELOG/group_5.268.1213483491
(NULL)
ONLINE
200 CURRENT
5
2 29
+FRA1/ORA12RF/ONLINELOG/group_5.261.1213483491
(NULL)
ONLINE
200 CURRENT
6
2 27
+DATA1/ORA12RF/ONLINELOG/group_6.269.1213483491
(NULL)
ONLINE
200 INACTIVE
6
2 27
+FRA1/ORA12RF/ONLINELOG/group_6.262.1213483491
(NULL)
ONLINE
200 INACTIVE
12 rows selected.
Elapsed: 00:00:00.02
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >
/home/oracle/oracle_scripts/stb_rdl.sql << 'EOF'
COLUMN DUMMY FORMAT 999
COLUMN
GROUP# FORMAT 9999
COLUMN THREAD# FORMAT 9999
COLUMN SEQUENCE# FORMAT 9999999
COLUMN ARCHIVED FORMAT A8
COLUMN
STATUS FORMAT A12
COLUMN MEMBER FORMAT A60
WORD_WRAPPED
SELECT 1 AS DUMMY,
a.GROUP#,
a.THREAD#,
a.SEQUENCE#,
a.ARCHIVED,
a.STATUS,
b.STATUS AS
LOG_STATUS,
b.TYPE,
b.MEMBER
FROM V$STANDBY_LOG a, v$logfile b
WHERE a.group# = b.group#
ORDER BY a.GROUP#;
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$ chmod 744 /home/oracle/oracle_scripts/stb_rdl.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 18:00:54 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @stb_rdl
no rows selected
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$
--Standby Redo Log 추가 (Standby
Redo log의 Group은 Redo log보다 1개 더 많아야함)
--Redo log group의
수 3 + 1 = Standby Redo Log Group의 개수(=4)
ALTER DATABASE ADD
STANDBY LOGFILE THREAD 1 group 7 ('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 group 8
('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY
LOGFILE THREAD 1 group 9 ('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 group 10
('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY
LOGFILE THREAD 2 group 11 ('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 group 12
('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY
LOGFILE THREAD 2 group 13 ('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 group 14
('+DATA1','+FRA1') SIZE 200M;
[ol7ora12rf1]<SYS@ORA12RF1>$ @stb_rdl
DUMMY GROUP#
THREAD# SEQUENCE# ARCHIVED STATUS
LOG_STATUS
TYPE MEMBER
-----
------ ------- --------- -------- ------------ --------------------- ----------
-------------------------------------------------
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_7.282.1220458057
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_7.419.1220458057
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_8.281.1220458059
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_8.418.1220458059
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_9.280.1220458059
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_9.417.1220458059
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_10.279.1220458059
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_10.416.1220458059
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_11.278.1220458061
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_11.415.1220458061
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_12.265.1220458061
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_12.414.1220458061
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_13.270.1220458061
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_13.413.1220458061
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_14.277.1220458063
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_14.412.1220458063
16 rows selected.
Elapsed: 00:00:00.01
--> Standby Redo Log 추가를
완료함
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat >
/home/oracle/oracle_scripts/rdl.sql << 'EOF'
col
group# for 999
col thread# for 999
col member for a50
col STATUS for
a10
col TYPE for a10
col MB for
999,999,999
col STATUS for a15
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$ chmod 744 /home/oracle/oracle_scripts/rdl.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >
/home/oracle/oracle_scripts/stb_rdl.sql << 'EOF'
COLUMN DUMMY FORMAT 999
COLUMN
GROUP# FORMAT 9999
COLUMN THREAD# FORMAT 9999
COLUMN SEQUENCE# FORMAT 9999999
COLUMN ARCHIVED FORMAT A8
COLUMN
STATUS FORMAT A12
COLUMN MEMBER FORMAT A60
WORD_WRAPPED
SELECT 1 AS DUMMY,
a.GROUP#,
a.THREAD#,
a.SEQUENCE#,
a.ARCHIVED,
a.STATUS,
b.STATUS AS
LOG_STATUS,
b.TYPE,
b.MEMBER
FROM V$STANDBY_LOG a, v$logfile b
WHERE a.group# = b.group#
ORDER BY a.GROUP#;
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$ chmod 744 /home/oracle/oracle_scripts/stb_rdl.sql
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/oracle_scripts]$
alias cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$
cdos
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 7 20:17:07 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf2]<SYS@ORA12RF2>$ @rdl
GROUP# THREAD#
SEQUENCE#
MEMBER
STATUS
TYPE
MB STATUS
------ ------- ---------
-------------------------------------------------- --------------- ----------
------------ ---------
1
1 26
+FRA1/ORA12RF/ONLINELOG/group_1.259.1213483395
(NULL)
ONLINE
200 CURRENT
1
1 26
+DATA1/ORA12RF/ONLINELOG/group_1.262.1213483395
(NULL)
ONLINE
200 CURRENT
2
1 24
+DATA1/ORA12RF/ONLINELOG/group_2.263.1213483395
(NULL)
ONLINE
200 INACTIVE
2
1 24
+FRA1/ORA12RF/ONLINELOG/group_2.257.1213483395
(NULL)
ONLINE
200 INACTIVE
3
1 25
+FRA1/ORA12RF/ONLINELOG/group_3.258.1213483395
(NULL)
ONLINE
200 INACTIVE
3
1 25
+DATA1/ORA12RF/ONLINELOG/group_3.264.1213483395
(NULL)
ONLINE
200 INACTIVE
4
2 20
+DATA1/ORA12RF/ONLINELOG/group_4.267.1213483489
(NULL)
ONLINE
200 INACTIVE
4
2 20
+FRA1/ORA12RF/ONLINELOG/group_4.260.1213483491
(NULL)
ONLINE
200 INACTIVE
5
2 21
+DATA1/ORA12RF/ONLINELOG/group_5.268.1213483491
(NULL)
ONLINE
200 CURRENT
5
2 21
+FRA1/ORA12RF/ONLINELOG/group_5.261.1213483491
(NULL)
ONLINE
200 CURRENT
6
2 19
+DATA1/ORA12RF/ONLINELOG/group_6.269.1213483491
(NULL)
ONLINE
200 INACTIVE
6
2 19
+FRA1/ORA12RF/ONLINELOG/group_6.262.1213483491
(NULL)
ONLINE
200 INACTIVE
12 rows selected.
Elapsed: 00:00:00.02
[ol7ora12rf2]<SYS@ORA12RF2>$ @stb_rdl
DUMMY GROUP#
THREAD# SEQUENCE# ARCHIVED STATUS
LOG_STATUS
TYPE
MEMBER
----- ------ ------- --------- --------
------------ --------------------- ---------------------
-------------------------------------------------
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_7.282.1220458057
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_7.419.1220458057
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_8.281.1220458059
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_8.418.1220458059
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_9.280.1220458059
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_9.417.1220458059
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_10.279.1220458059
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_10.416.1220458059
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_11.278.1220458061
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_11.415.1220458061
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_12.265.1220458061
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_12.414.1220458061
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_13.270.1220458061
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_13.413.1220458061
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF/ONLINELOG/group_14.277.1220458063
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_14.412.1220458063
16 rows selected.
Elapsed: 00:00:00.02
[ol7ora12rf2]<SYS@ORA12RF2>$
6. Primary DB 풀 백업
6-1. 양쪽 노드에 Autobackup 디렉토리 생성
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mkdir -pv
/home/oracle/BACKUP_FOR_ADG/autobackup
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG’
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG/autobackup’
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >>
~oracle/.bash_profile << 'EOF'
alias cdbfa='cd
/home/oracle/BACKUP_FOR_ADG'
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ source
~oracle/.bash_profile
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdbfa
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/BACKUP_FOR_ADG]$
--2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ mkdir -pv
/home/oracle/BACKUP_FOR_ADG/autobackup
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG’
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG/autobackup’
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat >>
~oracle/.bash_profile << 'EOF'
alias cdbfa='cd
/home/oracle/BACKUP_FOR_ADG'
EOF
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ source
~oracle/.bash_profile
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$
cdbfa
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle/BACKUP_FOR_ADG]$
--> AutoBackup 되는 위치는 반드시 모든 노드에 디렉토리가 있어야 함.
6-2. Primary DB 풀 백업
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crontab
-e
crontab:
installing new crontab
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crontab
-l
0 2 * * *
/home/oracle/os_scripts/delete_oracle_log.sh &>/dev/null
10 2 1 * *
/home/oracle/os_scripts/modify_oracle_alert_log.sh
&>/dev/null
#20 2 * * * /home/oracle/os_scripts/rman_backup.sh
&>/dev/null
--> 자동 백업 작업을 하지 않도록 설정함 (ADG구축완료후
주석해제하면됨)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/BACKUP_FOR_ADG]$
alias rt
alias rt='rman target /'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/BACKUP_FOR_ADG]$
rt
Recovery Manager: Release 12.2.0.1.0 - Production on Sun Nov 30 18:08:14 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA12RF (DBID=4288610047)
RMAN>
run {
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE
DISK TO '/home/oracle/BACKUP_FOR_ADG/autobackup/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/home/oracle/BACKUP_FOR_ADG/snapcf_CA.f';
CONFIGURE
DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO
1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE
DISK TO 1;
CONFIGURE ARCHIVELOG DELETION POLICY TO
NONE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE
'DEFAULT' OPTIMIZE FOR LOAD TRUE;
#CONFIGURE ARCHIVELOG
DELETION POLICY TO APPLIED ON ALL STANDBY; #For ADG
}
RUN {
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
sql 'alter system archive log current';
sql 'alter system checkpoint';
crosscheck backupset;
crosscheck
backup;
crosscheck copy;
crosscheck archivelog all;
BACKUP
AS COMPRESSED BACKUPSET database FORMAT
'/home/oracle/BACKUP_FOR_ADG/ORA12RF_%U.bkp';
BACKUP
CURRENT CONTROLFILE FOR STANDBY FORMAT
'/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_1_%U_%T';
delete noprompt obsolete;
delete
noprompt expired backup;
CONFIGURE CONTROLFILE
AUTOBACKUP ON;
}
run {
crosscheck archivelog all;
backup
archivelog all format '/home/oracle/BACKUP_FOR_ADG/%d_ARCHIVE_%T_%u_s%s_p%p'
delete input;
BACKUP CURRENT CONTROLFILE FOR STANDBY
FORMAT '/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_2_%U_%T';
}
--> BACKUP CURRENT
CONTROLFILE FOR STANDBY FORMAT
'/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_2_%U_%T';
--> 아카이브 로그까지 백업 받은 후 최종적으로 STANDBY 용
컨트롤 파일을 백업 받음
--> 추후 Standby에서 복구
시 해당 컨트롤 파일을 복구 시킬 것임
--> 해당 컨트롤
파일이 아카이브 로그의 백업까지 정확히 인식하고 있음
RMAN> list backup;
List of Backup Sets
===================
BS Key Size
Device Type Elapsed Time Completion Time
-------
---------- ----------- ------------ -------------------
181
2.04G
DISK 00:00:03
2025-12-21 16:21:15
BP Key:
181 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T162112
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
List of
Archived Logs in backup set 181
Thrd
Seq Low SCN Low
Time Next
SCN Next Time
---- ------- ----------
------------------- ---------- ---------
1 18 13043984
2025-12-19 14:50:20 13224141 2025-12-19 22:48:55
1 19
13224141 2025-12-19 22:48:55 13224806 2025-12-19
22:49:02
1
20 13224806 2025-12-19 22:49:02
13381060 2025-12-20 10:04:03
1 21 13381060
2025-12-20 10:04:03 13458769 2025-12-20 15:02:22
1 22
13458961 2025-12-20 15:03:55 13606151 2025-12-20
23:00:25
1
23 13606151 2025-12-20 23:00:25
13607814 2025-12-20 23:04:21
1 24 13607814
2025-12-20 23:04:21 13670777 2025-12-21 02:20:03
1 25
13670777 2025-12-21 02:20:03 13806243 2025-12-21
10:30:01
1
26 13806243 2025-12-21 10:30:01
13900438 2025-12-21 16:14:51
1 27 13900438
2025-12-21 16:14:51 13902289 2025-12-21 16:21:11
2 15
13069967 2025-12-19 16:00:03 13257264 2025-12-20
00:06:14
2
16 13257264 2025-12-20 00:06:14
13381059 2025-12-20 10:04:04
2 17 13381059
2025-12-20 10:04:04 13381223 2025-12-20 10:04:04
2 18
13419384 2025-12-20 13:11:16 13579249 2025-12-20
21:20:16
2
19 13579249 2025-12-20 21:20:16
13670792 2025-12-21 02:20:04
2 20 13670792
2025-12-21 02:20:04 13806248 2025-12-21 10:30:03
2 21
13806248 2025-12-21 10:30:03 13900433 2025-12-21
16:14:51
2
22 13900433 2025-12-21 16:14:51
13902296 2025-12-21 16:21:12
BS Key Type LV
Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
184
Full 5.47G
DISK 00:04:28
2025-12-21 17:17:24
BP Key:
184 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T171256
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_614bthco_1_1.bkp
List of Datafiles in backup set 184
File LV Type Ckp SCN Ckp
Time Abs Fuz
SCN Sparse Name
---- -- ---- ----------
------------------- ----------- ------ ----
1 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/system.257.1213483305
2 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/tuner_data1.272.1216160599
3 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/sysaux.258.1213483329
4 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/undotbs1.259.1213483345
5 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/undotbs2.266.1213483407
7 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/users.260.1213483345
8 Full 13917361 2025-12-21
17:12:56
NO
+DATA1/ORA12RF/DATAFILE/tuner_idx1.273.1216160601
--> 백업본의 Check Point SCN 은 13917361 임
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
185
Full 1.13M
DISK 00:00:01
2025-12-21 17:17:32
BP Key:
185 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T171256
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_624bthlb_1_1.bkp
SPFILE Included: Modification time: 2025-12-21
16:06:50
SPFILE db_unique_name: ORA12RF
Control File Included: Ckp SCN:
13918029 Ckp time: 2025-12-21
17:17:31
BS Key Type LV
Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
186
Full 19.19M
DISK 00:00:01
2025-12-21 17:17:34
BP Key:
186 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T171733
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_1_634bthld_1_1_20251221
Standby Control File Included: Ckp SCN: 13918058 Ckp
time: 2025-12-21 17:17:33
--> 이게
나중에 datafile 백업 직 후 백업 받은 Standby Control File 임 13918058 시점에서 백업 받았음
--> Standby DB의 Restore controlfile 작업 시 해당
파일(/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_1_634bthld_1_1_20251221)로
복구해야함
BS Key
Size Device Type Elapsed Time Completion
Time
------- ---------- ----------- ------------
-------------------
187
36.96M DISK
00:00:00 2025-12-21 17:17:46
BP Key:
187 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T171746
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
List of Archived
Logs in backup set 187
Thrd
Seq Low SCN Low
Time Next
SCN Next Time
---- ------- ----------
------------------- ---------- ---------
1 28 13902289
2025-12-21 16:21:11 13917254 2025-12-21 17:12:55
1 29
13917254 2025-12-21 17:12:55 13918143 2025-12-21 17:17:43
2 23
13902296 2025-12-21 16:21:12 13917251 2025-12-21
17:12:55
2
24 13917251 2025-12-21 17:12:55 13918154 2025-12-21
17:17:46
--> 아카이브 로그 백업 본임
--> Thread 1번의 최대 sequence 는 29 이고 Next SCN은 13918143
임
--> Thread 2번의 최대 sequence 는 24 이고 Next SCN은
13918154 임
--> 결국 Thread 1번의 sequence 27 의 Next SCN 이
더 작으므로 13918143-1=13918142 까지 복구가 가능한 상황임
--> 복구 시 에는
RECOVER DATABASE UNTIL SCN 13918143; --> 이렇게 해야함
--> RMAN에서 UNTIL SCN X를 사용할 때, Oracle은 "SCN X 도달 직전까지"를
의미
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
188
Full 19.19M
DISK 00:00:01
2025-12-21 17:17:48
BP Key:
188 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T171747
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_2_654bthlr_1_1_20251221
Standby Control File Included: Ckp SCN:
13918186 Ckp time: 2025-12-21
17:17:47
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
189
Full 19.22M
DISK 00:00:00
2025-12-21 17:17:49
BP Key:
189 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T171749
Piece Name:
/home/oracle/BACKUP_FOR_ADG/autobackup/c-4288610047-20251221-03
SPFILE Included: Modification time: 2025-12-21
16:06:50
SPFILE db_unique_name: ORA12RF
Control File Included: Ckp SCN:
13918198 Ckp time: 2025-12-21
17:17:49
RMAN> quit
Recovery Manager complete.
--백업 파일 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ls -lR
/home/oracle/BACKUP_FOR_ADG
/home/oracle/BACKUP_FOR_ADG:
total 7973268
drwxr-xr-x. 2 oracle
oinstall 38 Dec 21 17:17
autobackup
-rw-r--r--. 1 oracle
asmadmin 3192 Dec 21 16:36
initORA12RF.ora
-rw-r-----. 1 oracle asmadmin 5872197632
Dec 21 17:17 ORA12RF_614bthco_1_1.bkp
-rw-r-----. 1
oracle asmadmin 1196032 Dec 21 17:17
ORA12RF_624bthlb_1_1.bkp
-rw-r-----. 1 oracle asmadmin
2192104448 Dec 21 16:21 ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
-rw-r-----. 1 oracle asmadmin 38760960 Dec 21
17:17 ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
-rw-r-----. 1 oracle asmadmin 20135936 Dec 21
17:17 ORA12RF_STB_CTL_1_634bthld_1_1_20251221
-rw-r-----. 1 oracle asmadmin 20135936 Dec 21
17:17 ORA12RF_STB_CTL_2_654bthlr_1_1_20251221
-rwxr-xr-x. 1 oracle
oinstall 3584 Dec 21 16:37 orapwORA12RF
-rw-r-----. 1 oracle asmadmin 20070400 Dec 21
17:17 snapcf_CA.f
/home/oracle/BACKUP_FOR_ADG/autobackup:
total 19700
-rw-r-----. 1 oracle
asmadmin 20168704 Dec 21 17:17 c-4288610047-20251221-03
6-3. Primary DB의 pfile 과 pwfile 을 백업
--1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 18:56:18 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--파라미터 파일
백업
[ol7ora12rf1]<SYS@ORA12RF1>$ create pfile='/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora'
from spfile;
File created.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition
Release 12.2.0.1.0 - 64bit Production
--spfile과 pwfile의 위치를
확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl config
database -db ora12rf | grep -i file
Spfile:
+DATA1/ORA12RF/PARAMETERFILE/spfile.276.1216917171
Password file:
+DATA1/ORA12RF/PASSWORD/pwdora12rf.256.1213483291
--grid os user 로 접속해서 pwfile을
/tmp 위치에 복사
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd pwcopy
+DATA1/ORA12RF/PASSWORD/pwdora12rf.256.1213483291
/tmp/orapwORA12RF
copying +DATA1/ORA12RF/PASSWORD/pwdora12rf.256.1213483291
-> /tmp/orapwORA12RF
[+ASM1:grid@ol7ora12rf1][/home/grid]$ chmod 775
/tmp/orapwORA12RF
--> oracle os user가
복사해서 가져갈 수 있도록 775 권한을 줌
[+ASM1:grid@ol7ora12rf1][/home/grid]$ ls -l
/tmp/orapwORA12RF
-rwxrwxr-x. 1 grid oinstall 3584 Dec 10 22:06
/tmp/orapwORA12RF
--oracle os user에서 /tmp
위치에 있는 pwfile 을 백업본이 저장된 디렉토리에 복사
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp
/tmp/orapwORA12RF /home/oracle/BACKUP_FOR_ADG/
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ls -l
/home/oracle/BACKUP_FOR_ADG/orapwORA12RF
-rwxr-xr-x. 1 oracle
oinstall 3584 Dec 10 22:09
/home/oracle/BACKUP_FOR_ADG/orapwORA12RF
--> 여기까지 해서 백업본, 아카이브 백업본,
스탠바이 컨트롤 파일, pfile, pwfile 까지
--> 모두
/home/oracle/BACKUP_FOR_ADG/ 위치에 존재하게됨
7. Standby 서버에서 Primary 서버의 DB 백업본 가져오기
--oracle os user로 접속
--Primary의 백업본을 가져올 디렉토리를
생성
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ mkdir -pv
/home/oracle/BACKUP_FOR_ADG/autobackup
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG’
mkdir: created
directory ‘/home/oracle/BACKUP_FOR_ADG/autobackup’
--생성한 디렉토리를 .bash_profile에
alias로 등록
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ cat >>
~oracle/.bash_profile << 'EOF'
alias cdbfa='cd
/home/oracle/BACKUP_FOR_ADG'
EOF
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ source ~oracle/.bash_profile
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ cdbfa
--Primary에
있는 DB 백업본을 scp를 이용해서 복사해옴
[ORA12SF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
scp -rp ol7ora12rf1:/home/oracle/BACKUP_FOR_ADG/
/home/oracle/
oracle@ol7ora12rf1''s password:
c-4288610047-20251221-03
100% 19MB 195.1MB/s 00:00
snapcf_CA.f
100% 19MB 187.3MB/s 00:00
ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
100% 2091MB 268.3MB/s 00:07
initORA12RF.ora
100% 3192 458.1KB/s 00:00
orapwORA12RF
100% 3584 565.4KB/s 00:00
ORA12RF_614bthco_1_1.bkp
100% 5600MB 114.5MB/s 00:48
ORA12RF_624bthlb_1_1.bkp
100% 1168KB 163.9MB/s 00:00
ORA12RF_STB_CTL_1_634bthld_1_1_20251221
100% 19MB 198.0MB/s 00:00
ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
100% 37MB 248.1MB/s 00:00
ORA12RF_STB_CTL_2_654bthlr_1_1_20251221
100% 19MB 218.4MB/s 00:00
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ ls -lR
/home/oracle/BACKUP_FOR_ADG
/home/oracle/BACKUP_FOR_ADG:
total
7973256
drwxr-xr-x. 2 oracle
oinstall 38 Dec 21 17:17
autobackup
-rw-r--r--. 1 oracle
oinstall 3192 Dec 21 17:21
initORA12RF.ora
-rw-r-----. 1 oracle oinstall 5872197632
Dec 21 17:17 ORA12RF_614bthco_1_1.bkp
-rw-r-----. 1
oracle oinstall 1196032 Dec 21 17:17
ORA12RF_624bthlb_1_1.bkp
-rw-r-----. 1 oracle oinstall
2192104448 Dec 21 16:21 ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
-rw-r-----. 1 oracle oinstall 38760960 Dec 21
17:17 ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
-rw-r-----. 1 oracle oinstall 20135936 Dec 21
17:17 ORA12RF_STB_CTL_1_634bthld_1_1_20251221
-rw-r-----. 1 oracle oinstall 20135936 Dec 21
17:17 ORA12RF_STB_CTL_2_654bthlr_1_1_20251221
-rwxr-xr-x. 1 oracle
oinstall 3584 Dec 21 17:21 orapwORA12RF
-rw-r-----. 1 oracle oinstall 20070400 Dec 21
17:17 snapcf_CA.f
/home/oracle/BACKUP_FOR_ADG/autobackup:
total 19696
-rw-r-----. 1 oracle
oinstall 20168704 Dec 21 17:17 c-4288610047-20251221-03
8. Standby 서버 설정
8-1. 필수 바이너리 권한 확인
--oracle os
user
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ ls -al
$ORACLE_HOME/bin | egrep "extjob$|jssu$|oracle$|oradism"
-rwsr-x---. 1
root oinstall 2241432 Nov 16 23:15 extjob
-rwsr-x---. 1 root oinstall
2252256 Nov 16 19:13 jssu
-rwsr-s--x. 1 oracle
asmadmin 408794904 Nov 16 23:15 oracle
-rwsr-x---.
1 root oinstall 95844 Jan 26 2017
oradism
--> 만약 소유자/그룹 및 권한이 위와 같지
않다면 맞춰줘야함
--> oracle은 oracle:asmadmin에 6751
--> extjob, jssu, oradism 은 root:oinstall에
4750
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ ls -al $GRID_HOME/bin |
egrep "extjob$|jssu$|oracle$|oradism"
-rwsr-x---. 1 root oinstall 2241432 Nov
16 23:09 extjob
-rwsr-x---. 1 root
oinstall 2252256 Nov 16 18:15 jssu
-rwsr-s--x. 1 grid oinstall 373530016 Nov 16 23:09
oracle
-rwsr-x---. 1 root
oinstall 95844 Jan 26 2017 oradism
--> 만약 소유자/그룹 및
권한이 위와 같지 않다면 맞춰줘야함
-->
oracle은 grid:oinstall 6751
-->
extjob, jssu, oradism 은 root:oinstall에 4750
8-2. oracle os user 로그인 시 접속 대상을 지정할 수 있도록 설정
--oracle os
user
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ alias
cdoss
alias cdoss='cd
/home/oracle/os_scripts'
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$
cdoss
[ORA12SF:oracle@ol7ora12sf][/home/oracle/os_scripts]$ cat
> /home/oracle/os_scripts/oenv.sh << 'EOF'
#!/bin/bash
echo "접속할
데이터베이스(DB_NAME)를 선택하세요:"
echo "1) ORA12SF"
echo "2) ORA12RF"
echo "3)
RESERVED"
if [ "$#" -eq 0 ];
then
read -e -r -p "번호를 입력하세요
(1,2,3): " choice
else
choice="$1"
fi
case "$choice"
in
1) SID="ORA12SF" ;;
2) SID="ORA12RF" ;;
3) SID="RESERVED" ;;
*)
echo "잘못된 입력입니다.
ORA12SF DB로 적용합니다."
SID="ORA12SF"
;;
esac
export ORACLE_SID="$SID"
echo "현재
ORACLE_SID: $ORACLE_SID"
if [ -z "$ORACLE_SID" ];
then
echo "ORACLE_SID 환경변수가 설정되어 있지
않습니다. (예: export ORACLE_SID=ORA12SF)"
exit 1
fi
case "$ORACLE_SID"
in
ORA12SF)
echo "ORA12SF 환경
설정 적용 중..."
export ORACLE_UNQNAME=ORA12SF
export
ORACLE_UNQNAME_LOWER=ora12sf
export
ORACLE_DBNAME=ORA12SF
export
ORACLE_DBNAME_LOWER=ora12sf
export
ORACLE_SID=ORA12SF
export
ORACLE_SID_LOWER=ora12sf
;;
ORA12RF)
echo "ORA12RF 환경
설정 적용 중..."
export ORACLE_UNQNAME=ORA12RF_STB
export
ORACLE_UNQNAME_LOWER=ora12rf_stb
export
ORACLE_DBNAME=ORA12RF
export
ORACLE_DBNAME_LOWER=ora12rf
export
ORACLE_SID=ORA12RF
export
ORACLE_SID_LOWER=ora12rf
;;
RESERVED)
echo "RESERVED
환경 설정 적용 중..."
export
ORACLE_UNQNAME=RESERVED
export
ORACLE_UNQNAME_LOWER=reserved
export
ORACLE_DBNAME=RESERVED
export
ORACLE_DBNAME_LOWER=reserved
export
ORACLE_SID=RESERVED
export
ORACLE_SID_LOWER=reserved
;;
*)
echo "알 수 없는
ORACLE_SID: $ORACLE_SID"
exit 1
;;
esac
echo "환경 설정 완료 :
현재 ORACLE_SID = $ORACLE_SID"
EOF
[ORA12SF:oracle@ol7ora12sf][/home/oracle/os_scripts]$ chmod 775 /home/oracle/os_scripts/oenv.sh
[ORA12SF:oracle@ol7ora12sf][/home/oracle/os_scripts]$ vi
~oracle/.bash_profile
[ORA12SF:oracle@ol7ora12sf][/home/oracle/os_scripts]$ cat
~oracle/.bash_profile
#
.bash_profile
# Get the aliases
and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
stty erase $(tput
kbs) ##추가 for oenv
. /home/oracle/os_scripts/oenv.sh
##추가 for oenv
export PATH
export TMP=/tmp
export
TMPDIR=$TMP
export EDITOR=vi
export
ORACLE_HOSTNAME=`hostname`
#export ORACLE_UNQNAME_LOWER=ora12sf ##주석 처리 for oenv
export
ORACLE_BASE=/u01/app/oracle
export
GRID_HOME=/u01/app/12c/grid
export
DB_HOME=$ORACLE_BASE/product/12c/db_1
export
ORACLE_HOME=$DB_HOME
#export ORACLE_DBNAME=ORA12SF ##주석 처리 for oenv
#export ORACLE_DBNAME_LOWER=ora12sf ##주석 처리 for oenv
#export ORACLE_SID=ORA12SF ##주석 처리 for oenv
#export ORACLE_SID_LOWER=ora12sf ##주석 처리 for oenv
export ORACLE_TERM=xterm
export
BASE_PATH=/usr/sbin:$PATH
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias ss='rlwrap sqlplus "/as sysdba"'
alias st='rlwrap sqlplus tuner/oracle'
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdb='cd $ORACLE_BASE'
alias
cdo='cd $ORACLE_HOME'
alias cdod='cd
$ORACLE_HOME/dbs'
alias alog='tail -f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias llog='tail -f
$ORACLE_BASE/diag/tnslsnr/`hostname`/listener/trace/listener.log'
alias vllog='vi -R
$ORACLE_BASE/diag/tnslsnr/`hostname`/listener/trace/listener.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for
FileSystem
alias csrt='crsctl stat res -t'
alias rt='rman target /'
alias
cdrb='cd /home/oracle/rman_backup/$ORACLE_DBNAME'
alias
cdrba='cd /home/oracle/rman_backup/$ORACLE_DBNAME/ADG'
alias cdrbx='cd
/home/oracle/rman_backup/$ORACLE_DBNAME/XTTS'
alias
cdx='cd /home/oracle/xtts'
alias cdos='cd
/home/oracle/oracle_scripts'
alias cdoss='cd
/home/oracle/os_scripts'
alias cdrbl='cd
/home/oracle/os_scripts/rman_log'
set -o vi
stty erase ^H
stty erase ^?
alias cdbfa='cd /home/oracle/BACKUP_FOR_ADG'
alias oenv='source
/home/oracle/os_scripts/oenv.sh' ##추가 for oenv
[ORA12SF:oracle@ol7ora12sf][/home/oracle]$ source
~oracle/.bash_profile
접속할 데이터베이스(DB_NAME)를
선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3):
2
현재 ORACLE_SID:
ORA12RF
ORA12RF 환경 설정 적용 중...
환경
설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
oenv
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재
ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_UNQNAME
ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_UNQNAME_LOWER
ora12rf_stb
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_DBNAME
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_DBNAME_LOWER
ora12rf
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_SID
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_SID_LOWER
ora12rf
8-3. Standby 서버 내 ADG전용 리스너 정보 확인
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ lsnrctl status
LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 10-DEC-2025 23:17:36
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
07-DEC-2025 18:15:01
Uptime
3 days 5 hr. 2 min. 34 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener
Log File
/u01/app/oracle/diag/tnslsnr/ol7ora12sf/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.111)(PORT=1522)))
--> 위의 정보를 Standby DB의 local_listener 파라미터로 세팅할 것임
Services Summary...
Service "ORA12RF_STB_DGMGRL" has 1 instance(s).
Instance "ORA12RF", status UNKNOWN, has 1 handler(s) for this service...
--> 정적 리스너가 구동중인 것을 확인
The command completed successfully
8-4. 파라미터 파일 세팅
--oracle os
user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cp
/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora
/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora.bak
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$ vi /home/oracle/BACKUP_FOR_ADG/initORA12RF.ora
--아래와 같이 파라미터 파일
수정
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora
*._optimizer_gather_stats_on_load=FALSE
*.audit_file_dest='/u01/app/oracle/admin/ORA12RF_STB/adump'
##Modify
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.cluster_database=false
##Modify
*.compatible='12.2.0'
*.control_files='+DATA1/ORA12RF_STB/CONTROLFILE/current.261.1213483391','+FRA1/ORA12RF_STB/CONTROLFILE/current.256.1213483391'
##Modify
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+DATA1'
*.db_create_online_log_dest_2='+FRA1'
*.db_flashback_retention_target=2880
*.db_unique_name='ORA12RF_STB' ##Add
*.db_name='ORA12RF'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=34359738368
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA12RFXDB)'
*.filesystemio_options='SETALL'
*.heat_map='OFF'
family:dw_helper.instance_mode='read-only'
*.local_listener='
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.111)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.111)(PORT=1522)))'
##Modify
*.log_archive_dest_1='LOCATION=+FRA1'
*.log_archive_format='%t_%s_%r.ARC'
*.max_string_size='EXTENDED'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.pga_aggregate_target=1601m
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.sga_target=4800m
*.standby_file_management='AUTO'
*.undo_retention=3600
*.undo_tablespace='UNDOTBS1' ##Modify
*.uniform_log_timestamp_format=FALSE
*.use_large_pages='true' ##Modify
*.log_file_name_convert=('+DATA1/ORA12RF/',
'+DATA1/ORA12RF_STB/', '+FRA1/ORA12RF/', '+FRA1/ORA12RF_STB/')
##Add
8-5. 필수 디렉토리 생성
--oracle os
user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ mkdir -pv
/u01/app/oracle/admin/ORA12RF_STB/adump
mkdir: created
directory ‘/u01/app/oracle/admin/ORA12RF_STB’
mkdir:
created directory ‘/u01/app/oracle/admin/ORA12RF_STB/adump’
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ls -l
/u01/app/oracle | grep admin
drwxrwxr-x. 5 grid oinstall
52 Dec 11 22:51 admin
-->
/u01/app/oracle/admin 디렉토리의 소유자가 grid:oinstall 이고 권한이 775인 것을
확인
8-6. Standby 서버에서 기존에 실행 중인 오라클 인스턴스를 stop 시키기
--기존에 Standby 서버에 운영중인 오라클 DB가 있었음 이걸 내리고 테스트할려고 하는것임
--메모리 공간 때문에 내리는 것임
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
crsctl stat res ora.ora12sf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12sf.db
1 ONLINE
ONLINE
ol7ora12sf
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$ srvctl stop database -db ora12sf
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
crsctl stat res ora.ora12sf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12sf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
9. Standby 서버에서 Primary DB의 풀 백업본을 복구
9-1. nomount 모드로 기동
--oracle os
user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
oenv
alias oenv='source
/home/oracle/os_scripts/oenv.sh'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
oenv
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID:
ORA12RF
ORA12RF 환경 설정 적용 중...
환경
설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
echo $ORACLE_UNQNAME
ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
echo $ORACLE_SID
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
echo $ORACLE_DBNAME
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 19:58:39 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
[ol7ora12sf]<SYS@ORA12RF>$ startup nomount
pfile='/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora';
ORACLE instance
started.
Total System
Global Area 5033164800 bytes
Fixed
Size
8631048 bytes
Variable
Size
1409289464 bytes
Database
Buffers 3607101440 bytes
Redo
Buffers
8142848 bytes
9-2. Standby 컨트롤 파일 복구
--새로운 ssh창을 열어서
--oracle os user로 접속
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재
ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ls -laR
/home/oracle/BACKUP_FOR_ADG/
/home/oracle/BACKUP_FOR_ADG/:
total
7973268
drwxr-xr-x. 3 oracle
oinstall 4096 Dec 21 17:26 .
drwx------. 12 oracle
oinstall 4096 Dec 21 17:27 ..
drwxr-xr-x. 2 oracle
oinstall 38 Dec 21 17:17
autobackup
-rw-r--r--. 1 oracle
oinstall 1775 Dec 21 17:26
initORA12RF.ora
-rw-r--r--. 1 oracle
oinstall 3192 Dec 21 17:24
initORA12RF.ora.bak
-rw-r-----. 1 oracle oinstall
5872197632 Dec 21 17:17 ORA12RF_614bthco_1_1.bkp
-rw-r-----. 1 oracle oinstall
1196032 Dec 21 17:17 ORA12RF_624bthlb_1_1.bkp
-rw-r-----. 1 oracle oinstall 2192104448 Dec 21 16:21
ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
-rw-r-----. 1 oracle oinstall 38760960
Dec 21 17:17 ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
-rw-r-----. 1 oracle oinstall 20135936
Dec 21 17:17 ORA12RF_STB_CTL_1_634bthld_1_1_20251221
-rw-r-----. 1 oracle oinstall 20135936
Dec 21 17:17 ORA12RF_STB_CTL_2_654bthlr_1_1_20251221
-rwxr-xr-x. 1 oracle
oinstall 3584 Dec 21 17:21 orapwORA12RF
-rw-r-----. 1 oracle oinstall 20070400
Dec 21 17:17 snapcf_CA.f
/home/oracle/BACKUP_FOR_ADG/autobackup:
total 19700
drwxr-xr-x. 2 oracle
oinstall 38 Dec 21 17:17 .
drwxr-xr-x. 3 oracle oinstall 4096
Dec 21 17:26 ..
-rw-r-----. 1 oracle oinstall 20168704
Dec 21 17:17 c-4288610047-20251221-03
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
rt
alias rt='rman
target /'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
rt
Recovery Manager: Release 12.2.0.1.0 - Production on Thu Dec 11 22:59:51 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA12RF (not mounted)
RMAN> restore
controlfile from
'/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_1_634bthld_1_1_20251221';
--> Primary DB 백업 시 아카이브 로그 백업 직후 백업 받은 Standby
Controlfile 임
Starting restore
at 2025-12-21 18:05:18
using target database control
file instead of recovery catalog
allocated channel:
ORA_DISK_1
channel ORA_DISK_1: SID=823 device
type=DISK
channel
ORA_DISK_1: restoring control file
channel ORA_DISK_1:
restore complete, elapsed time: 00:00:01
output file
name=+DATA1/ORA12RF_STB/CONTROLFILE/current.291.1220465119
output file
name=+FRA1/ORA12RF_STB/CONTROLFILE/current.441.1220465119
Finished restore at 2025-12-21 18:05:19
--> 컨트롤 파일 복구 완료
--새로운 ssh창을 열어서
--grid os user로
접속하여 복구된 컨트롤 파일 확인
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls -sl
+DATA1/ORA12RF_STB/CONTROLFILE/
Type
Redund Striped
Time
Sys Block_Size Blocks
Bytes Space Name
CONTROLFILE UNPROT FINE
DEC 21 18:00:00 Y
16384 1225 20070400 33554432
current.291.1220465119
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls -sl
+FRA1/ORA12RF_STB/CONTROLFILE/
Type
Redund Striped
Time
Sys Block_Size Blocks
Bytes Space Name
CONTROLFILE UNPROT FINE
DEC 21 18:00:00 Y
16384 1225 20070400 33554432
current.441.1220465119
--새로운 ssh창 열어서
--oracle os user 로 접속
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경
설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
--pfile에서
control_files 파라미터 수정
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ vi /home/oracle/BACKUP_FOR_ADG/initORA12RF.ora
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
cat /home/oracle/BACKUP_FOR_ADG/initORA12RF.ora | grep -i control_files
*.control_files='+DATA1/ORA12RF_STB/CONTROLFILE/current.291.1220465119','+FRA1/ORA12RF_STB/CONTROLFILE/current.441.1220465119'
##Modify
#*.control_files='+DATA1/ORA12RF_STB/CONTROLFILE/current.261.1213483391','+FRA1/ORA12RF_STB/CONTROLFILE/current.256.1213483391'
##Modify
9-3. database restore
--oracle os user 의 rman 접속 창으로
돌아와서 database mount
RMAN> alter database mount;
Statement
processed
released channel:
ORA_DISK_1
--인식하고 있는 백업본을
확인함
--Primary DB에서 백업 시 백업본이 저장된 디렉토리 위치와 Standby DB에
저장된 Primary DB의 백업본의 디렉토리 경로가 같으므로 제대로 인식하게 될 것임
RMAN> list backup;
List of Backup
Sets
===================
BS Key Type LV
Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
178
Full 5.47G
DISK 00:04:30
2025-12-21 16:19:23
BP Key:
178 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T161453
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_5r4btdvt_1_1.bkp
List of Datafiles in backup set 178
File LV Type Ckp SCN Ckp
Time Abs Fuz
SCN Sparse Name
---- -- ---- ----------
------------------- ----------- ------ ----
1 Full 13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/system.257.1213483305
2 Full
13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/tuner_data1.272.1216160599
3 Full
13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/sysaux.258.1213483329
4 Full
13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/undotbs1.259.1213483345
5 Full
13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/undotbs2.266.1213483407
7 Full
13900519 2025-12-21
16:14:53
NO +DATA1/ORA12RF/DATAFILE/users.260.1213483345
8 Full
13900519 2025-12-21
16:14:53
NO
+DATA1/ORA12RF/DATAFILE/tuner_idx1.273.1216160601
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
179
Full 1.13M
DISK 00:00:01
2025-12-21 16:19:29
BP Key:
179 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T161453
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_5s4bte8g_1_1.bkp
SPFILE Included: Modification time: 2025-12-21
16:06:50
SPFILE db_unique_name: ORA12RF
Control File Included: Ckp SCN:
13901196 Ckp time: 2025-12-21
16:19:28
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
180
Full 19.19M
DISK 00:00:01
2025-12-21 16:19:31
BP Key:
180 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T161930
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_5t4bte8i_1_1_20251221
Standby Control File Included: Ckp SCN:
13901223 Ckp time: 2025-12-21
16:19:30
BS Key
Size Device Type Elapsed Time Completion
Time
------- ---------- ----------- ------------
-------------------
181
2.04G
DISK 00:00:03
2025-12-21 16:21:15
BP Key:
181 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T162112
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
List of
Archived Logs in backup set 181
Thrd
Seq Low SCN Low
Time Next
SCN Next Time
---- ------- ----------
------------------- ---------- ---------
1 18 13043984
2025-12-19 14:50:20 13224141 2025-12-19 22:48:55
1 19
13224141 2025-12-19 22:48:55 13224806 2025-12-19
22:49:02
1
20 13224806 2025-12-19 22:49:02
13381060 2025-12-20 10:04:03
1 21 13381060
2025-12-20 10:04:03 13458769 2025-12-20 15:02:22
1 22
13458961 2025-12-20 15:03:55 13606151 2025-12-20
23:00:25
1
23 13606151 2025-12-20 23:00:25
13607814 2025-12-20 23:04:21
1 24 13607814
2025-12-20 23:04:21 13670777 2025-12-21 02:20:03
1 25
13670777 2025-12-21 02:20:03 13806243 2025-12-21
10:30:01
1
26 13806243 2025-12-21 10:30:01
13900438 2025-12-21 16:14:51
1 27 13900438
2025-12-21 16:14:51 13902289 2025-12-21 16:21:11
2 15
13069967 2025-12-19 16:00:03 13257264 2025-12-20
00:06:14
2
16 13257264 2025-12-20 00:06:14
13381059 2025-12-20 10:04:04
2 17 13381059
2025-12-20 10:04:04 13381223 2025-12-20 10:04:04
2 18
13419384 2025-12-20 13:11:16 13579249 2025-12-20
21:20:16
2
19 13579249 2025-12-20 21:20:16
13670792 2025-12-21 02:20:04
2 20 13670792
2025-12-21 02:20:04 13806248 2025-12-21 10:30:03
2 21
13806248 2025-12-21 10:30:03 13900433 2025-12-21
16:14:51
2
22 13900433 2025-12-21 16:14:51
13902296 2025-12-21 16:21:12
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
182
Full 19.19M
DISK 00:00:01
2025-12-21 16:21:21
BP Key:
182 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T162120
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_STB_CTL_5v4btec0_1_1_20251221
Standby Control File Included: Ckp SCN:
13902340 Ckp time: 2025-12-21
16:21:20
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
183
Full 19.22M
DISK 00:00:00
2025-12-21 16:21:22
BP Key:
183 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T162122
Piece Name:
/home/oracle/BACKUP_FOR_ADG/autobackup/c-4288610047-20251221-02
SPFILE Included: Modification time: 2025-12-21
16:06:50
SPFILE db_unique_name: ORA12RF
Control File Included: Ckp SCN:
13902368 Ckp time: 2025-12-21
16:21:22
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
184
Full 5.47G
DISK 00:04:28
2025-12-21 17:17:24
BP Key:
184 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T171256
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_614bthco_1_1.bkp
List of Datafiles in backup set 184
File LV Type Ckp SCN Ckp
Time Abs Fuz
SCN Sparse Name
---- -- ---- ----------
------------------- ----------- ------ ----
1 Full 13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/system.257.1213483305
2 Full
13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/tuner_data1.272.1216160599
3 Full
13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/sysaux.258.1213483329
4 Full
13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/undotbs1.259.1213483345
5 Full
13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/undotbs2.266.1213483407
7 Full
13917361 2025-12-21
17:12:56
NO +DATA1/ORA12RF/DATAFILE/users.260.1213483345
8 Full
13917361 2025-12-21
17:12:56
NO
+DATA1/ORA12RF/DATAFILE/tuner_idx1.273.1216160601
BS Key Type
LV Size Device Type Elapsed Time Completion
Time
------- ---- -- ---------- ----------- ------------
-------------------
185
Full 1.13M
DISK 00:00:01
2025-12-21 17:17:32
BP Key:
185 Status: AVAILABLE Compressed: YES Tag:
TAG20251221T171256
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_624bthlb_1_1.bkp
SPFILE Included: Modification time: 2025-12-21
16:06:50
SPFILE db_unique_name: ORA12RF
Control File Included: Ckp SCN:
13918029 Ckp time: 2025-12-21
17:17:31
--Primary DB에서 아래의 SQL문
실행 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 21 17:57:41 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
set linesize
200
set pagesize 0
set feedback
off
set verify off
set heading
off
set restore_datafile for a50
SELECT 'RESTORE DATAFILE ' || LISTAGG(FILE#, ', ') WITHIN
GROUP (ORDER BY FILE#) || ';' as restore_datafile FROM
V$DATAFILE;
RESTORE DATAFILE 1, 2, 3, 4, 5, 7, 8;
Elapsed: 00:00:00.01
run
{
SET NEWNAME
FOR DATABASE TO '+DATA1';
#RESTORE DATABASE;
RESTORE DATAFILE 1, 2, 3, 4, 5, 7, 8;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
}
executing command: SET NEWNAME
Starting restore
at 2025-12-21 18:07:55
Starting implicit crosscheck
backup at 2025-12-21 18:07:55
allocated channel:
ORA_DISK_1
channel ORA_DISK_1: SID=823 device
type=DISK
Crosschecked 8 objects
Finished implicit crosscheck backup at 2025-12-21
18:07:55
Starting implicit
crosscheck copy at 2025-12-21 18:07:55
using channel
ORA_DISK_1
Finished implicit crosscheck copy at
2025-12-21 18:07:55
searching for all
files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel
ORA_DISK_1: starting datafile backup set restore
channel
ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA1
channel ORA_DISK_1: restoring datafile 00002 to +DATA1
channel ORA_DISK_1: restoring datafile 00003 to +DATA1
channel ORA_DISK_1: restoring datafile 00004 to +DATA1
channel ORA_DISK_1: restoring datafile 00005 to +DATA1
channel ORA_DISK_1: restoring datafile 00007 to +DATA1
channel ORA_DISK_1: restoring datafile 00008 to +DATA1
channel ORA_DISK_1: reading from backup piece
/home/oracle/BACKUP_FOR_ADG/ORA12RF_614bthco_1_1.bkp
channel ORA_DISK_1: piece
handle=/home/oracle/BACKUP_FOR_ADG/ORA12RF_614bthco_1_1.bkp
tag=TAG20251221T171256
channel ORA_DISK_1: restored
backup piece 1
channel ORA_DISK_1: restore complete,
elapsed time: 00:06:45
Finished restore at 2025-12-21
18:14:40
datafile 1
switched to datafile copy
input datafile copy RECID=8
STAMP=1220465680 file name=+DATA1/ORA12RF_STB/DATAFILE/system.279.1220465275
datafile 2 switched to datafile copy
input datafile copy RECID=9 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/tuner_data1.292.1220465275
datafile 3 switched to datafile copy
input datafile copy RECID=10 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/sysaux.273.1220465275
datafile 4 switched to datafile copy
input datafile copy RECID=11 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/undotbs1.280.1220465275
datafile 5 switched to datafile copy
input datafile copy RECID=12 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/undotbs2.278.1220465275
datafile 7 switched to datafile copy
input datafile copy RECID=13 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/users.277.1220465275
datafile 8 switched to datafile copy
input datafile copy RECID=14 STAMP=1220465680 file
name=+DATA1/ORA12RF_STB/DATAFILE/tuner_idx1.267.1220465275
renamed tempfile 2
to +DATA1 in control file
renamed tempfile 3 to +DATA1
in control file
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls -sl
+DATA1/ORA12RF_STB/DATAFILE/
Type Redund
Striped
Time
Sys Block_Size
Blocks
Bytes Space Name
DATAFILE UNPROT COARSE DEC 21
18:00:00 Y
8192 646145 5293219840 5301600256
SYSAUX.273.1220465275
DATAFILE UNPROT
COARSE DEC 21 18:00:00
Y 8192
107609 881532928 889192448
SYSTEM.279.1220465275
DATAFILE UNPROT
COARSE DEC 21 18:00:00
Y 8192 2146817
17586724864 17595105280 TUNER_DATA1.292.1220465275
DATAFILE UNPROT COARSE DEC 21
18:00:00 Y
8192 1378433 11292123136 11299454976
TUNER_IDX1.267.1220465275
DATAFILE UNPROT
COARSE DEC 21 18:00:00
Y 8192
318721 2610962432 2617245696
UNDOTBS1.280.1220465275
DATAFILE UNPROT
COARSE DEC 21 18:00:00
Y 8192
12801 104865792 109051904
UNDOTBS2.278.1220465275
DATAFILE UNPROT
COARSE DEC 21 18:00:00
Y
8192 3681
30154752 33554432
USERS.277.1220465275
--oracle os user
[ol7ora12sf]<SYS@ORA12RF>$
col name for
a100
select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
+DATA1/ORA12RF_STB/DATAFILE/system.279.1220465275
+DATA1/ORA12RF_STB/DATAFILE/tuner_data1.292.1220465275
+DATA1/ORA12RF_STB/DATAFILE/sysaux.273.1220465275
+DATA1/ORA12RF_STB/DATAFILE/undotbs1.280.1220465275
+DATA1/ORA12RF_STB/DATAFILE/undotbs2.278.1220465275
+DATA1/ORA12RF_STB/DATAFILE/users.277.1220465275
+DATA1/ORA12RF_STB/DATAFILE/tuner_idx1.267.1220465275
7 rows selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$
col name for
a100
select name from v$tempfile;
NAME
----------------------------------------------------------------------------------------------------
+DATA1
+DATA1
2 rows selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE 220
PAGESIZE 1000 TRIMSPOOL ON
SET NUMFORMAT
999,999,999,990
COL
FILE#
FOR 99990
COL
TS#
FOR 99990
COL
NAME
FOR A60
COL
SIZE_MB
FOR 999,999,990.00
COL
STATUS
FOR A10
COL CHECKPOINT_CHANGE# FOR
999,999,999,999,999
SELECT A.FILE#
, A.TS#
, A.NAME
, A.BYTES/1024/1024 AS SIZE_MB
, A.STATUS
, A.CHECKPOINT_CHANGE#
FROM V$DATAFILE_HEADER A;
FILE# TS#
NAME
SIZE_MB STATUS CHECKPOINT_CHANGE#
------ ------
------------------------------------------------------------ ---------------
---------- --------------------
1 0
+DATA1/ORA12RF_STB/DATAFILE/system.279.1220465275
840.69
ONLINE
13,917,361
2 6
+DATA1/ORA12RF_STB/DATAFILE/tuner_data1.292.1220465275
16,772.00
ONLINE
13,917,361
3 1
+DATA1/ORA12RF_STB/DATAFILE/sysaux.273.1220465275
5,048.00
ONLINE
13,917,361
4 2
+DATA1/ORA12RF_STB/DATAFILE/undotbs1.280.1220465275
2,490.00
ONLINE
13,917,361
5 5
+DATA1/ORA12RF_STB/DATAFILE/undotbs2.278.1220465275
100.00
ONLINE
13,917,361
7 4
+DATA1/ORA12RF_STB/DATAFILE/users.277.1220465275
28.75
ONLINE
13,917,361
8 7
+DATA1/ORA12RF_STB/DATAFILE/tuner_idx1.267.1220465275
10,769.00
ONLINE
13,917,361
7 rows selected.
Elapsed: 00:00:00.02
--rman 창에서
RMAN> report
schema;
RMAN-06139:
warning: control file is not current for REPORT SCHEMA
Report of database schema for database with db_unique_name
ORA12RF_STB
List of Permanent
Datafiles
===========================
File Size(MB)
Tablespace RB segs
Datafile Name
---- -------- -------------------- -------
------------------------
1
840
SYSTEM
*** +DATA1/ORA12RF_STB/DATAFILE/system.279.1220465275
2 16772
TUNER_DATA1
***
+DATA1/ORA12RF_STB/DATAFILE/tuner_data1.292.1220465275
3 5048
SYSAUX
*** +DATA1/ORA12RF_STB/DATAFILE/sysaux.273.1220465275
4 2490
UNDOTBS1
***
+DATA1/ORA12RF_STB/DATAFILE/undotbs1.280.1220465275
5 100
UNDOTBS2
***
+DATA1/ORA12RF_STB/DATAFILE/undotbs2.278.1220465275
7 28
USERS
*** +DATA1/ORA12RF_STB/DATAFILE/users.277.1220465275
8 10769
TUNER_IDX1
***
+DATA1/ORA12RF_STB/DATAFILE/tuner_idx1.267.1220465275
List of Temporary
Files
=======================
File Size(MB)
Tablespace
Maxsize(MB) Tempfile Name
---- --------
-------------------- ----------- --------------------
2 128
TUNER_TEMP
32767 +DATA1
3 2048
TEMP
8192 +DATA1
9-4. recover database
--아카이브 백업본 인식(복구에 사용된 Standby
컨트롤 파일을 백업 받은 이후 시점에 백업 받은 아카이브 로그 백업본을 인식 시켜주는 것임)
RMAN> catalog
start with
'/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1';
searching for all files that match the pattern /home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
List of Files
Unknown to the Database
=====================================
File Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
Do you really want
to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging
done
List of Cataloged
Files
=======================
File Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
--아카이브 백업본
확인
RMAN> LIST
BACKUP OF ARCHIVELOG ALL;
List of Backup Sets
===================
BS Key Size
Device Type Elapsed Time Completion Time
-------
---------- ----------- ------------ -------------------
181
2.04G
DISK 00:00:03
2025-12-21 16:21:15
BP Key:
181 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T162112
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_5u4btebo_s190_p1
List of
Archived Logs in backup set 181
Thrd
Seq Low SCN Low
Time Next
SCN Next Time
---- ------- ----------
------------------- ---------- ---------
1 18 13043984
2025-12-19 14:50:20 13224141 2025-12-19 22:48:55
1 19
13224141 2025-12-19 22:48:55 13224806 2025-12-19
22:49:02
1
20 13224806 2025-12-19 22:49:02
13381060 2025-12-20 10:04:03
1 21 13381060
2025-12-20 10:04:03 13458769 2025-12-20 15:02:22
1 22
13458961 2025-12-20 15:03:55 13606151 2025-12-20
23:00:25
1
23 13606151 2025-12-20 23:00:25
13607814 2025-12-20 23:04:21
1 24 13607814
2025-12-20 23:04:21 13670777 2025-12-21 02:20:03
1 25
13670777 2025-12-21 02:20:03 13806243 2025-12-21
10:30:01
1
26 13806243 2025-12-21 10:30:01
13900438 2025-12-21 16:14:51
1 27 13900438
2025-12-21 16:14:51 13902289 2025-12-21 16:21:11
2 15
13069967 2025-12-19 16:00:03 13257264 2025-12-20
00:06:14
2
16 13257264 2025-12-20 00:06:14
13381059 2025-12-20 10:04:04
2 17 13381059
2025-12-20 10:04:04 13381223 2025-12-20 10:04:04
2 18
13419384 2025-12-20 13:11:16 13579249 2025-12-20
21:20:16
2
19 13579249 2025-12-20 21:20:16
13670792 2025-12-21 02:20:04
2 20 13670792
2025-12-21 02:20:04 13806248 2025-12-21 10:30:03
2 21
13806248 2025-12-21 10:30:03 13900433 2025-12-21
16:14:51
2
22 13900433 2025-12-21 16:14:51
13902296 2025-12-21 16:21:12
BS Key
Size Device Type Elapsed Time Completion
Time
------- ---------- ----------- ------------
-------------------
186
36.96M DISK
00:00:00 2025-12-21 17:17:46
BP Key:
186 Status: AVAILABLE Compressed: NO Tag:
TAG20251221T171746
Piece Name:
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
List of Archived Logs in backup set 186
Thrd Seq Low
SCN Low
Time Next
SCN Next Time
---- ------- ----------
------------------- ---------- ---------
1 28 13902289
2025-12-21 16:21:11 13917254 2025-12-21 17:12:55
1 29
13917254 2025-12-21 17:12:55 13918143 2025-12-21 17:17:43
2 23
13902296 2025-12-21 16:21:12 13917251 2025-12-21
17:12:55
2
24 13917251 2025-12-21 17:12:55 13918154 2025-12-21
17:17:46
--> 인식이 완료됨
-- 이상태에서 아카이브로 로그로 갈수있는 가장 큰
scn까지 복구함
RMAN> RECOVER DATABASE UNTIL SCN
13918143;
Starting recover
at 2025-12-21 18:24:20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=550 device
type=DISK
starting media recovery
channel
ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=24
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=29
channel ORA_DISK_1: reading from backup piece
/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
channel ORA_DISK_1: piece
handle=/home/oracle/BACKUP_FOR_ADG/ORA12RF_ARCHIVE_20251221_644bthlq_s196_p1
tag=TAG20251221T171746
channel ORA_DISK_1: restored
backup piece 1
channel ORA_DISK_1: restore complete,
elapsed time: 00:00:01
archived log file
name=+FRA1/ORA12RF_STB/ARCHIVELOG/2025_12_21/thread_1_seq_29.552.1220466261
thread=1 sequence=29
archived log file
name=+FRA1/ORA12RF_STB/ARCHIVELOG/2025_12_21/thread_2_seq_24.551.1220466261
thread=2 sequence=24
media recovery complete, elapsed
time: 00:00:01
Finished recover at 2025-12-21
18:24:22
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE 220
PAGESIZE 1000 TRIMSPOOL ON
SET NUMFORMAT
999,999,999,990
COL
FILE#
FOR 99990
COL
TS#
FOR 99990
COL
NAME
FOR A60
COL
SIZE_MB
FOR 999,999,990.00
COL
STATUS
FOR A10
COL CHECKPOINT_CHANGE# FOR
999,999,999,999,999
SELECT A.FILE#
, A.TS#
, A.NAME
, A.BYTES/1024/1024 AS SIZE_MB
, A.STATUS
, A.CHECKPOINT_CHANGE#
FROM V$DATAFILE_HEADER A;
FILE# TS#
NAME
SIZE_MB STATUS CHECKPOINT_CHANGE#
------ ------
------------------------------------------------------------ ---------------
---------- --------------------
1 0
+DATA1/ORA12RF_STB/DATAFILE/system.279.1220465275
840.69
ONLINE
13,918,143
2 6
+DATA1/ORA12RF_STB/DATAFILE/tuner_data1.292.1220465275
16,772.00
ONLINE
13,918,143
3 1
+DATA1/ORA12RF_STB/DATAFILE/sysaux.273.1220465275
5,048.00
ONLINE
13,918,143
4 2
+DATA1/ORA12RF_STB/DATAFILE/undotbs1.280.1220465275
2,490.00
ONLINE
13,918,143
5 5
+DATA1/ORA12RF_STB/DATAFILE/undotbs2.278.1220465275
100.00
ONLINE
13,918,143
7 4
+DATA1/ORA12RF_STB/DATAFILE/users.277.1220465275
28.75
ONLINE
13,918,143
8 7
+DATA1/ORA12RF_STB/DATAFILE/tuner_idx1.267.1220465275
10,769.00
ONLINE
13,918,143
--> 아카이브 적용이 가능한 최대 위치까지 왔음
7 rows
selected.
Elapsed: 00:00:00.02
9-5. Primary DB 에서 리두 로그 상태 확인 후 Standby DB에서 redo log 및 standby redo log 초기화
--Primary DB (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Nov 30 22:23:30 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @rdl
GROUP#
THREAD# SEQUENCE#
MEMBER
STATUS
TYPE
MB STATUS
------ ------- ----------
-------------------------------------------------- --------------- ----------
------------ ---------------
1
1 46
+FRA1/ORA12RF/ONLINELOG/group_1.259.1213483395
(NULL)
ONLINE
200 INACTIVE
1
1 46
+DATA1/ORA12RF/ONLINELOG/group_1.262.1213483395
(NULL)
ONLINE
200 INACTIVE
2
1 47
+DATA1/ORA12RF/ONLINELOG/group_2.263.1213483395
(NULL)
ONLINE
200 CURRENT
2
1 47
+FRA1/ORA12RF/ONLINELOG/group_2.257.1213483395
(NULL)
ONLINE
200 CURRENT
3
1 45
+FRA1/ORA12RF/ONLINELOG/group_3.258.1213483395
(NULL)
ONLINE
200 INACTIVE
3
1 45
+DATA1/ORA12RF/ONLINELOG/group_3.264.1213483395
(NULL)
ONLINE
200 INACTIVE
4
2 46
+DATA1/ORA12RF/ONLINELOG/group_4.267.1213483489
(NULL)
ONLINE
200 CURRENT
4
2 46
+FRA1/ORA12RF/ONLINELOG/group_4.260.1213483491
(NULL)
ONLINE
200 CURRENT
5
2 44
+DATA1/ORA12RF/ONLINELOG/group_5.268.1213483491
(NULL)
ONLINE
200 INACTIVE
5
2 44
+FRA1/ORA12RF/ONLINELOG/group_5.261.1213483491
(NULL)
ONLINE
200 INACTIVE
6
2 45
+DATA1/ORA12RF/ONLINELOG/group_6.269.1213483491
(NULL)
ONLINE
200 INACTIVE
6
2 45
+FRA1/ORA12RF/ONLINELOG/group_6.262.1213483491
(NULL)
ONLINE
200 INACTIVE
12 rows selected.
Elapsed: 00:00:00.04
[ol7ora12rf1]<SYS@ORA12RF1>$ @stb_rdl
DUMMY GROUP#
THREAD# SEQUENCE# ARCHIVED STATUS
LOG_STATUS
TYPE MEMBER
-----
------ ------- --------- -------- ------------ --------------------- ----------
--------------------------------------------------
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_7.277.1219263267
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_7.337.1219263267
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_8.270.1219263267
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_8.339.1219263267
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_9.265.1219263267
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_9.340.1219263267
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_10.278.1219263267
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_10.341.1219263269
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_11.279.1219263269
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_11.342.1219263269
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_12.280.1219263269
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_12.343.1219263269
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_13.281.1219263269
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY +FRA1/ORA12RF/ONLINELOG/group_13.329.1219263269
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY +DATA1/ORA12RF/ONLINELOG/group_14.282.1219263271
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF/ONLINELOG/group_14.322.1219263285
16 rows selected.
Elapsed: 00:00:00.02
--Standby DB (oracle os
user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
cdos
alias cdos='cd /home/oracle/oracle_scripts'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/oracle_scripts/rdl.sql
col group# for
999
col thread# for 999
col
member for a70
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat >>
/home/oracle/oracle_scripts/stb_rdl.sql << 'EOF'
COLUMN DUMMY FORMAT 999
COLUMN
GROUP# FORMAT 9999
COLUMN THREAD# FORMAT 9999
COLUMN SEQUENCE# FORMAT 9999999
COLUMN ARCHIVED FORMAT A8
COLUMN
STATUS FORMAT A12
COLUMN MEMBER FORMAT A60
WORD_WRAPPED
SELECT 1 AS DUMMY,
a.GROUP#,
a.THREAD#,
a.SEQUENCE#,
a.ARCHIVED,
a.STATUS,
b.STATUS AS
LOG_STATUS,
b.TYPE,
b.MEMBER
FROM V$STANDBY_LOG a, v$logfile b
WHERE a.group# = b.group#
ORDER BY a.GROUP#;
EOF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ chmod 775 /home/oracle/oracle_scripts/stb_rdl.sql
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 13 12:40:55 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ @rdl
GROUP#
THREAD# SEQUENCE#
MEMBER
STATUS
TYPE
MB STATUS
------ ------- ----------
----------------------------------------------------------------------
--------------------- --------------------- ---------- -----------
1
1 29
+FRA1/MUST_RENAME_THIS_LOGFILE_1.4294967295.4294967295
(NULL)
ONLINE
200 CURRENT
1
1 29
+DATA1/MUST_RENAME_THIS_LOGFILE_1.4294967295.4294967295
(NULL)
ONLINE
200 CURRENT
2
1 27
+DATA1/MUST_RENAME_THIS_LOGFILE_2.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
2
1 27
+FRA1/MUST_RENAME_THIS_LOGFILE_2.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
3
1 28
+FRA1/MUST_RENAME_THIS_LOGFILE_3.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
3
1 28
+DATA1/MUST_RENAME_THIS_LOGFILE_3.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
4
2 23
+DATA1/MUST_RENAME_THIS_LOGFILE_4.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
4
2 23
+FRA1/MUST_RENAME_THIS_LOGFILE_4.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
5
2 24
+DATA1/MUST_RENAME_THIS_LOGFILE_5.4294967295.4294967295
(NULL)
ONLINE
200 CURRENT
5
2 24
+FRA1/MUST_RENAME_THIS_LOGFILE_5.4294967295.4294967295
(NULL)
ONLINE
200 CURRENT
6
2 22
+DATA1/MUST_RENAME_THIS_LOGFILE_6.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
6
2 22
+FRA1/MUST_RENAME_THIS_LOGFILE_6.4294967295.4294967295
(NULL)
ONLINE
200 INACTIVE
12 rows selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$ @stb_rdl
DUMMY GROUP#
THREAD# SEQUENCE# ARCHIVED STATUS
LOG_STATUS
TYPE
MEMBER
----- ------ ------- --------- --------
------------ --------------------- ---------------------
---------------------------------------------------------
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_7.4294967295.4294967295
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_7.4294967295.4294967295
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_8.4294967295.4294967295
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_8.4294967295.4294967295
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_9.4294967295.4294967295
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_9.4294967295.4294967295
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_10.4294967295.4294967295
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_10.4294967295.4294967295
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_11.4294967295.4294967295
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_11.4294967295.4294967295
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_12.4294967295.4294967295
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_12.4294967295.4294967295
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_13.4294967295.4294967295
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_13.4294967295.4294967295
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/MUST_RENAME_THIS_LOGFILE_14.4294967295.4294967295
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/MUST_RENAME_THIS_LOGFILE_14.4294967295.4294967295
16 rows selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE 200
PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF
SELECT 'ALTER
DATABASE CLEAR LOGFILE GROUP ' || GROUP# || ';'
FROM
V$LOGFILE
GROUP BY GROUP#
ORDER BY GROUP#;
ALTER DATABASE
CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE
GROUP 2;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
ALTER DATABASE CLEAR LOGFILE GROUP 4;
ALTER DATABASE CLEAR LOGFILE GROUP 5;
ALTER DATABASE CLEAR LOGFILE GROUP 6;
ALTER DATABASE CLEAR LOGFILE GROUP 7;
ALTER DATABASE CLEAR LOGFILE GROUP 8;
ALTER DATABASE CLEAR LOGFILE GROUP 9;
ALTER DATABASE CLEAR LOGFILE GROUP 10;
ALTER DATABASE CLEAR LOGFILE GROUP 11;
ALTER DATABASE CLEAR LOGFILE GROUP 12;
ALTER DATABASE CLEAR LOGFILE GROUP 13;
ALTER DATABASE CLEAR LOGFILE GROUP 14;
Elapsed: 00:00:00.00
--redo log 및 stadnby redo log
파일 초기화
[ol7ora12sf]<SYS@ORA12RF>$
ALTER DATABASE
CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE
GROUP 2;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
ALTER DATABASE CLEAR LOGFILE GROUP 4;
ALTER DATABASE CLEAR LOGFILE GROUP 5;
ALTER DATABASE CLEAR LOGFILE GROUP 6;
ALTER DATABASE CLEAR LOGFILE GROUP 7;
ALTER DATABASE CLEAR LOGFILE GROUP 8;
ALTER DATABASE CLEAR LOGFILE GROUP 9;
ALTER DATABASE CLEAR LOGFILE GROUP 10;
ALTER DATABASE CLEAR LOGFILE GROUP 11;
ALTER DATABASE CLEAR LOGFILE GROUP 12;
ALTER DATABASE CLEAR LOGFILE GROUP 13;
ALTER DATABASE CLEAR LOGFILE GROUP 14;
[ol7ora12sf]<SYS@ORA12RF>$ @rdl
1
1 0
+FRA1/ORA12RF_STB/ONLINELOG/group_1.553.1220466901
(NULL)
ONLINE
200 CURRENT
1
1 0
+DATA1/ORA12RF_STB/ONLINELOG/group_1.276.1220466901
(NULL)
ONLINE
200 CURRENT
2
1 0
+DATA1/ORA12RF_STB/ONLINELOG/group_2.275.1220466901
(NULL)
ONLINE
200 UNUSED
2
1 0
+FRA1/ORA12RF_STB/ONLINELOG/group_2.554.1220466903
(NULL)
ONLINE
200 UNUSED
3
1 0
+FRA1/ORA12RF_STB/ONLINELOG/group_3.555.1220466903
(NULL)
ONLINE
200 UNUSED
3
1 0
+DATA1/ORA12RF_STB/ONLINELOG/group_3.274.1220466903
(NULL)
ONLINE
200 UNUSED
4
2 0
+DATA1/ORA12RF_STB/ONLINELOG/group_4.281.1220466903
(NULL)
ONLINE
200 UNUSED
4
2 0
+FRA1/ORA12RF_STB/ONLINELOG/group_4.556.1220466903
(NULL)
ONLINE
200 UNUSED
5
2 0
+DATA1/ORA12RF_STB/ONLINELOG/group_5.282.1220466903
(NULL)
ONLINE
200 CURRENT
5
2 0
+FRA1/ORA12RF_STB/ONLINELOG/group_5.584.1220466903
(NULL)
ONLINE
200 CURRENT
6
2 0
+DATA1/ORA12RF_STB/ONLINELOG/group_6.301.1220466905
(NULL)
ONLINE
200 UNUSED
6
2 0
+FRA1/ORA12RF_STB/ONLINELOG/group_6.583.1220466905
(NULL)
ONLINE
200 UNUSED
Elapsed: 00:00:00.00
[ol7ora12sf]<SYS@ORA12RF>$ @stb_rdl
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_7.285.1220466905
1
7
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_7.582.1220466905
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_8.286.1220466905
1
8
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_8.580.1220466905
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_9.287.1220466905
1
9
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_9.579.1220466905
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_10.288.1220466907
1
10
1 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_10.565.1220466907
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_11.289.1220466907
1
11
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_11.564.1220466907
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_12.290.1220466907
1
12
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_12.563.1220466907
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_13.295.1220466907
1
13
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_13.549.1220466907
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+DATA1/ORA12RF_STB/ONLINELOG/group_14.296.1220466909
1
14
2 0
YES UNASSIGNED
(NULL)
STANDBY
+FRA1/ORA12RF_STB/ONLINELOG/group_14.550.1220466909
Elapsed: 00:00:00.00
10. Standby DB 를 HAS에 등록
10-1. password 파일을 ASM 영역에 복사
--oracle os
user
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재
ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cp
/home/oracle/BACKUP_FOR_ADG/orapwORA12RF /tmp
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ chmod 664
/tmp/orapwORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ls -l
/tmp/orapwORA12RF
-rw-rw-r--. 1 oracle
oinstall 3584 Dec 21 18:38 /tmp/orapwORA12RF
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd pwcopy
--dbuniquename ORA12RF_STB -f /tmp/orapwORA12RF
+DATA1/ORA12RF_STB/PASSWORD/orapwORA12RF
PRCD-1120 : The
resource for database ORA12RF_STB could not be found.
PRCR-1001 : Resource ora.ora12rf_stb.db does not exist
ASMCMD-9457: an internally issued srvctl command failed
with errors
copying /tmp/orapwORA12RF ->
+DATA1/ORA12RF_STB/PASSWORD/orapwORA12RF
ASMCMD-9453:
failed to register password file as a CRS resource
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls -sl
+DATA1/ORA12RF_STB/PASSWORD/orapwORA12RF
Type Redund
Striped
Time
Sys Block_Size Blocks Bytes Space Name
PASSWORD UNPROT COARSE DEC 21
18:00:00 N
512 7
3584 0 orapwORA12RF =>
+DATA1/ORA12RF_STB/PASSWORD/pwdora12rf_stb.297.1220467105
10-2. pfile을 spfile로 변환하여 ASM 영역에 넣기
--oracle os
user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 21 18:39:00 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ col name for a60
[ol7ora12sf]<SYS@ORA12RF>$ select name from v$controlfile;
NAME
------------------------------------------------------------
+DATA1/ORA12RF_STB/CONTROLFILE/current.291.1220465119
+FRA1/ORA12RF_STB/CONTROLFILE/current.441.1220465119
2 rows selected.
Elapsed: 00:00:00.00
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora | grep -i
control_files
*.control_files='+DATA1/ORA12RF_STB/CONTROLFILE/current.291.1220465119','+FRA1/ORA12RF_STB/CONTROLFILE/current.441.1220465119'
##Modify
#*.control_files='+DATA1/ORA12RF_STB/CONTROLFILE/current.261.1213483391','+FRA1/ORA12RF_STB/CONTROLFILE/current.256.1213483391'
##Modify
--> 현재 mount 상태로 떠있는 Standby DB의 컨트롤 파일 경로와 pfile의
control_files 파라미터의 경로가 일치함을 확인
--oracle os
user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_SID
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Fri Dec 12 22:58:54 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ create spfile='+DATA1' from pfile='/home/oracle/BACKUP_FOR_ADG/initORA12RF.ora';
File created.
Elapsed: 00:00:00.11
--grid os
user
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls -sl
+DATA1/ORA12RF_STB/PARAMETERFILE
Type
Redund Striped
Time
Sys Block_Size Blocks Bytes Space
Name
PARAMETERFILE UNPROT COARSE
DEC 21 18:00:00
Y
512 9 4608 4194304
spfile.298.1220467273
[+ASM:grid@ol7ora12sf][/home/grid]$
10-3. Standby DB를 HAS에 등록
--oracle os user
--pwfile 과 spfile 위치를 잘 지정해줌
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
srvctl add database \
-db
ORA12RF_STB \
-dbname ORA12RF \
-oraclehome /u01/app/oracle/product/12c/db_1 \
-pwfile
'+DATA1/ORA12RF_STB/PASSWORD/pwdora12rf_stb.297.1220467105' \
-spfile
'+DATA1/ORA12RF_STB/PARAMETERFILE/spfile.298.1220467273' \
-role PHYSICAL_STANDBY \
-startoption "READ ONLY" \
-instance ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 OFFLINE
OFFLINE
STABLE
--------------------------------------------------------------------------------
10-4. Standby DB를 mount 모드로 기동
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ echo
$ORACLE_SID
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Mon Dec 1 00:02:11 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ shutdown
immediate;
ORA-01109: database not
open
Database dismounted.
ORACLE
instance shut down.
[ol7ora12sf]<SYS@ORA12RF>$ startup mount
ORACLE instance
started.
Total System
Global Area 5033164800 bytes
Fixed
Size
8631048 bytes
Variable
Size
1409289464 bytes
Database
Buffers 3607101440 bytes
Redo
Buffers
8142848 bytes
Database mounted.
--Primary DB의 플래시백이 켜져있었다고 해도
Standby까지 자동으로 켜지는것은 아님
[ol7ora12sf]<SYS@ORA12RF>$ select inst_id, flashback_on from
gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1 NO
--> 플래시백
데이터베이스 안켜져있음을 확인
1 row selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$ show parameter flashback;
NAME
TYPE
VALUE
------------------------------------
--------------------------------- -------
db_flashback_retention_target
integer
2880
[ol7ora12sf]<SYS@ORA12RF>$ show parameter recovery;
NAME
TYPE
VALUE
------------------------------------
--------------------------------- -------
db_recovery_file_dest
string
+FRA1
db_recovery_file_dest_size
big
integer
32G
recovery_parallelism
integer
0
remote_recovery_file_dest
string
(NULL)
[ol7ora12sf]<SYS@ORA12RF>$ ALTER DATABASE FLASHBACK ON;
Database altered.
Elapsed:
00:00:00.22
[ol7ora12sf]<SYS@ORA12RF>$ select inst_id, flashback_on from gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1
YES
1 row selected.
Elapsed: 00:00:00.01
--HAS에 TNS_ADMIN 환경 변수 등록
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재
ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl setenv
database -d ORA12RF_STB -t
"TNS_ADMIN=/u01/app/oracle/product/12c/db_1/network/admin"
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl getenv
database -d ORA12RF_STB
ORA12RF_STB:
TNS_ADMIN=/u01/app/oracle/product/12c/db_1/network/admin
11. DG Broker 활성화
11-1. 소스 및 타켓에서 DG Broker 파라미터 설정
11-1-1. Primary DB
--grid os user
--ADG 용 디렉토리 생성
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd mkdir
+DATA1/ADG
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd
ls -sl +DATA1/ | grep ADG
N
ADG/
--> 디렉토리 생성 확인
완료
--oracle os
user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Tue Dec 2 23:48:42 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter dg_broker_config_file;
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_config_file1
string
/u01/app/oracle/product/12c/db
_1/dbs/dr1ORA12RF.dat
dg_broker_config_file2
string
/u01/app/oracle/product/12c/db
_1/dbs/dr2ORA12RF.dat
dg_broker_start
boolean
FALSE
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set dg_broker_config_file1='+DATA1/ADG/dr1ORA12RF.dat' scope=both sid='*';
System altered.
Elapsed: 00:00:00.03
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set dg_broker_config_file2='+DATA1/ADG/dr2ORA12RF.dat' scope=both sid='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter dg_broker_start
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_start
boolean
FALSE
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set dg_broker_start=true scope=both
sid='*';
System altered.
Elapsed: 00:00:02.04
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter dg_broker
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_config_file1
string
+DATA1/ADG/dr1ORA12RF.dat
dg_broker_config_file2
string
+DATA1/ADG/dr2ORA12RF.dat
dg_broker_start
boolean
TRUE
11-1-2. Standby DB
--grid os user
--ADG 용 디렉토리 생성
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd mkdir
+DATA1/ADG
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd ls
-sl +DATA1/ | grep ADG
N
ADG/
--> 디렉토리 생성
완료
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재
ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Tue Dec 2 23:37:02 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ show parameter dg_broker_config_file
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_config_file1
string
/u01/app/oracle/product/12c/db
_1/dbs/dr1ORA12RF_STB.dat
dg_broker_config_file2
string
/u01/app/oracle/product/12c/db
_1/dbs/dr2ORA12RF_STB.dat
[ol7ora12sf]<SYS@ORA12RF>$ alter system set dg_broker_config_file1='+DATA1/ADG/dr1ORA12RF_STB.dat' scope=both;
System altered.
Elapsed: 00:00:00.02
[ol7ora12sf]<SYS@ORA12RF>$ alter system set
dg_broker_config_file2='+DATA1/ADG/dr2ORA12RF_STB.dat'
scope=both;
System altered.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$ show parameter dg_broker_start;
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_start
boolean
FALSE
[ol7ora12sf]<SYS@ORA12RF>$ alter system set dg_broker_start=true scope=both;
System altered.
Elapsed: 00:00:02.12
11-2. DG Broker 설정
--Primary DB의 1번 노드에서 작업
(oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat >>
~oracle/.bash_profile << 'EOF'
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ source
~oracle/.bash_profile
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ dg
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Sat
Dec 13 10:22:53 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
--ORA12RF_DG 라는 설정을 생성하고
Primary DB를 등록함
DGMGRL> create configuration 'ORA12RF_DG' AS primary
database is 'ORA12RF' connect identifier is TNS_ORA12RF;
Configuration
"ORA12RF_DG" created with primary database "ORA12RF"
DGMGRL> SHOW CONFIGURATION
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary database
Fast-Start Failover: DISABLED
Configuration
Status:
DISABLED
DGMGRL> quit
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 3 00:05:12 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter LOG_ARCHIVE_DEST_2;
NAME
TYPE
VALUE
------------------------------------
--------------------------------- -------
log_archive_dest_2
string
(NULL)
log_archive_dest_20
string
(NULL)
log_archive_dest_21
string
(NULL)
log_archive_dest_22
string
(NULL)
log_archive_dest_23
string
(NULL)
log_archive_dest_24
string
(NULL)
log_archive_dest_25
string
(NULL)
log_archive_dest_26
string
(NULL)
log_archive_dest_27
string
(NULL)
log_archive_dest_28
string
(NULL)
log_archive_dest_29
string
(NULL)
--> log_archive_dest_2 파라미터는 설정이 되어 있으면 안됨. 설정이 안되어 있는
것을 확인
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 13 10:25:07 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
DGMGRL> add database ORA12RF_STB as connect identifier
is TNS_ORA12RF_STB;
Database "ora12rf_stb" added
DGMGRL> show configuration
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
DISABLED
DGMGRL> enable
configuration;
Enabled.
DGMGRL> SHOW
INSTANCE 'ORA12RF1' StaticConnectIdentifier;
StaticConnectIdentifier =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.14)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA12RF_DGMGRL)(INSTANCE_NAME=ORA12RF1)(SERVER=DEDICATED)))'
DGMGRL> SHOW INSTANCE 'ORA12RF2'
StaticConnectIdentifier;
StaticConnectIdentifier =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.15)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA12RF_DGMGRL)(INSTANCE_NAME=ORA12RF2)(SERVER=DEDICATED)))'
DGMGRL> SHOW
INSTANCE 'ORA12RF' StaticConnectIdentifier;
StaticConnectIdentifier =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.111)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA12RF_STB_DGMGRL)(INSTANCE_NAME=ORA12RF)(SERVER=DEDICATED)))'
DGMGRL> show configuration
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Warning:
ORA-16809: multiple warnings detected for the member
Fast-Start Failover: DISABLED
Configuration
Status:
WARNING (status updated 13 seconds
ago)
DGMGRL> show configuration verbose;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Warning:
ORA-16809: multiple warnings detected for the member
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout
= '30'
TraceLevel
= 'USER'
FastStartFailoverLagLimit = '30'
CommunicationTimeout
= '180'
ObserverReconnect
= '0'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
ObserverOverride
= 'FALSE'
ExternalDestination1
= ''
ExternalDestination2
= ''
PrimaryLostWriteAction =
'CONTINUE'
ConfigurationWideServiceName =
'ORA12RF_CFG'
Fast-Start Failover: DISABLED
Configuration
Status:
WARNING
DGMGRL> show database ORA12RF_STB;
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: OFFLINE
Transport
Lag: (unknown)
Apply Lag: (unknown)
Average Apply Rate: (unknown)
Real Time Query: OFF
Instance(s):
ORA12RF
Database
Status:
DISABLED
DGMGRL> disable
configuration;
Disabled.
--Standby DB에서 작업
(oracle os user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle/BACKUP_FOR_ADG]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 3 00:20:44 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ alter database open read only;
Database altered.
Elapsed: 00:00:01.64
-------------------------------------동기화 문제 발생 시
BEGIN------------------------------------------
[ol7ora12sf]<SYS@ORA12RF>$ shutdown immediate;
Database
closed.
Database dismounted.
ORACLE instance shut down.
[ol7ora12sf]<SYS@ORA12RF>$ startup mount;
[ol7ora12sf]<SYS@ORA12RF>$
--동기화 문제 발생 시 Standby DB에서
Standby Redo Log는 별도로 생성해줘야함
ALTER DATABASE DROP LOGFILE
GROUP 7;
ALTER DATABASE DROP LOGFILE GROUP 8;
ALTER DATABASE DROP LOGFILE GROUP 9;
ALTER DATABASE DROP LOGFILE GROUP 10;
ALTER DATABASE DROP LOGFILE GROUP 11;
ALTER DATABASE DROP LOGFILE GROUP 12;
ALTER DATABASE DROP LOGFILE GROUP 13;
ALTER DATABASE DROP LOGFILE GROUP 14;
ALTER DATABASE ADD
STANDBY LOGFILE THREAD 1 group 7('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 group
8('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD
STANDBY LOGFILE THREAD 1 group 9('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 group
10('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD
STANDBY LOGFILE THREAD 2 group 11('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 group
12('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD
STANDBY LOGFILE THREAD 2 group 13('+DATA1','+FRA1') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 group
14('+DATA1','+FRA1') SIZE 200M;
[ol7ora12sf]<SYS@ORA12RF>$ alter database open read only;
------------------------------------동기화 문제 발생 시
END-----------------------------------------------
--Primary DB의 DGMGRL에서 configuration 활성화
DGMGRL> enable
configuration;
Enabled.
--Primary DB의 DGMGRL에서
ORA12RF_STB 상태 확인
DGMGRL> show database ORA12RF_STB;
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 0 seconds (computed 1
second ago)
Average Apply Rate: 7.11 MByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
--Standby DB에서 DGMGRL로 접속
가능하도록 설정함
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat >>
~oracle/.bash_profile << EOF
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
EOF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ source
~oracle/.bash_profile
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경
설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID =
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 13 13:37:53 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to
"ORA12RF_STB"
Connected as SYSDBA.
11-3. DG Broker 설정 후 파라미터 확인
--Primary DB (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ls
1.USER_TABLESPACE_SYS_SYSTEM_v1_0.sql
adg_par.sql asmf.sql cf.sql hpara.sql
para.sql stb_rdl.sql tbs.sql
2.TABLE_INDEX_MERGE_STATISTICS_TUNER_v1_1.sql
al.sql asm.sql fra.sql
mys.sql rdl.sql st_redo.sql tsdf.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 3 22:36:55 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @adg_par
NAME
VALUE
--------------------------------------------------
------------------------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
service="tns_ora12rf_stb", ASYNC NOAFFIRM delay=0 optional compression=disable
max_failure
=0 max_connections=1 reopen=300 db_unique_name="ora12rf_stb" net_timeout=30,
valid_for=(on
line_logfile,all_roles)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
dg_config=(ORA12RF,ora12rf_stb)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed: 00:00:00.01
--Standby DB (orale os
user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
cat > /home/oracle/oracle_scripts/adg_par.sql << 'EOF'
SET LINESIZE 300 PAGES 100
COL
VALUE FOR A90
COL NAME FOR A50
SELECT NAME
, VALUE
FROM V$PARAMETER
WHERE
UPPER(NAME)
IN (
UPPER(TRIM('DB_NAME'
))
,
UPPER(TRIM('DB_UNIQUE_NAME'
))
,
UPPER(TRIM('LOG_ARCHIVE_CONFIG' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_2' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_1' ))
,
UPPER(TRIM('LOG_ARCHIVE_DEST_STATE_2' ))
,
UPPER(TRIM('REMOTE_LOGIN_PASSWORDFILE'))
,
UPPER(TRIM('LOG_ARCHIVE_FORMAT' ))
,
UPPER(TRIM('LOG_ARCHIVE_MAX_PROCESSES'))
,
UPPER(TRIM('FAL_CLIENT'
))
,
UPPER(TRIM('FAL_SERVER'
))
,
UPPER(TRIM('DB_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('LOG_FILE_NAME_CONVERT' ))
,
UPPER(TRIM('STANDBY_FILE_MANAGEMENT' ))
);
EOF
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 3 22:39:23 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ @adg_par
NAME
VALUE
--------------------------------------------------
-------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
+DATA1/ORA12RF/, +DATA1/ORA12RF_STB/, +FRA1/ORA12RF/, +FRA1/ORA12RF_STB/
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
enable
fal_client
(NULL)
fal_server
tns_ora12rf
log_archive_config
dg_config=(ORA12RF_STB,ORA12RF)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF_STB
15 rows selected.
Elapsed: 00:00:00.00
[ol7ora12sf]<SYS@ORA12RF>$ alter system reset log_file_name_convert
scope=spfile;
System altered.
Elapsed: 00:00:00.02
--Primary DB의 DGMGRL 에서 상태
확인
DGMGRL> show
database ORA12RF_STB;
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 0 seconds (computed 1
second ago)
Average Apply Rate: 375.00 KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Warning: ORA-16675: database
instance restart required for property value modification to take effect
Warning: ORA-16714: the
value of property LogFileNameConvert is inconsistent with the member
setting
Database
Status:
WARNING
DGMGRL> SHOW DATABASE 'ora12rf_stb'
InconsistentProperties;
INCONSISTENT PROPERTIES
INSTANCE_NAME
PROPERTY_NAME
MEMORY_VALUE
SPFILE_VALUE BROKER_VALUE
ORA12RF
LogFileNameConvert
+DATA1/ORA12RF/, +DATA1/ORA12RF_STB/, +FRA1/ORA12RF/,
+FRA1/ORA12RF_STB/
DGMGRL> EDIT
DATABASE 'ora12rf_stb' SET PROPERTY LogFileNameConvert = '';
Warning:
ORA-16675: database instance restart required for property value modification to
take effect
Property "logfilenameconvert" updated
--Standby DB 재기동
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 21 18:56:28 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ shutdown immediate;
Database closed.
Database
dismounted.
ORACLE instance shut down.
[ol7ora12sf]<SYS@ORA12RF>$ startup
ORACLE instance started.
Total System
Global Area 5033164800 bytes
Fixed
Size
8631048 bytes
Variable
Size
1409289464 bytes
Database
Buffers 3607101440 bytes
Redo
Buffers
8142848 bytes
Database mounted.
Database opened.
--Primary DB에서 SWITCH LOGFILE
한번 해줌
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM SWITCH LOGFILE;
--Primary DB의 DGMGRL 에서 상태
확인
DGMGRL> show
database ORA12RF_STB;
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 0 seconds (computed 1
second ago)
Average Apply Rate: 121.00 KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
11-4. Primary DB에서 아카이브 못지우게 설정
--Primary 서버에서 RMAN 백업
시 아래 설정 추가 (oracle os user)
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL
STANDBY;
--Primary 서버 1번
노드
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/os_scripts]$ cat
rman_init.sh | grep -i STANDBY
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL
STANDBY; #For ADG
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crontab -l |
grep -i backup
20 2 * * *
/home/oracle/os_scripts/rman_backup.sh &>/dev/null
--> 백업
자동화 쉘 활성화 시킴
11-5. Standby DB에서 아카이브 주기적인 백업 및 삭제
접속할 데이터베이스(DB_NAME)를
선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3):
2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경
설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ mkdir -p
/home/oracle/os_scripts/ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ mkdir -p
/home/oracle/rman_backup/ORA12RF_STB/autobackup
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ vi
/home/oracle/os_scripts/ORA12RF_STB/rman_init.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/os_scripts/ORA12RF_STB/rman_init.sh
#!/bin/bash
export
ORACLE_HOME=/u01/app/oracle/product/12c/db_1
export
ORACLE_SID=ORA12RF
mkdir -p /home/oracle/rman_backup/ORA12RF_STB/autobackup/
$ORACLE_HOME/bin/rman target / << EOF
run {
#CONFIGURE RETENTION POLICY
TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE
DISK TO '/home/oracle/rman_backup/ORA12RF_STB/autobackup/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'+DATA1/ORA12RF_STB/CONTROLFILE/snapcf_CA.f';
CONFIGURE
DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO
1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE
DISK TO 1;
CONFIGURE ARCHIVELOG DELETION POLICY TO
NONE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE
'DEFAULT' OPTIMIZE FOR LOAD TRUE;
CONFIGURE ARCHIVELOG
DELETION POLICY TO APPLIED ON ALL STANDBY; #For ADG
}
exit;
EOF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ chmod 775 /home/oracle/os_scripts/ORA12RF_STB/rman_init.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ vi
/home/oracle/os_scripts/ORA12RF_STB/rman_arch.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/os_scripts/ORA12RF_STB/rman_arch.sh
export
ORACLE_HOME=/u01/app/oracle/product/12c/db_1
export
ORACLE_SID=ORA12RF
$ORACLE_HOME/bin/rman target / << EOF
run {
crosscheck archivelog all;
delete noprompt force archivelog until time 'SYSDATE-7';
}
exit;
EOF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ chmod 775
/home/oracle/os_scripts/ORA12RF_STB/rman_arch.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ vi
/home/oracle/os_scripts/ORA12RF_STB/rman_backup.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cat
/home/oracle/os_scripts/ORA12RF_STB/rman_backup.sh
mkdir -pv
/home/oracle/os_scripts/rman_log/ORA12RF_STB/
save_datetime=`date +"%Y%m%d%H%M%S"`
/home/oracle/os_scripts/ORA12RF_STB/rman_init.sh >
/home/oracle/os_scripts/rman_log/ORA12RF_STB/rman_init_log_${save_datetime}.log
/home/oracle/os_scripts/ORA12RF_STB/rman_arch.sh >
/home/oracle/os_scripts/rman_log/ORA12RF_STB/rman_arch_log_${save_datetime}.log
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ chmod 775 /home/oracle/os_scripts/ORA12RF_STB/rman_backup.sh
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crontab -e
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crontab -l |
grep -i ora12rf_stb
30 2 * * *
/home/oracle/os_scripts/ORA12RF_STB/rman_backup.sh
&>/dev/null
--> 위와
같이 설정하면 주기적으로 Standby DB의 아카이브 로그(7일전에 생성된)를 삭제하게됨
12. 동기화 테스트
--Primary
DB
create user
adg_test identified by oracle;
GRANT RESOURCE, CONNECT
TO adg_test;
ALTER USER adg_test ACCOUNT UNLOCK;
ALTER USER adg_test DEFAULT TABLESPACE users;
ALTER USER adg_test TEMPORARY TABLESPACE temp;
ALTER USER adg_test quota unlimited on
users;
drop table
adg_test.tb_adg_test_01;
create table
adg_test.tb_adg_test_01
(
adg_test_01_no number(15)
)
;
insert into adg_test.tb_adg_test_01 values (1);
commit;
insert into
adg_test.tb_adg_test_01
select (select
nvl(max(adg_test_01_no), 0) from adg_test.tb_adg_test_01)+level from dual
connect by level <= 1000000
;
commit;
--Standby DB에서
확인
select count(*)
from adg_test.TB_ADG_TEST_01;
COUNT(*)
---------
1000001
--> 정상적으로 실시간 동기화 됨을 확인함
13. ADG 상태 모니터링
13-1. DG Broker를 이용한 통합 모니터링
--Primary 서버에서 확인 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Wed Dec 17 22:36:02 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
DGMGRL> SHOW CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 15 seconds ago)
--> 결과가
"SUCCESS"여야 함. "WARNING"이나 "ERROR" 발생 시 상세 확인 필요.
DGMGRL> SHOW DATABASE verbose 'ORA12RF';
Database - ORA12RF
Role:
PRIMARY
Intended State:
TRANSPORT-ON
Instance(s):
ORA12RF1
ORA12RF2
Properties:
DGConnectIdentifier
= 'tns_ora12rf'
ObserverConnectIdentifier = ''
LogXptMode
= 'ASYNC'
RedoRoutes
= ''
DelayMins
= '0'
Binding
= 'optional'
MaxFailure
= '0'
MaxConnections
= '1'
ReopenSecs
= '300'
NetTimeout
= '30'
RedoCompression
= 'DISABLE'
LogShipping
= 'ON'
PreferredApplyInstance =
''
ApplyInstanceTimeout
= '0'
ApplyLagThreshold
= '30'
TransportLagThreshold
= '30'
TransportDisconnectedThreshold = '30'
ApplyParallel
= 'AUTO'
ApplyInstances
= '0'
StandbyFileManagement
= 'AUTO'
ArchiveLagTarget
= '0'
LogArchiveMaxProcesses =
'4'
LogArchiveMinSucceedDest = '1'
DataGuardSyncLatency
= '0'
DbFileNameConvert
= ''
LogFileNameConvert
= ''
FastStartFailoverTarget = ''
InconsistentProperties =
'(monitor)'
InconsistentLogXptProps =
'(monitor)'
SendQEntries
= '(monitor)'
LogXptStatus
= '(monitor)'
RecvQEntries
= '(monitor)'
PreferredObserverHosts =
''
StaticConnectIdentifier(*)
StandbyArchiveLocation(*)
AlternateLocation(*)
LogArchiveTrace(*)
LogArchiveFormat(*)
TopWaitEvents(*)
(*) - Please check specific instance for
the property value
Log file
locations(*):
(*) - Check specific
instance for log file locations.
Database
Status:
SUCCESS
DGMGRL> SHOW DATABASE verbose 'ora12rf_stb';
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 0 seconds (computed 1
second ago)
Average Apply Rate: 103.00 KByte/s
Active Apply Rate: 2.70 MByte/s
Maximum Apply Rate: 7.13 MByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Properties:
DGConnectIdentifier
= 'tns_ora12rf_stb'
ObserverConnectIdentifier = ''
LogXptMode
= 'ASYNC'
RedoRoutes
= ''
DelayMins
= '0'
Binding
= 'optional'
MaxFailure
= '0'
MaxConnections
= '1'
ReopenSecs
= '300'
NetTimeout
= '30'
RedoCompression
= 'DISABLE'
LogShipping
= 'ON'
PreferredApplyInstance =
''
ApplyInstanceTimeout
= '0'
ApplyLagThreshold
= '30'
TransportLagThreshold
= '30'
TransportDisconnectedThreshold = '30'
ApplyParallel
= 'AUTO'
ApplyInstances
= '0'
StandbyFileManagement
= 'AUTO'
ArchiveLagTarget
= '0'
LogArchiveMaxProcesses =
'4'
LogArchiveMinSucceedDest = '1'
DataGuardSyncLatency
= '0'
DbFileNameConvert
= ''
LogFileNameConvert
= ''
FastStartFailoverTarget = ''
InconsistentProperties =
'(monitor)'
InconsistentLogXptProps =
'(monitor)'
SendQEntries
= '(monitor)'
LogXptStatus
= '(monitor)'
RecvQEntries
= '(monitor)'
PreferredObserverHosts =
''
StaticConnectIdentifier =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.111)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ORA12RF_STB_DGMGRL)(INSTANCE_NAME=ORA12RF)(SERVER=DEDICATED)))'
StandbyArchiveLocation =
'+FRA1'
AlternateLocation
= ''
LogArchiveTrace
= '0'
LogArchiveFormat
= '%t_%s_%r.ARC'
TopWaitEvents
= '(monitor)'
Log file
locations:
Alert
log
: /u01/app/oracle/diag/rdbms/ora12rf_stb/ORA12RF/trace/alert_ORA12RF.log
Data Guard Broker log :
/u01/app/oracle/diag/rdbms/ora12rf_stb/ORA12RF/trace/drcORA12RF.log
Database
Status:
SUCCESS
13-2. Primary Database 모니터링 (전송 상태)
--Primary 서버에서 확인 (oracle os
user)
--Primary에서는 아카이브
목적지(Standby)로의 전송이 정상적인지, RAC 노드 간 불일치는 없는지 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 10:27:51 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
COLUMN
INST_ID FORMAT
9999 HEADING "Inst"
COLUMN DEST_ID FORMAT
99 HEADING "ID"
COLUMN STATUS FORMAT
a10 HEADING "Status"
COLUMN ERROR
FORMAT a30 HEADING "Error Message"
WORD_WRAPPED
COLUMN
TARGET FORMAT
a10 HEADING "Target"
COLUMN LOG_SEQUENCE FORMAT 9999999
HEADING "Log Seq"
COLUMN APPLIED_SCN FORMAT
9999999999999 HEADING "Applied SCN"
--아카이브 목적지 상태 및 에러
확인
SELECT INST_ID,
DEST_ID, STATUS, ERROR, TARGET, LOG_SEQUENCE, APPLIED_SCN
FROM GV$ARCHIVE_DEST
WHERE TARGET = 'STANDBY';
Inst
ID Status Error
Message
Target Log Seq Applied SCN
----- --- ---------- ------------------------------
---------- -------- --------------
1 2 VALID
(NULL)
STANDBY
33 13962540
2 2
VALID
(NULL)
STANDBY
27 13962540
2 rows selected.
Elapsed: 00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
COLUMN THREAD# FORMAT
999
COLUMN MAX_SEQUENCE FORMAT
9999999
COLUMN APPLIED FORMAT
a10
--최근 아카이브 로그 생성 및 전송
현황
SELECT
THREAD#, APPLIED, MAX(SEQUENCE#) "MAX_SEQUENCE"
FROM
(
SELECT A.*
, RANK() OVER(ORDER BY RESETLOGS_TIME DESC) AS RNUM
FROM
V$ARCHIVED_LOG A
WHERE 1=1
AND A.DEST_ID = 2
) A
WHERE 1=1
AND
RNUM = 1
GROUP BY THREAD#, APPLIED
ORDER BY THREAD# DESC, APPLIED;
THREAD# APPLIED MAX_SEQUENCE
------- ---------- ------------
2
YES
26
1
NO
32
1
YES
31
3 rows selected.
Elapsed: 00:00:00.01
13-3. Standby에서 확인
접속할
데이터베이스(DB_NAME)를 선택하세요:
1) ORA12SF
2) ORA12RF
3) RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재
ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 10:33:24 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE
200
SET PAGESIZE 1000
COLUMN
OPEN_MODE FORMAT a25 HEADING "Open Mode"
COLUMN
DATABASE_ROLE FORMAT a20 HEADING "DB Role"
COLUMN
PROTECTION_MODE FORMAT a25 HEADING "Protection Mode"
SELECT OPEN_MODE,
DATABASE_ROLE, PROTECTION_MODE
FROM
V$DATABASE;
Open
Mode
| DB
Role
| Protection Mode
------------------------- |
-------------------- | -------------------------
READ
ONLY WITH APPLY | PHYSICAL
STANDBY | MAXIMUM PERFORMANCE
-->
Standby DB 상태 확인
1 row selected.
Elapsed: 00:00:00.00
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
SET
COLSEP ' | '
COLUMN
PROCESS FORMAT a10
HEADING "Process"
COLUMN STATUS
FORMAT a15 HEADING "Status"
COLUMN THREAD# FORMAT
9999 HEADING "Thread"
COLUMN SEQUENCE# FORMAT 9999999
HEADING "Sequence"
COLUMN BLOCK#
FORMAT 99999999 HEADING "Current Block"
COLUMN BLOCKS FORMAT
99999999 HEADING "Total Blocks"
SELECT PROCESS,
STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS
FROM
V$MANAGED_STANDBY
WHERE PROCESS LIKE
'MRP%';
Process |
Status | Thread | Sequence
| Current Block | Total Blocks
---------- |
--------------- | ------ | -------- | ------------- | ------------
MRP0 |
APPLYING_LOG | 1
| 33
| 50246
| 409600
1 row selected.
Elapsed: 00:00:00.00
--> MRP 프로세스 확인
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
SET
COLSEP ' | '
COLUMN
NAME FORMAT
a20 HEADING "Metric Name"
COLUMN
VALUE FORMAT
a20 HEADING "Lag Time"
COLUMN DATUM_TIME FORMAT
a30 HEADING "Datum Time"
COLUMN TIME_COMPUTED FORMAT
a30 HEADING "Computed
Time"
SELECT NAME,
VALUE, DATUM_TIME, TIME_COMPUTED
FROM
V$DATAGUARD_STATS
WHERE NAME IN ('transport lag',
'apply lag');
Metric
Name | Lag
Time |
Datum
Time
| Computed Time
-------------------- |
-------------------- | ------------------------------ |
------------------------------
transport
lag | +00
00:00:00 | 12/21/2025
20:05:47 |
12/21/2025 20:05:48
apply
lag | +00
00:00:00 | 12/21/2025
20:05:47 |
12/21/2025 20:05:48
2 rows selected.
Elapsed: 00:00:00.02
--> 지연이 없음을 확인
COLUMN DEST_ID FORMAT 99 HEADING "DEST_ID"
COLUMN STATUS FORMAT a15 HEADING "Status"
COLUMN TYPE FORMAT a15 HEADING "Type"
COLUMN RECOVERY_MODE FORMAT a25 HEADING "Recovery Mode"
COLUMN SYNCHRONIZATION_STATUS FORMAT a20 HEADING "Sync
Status"
SELECT DEST_ID,
STATUS, TYPE, RECOVERY_MODE, SYNCHRONIZATION_STATUS
FROM V$ARCHIVE_DEST_STATUS
WHERE STATUS <> 'INACTIVE';
DEST_ID |
Status |
Type |
Recovery
Mode |
Sync Status
------- | --------------- | ---------------
| ------------------------- | --------------------
1 |
VALID |
LOCAL | MANAGED REAL
TIME APPLY | STATUS NOT AVAILABLE
32 |
VALID |
UNKNOWN |
IDLE
| STATUS NOT AVAILABLE
2 rows selected.
Elapsed: 00:00:00.00
14. 재기동 테스트
14-1. Shutdown 절차
Shutdown(종료) 시에는
Primary를 먼저 내리는 것이 일반적이며, Startup(기동) 시에는 Standby를 먼저 올리는 것이 권장
이유: Primary를 먼저 종료하여 더 이상의 Redo 생성을 막고, Standby가 마지막 로그까지
반영하도록 하기 위함임.
(단, FSFO가 설정된 경우라면 순서가
다름.)
--Primary 서버
--oracle os user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 6 19:23:56 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDG.
--구성 상태 확인 (SUCCESS
확인)
DGMGRL> SHOW CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 25 seconds
ago)
--Lag 확인 (Transport Lag, Apply
Lag가 0인지 확인)
DGMGRL> SHOW DATABASE 'ora12rf_stb';
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 0 seconds ago)
Apply
Lag: 0 seconds (computed 0
seconds ago)
Average Apply Rate: 60.00 KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
DGMGRL> quit
--Primary DB를
내림
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ora12rf -stopoption immediate
--Primary DB 1번 노드 Alert
Log
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
alog
alias alog='tail
-f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
alog
Thread 1 closed at
log sequence 33
Successful close of redo thread
1
--Primary DB 2번 노드 Alert
Log
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ alias
alog
alias alog='tail
-f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$
alog
Thread 2 closed at
log sequence 27
Successful close of redo thread
2
--Standby DB Alert
Log
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
alog
alias alog='tail
-f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
alog
RFS[5]: Assigned
to RFS process (PID:3651)
RFS[5]: Possible network
disconnect with primary database
Sun Dec 21 20:10:29
2025
RFS[6]: Assigned to RFS process (PID:3649)
RFS[6]: Possible network disconnect with primary
database
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
2 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
--Standby Database 적용
상태 확인 (Standby 서버)
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경
설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 19:32:16 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
COLUMN THREAD# FORMAT
999
COLUMN MAX_SEQUENCE FORMAT
9999999
COLUMN APPLIED FORMAT
a10
;
--최근 아카이브 로그 생성 및 전송
현황
SELECT
THREAD#, APPLIED, MAX(SEQUENCE#) "MAX_SEQUENCE"
FROM
(
SELECT A.*
, RANK() OVER(ORDER BY RESETLOGS_TIME DESC) AS RNUM
FROM
V$ARCHIVED_LOG A
WHERE 1=1
AND A.DEST_ID = 1
) A
WHERE 1=1
AND
RNUM = 1
GROUP BY THREAD#, APPLIED
ORDER BY THREAD# DESC, APPLIED;
THREAD#
APPLIED MAX_SEQUENCE
-------
---------- ------------
2
YES
26
1
IN-MEMORY
32
1
YES
31
--> IN-MEMORY의 의미:
Real-Time Apply 기능이 작동 중임을 나타냄
-->
Standby DB는 아카이브 로그 파일이 디스크에 떨어질 때까지 기다리지 않음
--> Standby Redo Log(SRL)를 통해 메모리 상에서
로그를 받자마자 바로 적용해버립니다.
--> 즉, 32번은
디스크에 아카이브 파일로 완전히 정착되기 전에(또는 정착되는 과정 중에) 이미 메모리 레벨에서 적용이 끝났다는 의미로 해석하면됨
3 rows selected.
Elapsed: 00:00:00.00
--> 동기화가 어디까지 된건지 확인
select process,
status, thread#, sequence#, block#
from
v$managed_standby a
where process like
'MRP%';
PROCESS
STATUS
THREAD# SEQUENCE# BLOCK#
---------------------------
------------------------------------ ------- ---------- ----------
MRP0
APPLYING_LOG
1
33 57864
1 row selected.
Elapsed: 00:00:00.00
--> Thread 1번의 33 시퀀스를 동기화
중이었음
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 6 19:34:09 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDG.
DGMGRL> show database
'ora12rf_stb';
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 271 seconds ago)
Apply
Lag: 2 seconds (computed
271 seconds ago)
Average Apply Rate: 53.00
KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Warning(s):
ORA-16857: member
disconnected from redo source for longer than specified
threshold
Database
Status:
WARNING
DGMGRL> quit
--이제 Standby DB도
내림
--oracle os user
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl stop
database -db ORA12RF_STB -stopoption immediate
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
14-2. startup 절차
기동 순서 (Startup):
Standby DB 기동 -> Primary DB 기동
이유: Standby 리스너와 DB가
준비된 상태에서 Primary가 올라와야, Primary가 기동되자마자 에러 없이 아카이브를 전송할 수 있음
--Standby 서버 (oracle os
user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl config
database -db ora12rf_stb
Database unique name: ORA12RF_STB
Database name: ORA12RF
Oracle home:
/u01/app/oracle/product/12c/db_1
Oracle user: grid
Spfile:
+DATA1/ORA12RF_STB/PARAMETERFILE/spfile.298.1220467273
Password file:
+DATA1/ORA12RF_STB/PASSWORD/pwdora12rf_stb.297.1220467105
Domain:
Start options: read only
Stop options: immediate
Database
role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups: DATA1,FRA1
Services:
OSDBA group:
OSOPER group:
Database instance:
ORA12RF
--Standby 서버 (grid os
user)
--리스너 상태 확인 및 기동 (이미 떠있겠지만
확인)
[+ASM:grid@ol7ora12sf][/home/grid]$ srvctl status listener
-listener LISTENER_ADG
Listener LISTENER_ADG is enabled
Listener LISTENER_ADG is running on node(s): ol7ora12sf
[+ASM:grid@ol7ora12sf][/home/grid]$ lsnrctl status LISTENER_ADG
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-DEC-2025 20:21:44
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG)))
STATUS of the LISTENER
------------------------
Alias
LISTENER_ADG
Version
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start
Date
20-DEC-2025 14:08:05
Uptime
1 days 6 hr. 13 min. 38 sec
Trace
Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File
/u01/app/12c/grid/network/admin/listener.ora
Listener
Log File
/u01/app/oracle/diag/tnslsnr/ol7ora12sf/listener_adg/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_ADG)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.111)(PORT=1522)))
Services Summary...
Service
"ORA12RF_STB_DGMGRL" has 1 instance(s).
Instance
"ORA12RF", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
--Standby DB를 올림
(oracle os user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl start
database -db ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 ONLINE
ONLINE
ol7ora12sf
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
--------------------------------------------------------------------------------
--primary 서버에서
Primary DB를 올림
--oracle os user
--Primary DB 1번 노드
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
--Primary 서버 (oracle os
user)
--구동 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 6 19:48:00 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF"
Connected as
SYSDG.
DGMGRL> SHOW CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 42 seconds
ago)
DGMGRL> SHOW DATABASE 'ora12rf_stb';
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 0 seconds ago)
Apply
Lag: 0 seconds (computed 0
seconds ago)
Average Apply Rate: 174.00
KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
--Standby DB (oracle os
user)
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
COLUMN THREAD# FORMAT
999
COLUMN MAX_SEQUENCE FORMAT
9999999
COLUMN APPLIED FORMAT
a10
SELECT
THREAD#, APPLIED, MAX(SEQUENCE#) "MAX_SEQUENCE"
FROM
(
SELECT A.*
, RANK() OVER(ORDER BY RESETLOGS_TIME DESC) AS RNUM
FROM
V$ARCHIVED_LOG A
WHERE 1=1
AND A.DEST_ID = 1
) A
WHERE 1=1
AND
RNUM = 1
GROUP BY THREAD#, APPLIED
ORDER BY THREAD# DESC, APPLIED;
THREAD# APPLIED MAX_SEQUENCE
------- ---------- ------------
2
YES
29
1
IN-MEMORY
35
1
YES
34
3 rows selected.
Elapsed: 00:00:00.00
--primary DB에서 로그
스위치
[ol7ora12rf1]<SYS@ORA12RF1>$ Alter system archive log current;
System altered.
Elapsed: 00:00:00.02
--Standby DB (oracle os
user)
SET LINESIZE
200
SET PAGESIZE 1000
SET
TRIMSPOOL ON
SET TAB OFF
COLUMN THREAD# FORMAT
999
COLUMN MAX_SEQUENCE FORMAT
9999999
COLUMN APPLIED FORMAT
a10
SELECT
THREAD#, APPLIED, MAX(SEQUENCE#) "MAX_SEQUENCE"
FROM
(
SELECT A.*
, RANK() OVER(ORDER BY RESETLOGS_TIME DESC) AS RNUM
FROM
V$ARCHIVED_LOG A
WHERE 1=1
AND A.DEST_ID = 1
) A
WHERE 1=1
AND
RNUM = 1
GROUP BY THREAD#, APPLIED
ORDER BY THREAD# DESC, APPLIED;
THREAD#
APPLIED MAX_SEQUENCE
-------
---------- ------------
2
IN-MEMORY
30
2
YES
29
1
YES
36
3 rows selected.
Elapsed: 00:00:00.00
15. 스위치 오버 테스트
15-1. Primary DB에서 Standby DB로 Switch Over 하기
--Standby DB (oracle os
user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ source
~oracle/.bash_profile
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재
ORACLE_SID: ORA12RF
ORA12RF 환경 설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 6 11:22:14 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDG.
DGMGRL> show
configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 57 seconds
ago)
DGMGRL> VALIDATE DATABASE 'ora12rf_stb';
Database
Role: Physical standby database
Primary Database: ORA12RF
Ready for
Switchover: Yes
--> "Ready for
Switchover: Yes" 가 확인되어야 안전하게 진행 가능
Ready for
Failover: Yes (Primary Running)
Flashback
Database Status:
ORA12RF : On
ora12rf_stb: Off
Capacity
Information:
Database
Instances Threads
ORA12RF
2
2
ora12rf_stb
1
2
Warning: the target standby has
fewer instances than the
primary
database, this may impact application performance
Managed by
Clusterware:
ORA12RF : YES
ora12rf_stb: YES
--Standby DB에서 아래의 명령어 실행 시
ORA12RF(Old Primary)는 Standby로 전환되며 종료 후 재기동되고,
--ora12rf_stb(Old Standby)는 Primary로 전환되어 Open
됨
DGMGRL>
SWITCHOVER TO 'ora12rf_stb';
Performing switchover NOW, please wait...
New primary database "ora12rf_stb" is opening...
Oracle Clusterware is restarting database "ORA12RF" ...
Connected to "ORA12RF"
Connected to
"ORA12RF"
Switchover succeeded, new primary is
"ora12rf_stb"
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection Mode: MaxPerformance
Members:
ora12rf_stb
- Primary database
ORA12RF - Physical standby database
Error: ORA-12514:
TNS:listener does not currently know of service requested in connect
descriptor
--> Old Primrary(=New Standby가 재기동되는
중임)
Fast-Start Failover: DISABLED
Configuration
Status:
ERROR (status updated 70 seconds
ago)
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection Mode:
MaxPerformance
Members:
ora12rf_stb - Primary database
ORA12RF -
Physical standby database
-->
Old Standby(=New Primary)가 Primary가 되고
--> Old
Primary(=New Standby)가 Standby가 됨
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 20 seconds
ago)
--Old Primary(=새로운 Standby)에서
에서 ADG 관련 파라미터 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 11:44:00 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @adg_par
NAME
VALUE
--------------------------------------------------
----------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
tns_ora12rf_stb
log_archive_config
dg_config=(ORA12RF,ora12rf_stb)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed: 00:00:00.00
[ol7ora12rf1]<SYS@ORA12RF1>$
col name for
a10
col open_mode for a20
col
database_role for a20
select name, open_mode,
database_role from v$database;
NAME
OPEN_MODE
DATABASE_ROLE
---------- --------------------
--------------------
ORA12RF READ ONLY
WITH APPLY PHYSICAL STANDBY
1 row selected.
Elapsed: 00:00:00.01
--Old Standby(=새로운 Primary) 에서
ADG 관련 파라미터 확인
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
cdos
alias cdos='cd
/home/oracle/oracle_scripts'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cdos
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 11:45:14 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ @adg_par
NAME
VALUE
--------------------------------------------------
------------------------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
service="tns_ora12rf", ASYNC NOAFFIRM delay=0 optional compression=disable
max_failure=0 m
ax_connections=1 reopen=300 db_unique_name="ORA12RF" net_timeout=30,
valid_for=(online_log
file,all_roles)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
dg_config=(ORA12RF_STB,ORA12RF)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF_STB
15 rows selected.
Elapsed: 00:00:00.01
col name for a10
col open_mode for
a20
col database_role for a20
select name, open_mode, database_role from
v$database;
NAME
OPEN_MODE
DATABASE_ROLE
---------- --------------------
--------------------
ORA12RF READ
WRITE
PRIMARY
1 row selected.
Elapsed:
00:00:00.00
--동기화가 잘 되는지 확인
--Old Standby(=새로운 Primary)에서
트랜잭션 발생
create table adg_test.tb_adg_test_02
(
adg_test_02_no
number(15)
)
;
insert into adg_test.tb_adg_test_02 values (1);
commit;
insert into
adg_test.tb_adg_test_02
select (select
nvl(max(adg_test_02_no), 0) from adg_test.tb_adg_test_02)+level from dual
connect by level <= 1000000
;
commit;
--Old Primary(=새로운 Standby) 에서
확인
select count(*)
from adg_test.TB_ADG_TEST_02;
COUNT(*)
---------
1000001
1 rows selected.
15-2. 다시 원래대로 Switch over 하기
--Old Primary(=New Standby)에서 작업 (oracle os user)
--1번 노드에서 작업
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias dg
alias dg='rlwrap dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Wed Dec 17 23:35:51 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF"
Connected as
SYSDBA.
DGMGRL> SWITCHOVER TO
'ORA12RF';
Performing switchover NOW, please wait...
New primary database "ORA12RF" is opening...
Oracle Clusterware is restarting database "ora12rf_stb"
...
Connected to "ORA12RF_STB"
Connected to "ORA12RF_STB"
Switchover succeeded, new primary is
"ORA12RF"
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 72 seconds
ago)
DGMGRL>
16. 페일 오버 테스트
--Primary DB에서 Flashback
database 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 20:12:48 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
SET LINESIZE 200
PAGESIZE 100
COL INST_ID FOR 99
COL NAME FOR A10
COL DB_UNIQUE_NAME
FOR A15
COL OPEN_MODE FOR A20
COL DATABASE_ROLE FOR A20
COL
FLASHBACK_ON FOR A15
COL LOG_MODE FOR
A15
SELECT INST_ID,
NAME, DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE, LOG_MODE, FLASHBACK_ON
FROM GV$DATABASE
ORDER
BY INST_ID;
INST_ID
NAME DB_UNIQUE_NAME
OPEN_MODE
DATABASE_ROLE
LOG_MODE FLASHBACK_ON
------- ---------- --------------- --------------------
-------------------- --------------- ---------------
1 ORA12RF
ORA12RF READ
WRITE
PRIMARY
ARCHIVELOG YES
2 ORA12RF
ORA12RF READ
WRITE
PRIMARY
ARCHIVELOG YES
2 rows selected.
Elapsed: 00:00:00.16
--Primary DB를 Abort로
내림
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ORA12RF -stopoption abort
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
2 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
--Standby DB로 Failover 시킴
(지금부터 Standby 가 New Primary가 되는 것임)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
--Standby DB에서 Flashback
Database 확인
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 21 20:34:09 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$
SET LINESIZE 200
PAGESIZE 100
COL INST_ID FOR 99
COL NAME FOR A10
COL DB_UNIQUE_NAME
FOR A15
COL OPEN_MODE FOR A20
COL DATABASE_ROLE FOR A20
COL
FLASHBACK_ON FOR A15
COL LOG_MODE FOR
A15
SELECT INST_ID,
NAME, DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE, LOG_MODE, FLASHBACK_ON
FROM GV$DATABASE
ORDER
BY INST_ID;
INST_ID
NAME DB_UNIQUE_NAME
OPEN_MODE
DATABASE_ROLE
LOG_MODE FLASHBACK_ON
------- ---------- --------------- --------------------
-------------------- --------------- ---------------
1 ORA12RF
ORA12RF_STB READ ONLY WITH APPLY PHYSICAL
STANDBY ARCHIVELOG
YES
1 row selected.
Elapsed:
00:00:00.01
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 6 20:15:14 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDG.
DGMGRL> SHOW
CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
Error: ORA-12514:
TNS:listener does not currently know of service requested in connect
descriptor
ora12rf_stb - Physical standby database
Fast-Start Failover: DISABLED
Configuration
Status:
ERROR (status updated 0 seconds
ago)
DGMGRL>
FAILOVER TO 'ora12rf_stb';
Performing failover NOW, please wait...
Failover succeeded, new primary is
"ora12rf_stb"
--Old Standby(=새로운 Primary)에서
Failover 시점 확인
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 20:27:47 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$
--New Primary(ora12rf_stb)에서
Failover가 완료된 시점의 SCN을 확인합니다.
SET LINESIZE 200
COL
STANDBY_BECAME_PRIMARY_SCN FOR A30
COL CURRENT_SCN FOR
A30
COL FAILOVER_TIME FOR A25
SELECT
TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) AS STANDBY_BECAME_PRIMARY_SCN
, TO_CHAR(CURRENT_SCN) AS
CURRENT_SCN
,
TO_CHAR(SCN_TO_TIMESTAMP(STANDBY_BECAME_PRIMARY_SCN), 'YYYY-MM-DD HH24:MI:SS')
AS FAILOVER_TIME
FROM
V$DATABASE;
STANDBY_BECAME_PRIMARY_SCN
CURRENT_SCN
FAILOVER_TIME
------------------------------
------------------------------ -------------------------
13975066
13975756
2025-12-21 20:33:23
1 row selected.
Elapsed: 00:00:00.01
-->
STANDBY_BECAME_PRIMARY_SCN 에 대한 설명
--> 이
SCN이 바로 "이 시점 이후의 Old Primary 데이터는 버려진다"는 기준점이 됨
--여기서
나온 STANDBY_BECAME_PRIMARY_SCN 값이 복구 기준선임
--Old Primary를
Reinstate 하면, Old Primary의 데이터 중 이 SCN보다 높은 값(미래의 데이터)은 Flashback을 통해 지워지게
됨
--Old Primary(New
Standby)의 마지막 상태 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF -startoption mount
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 20:39:03 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SET LINESIZE
200
SET PAGESIZE 100
SET COLSEP
' | '
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD
HH24:MI:SS';
COLUMN
TABLESPACE_NAME FORMAT a15 HEADING 'TS Name'
COLUMN
CHECKPOINT_CHANGE# FORMAT 999999999999999 HEADING 'Checkpoint SCN'
COLUMN CHECKPOINT_TIME FORMAT a20 HEADING 'Checkpoint
Time'
COLUMN NAME FORMAT a60 HEADING 'File
Name'
SELECT
TABLESPACE_NAME,
CHECKPOINT_CHANGE#,
CHECKPOINT_TIME,
NAME
FROM
V$DATAFILE_HEADER;
TS
Name | Checkpoint
SCN | Checkpoint Time | File Name
--------------- | ---------------- | -------------------- |
---------------------------------------------------
SYSTEM
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/system.257.1213483305
TUNER_DATA1
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/tuner_data1.272.1216160599
SYSAUX
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/sysaux.258.1213483329
UNDOTBS1
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/undotbs1.259.1213483345
UNDOTBS2
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/undotbs2.266.1213483407
USERS
| 13973884 | 2025-12-21
20:27:18 | +DATA1/ORA12RF/DATAFILE/users.260.1213483345
TUNER_IDX1
| 13973884 | 2025-12-21
20:27:18 |
+DATA1/ORA12RF/DATAFILE/tuner_idx1.273.1216160601
7 rows selected.
Elapsed: 00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$ SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
----------------
0
1 row selected.
Elapsed: 00:00:00.00
[ol7ora12rf1]<SYS@ORA12RF1>$
COL
OLDEST_FLASHBACK_SCN FOR 999999999999999
COL
OLDEST_FLASHBACK_TIME FOR A25
-- Flashback 가능 한계점
확인
SELECT
OLDEST_FLASHBACK_SCN,
TO_CHAR(OLDEST_FLASHBACK_TIME, 'YYYY-MM-DD HH24:MI:SS') AS OLDEST_TIME
FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN | OLDEST_TIME
-------------------- |
---------------------------------------------------------
13091087 | 2025-12-19 16:57:10
1 row selected.
Elapsed: 00:00:00.25
-->
STANDBY_BECAME_PRIMARY_SCN 은 13975756 임
--> Old
PRimary의 OLDEST_FLASHBACK_SCN 은 13091087 이므로 충분히 STANDBY_BECAME_PRIMARY_SCN 지점까지
갈수있는 상황
--> 즉 Reinstate가 가능한 상황임
--reinstate 작업 (New
Primary=기존 Standby 에서 실행)
[[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Wed Dec 17 23:44:53 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to
"ORA12RF_STB"
Connected as SYSDBA.
DGMGRL> REINSTATE
DATABASE 'ORA12RF';
Reinstating database "ORA12RF", please wait...
Reinstatement of database "ORA12RF" succeeded
--Broker는 ORA12RF(old
Primary)에 접속하여 해당 DB(New Primary)가 Failover된 SCN 시점보다 미래의 Redo를 가지고 있음을 감지하고,
--Flashback Database 기능을 사용하여 그 시점으로 되돌린 후, 새로운 Primary
DB(ora12rf_stb)의 Standby DB로 전환함
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ora12rf_stb - Primary database
ORA12RF -
Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
(status updated 38 seconds ago)
DGMGRL> show database 'ora12rf_stb';
Database - ora12rf_stb
Role:
PRIMARY
Intended State:
TRANSPORT-ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
DGMGRL> show database 'ORA12RF';
Database - ORA12RF
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 0 seconds ago)
Apply
Lag: 0 seconds (computed 0
seconds ago)
Average Apply Rate: 203.00
KByte/s
Real Time Query: ON
Instance(s):
ORA12RF1 (apply instance)
ORA12RF2
Database
Status:
SUCCESS
--Old Primary(=새로운 Standby) 는
reinstate 후에 read only 모드로 정상 오픈됨
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
--------------------------------------------------------------------------------
--현재까지
Failover 한 후 Old Primary를 Reinstate해서 Old Primary가 다시 Primary가 될 수 있는 준비를 한
상황임
--지금부터 Old Primary(현재 Standby)를 다시 Primary로
Switchover 할 것임
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 6 20:53:51 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
SET LINESIZE 200
PAGESIZE 1000
COL PROCESS FOR A10
COL STATUS FOR A15
COL THREAD# FOR
999
COL SEQUENCE# FOR 999999
COL
BLOCK# FOR 99999999
COL BLOCKS FOR
99999999
-- [Query] MRP(Managed
Recovery Process) 상태 확인
-- RAC 환경이므로 어떤 인스턴스에서 MRP가 도는지
확인 필요
SELECT INST_ID,
PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS
FROM GV$MANAGED_STANDBY
WHERE PROCESS LIKE 'MRP%';
INST_ID PROCESS
STATUS THREAD#
SEQUENCE# BLOCK# BLOCKS
---------- ---------- --------------- ------- ---------
--------- ---------
1
MRP0
APPLYING_LOG
1
4 106
409600
1 row selected.
Elapsed: 00:00:00.01
--다시 Switch over하여 원상
복구 (Old Primray=현재 Standby에서 작업)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Wed Dec 17 23:51:06 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF"
Connected as
SYSDBA.
DGMGRL> SWITCHOVER TO
'ORA12RF';
Performing switchover
NOW, please wait...
New primary database "ORA12RF" is
opening...
Oracle Clusterware is restarting database
"ora12rf_stb" ...
Connected to "ORA12RF_STB"
Connected to "ORA12RF_STB"
Switchover succeeded, new primary is "ORA12RF"
--> 이제
다시 ORA12RF가 Primary가 됨
17. FSFO 테스트
17-1. 옵저버 서버 구성 (Oracle Client만 설치)
<옵저버 전용 서버
정보>
OS : Oracle Linux Server 7.9 (grep ^PRETTY_NAME=
/etc/os-release | cut -d= -f2- | tr -d '"')
OS Kernal :
5.4.17-2102.201.3.el7uek.x86_64 (uname -r)
Hostname :
ol7ora12ss (hostname)
Public IP : 192.168.240.112
(getent ahostsv4 `hostname` | awk '{print $1; exit}')
--------------------옵저버 서버에서
아래의 작업은 이미 수행되어 있음 BEGIN--------------------
ifconfig 설치 (root os user)
wget,
lsof, vim, unzip,traceroute, cronie(crontab, crond) 설치
selinux permissive로 설정
Oracle12cR2
Pre Install을 위한 필수 패키지 설치
Oracle12cR2 Pre Install 설치
rlwrap 라이브러리 설치
oracle os user 생성 및
ORACLE_HOME 디렉토리 생성
transparent_hugepage disable 및
disable 확인
systemd-logind 설정
tuned-adm 서비스 확인 및 설정(throughput-performance)
mask 가 0022인지 확인
java jdk 1.8 설치
--------------------옵저버 서버에서 아래의 작업은 이미 수행되어 있음
END--------------------
[ORA12RF1:oracle@ol7ora12ss][/home/oracle]$ cat
~oracle/.bash_profile
# .bash_profile
# Get the aliases
and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export TMP=/tmp
export
TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=`hostname`
export ORACLE_BASE=/u01/app/oracle
export DB_HOME=$ORACLE_BASE/product/12c/client_1
export ORACLE_HOME=$DB_HOME
export
ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export PS1='[\u@\h][$PWD]$ '
alias
cdt='cd $ORACLE_HOME/network/admin'
alias cdb='cd
$ORACLE_BASE'
alias cdo='cd $ORACLE_HOME'
alias cdod='cd $ORACLE_HOME/dbs'
alias cdos='cd /home/oracle/oracle_scripts'
alias cdoss='cd /home/oracle/os_scripts'
set -o vi
stty erase ^H
stty erase ^?
[root@ol7ora12ss][/root]$ cat
~root/.bash_profile
# .bash_profile
# Get the aliases
and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
set -o vi
stty erase ^H
stty erase ^?
export
PS1='[\u@\h][$PWD]$ '
export
ORACLE_BASE=/u01/app/oracle
export
DB_HOME=$ORACLE_BASE/product/12c/client_1
export
BASE_PATH=/usr/sbin:$PATH
export
PATH=:$BASE_PATH
https://edelivery.oracle.com/osdc/faces/SoftwareDelivery
--> 위 사이트에서 oracle 12cr2 client linux x86.64를 다운로드
함
--다운로드 받은 파일을 아래의 위치에 업로드 함
(oracle os user)
[ORA12RF1:oracle@ol7ora12ss][/home/oracle]$ ls -l
oracle12cr2_client_linux_x86_64.zip
-rw-r--r--. 1
oracle oinstall 1258314437 Dec 18 00:50
oracle12cr2_client_linux_x86_64.zip
[oracle@ol7ora12ss][/home/oracle]$ mkdir -pv
$ORACLE_HOME
mkdir: created directory
‘/u01/app/oracle/product/12c/client_1’
[root@ol7ora12ss][/root]$ mkdir -pv
$DB_HOME
mkdir: created directory ‘/u01’
mkdir: created directory ‘/u01/app’
mkdir: created directory ‘/u01/app/oracle’
mkdir: created directory ‘/u01/app/oracle/product’
mkdir: created directory ‘/u01/app/oracle/product/12c’
mkdir: created directory
‘/u01/app/oracle/product/12c/client_1’
[root@ol7ora12ss][/root]$ chown -R oracle:oinstall /u01
[root@ol7ora12ss][/root]$ chmod -R 775
/u01
[oracle@ol7ora12ss][/home/oracle]$ unzip -q
oracle12cr2_client_linux_x86_64.zip -d /u01/app/oracle
[oracle@ol7ora12ss][/home/oracle]$ cd
/u01/app/oracle/client
[oracle@ol7ora12ss][/u01/app/oracle/client]$
./runInstaller
Installation Type:
Administrator 선택 (관리 도구 및 라이브러리 포함).
Oracle Base:
/u01/app/oracle
Oracle Home:
/u01/app/oracle/product/12c/client_1
Inventory
Directory: /u01/app/oraInventory
orainventory Group
Name : oinstall
Prerequisite Checks: preinstall
패키지를 설치했다면 대부분 통과함
(Swap 부족 등 경미한 경고는 Ignore All 가능하나,
패키지 누락은 yum으로 해결해야함.)
Install: 설치 진행
/u01/app/oraInventory
Execute Root
Scripts: 설치 완료 직전 팝업이 뜨면 Root 권한으로 별도 터미널에서 스크립트를 실행
[root@ol7ora12ss][/root]$
/u01/app/oraInventory/orainstRoot.sh
Changing
permissions of /u01/app/oraInventory.
Adding read,write
permissions for group.
Removing read,write,execute
permissions for world.
Changing groupname
of /u01/app/oraInventory to oinstall.
The execution of
the script is complete.
[root@ol7ora12ss][/root]$
/u01/app/oracle/product/12c/client_1/root.sh
Performing root
user operation.
The following
environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12c/client_1
Enter the full
pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin
...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed
by
Database Configuration Assistant when a database is
created
Finished running generic part of root script.
Now product-specific root actions will be
performed.
[oracle@ol7ora12ss][/home/oracle]$
sqlplus
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 10:56:40 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter user-name:
--> 클라이언트 설치가
완료됨
[oracle@ol7ora12ss][/home/oracle]$ which
opatch
/u01/app/oracle/product/12c/client_1/OPatch/opatch
[oracle@ol7ora12ss][/home/oracle]$ opatch
lspatches
There are no Interim patches installed in this Oracle Home
"/u01/app/oracle/product/12c/client_1".
OPatch succeeded.
[oracle@ol7ora12ss][/home/oracle]$ mkdir -pv
/home/oracle/patch
mkdir: created directory
‘/home/oracle/patch’
[oracle@ol7ora12ss][/home/oracle/patch]$
ll
total 2467460
-rw-r--r--. 1 oracle oinstall 2393137641 Jun 4
2024 p33583921_122010_Linux-x86-64.zip
-rw-r--r--. 1
oracle oinstall 133535622 Jun 4 2024
p6880880_122010_Linux-x86-64.zip
[oracle@ol7ora12ss][/home/oracle/patch]$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.bak
--opatch 를 패치함
[oracle@ol7ora12ss][/home/oracle/patch]$ unzip -q
p6880880_122010_Linux-x86-64.zip -d $ORACLE_HOME
[oracle@ol7ora12ss][/home/oracle/patch]$ which opatch
/u01/app/oracle/product/12c/client_1/OPatch/opatch
[oracle@ol7ora12ss][/home/oracle/patch]$ opatch
version
OPatch Version: 12.2.0.1.42
OPatch succeeded.
[oracle@ol7ora12ss][/home/oracle/patch]$ unzip -q p33583921_122010_Linux-x86-64.zip
[oracle@ol7ora12ss][/home/oracle/patch]$ cd 33583921
[oracle@ol7ora12ss][/home/oracle/patch/33583921]$
[oracle@ol7ora12ss][/home/oracle/patch/33583921]$ cd
33587128
[oracle@ol7ora12ss][/home/oracle/patch/33583921/33587128]$
--패치 충돌 점검
[oracle@ol7ora12ss][/home/oracle/patch/33583921/33587128]$
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph
./
Oracle Interim
Patch Installer version 12.2.0.1.42
Copyright (c) 2025,
Oracle Corporation. All rights reserved.
PREREQ session
Oracle
Home :
/u01/app/oracle/product/12c/client_1
Central Inventory :
/u01/app/oraInventory
from :
/u01/app/oracle/product/12c/client_1/oraInst.loc
OPatch
version : 12.2.0.1.42
OUI
version : 12.2.0.1.4
Log file location :
/u01/app/oracle/product/12c/client_1/cfgtoollogs/opatch/opatch2025-12-18_11-18-57AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
--패치 적용
[oracle@ol7ora12ss][/home/oracle/patch/33583921/33587128]$
$ORACLE_HOME/OPatch/opatch apply
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2025, Oracle Corporation. All rights
reserved.
Oracle Home :
/u01/app/oracle/product/12c/client_1
Central Inventory :
/u01/app/oraInventory
from :
/u01/app/oracle/product/12c/client_1/oraInst.loc
OPatch
version : 12.2.0.1.42
OUI
version : 12.2.0.1.4
Log file location :
/u01/app/oracle/product/12c/client_1/cfgtoollogs/opatch/opatch2025-12-18_11-19-09AM_1.log
Verifying
environment and performing prerequisite checks...
OPatch
continues with these patches: 33587128
Do you want to
proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown
Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home =
'/u01/app/oracle/product/12c/client_1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying
interim patch '33587128' to OH '/u01/app/oracle/product/12c/client_1'
ApplySession: Optional component(s) [ oracle.rdbms,
12.2.0.1.0 ] , [ oracle.ctx, 12.2.0.1.0 ] , [ oracle.oraolap, 12.2.0.1.0 ] , [
oracle.sdo, 12.2.0.1.0 ] , [ oracle.sdo.locator, 12.2.0.1.0 ] , [
oracle.sdo.locator.jrf, 12.2.0.1.0 ] , [ oracle.swd, 12.2.0.1.0 ] , [
oracle.swd.oui, 12.2.0.1.0 ] , [ oracle.tfa, 12.2.0.1.0 ] , [ oracle.ctx.rsf,
12.2.0.1.0 ] , [ oracle.network.cman, 12.2.0.1.0 ] , [ oracle.network.gsm,
12.2.0.1.0 ] , [ oracle.rdbms.drdaas, 12.2.0.1.0 ] , [ oracle.ons.cclient,
12.2.0.1.0 ] , [ oracle.ons.daemon, 12.2.0.1.0 ] , [ oracle.ons.eons.bwcompat,
12.2.0.1.0 ] , [ oracle.dbtoolslistener, 12.2.0.1.0 ] , [ oracle.rdbms.dv,
12.2.0.1.0 ] , [ oracle.rdbms.lbac, 12.2.0.1.0 ] , [ oracle.assistants.server,
12.2.0.1.0 ] , [ oracle.oid.client, 12.2.0.1.0 ] not present in the Oracle
Home or a higher version is found.
Patching component oracle.rdbms.util, 12.2.0.1.0...
Patching component oracle.network.rsf, 12.2.0.1.0...
Patching component oracle.rdbms.rsf, 12.2.0.1.0...
Patching component oracle.has.common.cvu, 12.2.0.1.0...
Patching component oracle.ldap.owm, 12.2.0.1.0...
Patching component oracle.ldap.rsf, 12.2.0.1.0...
Patching component oracle.nlsrtl.rsf, 12.2.0.1.0...
Patching component oracle.oracore.rsf, 12.2.0.1.0...
Patching component oracle.rdbms.dbscripts, 12.2.0.1.0...
Patching component oracle.rdbms.deconfig, 12.2.0.1.0...
Patching component oracle.rdbms.rsf.ic, 12.2.0.1.0...
Patching component oracle.rdbms.install.plugins, 12.2.0.1.0...
Patching component oracle.rdbms.install.common, 12.2.0.1.0...
Patching component oracle.assistants.deconfig, 12.2.0.1.0...
Patching component oracle.ons.ic, 12.2.0.1.0...
Patching component oracle.rdbms.rman, 12.2.0.1.0...
Patching component oracle.precomp.rsf, 12.2.0.1.0...
Patching component oracle.install.deinstalltool, 12.2.0.1.0...
Patching component oracle.assistants.acf, 12.2.0.1.0...
Patching component oracle.rdbms.oci, 12.2.0.1.0...
Patching component oracle.sqlplus.ic, 12.2.0.1.0...
Patching component oracle.xdk.parser.java, 12.2.0.1.0...
Patching component oracle.ldap.rsf.ic, 12.2.0.1.0...
Patching component oracle.ons, 12.2.0.1.0...
Patching component oracle.ldap.client, 12.2.0.1.0...
Patching component oracle.xdk, 12.2.0.1.0...
Patching component oracle.xdk.rsf, 12.2.0.1.0...
Patching component oracle.sqlplus, 12.2.0.1.0...
Patching component oracle.rdbms.crs, 12.2.0.1.0...
Patching component oracle.precomp.common, 12.2.0.1.0...
Patching component oracle.precomp.lang, 12.2.0.1.0...
Patching component
oracle.jdk, 1.8.0.91.0...
Patch 33587128 successfully
applied.
Log file location:
/u01/app/oracle/product/12c/client_1/cfgtoollogs/opatch/opatch2025-12-18_11-19-09AM_1.log
OPatch succeeded.
[oracle@ol7ora12ss][/home/oracle/patch/33583921/33678030]$
opatch lspatches
33587128;Database Jan 2022 Release Update : 12.2.0.1.220118
(33587128)
OPatch succeeded.
--여기까지 옵져버 서버에서 oracle client 를 설치하고 패치까지 적용함
17-2. 옵저버 서버 wallet 환경 구성
[oracle@ol7ora12ss][/home/oracle]$ vi
$ORACLE_HOME/network/admin/tnsnames.ora
[oracle@ol7ora12ss][/home/oracle]$ cat
$ORACLE_HOME/network/admin/tnsnames.ora
# Primary Database
(RAC)
TNS_ORA12RF =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA12RF)
(FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
)
)
# Standby Database
(Single)
TNS_ORA12RF_STB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.111)(PORT = 1522))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= ORA12RF_STB)
)
)
--wallet 구성을 위한 sqlnet.ora 수정
[oracle@ol7ora12ss][/home/oracle]$ mkdir -p
$ORACLE_HOME/network/admin/wallet
[oracle@ol7ora12ss][/home/oracle]$ vi
$ORACLE_HOME/network/admin/sqlnet.ora
[oracle@ol7ora12ss][/home/oracle]$ cat
$ORACLE_HOME/network/admin/sqlnet.ora
# sqlnet.ora
Network Configuration File:
/u01/app/oracle/product/12c/client_1/network/admin/sqlnet.ora
# Generated by Oracle configuration
tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
WALLET_LOCATION =
(SOURCE
=
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY =
/u01/app/oracle/product/12c/client_1/network/admin/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
--wallet
생성
[oracle@ol7ora12ss][/home/oracle]$ mkstore -wrl
$ORACLE_HOME/network/admin/wallet -create
Oracle Secret
Store Tool : Version 12.2.0.1.0
Copyright (c) 2004,
2016, Oracle and/or its affiliates. All rights reserved.
Enter password:Password@1
Enter password
again:Password@1
--wallet 저장 (TNS_ORA12RF 에 해당
wallet으로 비밀번호 없이 접속 가능)
[oracle@ol7ora12ss][/home/oracle]$ mkstore -wrl
$ORACLE_HOME/network/admin/wallet -createCredential TNS_ORA12RF SYS
"oracle"
Oracle Secret Store Tool : Version 12.2.0.1.0
Copyright (c) 2004, 2016, Oracle and/or its affiliates. All
rights reserved.
Enter wallet password:Password@1
--wallet 저장 (TNS_ORA12RF_STB 에
해당 wallet으로 비밀번호 없이 접속 가능)
[oracle@ol7ora12ss][/home/oracle]$ mkstore -wrl
$ORACLE_HOME/network/admin/wallet -createCredential TNS_ORA12RF_STB SYS
"oracle"
Oracle Secret Store Tool : Version 12.2.0.1.0
Copyright (c) 2004, 2016, Oracle and/or its affiliates. All
rights reserved.
Enter wallet password:Password@1
[oracle@ol7ora12ss][/home/oracle]$ mkstore -wrl
$ORACLE_HOME/network/admin/wallet -listCredential
Oracle Secret
Store Tool : Version 12.2.0.1.0
Copyright (c) 2004,
2016, Oracle and/or its affiliates. All rights reserved.
Enter wallet
password:Password@1
List credential (index: connect_string username)
2: TNS_ORA12RF_STB SYS
1:
TNS_ORA12RF SYS
[oracle@ol7ora12ss][/home/oracle]$ sqlplus
/@TNS_ORA12RF as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 11:43:17 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--> 비밀번호를 묻지 않고 바로 접속됨을
확인
SQL> SELECT
DATABASE_ROLE FROM V$DATABASE;
DATABASE_ROLE
------------------------------------------------
PRIMARY
[oracle@ol7ora12ss][/home/oracle]$ sqlplus
/@TNS_ORA12RF_STB as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 11:43:43 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -
64bit Production
--> 비밀번호를 묻지 않고 바로 접속됨을
확인
SQL> SELECT
DATABASE_ROLE FROM V$DATABASE;
DATABASE_ROLE
------------------------------------------------
PHYSICAL STANDBY
17-3. FSFO 설정
--Primary 서버에서 실행
(oracle os user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap dgmgrl sys/oracle@TNS_ORA12RF_STB'
DGMGRL> EDIT
DATABASE 'ORA12RF' SET PROPERTY FastStartFailoverTarget =
'ora12rf_stb';
Property "faststartfailovertarget"
updated
DGMGRL> EDIT
DATABASE 'ora12rf_stb' SET PROPERTY FastStartFailoverTarget =
'ORA12RF';
Property "faststartfailovertarget"
updated
DGMGRL> EDIT
CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 30;
Property
"faststartfailoverthreshold" updated
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit = 30;
Property "FastStartFailoverLagLimit" updated
17-4. FSFO 실행 (옵저버 띄우기)
[oracle@ol7ora12ss][/home/oracle]$ mkdir -p
/home/oracle/os_scripts
[oracle@ol7ora12ss][/home/oracle]$ vi
/home/oracle/os_scripts/start_observer.sh
[oracle@ol7ora12ss][/home/oracle]$ cat
/home/oracle/os_scripts/start_observer.sh
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/12c/client_1
export PATH=$ORACLE_HOME/bin:$PATH
export
TNS_ADMIN=$ORACLE_HOME/network/admin
LOG_DIR=/home/oracle/os_scripts/observer_logs
mkdir -p $LOG_DIR
LOG_FILE=$LOG_DIR/observer_$(date
+%Y%m%d).log
nohup dgmgrl
/@TNS_ORA12RF "START OBSERVER" >> $LOG_FILE 2>&1 &
[oracle@ol7ora12ss][/home/oracle]$ chmod 775 /home/oracle/os_scripts/start_observer.sh
[oracle@ol7ora12ss][/home/oracle]$
/home/oracle/os_scripts/start_observer.sh
[oracle@ol7ora12ss][/home/oracle]$ ps -ef | grep
dgmgrl
oracle 8182
1 0 11:57 pts/8 00:00:00
dgmgrl
START OBSERVER
oracle 8342
6638 0 11:57 pts/8 00:00:00 grep --color=auto
dgmgrl
[oracle@ol7ora12ss][/home/oracle]$ cd
/home/oracle/os_scripts/observer_logs
[oracle@ol7ora12ss][/home/oracle/os_scripts/observer_logs]$
ls -alrt
total 4
drwxr-xr-x. 3 oracle
oinstall 52 Dec 18 11:57 ..
drwxr-xr-x. 2 oracle
oinstall 35 Dec 18 11:57 .
-rw-r--r--. 1 oracle
oinstall 416 Dec 18 11:57 observer_20251218.log
[oracle@ol7ora12ss][/home/oracle/os_scripts/observer_logs]$
tail -f observer_20251218.log
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Thu
Dec 18 11:57:45 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
[W000 12/18
11:57:47.76] Observer trace level is set to USER
[W000
12/18 11:57:47.77] Fast-Start Failover is not enabled or can't be checked. Retry
after 30 seconds.
[W000 12/18 11:58:17.78] Fast-Start
Failover is not enabled or can't be checked. Retry after 30
seconds.
17-5. FSFO 활성화
--Primary 및 Standby가 플래시백 데이터베이스 인지 확인
--Primary DB 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 12:00:57 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
col DB_UNIQUE_NAME
for a20
col FLASHBACK_ON for a15
SELECT DB_UNIQUE_NAME
, FLASHBACK_ON
FROM V$DATABASE;
DB_UNIQUE_NAME
FLASHBACK_ON
-------------------- ---------------
ORA12RF
YES
1 row selected.
Elapsed: 00:00:00.00
--Standby DB
확인
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 11:59:26 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$
col DB_UNIQUE_NAME
for a20
col FLASHBACK_ON for a15
SELECT DB_UNIQUE_NAME
, FLASHBACK_ON
FROM V$DATABASE;
DB_UNIQUE_NAME
FLASHBACK_ON
-------------------- ---------------
ORA12RF_STB
YES
1 row selected.
Elapsed: 00:00:00.00
--> 만약 플래시백 데이터베이스가 비활성화 되어
있다면
-------------------------------------------아래의 절차를 통해
flashback database를 활성화 시킴
BEGIN-------------------------------------------
[ol7ora12sf]<SYS@ORA12RF>$ shutdown immediate;
[ol7ora12sf]<SYS@ORA12RF>$ STARTUP MOUNT;
[ol7ora12sf]<SYS@ORA12RF>$ show parameter
DB_FLASHBACK_RETENTION_TARGET
[ol7ora12sf]<SYS@ORA12RF>$
SELECT PROCESS,
STATUS, SEQUENCE#
FROM V$MANAGED_STANDBY
WHERE PROCESS LIKE 'MRP%';
PROCESS
STATUS
SEQUENCE#
---------------------------
------------------------------------ ----------
MRP0
APPLYING_LOG
16
[ol7ora12sf]<SYS@ORA12RF>$ ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
[ol7ora12sf]<SYS@ORA12RF>$ ALTER DATABASE FLASHBACK ON;
[ol7ora12sf]<SYS@ORA12RF>$ ALTER DATABASE OPEN read only;
[ol7ora12sf]<SYS@ORA12RF>$
col DB_UNIQUE_NAME
for a20
col FLASHBACK_ON for a15
SELECT DB_UNIQUE_NAME
, FLASHBACK_ON
FROM V$DATABASE;
DB_UNIQUE_NAME
FLASHBACK_ON
-------------------- ---------------
ORA12RF_STB
YES
[ol7ora12sf]<SYS@ORA12RF>$ ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
SELECT PROCESS, STATUS, SEQUENCE#
FROM V$MANAGED_STANDBY
WHERE PROCESS LIKE 'MRP%';
-------------------------------------------아래의 절차를 통해
flashback database를 활성화 시킴
END-------------------------------------------
--Primary 서버에서
활성화
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 11:51:07 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDBA.
DGMGRL> ENABLE
FAST_START FAILOVER;
Enabled.
DGMGRL> SHOW CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - (*) Physical
standby database
Fast-Start Failover: ENABLED
Configuration
Status:
SUCCESS (status updated 39 seconds
ago)
DGMGRL> SHOW DATABASE 'ora12rf_stb';
Database - ora12rf_stb
Role:
PHYSICAL STANDBY
Intended
State: APPLY-ON
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 0 seconds (computed 1
second ago)
Average Apply Rate: 72.00 KByte/s
Real Time Query: ON
Instance(s):
ORA12RF
Database
Status:
SUCCESS
17-6. FSFO 동작 테스트
--옵져버 서버에서 옵져버가 잘 떠 있는지
확인
[oracle@ol7ora12ss][/home/oracle/os_scripts]$ alias
cdoss
alias cdoss='cd
/home/oracle/os_scripts'
[oracle@ol7ora12ss][/home/oracle/os_scripts]$
ls
observer_logs start_observer.sh
[oracle@ol7ora12ss][/home/oracle/os_scripts]$ cd observer_logs/
[oracle@ol7ora12ss][/home/oracle/os_scripts/observer_logs]$
ls
observer_20251218.log
[oracle@ol7ora12ss][/home/oracle/os_scripts/observer_logs]$
tail -f observer_20251218.log
[W000 12/18 12:05:47.89] Fast-Start Failover is not enabled
or can't be checked. Retry after 30 seconds.
[W000 12/18
12:06:17.90] Fast-Start Failover is not enabled or can't be checked. Retry after
30 seconds.
[W000 12/18 12:06:47.91] Fast-Start Failover
is not enabled or can't be checked. Retry after 30 seconds.
[W000 12/18 12:07:19.92] Try to connect to the primary.
[W000 12/18 12:08:12.06] Fast-Start Failover is
disabled.
[W000 12/18 12:08:12.07] Fast-Start Failover
is not enabled or can't be checked. Retry after 30 seconds.
[W000 12/18 12:08:42.07] Fast-Start Failover is not enabled
or can't be checked. Retry after 30 seconds.
[W000 12/18
12:09:12.08] Fast-Start Failover is not enabled or can't be checked. Retry after
30 seconds.
[W000 12/18 12:09:42.09] Fast-Start Failover
is not enabled or can't be checked. Retry after 30 seconds.
[W000 12/18 12:10:12.09] Try to connect to the
primary.
'
--Primary DB 상태
확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
--Standby DB 상태
확인
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 ONLINE
ONLINE
ol7ora12sf
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
--------------------------------------------------------------------------------
--Primary DB의 RAC 1번 2번 노드를
동시에 abort로 내림
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ORA12RF -stopoption abort
--옵져버 로그 확인
[W000 12/18
12:21:24.43] Primary database cannot be reached.
[W000
12/18 12:21:24.43] Fast-Start Failover threshold has not exceeded. Retry for the
next 3 seconds
[W000 12/18 12:21:25.43] Try to connect
to the primary.
Unable to connect to database using
tns_ora12rf
ORA-12514: TNS:listener does not currently
know of service requested in connect descriptor
[W000 12/18
12:21:25.44] Primary database cannot be reached.
[W000
12/18 12:21:25.44] Fast-Start Failover threshold has not exceeded. Retry for the
next 2 seconds
[W000 12/18 12:21:26.44] Try to connect
to the primary.
Unable to connect to database using
tns_ora12rf
ORA-12514: TNS:listener does not currently
know of service requested in connect descriptor
[W000 12/18
12:21:26.44] Primary database cannot be reached.
[W000
12/18 12:21:26.44] Fast-Start Failover threshold has not exceeded. Retry for the
next 1 second
[W000 12/18 12:21:27.44] Try to connect to
the primary.
Unable to connect to database using
tns_ora12rf
ORA-12514: TNS:listener does not currently
know of service requested in connect descriptor
[W000 12/18
12:21:27.45] Primary database cannot be reached.
[W000
12/18 12:21:27.45] Fast-Start Failover threshold has expired.
[W000 12/18 12:21:27.45] Try to connect to the standby.
[W000 12/18 12:21:27.45] Making a last connection attempt
to primary database before proceeding with Fast-Start Failover.
[W000 12/18 12:21:27.45] Check if the standby is ready for
failover.
Unable to connect to database using
tns_ora12rf
ORA-12514: TNS:listener does not currently
know of service requested in connect descriptor
[S002 12/18 12:21:27.45] Fast-Start Failover started...
12:21:27.45
2025년 12월 18일 thursday
Initiating Fast-Start Failover to
database "ora12rf_stb"...
[S002 12/18 12:21:27.45]
Initiating Fast-start Failover.
Performing failover NOW,
please wait...
Failover succeeded, new primary is
"ora12rf_stb"
12:21:32.65 2025년 12월 18일
thursday
[S002 12/18 12:21:32.65] Fast-Start Failover
finished...
[W000 12/18 12:21:32.65] Failover succeeded.
Restart pinging.
[W000 12/18 12:21:32.65] Primary
database has changed to ora12rf_stb.
[W000 12/18
12:21:32.66] Try to connect to the primary.
[W000 12/18
12:21:32.66] Try to connect to the primary tns_ora12rf_stb.
[W000 12/18 12:21:33.90] The standby ORA12RF needs to be
reinstated
[W000 12/18 12:21:33.90] Try to connect to
the new standby ORA12RF.
Unable to connect to database
using tns_ora12rf
ORA-12514: TNS:listener does not
currently know of service requested in connect descriptor
[W000 12/18
12:21:39.90] Connection to the primary restored!
[W000
12/18 12:21:41.91] Disconnecting from database
tns_ora12rf_stb.
--old Standby가 새로운
Primary가 됨
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 ONLINE
ONLINE
ol7ora12sf
Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
--old Standby(-새로운 Primary)에서
다시 Reinstate
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 12:23:51 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDBA.
DGMGRL> SHOW
CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ora12rf_stb - Primary database
Warning: ORA-16824: multiple warnings,
including fast-start failover-related warnings, detected for the
database
ORA12RF - (*) Physical standby database (disabled)
ORA-16661: the standby
database needs to be reinstated
Fast-Start Failover: ENABLED
Configuration
Status:
WARNING (status updated 4 seconds
ago)
DGMGRL>
--old Primary 서버(=new
Standby)를 mount모드로 기동
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF -startoption mount
--> Mount 상태로 시작 (Observer가 감지하여 자동으로 Reinstate
수행함)
--옵져버 로그
[W000 12/18
12:29:36.39] Connection to the new standby restored!
[W000 12/18 12:30:07.43] Try to connect to the primary
tns_ora12rf_stb.
[W000 12/18 12:30:09.43] Connection to
the primary restored!
[W000 12/18 12:30:09.43] Wait for
new primary to be ready to reinstate.
[W000 12/18
12:30:10.43] New primary is now ready to reinstate.
[W000 12/18 12:30:11.43] Issuing REINSTATE
command.
12:30:11.43
2025년 12월 18일 thursday
Initiating reinstatement for
database "ORA12RF"...
Reinstating database "ORA12RF",
please wait...
[W000 12/18 12:30:30.45] The standby
ORA12RF is ready to be a FSFO target
Reinstatement of
database "ORA12RF" succeeded
12:30:33.66 2025년 12월
18일 thursday
[W000 12/18 12:30:34.46] Successfully
reinstated database ORA12RF.
[W000 12/18 12:30:36.46]
The reinstatement of standby ORA12RF was just done
--old Primary 서버(=new Standby)
가 reinstate 되어 read only 모드의 Standby DB가 됨
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat
res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE
ONLINE
ol7ora12rf1
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
2 ONLINE
ONLINE
ol7ora12rf2
Open,Readonly,HOME=/
u01/app/oracle/produ
ct/12c/db_1,STABLE
--------------------------------------------------------------------------------
--다시 old Primary 서버(=new
Standby) 를 Primary로 Switch over 시킴
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 12:34:02 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF"
Connected as
SYSDBA.
DGMGRL> show configuration
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ora12rf_stb - Primary database
ORA12RF - (*)
Physical standby database
Fast-Start Failover: ENABLED
Configuration
Status:
SUCCESS (status updated 25 seconds
ago)
DGMGRL> SWITCHOVER TO 'ORA12RF';
DGMGRL> show configuration
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - (*) Physical
standby database
Fast-Start Failover: ENABLED
Configuration
Status:
SUCCESS (status updated 24 seconds
ago)
--옵져버
로그
[W000 12/18
12:34:46.76] Primary database has changed to ORA12RF.
[W000 12/18 12:34:46.76] Try to connect to the primary.
[W000 12/18 12:34:46.76] Try to connect to the primary
tns_ora12rf.
[W000 12/18 12:34:48.76] Connection to the
primary restored!
[W000 12/18 12:34:50.76] Disconnecting
from database tns_ora12rf.
[W000 12/18 12:34:56.10] The
standby ora12rf_stb is ready to be a FSFO target
17-7. FSFO 설정 환경에서 ADG 환경 재기동
--FSFO(Fast-Start Failover)가
ENABLED 상태인 환경에서 시스템 점검, OS 패치 등을 위해 전체 데이터베이스(Primary, Standby)를 재기동할 때는 순서가 매우
중요
--[절대 주의] Observer가 실행 중인 상태에서 Primary DB를 먼저
종료(SHUTDOWN)하면,
--Observer는 이를 장애로 인식하여 즉시 Standby로
Failover를 시도합니다. 이를 방지하기 위해 반드시 아래 절차를 따라야 함
--옵져버 kill
시키기
[oracle@ol7ora12ss][/home/oracle]$ ps -ef | grep -i
dgmgrl
oracle
5385 5067 0 12:44 pts/1 00:00:00 grep --color=auto
-i dgmgrl
oracle
8182 1 0 11:57
? 00:00:02
dgmgrl
START OBSERVER
[oracle@ol7ora12ss][/home/oracle]$ kill -9
8182
--Primary DB
종료
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ORA12RF -stopoption immediate
--Standby DB
종료
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl stop
database -db ORA12RF_STB -stopoption immediate
--재시작하기
--기동할 때는 Standby
-> Primary -> Observer 순서를 권장합니다.
--Standby가 먼저 떠
있어야 Primary가 열릴 때 아카이브 전송 경로 오류 없이 깔끔하게 연결됩니다.
--Standby
DB 부터 시작
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl start
database -db ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 12:46:56 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ SELECT OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;
OPEN_MODE
DATABASE_ROLE
------------------------------------------------------------
------------------------------------------------
READ
ONLY WITH
APPLY
PHYSICAL STANDBY
1 row selected.
Elapsed: 00:00:00.01
--Primary DB
올리기
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 12:48:22 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ SELECT OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;
OPEN_MODE
DATABASE_ROLE
------------------------------------------------------------
------------------------------------------------
READ
WRITE
PRIMARY
1 row selected.
Elapsed: 00:00:00.01
--옵져버 기동
[oracle@ol7ora12ss][/home/oracle]$
/home/oracle/os_scripts/start_observer.sh
[oracle@ol7ora12ss][/home/oracle]$ tail -f
/home/oracle/os_scripts/observer_logs/observer_*.log
[W000 12/18
12:34:56.10] The standby ora12rf_stb is ready to be a FSFO target
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Thu
Dec 18 12:48:44 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
[W000 12/18
12:48:48.62] Observer trace level is set to USER
[W000
12/18 12:48:48.62] Try to connect to the primary.
18. 스냅샷 스탠바이 테스트
--Oracle Data Guard의 Snapshot
Standby(스냅샷 스탠바이) 기능은 물리적 스탠바이 데이터베이스(Physical Standby)를
--일시적으로 읽기/쓰기(Read-Write) 모드로 전환하여 테스트, 개발 또는 업그레이드 검증 용도로
활용할 수 있게 해주는 기능임.
--전환된 동안에도 Primary로부터 Redo 데이터를 계속
수신하여 데이터 보호를 유지하며,
--다시 물리적 스탠바이로 전환할 때 Flashback 기술을
사용하여 스냅샷 기간의 변경 사항을 모두 취소함
18-1. Standby DB가 Flashbask Databse 설정이 되어 있는지 확인 (oracle os user)
[ol7ora12sf]<SYS@ORA12RF>$ col db_unique_name for a20
[ol7ora12sf]<SYS@ORA12RF>$ col open_mode for a20
[ol7ora12sf]<SYS@ORA12RF>$ col flashback_on for a20
[ol7ora12sf]<SYS@ORA12RF>$ select db_unique_name, open_mode, flashback_on from
v$database;
DB_UNIQUE_NAME
OPEN_MODE
FLASHBACK_ON
-------------------- --------------------
--------------------
ORA12RF_STB
READ ONLY WITH APPLY YES
1 row selected.
Elapsed: 00:00:00.00
18-2. FSFO 비활성화 (oracle os user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 15:14:33 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF_STB"
Connected as SYSDBA.
DGMGRL> show
configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - (*) Physical
standby database
Fast-Start Failover: ENABLED
Configuration
Status:
SUCCESS (status updated 46 seconds
ago)
DGMGRL> DISABLE FAST_START FAILOVER;
Disabled.
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 7 seconds
ago)
18-3. Standby DB를 Snapshot Standby로 설정
DGMGRL> validate database "ORA12RF";
Database Role: Primary database
Ready for Switchover: Yes
Managed by
Clusterware:
ORA12RF:
YES
DGMGRL> validate database "ora12rf_stb";
Database
Role: Physical standby database
Primary Database: ORA12RF
Ready for
Switchover: Yes
Ready for
Failover: Yes (Primary Running)
Capacity
Information:
Database
Instances Threads
ORA12RF
2
2
ora12rf_stb
1
2
Warning: the target standby has
fewer instances than the
primary
database, this may impact application performance
Managed by
Clusterware:
ORA12RF : YES
ora12rf_stb: YES
DGMGRL> CONVERT
DATABASE "ora12rf_stb" TO SNAPSHOT STANDBY;
Converting
database "ora12rf_stb" to a Snapshot Standby database, please wait...
Database "ora12rf_stb" converted
successfully
DGMGRL> SHOW DATABASE "ora12rf_stb";
Database - ora12rf_stb
Role:
SNAPSHOT STANDBY
Transport
Lag: 0 seconds (computed 1 second ago)
Apply
Lag: 26 seconds (computed
1 second ago)
Instance(s):
ORA12RF
Database
Status:
SUCCESS
18-4. Snapshot Standby에서 DML 테스트
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Thu Dec 18 15:19:42 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;
DATABASE_ROLE
OPEN_MODE
------------------------------------------------
------------------------------------------------------------
SNAPSHOT
STANDBY
READ WRITE
1 row selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$
CREATE TABLE
TUNER.TB_SNAPSHOT_STANDBY_TEST_01
(
SNAPSHOT_STANDBY_TEST_01 NUMBER(15)
)
;
INSERT INTO
TUNER.TB_SNAPSHOT_STANDBY_TEST_01
SELECT (SELECT
NVL(MAX(SNAPSHOT_STANDBY_TEST_01), 0) FROM
TUNER.TB_SNAPSHOT_STANDBY_TEST_01)+LEVEL FROM DUAL CONNECT BY LEVEL <=
1000000
;
COMMIT;
18-5. Snapshot Standby를 Physical Standby로 다시 전환
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF_STB'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 15:21:14 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to
"ORA12RF_STB"
Connected as SYSDBA.
DGMGRL> show configuration;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Snapshot
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 48 seconds
ago)
DGMGRL> convert
database "ora12rf_stb" to physical standby;
Converting
database "ora12rf_stb" to a Physical Standby database, please wait...
Operation requires a connection to database "ORA12RF"
Connecting ...
Connected to
"ORA12RF"
Connected as SYSDBA.
Oracle Clusterware is restarting database "ora12rf_stb"
...
Connected to "ORA12RF_STB"
Connected to "ORA12RF_STB"
Continuing to convert database "ora12rf_stb" ...
Database "ora12rf_stb" converted
successfully
[ol7ora12sf]<SYS@ORA12RF>$ SELECT * FROM
TUNER.TB_SNAPSHOT_STANDBY_TEST_01;
SELECT * FROM
TUNER.TB_SNAPSHOT_STANDBY_TEST_01
*
ERROR at line 1:
ORA-00942:
table or view does not exist
Elapsed: 00:00:00.01
--> 테이블 사라짐
18-6. FSFO를 다시 활성화
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Thu Dec 18 23:55:13 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "ORA12RF"
Connected as
SYSDBA.
DGMGRL> ENABLE FAST_START
FAILOVER;
Enabled.
DGMGRL> SHOW FAST_START FAILOVER;
Fast-Start Failover: ENABLED
Threshold: 30 seconds
Target:
ora12rf_stb
Observer:
ol7ora12ss
Lag
Limit: 30 seconds
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Observer Reconnect: (none)
Observer Override: FALSE
Configurable
Failover Conditions
Health Conditions:
Corrupted
Controlfile YES
Corrupted
Dictionary YES
Inaccessible
Logfile NO
Stuck
Archiver
NO
Datafile Write
Errors
YES
Oracle
Error Conditions:
(none)
19. ADG 및 FSFO 구성 해제
19-1. FSFO 비활성화 (Primary 서버 - oracle user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
dg
alias dg='rlwrap
dgmgrl sys/oracle@TNS_ORA12RF'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
dg
DGMGRL for Linux:
Release 12.2.0.1.0 - Production on Sat Dec 20 00:34:15 2025
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL,
type "help" for information.
Connected to "ORA12RF"
Connected as SYSDBA.
DGMGRL> DISABLE
FAST_START FAILOVER;
Disabled.
DGMGRL>
DGMGRL> SHOW
CONFIGURATION;
Configuration - ORA12RF_DG
Protection
Mode: MaxPerformance
Members:
ORA12RF - Primary
database
ora12rf_stb - Physical
standby database
Fast-Start Failover: DISABLED
Configuration
Status:
SUCCESS (status updated 10 seconds
ago)
DGMGRL> REMOVE
CONFIGURATION;
Removed configuration
19-2. 옵져버 프로세스 중지 (옵져버 서버)
[oracle@ol7ora12ss][/home/oracle]$ ps -ef | grep -i
observer
oracle 2920 1 0 Dec18
? 00:01:39
dgmgrl
START OBSERVER
oracle 9545
7071 0 00:36 pts/0 00:00:00 grep --color=auto -i
observer
[oracle@ol7ora12ss][/home/oracle]$ kill -9 2920
[oracle@ol7ora12ss][/home/oracle]$ ps -ef | grep -i
observer
oracle 9783 7071 0 00:36
pts/0 00:00:00 grep --color=auto -i
observer
[oracle@ol7ora12ss][/home/oracle]$ cdoss
[oracle@ol7ora12ss][/home/oracle/os_scripts]$
ll
total 4
drwxr-xr-x. 2 oracle
oinstall 35 Dec 18 11:57 observer_logs
-rwxrwxr-x.
1 oracle oinstall 324 Dec 18 11:57 start_observer.sh
[oracle@ol7ora12ss][/home/oracle/os_scripts]$ rm -rf
observer_logs
--옵져버 서버의 wallet 설정
해제
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
vi sqlnet.ora
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
cat sqlnet.ora
# sqlnet.ora Network Configuration File:
/u01/app/oracle/product/12c/client_1/network/admin/sqlnet.ora
# Generated by Oracle configuration
tools.
#NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
#WALLET_LOCATION =
# (SOURCE
=
# (METHOD = FILE)
# (METHOD_DATA =
# (DIRECTORY =
/u01/app/oracle/product/12c/client_1/network/admin/wallet)
# )
#
)
#SQLNET.WALLET_OVERRIDE = TRUE
#SSL_CLIENT_AUTHENTICATION = FALSE
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
cd wallet
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin/wallet]$
ll
total 8
-rw-------. 1 oracle oinstall 957 Dec 18 11:42
cwallet.sso
-rw-------. 1 oracle oinstall 0
Dec 18 11:41 cwallet.sso.lck
-rw-------. 1 oracle
oinstall 912 Dec 18 11:42 ewallet.p12
-rw-------. 1
oracle oinstall 0 Dec 18 11:41 ewallet.p12.lck
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin/wallet]$
cd ..
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
rm -rf wallet
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
vi tnsnames.ora
[oracle@ol7ora12ss][/u01/app/oracle/product/12c/client_1/network/admin]$
cat tnsnames.ora
# Primary Database (RAC)
#TNS_ORA12RF =
# (DESCRIPTION
=
# (ADDRESS_LIST =
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
# (LOAD_BALANCE = OFF)
# (FAILOVER = ON)
# )
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = ORA12RF)
# (FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
# )
# )
# Standby Database
(Single)
#TNS_ORA12RF_STB =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.111)(PORT = 1522))
#
(CONNECT_DATA =
# (SERVER
= DEDICATED)
#
(SERVICE_NAME = ORA12RF_STB)
# )
# )
19-3. DG Broker 프로세스 중지 (Primary & Standby 양쪽)
--primary
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 00:37:37 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter broker
NAME
TYPE
VALUE
------------------------------------ ---------------------------------
------------------------------
connection_brokers
string
((TYPE=DEDICATED)(BROKERS=1)),
((TYPE=EMON)(BROKERS=1))
dg_broker_config_file1
string
+DATA1/ADG/dr1ora12rf.dat
dg_broker_config_file2
string
+DATA1/ADG/dr2ora12rf.dat
dg_broker_start
boolean
TRUE
use_dedicated_broker
boolean
FALSE
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM SET DG_BROKER_START=FALSE SCOPE=BOTH SID='*';
System altered.
Elapsed: 00:00:06.03
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ls -l adg_par.sql
-rwxr--r--. 1 oracle
oinstall 885 Dec 7 20:08 adg_par.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 00:39:14 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ @adg_par
NAME
VALUE
--------------------------------------------------
---------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
nodg_config
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed: 00:00:00.00
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM RESET log_archive_config SCOPE=BOTH SID='*';
System altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM RESET log_archive_dest_state_2 SCOPE=BOTH SID='*';
System altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter DG_BROKER
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
dg_broker_config_file1
string
+DATA1/ADG/dr1ora12rf.dat
dg_broker_config_file2
string
+DATA1/ADG/dr2ora12rf.dat
dg_broker_start
boolean
FALSE
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM RESET DG_BROKER_CONFIG_FILE1 SCOPE=BOTH SID='*';
System altered.
Elapsed:
00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM RESET DG_BROKER_CONFIG_FILE2 SCOPE=BOTH SID='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL SCOPE=BOTH SID='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ @adg_par
NAME
VALUE
--------------------------------------------------
------------------------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
enable
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
(NULL)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
MANUAL
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF
15 rows selected.
Elapsed:
00:00:00.00
--!! 중요
--1번 노드 및 2번 노드에서 local_listener 파라미터를 모두 기존 1521 리스너만
바라보도록 수정
--1번 노드
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.14)(PORT=1521))' scope=both sid='ORA12RF1';
System altered.
Elapsed:
00:00:00.01
--2번 노드
[ol7ora12rf2]<SYS@ORA12RF2>$ alter system set
local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.15)(PORT=1521))'
scope=both sid='ORA12RF2';
System altered.
Elapsed: 00:00:00.01
--standby
접속할 데이터베이스(DB_NAME)를 선택하세요:
1)
ORA12SF
2) ORA12RF
3)
RESERVED
번호를 입력하세요 (1,2,3): 2
현재 ORACLE_SID: ORA12RF
ORA12RF 환경
설정 적용 중...
환경 설정 완료 : 현재 ORACLE_SID = ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 00:38:19 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ show parameter broker
NAME
TYPE
VALUE
------------------------------------ ---------------------------------
------------------------------
connection_brokers
string
((TYPE=DEDICATED)(BROKERS=1)),
((TYPE=EMON)(BROKERS=1))
dg_broker_config_file1
string
+DATA1/ADG/dr1ora12rf_stb.dat
dg_broker_config_file2
string
+DATA1/ADG/dr2ora12rf_stb.dat
dg_broker_start
boolean
TRUE
use_dedicated_broker
boolean
FALSE
[ol7ora12sf]<SYS@ORA12RF>$ ALTER SYSTEM SET DG_BROKER_START=FALSE SCOPE=BOTH;
System altered.
Elapsed: 00:00:03.11
[ol7ora12sf]<SYS@ORA12RF>$ alter system reset dg_broker_config_file1 SCOPE=BOTH;
System altered.
Elapsed:
00:00:00.00
[ol7ora12sf]<SYS@ORA12RF>$ alter system reset
dg_broker_config_file2 SCOPE=BOTH;
System altered.
Elapsed:
00:00:00.01
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cdos
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
ls -l adg_par.sql
-rw-r--r--. 1 oracle
oinstall 885 Dec 13 13:29 adg_par.sql
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF:oracle@ol7ora12sf][/home/oracle/oracle_scripts]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 00:40:01 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12sf]<SYS@ORA12RF>$ @adg_par
NAME
VALUE
--------------------------------------------------
------------------------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
nodg_config
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF_STB
15 rows selected.
Elapsed: 00:00:00.01
[ol7ora12sf]<SYS@ORA12RF>$ alter system reset log_archive_config scope=both;
System altered.
Elapsed: 00:00:00.04
[ol7ora12sf]<SYS@ORA12RF>$ @adg_par
NAME
VALUE
--------------------------------------------------
------------------------------------------------------------------------------------------
db_file_name_convert
(NULL)
log_file_name_convert
(NULL)
log_archive_dest_1
LOCATION=+FRA1
log_archive_dest_2
(NULL)
log_archive_dest_state_1
enable
log_archive_dest_state_2
ENABLE
fal_client
(NULL)
fal_server
(NULL)
log_archive_config
(NULL)
log_archive_format
%t_%s_%r.ARC
log_archive_max_processes
4
standby_file_management
AUTO
remote_login_passwordfile
EXCLUSIVE
db_name
ORA12RF
db_unique_name
ORA12RF_STB
15 rows selected.
Elapsed:
00:00:00.01
--Primary 서버에서 백업 파일
제거
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ rm -rf
/home/oracle/BACKUP_FOR_ADG
--Standby 서버에서 백업 파일 제거
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ rm -rf
/home/oracle/BACKUP_FOR_ADG
--rman 백업
설정
#CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL
STANDBY; #For ADG
--> 이걸 주석 처리해도됨
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/os_scripts]$ cat
/home/oracle/os_scripts/rman_init.sh | grep -i
standby
#CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY; #For
ADG
19-4. Standby Database 제거
--Standby (oracle os
user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl config
database -db ora12rf_stb
Database unique
name: ORA12RF_STB
Database name: ORA12RF
Oracle home:
/u01/app/oracle/product/12c/db_1
Oracle user: grid
Spfile:
+DATA1/ORA12RF_STB/PARAMETERFILE/spfile.298.1220467273
Password file:
+DATA1/ORA12RF_STB/PASSWORD/pwdora12rf_stb.297.1220467105
Domain:
Start
options: read only
Stop options: immediate
Database role:
PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups:
DATA1,FRA1
Services:
OSDBA group:
OSOPER group:
Database instance:
ORA12RF
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl stop database -db ORA12RF_STB -stopoption immediate
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf_stb.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ srvctl remove
database -db ORA12RF_STB
Remove the database
ORA12RF_STB? (y/[n]) y
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ crsctl stat res
ora.ora12rf_stb.db -t
CRS-2613: Could not find resource
'ora.ora12rf_stb.db'.
--grid os user
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd rm -rf
+DATA1/ORA12RF_STB/
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd rm -rf
+DATA1/ADG/
[+ASM:grid@ol7ora12sf][/home/grid]$ asmcmd rm -rf
+FRA1/ORA12RF_STB/
--Standby 서버 (oracle os user)
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle]$
rm -rf
/u01/app/oracle/diag/rdbms/ora12rf_stb
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle]$ rm -rf
/u01/app/oracle/product/12c/db_1/admin/ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle]$
rm -rf
/u01/app/oracle/admin/ORA12RF_STB
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$
rm -rf /u01/app/oracle/audit/ORA12RF
--> 그 외
아래와 같은 방식으로 끝까지 추적해서 다 지울수도 있음
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle]$ find . | grep -i
ora12rf
19-5. Primary DB의 Standby redo log 제거
--1번 노드(oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdos
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$
ls -l stb*.sql
-rwxr--r--. 1 oracle oinstall 453 Dec 7 20:13
stb_rdl.sql
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/oracle_scripts]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sat Dec 20 00:47:54 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
ALTER DATABASE
DROP STANDBY LOGFILE GROUP 7;
ALTER DATABASE DROP
STANDBY LOGFILE GROUP 8;
ALTER DATABASE DROP STANDBY
LOGFILE GROUP 9;
ALTER DATABASE DROP STANDBY LOGFILE
GROUP 10;
ALTER DATABASE DROP STANDBY LOGFILE GROUP
11;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 12;
ALTER DATABASE DROP STANDBY LOGFILE GROUP 13;
ALTER DATABASE DROP STANDBY LOGFILE GROUP
14;
[ol7ora12rf1]<SYS@ORA12RF1>$ @stb_rdl
no rows selected
Elapsed:
00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$
19-5. Listener 및 TNS 정리 (Primary & Standby 서버)
--Primary 서버 1번 노드 (grid os
user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cdt
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
vi listener.ora
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
cat listener.ora
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG))))
# line added by Agent
MGMTLSNR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=MGMTLSNR))))
# line added by Agent
# listener.ora Network
Configuration File: /u01/app/12c/grid/network/admin/listener.ora
# Generated by Oracle configuration
tools.
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3 = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2 = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1 = ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN3 = OFF
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2 = OFF
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1 = OFF
VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM = SUBNET
ASMNET1LSNR_ASM
=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = ASMNET1LSNR_ASM))
)
)
VALID_NODE_CHECKING_REGISTRATION_LISTENER = SUBNET
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM = ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON
LISTENER_SCAN3
=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN3))
)
)
LISTENER_SCAN2
=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN2))
)
)
LISTENER_SCAN1
=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
IPC)(KEY = LISTENER_SCAN1))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_MGMTLSNR=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_MGMTLSNR=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ADG=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_ADG=SUBNET
# line added by Agent
#SID_LIST_LISTENER_ADG =
# (SID_LIST
=
# (SID_DESC =
#
(GLOBAL_DBNAME = ORA12RF_DGMGRL)
# (ORACLE_HOME
= /u01/app/oracle/product/12c/db_1)
# (SID_NAME
= ORA12RF1)
# )
#
)
--> 주석
처리
--Primary 서버 1번 노드 (oracle os
user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cdt
[ORA12RF1:oracle@ol7ora12rf1][/u01/app/oracle/product/12c/db_1/network/admin]$
vi tnsnames.ora
[ORA12RF1:oracle@ol7ora12rf1][/u01/app/oracle/product/12c/db_1/network/admin]$
cat tnsnames.ora
# tnsnames.ora Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12RF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12rf-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= ORA12RF)
)
)
#Primary
#TNS_ORA12RF =
# (DESCRIPTION
=
# (ADDRESS_LIST =
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
#
(LOAD_BALANCE = OFF)
#
(FAILOVER = ON)
# )
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = ORA12RF)
# (FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
# )
#)
#Standby
#TNS_ORA12RF_STB =
#
(DESCRIPTION =
# (ADDRESS = (PROTOCOL
= TCP)(HOST = 192.168.240.111)(PORT = 1522))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME =
ORA12RF_STB)
# )
# )
--> 주석 처리
--Primary 서버 2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cdt
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
ls -l listener.ora
-rw-r--r--. 1 grid
oinstall 1778 Dec 20 00:58 listener.ora
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
vi listener.ora
[+ASM2:grid@ol7ora12rf2][/u01/app/12c/grid/network/admin]$
cat listener.ora
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3))))
# line added by Agent
MGMTLSNR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=MGMTLSNR))))
# line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2))))
# line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))
# line added by Agent
ASMNET1LSNR_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=ASMNET1LSNR_ASM))))
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=OFF
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2=OFF
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_MGMTLSNR=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_MGMTLSNR=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN3=OFF
# line added by Agent
#SID_LIST_LISTENER_ADG
=
# (SID_LIST =
# (SID_DESC
=
# (GLOBAL_DBNAME =
ORA12RF_DGMGRL)
# (ORACLE_HOME =
/u01/app/oracle/product/12c/db_1)
# (SID_NAME =
ORA12RF2)
# )
#
)
--> 주석 처리
--Primary 서버 2번 노드 (oracle os
user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cdt
[ORA12RF2:oracle@ol7ora12rf2][/u01/app/oracle/product/12c/db_1/network/admin]$
vi tnsnames.ora
[ORA12RF2:oracle@ol7ora12rf2][/u01/app/oracle/product/12c/db_1/network/admin]$
cat tnsnames.ora
# tnsnames.ora Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12RF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12rf-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= ORA12RF)
)
)
#Primary
#TNS_ORA12RF =
# (DESCRIPTION
=
# (ADDRESS_LIST =
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
#
(LOAD_BALANCE = OFF)
#
(FAILOVER = ON)
# )
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = ORA12RF)
# (FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
# )
#)
#Standby
#TNS_ORA12RF_STB =
#
(DESCRIPTION =
# (ADDRESS = (PROTOCOL
= TCP)(HOST = 192.168.240.111)(PORT = 1522))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME =
ORA12RF_STB)
# )
# )
--> 주석 처리
--Primary 서버 1번 노드 (grid os
user)
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
srvctl stop listener -listener LISTENER_ADG
[+ASM1:grid@ol7ora12rf1][/u01/app/12c/grid/network/admin]$
srvctl remove listener -listener LISTENER_ADG
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res
ora.LISTENER_ADG.lsnr -t
CRS-2613: Could not find resource
'ora.LISTENER_ADG.lsnr'.
--Standby
서버 (grid os user)
[+ASM:grid@ol7ora12sf][/home/grid]$ cdt
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$ ls
-l
total 16
-rw-r--r--. 1 grid
oinstall 1283 Dec 13 12:20 listener.ora
-rw-r--r--. 1
grid oinstall 548 Dec 7 16:55 listener.ora.bak.ol7ora12sf
drwxr-xr-x. 2 grid oinstall 64 Jan 27
2017 samples
-rw-r--r--. 1 grid oinstall 1441 Aug
28 2015 shrept.lst
-rw-r--r--. 1 grid
oinstall 249 Nov 16 23:35 sqlnet.ora
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$ vi
listener.ora
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$
cat listener.ora
#Backup file is
/u01/app/12c/grid/network/admin/listener.ora.bak.ol7ora12sf line added by
Agent
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_ADG))))
# line added by Agent
# listener.ora Network
Configuration File: /u01/app/12c/grid/network/admin/listener.ora
# Generated by Oracle configuration
tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL =
TCP)(HOST = ol7ora12sf)(PORT = 1521))
(ADDRESS = (PROTOCOL =
IPC)(KEY = EXTPROC1521))
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET
# line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_ADG=ON
# line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_ADG=SUBNET
# line added by Agent
#SID_LIST_LISTENER_ADG
=
# (SID_LIST =
# (SID_DESC
=
# (GLOBAL_DBNAME =
ORA12RF_STB_DGMGRL)
# (ORACLE_HOME =
/u01/app/oracle/product/12c/db_1)
# (SID_NAME =
ORA12RF)
# )
#
)
--> 주석 처리
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$
srvctl stop listener -listener LISTENER_ADG
[+ASM:grid@ol7ora12sf][/u01/app/12c/grid/network/admin]$
srvctl remove listener -listener LISTENER_ADG
[+ASM:grid@ol7ora12sf][/home/grid]$ alias csrt
alias csrt='crsctl stat res -t'
[+ASM:grid@ol7ora12sf][/home/grid]$ csrt
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA1.dg
ONLINE ONLINE
ol7ora12sf
STABLE
ora.FRA1.dg
ONLINE ONLINE
ol7ora12sf
STABLE
ora.LISTENER.lsnr
ONLINE ONLINE
ol7ora12sf
STABLE
ora.asm
ONLINE ONLINE
ol7ora12sf
Started,STABLE
ora.ons
OFFLINE OFFLINE
ol7ora12sf
STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE
ONLINE
ol7ora12sf
STABLE
ora.diskmon
1 OFFLINE
OFFLINE
STABLE
ora.evmd
1 ONLINE
ONLINE
ol7ora12sf
STABLE
ora.ora12sf.db
1 OFFLINE
OFFLINE
STABLE
--------------------------------------------------------------------------------
--Standby 서버 (oracle os user)
[ORA12RF:oracle@ol7ora12sf][/home/oracle]$ cdt
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle/product/12c/db_1/network/admin]$
ll
total 8
drwxr-xr-x. 2 oracle oinstall 64 Nov 16 19:13
samples
-rw-r--r--. 1 oracle oinstall 1441 Aug 28
2015 shrept.lst
-rw-r-----. 1 oracle oinstall 1025
Dec 7 17:49 tnsnames.ora
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle/product/12c/db_1/network/admin]$
vi tnsnames.ora
[ORA12RF:oracle@ol7ora12sf][/u01/app/oracle/product/12c/db_1/network/admin]$
cat tnsnames.ora
# tnsnames.ora Network Configuration File:
/u01/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA12SF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12sf)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= ORA12SF)
)
)
LISTENER_ORA12SF
=
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol7ora12sf)(PORT = 1521))
#Primary
#TNS_ORA12RF =
# (DESCRIPTION
=
# (ADDRESS_LIST =
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.14)(PORT = 1522))
# (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.15)(PORT = 1522))
#
(LOAD_BALANCE = OFF)
#
(FAILOVER = ON)
# )
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = ORA12RF)
# (FAILOVER_MODE = (TYPE =
SELECT)(METHOD = BASIC))
# )
#)
#Standby
#TNS_ORA12RF_STB =
#
(DESCRIPTION =
# (ADDRESS = (PROTOCOL
= TCP)(HOST = 192.168.240.111)(PORT = 1522))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME =
ORA12RF_STB)
# )
# )
--> 주석 처리
19-5. /etc/hosts 설정 제거
--Primary 서버 1번 노드 (root
os user)
[root@ol7ora12rf1][/root]$ vi
/etc/hosts
[root@ol7ora12rf1][/root]$ cat
/etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.11
ol7ora12rf1
192.168.240.12
ol7ora12rf2
### Private IP
10.0.1.11
ol7ora12rf1-priv
10.0.1.12
ol7ora12rf2-priv
### Virtual IP
192.168.240.14 ol7ora12rf1-vip
192.168.240.15 ol7ora12rf2-vip
### DNS
192.168.240.17 ol7ora12rf-scan
192.168.240.18 ol7ora12rf-scan
192.168.240.19 ol7ora12rf-scan
## Standby
#192.168.240.111 ol7ora12sf
--> 주석 처리
--Primary 서버 2번 노드 (root os user)
[root@ol7ora12rf2][/root]$ vi /etc/hosts
[root@ol7ora12rf2][/root]$ cat /etc/hosts
127.0.0.1 localhost
localhost.localdomain localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.11
ol7ora12rf1
192.168.240.12
ol7ora12rf2
### Private IP
10.0.1.11
ol7ora12rf1-priv
10.0.1.12
ol7ora12rf2-priv
### Virtual IP
192.168.240.14 ol7ora12rf1-vip
192.168.240.15 ol7ora12rf2-vip
### DNS
192.168.240.17 ol7ora12rf-scan
192.168.240.18 ol7ora12rf-scan
192.168.240.19 ol7ora12rf-scan
#192.168.240.111 ol7ora12sf
--> 주석 처리
--Standby 서버 (root os user)
[root@ol7ora12sf][/root]$ vi
/etc/hosts
[root@ol7ora12sf][/root]$ cat
/etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.111
ol7ora12sf
## Primary
#192.168.240.11 ol7ora12rf1
#192.168.240.12 ol7ora12rf2
--> 주석 처리
19-6. 기타 작업
--Primary 서버 1번 노드 (oracle os user)
[ORA12RF:oracle@ol7ora12sf][/tmp]$ rm -rf /tmp/orapwORA12RF
--Standby 서버 (oracle os
user)
[ORA12RF:oracle@ol7ora12sf][/tmp]$ rm
-f /tmp/orapwORA12RF
--Standby 서버 (oracle os user)
rm -rf
/u01/app/oracle/diag/rdbms/ora12rf_stb
19-7. Primary DB의 flashback database off로 설정 (필요시)
--Primary 서버 1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as
sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Dec 21 20:55:25 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ select inst_id, flashback_on from gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1 YES
2
YES
2 rows selected.
Elapsed:
00:00:00.15
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF -startoption mount
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Tue Dec 23 00:12:39 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database flashback off;
[ol7ora12rf1]<SYS@ORA12RF1>$ select inst_id, flashback_on from gv$database;
INST_ID FLASHBACK_ON
----------
------------------------------------------------------
1 NO
2
NO
2 rows selected.
Elapsed: 00:00:00.18
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter recovery
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
db_recovery_file_dest
string
+FRA1
db_recovery_file_dest_size
big
integer
32G
recovery_parallelism
integer
0
remote_recovery_file_dest
string
(NULL)
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system reset db_recovery_file_dest scope=both sid='*';
System altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system reset db_recovery_file_dest_size scope=spfile sid='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter flashback
NAME
TYPE
VALUE
------------------------------------
--------------------------------- ------------------------------
db_flashback_retention_target
integer
2880
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system reset db_flashback_retention_target scope=spfile sid='*';
System altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop
database -db ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start
database -db ORA12RF -startoption open
19-8. no force logging 설정
--Primary 서버 1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias
ss
alias
ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
ss
SQL*Plus: Release 12.2.0.1.0 Production on Tue Dec 23 00:17:05 2025
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition
Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database no force logging;
Database altered.
Elapsed:
00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$
col force_logging for a20
col
inst_id for 999
select inst_id, force_logging from
gv$database;
INST_ID FORCE_LOGGING
-------
--------------------
1
NO
2 NO
2 rows selected.
Elapsed:
00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c
Enterprise Edition Release 12.2.0.1.0 - 64bit Production