Oracle

【Oracle】SCN(System Change Number)完全ガイド|V$DATABASE・SCN ⇔ TIMESTAMP 変換・Flashback との関係まで解説

Oracle の SCN(System Change Number)を完全解説。SCN がデータベースの一貫性・リカバリ・Flashback の基盤となる仕組み・V$DATABASE.CURRENT_SCN・DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER で現在の SCN を取得する方法・SCN_TO_TIMESTAMP / TIMESTAMP_TO_SCN で SCN とタイムスタンプを相互変換する方法・ORA-01555 や Flashback で参照される UNDO SCN の概念・SCN ヘッドルーム(SCN Headroom)の確認方法と上限への対処まで実例で解説します。
Oracle

【Oracle】オブジェクト型(CREATE TYPE)完全ガイド|属性・メンバーメソッド・型の継承・MAP ファンクションまで解説

Oracle のオブジェクト型(Object Type)を完全解説。CREATE TYPE で属性とメンバーメソッドを持つオブジェクト型を定義する方法・CREATE TYPE BODY でメンバーメソッドの実装を記述する方法・STATIC メソッドと MAP / ORDER ファンクションで比較演算を実装する方法・UNDER キーワードでオブジェクト型の継承(サブタイプ)を実装する方法・TREAT / IS OF 演算子で型チェックと型変換を行う方法・オブジェクト型をテーブルの列型やコレクションの要素型として使う実務パターンまで実例で解説します。
Oracle

【Oracle】データディクショナリ完全ガイド|DBA_* / ALL_* / USER_* ビューの使い方とよく使うクエリまで解説

Oracle のデータディクショナリを完全解説。USER_* / ALL_* / DBA_* の3層構造の違いと使い分け・DBA_OBJECTS / USER_SOURCE / DBA_SEGMENTS / DBA_EXTENTS / DBA_DEPENDENCIES でスキーマ情報を調査する方法・DBA_CONSTRAINTS / DBA_INDEXES / DBA_COLUMNS でテーブル定義を確認する方法・V$ 動的パフォーマンスビューとデータディクショナリビューの違い・よく使うデータディクショナリクエリ集まで実例で解説します。
Oracle

【Oracle】ORA-28000 完全ガイド|the account is locked(アカウントロック)の原因・解除・監視・防止まで解説

Oracle の ORA-28000(the account is locked)エラーを完全解説。アカウントがロックされる原因(FAILED_LOGIN_ATTEMPTS・PASSWORD_LOCK_TIME のプロファイル設定)・ALTER USER xxx ACCOUNT UNLOCK でロックを解除する方法・DBA_USERS.ACCOUNT_STATUS / V$LOCKED_USERS でロック状態を確認する方法・SYS.USER_HISTORY$ でログイン失敗履歴を確認する方法・プロファイルの FAILED_LOGIN_ATTEMPTS を設定してロックポリシーをカスタマイズする方法・運用中に突然ロックされないようにするための監視と通知の設定まで実例で解説します。
Oracle

【Oracle】リサイクルビン・FLASHBACK DROP 完全ガイド|USER_RECYCLEBIN・PURGE・BIN$ オブジェクトの仕組みまで解説

Oracle のリサイクルビン(Recycle Bin)と FLASHBACK DROP を完全解説。DROP TABLE したテーブルがリサイクルビンに入る仕組みと BIN$ 命名規則・FLASHBACK TABLE ... TO BEFORE DROP でテーブルを元の名前に復元する方法・USER_RECYCLEBIN / DBA_RECYCLEBIN でリサイクルビンの内容を確認する方法・PURGE TABLE / PURGE RECYCLEBIN / PURGE DBA_RECYCLEBIN で完全削除する方法・RECYCLEBIN パラメータでリサイクルビンを無効にする方法・DROP TABLE ... PURGE で即時完全削除する方法まで実例で解説します。
Oracle

【Oracle】SQL Trace・tkprof 完全ガイド|10046トレースの取得から tkprof によるボトルネック分析まで解説

Oracle の SQL Trace と tkprof を完全解説。ALTER SESSION SET SQL_TRACE = TRUE / ALTER SESSION SET EVENTS '10046 trace name context forever, level 12' でトレースを有効にする方法・DBMS_SESSION.SET_SQL_TRACE・DBMS_MONITOR でセッション・サービス単位にトレースを収集する方法・トレースファイルの場所(USER_DUMP_DEST / V$DIAG_INFO)の確認方法・tkprof でトレースファイルを解析してボトルネック SQL を特定する方法・WAIT レベルのトレース(level 4/8/12)で待機イベントを記録する方法まで実例で解説します。
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 でランダムに行を取得するサンプリング方法・テストデータ一括生成スクリプトまで実例で解説します。