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 역시 수동으로 수행해야 한다.




댓글 없음:

댓글 쓰기