Oracle 64일차

[IP 종류]

puvlic : 외부에서 (putty) 접근할 때 사용

private : rac에서 1번2번 노드끼리 통신할 때 사용

virtual : cluster 가 관리함. 한쪽 서버가 다운되어도 세션을 다른쪽 서버로 넘겨줄 수 있어서(failover) 접속이 끊기지 않게 됨. 그래서 기능이 끊기면 안되는 앱 WAS에서 사용한다.

scan : 여기로 보내면 알아서 1번2번으로 load valance를 해준다.

-- 현재 tnsnames.ora에 scan ip로 되어있음
[oracle@oel8db1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/19c/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORADB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel8db-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )
-- 따라서 sqlplus에 접속할 때마다 어떤 인스턴스를 쓸지 scan이 정해줌

-- 현재 붙어있는 instance 확인)
select instance_name from v$instance;

-- 현재 모든 instance의 상태
select instance_name, status from gv$instance;

Orange로 RAC에 접속하기 위한 설정

sqlnet.ora 생성 및 11g 버전 접근 허용 설정

1번 2번 모두에서
cd $ORACLE_HOME/network/admin
vi sqlnet.ora 해서 아래 내용 입력.

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

패스워드 재설정(한쪽 노드에서만)

SQL> alter user system identified by oracle;

windows(client)의 tnsnames.ora 수정

1) public ip
– fail-over 불가
– load-balance 불가

ORADB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

ORADB2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.200)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

2) virtual ip
– fail-over 가능
– load-balance 불가

ORADB1-VIP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.110)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

ORADB2-VIP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.210)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

3) scan ip
– load-balance 가능

ORADB-SCAN =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.150)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

4) VIP + load balancing
– VIP는 load balancing이 안됐는데 아래 방식으로 하면 load balancing도 되고 fail over도 가능한 접속이 된다.

ORADB =
  (DESCRIPTION =
    (LOAD_BALANCE = YES)
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.110)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.124.210)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADB)
    )
  )

[RAC 명령어]

1. crsctl
– CRS(Cluster Ready Services) 기동, 중지, 상태 확인
– root 유저로 수행 권고

2. srvctl
– crs 내 특정 서비스(=application=resource) 관리
– 서비스 상태 확인 가능, 기동 및 중지, 변경

[crs 기동 및 중지]

1. 확인
crsctl status res -t

2. 중지
1) 각 노드별 중지
crsctl stop crs
2) 1, 2번 노드 동시 중지
crsctl stop cluster -all

3. 기동
1) 각 노드별 기동
crsctl start crs
2) 1, 2번 노드 동시 중지
crsctl start cluster -all

[서비스(=application=resource) 기동 및 중지]

oracle 계정에서 수행 권고.
srvctl = service control

1. 확인
srvctl status database -d oradb — db전체 상태 체크
srvctl status instance -d oradb -n oel8db1 — db의 특정 인스턴스만 상태 체크
srvctl status vip -n oel8db1 — 특정 인스턴스의 vip 상태 체크

2. 중지
srvctl stop database -d oradb — shutdonw immediate가 기본 설정
srvctl stop instance -d oradb -n oel8db1 — node로 내리나 instance로 내리나 똑같음
srvctl stop instance -d oradb -i ORADB1 — 대소구분 있음!

3. 기동
srvctl start database -d oradb — open까지 startup이 기본 설정
srvctl start instance -d oradb -n oel8db1
srvctl start instance -d oradb -i ORADB1

[리스너 기동 및 중지]

oracle 계정에서 수행 권고

1. 확인
srvctl status listener — 아래 명령어와 동일한 출력
srvctl status listener -l listener — 리스너 이름이 listener인거임
srvctl status listener -l listener -n oel8db1 — 특정 리스너

2. 중지
srvctl stop listener -l listener
srvctl stop listener -l listener -n oel8db1

3. 기동
srvctl start listener -l listener
srvctl start listener -l listener -n oel8db1

[DB 구성정보 확인]

ASM 환경에서의 모든 공유 파일들은 os에 존재하지 않고 +DATA 라는 영역에서 존재하며 ASM instance를 통해서 접근 가능.

1. control file 확인

select *
from v$controlfile;

2. data file 확인

select file#, ts#, name, bytes
from v$datafile;

3. redo log file 확인

select *
from v$logfile;

4. undo tbs 확인
-> instance 별로 rollback 이미지를 각 undo tbs에 저장. 따라서 인스턴스의 숫자만큼 undo tbs가 생긴다.

select *
from gv$parameter
where name = 'undo_tablespace';

5. parameter file 확인

SQL> show parameter pfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/ORADB/PARAMETERFILE/spfile.268.1189873561

[asm instance 접근]

asmcmd
cd, ls 등의 기본적인 명령어는 먹힌다. 근데 tab같은게 안되는 듯? 조금 불편함.

Leave a Comment