Oracle Autonomous Databaseに慣れる（３）

本記事は Oracle Autonomous Database 環境のストレージ構成について検証しています。下記の例は Always Free 環境で作成できる AUTONOMOUS TRANSACTION PROSESSION (ATP) インスタンスで実行しています。

# 表領域
## システム表領域
PDB 環境で一般的な表領域が作成されています。特別な表領域として SAMPLESCHEMA があります。これらはサンプル用データが格納されている読み込み専用の表領域です。DATA 表領域はアプリケーションが使用するデフォルト表領域です。DBFS_DATA 表領域も利用できます。

```SQL:
SQL> SELECT TABLESPACE_NAME, BLOCK_SIZE, BIGFILE, EXTENT_MANAGEMENT, ALLOCATION_TYPE, SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES ORDER BY 1;

TABLESPACE_NAME                BLOCK_SIZE BIG EXTENT_MAN ALLOCATIO SEGMEN
------------------------------ ---------- --- ---------- --------- ------
DATA                                 8192 YES LOCAL      SYSTEM    AUTO
DBFS_DATA                            8192 YES LOCAL      SYSTEM    AUTO
SAMPLESCHEMA                         8192 YES LOCAL      SYSTEM    AUTO
SYSAUX                               8192 YES LOCAL      SYSTEM    AUTO
SYSTEM                               8192 YES LOCAL      SYSTEM    MANUAL
TEMP                                 8192 YES LOCAL      UNIFORM   MANUAL
UNDOTBS1                             8192 YES LOCAL      SYSTEM    MANUAL
UNDO_2                               8192 YES LOCAL      SYSTEM    MANUAL

8 rows selected.
```

UNDO 表領域が２つありますが、初期化パラメーターundo_tablespaceに指定されている表領域はUNDO_2です。

```SQL:
SQL> SHOW PARAMETER UNDO_TABLESPACE;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDO_2
```

データファイルは自動拡張が有効になっていますが、最大サイズはOracle Cloudホームページからデータベース作成時に指定した値とは異なります。容量制限は標準とは別の仕組みを使っているようです。

```SQL:
SQL> SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 MB, AUTOEXTENSIBLE, MAXBYTES/1024/1024 MAXMB, INCREMENT_BY FROM DBA_DATA_FILES ORDER BY 1;

TABLESPACE_NAME                FILE_NAME                                                                                     MB AUT      MAXMB INCREMENT_BY
------------------------------ ------------------------------------------------------------------------------------- ---------- --- ---------- ------------
DATA                           +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/data.738.1033355929                 100 YES   33554432       262144
DBFS_DATA                      +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/dbfs_data.2341.1033355929           100 YES   33554432       262144
SAMPLESCHEMA                   +DATA/sampleschema_dbf                                                                    204800 YES   33554432      1310720
SYSAUX                         +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/sysaux.743.1033355929           2659.25 YES   33554432         1280
SYSTEM                         +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/system.2795.1033355929             1341 YES   33554432         1280
UNDOTBS1                       +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/undotbs1.740.1033355929             470 YES       1024       262144
UNDO_2                         +DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/undo_2.1888.1033952725             1024 YES       1024       262144

7 rows selected.
```

## 表領域の追加と拡張
ADMINユーザーは表領域を追加できませんが、データファイルの拡張は実行できます。

```SQL:
SQL> CREATE TABLESPACE DATA2 DATAFILE 'data2.dbf' SIZE 100M ;
CREATE TABLESPACE DATA2 DATAFILE 'data2.dbf' SIZE 100M
*
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> ALTER DATABASE DATAFILE '+DATA/{db_name}/9F730FB9A471BE4AE0531910000A07C7/DATAFILE/data.738.1033355929' RESIZE 200M;

Database altered.
```

## オブジェクトの作成と表領域
テーブル、インデックス、マテリアライズド・ビューは表領域に保存されるオブジェクトです。ATPでは表領域を指定するTABLESPACE句は無視されます。

```SQL:
SQL> CREATE TABLE data1(c1 NUMBER, c2 VARCHAR2(10)) TABLESPACE notExists;

Table created.

SQL> SELECT TABLESPACE_NAME FROM USER_TABLES WHERE TABLE_NAME='DATA1';

TABLESPACE_NAME
------------------------------
DATA
```

表領域だけでなく、索引構成表、ロギング設定、物理構成（STORAGE句）等も無視されます。

```SQL:
SQL> CREATE TABLE data1(c1 NUMBER PRIMARY KEY, c2 VARCHAR2(10)) ORGANIZATION INDEX NOLOGGING;

Table created.

SQL> SELECT TABLE_NAME, LOGGING, IOT_TYPE FROM USER_TABLES WHERE TABLE_NAME='DATA1';

TABLE_NAME                     LOG IOT_TYPE
------------------------------ --- ------------
DATA1                          YES
```

## QUOTA制限
ADW には DBMS_CLOUD_ADMIN パッケージに [GRANT_TABLESPACE_QUOTAプロシージャ](https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/dbms-cloud-admin.html#GUID-D76B229E-781E-45C0-9F14-CAF30F9E6E3B) が用意されています。このプロシージャは特定のユーザーに表領域使用量の制限を設けるものですが、CREATE USER 文の QUOTA 句でも同様の操作を行うことができるようです。どちらを使うべきなのかは不明です。

# REDOログ・ファイル
REDO ロググループは 8 グループ、各ファイルは 32GB とかなり大きい設定になっています。ストレージのスループットに自信があるのでしょう。

```SQL:
SQL> SELECT GROUP#,BYTES/1024/1024 MB FROM V$LOG ORDER BY 1;

    GROUP#         MB
---------- ----------
         1      32000
         2      32000
         3      32000
         4      32000
         5      32000
         6      32000
         7      32000
         8      32000

8 rows selected.
```

REDO ログ・メンバーは ASM ディスク・グループの DATA と RECO に分散されています。

```
SQL> SELECT GROUP#, TYPE, MEMBER FROM V$LOGFILE ORDER BY 1;

    GROUP# TYPE    MEMBER
---------- ------- --------------------------------------------------------------------------------
         1 ONLINE  +DATA/{db_name}/ONLINELOG/group_1.277.1018644199
         1 ONLINE  +RECO/{db_name}/ONLINELOG/group_1.261.1018644223
         2 ONLINE  +DATA/{db_name}/ONLINELOG/group_2.278.1018644199
         2 ONLINE  +RECO/{db_name}/ONLINELOG/group_2.260.1018644223
         3 ONLINE  +DATA/{db_name}/ONLINELOG/group_3.283.1018644643
         3 ONLINE  +RECO/{db_name}/ONLINELOG/group_3.262.1018644655
         4 ONLINE  +DATA/{db_name}/ONLINELOG/group_4.284.1018644669
         4 ONLINE  +RECO/{db_name}/ONLINELOG/group_4.263.1018644681
         5 ONLINE  +DATA/{db_name}/ONLINELOG/group_5.3612.1024956949
         5 ONLINE  +RECO/{db_name}/ONLINELOG/group_5.291.1024956961
         6 ONLINE  +DATA/{db_name}/ONLINELOG/group_6.3613.1024956975
         6 ONLINE  +RECO/{db_name}/ONLINELOG/group_6.360.1024956987
         7 ONLINE  +DATA/{db_name}/ONLINELOG/group_7.3614.1024957001
         7 ONLINE  +RECO/{db_name}/ONLINELOG/group_7.354.1024957013
         8 ONLINE  +DATA/{db_name}/ONLINELOG/group_8.3615.1024957027
         8 ONLINE  +RECO/{db_name}/ONLINELOG/group_8.350.1024957039

16 rows selected.

```

# ASM
ATP が使用するストレージは ASM を利用しています。データ用の DATA と、リカバリ情報用の RECO から構成されています。DATA ストレージ・グループは３重化、RECO ディスク・グループは２重化により可用性を高めています。

```SQL:
SQL> SELECT NAME, TOTAL_MB, FREE_MB, TYPE FROM V$ASM_DISKGROUP;

NAME                             TOTAL_MB    FREE_MB TYPE
------------------------------ ---------- ---------- ------
DATA                            269035456  264050040 HIGH
RECO                             67239936   66302952 NORMAL
```

ASM ディスク・グループに使われているディスクは Exadata ストレージ・サーバーを利用しています。
DATA ディスクグループ（GROUP_NUMBER=1)では、7 TB のディスクを、RECO ディスクグループ（GROU_NUMBER=2)では、1.7 TB のディスクを使っています。

```SQL:
SQL> SELECT GROUP_NUMBER, TOTAL_MB, PATH FROM V$ASM_DISK ORDER BY 1;

GROUP_NUMBER   TOTAL_MB PATH
------------ ---------- --------------------------------------------------------------
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_11_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_06_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_02_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_07_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_05_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_04_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_09_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_00_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_03_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_08_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_01_nrt100307exdcl03
           1    7473200 o/192.168.136.6;192.168.136.7/DATAC1_CD_10_nrt100307exdcl03
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_08_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_02_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_03_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_04_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_11_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_07_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_06_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_01_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_09_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_05_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_00_nrt100307exdcl02
           1    7473200 o/192.168.136.4;192.168.136.5/DATAC1_CD_10_nrt100307exdcl02
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_00_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_08_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_02_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_06_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_01_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_07_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_11_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_03_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_05_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_10_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_09_nrt100307exdcl01
           1    7473200 o/192.168.136.2;192.168.136.3/DATAC1_CD_04_nrt100307exdcl01
           1        128 /dev/exadata_quorum/QD_DATA_FE1POD_CLQWF2
           1        128 /dev/exadata_quorum/QD_DATA_FE1POD_CLQWF1
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_06_nrt100307exdcl03
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_02_nrt100307exdcl01
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_09_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_08_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_04_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_05_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_02_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_03_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_07_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_11_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_01_nrt100307exdcl03
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_00_nrt100307exdcl03
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_03_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_11_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_07_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_05_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_00_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_10_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_09_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_08_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_04_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_06_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_01_nrt100307exdcl02
           2    1867776 o/192.168.136.4;192.168.136.5/RECOC1_CD_02_nrt100307exdcl02
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_00_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_01_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_06_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_05_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_04_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_09_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_07_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_11_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_03_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_10_nrt100307exdcl01
           2    1867776 o/192.168.136.2;192.168.136.3/RECOC1_CD_08_nrt100307exdcl01
           2    1867776 o/192.168.136.6;192.168.136.7/RECOC1_CD_10_nrt100307exdcl03

74 rows selected.
```

RECO ディスクグループは制御ファイルのミラー、高速リカバリ領域の配置にも使われています。

```SQL:
SQL> SHOW PARAMETER control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +DATA/{db_name}/CONTROLFILE/current.273.1018644197, +RECO/{db_name}/CONTROLFILE/current.258.1018644197

SQL> SHOW PARAMETER db_recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +RECO
db_recovery_file_dest_size           big integer 32685540M
```

# ログ領域
オペレーティング・システムに出力するファイルの場所は /u02 ディレクトリ以下に集められています。

```SQL:
SQL> SHOW PARAMETER diagnostic_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /u02/app/oracle
SQL>
SQL> SHOW PARAMETER audit_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------------------------
audit_file_dest                      string      /u02/app/oracle/admin/{db_name}/adump
SQL>
SQL> SHOW PARAMETER background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------------------------------
background_dump_dest                 string      /u02/app/oracle/product/18.1.0.0/dbhome_1/rdbms/log
SQL>
SQL> SHOW PARAMETER core_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------------------------------
core_dump_dest                       string      /u02/app/oracle/diag/rdbms/{db_name}/fewf1pod2/cdump
SQL>
SQL> SHOW PARAMETER user_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------------------------------
user_dump_dest                       string      /u02/app/oracle/product/18.1.0.0/dbhome_1/rdbms/log

```