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

2014년 4월 11일 금요일

NAME Column Null in V$ASM_DISK: Overwriting the ASM disk header


V$ASM_DISK에서 NAME 컬럼에 아무것도 나타나지 않는 경우가 있는데, 이는 다음과 같이 해결한다.

먼저, 자세한 사항을 확인해보면 다음과 같다.
[oracle@rac1 ~]$ . oraenv
ORACLE_SID = [+ASM1] ?
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 9 15:50:31 2014

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> SET LINESIZE 2000
SQL> COL NAME FOR A10
SQL> COL PATH FOR A20
SQL> SELECT GROUP_NUMBER, MOUNT_STATUS, HEADER_STATUS, MODE_STATUS, STATE, NAME, PATH FROM V$ASM_DISK;

GROUP_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME       PATH
------------ ------- ------------ ------- -------- ---------- --------------------
           0 CLOSED  MEMBER       ONLINE  NORMAL              ORCL:DISK01
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK02     ORCL:DISK02
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK03     ORCL:DISK03
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK04     ORCL:DISK04
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK05     ORCL:DISK05
위와 같이 NAME이 없는 데는 MOUNT_STATUS가 CLOSE임을 확인할 수 있다.

먼저, 자세히 알아보기 위해 로그를 띄운다.
[oracle@rac1 trace]$ cd /u01/app/oracle/diag/asm/+asm/+ASM1/trace
[oracle@rac1 trace]$ tail -f alert_+ASM1.log

디스크 그룹을 다시 마운트 하려고 하면 다음과 같은 에러가 나타난다.
SQL> ALTER DISKGROUP DATA MOUNT;
ALTER DISKGROUP DATA MOUNT
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DATA" cannot be mounted
ORA-15013: diskgroup "DATA" is already mounted

로그는 다음과 같다.
SQL> ALTER DISKGROUP DATA MOUNT
WARNING: Disk Group DATA containing spfile for this instance is not mounted
WARNING: Disk Group DATA containing configured OCR is not mounted
WARNING: Disk Group DATA containing voting files is not mounted
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DATA" cannot be mounted
ORA-15013: diskgroup "DATA" is already mounted
ERROR: ALTER DISKGROUP DATA MOUNT
이미 마운트 되어 있다는 결과를 표시한다.

이번에는 디스크를 다시 추가하기 위해 시도한다.
SQL> ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01';
ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk 'ORCL:DISK01' belongs to diskgroup "DATA"

로그는 다음과 같다.
Wed Apr 09 15:55:49 2014
SQL> ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01'
NOTE: GroupBlock outside rolling migration privileged region
NOTE: Assigning number (1,0) to disk (ORCL:DISK01)
NOTE: requesting all-instance membership refresh for group=1
NOTE: Disk DISK01 in mode 0x7f marked for de-assignment
ERROR: ORA-15033 signalled during reconfiguration of diskgroup DATA
Wed Apr 09 15:55:50 2014
NOTE: membership refresh pending for group 1/0xcb087a77 (DATA)
NOTE: Attempting voting file refresh on diskgroup DATA
NOTE: Refresh completed on diskgroup DATA
. Found 3 voting file(s).
Wed Apr 09 15:55:53 2014
GMON querying group 1 at 6 for pid 18, osid 4320
GMON querying group 1 at 7 for pid 18, osid 4320
SUCCESS: refreshed membership for 1/0xcb087a77 (DATA)
ORA-15032: not all alterations performed
ORA-15033: disk 'ORCL:DISK01' belongs to diskgroup "DATA"
ERROR: ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01'
NOTE: Attempting voting file refresh on diskgroup DATA
NOTE: Refresh completed on diskgroup DATA
. Found 3 voting file(s).
이미 있는 디스크라 추가가 불가능하다고 에러를 출력한다.

FORCE 옵션을 주어 시도한다. 그러면 해당 문제가 해결된다.
SQL> ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01' FORCE;

Diskgroup altered.

로그는 다음과 같다.
Wed Apr 09 15:57:24 2014
SQL> ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01' FORCE
NOTE: GroupBlock outside rolling migration privileged region
NOTE: Assigning number (1,0) to disk (ORCL:DISK01)
NOTE: requesting all-instance membership refresh for group=1
NOTE: initializing header on grp 1 disk DISK01
NOTE: requesting all-instance disk validation for group=1
Wed Apr 09 15:57:26 2014
NOTE: skipping rediscovery for group 1/0xcb087a77 (DATA) on local instance.
NOTE: requesting all-instance disk validation for group=1
NOTE: skipping rediscovery for group 1/0xcb087a77 (DATA) on local instance.
Wed Apr 09 15:57:26 2014
GMON updating for reconfiguration, group 1 at 8 for pid 28, osid 5454
NOTE: group 1 PST updated.
NOTE: initiating PST update: grp = 1
GMON updating group 1 at 9 for pid 28, osid 5454
NOTE: PST update grp = 1 completed successfully
NOTE: membership refresh pending for group 1/0xcb087a77 (DATA)
GMON querying group 1 at 10 for pid 18, osid 4320
NOTE: cache opening disk 0 of grp 1: DISK01 label:DISK01
GMON querying group 1 at 11 for pid 18, osid 4320
SUCCESS: refreshed membership for 1/0xcb087a77 (DATA)
SUCCESS: ALTER DISKGROUP DATA ADD DISK 'ORCL:DISK01' FORCE
NOTE: starting rebalance of group 1/0xcb087a77 (DATA) at power 1
Starting background process ARB0
Wed Apr 09 15:57:29 2014
ARB0 started with pid=29, OS id=5950
NOTE: assigning ARB0 to group 1/0xcb087a77 (DATA) with 1 parallel I/O
cellip.ora not found.
Wed Apr 09 15:57:41 2014
NOTE: Attempting voting file refresh on diskgroup DATA
NOTE: Refresh completed on diskgroup DATA
. Found 3 voting file(s).

내부적으로 ASM OPERATION이 일어나는지 확인하면 다음과 같이 리밸런싱 작업이 일어난다.
SQL> SELECT * FROM V$ASM_OPERATION;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
           1 REBAL RUN           1          1        187       1318        467           2

결과적으로는 작업이 마치면 다음과 같이 문제를 해결하게 된다.
SQL> SELECT GROUP_NUMBER, MOUNT_STATUS, HEADER_STATUS, MODE_STATUS, STATE, NAME, PATH FROM V$ASM_DISK;

GROUP_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE    NAME       PATH
------------ ------- ------------ ------- -------- ---------- --------------------
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK01     ORCL:DISK01
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK02     ORCL:DISK02
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK03     ORCL:DISK03
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK04     ORCL:DISK04
           1 CACHED  MEMBER       ONLINE  NORMAL   DISK05     ORCL:DISK05


2014년 1월 16일 목요일

Raw Device in Oracle 12c


<in 11g R2 Manual>

Deprecated in Oracle Database 11g Release 2 (11.2)

The following are not supported or not available anymore with Oracle Database 11g Release 2:
  • Installing data files directly on raw devices is no longer available during installation with Oracle Universal Installer or Database Configuration Assistant. You must use a file system or use Oracle ASM.


<in 12c Manual>

8.1.10.1 About Upgrading Oracle Database Release 10.2 or 11.1 and OCFS and RAW Devices

If you are upgrading an Oracle Database release 10.2.0.5 or release 11.1.0.7 environment that stores Oracle Clusterware files on OCFS on Windows or RAW devices, then you cannot directly upgrade to Oracle Database 12c. You must first perform an interim upgrade to Oracle Database release 11.2 and migrate the Oracle Clusterware files to Oracle Automatic Storage Management (Oracle ASM). Then you can upgrade from release 11.2 to Oracle Database 12c.

8.1.12 Desupport for Raw Storage Devices

Starting with Oracle Database 12c, block file storage on raw devices is not supported. You must migrate any data files stored on raw devices to Oracle ASM, a cluster file system, or Network File System (NFS).
This also affects the OCR and voting files for Oracle Clusterware. You cannot store the OCR or voting files on raw devices. Oracle Clusterware files must be moved to Oracle ASM before upgrading.


문서 상, 11g R2는 Raw Device에 대해 설치시 지원하지 않는다고 되어 있고, 12c에서는 더 이상 아예 지원을 하지 않는다고 명시하고 있다. 아마 12c 환경에서는 Raw Device를 볼 수 없을 듯 하다. 또 다른 편법(?)등을 이용할 수는 있겠지만, 점차 사라져 갈 것이라고 전망한다.

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