11gしか知らないオッサンが19cを触る

この記事は[JPOUG Advent Calendar 2019](https://adventar.org/calendars/4154)の21日目の投稿です。
20日目は、おおの たかしさんの記事、["超"現実的に考える！Oracle CloudへのDB移行ガイド](https://www.ashisuto.co.jp/db_blog/article/20191220_cloud.html)でした。

今日は、Oracle11gでOracleDBから退いたオッサンが華麗（加齢）に舞い戻ってくる記事です。

# TL;DR

* おっさんが久しぶりにOracleDBを構築するだけ
* OracleCloudのDBをちょっとだけ触ってみてビビる

# お前だれ？

今は[ウィルゲートという会社](https://www.willgate.co.jp/)で、ユーザー投稿型メディア[『暮らしニスタ』](https://kurashinista.jp/)、SEO分析ツール[『TACT』](https://tact-seo.com/)など自社Webサービスの運用全般やってますが、インフラエンジニアとしてのスタートはOracleDBでした。

未経験でSIerに入りOracle10gを勉強して、一応Goldの資格も取らせてもらいました。
ただ実際に現場に出ると10gのサポート期限が近かったので、11gに移行や構築っていうのが殆どでした。

現場で主に担当してたのは方式設計から詳細設計くらいで、こういう構成で作りますよっていうのを決めて、それをもとにDBのパラメータなんかを決めて、パラメータシートを構築チームに渡すっていう感じです。

構築は専門のチームがいて、スクリプトでササーっと何十ものDBをあっという間に作ってて手際のいい方々でした。

それがいまから7~8年前以上の話で、そこからはSIerの一人情シスを経て今の会社に転職するんですが、OracleDBに触る機会は全くありませんでした。

11g→12c→18c→19cと、随分とバージョンが上がってしまいましたが、『久しぶりに触ってみようかな』ていうのが今回の記事です。

ご存知の方も多いでしょうが、Oracleは12cから[プラガブルDB](https://www.oracle.com/technetwork/jp/database/articles/jissenn12c/jissen12c-01-2052300-ja.html)という、マルチテナント型のDBに構成が変わってます。
11gで止まってるおっさんは19cの新機能以前に、このプラガブルDBで戸惑うのでご容赦ください。

ところで19cて「イチキューシー」て呼ぶの？

# OracleDBをインストールしてみよう

ご存じない方に説明すると、OracleDBはyumとかaptで入るわけではなく、ざっくりいうと


* 管理、インストール用のユーザ作成
* 必要なパッケージのインストール
* OSのカーネルパラメータ設定
* OSのリソース制限の設定
* インストールディレクトリの設定
* X Windowの設定（GUIでやる場合）
* ソフトウェアのインストール
* DB作成

といった手順が必要で、ぶっちゃけ所見殺しっていうレベルじゃなくて、僕が現役だった頃はこれで1日潰れてもおかしくないくらいでした。

今回もそれくらいかかってます。

手元のVMに入れてみました。構成は以下の通り

* CentOS7.4
    * CPU:4core
    * MEM:8GB
    * SSD:20GB

[Databaseインストレーション・ガイドfor Linux](https://docs.oracle.com/cd/F19136_01/ladbi/configuring-operating-systems-for-oracle-database-on-linux.html#GUID-563B2067-8E17-4846-A9E1-F7043E70B00E) をもとにやってみました。


* OSのパラメータ設定
* 管理、インストール用のユーザ作成
* 必要なパッケージのインストール
* インストールディレクトリの設定
* X Windowの設定（GUIでやる場合）

ここまでの手順は「昔とあんま変わらないな」という印象でした。ただ[『Oracle Preinstallation RPM』](https://docs.oracle.com/cd/F19136_01/ladbi/automatically-configuring-oracle-linux-with-oracle-preinstallation-rpm.html#GUID-22846194-58EF-4552-AAC3-6F6D0A1DF794)というので簡略化できるのは知りませんでした。


でやっぱりクセなんですかね？昔と同じようにX Windowの環境変数まわりでハマってインストーラが起動しなくて焦りました。全く成長してないなあ俺

やっと起動したインストーラをご覧ください。3000年ぶりだねえ

![2019-12-21_11h31_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/e896d763-467d-b2dc-2971-5cb86e53708d.png)

いいぞ、その調子だ

![2019-12-21_11h35_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/2458e774-7543-3498-2bbd-c9b9dc0fe5d1.png)

後は待つだけですよ

![2019-12-21_11h52_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/6296c239-531f-bc23-b99c-1c5eb8c11712.png)

構築途中のTOPコマンドの結果見てみましょう

```bash
top - 12:01:04 up  9:27,  4 users,  load average: 0.93, 1.12, 0.62
Tasks: 225 total,   1 running, 224 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.3 sy,  0.0 ni, 99.2 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8033104 total,    52712 free,  2650080 used,  5330312 buff/cache
KiB Swap:  4190204 total,  4141948 free,    48256 used.  2822780 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                  
26634 oracle    20   0 5962760 868528  17828 S   0.0 10.8   1:09.29 java
 6930 oracle    20   0 2886136 415496 399568 S   1.3  5.2   0:02.83 oracle_6930_orc
 5120 oracle    20   0 4287832 375548  22624 S   0.0  4.7   0:18.99 java
 5946 oracle    20   0 2869096 308572 304692 S   0.0  3.8   0:00.24 ora_mman_orcl
 5968 oracle    20   0 2889408 205052 185188 S   0.0  2.6   0:00.56 ora_dbw0_orcl
 6647 oracle    20   0 2906528  75332  54832 S   0.0  0.9   0:00.52 ora_p000_orcl
20078 root      20   0 1257948  66088  12828 S   0.3  0.8   0:13.20 plasma-desktop
 5958 oracle    20   0 2886324  58728  52976 S   0.0  0.7   0:00.39 ora_dbrm_orcl
 6011 oracle    20   0 2885332  54048  48388 S   0.0  0.7   0:00.32 ora_mmon_orcl
 5986 oracle    20   0 2875248  43552  36968 S   0.0  0.5   0:00.04 ora_lreg_orcl
 5982 oracle    20   0 2885264  42500  37272 S   0.0  0.5   0:00.23 ora_reco_orcl
 1335 root      20   0  346940  38712   8728 S   0.0  0.5   0:11.24 X
 5984 oracle    20   0 2869000  36920  32708 S   0.0  0.5   0:00.05 ora_w000_orcl
 5730 oracle    20   0  138828  36656  15992 S   0.0  0.5   0:01.16 rman
 6649 oracle    20   0 2884992  35912  31604 S   0.0  0.4   0:00.12 ora_p001_orcl
 6651 oracle    20   0 2884992  35816  31520 S   0.0  0.4   0:00.11 ora_p002_orcl
 6653 oracle    20   0 2884996  35540  31232 S   0.0  0.4   0:00.11 ora_p003_orcl
 6086 oracle    20   0 2868992  35232  31012 S   0.0  0.4   0:00.03 ora_w003_orcl
 5974 oracle    20   0 2869104  34036  29740 S   0.0  0.4   0:00.17 ora_ckpt_orcl
 5955 oracle    20   0 2992216  33944  25796 S   0.0  0.4   0:00.03 ora_scmn_orcl
 5966 oracle    20   0 2873388  33844  26804 S   0.0  0.4   0:00.24 ora_dia0_orcl
 5970 oracle    20   0 2870128  32404  27928 S   0.0  0.4   0:04.43 ora_lgwr_orcl
 5988 oracle    20   0 2868964  32312  28212 S   0.0  0.4   0:00.03 ora_w001_orcl
 6040 oracle    20   0 2891504  32180  17788 S   0.0  0.4   0:00.01 ora_tt00_orcl
 5978 oracle    20   0 2869244  28476  24320 S   0.0  0.4   0:00.03 ora_smon_orcl
 6052 oracle    20   0 2868956  28320  24416 S   0.0  0.4   0:00.03 ora_w002_orcl

```
`ora_` で始まるのがOracleDBの[バックグラウンド・プロセス](https://docs.oracle.com/cd/E82638_01/refrn/background-processes.html#GUID-86184690-5531-405F-AA05-BB935F57B76D)たちです。

mmon！lgwr！久しぶりじゃないか！dbwちょっと痩せたんじゃないのか？ ホント懐かしい。みんな元気そう。

構築も無事終わったのでログインしてみましょう

```bash
$ $ORACLE_HOME/bin/sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Dec 21 12:23:10 2019
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
SQL> conn / as sysdba
????????
SQL>

SQL> select INSTANCE_NAME,STATUS from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
orcl             OPEN
```

おー上がってる！ホント久しぶり。OracleDBよ！私は帰ってきた！

ところで、どこら辺がプラガブルDBなの？

[徹底解説！Oracle Database 12cのすべて Vol.2](https://www.ashisuto.co.jp/corporate/column/technical-column/detail/1197776_2274.html)を参考にして触っていこう。

```sql
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
```

`PDB$SEED` っていうのがPDBの初期テンプレートなのか。でPDB単位でのOPEN/CLOSEはALTER文なのね。

```sql

-- ORCLPDBをCLOSEする
SQL> ALTER PLUGGABLE DATABASE ORCLPDB CLOSE;

プラガブル・データベースが変更されました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        MOUNTED  


-- ORCLPDBをOPENする
SQL> ALTER PLUGGABLE DATABASE ORCLPDB OPEN;

プラガブル・データベースが変更されました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO

```

なるほどね。実際に導入となるとこれが部署とか業務単位で別れるんかね。PDBごとに初期パラメータを持たせられるので、リソースを変に食い合う事もないのか。

# Oracle Cloudだとどうなの？

たしかDBサービスもあったよね。構築してみよう。

『Create an ATP database』をクリック
![2019-12-21_16h23_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/6af8c00f-0531-7bef-8d30-53520a1209fa.png)

コンパートメントや名前を設定
![2019-12-21_16h24_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/3dc0e747-6fde-4fbe-baa8-08be69bf6929.png)

Always Freeだと設定項目が少ない。管理者パスワードを設定して『Autonomous Databaseの作成』クリック！

![2019-12-21_16h30_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/f5b65897-f904-a606-cfd5-c876b3c7153f.png)

しばし待つ

![2019-12-21_16h31_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/341447f0-092a-0121-d690-770e06755721.png)

1分くらいで出来た！手元のVMだと1日かかったのに…

![2019-12-21_16h31_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/8f47ca16-29aa-1974-111c-d21e5f2727e9.png)

『ツール』タブに『SQL Developer Web』があるので、『SQL Developer Webを開く』をクリックしてみる。

![2019-12-21_16h33_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/e7aad426-a38f-b2a5-1b12-bbbe5ef68ddc.png)

先ほどパスワードを設定した管理者でログイン

![2019-12-21_16h34_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/b8b7c9f2-7e74-06c9-3b48-9d38c1c6882c.png)

SQL Developerだ。噓でしょ？もう繋がってるの？

![2019-12-21_16h35_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/1d360a06-8584-c208-d466-06ffa8d6d2be.png)

ホントだ…もうDBがOpenしてる…

![2019-12-21_16h36_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/b3d62018-9e8b-dc9d-66e8-5f84bb390c52.png)

PDBも出来てるやん…すげー

![2019-12-21_16h39_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151399/f40dd055-e152-3b1d-7686-799f1d693e8f.png)


なんという楽さ。OracleDBのインストールが不要の世界がこんなにも便利とは…
仮想マシン以来の衝撃ですよこれは…

# 感想

インストールはやっぱ辛いなっていうのが感想w

19cの新機能にまったくたどり着けず申し訳ありません。
でも久しぶりにOracleDBと向き合えて楽しかったです。

今回構築した手元のVMは残しておいて、ちょっとリハビリしたいと思います。

貴重な機会を頂き有難うございました。