[RAC]23.11.08_11g RAC 설치

망구씨·2023년 11월 8일
0

RAC

목록 보기
14/14
post-thumbnail

📖 RAC 설치

✍🏻 책 1, 2, 3장

1장 : 그리드의 Cluster 설치
2장 : ASM 설치
3장 : DB 설치

➡️ 클러스터란 여러개의 노드를 하나로 보이게 하는 소프트웨어
➡️ 그리드 컨트롤은 EM 매니저와 같다! (디비도 관리하고 클러스터도 관리함)


리눅스는 vi .bash_profile에서 환경변수 설정이지만 윈도우는 시스템 > 정보 > 고급 ~ 에서 찾을 수 있다.

💡 DB 엔지니어로 일을 할 때 노트북으로 그쪽 서버에 붙어야하는데 고객 db한테 tnsnames.ora를 달라고 한 후에 그것을 위 화면과같이 맨위에 있는 주소 밑에다 넣는다. 맨위에 있는게 최초로 인식되는 것임! 나는 지금 18로

✔️ 1. 윈도우 설치와 unix 설치의 차이점

  • 환경 변수의 차이
    • 윈도우 : 윈도우 탐색기 -> 내컴퓨터 -> 속성 -> 고급 시스템 설정
    • 리눅스 : /home/oracle밑에 .bash_profile을 설정

✔️ 2. 설치전 작업

➡️ db_files : db에서 생성할 수 있는 파일들의 최대 갯수!
얘를 설정하려면 먼저 리눅스의 관련 커널 파라미터를 셋팅해주어야 한다. 이것이 셋팅이 되어있어야 오라클의 파라미터인 db_files를 셋팅할 수 있다.

✅ 리눅스의 관련 커널 파라미터
: 우리는 자동으로 되어서 따로 보지는 못했다.

[oracle@racdb1 ~]$ cat /etc/security/limits.conf

✔️ 3. 설치전 하드웨어 요구사항

(p.1-8)

1. 11g의 경우는 최소한 1GB의 물리적 메모리가 필요하다.

  • 리눅스 서버의 물리적 메모리 정보를 확인하는 방법
[oracle@racdb1 ~]$ cat /proc/meminfo
MemTotal:        4045608 kB

2. 스왑(swap) 메모리가 최소 1GB 필요하다.

💡 스왑 메모리는 진짜 메모리가 아니라 디스크의 일부를 메모리로 사용하는 것! 디스크를 메모리로 사용할 수 있지만 느리다.
: 중요도가 높은 처리는 진짜 물리적 메모리에서 처리 / 중요도가 다소 낮은 일처리는 (오래걸려도 괜찮은 일) 스왑 메모리에서 처리 ! -> 오라클이 알아서 처리함

  • 지금 어떻게 잡혀있는지 확인
[oracle@racdb1 ~]$ cat /proc/meminfo
SwapTotal:       4194300 kB

➡️ 스왑 메모리 사이즈는 리눅스 설치할 때 지정을 하는데, 기준이 있다. 물리적 메모리가 1~2면 1.5배에서 2배 잡아주고 16기가 까지는 물리적 메모리와 똑같이 잡아준다. 지금 우리는 물리적 메모리와 스왑 메모리가 똑같이 4기가 잡혀있다.

3. /tmp 디렉토리는 400mb 이상이어야 한다.

💡 이 디렉토리는 설치할 때 생기는 여러 임시 파일들을 생성해서 여기에 둔다. 나중에 설치하다가 실패해서 다시 설치를 해야하는 상황이라면, /tmp 밑에 있는 파일들로 인해서 이전 설치내용을 기억한다. 다시 설치하는데 옛날 잘못 설치된 내용이 또 다시 설정된다. 그래서 다시 설치를 해야한다면 이 디렉토리의 내용을 rm으로 다 지워주고 해야한다.

➡️ 지금은 운영중이라 운영할때 생긴것들도 있지만 설치하면서 생긴 것들도 있다. 지워도 관계가 없음 ! 윈도우로 치면 윈도우의 임시 파일들 같은 것임

$ rm -rf * 
-- 오라클은 오라클에서, root꺼는 root계정에서 해줘야함

✔️ 4. 네트워크 요구 사항

(p. I-6)


이 그림 같은 경우는 랜카드가 3개가 있다. 공용 네트워크와 프라이빗 네트워크가, 클러스터와 연결하기 위한 네트워크 총 3개가 있다.
심장박동은 쿨러스터, SQLplus 접속은 공용 네트워크에서, 파일 주고받는것은 노드와 노드간 사이에 메세지나 buffer 주고받는 것은 노드 사이에 있는 공용 네트워크로 !
이 내용들은 tnsnames.ora에 있다.
C:\app\ITWILL\product\18.0.0\dbhomeXE\network\admin

✅ private network가 udp 프로토컬을 사용하는지 확인하는 방법 UDP 61299

$ cat /etc/hosts
### Private
192.168.56.111  rac1-priv
192.168.56.112  rac2-priv

SQL> oradebug setmypid
SQL> oradebug ipc
SQL> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_24882.trc

SQL> ed /u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_24882.trc
SKGXP:[7f34ac123a68.43]{ctx}:   SSKGXPT 0x7f34ac124fd8 flags 0x0  sockno 4 IP 169.254.215.245 UDP 61299 lerr 0

cat /etc/hosts

✔️ 5. 가상 IP 주소 및 RAC


➡️ 왼쪽은 퍼블릭 ip를 썼을 때, 오른쪽은 virtual ip(가상아이피)를 썼을 때! 이다.
HOST=별칭 으로 쓰고있음. load_balance=on 이 되어있다는 것은 클라이언트 로드 밸런싱을 쓰겠다 라는 것. 이건 무슨얘기냐면 1번? 2번 으로 접속하는게 완전 랜덤이라는 것이다. 이 상황에서 1번 노드가 다운되어져 있는 상황인데 1번 노드로 접속이 되었다? 이때 10분 웨이팅을 하게 된다. 이후에 ORA-3113에러를 만나게 된다.
➡️ 그렇지만 virtual ip를 사용하게 되면 10분 웨이팅 없이 바로 에러가 난다. 만약 taf가 있다면 바로 2번 노드로 들어가게 된다!
참고할 수업 자료

RAC 환경에서는 가상 ip를 사용해야 죽어있는 노드로 접속되었을 때 10분 대기하지 않게 된다.

✔️ 6. 패키지 요구 사항

💡 os에 필요한 패키지들이 설치가 되어있어야 한다.

➡️ RAC 설치를 하러 가기전에 미리 관련된 필수 패키지목록들이 담긴 워드 문서를 os 엔지니어에게 전달하고 설치를 미리 요청한다. 버전별로 패키지 목록들이 다른데 회사에 가면 알 수 있다.
설치 전에 cluverify 유틸리티로 잘 설치가 되어있는지 확인만 하면 된다

  • rac 설치전에 최소한의 사양체크 (p10-14 다양한 cluvfy 명령어들을 소개)
$ cluvfy  comp  sys  -n  rac1,rac2  -p  crs  -verbose

예)
노드 이름         사용 가능                     필수                        상태    
------------  ------------------------  ------------------------  ----------
rac2          libstdc++(x86_64)-4.4.7-17.el6  libstdc++(x86_64)-4.4.4   성공
rac1          libstdc++(x86_64)-4.4.7-17.el6  libstdc++(x86_64)-4.4.4   성공
결과: "libstdc++(x86_64)"에 대한 패키지 존재 여부 검사를 성공했습니다.

✔️ 7. 설치 전에 미리 생성해야하는 그룹과 유저

# groupadd -g 500 oinstall

➡️ 500인 그룹번호고 oinstall을 그룹명 이다.
➡️ oinstall (오라클 설치하는 그룹. 오라클 설치하려면 권한이 있어야 하는데, 그 권한을 가진 그룹이다.)

# groupadd -g 501 dba

➡️ 501은 그룹번호이고 오라클을 관리할 그룹을 dba 그룹명으로 생성한다.

# useradd -u 500 -d /home/oracle

➡️ useradd 명령어로 유저를 생성하는데
-u 500 은 유저의 id를 500번으로 만든 것이다.
-d /home/oracle 은 생성하는 유저가 사용할 홈 디렉토리이다.
-g "oinstall" 은 생성하는 유저의 기본 그룹을 oinstall로 하겠다 라는 것
-G "dba" 는 생성하는 유저의 추가 그룹을 dba로 하겠다 라는 것
-s /bin/bash 은 생성하는 유저가 사용할 로그인 쉘을 /bin/bash로 하겠다!
쉘의 종류가 여러개가 있는데 kshell, cshell, bash shell 중에서 bash shell을 쓰는것임.

쉘이란, 리눅스 서버를 수행하게 하는 핵심 엔진 코드 문법. bash shell 문법! 가장 나중에 나왔다. 가장 좋음

💡 오라클을 설치하려면 nobody user가 리눅스에 미리 만들어져 있어야 한다.
실습 있는지 확인하기. /etc/passwd를 열면 여기에 리눅스 유저들 확인 가능.

$ vi /etc/passwd
oracle:x:54321:54321::/home/oracle:/bin/bash

➡️ 유저명:비밀번호(암호화돼서x):유저id:그룹id:주석(비어있음):홈디렉토리:어떤쉘을 쓰는지
➡️ 직접 유저를 써넣어도 만들어진다.

✔️ 8. 오라클 유저 환경

1) UMASK 환경 설정
UMASK 022로 설정합니다.

vi /etc/bashrc

r : 4
w : 2
x : 1

[oracle@racdb1 ~]$ ls -ld bbb
d rwx r-x r-x. 2 oracle oinstall 4096 2023-11-08 14:07 bbb
   7   5   5

: 755
파일이 아니고 디렉토리 생성할 때 잡히는 권한을 생성하는것이 umask 022
➡️ umask에 나온 숫자만큼 777에서 빼준 값 숫자로 권한이 기본값으로 디렉토리를 만들 때 설정이 됩니다.
777
022
755

2) display 환경을 설정
: 왜 설정해야 하냐면 OUI(oracle user interface)를 띄울텐데 에러가 나지 않고 띄우려면 display 환경 변수를 설정해야 함.

$ ./runInstaller 

➡️ 이 명령어 수행했는데 에러가 나면서 수행이 안되면 잇플레이 환경이 설정 안되어있거나 꼬여서 그런거라 리눅스 서버안의 터미널창을 끄고 다시 켠다음 실행을 하거나 또는 다음과 같이 DISPLAY를 export 시킨다. 모바텀에서 엑스서버 활성화를 시켜놓으면 푸티나 모바텀에서 실행됨.

$ export DISPLAY=localhost:0.0 

여기 다시 정리

3) ORACLE_BASE 환경변수에 설정된 위치에 오라클이 설치가 된다. 오라클이 설치되는 ROOT 디렉토리이다!

실습

$ echo $ORACLE_BASE
/u01/app/oracle

tmp 를 지우면 되는데 나는 왜 없을까 !!

✔️ 9. 유저 셀 제한

/etc/sercurit/limits.conf

nproc : 리눅스 서버에 띄울 수 있는 프로세서의 갯수 결정
nofuke : 리눅스 서버에 띄울 수 있는 파일의 갯수 결정
hard : 이 제한을 넘어서서 프로세서나 파일을 생성하려고 하면 에러 발생
soft : 이 제한을 넘어서서 프로세서나 파일을 생성하려고 하면 경고 발생

관련된 오라클 파라미터 : processes, db_files입니다.

show parameter processes
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
db_writer_processes                  integer     1
gcs_server_processes                 integer     3
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     300

show parameter db_files 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_files                             integer     5000

✔️ 10. 원격 설치 구성

💡 노드가 여러개이고 노드 마다 서로 접속해서 통신하며 데이터를 주고 받아야 하는데, 접속할 때 마다 매번 패스워드를 물어보면 데이터 전송이 원할하게 진행이 되지 않으므로 인증키를 만들고, 인증키만 있으면 상대편 노드에 접속할 때 패스워드 없이 접속할 수 있도록 해주는 설정이 있어야 한다.

실습

ls -ald .ssh
drwxr-xr-x. 2 oracle oinstall 4096 2023-10-22 03:24 .ssh

[oracle@racdb1 ~]$ cd .ssh
[oracle@racdb1 .ssh]$ ls
authorized_keys
[oracle@racdb2 .ssh]$ ls
authorized_keys

-a를 붙인 이유는 숨김 폴더이기 때문이다! -d를 붙인 이유는 디렉토리를 검색할것이기 때문!

  • password 없이 상대편 노드에 접속이 되는지 확인하기
[oracle@racdb1 ~]$ ssh rac2
Last login: Wed Nov  8 15:00:18 2023 from rac2
[oracle@racdb2 ~]$

[oracle@racdb2 ~]$ ssh rac1
Last login: Wed Nov  8 09:45:26 2023 from 192.168.56.1
[oracle@racdb1 ~]$

➡️ ssh 호스트명 / ssh 아이피 주소 이렇게 접속 가능

✔️ 11. 오라클 소프트웨어 디렉토리의 필수 디렉토리

: .bash_profile 안에 경로가 어디인지 나와있다.
1. oracle base 디렉토리 : 오라클 소프트웨어의 최상위 루트 디렉토리

[oracle@racdb1 ~]$ echo $ORACLE_BASE
/u01/app/oracle
  1. oracle home 디렉토리 : 오라클 엔진(bin)과 오라클 파일들이(datafile, redo log file, controlfile)
[oracle@racdb1 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1
  1. oracle 클러스터 홈 디렉토리 : 오라클 클러스터 엔진과 각종 진단 파일들
[oracle@racdb1 ~]$ echo $GRID_HOME
/u01/app/11.2.0/grid
  1. oracle asm 홈 디렉토리 : 오라클 ASM과 관련한 엔진(bin)이 있는 디렉토리
[oracle@racdb1 ~]$ echo $GRID_HOME -- 그리드랑 같이 설치되므로
  1. oracle 정보 디렉토리 : 오라클 소프트웨어 정보가 있는 oraInventory 경로
/u01/app/oraInventory
[oracle@racdb1 oraInventory]$ ls
ContentsXML  backup  logs  oraInst.loc  orainstRoot.sh  oui

✔️ 12. Linux 운영 체제 파라미터

💡 리눅스의 세마포어 정보임! (p1-20)
: 깊은 서버 튜닝을 할 때 이 세마포어 정보를 확인해보아야 한다.
❓ 세마포어란, 리눅스 프로세서간의 동기화와 상호 배타적인 접근을 제어하기 위한 동기화 기법중 하나이다.

오라클의 락이 크게 2가지가 있다.
1. latch : 오라클 메모리에서 사용하는 락

* 공유풀 특정 지점에 계속 몰린다면 메모리가 깨지기 때문에 `latch`로 보호한다. 
`latch`로 잡은 세션만 이 shard pool을 사용할 수 있다.

* shared pool과 같은 오라클의 특정 메모리 영역에 엑세스를 하려면 latch를 잡은 세션만 엑세스가 되고 
latch를 못잡은 세션들은 엑세스를 할 수 없다. 다행히 latch가 1개가 아니고 여러개라
여러 세션들이 동시에 엑세스를 할 수 있지만 , 너무 많은 세션이 순간적으로 동시에 특정 메모리에 몰리는 것을
방지 하기 위해 latch의 갯수에 제한을 둔다. 이것이 없으면 메모리가 깨질 수 있다. 

* 만약 latch의 갯수를 늘리고 싶다면 latch와 관련한 리눅스의 세마포어 설정값을 같이 늘려줘야 함

실습

[root@rac1 ~]# sysctl -a | grep sem
kernel.sem = 250        32000   100     128
kernel.sem_next_id = -1

2. lock : 오라클 db에서 사용하는 락

✏️ 클러스터 설치 작업

💡RAC 설치 전에 노드간의 연결 네트워크는 infiniband 로 구성하는게 바람직하다.
💡 만약 공유 스토리지를 ASM으로 쓰고 RAW device를 사용하지 않겠다고 하더라도, ocr과 voting disk는 ASM에 둘 수 없기때문에 이를 위한 raw device를 준비해야 한다. (과거)
그렇지만 현재는 ocr과 voting disk를 ASM에 둘 수 있다!

⭐ 오라클 클러스터 설치전에 필수 사항들이 다 갖춰졌는지 확인

su - grid
cluvfy stage -post hwos -n all -verbose












✏️ RAC 소프트웨어 설치

: 11g 이후로는 그리드를 깔면 클리스터랑 ASM이 두개가 동시에 깔린다.





체크해야 상대편 노드에도 설치가 됨


-- db관리할 때 막강한 권한 2가지 
SYS @ racdb1 > grant dba to scott; -- 얘만 받으면 제일 강력하다.
SYS @ racdb1 > grant sysoper to scott;
-- asm은 아래와 같이 접속
[grid@+ASM1 ~]$ sqlplus / as sysasm



[oracle@racdb1 ~]$ crsctl stat res -t

profile
Slow and steady wins the race.

0개의 댓글