레이블이 Grid Infrastructure인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Grid Infrastructure인 게시물을 표시합니다. 모든 게시물 표시

2014년 2월 4일 화요일

Raw Device에 대한 간단한 정리


통상 RAC를 사용한다고 할 때, 오라클에서 제공하는 GI (Grid Infrastructure)를 사용할수도 있지만 ASM을 반드시 사용해야 한다는 점 때문에 사용하지 않는 사이트가 많다. 또한, 11gR2 이전의 경우에는 Grid Infrastructure와는 달리 OCR이 ASM 내부에 저장되지 않았기 때문에 별도의 클러스터 파일 시스템을 사용하는 경우가 많았던 점도 한몫한다.

이러한 경우에 다수의 서버에서 스토리지 접근시 정합성 보장을 해주어야 하기 때문에 타사 클러스터웨어랑 병행하여서 사용해야 한다.

이에 해당하는 제품은 다음과 같다.

  • Veritas(Symantac) Storage Foundation for Oracle RAC - Symantac
  • IBM High Availability Cluster Multiprocessing - IBM
  • HP-UX Cluster (Service Guard) File System - HP

이렇게 사용하는 경우, 가령 AIX의 예를 들면 AIX에서는
Raw Device - AIX - HACMP - Grid Infrastructure (ASM 제외) - RAC 의 구조를 갖게 된다.




2014년 1월 6일 월요일

Oracle 12c Flex ASM


본 페이지는 Oracle 12c의 신기능인 Flex ASM에 대한 테스트를 수행한 내용을 담고 있다. 이와 관련한 오라클의 문서는 다음에서 확인할 수 있다.

소개 문서: http://www.oracle.com/technetwork/products/cloud-storage/oracle-12c-asm-overview-1965430.pdf
메뉴얼 : http://docs.oracle.com/cd/E16655_01/server.121/e17612/asminst.htm#OSTMG136

위 문서를 참고하여 테스트 일부를 수행한 것이다.

테스트는 직접 실습 환경을 구성했던 2노드 RAC의 가상 머신에서 진행하였다.


Flex ASM 운영 상태 확인하기

Flex ASM의 운영상태는 srvctl  및 crsctl, asmcmd 등의 툴을 통해서 쉽게 확인할 수 있다.

Flex ASM 사용 여부 확인하기
현재 클러스터에 Flex ASM이 사용 중인지 확인할 수 있다.
[root@oel5-12c-rac1 ~]# asmcmd showclustermode
ASM cluster : Flex mode enabled

ASM이 운영 중인 서버 확인하기
ASM 인스턴스가 운영 중인 서버를 볼 수 있다.
[root@oel5-12c-rac1 ~]# srvctl status asm
ASM is running on oel5-12c-rac2,oel5-12c-rac1

Flex ASM에 대한 설정 확인하기
Flex ASM의 구성 정보 및 패스워드 파일의 위치, ASM 인스턴스의 카디널리티 등을 확인할 수 있다.
[root@oel5-12c-rac1 ~]# srvctl config asm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/ASM/orapwasm
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM


Flex ASM 정보 조회하기

ASM 인스턴스에서는 현재 ASM 인스턴스의 입장에서 클라이언트로 연결을 맺은 Database 인스턴스에 대한 정보를 조회하는 것이 가능하다. 이것은 Local에 대해서는 V$ASM_CLIENT, Cluster에 대해서는 GV$ASM_CLIENT를 통해 알 수 있다.

ASM 인스턴스에 접속하기
[grid@oel5-12c-rac1 ~]$ . oraenv
ORACLE_SID = [+ASM1] ?
The Oracle base remains unchanged with value /u01/app/grid
[grid@oel5-12c-rac1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 04:21:23 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>

해당 인스턴스의 클라이언트 조회하기
SQL> SELECT * FROM V$ASM_CLIENT;

GROUP_NUMBER INSTANCE_NAME    DB_NAME  STATUS       SOFTWARE_VERSION COMPATIBLE_VERSION       CON_ID
------------ ---------------- -------- ------------ ---------------- -------------------- ----------
           1 +ASM1            +ASM     CONNECTED    12.1.0.1.0       12.1.0.1.0                    0
           1 cdbrac1          cdbrac   CONNECTED    12.1.0.1.0       12.1.0.0.0                    0
           0 +APX1            +APX     CONNECTED    12.1.0.1.0       12.0.0.0.0                    0

아니면, 다음과 같이 asmcmd 명령어로 확인하는 것 역시 가능하다.

[root@oel5-12c-rac1 ~]# asmcmd lsct data
DB_Name  Status     Software_Version  Compatible_version  Instance_Name  Disk_Group
+ASM     CONNECTED        12.1.0.1.0          12.1.0.1.0  +ASM1          DATA
cdbrac   CONNECTED        12.1.0.1.0          12.1.0.0.0  cdbrac1        DATA

전체 인스턴스(클러스터 내)의 클라이언트 조회하기
SQL> SELECT * FROM GV$ASM_CLIENT;

INST_ID GROUP_NUMBER INSTANCE_NAME    DB_NAME  STATUS     SOFTWARE_VERSION COMPATIBLE_VER     CON_ID
------- ------------ ---------------- -------- ---------- ---------------- -------------- ----------
      1            1 +ASM1            +ASM     CONNECTED  12.1.0.1.0       12.1.0.1.0              0
      1            1 cdbrac1          cdbrac   CONNECTED  12.1.0.1.0       12.1.0.0.0              0
      1            0 +APX1            +APX     CONNECTED  12.1.0.1.0       12.0.0.0.0              0
      2            1 +ASM2            +ASM     CONNECTED  12.1.0.1.0       12.1.0.1.0              0
      2            1 cdbrac2          cdbrac   CONNECTED  12.1.0.1.0       12.1.0.0.0              0
      2            0 +APX2            +APX     CONNECTED  12.1.0.1.0       12.0.0.0.0              0


ASM에 대한 원격 접속 실습하기

기존에는 ASM의 인스턴스에 Local을 통해서만 접속하였으므로, 원격으로 접속을 수행하지 않았다. 12c 버전부터는 원격으로 SQL*Plus에서 ASM 인스턴스에 접속을 수행하는 것이 가능해졌다. 여기에서는 2번 노드의 데이터베이스 클라이언트 프로그램에서 원격으로 1번 ASM 인스턴스에 접속하는 실습을 수행할 것이다.

ASM 인스턴스에 대한 리스너 등록하기
1번 노드의 tnsnames.ora를 oracle 혹은 root 계정으로 연다.
[grid@oel5-12c-rac1 ~]$ su
Password:
[root@oel5-12c-rac1 grid]# vi /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora

해당 tnsnames.ora에 ASM 서비스를 등록한다.
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

CDBRAC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel5-12c-scan.kr.oracle.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdbrac)
    )
  )

pdb1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel5-12c-scan.kr.oracle.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )

+ASM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel5-12c-scan.kr.oracle.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = +ASM)
    )

원격 접속 수행
이제 2번 노드의 oracle 계정으로 12c 데이터베이스 SQL*Plus 클라이언트를 통해 원격 접속을 시도한다.
[oracle@oel5-12c-rac2 ~]$ hostname
oel5-12c-rac2.kr.oracle.com
[oracle@oel5-12c-rac2 ~]$ . oraenv
ORACLE_SID = [oracle] ? cdbrac
The Oracle base has been set to /u01/app/oracle
[oracle@oel5-12c-rac2 ~]$ sqlplus sys@\"oel5-12c-rac1.kr.oracle.com:1521/+ASM\" as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 04:44:25 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
+ASM1


ASM 계정에 대한 패스워드 파일 관리하기

기존 데이터베이스에서 접속을 수행하기 위해서 필요하던 패스워드 파일이, ASM이 12c 버전부터는 Flex ASM으로 원격 접속이 가능하도록 변경되면서 동일한 매커니즘이 생성되었다.  이 파일은 클러스터 내의 공유 디스크에 공유되어 어느 클러스터 노드에서도 권한이 있는 경우 접근 및 변경이 가능하도록 하여 파일이 중복되거나 예상치 못한 변경을 방지하게 된다. 이는 처음에 Flex ASM을 사용하면 생성되지만, 변경 역시 가능하다.

패스워드 파일 정보 조회하기
패스워드 파일의 위치는 다음과 같이 조회할 수 있다.
[grid@oel5-12c-rac1 ~]$ srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/ASM/orapwasm
ASM listener: LISTENER
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM



패스워드 파일 변경
패스워드 파일은 다음과 같이 변경할 수 있다.
[grid@oel5-12c-rac1 ~]$ orapwd file='+data/ASM/orapwasm_new' asm=y

Enter password for SYS:

패스워드 파일 변경 결과 확인
다시 결과를 확인하여 정상적으로 변경되었는지 확인한다.
[grid@oel5-12c-rac1 ~]$ srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/ASM/orapwasm_new
ASM listener: LISTENER
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM



Failover 테스트

12c 버전부터는 ASM 인스턴스에 장애가 발생하면, 해당 ASM에 붙어 있던 다른 데이터베이스 인스턴스 등이 자동적으로 Failover하게 된다. 이에 대한 테스트를 진행할 것이다.

srvctl stop asm -force로 ASM Instance 강제 종료 수행시 Failover

전체 상태 확인

SQL> SELECT * FROM GV$ASM_CLIENT;

INST_ID GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
---------- ------------ -------------- -------- ------------ -------------- -------------- ----------
         1            1 +ASM1          +ASM     CONNECTED    12.1.0.1.0     12.1.0.1.0              0
         1            1 cdbrac1        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
         1            0 +APX1          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0
         2            1 +ASM2          +ASM     CONNECTED    12.1.0.1.0     12.1.0.1.0              0
         2            1 cdbrac2        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
         2            0 +APX2          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0

1번 ASM 인스턴스 강제 종료 수행
[grid@oel5-12c-rac1 ~]$ srvctl stop asm -n oel5-12c-rac1 -force
[grid@oel5-12c-rac1 ~]$ srvctl status asm
ASM is running on oel5-12c-rac2

2번 ASM 인스턴스 상태 확인
[grid@oel5-12c-rac2 ~]$ . oraenv
ORACLE_SID = [+ASM2] ?
The Oracle base remains unchanged with value /u01/app/grid
[grid@oel5-12c-rac2 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 05:47:02 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SELECT * FROM V$ASM_CLIENT;

GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
------------ -------------- -------- ------------ -------------- -------------- ----------
           1 +ASM2          +ASM     CONNECTED    12.1.0.1.0     12.1.0.1.0              0
           1 cdbrac1        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           1 cdbrac2        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           0 +APX2          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0

1번 ASM 인스턴스 재구동 후 상태 확인
다시 1번 노드의 ASM 인스턴스를 구동한 후 어떠한 변화가 일어나는지 확인하고자 한다.
[grid@oel5-12c-rac1 ~]$ srvctl start asm -n oel5-12c-rac1
[grid@oel5-12c-rac1 ~]$ srvctl status asm
ASM is running on oel5-12c-rac2,oel5-12c-rac1
[grid@oel5-12c-rac1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 05:55:43 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SELECT * FROM V$ASM_CLIENT;

GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
------------ -------------- -------- ------------ -------------- -------------- ----------
           0 +APX1          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0

결과적으로 아무런 변화가 없는 것을 확인할 수 있는데, 이는 Failover 된 것에 대해 자동적으로 다시 Relocate 되지 않는다는 것을 알려준다.

2번 ASM 인스턴스에서 Relocate 작업 수행
[grid@oel5-12c-rac2 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 05:47:02 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> ALTER SYSTEM RELOCATE CLIENT 'cdbrac1:cdbrac';

System altered.

1번 노드에서 상태 재확인
[grid@oel5-12c-rac1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 06:12:23 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SELECT * FROM V$ASM_CLIENT;

GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
------------ -------------- -------- ------------ -------------- -------------- ----------
           1 cdbrac1        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           0 +APX1          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0


SHUTDOWN ABORT로 ASM Instance 강제 종료 수행시 Failover

1번 노드에서 SHUTDOWN ABORT 수행

[grid@oel5-12c-rac1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 06:12:23 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SHUTDOWN ABORT
ASM instance shutdown

2번 노드에서 상태 확인
[grid@oel5-12c-rac2 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 3 06:12:23 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> select * from v$asm_client;

GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
------------ -------------- -------- ------------ -------------- -------------- ----------
           1 +ASM2          +ASM     CONNECTED    12.1.0.1.0     12.1.0.1.0              0
           1 cdbrac2        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           0 +APX2          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0

SQL> /

GROUP_NUMBER INSTANCE_NAME  DB_NAME  STATUS       SOFTWARE_VERSI COMPATIBLE_VER     CON_ID
------------ -------------- -------- ------------ -------------- -------------- ----------
           1 +ASM2          +ASM     CONNECTED    12.1.0.1.0     12.1.0.1.0              0
           1 cdbrac1        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           1 cdbrac2        cdbrac   CONNECTED    12.1.0.1.0     12.1.0.0.0              0
           0 +APX2          +APX     CONNECTED    12.1.0.1.0     12.0.0.0.0              0
2번 노드에서 일정 시간이 지난 후에 자동적으로 Failover가 수행되는 것을 확인할 수 있다.



Carnality 수정하기 (3노드)

Flex ASM은 기본적으로 카디널리티를 3으로 제공한다. 이를 변경하는 등의 실습을 수행하기 위해 노두를 추가하여 3노드로 실습을 수행하였다.

현재 카디널리티 설정 확인하기
[grid@oel5-12c-rac1 ~]$ srvctl config asm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM
[grid@oel5-12c-rac1 ~]$ srvctl status asm
ASM is running on oel5-12c-rac2,oel5-12c-rac1,oel5-12c-rac3
ASM instance count를 통해, 현재 카디널리티 값이 3임을 확인할 수 있다.

카디널리티 설정 변경하기
[grid@oel5-12c-rac1 ~]$ srvctl modify asm -count 1
[grid@oel5-12c-rac1 ~]$ srvctl config asm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 1
Cluster ASM listener: ASMNET1LSNR_ASM
[grid@oel5-12c-rac1 ~]$ srvctl status asm
ASM is running on oel5-12c-rac1
카디널리티 설정을 1로 변경하면, 자동적으로 2개의 노드에서 ASM 인스턴스가 종료됨을 확인할 수 있다.

카디널리티 위반 시도하기
grid@oel5-12c-rac3 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM3
The Oracle base has been set to /u01/app/grid
[grid@oel5-12c-rac3 ~]$ srvctl start asm -n oel5-12c-rac3
PRCR-1013 : Failed to start resource ora.asm
PRCR-1064 : Failed to start resource ora.asm on node oel5-12c-rac3
CRS-2552: There are no available instances of resource 'ora.asm' to start.
3번 노드에서 강제로 ASM 인스턴스를 구동하고자 시도하면, 실행할 수 없다는 메세지를 출력한다.

카디널리티 설정 값 증가하기
[grid@oel5-12c-rac3 ~]$ srvctl modify asm -count 2
[grid@oel5-12c-rac3 ~]$ srvctl status asm
ASM is running on oel5-12c-rac1
카디널리티 값을 줄일 때는 자동적으로 카디널리티 이상의 인스턴스 수를 종료했지만, 반대의 경우에는 자동적으로 인스턴스가 구동되지 않음을 확인할 수 있다.

[grid@oel5-12c-rac3 ~]$ srvctl start asm -n oel5-12c-rac3
[grid@oel5-12c-rac3 ~]$ srvctl status asm
ASM is running on oel5-12c-rac1,oel5-12c-rac3
위와 같이 수동으로 ASM 인스턴스를 구동해주어야 한다. 또한, 위에서 실습한 것과 마찬가지로, 데이터베이스 인스턴스의 Relocate 역시 수동으로 수행해야 한다.