Oracle Cloud: Real Application Clusters（RAC）作成してみてみた

# ■ 目的
Real Application Clusters（RAC）は、2台以上の個々のコンピュータを連結し、1台のコンピュータとして機能するテクノロジです。
クラスタ・ノードの1台に障害が発生したり、オフラインにされた場合でも、残りのクラスタ・ノードで処理を続行するため、RACデータベース全体は使用可能なままです。
つまり、2台以上のコンピュータが、1台のより強力なコンピュータのように動作します。
また、OCIのRACは複数ノードが複数のFalt Domainに分散配置された高可用性構成となります。
ということでやってみてみます


# ■ 構成
<img width="878" alt="構成図.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ad495432-4f74-c3d0-0068-3882ca22b020.png">
Network要件等はマニュアルを参照
   ・[DBシステムのネットワーク設定](https://docs.oracle.com/cd/E97706_01/Content/Database/Tasks/network.htm)
   ・[データベースのバックアップ](https://docs.oracle.com/cd/E97706_01/Content/Database/Tasks/backingup.htm)


# ■ RAC作成
## ● DB情報入力
<img width="862" alt="01_RAC作成01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/96efeb2c-1f6f-ba59-0d38-9af469579efc.png">
<img width="860" alt="02_RAC作成02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/cf35a6ef-fbc6-001d-8635-d39c8bfdabb7.png">
<img width="858" alt="03_RAC作成03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d6b4f241-1d6f-ffb6-4ab0-2f178344c20b.png">

## ● データベース情報入力
<img width="859" alt="04_RAC作成_DB情報04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1ef1f706-0701-d681-c84b-97b6e9c85762.png">
<img width="858" alt="05_RAC作成_DB情報05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c06341f6-d498-be98-5f92-12b18df9d038.png">



# ■ RAC作成確認
・RAC情報確認
<img width="1117" alt="01_RAC画面01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/71ffd831-ab4e-abd6-49bd-c7282fdde668.png">

・データベース(CDB)情報確認
<img width="1114" alt="02_RAC画面_DB01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ee0691cc-cf9d-44cf-bf56-b1ddc94f1f06.png">

・ノード情報確認
<img width="1113" alt="03_RAC画面_Node02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3207f14c-4981-85a2-1e78-f3f256e818fa.png">



## ● OSユーザー確認

```shell-session
[opc@rac19c1 ~]# uname -a
    Linux rac19c1 4.1.12-124.27.1.el7uek.x86_64 #2 SMP Mon May 13 08:56:17 PDT 2019 x86_64 x86_64 x86_64 GNU/Linux
[opc@rac19c1 ~]# cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 7.5 (Maipo)

[opc@rac19c1 ~]$ id -a
    uid=54322(opc) gid=54323(opc) groups=54323(opc)

[opc@rac19c1 ~]$ sudo su - oracle

[oracle@rac19c1 ~]$ id -a
    uid=101(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dbaoper),1003(dba),1006(asmdba)

[oracle@rac19c1 ~]$ env | grep ORA
    ORACLE_UNQNAME=cdb01_nrt1t4
    ORACLE_SID=cdb011
    ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
```

## ● 環境変数確認確認
GRID_HOMEにはパスが通ってないので、必要に応じて設定

```shell-session
[oracle@rac19c1 ~]$ cat .bashrc
    # .bashrc

    # Source global definitions
    if [ -f /etc/bashrc ]; then
    . /etc/bashrc
    fi

    # Uncomment the following line if you don't like systemctl's auto-paging feature:
    # export SYSTEMD_PAGER=

    # User specific aliases and functions
    ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1; export ORACLE_HOME
    PATH=$PATH:/u01/app/oracle/product/19.0.0.0/dbhome_1/bin; export PATH
    PATH=$PATH:/u01/app/19.0.0.0/grid/bin; export PATH
    LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0.0/dbhome_1/lib; export LD_LIBRARY_PATH
    ORACLE_UNQNAME=cdb01_nrt1t4;export ORACLE_UNQNAME
    ORACLE_SID=cdb011; export ORACLE_SID
```

## ● RACリソース稼働確認

```shell-session
[oracle@rac19c1 ~]$ /u01/app/19.0.0.0/grid/bin/crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.COMMONSTORE.advm
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    ora.LISTENER.lsnr
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    ora.chad
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    ora.data.commonstore.acfs
                ONLINE  ONLINE       rac19c1                  mounted on /opt/orac
                                                                le/dcs/commonstore,S
                                                                TABLE
                ONLINE  ONLINE       rac19c2                  mounted on /opt/orac
                                                                le/dcs/commonstore,S
                                                                TABLE
    ora.net1.network
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    ora.ons
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    ora.proxy_advm
                ONLINE  ONLINE       rac19c1                  STABLE
                ONLINE  ONLINE       rac19c2                  STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
        1        ONLINE  ONLINE       rac19c1                  STABLE
        2        ONLINE  ONLINE       rac19c2                  STABLE
    ora.DATA.dg(ora.asmgroup)
        1        ONLINE  ONLINE       rac19c1                  STABLE
        2        ONLINE  ONLINE       rac19c2                  STABLE
    ora.LISTENER_SCAN1.lsnr
        1        ONLINE  ONLINE       rac19c2                  STABLE
    ora.LISTENER_SCAN2.lsnr
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.LISTENER_SCAN3.lsnr
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.RECO.dg(ora.asmgroup)
        1        ONLINE  ONLINE       rac19c1                  STABLE
        2        ONLINE  ONLINE       rac19c2                  STABLE
    ora.asm(ora.asmgroup)
        1        ONLINE  ONLINE       rac19c1                  Started,STABLE
        2        ONLINE  ONLINE       rac19c2                  Started,STABLE
    ora.asmnet1.asmnetwork(ora.asmgroup)
        1        ONLINE  ONLINE       rac19c1                  STABLE
        2        ONLINE  ONLINE       rac19c2                  STABLE
    ora.cdb01_nrt1t4.db
        1        ONLINE  ONLINE       rac19c1                  Open,HOME=/u01/app/o
                                                                racle/product/19.0.0
                                                                .0/dbhome_1,STABLE
        2        ONLINE  ONLINE       rac19c2                  Open,HOME=/u01/app/o
                                                                racle/product/19.0.0
                                                                .0/dbhome_1,STABLE
    ora.cvu
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.qosmserver
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.rac19c1.vip
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.rac19c2.vip
        1        ONLINE  ONLINE       rac19c2                  STABLE
    ora.scan1.vip
        1        ONLINE  ONLINE       rac19c2                  STABLE
    ora.scan2.vip
        1        ONLINE  ONLINE       rac19c1                  STABLE
    ora.scan3.vip
        1        ONLINE  ONLINE       rac19c1                  STABLE
    --------------------------------------------------------------------------------
```

# ■ Database確認
デフォルトで作成されるDatabaseはデモDBという位置付けのため、本番利用できない内容になっています。
ということで最低、REDOログ、DataファイルのサイズやSPFILEの初期化パラメータを適宜調整します。

## ● sqlplus接続
```sql
[oracle@rac19c1 ~]$ sqlplus / as sysdba

    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 14 22:25:27 2019
    Version 19.3.0.0.0

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


    Connected to:
    Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
```

## ● データファイル確認
```sql
SQL> col FILE_NAME format a70
SQL> col TABLESPACE_NAME format a10
SQL> set lin 200 pages 1000
SQL> SELECT 
    a.TABLESPACE_NAME 
    ,a.BYTES/1024/1024 as "Size(MB)"
    ,a.FILE_NAME
    ,a.autoextensible as "Auto_Extent"
    ,a.increment_by * (select VALUE from v$parameter where NAME='db_block_size') /1024 as "Auto_Extent_Size(MB)"
    ,b.MAX_SIZE/1024/1024 as "MAX_SIZE(MB)"
    ,b.BLOCK_SIZE
    ,b.BIGFILE
FROM DBA_DATA_FILES a
    , DBA_TABLESPACES b
WHERE a.TABLESPACE_NAME=b.TABLESPACE_NAME
union all
SELECT 
    x.TABLESPACE_NAME 
    ,x.BYTES/1024/1024 as "Size(MB)"
    ,x.FILE_NAME
    ,x.autoextensible as "Auto_Extent"
    ,x.increment_by * (select VALUE from v$parameter where NAME='db_block_size') /1024 as "Auto_Extent_Size(MB)"
    ,y.MAX_SIZE/1024/1024 as "MAX_SIZE(MB)"
    ,y.BLOCK_SIZE
    ,y.BIGFILE
FROM dba_temp_files x
    , DBA_TABLESPACES y
WHERE x.TABLESPACE_NAME=y.TABLESPACE_NAME  
ORDER By TABLESPACE_NAME
;

    TABLESPACE   Size(MB) FILE_NAME 							     Aut Auto_Extent_Size(MB) MAX_SIZE(MB) BLOCK_SIZE BIG
    ---------- ---------- ---------------------------------------------------------------------- --- -------------------- ------------ ---------- ---
    SYSAUX		 1610 +DATA/CDB01_NRT1T4/DATAFILE/sysaux.261.1014777807 		     YES		10240	      2048	 8192 NO
    SYSTEM		  920 +DATA/CDB01_NRT1T4/DATAFILE/system.260.1014777769 		     YES		10240	      2048	 8192 NO
    TEMP		   43 +DATA/CDB01_NRT1T4/TEMPFILE/temp.263.1014777927			     YES		  640	      2048	 8192 NO
    UNDOTBS1	   85 +DATA/CDB01_NRT1T4/DATAFILE/undotbs1.262.1014777825		     YES		 5120	      2048	 8192 NO
    UNDOTBS2	   50 +DATA/CDB01_NRT1T4/DATAFILE/undotbs2.268.1014778247		     YES		25600	      2048	 8192 NO
    USERS		    5 +DATA/CDB01_NRT1T4/DATAFILE/users.275.1014779225			     YES		 1280	      2048	 8192 NO

    6 rows selected.
```

## ● REDO確認

```sql
col MEMBER format a60
SELECT 
    b.THREAD#
    ,b.MEMBERS
    ,a.GROUP#
    ,b.SEQUENCE#
    ,a.MEMBER
    ,b.bytes/1024/1024 as "Bytes(MB)"
    ,a.TYPE
    ,b.STATUS
    ,b.ARCHIVED
FROM
    v$logfile a
    ,v$log b
WHERE
    a.GROUP#=b.GROUP#
    ORDER BY 1,2,3
;
    THREAD#    MEMBERS	  GROUP#  SEQUENCE# MEMBER							  Bytes(MB) TYPE    STATUS	     ARC
    ---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ------- ---------------- ---
        1	    1	       1	 39 +RECO/CDB01_NRT1T4/ONLINELOG/group_1.257.1014777905 	       1024 ONLINE  CURRENT	     NO
        1	    1	       2	 38 +RECO/CDB01_NRT1T4/ONLINELOG/group_2.258.1014777905 	       1024 ONLINE  INACTIVE	     YES
        2	    1	       3	 37 +RECO/CDB01_NRT1T4/ONLINELOG/group_3.259.1014778529 	       1024 ONLINE  INACTIVE	     YES
        2	    1	       4	 38 +RECO/CDB01_NRT1T4/ONLINELOG/group_4.260.1014778537 	       1024 ONLINE  CURRENT	     NO
```


## ● 初期化パラメータ確認

```sql
SQL> create pfile='/tmp/init.ora' from spfile;

    File created.

SQL> host cat /tmp/init.ora
    *._datafile_write_errors_crash_instance=false
    *._db_writer_coalesce_area_size=16777216
    *._disable_interface_checking=TRUE
    *._enable_numa_support=FALSE
    *._file_size_increase_increment=2143289344
    *._fix_control='18960760:on'
    *._gc_policy_time=20
    *._gc_undo_affinity=TRUE
    *.audit_file_dest='/u01/app/oracle/admin/cdb01_nrt1t4/adump'
    *.audit_sys_operations=TRUE
    *.audit_trail='db'
    *.cluster_database=true
    *.compatible='19.0.0.0'
    *.control_file_record_keep_time=38
    *.control_files='+RECO/CDB01_NRT1T4/CONTROLFILE/current.256.1014777901'
    *.control_management_pack_access='DIAGNOSTIC+TUNING'
    *.cpu_count=0
    *.cursor_sharing='EXACT'
    *.db_block_checking='FULL'
    *.db_block_checksum='FULL'
    *.db_block_size=8192
    *.db_create_file_dest='+DATA'
    *.db_create_online_log_dest_1='+RECO'
    *.db_domain='publicsubnet01.vcn172160016.oraclevcn.com'
    *.db_files=1024
    *.db_lost_write_protect='TYPICAL'
    *.db_name='cdb01'
    *.db_recovery_file_dest='+RECO'
    *.db_recovery_file_dest_size=255g
    *.db_unique_name='cdb01_nrt1t4'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=cdb01XDB)'
    *.enable_ddl_logging=TRUE
    *.enable_pluggable_database=true
    *.encrypt_new_tablespaces='CLOUD_ONLY'
    *.fast_start_mttr_target=300
    *.filesystemio_options='setall'
    *.global_names=TRUE
    *.inmemory_size=0m
    family:dw_helper.instance_mode='read-only'
    cdb011.instance_number=1
    cdb012.instance_number=2
    *.local_listener='-oraagent-dummy-'
    *.log_archive_format='%t_%s_%r.dbf'
    *.log_buffer=16777216
    *.nls_language='AMERICAN'
    *.nls_territory='AMERICA'
    *.open_cursors=1000
    *.os_authent_prefix='ops$'
    *.parallel_execution_message_size=16384
    *.parallel_threads_per_cpu=2
    *.pga_aggregate_limit=30720m
    *.pga_aggregate_target=15360m
    *.processes=400
    *.remote_login_passwordfile='exclusive'
    *.sec_case_sensitive_logon=FALSE
    *.session_cached_cursors=100
    *.sga_target=7680m
    *.spatial_vector_acceleration=TRUE
    *.sql92_security=TRUE
    cdb012.thread=2
    cdb011.thread=1
    *.undo_retention=900
    cdb011.undo_tablespace='UNDOTBS1'
    cdb012.undo_tablespace='UNDOTBS2'
    *.use_large_pages='only'
```

# ■ REDOログ設定(サイズ変更とGroup追加)
デフォルトはサイズ1G、各ThreadノードGroup 2つ
少ないので、サイズ変更と各Threadノード 4 Group構成にしてみてみます
REDOは動的にサイズ変更できないので、全削除して作り直しをします

## ● 手順概要
    ① 新規REDO THREAD 1 GROUP 11 ~ 14 追加
    ② 新規REDO THREAD 2 GROUP 21 ~ 22 追加
    ③ 既存REDO THREAD 1 GROUP 1, 2 削除
    ④ 既存REDO THREAD 2 GROUP 3, 4 削除

## ● THREAD 1 GROUP 11 ~ 14 追加

```sql
SQL> ALTER DATABASE  ADD LOGFILE THREAD 1 GROUP 11  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 1 GROUP 12  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 1 GROUP 13  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 1 GROUP 14  SIZE 10G ;
```

## ● THREAD 2 GROUP 21 ~ 22 追加

```sql
SQL> ALTER DATABASE  ADD LOGFILE THREAD 2 GROUP 21  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 2 GROUP 22  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 2 GROUP 23  SIZE 10G ;
SQL> ALTER DATABASE  ADD LOGFILE THREAD 2 GROUP 24  SIZE 10G ;
```

## ● 既存REDO削除　
削除するREDOはSTATUS= INACTIVEにする必要があります
REDOのSTATUS= INACTIVEになるようにlogスイッチ を実行

```sql
SQL> alter system archive log current;
    System altered.
```

STATUSがACTIVEのままでINACTIVEになかなかならない場合チェックポイントします

```sql
SQL> alter system checkpoint;
```

## ● 既存THREAD 1 GROUP 1, 2 削除

```sql
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
```

## ● 既存THREAD 2 GROUP 3, 4 削除

```sql
SQL> alter database drop logfile group 3;
SQL> alter database drop logfile group 4;
```


## ● REDO作成確認

```sql
SQL> SELECT 
    b.THREAD#
    ,b.MEMBERS
    ,a.GROUP#
    ,b.SEQUENCE#
    ,a.MEMBER
    ,b.bytes/1024/1024 as "Bytes(MB)"
    ,a.TYPE
    ,b.STATUS
    ,b.ARCHIVED
FROM
    v$logfile a
    ,v$log b
WHERE
    a.GROUP#=b.GROUP#
    ORDER BY 1,2,3
;

    THREAD#    MEMBERS	  GROUP#  SEQUENCE# MEMBER							  Bytes(MB) TYPE    STATUS	     ARC
    ---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ------- ---------------- ---
        1	    1	      11	 54 +RECO/CDB01_NRT1T4/ONLINELOG/group_11.332.1016285139	      10240 ONLINE  INACTIVE	     YES
        1	    1	      12	 55 +RECO/CDB01_NRT1T4/ONLINELOG/group_12.333.1016285231	      10240 ONLINE  CURRENT	     NO
        1	    1	      13	  0 +RECO/CDB01_NRT1T4/ONLINELOG/group_13.334.1016285453	      10240 ONLINE  UNUSED	     YES
        1	    1	      14	  0 +RECO/CDB01_NRT1T4/ONLINELOG/group_14.335.1016285539	      10240 ONLINE  UNUSED	     YES
        2	    1	      21	 50 +RECO/CDB01_NRT1T4/ONLINELOG/group_21.336.1016285625	      10240 ONLINE  INACTIVE	     YES
        2	    1	      22	 51 +RECO/CDB01_NRT1T4/ONLINELOG/group_22.337.1016285711	      10240 ONLINE  CURRENT	     NO
        2	    1	      23	  0 +RECO/CDB01_NRT1T4/ONLINELOG/group_23.338.1016285799	      10240 ONLINE  UNUSED	     YES
        2	    1	      24	  0 +RECO/CDB01_NRT1T4/ONLINELOG/group_24.339.1016285885	      10240 ONLINE  UNUSED	     YES

    8 rows selected.
```


## ● logスイッチ動作確認
logスイッチ を実行して一回りしてもエラーでないことを確認しておきます

```sql
SQL> alter system archive log current;
    System altered.
```


## ● DB_RECOVERY_FILE_DEST_SIZE 設定
db_recovery_file_dest_size 領域が大きすぎて不要なARCHIVE REDOファイル削除できなくならないように調整します。

### 1) RECO ASM Disk容量確認
```
[grid@rac19c1 ~]$ asmcmd lsdg
	State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
	MOUNTED  EXTERN  N         512             512   4096  4194304    262144   242664                0          242664              0             Y  DATA/
	MOUNTED  EXTERN  N         512             512   4096  4194304    262144   217452                0          217452              0             N  RECO/

[grid@rac19c1 ~]$ asmcmd ls RECO/CDB_TOKYO
	ARCHIVELOG/
	AUTOBACKUP/
	BACKUPSET/
	CONTROLFILE/
	FLASHBACK/
	ONLINELOG/

[grid@db-tokyo1 ~]$ asmcmd du RECO/CDB_TOKYO/CONTROLFILE/
	Used_MB      Mirror_used_MB
		64                  64

[grid@db-tokyo1 ~]$ asmcmd du RECO/CDB_TOKYO/ONLINELOG/
	Used_MB      Mirror_used_MB
	14448               14448
```

### 2) db_recovery_file_dest_size設定
RECOのASM Diskサイズは 262144MB なので、ARCHIVELOG/とFLASHBACK/用に必要なサイズを計算してdb_recovery_file_dest_size を設定ます。

```:SQL
SQL> alter system set db_recovery_file_dest_size=200G scope=BOTH;

	System altered.

SQL> show parameter db_recover

	NAME				     TYPE	 VALUE
	------------------------------------ ----------- ------------------------------
	db_recovery_file_dest		     string	 +RECO
	db_recovery_file_dest_size	     big integer 200G
```


# ■ ACFS領域確認とサイズ変更
Oracle ACFS（ASM Cluster File System）は、POSIX、X/OPEN、およびWindowsに準拠した業界標準のクラスタ・ファイル・システムで複数のノードからアクセスできる共有ファイルシステムで、expdp/impdp,バッチやデータ・ロード用途のファイル配置場所として使用します
ACFSの管理コマンドとしてacfsutilがあり、ファイルシステムを動的拡張することができ、18c以降ではファイル・システムのサイズを縮小することもできます
　・ACFSホワイトペーパ: [Oracle ACFS 18c ASM Cluster File System](https://www.oracle.com/technetwork/jp/database/database-technologies/cloud-storage/acfs/overview/acfs-wp-18c-4395032-ja.pdf)
　・Oracle Automatic Storage Management 管理者ガイド19c: [acfsutil size](https://docs.oracle.com/cd/F19136_01/ostmg/acfs-commands-utilities.html#GUID-79A8333D-4E1C-4788-944D-EC86E4278C00)
ということで、データ移行用途でデータ・ポンプのdumpファイルを配置する場合、容量が足りないことがあるので、拡張してみてみます

※ 初期利用領域は+DATAのASMディスクが設定されています

## ● ACFSマウントポイントと容量確認

```shell-session
[root@rac19c1 ~]# df -hT | grep acfs
    /dev/asm/commonstore-431           acfs       100G  833M  100G    1% /opt/oracle/dcs/commonstore
```

## ● ACFS +DATAディスク・グループ容量確認

```shell-session
[root@rac19c1 ~]# /sbin/acfsutil info storage
    Diskgroup      Consumer      Space     Size With Mirroring  Usable Free  %Free   Path
    DATA                       1024.00            1024.00         919.46       89%
                COMMONSTORE     100.00             100.00          99.19       99%   /opt/oracle/dcs/commonstore
    RECO                        256.00             256.00         248.91       97%
    ----
    unit of measurement: GB
```

## ● ACFS拡張

```shell-session
[root@rac19c1 ~]# /sbin/acfsutil size 200G /opt/oracle/dcs/commonstore
    acfsutil size: Resizing file system in steps
    acfsutil size: Resizing file system to 0.1133 TB
    acfsutil size: Resizing file system to 0.1289 TB
    acfsutil size: Resizing file system to 0.1445 TB
    acfsutil size: Resizing file system to 0.1602 TB
    acfsutil size: Resizing file system to 0.1758 TB
    acfsutil size: Resizing file system to 0.1914 TB
    acfsutil size: Resizing file system to 0.1953 TB
    acfsutil size: new file system size: 214748364800 (204800MB)
```

## ● ACFS拡張確認

```shell-session
[root@rac19c1 ~]# df -hT | grep acfs
    /dev/asm/commonstore-431           acfs       200G  1.1G  199G    1% /opt/oracle/dcs/commonstore

[root@rac19c1 ~]# /sbin/acfsutil info storage
    Diskgroup      Consumer      Space     Size With Mirroring  Usable Free  %Free   Path
    DATA                       1024.00            1024.00         819.46       80%
                COMMONSTORE     200.00             200.00         198.99       99%   /opt/oracle/dcs/commonstore
    RECO                        256.00             256.00         248.91       97%

    ----
    unit of measurement: GB
```


## ● ACFS縮小

```shell-session
[root@rac19c1 ~]# /sbin/acfsutil size 100G /opt/oracle/dcs/commonstore
    acfsutil size: Resizing file system in steps
    acfsutil size: Resizing file system to 0.1797 TB
    acfsutil size: Resizing file system to 0.1641 TB
    acfsutil size: Resizing file system to 0.1484 TB
    acfsutil size: Resizing file system to 0.1328 TB
    acfsutil size: Resizing file system to 0.1172 TB
    acfsutil size: Resizing file system to 0.1016 TB
    acfsutil size: Resizing file system to 0.0977 TB
    acfsutil size: new file system size: 107374182400 (102400MB)
```

## ● ACFS縮小確認

```shell-session
[root@rac19c1 ~]# df -hT | grep acfs
    /dev/asm/commonstore-431           acfs       100G  940M  100G    1% /opt/oracle/dcs/commonstore
```


# ■ Transparent Application Failover(TAF)接続
透過的アプリケーションフェイルオーバー TAFは接続先のデータベース・インスタンスに障害が発生した場合でも、アプリケーションはデータベースに自動的に再接続でき、
オープン・カーソルもフェッチを続行するのでSELECT文はエラーすることなく処理を続行することができます

## ● TAFクライアント接続設定
TAF接続できるようにクライアントのtnsname.oraを設定します

```shell-session
[oracle@rac19c1 admin]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

CDB01_NRT1T4 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac19c-scan.publicsubnet01.vcn172160016.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = cdb01_nrt1t4.publicsubnet01.vcn172160016.oraclevcn.com)
    )
  )
```

==>次の様にFAILOVER_MODE項目を追加

```shell-session
CDB01_NRT1T4 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac19c-scan.publicsubnet01.vcn172160016.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cdb01_nrt1t4.publicsubnet01.vcn172160016.oraclevcn.com)
      (FAILOVER_MODE = (TYPE = select)(METHOD = basic) )
    )
  )
```

## ● TAF接続動作確認
dba_objectsなど件数の多いテーブルをSELECT中に 接続インスタンスのプロセスをKillしてインスタンス・ダウン障害を発生させ、SELECTが途中でエラーせず処理完了することを確認し、別ノードのインスタンスに接続していることを確認します

**① 接続インスタンス確認**

```sql
SQL> select instance_name from v$instance;

    INSTANCE_NAME
    ----------------
    cdb011
```

**② SELECT文実行**

```sql
SQL> select * from dba_objects;
    ・・・・
```

**③ 接続インスタンス障害実行**
ここではpmonプロセスをkillしてインスタンス障害を発生させます

```shell-session

[root@rac19c1 opc]# ps -ef | grep ora_pmon_cdb011
    oracle   36047     1  0 16:40 ?        00:00:00 ora_pmon_cdb011

[root@rac19c1 opc]# kill -9 36047
```

④SELECT文正終了確認
SELECT文が正常終了したことを確認します

```sql
    ・・・・
    SYS																 SYS_HUB		     DATABASE LINK	     16-JUN-19				     VALID   N N N									       NONE		    N N 												     N N

    73135 rows selected.


SQL>
```

**⑤ 接続インスタンス確認**
v$instanceで接続インスタンスを確認し、SELECT実行した別のインスタンス・ノードへ自動接続フェールオーバーしていることを確認します

```sql
SQL> select instance_name from v$instance;

    INSTANCE_NAME
    ----------------
    cdb012
```


# ■ Application Continuity（AC）
TAFはcommit必要なSQLはフェールオーバーできませんが、Application Continuity（AC）はできます。
ということで、12.2からはACをつかいましょう
　・参考：[Oracle Database: SQL*PlusでApplication Continuity（AC）やってみてみた](https://qiita.com/shirok/items/f9c93da3535bec7d7a72)


# ■ EM Express接続
## ● EM ポート確認

```sql
SQL> select dbms_xdb_config.getHttpsPort() from dual;

    DBMS_XDB_CONFIG.GETHTTPSPORT()
    ------------------------------
                5500
```

## ● EM 起動確認

```sql
SQL> host lsnrctl status | grep HTTP
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=rac19c1.publicsubnet01.vcn172160016.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0.0/dbhome_1/admin/cdb01_nrt1t4/xdb_wallet))(Presentation=HTTP)(Session=RAW))
```

## ● iptables設定
5500ポートアクセスできるようにiptablesを設定します
全RACノードで実施します

**・iptables起動確認**

```sql
[root@rac19c1 init.d]# systemctl status iptables
    ● iptables.service - IPv4 firewall with iptables
    Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
    Active: active (exited) since 日 2019-07-28 01:28:30 UTC; 2 weeks 3 days ago
    Main PID: 4226 (code=exited, status=0/SUCCESS)
    CGroup: /system.slice/iptables.service

    7月 28 01:28:30 localhost systemd[1]: Starting IPv4 firewall with iptables...
    7月 28 01:28:30 localhost iptables.init[4226]: iptables: Applying firewall rules: [  OK  ]
    7月 28 01:28:30 localhost systemd[1]: Started IPv4 firewall with iptables.
```

**・5500ポート設定**

```shell-session
[root@rac19c1 init.d]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5500 -j ACCEPT -m comment --comment "Required for access to EM. "
```

**・iptables設定反映再起動**
※全ノード

```shell-session
[root@rac19c1 init.d]# systemctl restart iptables.service
```

## ● EM Expressアクセス
https://＜RACノードIPアドレス>:5500/em

**・Login情報を入力し、[Log in]をクリック**

    Username: sys
    Password: sysユーザ・パスワード

<img width="998" alt="em01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/dd882c34-51aa-1258-ea38-edcd7e48a198.png">
<img width="1228" alt="em02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/bcad505b-5065-4768-914c-2599c48ae481.png">

# ■ REPORT_PERFHUBファンクション
Enterprise Managerを使用でいない場合、REPORT_PERFHUBファンクションで指定した期間のデータベース・システム全体のコンポジット・アクティブ・パフォーマンス・レポートのHTMLを生成することができます。
・参考：[REPORT_PERFHUBファンクション](https://docs.oracle.com/cd/E57425_01/121/ARPLS/d_perf.htm#BABJDHGB)

```sql
    SQL> set pages 0 linesize 32767 trimspool on trim on long 1000000 longchunksize 10000000
    SQL> spool perfhub_active.html
    SQL> select dbms_perf.report_perfhub(is_realtime=>1,type=>'active') from dual;
    SQL> spool off
        ・・・
        d2QhZDvj63uAZqx9Uaz/4Ibt9nXns6p/jNPVumL0uTXH1b1S7L054Nv15Xp5gv42
        fyD+An46Sr0=
                    </report>
            </report>
        </report>
        <!--FXTMODEL-->
        </script>
        </body>
        </html>
```

<img width="917" alt="名称未設定.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0fcb98c0-846b-10e5-ebd8-b359fdcf1f4f.png">