OCI: DBシステムの中を見てみた

[先回](https://qiita.com/o_nohike/items/66ebf23a5b9eb6b94ab8)、Oracle Cloud (OCI)で仮想マシンのDBシステムを作成してみました。今回はDBシステムの中身をざっくり見ていきたいと思います。

#### ユーザー
デフォルトでopc, oracle, gridの3ユーザーが用意されています。
DBシステムにログインする場合はopcユーザーでアクセスし、他のユーザに切り替えます。OCIではrootになることも可能です。

|ユーザー|内容|
|:-----------:|:------------|
|opc|SSH接続時のユーザー。sudo特権を持ち、sudo -sでrootユーザーになれる|
|oracle|Oracle Databaseのインストールユーザー|
|grid|Oracle Grid Infrastructureのインストールユーザー|

#### 環境変数
oracleユーザーがOracleデータベースを使用するための環境変数がDBシステム作成時に自動でセットされます(ORACLE_SID, ORACLE_HOME, ORACLE_UNQNAME, PATHなど)。そのため、すぐにSQL*Plusを使ってOracleにアクセスしたり、lsnrctlでリスナーの状態を確認といったことができます。

```
[opc@oradb01 ~]$ sudo su - oracle
[oracle@oradb01 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/18.0.0.0/dbhome_1
[oracle@oradb01 ~]$ echo $ORACLE_SID
orcl
```
gridユーザーの環境変数も自動でセットされます。

```
[opc@oradb01 ~]$ sudo su - grid
[grid@oradb01 ~]$ echo $ORACLE_HOME
/u01/app/18.0.0.0/grid
[grid@oradb01 ~]$ echo $ORACLE_SID
+ASM1
```
#### インストールされている Oracleソフトウェアバージョン
DBシステム管理のコマンドラインツール(dbcli)が提供されているので、それを使って確認してみます。dbcliのコマンドリファレンスは[こちら](https://docs.cloud.oracle.com/iaas/Content/Database/References/dbacli.htm)。
dbcliはrootユーザで実行します。

```
[opc@oradb01 ~]$ sudo -s
[root@oradb01 opc]# su -
[root@oradb01 ~]# dbcli describe-component
System Version
---------------
18.3.4.0.0

Component                                Installed Version    Available Version 
---------------------------------------- -------------------- --------------------
GI                                        18.6.0.0.190416       up-to-date      
DB                                        18.6.0.0.190416       up-to-date      

```
Oracle Grid Infrastructure(GI)とOracle Database(DB)がインストールされていることがわかります。それぞれの現在インストールされているパッチ・バージョンと使用可能なパッチ・バージョンが確認できます。

#### ファイル・レイアウト
次に、データベース関連のファイル配置を見てみます。まず、ディレクトリの配置から。

```
[oracle@oradb01 opc]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolRoot
                       35G   23G   11G  68% /
tmpfs                 7.3G  1.1G  6.2G  15% /dev/shm
/dev/sda2             1.4G   46M  1.3G   4% /boot
/dev/sda1             486M  276K  485M   1% /boot/efi
/dev/sdd              197G   23G  164G  13% /u01  <------ Oracle ソフトウェア
/dev/asm/commonstore-153
                      5.0G  369M  4.7G   8% /opt/oracle/dcs/commonstore
```
環境変数 ORACLE_HOMEの値が示すように、/u01配下にOracleソフトウェアバイナリが配置されています。tnsnames.oraやalert.logのような、運用上よく使用するファイルもここにあります。
ではデータファイルや Redoログファイルは？というと、ASM(Oracle Automatic Storage Management)にあります。

```
SQL> select tablespace_name, file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- --------------------------------------------------------------------------------
UNDOTBS1   +DATA/<DBユニーク名>/DATAFILE/undotbs1.263.1005904755
SYSTEM     +DATA/<DBユニーク名>/DATAFILE/system.261.1005904697
SYSAUX     +DATA/<DBユニーク名>/DATAFILE/sysaux.262.1005904735
USERS      +DATA/<DBユニーク名>/DATAFILE/users.274.1005905603


SQL> select group#, member from v$logfile order by group#;

    GROUP# MEMBER
---------- --------------------------------------------------------------------------------
         1 +RECO/<DBユニーク名>/ONLINELOG/group_1.257.1005904813
         2 +RECO/<DBユニーク名>/ONLINELOG/group_2.258.1005904813
         3 +RECO/<DBユニーク名>/ONLINELOG/group_3.259.1005904813
         4 +RECO/<DBユニーク名>/ONLINELOG/group_4.271.1008735725
         5 +RECO/<DBユニーク名>/ONLINELOG/group_5.270.1008735735
         6 +RECO/<DBユニーク名>/ONLINELOG/group_6.262.1008735743
         7 +RECO/<DBユニーク名>/ONLINELOG/group_7.269.1008735753

7 rows selected.
(※ DBユニーク名は書き直しています)
```

OCI Databaseサービスではストレージ管理にASMを使用しています。RAC構成に限らず、シングルインスタンスでもASMを使用します。ASM上にデータファイルやRedoログファイルなどが配置されています。

#### ASMの構成
では、ASMの構成を見てみます。

```
SQL> select name from v$asm_diskgroup;

NAME
------------------------------
DATA
RECO
```
ASMのdiskgroupはDATAとRECOに分けられています。DATAにデータファイル等が入り、RECOにリカバリに関係するファイルが格納されます。
これらのdiskgroupのサイズは、DBシステムを作成するときに指定したストレージの値から決められます。指定した値がDATAのサイズになります。RECOのサイズはDATAのサイズから自動計算された値が使用されるようです。
ちなみに、仮想マシンのDBシステムではストレージのオンラインスケールアップが可能です。256GBから最大40TBまで拡張できます。


|  <font color="666666">(追記) <br>2019年10月より、1ノードのDBシステムを使用する場合、ストレージ管理ソフトウェアに論理ボリュームマネージャ(LVM)を選択してDBシステムを作成できるようになりました。詳細は[こちら](https://docs.oracle.com/cd/E97706_01/Content/Database/Concepts/overview.htm#fastprovisioning)。</font> |
| ---- |


#### 参考
マニュアル
「[Virtual Machine DBシステム](https://docs.oracle.com/cd/E97706_01/Content/Database/Concepts/overview.htm#virtualmachine)」
「[Oracle Automatic Storage Management 管理者ガイド](https://docs.oracle.com/cd/E96517_01/ostmg/asm-intro.html#GUID-BC612D35-5399-4A35-843E-CF76E3D3CDB5)」