[Oracle Cloud] Database Cloud Service(DBCS) の ASM に入ってみた

# はじめに

Database Cloud Service(以下 DBCS) では、Oracle Database のディスク領域に ASM (Automatic Storage Management) という技術が使われています。次の引用画像にある通り、RAID とは異なる実装の Oracle Database 専用のクラスタ・ボリューム・マネージャです。Oracle 独自に物理デバイスを管理し、Oracle Database にとって最適に物理デバイスが使えます。

![1607083301802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/eec07ef6-553b-e8ee-6001-2629a81909db.png)

引用元 : https://speakerdeck.com/oracle4engineer/oracleautomaticstoragemanagement?slide=4



DBCS では、Oracle Database の初期化パラメータファイル(spfile) が ASM 上に格納されています。今回の記事では、ASM 上の初期化パラメータファイルをローカルファイルシステムにコピーしてくる手順を確認します。ASM に慣れていないと、ASM 上のファイルシステムにどのようにアクセスすればいいか分からないと思うので、こちらの手順を参考にしてもらえると幸いです。



# 初期化パラメータファイルの場所

まず、DBCS の初期化パラメータファイルの格納先を確認するために、DBCS の opc ユーザーに SSH ログインします。その後、oracle ユーザーへスイッチします。

```
[opc@odb19hp ~]$ sudo su - oracle
Last login: Fri Dec  4 11:25:31 UTC 2020 on pts/0
[oracle@odb19hp ~]$
```



SQL*Plus で接続します。

```
[oracle@odb19hp ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 4 11:29:40 2020
Version 19.8.0.0.0

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


Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

SQL>
```



SPFILE の場所を確認します。
`+DATA/ODB19HP_NRT1C4/PARAMETERFILE/spfile.269.1049083243` に格納されています。頭の `+DATA` という指定があり、ASM の領域を使っているとわかります。

```
SQL> select value from v$parameter where name = 'spfile';

VALUE
--------------------------------------------------------------------------------
+DATA/ODB19HP_NRT1C4/PARAMETERFILE/spfile.269.1049083243

SQL>
```



exit で opc ユーザーへ戻ります

```
SQL> exit
Disconnected from Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
[oracle@odb19hp ~]$
[oracle@odb19hp ~]$ exit
logout
[opc@odb19hp ~]$
```



# ASMで確認

ASM の領域にアクセスするために、grid user に切り替えます。

```
[opc@odb19hp ~]$ sudo su - grid
Last login: Fri Dec  4 11:25:46 UTC 2020
[grid@odb19hp ~]$
```



ASMCMD ユーティリティを立ち上げます。-p を入れることで、ユーティリティ上でカレントディレクトリが表示されて便利です。

```
[grid@odb19hp ~]$ asmcmd -p
ASMCMD [+] >
```



pwd を押すと現在位置が分かります。 `+` なので、ASM領域の一番トップの部分にいます。

```
ASMCMD [+] > pwd
+
ASMCMD [+] >
```



Posix のように ls を打てます。DATA と RECO 領域があります。

```
ASMCMD [+] > ls -l
State    Type    Rebal  Name
MOUNTED  EXTERN  N      DATA/
MOUNTED  EXTERN  N      RECO/
ASMCMD [+] >
```



cd で 初期化パラメータファイルの場所へ移動します。

```
ASMCMD [+] > cd +DATA/ODB19HP_NRT1C4/PARAMETERFILE/
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] >
```



ls を打つと、初期化パラメータファイルがあります。

```
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] > ls -l
Type           Redund  Striped  Time             Sys  Name
PARAMETERFILE  UNPROT  COARSE   DEC 04 11:00:00  Y    spfile.269.1049083243
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] >
```



初期化パラメータファイルをローカルファイルシステムにコピーします。

```
cp spfile.269.1049083243 /home/grid/workdir/spfile.269.1049083243
```



実行例

```
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] > cp spfile.269.1049083243 /home/grid/workdir/spfile.269.1049083243
copying +DATA/ODB19HP_NRT1C4/PARAMETERFILE/spfile.269.1049083243 -> /home/grid/workdir/spfile.269.1049083243
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] >
```



コピーできたので exit で抜けます

```
ASMCMD [+DATA/ODB19HP_NRT1C4/PARAMETERFILE] > exit
[grid@odb19hp ~]$
```



ローカルファイルシステムを確認すると、初期化パラメータファイルがあります。

```
[grid@odb19hp ~]$ ls -la /home/grid/workdir/
total 16
drwxr-xr-x 2 grid oinstall 4096 Dec  4 11:39 .
drwx------ 4 grid oinstall 4096 Dec  4 11:39 ..
-rw-r----- 1 grid oinstall 5632 Dec  4 11:39 spfile.269.1049083243
[grid@odb19hp ~]$
```





# 付録 : DISK GROUP

ASM上で Disk Group を確認できます。詳細は次の記事を参考にしてください。

https://qiita.com/feifo/items/6c965afd89c94f072fc7#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB



lsdg

```
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   220788                0          220788              0             Y  DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304    262144   179764                0          179764              0             N  RECO/
ASMCMD [+] >
```



lsdsk

```
ASMCMD [+] > lsdsk
Path
/dev/DATADISK1
/dev/DATADISK2
/dev/DATADISK3
/dev/DATADISK4
/dev/RECODISK1
/dev/RECODISK2
/dev/RECODISK3
/dev/RECODISK4
ASMCMD [+] >
```



disk 使用量

```
ASMCMD [+] > lsdsk -k
Total_MB  Free_MB  OS_MB  Name       Failgroup  Site_Name  Site_GUID                         Site_Status  Failgroup_Type  Library  Label  Failgroup_Label  Site_Label  UDID  Product  Redund   Path
   65536    55232  65536  DATA_0002  DATA_0002             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/DATADISK1
   65536    55188  65536  DATA_0001  DATA_0001             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/DATADISK2
   65536    55172  65536  DATA_0000  DATA_0000             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/DATADISK3
   65536    55196  65536  DATA_0003  DATA_0003             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/DATADISK4
   65536    44928  65536  RECODISK1  RECODISK1             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/RECODISK1
   65536    44980  65536  RECODISK2  RECODISK2             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/RECODISK2
   65536    44952  65536  RECODISK3  RECODISK3             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/RECODISK3
   65536    44904  65536  RECODISK4  RECODISK4             00000000000000000000000000000000               REGULAR         System                                                      UNKNOWN  /dev/RECODISK4
ASMCMD [+] >
```



disk 統計情報

```
ASMCMD [+] > lsdsk --statistics
  Reads   Write  Read_Errs  Write_Errs    Read_time   Write_Time   Bytes_Read  Bytes_Written  Voting_File  Path
 697701  287520          0           0  1236.936075  3395.014642  27514228736    43560972288            N  /dev/DATADISK1
1134266  262217          0           0  1373.387084  4307.932924  29378458624    43286927360            N  /dev/DATADISK2
 717484  256018          0           0  1772.320747  3875.400057  27906015232    43589595136            Y  /dev/DATADISK3
 693297  276085          0           0  1130.266629  4503.553209  27748327424    43877916672            N  /dev/DATADISK4
  51409  103210          0           0   191.960202   701.403054   8659575296    16087470080            N  /dev/RECODISK1
1243892  426058          0           0   935.777521   997.805004  22569542656    21471966208            N  /dev/RECODISK2
1349442  136308          0           0  1155.724625   940.626733  29913323520    16792078848            N  /dev/RECODISK3
 779994  109334          0           0     712.2695   802.024329  20586233344    16469213696            N  /dev/RECODISK4
```



sd に紐づき

```
[root@odb19hp dev]# ls -l /dev/ | grep DISK
lrwxrwxrwx 1 root root            3 Dec  4 11:40 DATADISK1 -> sdd
lrwxrwxrwx 1 root root            3 Dec  4 11:40 DATADISK2 -> sde
lrwxrwxrwx 1 root root            3 Dec  4 11:50 DATADISK3 -> sdf
lrwxrwxrwx 1 root root            3 Dec  4 11:40 DATADISK4 -> sdc
lrwxrwxrwx 1 root root            3 Dec  4 11:40 RECODISK1 -> sdj
lrwxrwxrwx 1 root root            3 Dec  4 11:40 RECODISK2 -> sdg
lrwxrwxrwx 1 root root            3 Dec  4 11:40 RECODISK3 -> sdh
lrwxrwxrwx 1 root root            3 Dec  4 11:50 RECODISK4 -> sdi
```





# 参考URL

asmcmdとは
http://www.doppo1.net/oracle/function/asm/asmcmd.html

Oracle Cloud(OCI) DBaaSのデフォルト・ストレージ構成
https://qiita.com/feifo/items/6c965afd89c94f072fc7