rac1, rac2 둘 다 시작하기.
전원 꺼짐 상태에서 시작한 다음에 키면
[oracle@rac1 ~]$ crsctl stat res -t
처음엔 이렇게 오류 뜰 수 있음.
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4000: Command Status failed, or completed with errors.
기다렸다가 다시 하면 됨.
아래 쿼리는 rac1, rac2 둘 중에 한 곳에서만 봐도 됨.
[oracle@rac1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.chad
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.FRA.dg(ora.asmgroup)
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac2 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE rac1 STABLE
2 ONLINE ONLINE rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac2 STABLE
ora.qosmserver
1 ONLINE ONLINE rac2 STABLE
ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
ora.racdb.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
racle/product/19.0.0
/dbhome_1,STABLE
ora.scan1.vip
1 ONLINE ONLINE rac2 STABLE
--------------------------------------------------------------------------------
■ Cluster, Grid
여러 대의 컴퓨터들이 연결되어 하나의 컴퓨터처럼 동작하는 기능의 소프트웨어이다.
9i버전까지는 OS 클러스터 소프트웨어 서비스를 이용해야 했다.
SUN : SUN Cluster
HP : HP - SERVICEGuard
IBM : AIX, HACMP(High Availability Cluster Multiprocessing)
10g버전부터 Oracle Cluster 소프트웨어를 지원한다.
■ RAC(Real Application Cluster)
- 동일한 데이터베이스에 대해 여러 인스턴스를 실행하여 클러스터된 하드웨어를 사용할 수 있도록하는 소프트웨어이다.
- 데이터베이스 파일은 각 노드에 물리적 또는 논리적으로 연결된 디스크에 저장되므로 모든 인스턴스에서 읽고 쓸 수 있다.
■ RAC 장점
- 고가용성(High Availability, HA) (안정화를 위함. 365일 장애 없이
- 서버 장애가 발생하더라도 데이터베이스 가용성을 유지하여 다운타임을 최소화한다.
- 하나의 서버나 하드웨어 장애가 발생하더라도 다른 노드에서 작업을 계속 처리할 수 있다.
- 확장성(Scalability)
- 새로운 노드들을 계속 추가하면서 확장해 나갈 수 있다.
- 성능 향상과 부하 분산을 위한 뛰어난 확장성을 제공한다.
- 노드 개수는 100개까지 가능하다.
# 노드(NODE): RAC에 포함된 각각의 서버를 의미한다.
■ RAC 네트워크 구조
# 공용 네트워크(public network)
- 개별 클라이언트 프로그램들은 public network를 통해서 오라클 인스턴스와 통신한다.
- 대부분 통신은 SQL*NET을 통해서 이루어진다.
# 전용 인터커넥트(private interconnect) -- 이게 없으면 클러스터 구축 못함. 내부적으로 소통을 해야 함.
- 각 노드의 인스턴스들은 Private Interconnect를 통해서 서로 통신한다.
- 기가비트 이더넷(gigabit ethernet)을 사용하여 구현한다.
- 1gbps는 125mb/s 전송
- 10gbps는 초당 10기가비트 즉, 1.25gb/s 속도로 전송하는 기능
[oracle@rac1 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## Public : 외부 클라이언트들이 노드로 접속할 때 사용하는 IP
192.168.56.175 rac1
192.168.56.176 rac2
## Private : 노드 간의 통신을 하기 위해서 사용하는 IP(private interconnect)
192.168.55.175 rac1-priv
192.168.55.176 rac2-priv
## Virtual : Failover를 지원하기 위해서 사용하는 IP
192.168.56.177 rac1-vip
192.168.56.178 rac2-vip
## grid scan : Failover를 지원하기 위해서 사용하는 IP
192.168.56.179 rac-scan
■ RAC 공유 스토리지(shared storage)
- 여러 노드가 데이터를 공유하기 위해서 공유 스토리지를 사용한다.
- 각 노드는 SAN(Storage Area Network) 스위치를 통해 스토리지와 통신한다.
# raw device
- 파일 시스템을 사용하지 않고 원시적인 형태의 디바이스를 의미한다.
- raw device를 사용하는 경우에는 별도의 파일 시스템 없이 디스크를 직접 액세스한다.
- 장점: 읽고, 쓰기 속도가 빠르다.
- 단점: 관리가 어렵다.
# 클러스터 파일 시스템(clustered file system)
- raw device의 불편함. 즉, 파일시스템을 사용할 수 없다는 단점으로 인해 클러스터 파일 시스템을 채택하는 경우가 많다.
- 장점: 관리가 쉽다.
- 단점: 비용이 많이 든다.
- 회사: veritas
(Veritas회사에서 클러스터 파일 시스템으로 유명했는데, Oracle이 ASM과 Oracle Clusterware 기능을 강화하면서 Oracle RAC에서는 베리타스 대신 ASM을 사용하는 구성이 많이 보편화됨.)
# ASM(Automatic Storage Management)(10g)
- 오라클 10g
- 자동화 로드맵 중 스토리지에 대한 구현 제공
- 스트라이핑(striping), 미러링(mirroring), 백업, 복구에 필요한 모든 기능 제공
- raw device, clustered file system의 모든 장점인 볼륨매니저 기능 제공
- 장점: OS의 RAID기법을 구성하지 않고 오라클이 알아서 RAID 0 + 1 지원한다. RAID 0(Striping), 1(Mirroring)
- 단점: (10g~11g)bug에 대한 fix를 해야 할 일이 많았다.
SYS@racdb1> select instance_number, instance_name from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
1 racdb1
SYS@racdb1> select name from v$database;
NAME
---------
RACDB
SYS@racdb1> select inst_id, instance_number, instance_name from gv$instance;
INST_ID INSTANCE_NUMBER INSTANCE_NAME
---------- --------------- ----------------
1 1 racdb1
2 2 racdb2
SYS@racdb2> select instance_number, instance_name from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
2 racdb2
SYS@racdb2> select name from v$database;
NAME
---------
RACDB
인스턴스가 2개(racdb1, racdbl2), 데이터베이스는 1개(racdb)
큰 틀에서는 rac1 + rac2 + RACDB를 하나의 RAC시스템으로 볼 수 있다.
SYS@racdb1> select file_name, tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- ------------------------------
+DATA/RACDB/DATAFILE/system.259.1239202827 SYSTEM
+DATA/RACDB/DATAFILE/sysaux.260.1239202861 SYSAUX
+DATA/RACDB/DATAFILE/undotbs2.267.1239203295 UNDOTBS2
+DATA/RACDB/DATAFILE/users.262.1239202887 USERS
+DATA/RACDB/DATAFILE/undotbs1.261.1239202887 UNDOTBS1
SYS@racdb2> select file_name, tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------- ------------------------------
+DATA/RACDB/DATAFILE/system.259.1239202827 SYSTEM
+DATA/RACDB/DATAFILE/sysaux.260.1239202861 SYSAUX
+DATA/RACDB/DATAFILE/undotbs2.267.1239203295 UNDOTBS2
+DATA/RACDB/DATAFILE/users.262.1239202887 USERS
+DATA/RACDB/DATAFILE/undotbs1.261.1239202887 UNDOTBS1
undo tablespace가 두 개이다. undo tablespace는 각 노드별로 만들어진다.
SYS@racdb1> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SYS@racdb2> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS2
SYS@racdb1> select name from v$controlfile;
NAME
--------------------------------------------------
+DATA/RACDB/CONTROLFILE/current.263.1239202955
+FRA/RACDB/CONTROLFILE/current.256.1239202957
SYS@racdb2> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/RACDB/CONTROLFILE/current.263.1239202955
+FRA/RACDB/CONTROLFILE/current.256.1239202957
컨트롤파일은 서로 동일한 컨트롤파일을 사용하고 있음.
SYS@racdb1> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------- ----------
1 1 5 209715200 512 2 NO INACTIVE 2017699 21-JUL-26 2273862 21-JUL-26 0
2 1 6 209715200 512 2 NO CURRENT 2273862 21-JUL-26 1.8447E+19 0
3 2 1 209715200 512 2 NO INACTIVE 2038489 21-JUL-26 2173676 21-JUL-26 0
4 2 2 209715200 512 2 NO CURRENT 2173676 21-JUL-26 1.8447E+19 0
current한 그룹이 2개이다. 싱글노드에서는 current그룹이 무조건 1개여야 함. current 그룹은 각 노드별로 만들어져 있다.
THREAD#는 인스턴스 번호라고 생각하면 된다.
SYS@racdb1> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_ CON_ID
---------- ------- ------- -------------------------------------------------- --- ----------
2 ONLINE +DATA/RACDB/ONLINELOG/group_2.265.1239202961 NO 0
2 ONLINE +FRA/RACDB/ONLINELOG/group_2.258.1239202963 YES 0
1 ONLINE +DATA/RACDB/ONLINELOG/group_1.264.1239202961 NO 0
1 ONLINE +FRA/RACDB/ONLINELOG/group_1.257.1239202963 YES 0
3 ONLINE +DATA/RACDB/ONLINELOG/group_3.268.1239203385 NO 0
3 ONLINE +FRA/RACDB/ONLINELOG/group_3.259.1239203387 YES 0
4 ONLINE +DATA/RACDB/ONLINELOG/group_4.269.1239203387 NO 0
4 ONLINE +FRA/RACDB/ONLINELOG/group_4.260.1239203389 YES 0
SYS@racdb2> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_ CON_ID
---------- ------- ------- -------------------------------------------------- --- ----------
2 ONLINE +DATA/RACDB/ONLINELOG/group_2.265.1239202961 NO 0
2 ONLINE +FRA/RACDB/ONLINELOG/group_2.258.1239202963 YES 0
1 ONLINE +DATA/RACDB/ONLINELOG/group_1.264.1239202961 NO 0
1 ONLINE +FRA/RACDB/ONLINELOG/group_1.257.1239202963 YES 0
3 ONLINE +DATA/RACDB/ONLINELOG/group_3.268.1239203385 NO 0
3 ONLINE +FRA/RACDB/ONLINELOG/group_3.259.1239203387 YES 0
4 ONLINE +DATA/RACDB/ONLINELOG/group_4.269.1239203387 NO 0
4 ONLINE +FRA/RACDB/ONLINELOG/group_4.260.1239203389 YES 0
리두 로그 파일도 동일
SYS@racdb1> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/RACDB/PARAMETERFILE/spfi
le.270.1239203391
SYS@racdb2> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/RACDB/PARAMETERFILE/spfi
le.270.1239203391
초기 파라미터 파일도 동일하나, 각 노드마다 undo 테이블스페이스를 지정해줘야 함.
SYS@racdb1> create pfile='/home/oracle/init.ora' from spfile;
File created.
SYS@racdb1> !
[oracle@rac1 ~]$ ls init.ora
init.ora
[oracle@rac1 ~]$ cd $ORACLE_HOME/dbs
[oracle@rac1 dbs]$ ls
hc_racdb1.dat id_racdb1.dat init.ora
[oracle@rac1 dbs]$ ls -al
total 2060
drwxr-xr-x. 2 oracle oinstall 64 Jul 22 09:54 .
drwxr-xr-x. 71 oracle oinstall 4096 Jul 21 15:11 ..
-rw-rw----. 1 oracle asmadmin 1544 Jul 22 09:54 hc_racdb1.dat
-rw-r-----. 1 oracle asmadmin 2097152 Jul 22 12:15 id_racdb1.dat
-rw-r--r--. 1 oracle oinstall 3079 May 14 2015 init.ora <<- 샘플파일
원래는 이 위치에 무조건 initora19c.ora(init<SID>.ora가 있어야 함.)
[oracle@rac1 ~]$ vi init.ora
볼륨매니저, 스트라이핑, 미러링은 오라클에만 국한된 게 아니다.
이 기능들을 오라클에서도 지원한다. ASM에서 지원함.
■ OCR(Oracle Cluster Repository)
- RAC 구성의 전체 정보를 저장하고 있는 디스크로 RAC에 핵심 역할을 담당한다.
- RAC를 시작하려면 OCR에 저장되어 있는 정보를 보고 RAC를 구성해야 하는데
10g RAC까지는 RAC를 시작 후에 ASM instance를 시작하기 때문에 OCR을 ASM에 저장할 경우 RAC를 시작할 수 없게 되었다.
단 11g에서는 이 부분이 개선되어 ASM 디스크를 사용가능하다.
- 오라클에서 권장하는 OCR 최소 크기는 100MB
- OCR에 장애가 발생하면 RAC는 중단된다.
[oracle@rac1 ~]$ cat /etc/oracle/ocr.loc
#Device/file +DATA getting replaced by device +DATA/rac-cluster/OCRFILE/registry.255.1239191087
ocrconfig_loc=+DATA/rac-cluster/OCRFILE/registry.255.1239191087 <<- OS에서는 볼 수 없다.
[oracle@rac1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 4
Total space (kbytes) : 491684
Used space (kbytes) : 84196
Available space (kbytes) : 407488
ID : 1876283250
Device/File Name : +DATA
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check bypassed due to non-privileged user
■ Vote Disk
- RAC는 여러 개의 노드들로 구성되어 있으며 각 노드들이 문제가 있는지 없는지 실시간으로 파악하고 있어야 한다.
그래서 클라이언트들이 요청하는 서비스를 정확하게 연결해 줄 수 있어야 한다.
- CSSD 프로세스는 각 노드들이 정상적으로 작동하고 있는지 interconnect를 통해 매 초마다 heartbeat를 보내고
각 노드들은 그에 대한 응답을 다시 보내어서 자신이 정상적으로 동작하고 있다는 것을 알려주게 된다.
이런 정보를 vote disk에 저장한다.
- 오라클에서 권장하는 vote disk의 최소 크기는 20mb
- 11g RAC부터는 OCR과 Vote Disk를 모두 ASM에 저장할 수 있다.
[oracle@rac1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE b436051f89334f14bf9f6bcb35ee6496 (/dev/oracleasm/disks/ASMDISK01) [DATA]
Located 1 voting disk(s).
# 현재 rac 상태 정보
[oracle@rac1 ~]$ crsctl stat res -t -- 현재 rac 상태 정보 조회하는 명령어
Target : 목표 상태
State : 현재 상태
Server : 노드, 호스트
Target, State 두 개가 동일하게 되어있어야 함. 두 개가 동일하지 않으면 서비스가 원활하지 않다.
매일 이 명령어로 rac 상태 체크
■ srvctl(server control utility)를 사용하여 RAC 구성정보를 관리
# 데이터베이스 상태
[oracle@rac1 ~]$ srvctl config database -d racdb
# 인스턴스 상태 정보
[oracle@rac1 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node rac1
Instance racdb2 is running on node rac2
# 특정 인스턴스 상태 정보
[oracle@rac1 ~]$ srvctl status instance -d racdb -i racdb1
Instance racdb1 is running on node rac1
[oracle@rac1 ~]$ srvctl status instance -d racdb -i racdb2
Instance racdb2 is running on node rac2
[oracle@rac1 ~]$ srvctl status nodeapps
VIP 192.168.56.177 is enabled
VIP 192.168.56.177 is running on node: rac1
VIP 192.168.56.178 is enabled
VIP 192.168.56.178 is running on node: rac2
Network is enabled
Network is running on node: rac1
Network is running on node: rac2
ONS is enabled
ONS daemon is running on node: rac1
ONS daemon is running on node: rac2
# RAC 종료
instance -> asm -> application 순서로 종료
# instance 종료
srvctl stop instance -d racdb -i racdb1
srvctl stop instance -d racdb -i racdb2
# asm 종료
srvctl stop asm -n rac1
srvctl stop asm -n rac2
# application 종료
srvctl stop nodeapps -n rac1
srvctl stop nodeapps -n rac2
# 종료를 한꺼번에 하는 명령
[root@rac1 ~]# /u01/app/19.0.0/grid/bin/crsctl stop crs
[root@rac2 ~]# /u01/app/19.0.0/grid/bin/crsctl stop crs
# RAC 시작
application -> asm -> instance 순서로 시작
# application 시작
srvctl start nodeapps -n rac1
srvctl start nodeapps -n rac2
# asm 시작
srvctl start asm -n rac1
srvctl start asm -n rac2
# instance 시작
srvctl start instance -d racdb -i racdb1
srvctl start instance -d racdb -i racdb2
# 시작 작업을 한꺼번에 하는 명령
[root@rac1 ~]# /u01/app/19.0.0/grid/bin/crsctl start crs
[root@rac2 ~]# /u01/app/19.0.0/grid/bin/crsctl start crs
# listener 상태 정보 -- 한 쪽 노드에서 rac1, 2 다 볼 수 있다.
[oracle@rac1 ~]$ srvctl status listener -n rac1
Listener LISTENER is enabled on node(s): rac1
Listener LISTENER is running on node(s): rac1
[oracle@rac1 ~]$ srvctl status listener -n rac2
Listener LISTENER is enabled on node(s): rac2
Listener LISTENER is running on node(s): rac2
# listener 종료
[oracle@rac1 ~]$ srvctl stop listener -n rac1
[oracle@rac1 ~]$ srvctl stop listener -n rac2
# listener 시작
[oracle@rac1 ~]$ srvctl start listener -n rac1
[oracle@rac1 ~]$ srvctl start listener -n rac2
RAC에서의 listener.ora파일 위치: /u01/app/19.0.0/grid/network/admin/listener.ora (그리드홈 밑에 network 밑에 admin)
싱글에서의 listener.ora파일은 $ORACLE_HOME/network/admin/listener.ora
# client - server
1) easy connect -- 클라이언트쪽에 툴만 있으면 되는 것
2) local naming
혹여나 특정 포트에 대해서 접속이 안 되면 방화벽 체크해보기
sqldeveloper 접속하여 새 데이터베이스 rac1_sys 생성

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
여기서 tnsnames.ora 메모장 파일 들어가기.

아래 rac1, rac2, racdb 삽입
# public ip
rac1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.175)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
# public ip
rac2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.176)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
# virtual ip
racdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.177)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.178)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
이거 추가 후 저장.
명령프롬프트(cmd)

윈도우 파워쉘

만약에 여기서 racdb 호스트 IP주소를 아래처럼 순서를 바꾸면
racdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.178)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.177)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
위 sql 인스턴스 조회 쿼리문 결과는 첫 번째 포트(racdb2) 걸로 바뀜.
exit했다가
다시 sqlplus 접속해서 select instance_number, instance_name from v$instance;하면 됨.



sqldeveloper 들어가서 rac2_sys 만들어서도 접속해서 테스트 해보기

# 테스트
sqlplus sys/oracle@rac1 as sysdba -- rac1로 고정
sqlplus sys/oracle@rac2 as sysdba -- rac2로 고정
sqlplus sys/oracle@racdb as sysdba -- virtual ip

cmd창과 파워쉘창 합쳐서 3개를 띄워서 위 문장으로 각각 접속 후
select instance_number, instance_name from v$instance; 이 문장 실행.
그러면 각각 rac1, rac2, rac1로 나옴.

각 세 개의 창에서 select * from all_objects 하는 중에 putty의 rac1창에서 shutdown abort를 치면 rac1인 것들은 오류 나고
rac2은 막 빠르게 진행되어 난리가 나면서 이상없이 마무리 됨. rac1 나갔다 들어오면 sqlplus 접속 안 됨.
putty rac1서버는 sqlplus / as sysdba로 진행해야 함.

[oracle@rac2 ~]$ srvctl status database -d racdb
Instance racdb1 is not running on node rac1
Instance racdb2 is running on node rac2
그래서 위 명령어 입력하면 rac1은 not running 되어있음.
■ Application Failover
CTF(Connect Time Failover)
rac1노드에서 장애가 있어서 접속이 안 되는 경우 관리자의 간섭이나 별다른 조치없이 자동으로 rac2노드를 찾아서 접속하게 만들어서
데이터베이스에 저장된 데이터에 접근할 수 있도록 만들어주는 기능
새롭게 접속한 사용자들 입장에서는 장애를 알 수 없고 서비스는 받을 수 있다.
단 기존에 rac1노드에 접속되어있던 사용자는 접속이 끊어지고 재접속을 할 경우 자동으로 rac2노드로 연결이 되며 작업중이었던
SQL문은 오류가 발생
단 tnsnames.ora에는 tns정보에 virtual ip를 이용해야 한다.(public ip 쓰면 안 됨.)
ctf의 단점은 장애 나면 다른 노드로 재접속해야 된다는 것.
# load balancing
(LOAD_BALANCE=YES)
# client tnsnames.ora
racdb =
(DESCRIPTION =
(LOAD_BALANCE=YES)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.177)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.178)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
2. TAF(Transparent Application Failover)
rac1노드에서 장애가 발생되어 인스턴스가 비정상적인 종료가 되어도 rac1에서 작업하던 사용자들은 rac2노드로 그대로 넘어가서
사용자는 끊임이 없는 작업을 수행하도록 한다.
# client tnsnames.ora
이거 tnsnames.ora 메모장 파일 racdb 밑에 추가
racdb_taf_sess =
(DESCRIPTION =
(LOAD_BALANCE=YES)(FAILOVER=YES)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.177)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.178)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE=(TYPE=SESSION)(METHOD=BASIC))
)
)
'강남 아이티윌 오라클DBA과정 94기 > RAC' 카테고리의 다른 글
| [오라클 DBA 과정] 89일차 RAC(6) (2026-07-27) (0) | 2026.07.27 |
|---|---|
| [오라클 DBA 과정] 88일차 RAC(5) (2026-07-24) (0) | 2026.07.25 |
| [오라클 DBA 과정] 87일차 RAC(4) (2026-07-23) (0) | 2026.07.23 |
| [오라클 DBA 과정] 85일차 RAC(2)(RAC 설치(2)) (2026-07-21) (0) | 2026.07.21 |
| [오라클 DBA 과정] 84일차 RAC(1)(RAC 설치(1)) (2026-07-20) (0) | 2026.07.20 |