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