本記事は、Oracle Cloud Infrastructure Advent Calendar 2022の Day 11 として書いています。
猫背が過ぎて上を向くことができなくなったk.otsukaです。
過去3度に渡ってデータベース管理ことDatabase Managementについて記事を書かせていただきました。本記事では、結局何が良いのか、導入することで何ができるようになるのか、個人的イケてる機能3選を紹介してみます。データベース管理導入検討の参考になれば幸いです。(今現在何ができないのかについても少し触れてみます)
以前のブログはこちら
・DBCSのメトリックが確認できるようになった!
・データベース管理の機能紹介
・DBCSのPDBを「データベース管理」で管理する
目次
表領域作成がサクッとできる
OracleDBで表領域を作成するときは呪文のようなコマンドを実行して作成することが基本かと思いますが、データベース管理では誰でも簡単に作成することができます。
下記図は一例ですが、何も弄らずにただ名前だけ決めて作成することで、下記コマンドで実行したような表領域を作成することができます。
「BIGFILE」による表領域作成や「一時表領域」の作成ももちろん可能です。「SMALEFILE」で作成したときの追加データファイル作成も簡単な操作で行うことができます。
ただし、データファイル名やデータファイルの格納場所を任意の場所に指定することはできません。
CREATE TABLESPACE 【テーブル名】 DATAFILE SIZE 1000M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
表領域の使用率監視ができる
Oracle Cloudのモニタリングと連携することで、データベース管理に登録しているOracleDBの表領域使用率監視を実装することができます。表領域に限らずメトリックとして取得されているものは漏れなく監視可能です。取得されているメトリックについての詳細は公式ドキュメントご確認ください。
アラーム作成までの詳細な設定は割愛しますが、下記表を参考に設定することで表領域が枯渇したタイミングでメール通知などの通知を行うことができます。
設定名 | 設定値 |
メトリック・ネームスペース | oracle_oci_database |
メトリック名 | AllocatedStorageUtilizationByTablespace |
ディメンション名① resourceName | 監視設定を行うOracleDBのCDB(PDB) |
ディメンション名② tablespaceName | 監視設定を行う表領域 |
パフォーマンス・ハブによるリアルタイム分析
Enterprise EditionのOracleDB限定で使える機能ですが、今現在のOracleDBの情報を字のごとくリアルタイムで分析・確認することができます。主に「ASH分析」と「SQLモニタリング」を使用することになるかと思うので、それぞれが何なのか、がんばって紹介してみます。ちなみにAWRレポートも作成可能です。
※詳しい情報は公式ドキュメントをご確認ください。
ASH分析
ASHとは「Active Session History」の略となります。OracleDBのパフォーマンス分析に使用することが多いようです。OracleDBの分析と言えばAWRレポートが真っ先に思いつくかと思いますが、AWRレポートはインスタンス(データベースが使用するメモリやプロセスを管理している領域)の統計情報を取得する仕組みに対して、ASHはアクティブなセッション(SQL、ユーザ)ごとに統計情報を取得します。
現時点ではこれ以上の情報の紹介ができませんが、DBA管理者にとっては良い機能であることに間違いはありません!!!
SQLモニタリング
指定の時間帯に実行されたSQLの情報をグラフィカルに確認することができる機能です。「実行SQL」「実行ユーザ」「実行時間」「リクエスト数」などが表示されるので、SQLによるOracleDBへの負荷が直観的にわかります。
さらに、SQLモニタリング内に表示されているSQL IDを選択するとそのSQLが使用しているCPUやメモリ使用量も確認することができます。
しかし、SQLモニタリングに表示させるには下記条件のいずれかに当てはまっている必要があります。
①SQLの実行時間が5秒以上である
②SQLがパラレルクエリとして実行されている
③ヒント句「 /*+MONITOR*/」をSELECT句に仕込む
また、条件を満たしていてもデフォルトではSQLの実行計画ステップ数が「300」を超えると表示されません。隠しパラメータ「_sqlmon_max_planlines」を設定することでステップ数の上限を変更することができます。詳しい情報はサポートドキュメントをご確認ください。
下記コマンドはサポートドキュメントに記載されているコマンド例となります。
SQL> alter system set "_sqlmon_max_planlines"=500 scope=both;
つまり、OracleDBで実行されている全てのSQLが表示されるわけではないことにご注意ください。
残念なこと(リリースを待っていること)
本機能が本領発揮するには下記機能のリリースが必要だと思っています。私が記事を書くことでリリースされることをとっっっても期待しています。
① スキーマが作れない
表領域の作成はできますがスキーマの作成はできません。せっかくOCI画面上から表領域を作成しても従来の方法(DDLのクエリやSQL Developerを使う 等)でスキーマを作成しなければなりません。であれば、表領域の作成もそっちで作成しますよね…。
② ユーザ(スキーマ)一覧は参照しかできない
パスワードの変更、対象ユーザへのロール付与、オブジェクト権限やシステム権限の付与ができそうな画面表示をしていますが、それらは一切できません。ロックされたユーザのアンロックだけでも欲しいですがそういった操作もできません。直観的に現在のロールや権限周りの確認はできるので、良い機能ではありますがもう一声欲しいところ。。。③ BaseDBのPDBが対応していない。 【追記_2023/01/16】対応しました!!!なんとかしてくれました!
過去記事でも何度か触れましたが、まだ対応してません。なんとかしてください。
終わりに
本記事でデータベース管理についての記事は4つ目でした。たぶんもう書くことはありませんが、今後データベース管理に光が当たることを心待ちにしております。