【ORACLE MASTER Platinum DBA 2019 実技試験】(9) 練習問題5 パーティションの管理

# 目指せ！ORACLE MASTER Platinum DBA 2019合格
#### - ORACLE Certified Master DBA 2019 -

:::note info
まずは最初の記事をチェック！
[試験概要](https://qiita.com/nisshii0/items/57822fb5cf72f3636cbe)
:::


オラクルマスター Platinum DBA 2019（Oracle Certified Master）を目指す方に、合格者の観点からアドバイスを送ります。
当然守秘義務がありますので、主に試験概要ページから参照可能な情報の読み解き方のアドバイスになります。
何回かに分けていきたいと思います。


# 全体目次
第1回：[試験概要](https://qiita.com/nisshii0/items/57822fb5cf72f3636cbe
)
第2回：[学習方法（インストラクターのアドバイスを読み解く）](https://qiita.com/nisshii0/items/fbd6782f43c16c1873df)
第3回：[実機演習環境を整える](https://qiita.com/nisshii0/items/c0e912b8b00a0b590198)
第4回：[試験範囲の予想（Platinum試験とGold試験）](https://qiita.com/nisshii0/items/32fbb5167ff3eb3f3f51)
第5回：[練習問題1 PDBの作成](https://qiita.com/nisshii0/items/4d07ba173d4c41fa9957)
第6回：[練習問題2 表領域の管理  ](https://qiita.com/nisshii0/items/0838c6f3fe7f8e21a065)
第7回：[練習問題3 リカバリカタログの管理](https://qiita.com/nisshii0/items/1641de47c0b4aab45363)
第8回：[練習問題4 フラッシュバック・データベースの構成](https://qiita.com/nisshii0/items/b6b9ad7e86b414482381)
第9回：[練習問題5 パーティションの管理]★本記事です
～　ネタがあれば続けていきたい　～

## 本記事の前提
オラクル社公式サイトで公開されているPlatinum試験のチェックリストと、
GoldおよびPlatinumなどの公開された学習コンテンツ、ドキュメント等からの予想問題になります。
実試験の内容とは一切関係ありません。

## 試験勉強するときの考え方
Platinum DBA 2019 実技試験は、その名のとおり「実技」です。
試験勉強には、実機での演習がかかせません。
試験対策問題集はリリースされていないため、自分で練習問題を考えていく必要があります。

それではチェックリストの「パーティションの管理」に関するマニュアルをみてみましょう。

><B>参考ドキュメント</B>
>[Oracle Database 19c VLDBおよびパーティショニング・ガイド＞4.パーティションの管理）](https://docs.oracle.com/cd/F19136_01/vldbg/partition-admin.html)

Platinum DBA 2019の試験チェックリストには「パーティションの管理」という項目があります。
これはGoldの分野には出てこない新トピックです。新しく勉強する必要がありますね。

マニュアルを探してみると前述のとおり「VLDBおよびパーティショニング・ガイド」があり、
そのなかにチェックリストと同じ章名の「パーティションの管理」という章があります。
他にも多くの章がありますが、まずはここをみてみましょう。

マニュアルにはまず「2.パーティション化の概念」を理解するよう記載がありますので
前段として「パーティショントは何か」「どんな種類があるか」「どういうときに有効か」など概要を確認しておきましょう。
またパーティションに使用できる索引「グローバル索引」「ローカル索引」の違いも確認しておいてください。


以下はマニュアルの記述を問題文形式にした練習問題です。

## 練習問題
こちらも前記事と同じく、1問あたり3分以内を目指してください。
今回は慣れていないと少し時間がかかる問題もあるかもしれません。


#### 練習問題1.
・以下の表を作成してください。（非パーティション表）

>＜ sales ＞
  prod_id       NUMBER(6)
  time_id       DATE
  quantity_sold NUMBER(3)
  amount_sold   NUMBER(10,2)

#### 練習問題2.
・表領域を４つ作成してください。表領域の名前とサイズは以下とします。
>tsa  100M
  tsb  100M
  tsc  100M
  tsd  100M

#### 練習問題3.
・以下の表を作成してください。
　レンジパーティション表として作成します。要件は以下です。
 　 1.time_id列をパーティション化列とします。その列の値をパーティションキーにしてください。
    2.パーティションは四半期ごとに作成してください。
    3.それぞれ対応する表領域にデータが格納されるようにします。
    4.パーティションの名前と、対応づける表領域は以下としてください。

>sales_q1_2006 (表領域 tsa)  2006年4月1日以降のデータ格納されるようにする
      sales_q2_2006 (表領域 tsb)  2006年7月1日以降のデータ格納されるようにする
      sales_q3_2006 (表領域 tsc)  2006年10月1日以降のデータ格納されるようにする
      sales_q4_2006 (表領域 tsd)  2007年1月1日以降のデータ格納されるようにする

表名と列名は以下とします。
>＜ sales2 ＞
  prod_id       NUMBER(6)
  time_id       DATE
  quantity_sold NUMBER(3)
  amount_sold   NUMBER(10,2)

#### 練習問題4.
・それぞれのパーティションにデータが格納されることを確認します。
　以下のデータをINSERTしてください。
 time_id列には以下の値を挿入します。
それぞれ正しくINSERTできましたか？もしINSERTできないものがあれば理由を確認してください

>2006/1/1
2006/4/1
2006/7/1
2006/10/1
2007/1/1
2007/4/1

#### 練習問題5.
・SELECT文では「パーティション名を指定して」特定のパーティションに含まれるデータのみSELECT可能です。
  sales_q1_2006パーティションに格納されたデータを確認してください。
  sales_q2_2006パーティションに格納されたデータを確認してください。
  sales_q3_2006パーティションに格納されたデータを確認してください。
  sales_q4_2006パーティションに格納されたデータを確認してください。

　格納されている行数が異なるパーティションがあります。
  理由を説明できますか？

#### 練習問題6.
・練習問題3で作成したパーティションに複雑なオプションを追加したsales3表を作成します。
　表レベルで LOGGINGオプションと、STORAGEオプション（初期 100K、NEXT 50K）を指定してください。
 　行移動のオプションも有効にします。
　各パーティションでは、STORAGEオプション(初期 20K NEXT 10K)を指定してください。


#### 練習問題7.
・sales2表をメンテナンスします。
　新しいパーティション「sales_q1_2007」を追加してください。
　表領域は tsa を使用します。2007/4/1以降のデータを格納されるようにします。
　
#### 練習問題8.
・パーティションのデータをTRUNCATEします。
　sales_q2_2006に含まれるデータのみ「TRUNCATE」してください。
 　※DELETE文ではなく、TRUNCATE文を使用してください


## 考え方のまとめ
その他、たくさんの種類のパーティションがあります。
他のパーティションについても確認しておきましょう。
マニュアルの見方は上と同様