Oracle

Oracle

【Oracle】ビュー(VIEW)完全ガイド|CREATE VIEW・更新可能ビュー・WITH CHECK OPTION・INSTEAD OF トリガーまで解説

Oracle のビュー(VIEW)を完全解説。CREATE OR REPLACE VIEW の構文と OR REPLACE・FORCE オプションの使い方・更新可能ビュー(Updatable View)の条件とビューを通じた INSERT/UPDATE/DELETE の制限・WITH CHECK OPTION で行の可視性を維持する方法・WITH READ ONLY で読み取り専用にする方法・INSTEAD OF トリガーで複雑なビューに対する DML を実装する方法・USER_VIEWS / USER_UPDATABLE_COLUMNS で定義と更新可能性を確認する方法まで実例で解説します。
Oracle

【Oracle】SYS_CONTEXT・アプリケーションコンテキスト完全ガイド|USERENV 組み込み情報・カスタムコンテキスト・VPD 連携まで解説

Oracle の SYS_CONTEXT とアプリケーションコンテキストを完全解説。SYS_CONTEXT('USERENV', 'SESSION_USER') でセッション情報(ユーザー名・IP アドレス・言語・DBアクセス名など)を取得する方法・CREATE CONTEXT と DBMS_SESSION.SET_CONTEXT でカスタムコンテキストを作成してセッション固有の値を保持する方法・LOCAL(セッション単位)と GLOBAL(セッション間共有)コンテキストの違い・VPD(Virtual Private Database)ポリシーと組み合わせてコンテキストを活用する方法・アプリケーションログイン情報をセッションに紐付けるパターンまで実例で解説します。
Oracle

【Oracle】ORA-01031 完全ガイド|insufficient privileges(権限不足)の原因・ロールと PL/SQL の落とし穴・対処法まで解説

Oracle の ORA-01031(insufficient privileges)エラーを完全解説。権限不足が起きる主な原因(オブジェクト権限・システム権限の未付与)・ロール経由の権限が PL/SQL(DEFINER RIGHTS)の中で有効にならない理由と対処法・EXECUTE IMMEDIATE や動的 SQL でのよくある ORA-01031 のパターン・USER_SYS_PRIVS / USER_TAB_PRIVS / SESSION_PRIVS で現在の権限を確認する方法・GRANT 文でオブジェクト権限・システム権限を付与する手順まで実例で解説します。
Oracle

【Oracle】INTERVAL データ型完全ガイド|INTERVAL YEAR TO MONTH・INTERVAL DAY TO SECOND による期間計算まで解説

Oracle の INTERVAL データ型を完全解説。INTERVAL YEAR TO MONTH で年・月の期間を扱う方法・INTERVAL DAY TO SECOND で日・時・分・秒(マイクロ秒まで)の期間を扱う方法・NUMTOYMINTERVAL / NUMTODSINTERVAL で数値を INTERVAL に変換する方法・DATE / TIMESTAMP と INTERVAL の四則演算・EXTRACT で INTERVAL から特定の要素を取り出す方法・勤怠管理・SLA 計算・期限管理などの実務ユースケースまで実例で解説します。
Oracle

【Oracle】Flashback Version Query・Flashback Transaction Query完全ガイド|VERSIONS BETWEEN で行レベルの変更履歴を追跡する方法まで解説

Oracle の Flashback Version Query と Flashback Transaction Query を完全解説。VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE で特定行の過去の変更履歴を一覧する方法・VERSIONS_XID・VERSIONS_OPERATION・VERSIONS_STARTTIME などの擬似列の使い方・FLASHBACK_TRANSACTION_QUERY ビューで XID からトランザクションを特定して変更内容を確認する方法・Flashback Table との違い・UNDO_RETENTION の設定と参照できる履歴の期間・AS OF TIMESTAMP との使い分けまで実例で解説します。
Oracle

【Oracle】NOLOGGING完全ガイド|REDO 生成量の削減・FORCE LOGGING との関係・バッチ処理高速化まで解説

Oracle の NOLOGGING モードを完全解説。NOLOGGING で REDO ログの生成を最小限に抑えて大量データのロードを高速化する方法・NOLOGGING が有効になる操作(CREATE TABLE AS SELECT・CREATE INDEX・ダイレクト・パス INSERT)と無効の操作の違い・FORCE LOGGING でデータベース全体の NOLOGGING を無効化する方法・NOLOGGING 使用後のメディア障害リスクとバックアップ戦略・ALL_TABLES / ALL_INDEXES の LOGGING 列で設定を確認する方法まで実例で解説します。
Oracle

【Oracle】DBMS_PARALLEL_EXECUTE完全ガイド|大規模テーブルをチャンク分割して並列バッチ更新・エラー再実行まで解説

Oracle の DBMS_PARALLEL_EXECUTE パッケージを完全解説。数千万〜数億件のテーブルを ROWID 範囲またはキー範囲でチャンクに分割して並列 UPDATE/DELETE する方法・CREATE_TASK / CREATE_CHUNKS_BY_ROWID / RUN_TASK の基本フロー・チャンク単位でコミットしてロールバックセグメントを圧迫しない方法・処理に失敗したチャンクだけを再実行する RESUME_TASK・USER_PARALLEL_EXECUTE_TASKS / USER_PARALLEL_EXECUTE_CHUNKS ビューで進捗を確認する方法まで実例で解説します。
Oracle

【Oracle】ORA-12899 完全ガイド|列の値が大きすぎるエラーの原因・VARCHAR2 BYTE/CHAR・マルチバイト文字の対処法まで解説

Oracle の ORA-12899(value too large for column)エラーを完全解説。VARCHAR2 の BYTE セマンティクスと CHAR セマンティクスの違い・AL32UTF8 / UTF8 文字セットでの日本語(全角文字)の BYTE 数・NLS_CHARACTERSET と NLS_LENGTH_SEMANTICS の確認方法・ALTER TABLE MODIFY で列サイズを拡大する方法・SUBSTRB / LENGTHB でバイト単位のトリミングを行う方法・JDBC / ODP.NET から INSERT 時に ORA-12899 が発生する典型パターンと対処法まで実例で解説します。
Oracle

【Oracle】バインド変数完全ガイド|ハードパース削減・CURSOR_SHARING・アダプティブカーソル共有まで解説

Oracle のバインド変数(Bind Variables)を完全解説。ハードパースとソフトパースの違い・バインド変数がライブラリキャッシュヒット率を高めるしくみ・EXECUTE IMMEDIATE の USING 句でバインド変数を渡す方法・CURSOR_SHARING パラメータ(EXACT / FORCE)の特徴と副作用・バインド変数ピーキング(Bind Variable Peeking)と実行計画の固定化問題・Adaptive Cursor Sharing(アダプティブカーソル共有)で異なる値に最適な計画を使い分ける方法まで実例で解説します。
Oracle

【Oracle】パイプライン表関数(Pipelined Table Function)完全ガイド|PIPELINED・PIPE ROW によるストリーミング処理・並列実行まで解説

Oracle のパイプライン表関数(Pipelined Table Function)を完全解説。PIPELINED キーワードと PIPE ROW() を使って FROM 句で呼び出せる関数を作成する方法・通常の TABLE 関数との違い(ストリーミングでメモリ効率が高い)・戻り値の型定義(コレクション型・オブジェクト型)の書き方・PARALLEL ENABLE PARTITION BY で並列クエリに対応する方法・ETL 処理・大規模ログ変換・CSV 分割など実務的なユースケースまで実例で解説します。
Oracle

【Oracle】ORA-04068 完全ガイド|パッケージ状態が破棄されるエラーの原因・対処・PRAGMA SERIALLY_REUSABLE まで解説

Oracle の ORA-04068 エラー(existing state of packages has been discarded)を完全解説。ORA-04068 が発生する仕組み(パッケージの再コンパイル後にセッションの状態が無効になる)・2 回目の呼び出しで自動的に復帰するメカニズム・アプリケーション側でのリトライ処理の実装方法・PRAGMA SERIALLY_REUSABLE でパッケージ変数をセッション間でリセットする方法・コネクションプール環境での ORA-04068 の特性・パッケージの再コンパイル時の影響を最小化する方法まで実例で解説します。
Oracle

【Oracle】LATERAL・CROSS APPLY・OUTER APPLY完全ガイド|Oracle 12c 以降の外部参照サブクエリ・グループ内 Top-N まで解説

Oracle 12c で導入された LATERAL 句と CROSS APPLY / OUTER APPLY を完全解説。LATERAL でインラインビューから外部クエリの列を参照できる仕組み・CROSS APPLY で結合先のインラインビューが行を返す場合のみ結合する方法・OUTER APPLY で結合先が空でも LEFT OUTER JOIN のように NULLで補完する方法・LATERAL を使ったグループ内 Top-N(各部門の上位3人の給与など)の書き方・相関サブクエリや RANK() OVER による従来の方法との比較まで実例で解説します。
Oracle

【Oracle】近似クエリ(Approximate Query Processing)完全ガイド|APPROX_COUNT_DISTINCT・APPROX_PERCENTILE で大規模データを高速集計する

Oracle 12.2 以降で使えるアプリケーション近似クエリ(Approximate Query Processing)を完全解説。APPROX_COUNT_DISTINCT で COUNT(DISTINCT) より高速にカーディナリティを推定する方法・APPROX_PERCENTILE で中央値・パーセンタイル値を高速計算する方法・APPROX_SUM / APPROX_COUNT / APPROX_MEDIAN(Oracle 19c 以降)の使い方・近似クエリの誤差保証と正確クエリとの使い分け基準・リアルタイムダッシュボード・大規模ログ分析での活用方法まで実例で解説します。
Oracle

【Oracle】DBMS_RANDOM完全ガイド|乱数・ランダム文字列の生成・テストデータ作成・ランダムサンプリングまで解説

Oracle の DBMS_RANDOM パッケージを完全解説。DBMS_RANDOM.VALUE で 0〜1 の乱数や範囲指定の乱数を生成する方法・DBMS_RANDOM.STRING で大文字・小文字・英数字混合のランダム文字列を生成する方法・DBMS_RANDOM.NORMAL で正規分布の乱数を生成する方法・DBMS_RANDOM.SEED でシードを設定して再現性のあるテストデータを生成する方法・ORDER BY DBMS_RANDOM.VALUE でランダムに行を取得するサンプリング方法・テストデータ一括生成スクリプトまで実例で解説します。
Oracle

【Oracle】DBMS_ASSERT完全ガイド|動的 SQL の SQL インジェクション対策・入力値の検証方法まで解説

Oracle の DBMS_ASSERT パッケージを完全解説。動的 SQL に渡す入力値の SQL インジェクションリスクを軽減する仕組み・ENQUOTE_NAME でオブジェクト名をダブルクォートでエスケープする方法・ENQUOTE_LITERAL で文字列リテラルをシングルクォートでエスケープする方法・SCHEMA_NAME / SQL_OBJECT_NAME / QUALIFIED_SQL_NAME で識別子の存在を検証する方法・EXECUTE IMMEDIATE と組み合わせた安全な動的テーブル名・列名の使い方まで実例で解説します。
Oracle

【Oracle】不可視列(Invisible Column)完全ガイド|SELECT * に表示しない列の追加・段階的スキーマ移行・Oracle 12c 以降の新機能

Oracle 12c で導入された不可視列(Invisible Column)を完全解説。INVISIBLE 列は SELECT * や DESCRIBE に表示されない特殊な列・CREATE TABLE / ALTER TABLE MODIFY で列を不可視にする方法・不可視列を明示的に参照する方法と INSERT 時の扱い・既存アプリケーションを変更せずに新列を追加するユースケース(段階的スキーマ移行)・USER_TAB_COLUMNS.HIDDEN_COLUMN で不可視列を確認する方法・不可視列に作成できるインデックスや制約の制限まで実例で解説します。
Oracle

【Oracle】MATCH_RECOGNIZE完全ガイド|行パターンマッチングで時系列データのイベントを SQL で検出する

Oracle 12c で導入された MATCH_RECOGNIZE 句を完全解説。正規表現ライクなパターンで行の並びを検索する仕組み・PATTERN 句・DEFINE 句・MEASURES 句の記述方法・ONE ROW PER MATCH と ALL ROWS PER MATCH の違い・AFTER MATCH SKIP でマッチ後の開始位置を制御する方法・株価の上昇→下降パターン検出・ユーザーセッション集計・ウィンドウ関数(分析関数)では難しい連続パターンの検出まで実例で解説します。
Oracle

【Oracle】マルチテーブル INSERT 完全ガイド|INSERT ALL・INSERT FIRST で 1 つの SELECT から複数テーブルに同時挿入する

Oracle のマルチテーブル INSERT を完全解説。INSERT ALL で同じレコードを複数テーブルに同時挿入する方法・条件付き INSERT ALL(WHEN〜THEN〜INTO)で条件に応じて挿入先を振り分ける方法・INSERT FIRST で最初に一致した条件のテーブルにのみ挿入する方法・ETL でステージングテーブルからファクト・ディメンションテーブルに一括ロードするパターン・INSERT ALL とシーケンスを組み合わせる際の注意点・EXECUTE IMMEDIATE でのマルチテーブル INSERT の制限まで実例で解説します。
Oracle

【Oracle】テーブル圧縮完全ガイド|基本圧縮・Advanced Row Compression・ALTER TABLE MOVE COMPRESS まで解説

Oracle のテーブル圧縮を完全解説。基本圧縮(COMPRESS)とAdvanced Row Compression(ROW STORE COMPRESS ADVANCED)の違い・基本圧縮はダイレクトパス INSERT のみで有効な理由・Advanced Row Compression で通常の DML(INSERT/UPDATE)にも圧縮を適用する方法・ALTER TABLE MOVE COMPRESS で既存テーブルに圧縮を適用する方法・DBA_TABLES.COMPRESSION で圧縮状態を確認する方法・DBMS_COMPRESSION で圧縮率を事前に見積もる方法まで実例で解説します。
Oracle

【Oracle】補足ロギング(Supplemental Logging)完全ガイド|LogMiner・GoldenGate 向けの設定と DBA_LOG_GROUPS での確認方法まで解説

Oracle の補足ロギング(Supplemental Logging)を完全解説。補足ロギングが必要な理由(LogMiner・Oracle GoldenGate・レプリケーション)・データベースレベルの補足ロギング設定(最小・ALL・主キー・一意キー・外部キー)・テーブルレベルの補足ロググループの作成方法・V$DATABASE および DBA_LOG_GROUPS / DBA_LOG_GROUP_COLUMNS で設定を確認する方法・補足ロギングが REDO ログサイズに与える影響と適切な設定の選び方まで解説します。