この記事はJPOUG Advent Calendar 2019の21日目の投稿です。
20日目は、おおの たかしさんの記事、"超"現実的に考える!Oracle CloudへのDB移行ガイドでした。
今日は、Oracle11gでOracleDBから退いたオッサンが華麗(加齢)に舞い戻ってくる記事です。
TL;DR
- おっさんが久しぶりにOracleDBを構築するだけ
- OracleCloudのDBをちょっとだけ触ってみてビビる
お前だれ?
今はウィルゲートという会社で、ユーザー投稿型メディア『暮らしニスタ』、SEO分析ツール『TACT』など自社Webサービスの運用全般やってますが、インフラエンジニアとしてのスタートはOracleDBでした。
未経験でSIerに入りOracle10gを勉強して、一応Goldの資格も取らせてもらいました。
ただ実際に現場に出ると10gのサポート期限が近かったので、11gに移行や構築っていうのが殆どでした。
現場で主に担当してたのは方式設計から詳細設計くらいで、こういう構成で作りますよっていうのを決めて、それをもとにDBのパラメータなんかを決めて、パラメータシートを構築チームに渡すっていう感じです。
構築は専門のチームがいて、スクリプトでササーっと何十ものDBをあっという間に作ってて手際のいい方々でした。
それがいまから7~8年前以上の話で、そこからはSIerの一人情シスを経て今の会社に転職するんですが、OracleDBに触る機会は全くありませんでした。
11g→12c→18c→19cと、随分とバージョンが上がってしまいましたが、『久しぶりに触ってみようかな』ていうのが今回の記事です。
ご存知の方も多いでしょうが、Oracleは12cからプラガブルDBという、マルチテナント型の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 をもとにやってみました。
- OSのパラメータ設定
- 管理、インストール用のユーザ作成
- 必要なパッケージのインストール
- インストールディレクトリの設定
- X Windowの設定(GUIでやる場合)
ここまでの手順は「昔とあんま変わらないな」という印象でした。ただ『Oracle Preinstallation RPM』というので簡略化できるのは知りませんでした。
でやっぱりクセなんですかね?昔と同じようにX Windowの環境変数まわりでハマってインストーラが起動しなくて焦りました。全く成長してないなあ俺
やっと起動したインストーラをご覧ください。3000年ぶりだねえ
いいぞ、その調子だ
後は待つだけですよ
構築途中のTOPコマンドの結果見てみましょう
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のバックグラウンド・プロセスたちです。
mmon!lgwr!久しぶりじゃないか!dbwちょっと痩せたんじゃないのか? ホント懐かしい。みんな元気そう。
構築も無事終わったのでログインしてみましょう
$ $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を参考にして触っていこう。
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文なのね。
-- 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サービスもあったよね。構築してみよう。
Always Freeだと設定項目が少ない。管理者パスワードを設定して『Autonomous Databaseの作成』クリック!
しばし待つ
1分くらいで出来た!手元のVMだと1日かかったのに…
『ツール』タブに『SQL Developer Web』があるので、『SQL Developer Webを開く』をクリックしてみる。
先ほどパスワードを設定した管理者でログイン
SQL Developerだ。噓でしょ?もう繋がってるの?
ホントだ…もうDBがOpenしてる…
PDBも出来てるやん…すげー
なんという楽さ。OracleDBのインストールが不要の世界がこんなにも便利とは…
仮想マシン以来の衝撃ですよこれは…
感想
インストールはやっぱ辛いなっていうのが感想w
19cの新機能にまったくたどり着けず申し訳ありません。
でも久しぶりにOracleDBと向き合えて楽しかったです。
今回構築した手元のVMは残しておいて、ちょっとリハビリしたいと思います。
貴重な機会を頂き有難うございました。