PL/SQL 【PL/SQL】エラーログを自動収集するDBMS_ERRLOGの使い方 データ移行やバルク更新の最中に一部の行だけが制約違反で落ちてしまい、処理全体が中断してやり直しになる――そんな無駄を避けるために用意されているのがDBMS_ERRLOGとLOG ERRORS句です。挿入や更新、削除、MERGEといったDML... 2025.10.08 PL/SQL
PL/SQL 【PL/SQL】UTL_HTTPを使ったWeb API連携の実装方法 Web APIとの連携をPL/SQLだけで完結させたい場合、UTL_HTTPは最も汎用的な選択肢です。GETでのデータ取得、POSTでのJSON送信、ヘッダー操作、タイムアウト、HTTPSやプロキシ、認証トークンの扱いまで一通りカバーできま... 2025.10.08 PL/SQL
PL/SQL 【PL/SQL】セキュリティコンテキスト(DBMS_SESSION.SET_CONTEXT)の利用例 アプリケーションとデータベースを連携させる際、ユーザーごとに異なる条件でアクセス制御をしたい場面があります。PL/SQLでは「セキュリティコンテキスト」を活用することで、セッション単位で任意の値を格納し、その値に基づいたアクセス制御や条件分... 2025.10.08 PL/SQL
PL/SQL 【PL/SQL】結果キャッシュ(FUNCTION RESULT_CACHE)の活用方法 PL/SQLでは同じ入力に対して同じ結果を返す純粋関数を多用するケースがあります。しかし大規模な計算や集計を伴う関数を何度も呼ぶと、パフォーマンスが大きく低下することもあります。そこで役立つのがOracleの「結果キャッシュ(FUNCTIO... 2025.10.08 PL/SQL
PL/SQL 【PL/SQL】JSON_TABLEとPL/SQLを組み合わせたJSON処理 JSONをRDBの力で高速に扱いたいとき、OracleのJSON_TABLEは最強の相棒になります。JSON列やCLOBに入っているドキュメントを、その場でリレーショナルな行・列に展開できるため、JOINや集計、インデックスの恩恵をフルに受... 2025.10.08 PL/SQL
PL/SQL 【PL/SQL】外部ファイルを読み書きする方法(UTL_FILEの基本と注意点) データベースからサーバ上のファイルを直接読み書きしたい場面では、PL/SQL標準パッケージのUTL_FILEが有効です。ログ出力やCSVの生成、取り込み前の軽い整形などをデータベース内だけで完結でき、バッチ処理の自動化にも向いています。ここ... 2025.10.07 PL/SQL
PL/SQL 【PL/SQL】メール送信を自動化する方法(UTL_MAIL / UTL_SMTP活用) 社内バッチの完了通知やエラーログの送信、問い合わせ受付の自動応答など、メール送信はPL/SQLでの自動化と相性が良い機能です。Oracleには高レベルなUTL_MAILと、より細かく制御できるUTL_SMTPという2つの標準パッケージがあり... 2025.10.07 PL/SQL
PL/SQL 【PL/SQL】プロシージャの権限管理とAUTHIDの設計ベストプラクティス PL/SQLのプロシージャやパッケージは「誰の権限で実行されるか」によって安全性と使い勝手が大きく変わります。設計の要はAUTHID(Definer/Invoker)と、実行権限・オブジェクト権限の付与方針をどう組み合わせるかです。ここでは... 2025.10.07 PL/SQL
PL/SQL 【PL/SQL】DBMS_RLSによる行レベルセキュリティの実装方法 行レベルセキュリティ(Row-Level Security, RLS)は、同じ表でもユーザーや状況に応じて「見える行」を自動的に絞り込む仕組みです。OracleではDBMS_RLS(Virtual Private Database, VPD... 2025.10.07 PL/SQL
PL/SQL 【PL/SQL】DBMS_WARNINGでコンパイル時の警告を制御する方法 PL/SQLのコードをコンパイルするとき、Oracleは潜在的な問題や非推奨な書き方を警告として通知してくれます。これらは実行エラーではないため無視されがちですが、将来的な不具合やパフォーマンス低下を防ぐ重要なヒントでもあります。DBMS_... 2025.10.07 PL/SQL
PL/SQL 【PL/SQL】DBMS_TRACEで処理の実行経路を追跡する方法 PL/SQLの実行経路(どのプロシージャや関数がどの順で呼ばれ、どの行で例外が起きたか)を可視化したいときは、DBMS_TRACEを使うとSQLトレースでは見えにくい「PL/SQL呼び出しの足跡」を取得できます。DBMS_PROFILERや... 2025.10.06 PL/SQL
PL/SQL 【PL/SQL】パーティションテーブルとPL/SQLの組み合わせ活用例 大規模データを扱うOracleでは、パーティションテーブルを前提にPL/SQLを設計すると性能と運用性が一気に上がります。読み取りはパーティションプルーニングで最小I/Oに、書き込みはパーティション単位のDMLやEXCHANGEで一括・高速... 2025.10.06 PL/SQL
PL/SQL 【PL/SQL】FORALLとSAVE EXCEPTIONSでバルクDMLのエラーを個別処理する方法 大量データを高速に処理する際、PL/SQLのFORALLはDMLをまとめて送ることでコンテキストスイッチを削減できる強力な構文です。ただしバッチ内の一部行だけが制約違反で失敗すると、通常は全体が例外で中断されてしまいます。SAVE EXCE... 2025.10.06 PL/SQL
PL/SQL 【PL/SQL】DBMS_LOCKを使った排他制御の実装方法 アプリケーションの同時実行制御をPL/SQLだけで実現したい場合、DBMS_LOCKは強力な選択肢になります。テーブル行ロックでは表現しづらい「任意の名前に対する排他」や「ジョブ名ごとの同時実行抑止」を、データ更新を伴わずに安全に行えます。... 2025.10.06 PL/SQL
PL/SQL 【PL/SQL】DBMS_ALERTとDBMS_PIPEでプロセス間通信を行う方法 Oracleデータベース内のセッション間で軽量に通知やメッセージをやり取りしたいとき、PL/SQLの標準パッケージであるDBMS_ALERTとDBMS_PIPEが役に立ちます。DBMS_ALERTは「イベント通知」に向いたコミット連動型の仕... 2025.10.06 PL/SQL
PL/SQL 【PL/SQL】エディションベースリディフィニション(EBR)とパッケージ管理 エディションベースリディフィニション(Edition-Based Redefinition, EBR)は、Oracle Databaseが提供するアプリケーションの無停止リリースを実現する仕組みです。従来はパッケージやビューを変更する際にセ... 2025.10.05 PL/SQL
PL/SQL 【PL/SQL】WITH FUNCTION句を使ってSQL内に関数を埋め込む方法 Oracle Database 12c以降では、SQL文のWITH句の中にPL/SQL関数を埋め込める「WITH FUNCTION句」が利用できます。これにより、そのSQL専用のローカル関数を定義し、外部スキーマに依存しない自己完結したSQ... 2025.10.05 PL/SQL
PL/SQL 【PL/SQL】マルチテーブルINSERTをPL/SQLから活用する方法 マルチテーブルINSERTは一度の表スキャンで複数の表へ同時に挿入できるOracle独自の拡張構文です。ETLやデータ移送、親子関係の同時作成、条件分岐での仕分けなどで威力を発揮し、PL/SQLからも通常のINSERTと同様に実行できます。... 2025.10.05 PL/SQL
PL/SQL 【PL/SQL】ファイングレイン監査(FGA)とPL/SQLの活用 ファイングレイン監査(FGA: Fine Grained Auditing)は、Oracleが提供する高度な監査機能で、特定の条件に合致したデータアクセスだけを記録できます。従来の監査が「誰がどの表にアクセスしたか」といった大まかな単位だっ... 2025.10.05 PL/SQL
PL/SQL 【PL/SQL】Invoker RightsとDefiner Rightsの違いと使い分け PL/SQLのストアドプロシージャやファンクションは、デフォルトでは「作成者の権限」で実行されます。これをDefiner Rights(定義者権限)と呼びます。一方でInvoker Rights(呼び出し者権限)を指定すると、実行時に呼び出... 2025.10.05 PL/SQL