ORACLE MASTER Bronze Oracle Database 12c を取得したので勉強法をまとめる

Oracle Master Bronze Oracle DB 12cに合格したので，自分なりにどのように勉強したのかまとめてみます．
<img width="761" alt="e46f88e00ab720b217ed091ccd295ea1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156186/3ec2f8b6-16e9-8517-c3c8-47f26711a18f.png">


#Oracle Master Bronze Oracle DB 12c #とは
公式サイトに仔細が記載されているため，そちら参照してください．
https://education.oracle.com/ja/oracle-master-bronze-oracle-database-12c/trackp_284
この資格を得るためには，「SQL基礎:12c」と「DBA」の2つの試験に合格しなければなりません．
前者の合格点は65％，後者の合格点は70％です．

#資格を取ろうとした動機
配属先の意向で新人全員取得することになったため．


#筆者のレベル
- 某国立大学院卒
- SQLは学生時代に触れたことがなく，新人研修で触り始めた．
- DBの知識についてはIPA試験の勉強で少し概要を知った程度．

#試験結果
- 「SQL基礎」
 - 1回目：63/100 (8/30) ← 1回落ちました😭
 - 2回目：91/100 (9/20)
- 「DBA」
 - 1回目：87/100 (9/13)
  
#勉強時間
- 「SQL基礎」
 - 1回目：20時間
 - 2回目：20時間
 - 合計：40時間
- 「DBA」
 - 1回目：25時間

(Oracle研修で5日間の座学があったのですが，それを省いています．)

#Oracle研修を受ける
配属先の意向で，上期にOracleDB取得目標となっていたため，
自分は8月末にSQL試験，9月頭にDBA試験を受けることにしました．

7月中旬に赤坂のOracleセンターで研修に行って，5日間で試験内容を詰め込まされました．
必死にノートは取って，試験に出そうなポイントだけはなんとかメモしつつ，聴講していました．
SQLの方は大分慣れ親しみがあったのですが，DBAは知らない知識ばかりで頭を抱えながら聴いてました．
この時は，丁度自分が体調不良で咳が止まらないことがあり，なかなか集中できるのが難しかったです．

研修の内容は詳細まで言えませんが，オーソドックスな講義→演習形式です．
章ごとに講義を行った後，演習を行い，休憩の繰り返しです．
休憩時間はまちまちで10分，15分という感じ．
自販機が無料です．糖分補給のために午後ミルクティーを結構飲みました．ガブガブ．


#SQL試験勉強を始めるが…
8/30にSQLを受けると豪語してしまったため，お盆明けからSQLの勉強を始めました．

まずは研修で取ったノートを見返したところ，だいたいは新人研修でやった内容なんで
いけるやん？と取り合えず調子をこいてしまう．(これが後々試験にギリギリ不合格になる要因になる)

その後は月並みですが，[白本](https://www.amazon.co.jp/dp/B00QJINS56/)を購入しました．
ボクはipadやPCを使って電子書籍で勉強する派なので，kindleで購入しました．
最初はINPUTを行い，演習でOUTPUTし，解説を読んで再度INPUTの補強を行いました．
平日1章(余裕があれば2章)，土日に2章のペースで2周行った後，白本にある模擬試験2つやりました．

ここまでくれば順調そうに見えるかもしれませんが，
実は解説をしっかり深くまで読まなかったり，問題暗記になりがちになってましたし，
模擬試験に至っては，両方合格点ギリギリだったことに満足してしまい，
解説は間違ったところだけをざっと眺めただけで，解きなおしは一切しませんでした．
(模擬試験は試験前日と前々日にやったので，少し時間的な余裕がなかった．)

試験当日特有の謎の自信を抱えつつ，オンラインでSQL試験を15:30-17:30に受けました．
試験終了後，だいたい15～30分後にメールで結果が返ってくるのですが，
63％という数字を見た瞬間，自分は甘いなあとやっと実感することになりました．

#個人的反省
**・INPUT作業に時間をかけすぎてしまい，それに満足してしまったこと**
勉強あるあるなんですが，INPUT作業が楽しすぎて，OUTPUT作業が疎かになりがちです．
INPUTに時間をかけたとしても，OUTPUTしないと身につかないもんです．
特にSQLはOUTPUTの量が大事だと思いました．

**・問題の解説をしっかり深くまで読み込むこと**
間違えた場合は，正解の理由を読み込むだけでなく，
何故間違えたのか？　→　単純なミスか？知識不足か？見落としか？
誤答の方の選択肢はなぜ間違いなのか？ → 知識の定着ができていない？勘違い？覚え間違い？
みたいな感じで考えるのが大事だと思いました．
ただの問題暗記になってしまったら応用できません．

#じゃあ反省をもとにどうしたか
SQL試験不合格を反省に，DBA試験勉強からやり方を変えました．

以下の通りです．
**・INPUTはサクッと終わらせて，OUTPUTしまくる**
どうせINPUT長時間かけても，OUTPUTしなくては定着しないものがあるし，限界がある．
問題を通して初めて知識が定着する．

**・模擬試験や過去問をまず解いて，自分のレベル感を把握してから勉強する**
己を知らないと調子こいてしまうとボク個人思ってしまったので，
模擬試験を解いて，先に自分のウンチさを自覚した上で勉強始めると効率がいいです．
自分はここが弱いからここは他の章に比べてINPUTの時間を増やそう．
ここは大方大丈夫だから軽い確認程度にしてアウトプットすぐやろう．

**・巷に溢れている合格体験記や勉強時間は参考程度にすること**
個々人によって知識量や経験量，レベルが違います．
巷に溢れている勉強法や合格体験はその人個人のものです．
あくまでも参考程度にしないといけません．
勉強時間だとか人によって違いますからね．
(この記事もあくまでも参考程度にしてください)

#DBA勉強法，そしてDBA試験1発合格
上記を念頭に入れつつ，DBAの勉強を始めました．こんな感じです．

①　[白本](https://www.amazon.co.jp/dp/B00WJQCVOG/)の模擬試験1を解く．
②　解説はこの時点では解説はざっと流し，どこがダメなのか把握する．
③　②をもとに，INPUT→OUTPUTを繰り返す．時間のかけ方はOUTPUTの方を重視．
④　③を3周したら，模擬試験1，2を3周行う．間違えたところに×印を書き，弱点を浮き彫りにする．
⑤　更なるOUTPUTとして，[Web問題集](http://oraclemaster.info/exercise/1z0-065/)を攻略率100%になるまで繰り返す．
⑥　公式の[サンプル問題](https://www.oracle.com/jp/education/certification/db12-bronzea-3499339-ja.html)を解く．全問正解するまでやる．
⑦　YouTubeに公式の[試験対策セミナー動画](https://www.youtube.com/watch?v=sZ6N8RZWzD0)を見る．倍速でいい．

こんな感じでやったらDBAは一発で受かりました．
DBAはSQLに比べてひっかけ問題などがなく，
知っているかどうか，覚えているかどうかの問題なので，ちゃんと勉強すれば受けると思いました．

#SQL勉強法，そして2度目の正直SQL合格
DBAの時とほぼ同じ流れです．

①　[白本](https://www.amazon.co.jp/dp/B00QJINS56/)の模擬試験1を解く．
②　解説はこの時点では解説はざっと流し，どこがダメなのか把握する．
③　②をもとに，INPUT→OUTPUTを繰り返す．時間のかけ方はOUTPUTの方を重視．
④　③を3周したら，模擬試験1，2を3周行う．間違えたところに×印を書き，弱点を浮き彫りにする．
⑤　更なるOUTPUTとして，[Ping-t](http://oraclemaster.info/exercise/1z0-065/)全問金になるまで繰り返す．
⑦　YouTubeに公式の[試験対策セミナー動画](https://www.youtube.com/watch?v=-SHXVSkre7Y)を見る．倍速でいい．

Ping-tのほうが実際の試験より難しいと感じました．
ここまでやって91点でした．
ケアレスミスはなくせない…．
ただ数問ほど正解の候補が指定数より多いんじゃないかって問題がありましたし，
誤記のせいで正解の候補から外れそうな選択肢があったりで，モヤモヤしました．
NULLSと書いてあったり，LONG型の制約について正解2つ選べとあるのに正解の選択肢が3つあったり．

#SQL試験対策でポイントだと思ったこと
**・SQLの試験はとりあえずOUTPUTの量が大事**
SQLをやり始めたばかりの人は特にコレで，とりあえずOUTPUTしまくった方がいいです．
SQLのOUTPUTには上にもありますが[Ping-t](https://ping-t.com/)というサイトがオススメです．
幸い無料で436問，全分野幅広くだけでなく，問題の質もよいですし，
スマホやPCでいつでもやれます．通勤退勤の電車の中でも毎日やるようにしました．
再試験まで全部金になるまでやりました．
<img width="1103" alt="842700e20ad0e1e2c7ba1a29420399bc.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156186/28bda12d-2220-3b00-379d-2d11cc1ef72c.png">

**・SQLの問題はひっかけ問題/重箱を突くような問題が多い**
以下のような問題が鬱陶しいと思いました．
・英語環境，日本語環境でのDATE型の注意点
・DATE型の暗黙型変換を用いた加減算
・DECODE関数，単純CASE式，検索CASE式＋戻り値の型のひっかけ＋COUNT()，SUM()の合わせもの
・NVL()，NVL2()，COALESCE()の引数の型のひっかけ＋DECODE()，単純CASE式，検索CASE式の合わせもの
・暗黙型変換を用いたひっかけ問題
・サブクエリの中にサブクエリ　＋　グループ関数いっぱい　← 可読性がサイアクで頭が痛くなる
・SELECT句，INSERT句にサブクエリ，CTAS文を用いた場合の制約

ここらへんが曖昧で万全じゃなければ，正直厳しいです．
型に関するひっかけ問題が鬱陶しいです．パズルみたいな問題も出ますし，
正直これ業務でやらんだろｗｗｗｗｗって問題もあります．
ただボク個人は「型変換や型の定義はしっかり覚えろ！！」というメッセージだと受け取りました．

**・SQLのオンライン試験は比較的頭が活発である朝に受けたほうがいい**
1回落ちた後は頭が疲れ気味な15:00-17:00に受けたんですが，
SQLが頭に入らず解読に時間かかったりしました．
2度目では朝9:30-11:30に受けたんですが，スルスル頭に入りました．(勉強量が1回目より違うのもありますが…)

#終わりに
オチはありません．以上になります．
とはいえ，現在業務ではOracleを使わずにPostgreDB + A5を用いているので，
Oracleのツールを使ってないんですが…．SQLの勉強は大変タメになりました．
他に注意としては，1度落ちて再受験する際は2週間は間を置かないといけません．