忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

Oracleの待機イベント

今回はOracleの待機イベントについて調査、検証しました。 待機イベントとはプロセス(セッション)が処理できず(CPUを使用できず)、他の処理が完了するのを待っているイベント(出来事、アクション)です。たとえばプロセスA(セッションA)に対して「db …

OCJP Bronze SE / Silver SE11 受験記

この記事は、JPOUG Advent Calendar 2023 16日目の記事です。15日目は wmo6hash さんの記事 「働き方の新しいスタイル」への仕事道具最適化'23 - wmo6hash::blog でした。 去年はOracle Databaseの従来型監査の検証について書きましたが、今年はOCJPを受験し…

OracleのAWR(概要)

今回はOracleのAWRについて調査、検証しました。 AWR(Automatic Workload Repository:自動ワークロードリポジトリ)とはOracle 10gから登場した機能で、データベースの統計情報とワークロード(処理の負荷)情報をスナップショットとして定期的(デフォル…

Oracleの実行計画(SPM)

今回はOracleの実行計画のSPMについて調査、検証しました。 SPM(SQL Plan Management:SQL計画管理)とはOracle 11gから登場した機能で、SQLごとに実行計画を固定化したり、統計情報の変化によって新たに生成された最適な実行計画を候補として登録したりな…

Oracleの実行計画(表結合)

今回はOracleの実行計画のうち、テーブルの結合について調査、検証しました。 テーブルの結合方法は4種類(ネステッドループ結合、ソートマージ結合、ハッシュ結合、直積結合)あり、それぞれ下記の図のような特徴があります。なお、3つ以上の表を結合する場…

Oracleの実行計画(全表スキャンと索引スキャン)

今回はOracleの実行計画について調査、検証しました。 実行計画とは・SQLの実行手順(データへのアクセスパス、テーブルの結合方法、テーブルの結合順序の組み合わせから構成される)・オプティマイザ(CBO)が実行コストを基に作成する 【補足】CBO(コストベー…

OracleのSELECT文の評価順序

今回はOracleのSELECT文の評価順序について調査、検証しました。 SELECT文は列別名を指定できる句がありますが、一部の句(WHERE句、GROUP BY句など)では列別名を指定できません。理由はSELECT文で指定する句の評価順序があるためです。SELECT文で指定する句…

OracleのSQLの動き(ハードパースとソフトパース)

今回はOracleのSQLの具体的な処理の流れについて調査しました。 SQLは主に下記の順番で処理されます。SQLの発行→カーソルオープン→SQL文の解析(文法チェック、解析、実行計画の作成など)→SQL文の実行→(フェッチ)→カーソルクローズ※フェッチはSELECTのみSQL文…

OracleのSQLの動き(参照と更新)

今回はOracleのSQLの動きを調査しました。参照系はSELECT、更新系はUPDATEを使用してSQLの動きを見てみました。 SQLの処理の流れSQLが実行されると主に3つのフェーズに分けて処理されます。 PARSE(解析フェーズ)・SQL文の構文、意味の妥当性も含めた文法チェ…

Oracleの統計情報(クラスタ化係数編)

今回はOracleのクラスタ化係数について調査しました。 Oracleの統計情報 - 忘れかけのIT備忘録で少しだけ触れましたが、クラスタ化係数は索引の列データと表の列データの分布度(データの格納順がどれくらい異なるかの指標)です。索引の列データに格納されて…

Oracleの統計情報(ヒストグラム編)

今回はOracleの統計情報のうち、ヒストグラムについて調査しました。 Oracleの統計情報 - 忘れかけのIT備忘録で少しだけ触れましたが、ヒストグラムは表の列データの分布状況です。セレクティビティ(行の選択率)のコストを見積もるために使用される統計情報…

Oracleの統計情報

今回はOracleの統計情報について検証しました。 統計情報(オプティマイザ統計とも呼ばれます)は、SQLの処理(ワークロード)の見積もりに必要なデータ(サーバやOS、データベースの特性を数値化したもの)です。オプティマイザが実行計画を作成/選択する際、アク…

sqlplusの/nologオプション

今さらですがsqlplusで/nologオプションを指定するメリットを知ったので軽く検証しました。 /nologオプションSQL*Plusを起動する際、データベースに接続しない メリット一例として、データベースに接続せずにSQL*Plusを起動するため、UNIX系OSでpsやhistory…

Oracleの読取り一貫性

今回はOracleの読取り一貫性について調査しました。 読取り一貫性とは、特定のトランザクションがSELECT文(データ読込み)を開始した時点で確定しているデータを読み込ませる機能です。いったんOracleのSELECT文(データ読込み)の動きを復習します。 SELECT中…

トランザクションのACID特性と分離レベルの概要

今回はトランザクションのACID特性と分離レベルについて調査しました。 ACID特性とは、トランザクションで処理するデータの整合性を保つ(データの信頼性を保証する)ために必要な4つの特性です。Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、…

Oracleのロック検証(デッドロック編)

今回はOracleのデッドロックについて検証しました。 デッドロックとは、2つ以上のセッションのトランザクションがお互いにロック解除待ち状態に陥る状態です。お互いのセッションのトランザクションが相手のロック解除を待っているため、いずれのセッション…

Oracleのロック検証(TXロック、TMロック編)

今回はOracleのロックについて検証しました。 ロックとは、複数のセッションでデータを同時に変更できないようにする仕組み(排他制御)です。Oracleに限らず、たいていのRDBMSはロックを使用してデータの整合性を確保します。セッションが1つしか存在しないシ…

Oracleの監査の検証(統合監査編)

前回の従来型監査で検証した項目を統合監査で検証した場合、実際の動きにどのような違いがあるのか検証しました。 統合監査についてざっくり復習します。 概要12cから登場した新しい監査機能で、従来型監査(必須監査、DBA監査、標準監査(標準データベース監…

Oracleの監査の検証(従来型監査編)

この記事は、JPOUG Advent Calendar 2022 16日目の記事です。15日目はNAKASHOU06さんの記事「~クラウド1年生に贈るクラウド利用Tips~ - Qiita」でした。 今回はOracleの監査について検証しました。監査はシステムのセキュリティ(機密性)を確保する手段の1…

LogMiner検証

OracleユーティリティのLogMinerについて、机上の知識はあるものの、実務経験が無いため、実際の動きを検証しました。 LogMinerは、REDOログファイルやアーカイブログファイルに記録された更新情報(SQLなど)を分析できるツールです。ただし、LogMinerを使え…

Data Guardの保護モード

Data Guardの保護モードについて調査しました。 製品バージョンによって、保護モードの設定方法が変わるものもありますが、今回は12cR1を調査対象としています。 保護モードには3つあります。・最大保護モード・最大可用性モード・最大パフォーマンスモード …

Data GuardのMRPプロセス障害検証(RAC構成の場合)

Data GuardのスタンバイサイトがRAC構成だった場合、片ノードで稼働しているMRPプロセスがリアルタイム適用中に異常終了したときの動きを検証してみました。 ■検証環境、前提、設定情報Data Guardのスナップショット・スタンバイ検証 - 忘れかけのIT備忘録 …

Data Guardのフェイルオーバー/フェイルバック検証(その2)

今回はバックアップからのリストア/不完全リカバリで旧プライマリDBを復旧してみようと思います。 ■検証環境、前提、設定情報Data Guardのスナップショット・スタンバイ検証 - 忘れかけのIT備忘録 と同様 ■検証パターン①手動フェイルオーバー②フェイルバック…

Data Guardのフェイルオーバー/フェイルバック検証(その1)

Data Guardのフェイルオーバー/フェイルバックについて、机上の知識はあるものの、実務経験が無いため、実際の動きを検証しました。 フェイルオーバーは、プライマリDBをData Guard構成から切り離し、スタンバイDBをプライマリDBにロール変更(昇格)させます…

Data Guardのスイッチオーバー/スイッチバック検証

Data Guardのスイッチオーバー/スイッチバックについて、机上の知識はあるものの、実務経験が無いため、実際の動きを検証しました。 スイッチオーバーは、プライマリDBとスタンバイDBでロールを入れ替えます。プライマリ側のシステムメンテナンスなど、プラ…

Data Guardのスナップショット・スタンバイ検証

Data Guardのスナップショット・スタンバイについて、机上の知識はあるものの、実務経験が無いため、実際の動きを検証しました。 スナップショット・スタンバイ(スナップショット・スタンバイ・データベース)は一時的にプライマリDBと同期解除された更新可能…

RACデータベースのポリシー管理型DBから管理者管理型DBへの変換検証

某検証環境を事前準備する際、RACデータベースをポリシー管理型データベースから管理者管理型データベースに変換する作業が発生しました。せっかくなので検証結果としてブログに残しておこうと思います。なお、「Oracle Database 11g Release 2 RAC実践ガイ…

RACのDBデータ取得の流れ

RACのDBデータ取得の流れについて調査しました。RAC触ったことある人なら誰でも知っているよ!と言われそうな気がしますが、復習がてら備忘録に残します。 RACもシングルインスタンスも制御ファイルからデータファイルの格納場所を検出し、DBインスタンス経…

RACの起動の流れ

RACの起動シーケンスについて調査しました。RAC触ったことある人なら誰でも知っているよ!と言われそうな気がしますが、復習がてら備忘録に残します。 RACはクラスタ管理ソフトウェアにOracle Clusterwareを使用しています。Oracle Clusterwareは、Grid Infr…

RACのインスタンスリカバリ

今回はRACのインスタンスリカバリについて調査しました。 シングルインスタンスもRACもインスタンスリカバリの仕組みは一緒です。シングルインスタンスの場合、インスタンスリカバリのみですが、RACの場合、インスタンスリカバリとクラッシュリカバリがあり…