Last Updated on 11월 4, 2021 by Jade(정현호)
Contents
SEHA is "SE High Availability"
English version post is click here
예전에 11gR2(11.2.0.1) 의 New Feature 로 RAC ONE NODE 가 Release 되었고 블로그에서도 자세하게 다룬적이 있었습니다.
Active-Standby 형태의 HA 기능을 제공 합니다
그러면서 내용을 정리하면서 아쉬운 부분은 RAC ONE NODE 가 Enterprise Edition 에서 가능한 기능으로 SE 에서는 불가능한 부분에 대해서 언급 한적이 있었습니다.
그런 부분이 약 9년만에 19.7 버전부터 기능으로 추가가 되었습니다
SEHA는 "Standard Edition High Availability"를 의미하며 가장 쉽게 이해할 수 있는 것은 RAC ONE NODE 의 SE 버전이라고 생각하시면 됩니다(차이는 있음)
* 해당 기능은 Windows,Linux,Solaris 에서만 가능합니다.
물론 단순히 EE의 RAC ONE NODE 가 SE에서도 된다는 아니며 기능적인 차이가 있습니다
그 부분은 아래에서 언급 하도록 하겠습니다.
Oracle의 Standard Edition 2 (SE2) 고객은 Oracle ASM (Automatic Storage Management) 및 Oracle ASM Cluster File System (ACFS)과 같은 Grid Infrastructure의 고가용성 기능과 스토리지 관리 솔루션의 이점을 무료로 누릴수 있습니다.
원문 :
Oracle’s Standard Edition 2 (SE2) customers thereby benefit from the high availability capabilities and storage management solutions that are already part of Oracle Grid Infrastructure,
such as Oracle Automatic Storage Management (ASM) and the Oracle ASM Cluster File System (ACFS), free of charge.
클러스터 환경에서 SEHA 기능은 RAC 및 RAC ONE NODE (아래 비교 참조)와 달리 SEHA에는 RAC 데이터베이스 기능이 포함되지 않습니다
(따라서 Global Cache 나 Global Enqueue 등이 없음)
그래서 SEHA 는 RAC ONE NODE 와 달리 시간이 아무리 짧아도 2 개의 인스턴스가 동시에 가동되지는 않습니다
참고로 RAC ONE NODE 는 짧은 시간에 인스턴스가 동시에 가동 됩니다
SEHA는 다른 노드에서 인스턴스를 시작하기 전에 이전 인스턴스를 종료가 된 후 다른 노드에서 인스턴스가 가동 될 수 있습니다.
이런 개념은 보통의 Vender Cluster 나 3rd Party Cluster 혹은 Windows의 Oracle Fail Safe 동일(유사) 합니다.
설치 환경 사전 구성
설치를 진행하기 전에 패키지나 OS 상의 설정을 먼저 진행 하도록 하겠습니다.
테스트 환경
OS : Oracle Linux 7.8
Oracle/Grid 버전 : 19.9 (19.3 베이스 버전에서 RU Patch 를 적용 해야함)
Hostname : acs(1번 노드) , acs2(2번 노드)
Oracle SID : ORCL
사용한 /etc/host
public : acs , acs2
vip : acs-vip , acs2-vip
scan : acs-cluster-scan
interconnect : acs-priv , acs2-priv
디렉토리 구성 현항
$ORACLE_BASE : /orace/base
$ORACLE_HOME : /oracle/db
$GRID_HOME : /oracle/grid
* Grid S/W install -> Database S/W Install -> DB S/W Copy to node2 -> Grid RU Patch
-> DBCA(생성) -> Database S/W RU Patch -> 순으로 진행 하겠습니다.
* Grid 설치 전에 사전 환경 구성부터 설정 후 진행하도록 하겠습니다.
* DB 생성 전에 ORACLE_HOME 에 RU 를 적용 후 DB 를 생성시 ORA-600이 계속 발생하여 테스트 진행을 위하여 DB 생성 후 RU 를 업데이트 하였습니다.
* 순서는 작업 방식에 따라 변경하여 진행 해도 됩니다.
/etc/hosts 내용 수정
아래 와 같은 유형으로 /etc/hosts 의 추가를 합니다.
[root]# vi /etc/hosts
192.168.56.51 acs
192.168.56.52 acs2
192.168.56.53 acs-vip
192.168.56.54 acs2-vip
192.168.56.55 acs-cluster-scan
100.100.100.1 acs-priv
100.100.100.2 acs2-priv
oracle asmlib 구성
ASM을 설치할 디스크에 대한 파티션 작업을 진행 합니다.
* 테스트 환경임으로 1개의 디스크만 사용 합니다
* 추가된 공유 디스크는 /dev/sdd 임
# 1번이나 2번 서버중 한곳에서 root 로 수행
[root]# fdisk /dev/sdd
Command (m for help): n
Partition type: P
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): [엔터]
First sector (2048-143305919, default 2048): [엔터]
Last sector, +sectors or +size{K,M,G} (2048-143305919, default 143305919): [엔터]
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# 모든 노드에서 수행
[root]# partprobe
그다음 asmlib 패키지를 설치합니다.
Oracle Linux 기준이고 Redhat Kernel은 kmod-oracleasm 가 필요할수 있습니다.
# 1,2 번 서버 모두, root 유저로
[root]# yum install oracleasm-support oracleasmlib
[root]# rpm -Uvh https://download.oracle.com/otn_software/
asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm
-> Mobile 을 위해 개행 합니다, 실제 사용시 한줄에 입력해야 합니다.
[root]# /usr/sbin/oracleasm configure -i
<중략>
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root]# oracleasm init
# 1번서버에서 수행
[root]# oracleasm createdisk ORADISK1 /dev/sdd1
# 2번 서버에서 수행
[root]# # oracleasm scandisks
# 추가된 디스크 확인
[root]# oracleasm querydisk -p ORADISK1
Disk "ORADISK1" is a valid ASM disk
/dev/sdd1: LABEL="ORADISK1" TYPE="oracleasm"
OS 설정 내역 변경
# /etc/sysctl.conf 에 1, 2번 노드 모두 내용 추가 (있다면 생략)
net.core.rmem_max=4194304
net.core.rmem_default=262144
net.core.wmem_max=1048576
net.core.wmem_default=262144
fs.aio-max-nr = 1048576
fs.file-max = 6815744
# 적용
[root]# sysctl -p
# /etc/security/limits.conf 에 내용추가
# 1,2번 노드 모두 수행(있다면 생략)
oracle hard nofile 65536
oracle hard nproc 16384
oracle soft nproc 2047
oracle soft stack 10240
# NOZEROCONF=yes 추가, 1,2번 모두
[root]# vi /etc/sysconfig/network
NOZEROCONF=yes
=> 내용 추가
# firewalld disable, 1,2번 노드 모두
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
systemctl stop iptables
systemctl disable iptables
systemctl status iptables
# avahi-daemon disable, 1,2번 노드 모두
systemctl stop avahi-daemon
systemctl disable avahi-daemon
systemctl status avahi-daemon
# Transparent Huge Pages 기능 비활성화 , 1,2번 노드 모두
내용이 긴 관계로 아래 포스트 참조하세요
# /dev/shm 사이즈 변경(1,2번 노드 모두, 있다면 생략)
[root]# mount -t tmpfs shmfs -o size=4g /dev/shm
/dev/fstab size 내용 추가
tmpfs /dev/shm tmpfs size=4g 0
# 2번 서버에서 oracle 유저 .bash_profile 생성
1번 서버의 .bash_profile 을 참조하여 생성
ORACLE_SID는 미리 ORCL 로 수정
* SID는 양쪽 모두 ORCL 을 사용 합니다
19c GRID 설치
* Node1 에서 oracle or grid 유저로 진행
* 테스트 진행 시에는 oracle 유저만 사용했습니다.
* xserver 는 미리 구성되어 X11 Forwarding 은 가능한 환경 입니다.
* 이미지는 필요한 부분만 설명 하겠습니다.
# cvuqdisk 설치 root 수행
[root]# cd /oracle/grid/cv/rpm
[root]# export CVUQDISK_GRP=dba
[root]# rpm -ivh cvuqdisk-1.0.10-1.rpm
[root]# scp cvuqdisk-1.0.10-1.rpm acs2:~
# node 2에서 실행
[root]# export CVUQDISK_GRP=dba
[root]# rpm -ivh cvuqdisk-1.0.10-1.rpm
# node 1에서 oracle(또는 grid) 유저로 실행
[oracle]$ cd /oracle
[oracle]$ unzip LINUX.X64_193000_grid_home.zip -d grid
[oracle]$ cd /orace/grid
[oracle]$ ./gridSetup.sh
하단의 Setup를 통해 노드 1,2 간에 ssh 인증을 설정 한 후 다음(Next) 진행 합니다.
19c 부터 GIMR이 다시 선택으로 변경 되어, 테스트시 선택하지 않겠습니다.
Note: GIMR(MGMT-DB)
GIMR(MGMT-DB) 는 오라클 12cR1버전(12.1.0.2) ~ 18c 까지는 Mandatory 였고 19c 부터 다시 선택사항으로 변경 되어 꼭 설치 하지 않아도 됩니다.
Diskgroup : DATA , Redundancy : External 로 설정 하고 진행 하겠습니다.
$GRID_HOME/root.sh 스크립트를 1,2번 순으로 root 유저로 수행 합니다.
# 설치가 완료 되었다면 1,2번 .bash_profile 추가 합니다.
export GRID_HOME=/oracle/grid
export PATH=$PATH:$GRID_HOME/bin
여기 까지 GRID 가 설치가 완료 되었습니다.
Database S/W 설치
db가 설치될 디렉토리 생성 및 ownership 변경(양쪽 노드에 수행)
= root 로 수행
[root]# cd /oracle
[root]# mkdir db
[root]# chown oracle:dba db
S/W 압축 해제 및 runInstaller 실행
= oracle 유저로 수행
[oracle]$ unzip LINUX.X64_193000_db_home.zip -d /oracle/db
[oracle]$ ./runInstaller
Setup software only 를 선택
Single Instance database installation 선택
Standard Edition 2 선택
Oracle Base 와 Oracle Home 위치를 확인 후 Next 를 클릭 합니다.
그룹을 선택 합니다.
Next 클릭 합니다.
Prerequisite 를 확인 후 Next를 클릭 합니다.
Install 을 클릭 합니다.
설치 중 입니다.
root 유저로 root.sh 를 실행합니다(Node1 에서만 실행)
[root@acs db]# ./root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /oracle/db
완료 후 OK 를 클릭 합니다.
Close 를 클릭 하여 DB S/W 설치를 완료 합니다.
여기 까지 해서 Database S/W 설치가 완료 되었습니다.
19.9 GRID RU Patch 설치
# OPatch Utility 를 최신 버전으로 변경(root 로 수행)
* 모든 노드에서 수행
[root]# echo $GRID_HOME
/oracle/grid
[root]# echo $ORACLE_HOME
/oracle/db
[root]# unzip p6880880_190000_Linux-x86-64.zip
[root]# mv $GRID_HOME/OPatch $GRID_HOME/OPatch.old
[root]# cp -rp OPatch $GRID_HOME
[root]# chown -R oracle:dba $GRID_HOME/OPatch
[root]# echo $ORACLE_HOME
/oracle/db
[root]# mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.old
[root]# cp -rp OPatch $ORACLE_HOME
[root]# chown -R oracle:dba $ORACLE_HOME/OPatch
# OPatch 버전확인 - oracle 유저
[oracle]# /oracle/grid/OPatch/opatch version
OPatch Version: 12.2.0.1.21
# grid patch 수행
[root]# cd /oracle/media
[root]# unzip p31750108_190000_Linux-x86-64.zip
[root]# chown -R oracle:dba 31750108
[root]# export GRID_HOME=/oracle/grid
[root]# export ORACLE_HOME=/oracle/db
[root]# export RU_HOME=/oracle/media/31750108
# Node 1 수행 완료 후 Node 2 수행 순으로 진행
[root]# $GRID_HOME/OPatch/opatchauto apply $RU_HOME -oh $GRID_HOME
# GRID_HOME 패치 적용 확인 - oracle 유저 수행
[oracle]$ $GRID_HOME/OPatch/opatch lspatches -oh $GRID_HOME
31780966;TOMCAT RELEASE UPDATE 19.0.0.0.0 (31780966)
31773437;ACFS RELEASE UPDATE 19.9.0.0.0 (31773437)
31772784;OCW RELEASE UPDATE 19.9.0.0.0 (31772784)
31771877;Database Release Update : 19.9.0.0.201020 (31771877)
DB S/W 의 Node 추가
addnode.sh 를 이용하여 1번 Oracle Home 을 2번으로 복사(clone) 합니다.
# oracle 유저로 수행
export ORACLE_HOME=/oracle/db
$ORACLE_HOME/addnode/addnode.sh CLUSTER_NEW_NODES=acs2 -silent
WARNING] [INS-13014] Target environment does not meet some optional requirements.
<중략>
Prepare Configuration in progress.
Prepare Configuration successful.
.................................................. 7% Done.
<중략>
As a root user, execute the following script(s):
1. /oracle/db/root.sh
Execute /oracle/db/root.sh on the following nodes:
[acs2]
Successfully Setup Software with warning(s).
.................................................. 100% Done.
완료 가 되면 2번 노드에서 root 유저로 /oracle/db/root.sh 를 실행 합니다.
[root]# /oracle/db/root.sh
Database 생성
1번 노드에서 oracle 유저로 DB를 생성 합니다.
[oracle]$ dbca
Create a database 선택 합니다.
Advanced Configuration 을 선택 합니다.
Type 은 Single Instance 로 선택하며, Template 은 Custom Database 로 선택 합니다.
SID를 입력합니다.
ASM을 사용할 것임으로 Use following for... attributes 를 선택 합니다
Recovery Area 와 archivelog 활성화 여부를 선택 합니다.
사용할 Component 를 선택 합니다.
SGA 메모리 크기와 Character Set 을 설정 후 Next 를 클릭 합니다.
Finish 를 클릭 합니다.
Create database 에 체크 후 아래 Next 를 클릭 합니다.
생성이 완료 되면 하단의 Close 를 클릭하여 종료 합니다.
여기 까지 DB 생성이 완료 되었습니다.
Oracle S/W RU Patch
* root / oracle 유저 모두 환경변수 적용
* 패치는 1번 서버 완료 후 2번 서버 진행
export GRID_HOME=/oracle/grid
export ORACLE_HOME=/oracle/db
export RU_HOME=/oracle/media/31750108
## 1번 서버 부터 수행
# root 유저로 수행
[root]# $GRID_HOME/crs/install/rootcrs.sh -prepatch
# oracle 유저로 수행
$RU_HOME/31772784/custom/scripts/prepatch.sh -dbhome $ORACLE_HOME
[oracle]$ [oracle]$ $ORACLE_HOME/OPatch/opatch apply $RU_HOME/31772784 -oh $ORACLE_HOME -local -silent
[oracle]$ $ORACLE_HOME/OPatch/opatch apply $RU_HOME/31771877 -oh $ORACLE_HOME -local -silent
$RU_HOME/31772784/custom/scripts/postpatch.sh -dbhome $ORACLE_HOME
# root 유저로 수행
[root]# $GRID_HOME/rdbms/install/rootadd_rdbms.sh
[root]# $GRID_HOME/crs/install/rootcrs.sh -postpatch
* 1번 서버 완료 후 동일한 절차로 2번 서버에서 수행 합니다.
# Post Action 수행 - oracle 유저로 수행
Database 가 구동 중인 1번 서버에서만 1회 수행 합니다.
[oracle]$ cd $ORACLE_HOME/OPatch
[oracle]$ ./datapatch -verbose
srvctl - DB 설정 변경
먼저 현재 상태를 확인 해봅니다.
[oracle]$ srvctl config database -db ORCL
Database unique name: ORCL
Database name: ORCL
Oracle home: /oracle/db
Oracle user: oracle
Spfile: +DATA/ORCL/PARAMETERFILE/spfile.266.1055458887
Password file: <-- password 파일이 설정되어있지 않습니다.
<중략>
Start options: open
<중략>
Type: SINGLE <-- Singe DB 입니다.
<중략>
Database instance: ORCL
Configured nodes: acs <-- 현재는 1개 등록되어 있습니다.
1번 2번 서버간의 Failover 를 하면서 사용해야 함으로 공용으로 사용하는 파일에 대해서는 2번 서버에서도 사용할 수 있도록 설정을 해야 합니다.
parameter 파일을 spfile 로 하여 ASM 영역내에 존재 함으로 그대로 사용 하면 됩니다.
orapwd 파일은 기본이 oracle_home 영역에 있으므로 2번 서버로 복사를 하거나 ASM에 위치하여 같이 사용 할 수 있게 해야 합니다
저는 여기서 orapwd 파일을 ASM영역에 위치하여 같이 사용하도록 설정 하겠습니다.
# oracle 유저로 수행
[oracle]$ . oraenv
ORACLE_SID = [ORCL] ? +ASM1
ORACLE_HOME = [/home/oracle] ? /oracle/grid
The Oracle base has been changed from /oracle to /oracle/base
[oracle]$ asmcmd mkdir +DATA/ORCL/PASSWORD
[oracle]$ asmcmd pwcopy --dbuniquename ORCL \
/oracle/db/dbs/orapwORCL +DATA/ORCL/PASSWORD/orapwORCL -f
srvctl 로 속성 변경 및 확인
[oracle]$ srvctl modify database -db ORCL -pwfile +DATA/ORCL/PASSWORD/orapworcl
[oracle]$ srvctl config database -db ORCL
Database unique name: ORCL
Database name: ORCL
Oracle home: /oracle/db
Spfile: +DATA/ORCL/PARAMETERFILE/spfile.266.1055458887
Password file: +DATA/ORCL/PASSWORD/orapworcl <-- 추가가 되었습니다.
Disk Groups: DATA
Type: SINGLE
Database instance: ORCL
Configured nodes: acs
# node list 에 2번 서버 추가
[oracle]$ srvctl modify database -db ORCL -node acs,acs2
[oracle]$ srvctl config database -db ORCL
Password file: +DATA/ORCL/PASSWORD/orapworcl
Start options: open
Mount point paths:
Type: SINGLE
Database instance: ORCL
Configured nodes: acs,acs2 <-- 1개더 추가 되었음을 확인 할 수 있습니다.
# 2번 서버에서 audit directory 생성
[oracle]$ mkdir -p /oracle/base/admin/ORCL/adump
-> 디렉토리 경로는 DB 에서 조회하여 생성 합니다.
-> show parameter audit_file_dest
# tnsnames.ora 파일 복제 및 수정
= 1번 서버에서 2번 서버로 scp를 통해 tnsnames.ora 파일 전송
[oracle]$ scp /oracle/db/network/admin/tnsnames.ora \
acs2:/oracle/db/network/admin/
2번 서버에서 tnsnames.ora 파일을 편집하여 호스트명만 변경 하면 됩니다.
저는 vi 에서 acs 에서 acs2 라는이름으로 일괄 변경 하였습니다.
vi
:1,$ s/acs/acs2/g
relocate 수행
Node1 에서 2로 relocate(migrate) 합니다.
[oracle]$ srvctl relocate database -d ORCL -n acs2 -w 1 -v
# 설명
srvctl relocate database -d 데이터베이스명 -n 옴기려는 노드명 -w 1 -v
-w 옵션을 기술 하지 않는다면 online relocation timeout : 30 이 적용 됩니다.
단위 는 분 이며 이 시간은 세션을 종료 하고 , 인스턴스를 migrate , 트랜잭션을 OPEN 하는 시간을 의미 합니다.
시간 안에 트랜젝션이 종료 되지 않는다면, shutdown abort 과 같은 일환으로 트랜젝션은 취소 가 되며, 세션은 사라지게 됩니다.
이런 시간에 대한 제한에 대해서 default 30분이 아닌 다른 시간으로 제한을 두고자 할 때 -w 옵션을 사용하게 됩니다.
보통의 경우 테스트 문서나 외국 문서들의 대부분이 -w 1 을 주며 시간의 범위는 1~720 분 까지 입니다.
-v 옵션은 진행 중인 자세한 내역을 표시 하는 것입니다.
[참고] relocate database 에서 사용할 수 있는 명령어 조합 입니다.
Usage: srvctl relocate database -db <db_unique_name> {[-node <target>] [-timeout <timeout>] [-stopoption <stop_option>] | -abort [-revert]} [-drain_timeout <timeout>] [-verbose]
-db <db_unique_name> Unique name of database to relocate
-node <target> Target node to which to relocate database
-timeout <timeout> Online relocation timeout in minutes (only for RAC One Node database)
-abort Abort failed online relocation (only for RAC One Node database)
-revert Remove target node of failed online relocation request from the candidate server list of administrator-managed RAC One Node database
-stopoption <stop_option> Override default shutdown option for running instance (only NORMAL allowed)
-drain_timeout <drain_timeout> Service drain timeout specified in seconds
-verbose Verbose output
-help Print usage
# relocate 후 node2 에서 조회
[oracle@acs2]$ crsctl stat res -t
ora.orcl.db 1 ONLINE ONLINE acs2 Open,HOME=/oracle/db,STABLE
ora.qosmserver 1 ONLINE ONLINE acs STABLE
ora.scan1.vip 1 ONLINE ONLINE acs STABLE
[oracle@acs2]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-NOV-2020 01:04:05
Copyright (c) 1991, 2020, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-NOV-2020 23:40:20
Uptime 0 days 1 hr. 23 min. 44 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/grid/network/admin/listener.ora
Listener Log File /oracle/base/diag/tnslsnr/acs2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.52)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.54)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully
다시 1번 노드로 변경 해봅니다.
[oracle@acs]$ srvctl relocate database -d ORCL -n acs -w 1 -v
[oracle@acs]$ crsctl stat res -t
ora.orcl.db 1 ONLINE ONLINE acs Open,HOME=/oracle/db,STABLE
ora.qosmserver 1 ONLINE ONLINE acs STABLE
ora.scan1.vip 1 ONLINE ONLINE acs STABLE
[oracle@acs:/home/oracle]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-NOV-2020 01:02:24
Copyright (c) 1991, 2020, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 02-NOV-2020 23:28:49
Uptime 0 days 1 hr. 33 min. 35 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/grid/network/admin/listener.ora
Listener Log File /oracle/base/diag/tnslsnr/acs/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.51)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.53)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully
Conclusion
Oracle 19c 가 release 가 되면서 변화 중 그전까지 기능 지원되던 Standard Edition 에서의 RAC 기능이 없어졌습니다.
그에 따라 기존에 SE RAC 사용하던 시스템은 19c 업그레이드를 하면서 EE RAC 를 선택 하거나 SE Single or HA or etc.. 등을 선택해야 합니다.
이 기능이 11gR2의 RAC ONE NODE 가 나온지 약 9년정도 만에 나온 이유가 19c에서 SE RAC 미제공 일 수 도 있다고 생각은 해보며, 기존의 SE RAC 의 100% 대안은 아니겠으나 고려는 해볼 수 있는 하나의 방안 정도는 될 것 같습니다
# Failover 속도
# 2번 노드에서 shutdown 완료 시점
2020-11-03T01:20:55.742712+09:00
Instance shutdown complete (OS id: 8882)
# 1번 노드에서 start가 시작된 시점
2020-11-03T01:20:57.383659+09:00
Starting ORACLE instance (normal) (OS id: 18539)
=> 약 2초 미만으로 소요된 것으로 확인되며 시스템 성능과 상황에 따라 더 빨라질 수 있습니다.
# RAC ONE NODE 와 동일(유사)하게 SEHA 에도 Spare server 에 대해서 년간 10일간은 사용 할 수있는 내용이 있습니다.
원문 : Standard Edition High Availability databases can be licensed using the “10-day failover rule”, which is described in this document. This rule includes the right to run the licensed program(s) [here the Standard Edition High Availability database] on an unlicensed spare computer in a failover environment for up to a total of ten separate days in any given calendar year.
라이센스가 없는 spare server 에서 년간 10일간 Failover rule 이 제공 된다는 의미 입니다
* 추가적인 내용은 아래 링크 등에서 더 확인 해보시면 됩니다.
예전에 11gR2 에서 소개된 RAC ONE NODE 의 경우도 HA 방식을 사용함에 있어서 vendor cluster 나 3rd Party Cluster 를 사용하는 것보다 더 좋은 부분이 많다고 언급을 했었습니다.
이번 SEHA 같은 경우도 정식적으로 SE의 기능이 추가 된 만큼 SE에서 HA를 사용할 때 해당 기능을 고려 해보는게 좋을 것 같습니다
추가로 SEHA 가 나오기 전에도 EE/SE 상관 없이 Custom Shell 을 이용하여 Grid 에 리소스를 등록하여 HA 형태로 사용하는 예제들은 기존에도 존재 하였습니다
그런 기능이 정식적으로 추가 되었다고 생각 하셔도 될 것 같습니다.
Ref link
https://blogs.oracle.com/maa/standard-edition-high-availability-officially-released
https://docs.oracle.com/en/database/oracle/oracle-database/19/newft/new-features.html#GUID-E5D12323-B950-4137-8544-730323D62114
https://gotodba.com/2020/09/02/seha-standard-edition-high-availability-in-oracle-db
연관된 글 : 11gR2 New Feature - RAC ONE NODE
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io
감사합니다 글 보고 많은 공부가 되었습니다
안녕하세요
도움이 되었다니 기쁘네요
정성스런 코멘트 감사합니다
좋은 하루 되세요
감사합니다 좋은내용 잘보고갑니다.
rac one node랑 이 내용 둘다 테스트 해봐야겠네요
안녕하세요
코멘트 감사합니다
좋은 하루 되세요~