技術ブログ
目次
Oracle ACEの渡部です。 6/24に開催した 「出版記念特別企画:黒本著者が解説 ORACLE MASTER Silver DBA 試験対策セミナー」 に、非常に多くの方にご参加頂きました。ありがとうございました。
オンラインセミナーで頂戴した質問について、当日回答できないかったものも含め、回答を文章として残しておきたいと思います。 時間の関係上、乱筆すみません。不明点などあれば、Twitterで@wrcsus4 (私のTwitterアカウント)までご連絡をお願いします。
歴史ある翔泳社さんの資格対策書籍シリーズである、いわゆる「黒本」の新Silver DBA版です。
正式な書名は「オラクルマスター教科書 Silver DBA Oracle Database Administration I」です。
この書籍は、2020年2月に開始された新しいORACLE MASTER試験である 「Oracle Database Administration I(試験番号1Z0-082)」 の試験対策書籍です(以下、「新Silver DBA黒本」と記載)。新Silver DBA黒本は、2021年6月時点で、1Z0-082試験に対応する唯一の試験対策書籍です。
この試験に合格すると、新体系ORACLE MASTER 2019における資格「ORACLE MASTER Silver DBA」を取得できます。
詳細は以下をご確認下さいませ。
ORACLE MASTER Silver DBA 2019黒本を執筆しました
以下の構成でセミナーを進めました。
なお、Oracle Live SQLについては、以下の記事も参考にしてください。
環境構築が不要なORACLE MASTERのSQL学習方法(Oracle Live SQL)
オンラインセミナーでいただいた質問に回答します。
なお、自分の質問が抜けている、質問の主旨を取り違えているなどあれば、 Twitterで@wrcsus4 (私のTwitterアカウント)までご連絡をお願いします。
遅延書き込みはどれくらい遅延されるのでしょうか?
データベースバッファキャッシュの遅延書き込みは、書き込みの負荷軽減・平準化を狙ったものです。
遅延書き込みにおける遅延時間を大きくことには、以下の論点があります。
このメリットとデメリットはトレードオフの関係にあるため、Oracleでは、「インスタンスリカバリにこれ以上は時間を要してほしくない!」という時間を初期化パラメータFAST_START_MTTR_TARGETに設定できるようになっています(要Oracle EE)。
すなわち、インスタンスリカバリに要する時間は、最大FAST_START_MTTR_TARGETかかるのは許容するけれど、この範囲において、できる限り書き込みの負荷を軽減してほしい。という動作を実現できるようになっています。Oracle凄い!
REDOログの重複は意味がありますか。
REDOログファイルは、以下の用途における、実行されたトランザクションの回復(再実行、復元)のために使用されます。
このため、REDOログファイルが失われると、実行されたトランザクションは失われ、回復することはできません。 この観点で、REDOログファイルは重要なものであるため、多重化することが推奨されています。
特にありませんでした。
Oraleを定期的に再起動する場合、推奨オプションはどれでしょうか?次回起動時に整合性が取れるならABORT一択な気がしますが・・・。
結論からいうと、日常運用におけるSHUTDOWN ABORTコマンドの使用は推奨されません。代わりに、SHUTDOWN IMMEDIATEコマンドの使用をお勧めします。
確かに、メカニズム的にはSHUTDOWN ABORTコマンドを使用してインスタンスを強制終了しても、次回再起動に整合性は回復されるのですが、なにかしらの不確定要因により、整合性は回復されない可能性もないわけではありません、というか、できるかぎり変なことが起こりにくい運用を考えるのが望ましい方策でしょう。くりかえし何度も何度も実行される処理であれば、なおさらです。
リスナーを経由させるメリットは何でしょうか。
端的に言ってしまうと、「Oracleではリモート接続においてはリスナーを経由する設計になっているから。」ということになります。 言い換えると、リモート接続では必ずリスナーを経由する必要があり、リスナーを経由しなければリモート接続はできないということです。
すこし話を広げると、リスナー相当のコンポーネントを使用しないDBMS製品は存在します。MySQLやPostgreSQLにはリスナーに相当するコンポーネントは存在せず、インスタンスに相当するものが直接リモート接続を受け付けます。 なので、当然Oracleでもそういう実装も「論理的には」可能なのですが、Oracleの開発者はそのような設計にはしなかったようです。詳細な説明はできませんが、まぁ、歴史的な経緯もあっての判断でしょうね。
1つのサーバー上で、DBを複数起動する場合、Oracleでは、Portは別にする必要ないとのコメントがありましたが、データベースサービス名を分ける必要があるのでしょうか?また、Portを分けても問題ないのでしょうか?
PORTを分けたいのは、FireWallでセキュリティ制御したいためですが、そういう場合は、データベースサービス名の他に、PORTも分けても問題ないでしょうか?という意図の質問です。
(試験範囲外の質問です)
特定のデータベースへの接続可否をファイアウォールで制御したい。という話と理解しました。 私が採用するかどうかは別にして、やるならば以下の構成になるでしょうね。
リスナー1 (ポート1521) → データベースA
リスナー2 (ポート1522) → データベースB
設計の話になるので、実際には様々な観点で検討をすることになると思います。
ロールを入れ子できる数は上限があるのでしょうか?入れ子にしすぎるとメンテナンスが大変になりそうです。
確認した限り、特に制限はないようでした。
もし、業務上の理由などで確実な答えが必要な場合、製品サポートに問い合わせてみてください。
ロール管理をしやすくするツールはありますか?
ツールではないのですが、以下のMy Oracle Supportドキュメントで紹介されているスクリプトが活用できると思います。
CREATE TABLESPACE文で、AUTOEXTENDED ONを指定しない場合、デフォルトでは、自動拡張ONで表領域は作成されるでしょうか?
SIZEを省略した場合のデフォルト値はあるでしょうか?
を参照してください。実務的には、誤解のないよう、明示的に値を設定することを推奨します。
一部未回答の質問があります。回答は後日準備予定です。
コミット済みのUNDOをUNDO保存期間で消されないように守るステータスがあるのはなぜですか?
UNDO保存期間は、UNDO_RETENTION初期化パラメータに設定します。 UNDO保存期間のUNDOデータを上書きされないようにすることで、以下を実現できます。
外部表を使うメリットは何でしょうか?バックアップ代わりに使うのでしょうか?
ORACLE_DATAPUMPアクセスドライバの外部表を使うと、データのアンロード、ロードによるデータベース間のデータ移動を実現できます。
ORACLE_LOADERアクセスドライバの外部表を使うと、外部データを通常の表のように問合せできます。 CSVファイルのままでは、SELECT ... WHERE なんていうSQLを使ってデータは抽出できません(最近は便利なユーティリティもあるにはありますが)。
以下のような活用方法も考えられるでしょう(試験範囲外)。
OracleでRAWデバイスを使用するのは目的やメリットはあるでしょうか?最近は、ファイルシステムやASMが一般的でしょうか?
RAWデバイスはOracle Database 12.1以降サポート対象外です。
Oracle Database 12c以上では、RAWデバイスのブロック・ファイル記憶域はサポートされていません。RAWデバイス上に格納されているすべてのデータ・ファイルを、Oracle ASM、クラスタ・ファイル・システムまたはネットワーク・ファイル・システム(NFS)に移行する必要があります。
新体系ORACLE MASTER 2019の変更点と留意点 – 18c/19c対応
ORACLE MASTER Platinumとは何か / コーソルはPlatinum取得者数No.1!