👦

【Oracle Master】Oracleの資格学習って実際どうなの?

2023/05/07に公開

概要

Oracle資格試験について、効率的な資格の取得方法とは?というような資格取得を目的にしたコンテンツは少し検索しただけでもたくさん見つかります。
一方で、その資格を取得したことによる業務への影響や、資格は取ったがその資格ではカバーされておらず学習できないことに関するコンテンツは比較的少ない印象を受けます。(その資格って転職に使えるの?という記事は山ほどありますが…)
そのため、今回Oracle資格学習による影響も含めまとめました。

対象読者

こんな方にとっては、有益な情報が少しくらいあるのではないでしょうか。

  • SQLの学習をしたいと考えている方
  • SQLを用いた開発スキルが求められている職場で働く方
  • INSERT/SELECT文は書ける・関数はググれば使えるけどGROUP化による自動ソートといった細かい仕様を把握していない方

おすすめの教材についても共有するので、よかったら参考にしてください。

前提

この記事を書いている筆者はこういう環境で働いています。

  • ローコード開発ツールを使用したWebアプリケーション開発をしている
    (基本的なところはノーコードで実装できるが、標準機能だとかゆくて手の届かないところはOSSによるカスタマイズができる)
  • カスタマイズでJavaScript(クライアント・サーバサイドともに)やSQLを扱う
  • 協力会社さんの管理をしつつ自らもコーディングをしている

また、筆者が受験した試験は以下となります。

  • ORACLE MASTER Bronze Oracle Database 12c SQL基礎 (1Z0-061-JPN)
  • ORACLE MASTER Bronze DBA12c (1Z0-065-JPN)
    いずれも2022年に試験が終了しています。今後はBronze DBA 2019を検討してください。(当時はbronzeを取得するために2種類の試験を受験する必要がありました…)
  • Oracle Database Administration I (1Z0-082-JPN)
    Silver DBAの試験です。

背景

筆者の周りの人と話していると、比較的経験の浅い若手が知りたいことは資格学習による影響であることが多い印象です。そのため、自身が彼らにこの資格の魅力・必要性を伝えるときのメモ書きをまとめてみようと思い、この記事を書いています。

参考までに、筆者の所属する組織において、資格取得学習をしていた当時の状況はこんな感じでした。

  • 業務においては主に製造工程においてSQLを必ずと言ってよいほど使用する
    (採用しているローコードツールがDBまわりの部分に対する標準機能があまり揃っていないのです。)
  • 業務における必要性はかなり高い一方で、RDB関連の資格ホルダーは皆無に近い
  • (外注さん含め)マネージャー層は何人かDB関連に強い人がいる一方で、リーダー層以下は知識すらほとんどない状態

気を付けること

あくまで個人的な見解となります。

そもそも何のために資格学習をするのか

「資格学習は何かを知るための手段である」。筆者はこのように信じています。
そもそもその仕事をするために必要なものもありますが、今回紹介するOracleの資格は実務能力を保証するものではありませんし、資格がある人だけが遂行できる業務といったものも概ねないでしょう。

その一方で、特定領域に関する知識を体系的に学習できるという意味では、資格学習がかなり役立つということも事実です。
今回はより効率的にSQLについて学習するためにの手段として、Oracleの資格を取り上げさせていただいています。

また、筆者がOracleの資格を取得しようと思ったのは、以下の目的を達成するためでした。

  • 普段業務で使用するSQLに詳しくなりたい
    • サブクエリや結合を使いこなす
    • いくつか種類のある関数の使い方
    • テーブルやビューなどのDBオブジェクトがそれぞれどんなであるか
  • 必要な知識なのである程度の学習は必要。ただ無限に学習するのはモチベーション維持が困難なのでひとつの区切りにしたい
  • データモデリングに強くなりたい
    今後テーブル設計をするときに困らないようにする(後述しますが有効ではありませんでした)

資格取得向け学習をするにあたりやったこと

では自身の目的を達成するために、具体的にどのように学習していったのかを紹介します。
資格取得までの効率性という意味では、他の方が書かれている記事のやり方のほうが優れているかもしれません。
そのため、筆者の学習法はあくまで一例にとどめていただければ幸いです。

学習期間

Bronzeの学習には大体半年くらいかかりました。
一方でSilverの方は約3か月ほどかかりました。(いずれも記憶ベースです。申し訳ありません)

学習方法

基本的に、参考書の読み込みと問題集の繰り返し実施をしました。それぞれ下記のような方法で学習しました。

Bronze

  • SQL
    Webで公開されている問題集(無料!!)に取り組みました。SQLは業務で使っているので参考書学習はスキップ。

https://mondai.ping-t.com/g

  • DBA
    市販の参考書とSQLでも使用したWeb問題集に取り組みました。(DBAの方は有料だったので課金しています。)
    DBAの領域については普段触ることもなくまったく知識がない状態でした。(メモリにどういう種類があって、それぞれどういう役割であるかを知らなくても簡単なプログラムは作れてしまいますからね…)そのため、まずは参考書を1周し、あとは繰り返し問題集に取り組む方法で進めました。
    上記のWeb問題集は、問題集の多さと間違えた問題だけ取り組めるといったテスト問題のカスタマイズ容易性という点で非常におすすめです。SQLの方は新入社員に対し、SQL学習をしてもらう際の教材としても使えるかと思います。
    参考までに筆者が使用した参考書です。

https://amzn.to/3VBZbPf
新体系用の参考書はこちらです。
https://amzn.to/3B031rX

Silver

こちらは参考書学習と問題演習(参考書についてくるもの)で学習しました。
Bronze取得後にそのままSilverの学習を始めました。そのためBronzeDBAと似た部分については参考書を流し読む程度で、Silverだけの領域についてはしっかり参考書学習をやりました。
また、筆者が学習していた当時はなかったものとして、上述したWeb問題集にSilverの問題も用意されています。(しかもこちらも無料…)
そのため、参考書の問題集だけだと不安な方はこちらにも取り組んでみると自信につながるのではないでしょうか。

https://amzn.to/3nAiSdL

取得後の自身の業務に対する影響

上述した学習をした結果、無事それぞれの資格を取得出来た訳ですが、それらの学習を経て具体的に自身にどういう影響が生じたのか。筆者が思うに、下記のあたりの影響がありました。

  • 詳細設計、製造時の選択肢が増えた
  • 実装 / 実装レビュー時の考慮点が増えた(良い意味で)
  • 集計関数/集合関数を含む標準で用意されている関数の役割の処理のイメージをつかむことができた
  • 細かい仕様を一部知ることができた(GROUPBYによる自動ソートなど)
  • ACID属性に対する意識が向くようになった

それぞれ簡単に触れていきます。

詳細設計、製造時の選択肢が増えた

APサーバ側で行っていた処理の一部をDBサーバで行うことができるといったことを知ることで、その時々でより良い設計/実装方法を選択することができるようになりました。
たとえば、テーブルA,B,Cからそれぞれ1レコードずつの計3行レコードを抽出したい場合。開発者XさんはSELECT文を3回発行し、その取得結果をアプリケーション側でひとつにまとめます。一方で、開発者YさんはUNIONを使用してSQLを1回発行するだけの処理を組むかもしれません。もしくはいろいろな箇所で登場する処理なので、VIEWを作り似たような処理をまとめるかもしれません。
このようなときに、その方法を知っているからこその選択ができるようになります。

実装 / 実装レビュー時の考慮点が増えた(良い意味で)

こちらも知っているからこそ気が付ける、という事象に意識が向くようになります。

たとえば、抽出条件に "NOT LIKE サブクエリ"という記載を使用する場合。
サブクエリの結果にひとつでもNULLが含まれる場合は抽出結果0件になってしまいますよね。
こういったところは特定の異常系テストをして初めて気が付けるところであり、最悪の場合本稼働後に気付くなんてこともあります。

このような不具合をプログラムに埋め込まない、もしくは埋め込まれたとしてもレビューで検知するといったことができるようになります。

集計関数/集合関数を含む標準で用意されている関数の役割の処理のイメージをつかむことができた

各RDBには多様な関数が用意されています。それらは実際関数を使用するときになってはじめてその存在を知ることが多いと思いますが、よく登場する関数をまとめて知ることができます。また、集計関数の結果を使用できるタイミング(つまりSQLの評価順序)を知ることができます。
このあたりは基本的に抑えておく必要がある部分でもあるので、学習する良い機会となるでしょう。

細かい仕様を一部知ることができた(GROUPBYによる自動ソートなど)

こちらは言わずもがな。GROUPBYによる暗黙ソートであったり、列名にひらがな等のマルチバイト文字を使用する方法だったりです。
このような細かい仕様をすべて知ることができるのか?そう問われると回答はNOです。ほんの一部分について知ることができるにとどまります。また、このような詳細仕様を把握していなくても、業務への影響は限定的でしょう。
ただし、筆者としてはこういった細かい部分も少しずつ知る努力をすることが大切だと思っています。自身が扱う技術を知るという意味で、Web上に公開されている情報くらいは把握しておきたいですからね…

ACID属性に対する意識が向くようになった

ACID属性なんて、日常を生きる上ではほとんど気にしないですよね…それでもデータを守る考え方自体は理解しておく必要があります。
そんなの意識しなくても開発できるじゃん?という方もいらっしゃるかもしれませんが、あくまでデータ保護の仕組みをRDBだったりに任せているだけで、運用設計上必要な要素ですからね。

停電でサーバが落ちた時には既存の処理結果ってどうなるの?なんて聞かれたときには、「Oracleにはxxという仕組みがあってその結果xxとなります。そのためxxの時点までの処理結果は残ります!」と回答できるようにしておきたいものです。

もう一人でSQLくらい書けちゃう、という方は次のステップとしてこのあたりの知識を身に付けるのはいかがでしょうか。

影響まとめ

ざっくりですがまとめると、当資格学習を通じ、細かいところに意識が向くようになります。
「SQLなんて業務の中で書けるようになりました。テストでも不具合はでないので品質も問題ないです。」そういう方も、もしかしたらたまたま問題がないだけかもしれません。実はデータ型の異なる列同士を比較していたりするかもしれません。

表面上は問題なく動作している処理も、そこで使用している技術は自分が思っている以上に細かい仕様が用意されているかもしれません。現状把握できている知識がすべてであると思わず、ぜひ細かい部分まで知っていただければと思っています。

また、Oracle以外のRDBを使用することもあると思います。その時に(OracleはああなっていたけどこのDBはどうなんだろう)と考えるための基準を自分の中につくるという意味でも、一種類のものを詳しく知るということは意味のあることだと思います。

資格学習では勉強できなかったこと

ここまでは、Oracleの資格はこんなに優れているものなんだ!!と書かせていただきましたが、資格学習を通じて習得できると期待していたけど実際はまったく身につかなかった部分も存在します。ここではそのあたりを紹介させていただきます。

  • プロシージャ等で使用するPL/SQL
  • パフォーマンスチューニング方法
  • 実行計画の読み方
  • ウィンドウ関数の使い方
  • データモデリングのコツ

それぞれ簡単に触れていきます。

プロシージャ等で使用するPL/SQL

案件によっては、ファンクションやプロシージャを使用することもあるかと思います。
そこで登場する言語であるPL/SQLについては、当資格の対象外でした。(それ用の資格試験が用意されているようです)

パフォーマンスチューニング方法

「こういう実装はパフォーマンスを著しく低下させる!」「このような設計はアンチパターンである」といった実務で役立ちそうな知識も学習できませんでした。
たしかにあくまでRDBもひとつのツールですから、それをどう使うかまではベンダー側からだと指示しづらいのでしょうね…このあたりは書籍や研修等で補っていくしかないのかもしれませんね。
参考までに、タイトルを見ただけで筆者が思わず購入してしまった書籍を紹介します。(結構有名なものです)

https://amzn.to/3LIDWHa

実行計画の読み方

こちらも出てこなかったです。SQLチューニングの基本ですから、ぜひとも学習したかったのですが。
ただWeb上には記事がいくつか存在するので、そのあたりをインプットに学習してみてはいかがでしょうか。

ウィンドウ関数の使い方

筆者の現場ではまれにみる関数であるウィンドウ関数、RANKといったりするものですね。どうしてもこれを使わないと実装できない部分で使用されている印象です。ORACLE MASTER Silver SQL 2019の方でも出題範囲外だったという記事を見かけたりもしました。どこかに学習するコンテンツはあるのでしょうか…

勉強できなかったことまとめ

以上が資格学習前に期待していたけど学習できなかったことの紹介でした。
これさえやっておけば大体のことには対応できるといったバイブル的なものを期待していましたが、やはりそういったものはありませんよね。
学習できるところ以外については、実際の業務であったり他の書籍等からかいつまんで身に付けていく必要があると実感させられました。

データモデリングのコツ

設計時に必要となるデータモデリングのコツについて、こちらもまったくの範囲外でした。
筆者個人的には、より上流の行程に携わることが増えてきているのでぜひとも知っておきたかったのですが、、、

勉強したけど業務で使うことはなさそうなこと

最後に、今回の資格学習で学習はしたけど、正直日常業務で使わないよねと感じているところの紹介です。
あくまでも、"現在筆者が担当している業務では使わない"だけですので、参考程度にとどめていただければと思います。
こちらはトピックだけの紹介となります。

  • メモリーに対する知識
  • DBの起動/停止にかかわるOracle内部の動作
  • リスナー等、クライアント - Oracle間のネットワークまわり
  • 運用時に使用するバックアップ取得などの操作

まとめ

今回は、Oracleの資格学習について、学習方法や資格学習による影響について筆者の体験談を踏まえ紹介させていただきました。
取得後の影響や普段あまり使わないことについては、あくまでも筆者がアプリケーションエンジニアであることを踏まえ読んでいただければと思います。

また、この資格学習ですが、SQLは書けるようになったけど次どうすればいいの?という方にはおすすめできるものです!
ぜひ、日々の自己研鑽の一手段としてご活用ください。

この記事が、少しでもみなさんのお役に立てれば幸いです。

Discussion