【アドカレ記事】DB未経験2年でORACLE Goldに合格した話
この記事を読むにあたり、下記の点にご注意下さい。
-
本記事は2024年12月に執筆されたものです。
-
記事を参考にした結果、生じたいかなる問題も、読者自身の責任となります。
-
営利目的でなければ、記事は引用してもらっても構いません。
寧ろSNSで「この記事参考になるからこれ見ろ。」って言ってもらえると嬉しいです。 -
この記事ではOracle Database 19cの話をメインにします。
このため、将来的に内容が大きく異なる場合があります。 -
専門家、開発者、その道のプロが書いた記事ではありません。
DBほぼ未経験者が勉強を頑張って執筆した内容なので、
情報に誤りが含まれている可能性があります。
そのため、真面目に読まず「鍋の調理法を書いてる記事」だと思いながら読んでください。誤りを見つけた場合、コメントにてご指摘いただけると幸いです。
本記事の読者層
- 未経験だけどOracleの上位資格に興味がある人
- Oracleの勉強方法が分からない人
- 自分の子供にデータベースを作らせたい人
- 実績「DBデストロイヤー:DBを1個破壊した」を解除してる人
本記事の目標
なんとなくOracleちょっと分かる人になる
自己紹介
どうもこんにちは、そこらへんにいる一般人 ウユミナこと、みなみんです。
初めましての人は初めまして、知ってる人はお久しぶりです。
記事を本格的に書くのはこれで2回目ですね。
(中小企業の全ネットワークを停止させた記事を書きましたが、あれは急遽空いたアドカレ枠を
突貫工事で書いてるのでノーカンです)
【アドカレ一覧】
今回も鍋とアドカレの時期が来たので、今日はOracleの話でもしようと思います。2020年にとあるSOHO向けネットワーク構築サポートをし、その2年後
2022年にOracle Databaseの部門でお仕事することになったのですが...........
実はめでたい事に3カ月前にORACLE MASTER Gold DBA 2019を無事合格しました。
^q^うぇい!
(1%の滑り込み合格ですが、それなりにOracleちょっと分かる人に...)
取得を考えた理由は
・会社の資格報奨金があった
・会社の補助でたまに受験料(約3万円)が無料だった
・社内にOracle完全理解した認定証があった
と単純で「あれ?Bronze→Goldまで突っ走れば数十万稼げるのでは?」となったわけです。
(この安直な計算が地獄を見ることも知らずに)
本記事の概要
早速本題に入ります。この記事を読むと以下の内容に関して理解を深めることができます。
1.Oracleの資格について
2.未経験者はORACLE MASTERを受けるべきか
3.Oracleとは
4.データベースとは
5.インスタンスとは
6.SQLとは
7.Oracle MASTER(Bronze~Gold)の勉強方法
8.検証環境を構築する方法
1.Oracleの資格について
まず、Oracleの資格試験にどういったものがあるかお話します。
Oracleの資格にはいくつかありますが、その中にデータベース技術者のスキルが求められる
「ORACLE MASTER」と呼ばれる資格があります。
▼データベース技術者に必要なスキルと ORACLE MASTER 2019
順番に
▶Platinum:ミッションクリティカルな環境構築、データベースエキスパート向け
▶Gold:設計・構築・運用設計など、データベース管理者向け
▶Silver:DBの日常的な運用・基本的なSQL、DB運用担当向け
(≒Silver SQL:DBのSQL運用、開発者やデータアナリスト向け)
※本記事ではSilver SQLは特に触れません
▶Bronze:DBの基礎知識、ITエンジニア向け
となり、上に行くほど難易度が高いです。私が取得した資格は上から2番目のGoldです。
初めてOracle Masterを受験する場合、Bronzeから受けても良いですし
すっ飛ばしてSilverから受験することも実はできたりします。
ただし、Goldの受験にはSilverを事前に合格していることが前提条件になります。
昔は酷かったらしく、Bronzeをすっ飛ばせないうえに(かつSQLの問題も含まれていた)
Goldを受験するためには事前に研修を受講する必要があったようです。
2020年から新体系の試験に移行し、Silverからの受験が認められGold受験のために
必須だった研修は撤廃、BronzeからSQLの問題は除かれ
更に資格の失効期間もなくなり受験のしやすさは格段に上がりました。
2.未経験者はORACLE MASTERを受けるべきか
結論言うと未経験ならSilverで十分、数万円以上払ってGoldまでは受けなくていいです。
Oracle Masterでは主にデータベースのアーキテクチャ・機能・概念・用途など問いが多いです。
(Platinumを除く)
そして、Oracleトラブルには以下のようなものがあります。
●データベース障害(製品バグや不具合・ブロック破損)
●インスタンス障害(プロセスハング・メモリリーク)
●運用障害(ネットワーク障害・誤操作によるファイル損失)
●性能障害(データ取得長時間化・CPU高騰化)
など...
Oracle Master(Bronze~Gold)では性能やログ調査については問われません(多分)。
つまり、肝心の調査スキルについての話は出てこないため、性能調査やログ調査を
必要とする状況下ではOracle Masterは何の証明にもなりません。
しかし、Bronze~Silverまでならアーキテクチャや基礎機能についての知識が
大量に詰め込まれているため、逆にデータベース設計や運用トラブルなどが発生した場合は、
ある程度話の内容を理解できる証明にはなります。
Goldになると性能調査に必要な機能も含め、バックアップやリストア・リカバリ方法、
そのほかマルチコンテナなどデータベースの管理概念の応用について勉強することになりますが
具体的な調査手法などについては触れられません。
性能分析やログ調査まで学びたいならPlatinumを学習しろということなんでしょうね...。
いつかは勉強してみたいですね。受験費用20万円越えですが
私の場合、無料受験ができる機会+資格報奨金ありという理由以外に
サポート技術者として認める認定証的なものがあったので受験しましたが、
そういった旨味がない状況であれば、Sliverまでの合格を目指したほうが良いです。
私と同じようなメリットが多い人は未経験でGoldまで受けてみても良いかもしれません。
受験したい人向けのお得かもしれない情報
ORACLE MASTER Bronze~Goldの受験料はそれぞれ3万円以上と高額で、
再試験すると6万円以上もかかります。
不合格だと非常に凹みますよね?
実はOracleでは「再受験無料キャンペーン」というものを不定期で行っており、
1度不合格でも期間内に再試験すれば再試験金額が0円になるキャンペーンをしてたりします。
過去事例を見ると3月や12月初めにやっていたのでそれを待つというのもありです。
ただ、2022年は無かったようなので不定期である点はご注意ください。
詳細についてはOracleの新着ニュースを見ておくとよいです。
3.Oracleとは
さて、試験のざっくりとした感想はここまでにしてOracleの資格の勉強方法について...
ではなく、まずOracle・データベース・インスタンス・SQLとは?
といった前提知識について解説をしておきます。
Oracle とはデータベース管理システムの他にソフトウェア開発を手掛けるアメリカの会社です。
1979年にOracle V2という世界初の商用RDBMS(関係データベース管理システム)を開発・販売したことで有名だったりします。
発売以来、顧客ニーズに合わせて機能拡張を続けており、2024年現在では
Oracle 19cのほか、最新のバージョンOracle 23aiが公開されています。
▼Database 23ai: 機能のハイライト
と言ってもオンプレミス版はまだリリースされておらず、
クラウド版が先にリリースされています。
▼Release Schedule of Current Database Releases (Doc ID 742060.1)
ちなみに数字の末尾についている12「c」や23「ai」などのアルファベットは
oracleがそのリリースに力を入れているものに対して名前を付けてるだとか。
(cはコンテナでaiはArtificial Intelligence、つまり人工知能。)
RDBMSを提供しているのはOracle社だけではなく、Miscrosoft社(SQL Server)やIBM社(Db2)
そのほかオープンソースとしてPostgreSQLなどがあったりします。
Oracleの特徴としては、他社と比べ行レベルのロックが小さいので大多数のユーザ処理に
特化させたり、UNDO表領域といった技法を用いてデータベース検索時の読み取り一貫性を
保証するような機能を売りにしているようです。
そのほか、AWR・ASH・TFAといった性能情報調査に特化したツールも存在していますが
それらを話すと話が長くなってしまうので、これらは実際のOracle業務で
触れていただければと思います。
4.データベースとは
「データベース」とはそもそも何か?
簡単に言うと、サーバ上で動く「何かしらのデータ群」のことをデータベースと言い
「中から必要なデータを抽出する」ためにSQL言語を使用します。
「分かりやすく言うとExcelみたいなもの」と回答する人達もいますが
誤解を生む表現であるため、個人的にはこの説明はあまり好きではなかったりします。
確かにExcelに必要なデータを入れ込んで、並び替え処理をすればデータベースもどきっぽいことは可能ですが、大容量のデータ管理・大多数のユーザが同時使用・ACID特性[1]を持たせる要件があるとなると話が変わります。
またExcelは表計算ソフトであり、データベースの設計思想・目的と大きく乖離しています。
なのでデータベースを表現するなら、図書館で本の内容探すイメージをしてもらった良いです。
正式な呼び方 | 比喩 |
---|---|
データベース | 図書館 |
パーティション[2] | 本棚のジャンル |
データベースの表名 | 本のタイトル |
索引[3] | 本の最後のページにある索引 |
データ | 本の文字・文章 |
▼例:日本国憲法から国民の権利である第二十六条1項について検索する
流れとして、図書館(データベース)にアクセスし様々なジャンルで
陳列された棚(パーティション)から法律ジャンルの棚を見つける。
次に法律ジャンルの棚から日本国憲法についてまとめられた本(表)を探し、
ページの最後から「国民の権利」(索引)で探す。
すると、第三章に第二十六条があるからそこを探せば本文(データ)が見つかります。
このように動作するデータベースシステムですが、サーバ上で動くため
サービスを利用するユーザにはあまり意識されずデータベースが何の目的であるか
分からない方が結構いたりします。
でも皆さん必ずどこかでお世話になっています。
オンラインショッピングでの在庫管理システムはもちろんのこと、
金融機関の取引履歴システム、チケット予約システム、SNSなどにも
大量のデータ管理を必要とするためデータベースが使用されています。
ちなみにデータベースの種類として
1.階層型データベース
2.ネットワーク型データベース
3.関係データベース
の3種類がありますが、主流は関係データベース管理システム(通称RDBMS)です。
そのため、ほとんどの「データベース」はRDBMSを指してることが多いです。
5.インスタンスとは
Bronzeの試験範囲の内容ですが、Oracleデータベースには内部的に大きく分けると
1つのデータベースと1つ以上のデータベース・インスタンスで構成されています。
データベース・インスタンスは単にインスタンスとも呼びます。
実態はデータベースファイルを構成するメモリー構造を指します。
▼データベースおよびインスタンス
アーキテクチャとしては上の図が分かりやすいですが、SGAやPGAなどのメモリ領域のほか
いくつかのプロセス群がデータベースのファイルやログなどとやり取りを行っています。
これらメモリやプロセス、ファイルが複雑に組み合わさることによりデータベースとして
動作するわけです。
なお、簡単なBronzeの試験範囲とはいえ、Oracleの基礎中の基礎であるため
内部プロセスや性能などの本番障害にもこれら基礎が大きくかかわってくることもあるため
絶対に覚えておいて損はないと言える重要な内容です。
6.SQLとは
データベースが図書館みたいなものと分かったところで、そのデータ自体はどうやって操作するんだという話ですが、ここで使うのがSQL言語(Structured Query Language)です。
データベース言語であり非手続き型言語とも言います。
超大雑把に言えば「なんでもいいから飯くれ」といった言語です
プログラミング言語のようにシステムを開発するために使用される言語とは異なり、
データを抽出することに特化しています。
コーディングは非常に簡易的で以下の構文を覚えてしまえば
大体のデータ抽出自体はできるようになります。
(本当に欲しいデータが見たい形で抽出されるかどうかはさておき)
SELECT <見たい列名は?>
FROM <どの表から?>
WHERE <どの条件で?>
例えば、以下のように商品名(MENU列)と個数(ITEMS列)がある表(FRUIT表)に対して
管理ID | 商品名 | 個数 |
---|---|---|
1 | りんご | 3 |
2 | みかん | 32 |
3 | ばなな | 3 |
みかんの個数を知りたいが、管理IDの結果は返さなくて良いとします。
つまり、商品名(MENU列)と個数(ITEMS列)の列を表示したいとします。
こうした場合、以下のようなSQLを記述をすることで結果が返ってきます。
--みかんを抽出条件とする
SELECT MENU,ITEMS
FROM FRUIT
WHERE MENU = 'みかん';
結果:
商品名 | 個数 |
---|---|
みかん | 32 |
ちなみに1列でまとめてしまっても実行は一応されますが、結果は同じです[4]。
--みかんを抽出条件とする
SELECT MENU,ITEMS FROM FRUIT WHERE MENU = 'みかん';
結果:
商品名 | 個数 |
---|---|
みかん | 32 |
なお、列名を全部出したい場合、アスタリスク(*)を使うという方法もありますが
表やマシン環境によっては性能影響があるため、むやみに実行するのは非推奨です。
--管理IDが2のデータを抽出条件とする
SELECT *
FROM FRUIT
WHERE ID = 2;
結果:
管理ID | 商品名 | 個数 |
---|---|---|
2 | みかん | 32 |
そうそう。実は、SQLには1つ問題があります。
データベースの解説部分でSQLについて以下のように解説しました。
「中から必要なデータを抽出する」ためにSQL言語を使用します。
つまりデータを取得する内部処理方法については記述をしません。
データをどのように処理するかはOracle内部で動作しているオプティマイザ[5]に任せています。
つまり飯くれって言ったら「鍋に合う秘伝のたれ作るから待て」と言われて数年待たされるわけですね
裏を返せば「SQL言語はデータの抽出処理方法は他人任せ」なので
以前は問題なかったのに、突然データの検索処理が遅くなるといったことが起きます。
データ量がKB単位と少ないような検証環境では効率の悪い検索処理が内部で動いても
1秒もかからず終わりますが、本番環境では数十GB以上のデータとかを扱うため
SQL次第では取得するのに数時間とかあります。
世の中こういったSQLの性能問題に悩まされるDBエンジニアが大量にいます。
ここから更に深堀するとハードパースの概念やSQLコーディングの話になってしまうので、
チューニング手法についてはどこかの機会で学んでいただければと思います。
7.ORACLE MASTER(Bronze~Gold)の勉強方法
データベース・インスタンス・SQLがなんとなくわかったところで
試験の勉強方法についてお話します。
Oracle Masterの試験出題範囲は公式HPで以下のように公開されています。
◆Bronze
SQLについて問われることはほぼありません。
◆Silver
ブロックといった概念の理解、そのほか運用面の応用や基本的なSQLの使用について
問われるようになります。
SilverからSQLの例題が出題され、どのような結果になるか?といった問いが出てきます。
◆Gold
ここからバックアップやリカバリ・リストア手法など設計に関する運用技術に加え、
19cからの新機能や12cから追加された「マルチテナント[6]」の技術についても問われ始めます。
Oracle Master BronzeからGoldまですべて選択問題形式(複数選択あり)で、
受験者にSQLや解答案を書かせるといった問いはありません。一応、受験時に
メモをすることができるマジックペンとシートが渡されます。(消すことは不可)
試験終了後、合否判定がすぐに出ます。
そしてOracle MASTER 19cの勉強で「何が難しいのか」というと、
2024年現在、19cの問題集は大手出版社から出ていません。
(12c時代の問題集は見つかるが、19cは怪しいサイトしか出てこない)
つまり勉強方法はない…ってコト!?
...
というわけではなく、実は翔泳社からOracle Masterに特化した対策本(黒本)が出ています。
なので、Oracleの基礎学習は殆どこの本で対応します。
黒本の内容はOracleの機能について細かく説明されており、練習問題や模擬問題があるので
これを解いていけばある程度試験には挑めます。
勿論、記憶ゲーではないので黒本と同じ問題が出るということはあまりありません。
如何に内容を理解し、試験時に選択肢から理由を付けて誤りを除外していくかになります。
Bronzeの勉強方法
殆どがアーキテクチャに関する問いのため、本の内容を理解すれば黒本のみで行けます。
記憶ゲーではないので、SGAとは何か?PGAとは何か?
データベースの起動フェーズやロールといった権限の概念を自分から本を見ずに
説明できるレベルまで覚える必要があります。
なので、500ページくらいありますが、2回は読み直すことをお勧めします。
Silverの勉強方法
表領域やブロックの概念、ネットワークに加えデータベース構築ツールの話が出てきます。
また、SQLの内容も出てくるため、黒本だけではなく、実際にOracleの検証環境を構築して
実際に黒本の内容を覚えていくと良いです。
ちなみに、Oracle Live SQLというSQLを叩けるOracleサイトがあったりします。
が、一部実行ができないコマンドや制限などもあるので、どうせなら
実際に検証環境を作ってみると良いです。
(作った経験はGoldの勉強で活かせますし)
▼Oracle Live SQL
Goldの勉強方法
まず、受験した感想。未経験で黒本のみは無理です。
というか黒本以外の内容が何個か出ます。
(1回不合格になりました。)
一応Oracle歴が長い経験のあるベテランの方が黒本のみで合格してたので、
黒本に出てない問題をどうしたか聞いたところ
「何それ?そんな問題出てこなかったね」と言われ....
他の社内のGold合格者にも聞いたら
「滑り込みで受かりました、ほぼ運ですね」と全員に言われ....\(^o^)/
そのため、黒本・複数の検証環境に加え、1回目の受験時にドキュメントに記載されている
コマンド内容がそのまま出題されてたので、出題範囲のOracle公式ドキュメントをほぼ読み漁り
やっと合格しました。(Goldの勉強だけで1年費やしました)
試験時間は決められているので、聞いたことも無いような用語や問題が出てきた場合
即飛ばして後で見直すことををお勧めします。
悩んでも解ける問題ではないし時間もギリギリになります。
合格後、他の部署達との飲み会で「黒本に大量にメモを書き込んで合格した人もいる」
とのことだったので結構重箱の隅をつつくような問題が出てきます。
あと注意点として黒本は何度か改訂されています。
黒本の購入後は、内容に修正部分があるかどうかは調べてください。
余談 Goldの黒本でとんでもないミス見つけた話
Goldの黒本内容を検証していたのですが、コンテナのパラメータを変更する手順について
内容を数回繰り返しても黒本通りならず、検証環境のバグ...?と悩みに悩んだ挙句、
ターミナルのログ全文を翔泳社に送って問い合わせたところ
「すみません、SQLの出力結果間違えてました。後日改訂サイトに内容を公開しておきます。
混乱させてしまい申し訳ありません。」
と回答が来てえぇ...となりました。検証できる部分は検証したほうが良いかもしれません。
(というかコマンド出力内容が違うってどういう???)
8.検証環境を構築する方法
Silverの学習では検証環境を用いて黒本の内容を覚えたほうがよいアドバイスをしました。
Oracleのデータベース環境を構築する場合、
Oracleが要求するインストール要件をすべて満たす必要があります。
「勉強目的で検証環境を作るのが良い」と気軽に言いましたが
サーバ構築もしたことない人にデータベースサーバを作るのは無理では?
と思うかもしれません。
実はOracleにはOracle Preinstallation RPMというものがあり、
Linuxの基礎知識さえあれば比較的楽に構築を行うことができます。
ちなみにRPMとはソフトウェアをパッケージ形式で管理している仕組みです。
パッケージとして管理することでインストールや更新などが気軽にできるほか、
サービスが動くためのパラメータ設定などの調整もパッケージが自動的に構築してくれます。
windowsでソフトをダウンロードする感覚だと思えばよいです。
後はスクリプトを実行することで、インストーラが良しなにやってくれる感じです。
いくつか手順はありますが、実行するメインのコマンドはこの1行のみです。
# yum -y install oracle-database-preinstall-19c
この辺りは「Oracle RPM」と検索すればいろんなサイトで紹介されているので
この記事では具体的な構築手順については触れません。
是非、皆様で色々検索しつつ構築していただければと思います。
余談
本当は自分の経験も生かして実際に自分が覚えているGoldレベルの内容を
記事の最後のオマケとして出題しようと思いましたが、試験規約に
以下文言があるので辞めておきます。
不正行為ポリシー
Oracle は、不正行為(受験チケットの不正使用、カンニング、成績表の改ざん、修了証明書の改ざん、その他 Oracle が不正と判断する行為を含む)に関与した受験者に対して訴訟を提起する権利を保有するものとします。オラクル認定資格試験に関連する資料(または「ブレイン・ダンプ」)への関与、もしくはそれらの資料の使用または共有については、オラクルは本不正行為ポリシーの違反であるとみなします。候補者は、試験準備のために購入または使用するすべての資料がこの不正行為に関するポリシーに違反していないことを確認する責任があります。
Oracle は、不正行為が行われたと判断した場合、受験者のオラクル認定資格の認定取消、受験者のオラクル認定資格試験受験の一時的、または無期限・永久的な禁止、受験者の所属する会社への通知、法執行機関への通知を含む措置(ただしこれらに限定されるものではない)をとる場合があります。不正行為が発覚した場合、いかなる場合も、受験料の返却はいたしません。
ということで実際の問題を解きたい人は試験会場へ行きましょう。
試験費3万円以上ですが.......・。・
では、また次回どこかでお会いしましょう。
お知らせ
「5.インスタンスとは」の章でインスタンスの説明を行った際、
1つのデータベースと1つ以上のデータベース・インスタンスで構成されています。
とお話しました。「ん?1つ以上のインスタンス?」と気になった人が居ると思いますが
Oracleにはクラスタ化させるための「Oracle Real Application Clusters」
通称、「RAC」と呼ばれる技術があります。
この資料や説明は動画としても紹介されています。
なお、Oracle Master Goldでは具体的なRACの構築手順については聞かれませんが、
ASMの概要やGrid infrastructureで実行するコマンドについての
問題が出題されることがあります。
本記事で本当は取り扱おうと思ったのですが、DNSやNTPサーバの他に
ASMについてやLinuxのUDEVやグループ構成・ネットワーク設計などなど
初心者の方に分かりやすく説明をすると記事じゃなく本ができてしまうので
そのうち、初心者でもわかる内容全解説したRAC環境構築の有料本を200円くらいで
zennに垂れ流そうと思います。お給料低くて豪遊できないからこれで暖かい鍋が食べたい
お楽しみに。
(ぼったくりたくねえから1円で販売してやろうと思いましたがzennが許してくれませんでしたごめんなさい)
ちなみに、構築資料としては転がってるので構築してみたい人はやってみてください。
なお、知ってて当たり前なのか専門用語が羅列してます.....・。・
-
トランザクション処理が持つべき基本的な要件です(原子性・一貫性・独立性・永続性)。
トランザクションとはある処理工程の1単位を指します。例えばA口座からB口座に送金する場合、
「Aから出金(金額を引く)→Bに入金(金額を足す)」の2工程が1つのトランザクションです。
4つの要件はそれぞれ次のような特性を持ちます。
▶原子性:処理する・しないの2択のみを選択
▶一貫性:データの矛盾を生じさせない
▶独立性:複数のトランザクションが干渉しない
▶永続性:処理結果を損失しない
ACID特性を持たないと、金額が一致しない・片方だけ処理されるなどの問題が発生し、
データベースの意味を成しません。 ↩︎ -
表などのオブジェクトをパーティションという単位で分割する技法です。
大規模テーブルでのデータ検索が必要な場合に作成され、パーティション単位で
検索できるようにすることで検索データ量が少なく済みます。 ↩︎ -
データ検索を効率化する目的で作成されるオブジェクトです。
本の索引のような役割を持っており、大量のデータから一部だけ検索する場合に効果的です。 ↩︎ -
結果は同じですが、内部処理では全く別のSQLと判断されるためキャッシュ情報が使われません。
詳細は「ハードパース」とかで調べてください。 ↩︎ -
いくつかのデータベース情報からSQLが効率的に検索できるよう内部処理を決定する
組み込みデータベースソフトウェアのことです。
コストベースオプティマイザ、通称CBOとも呼ばれます。
■4 問合せオプティマイザの概念
https://docs.oracle.com/cd/F19136_01/tgsql/query-optimizer-concepts.html#GUID-06129ACE-36B2-4534-AE68-EDFCAEBB3B5D ↩︎ -
コンテナというスキーマ・オブジェクトなどの集合体でデータベースを管理する技術です。
大きく分けてCDB(コンテナデータベース)とPDB(プラガブルデータベース)の2つで構成され、
CDBに1つ以上のPDBやアプリケーション・コンテナが格納されます。
19c以降にリリースされた21cで非CDB環境はサポートしないことになりました。
■1 マルチテナント・アーキテクチャの紹介
https://docs.oracle.com/cd/F19136_01/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22 ↩︎
Discussion