inflearn logo
知識共有
inflearn logo

一冊で完結するOracle Pro*C — レガシーシステムの保守と移行

仮想ショッピングモールのセラー月次精算バッチを、最後まで一貫して仕上げます。Pro*Cの基礎を学びながらソースを読み、潜んでいる4つの不具合を最小限のパッチで修正。配列処理によってDBへの往復を265,893回から359回に減らした後、ECPGとJDBCへ移植し、3つの結果が一行も違わないことを証明します。すべてのコマンドをDocker上のOracle Database FreeとPostgreSQLで実行します。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

Oracle
Oracle
PostgreSQL
PostgreSQL
SQL
SQL
DBMS/RDBMS
DBMS/RDBMS
database
database
Oracle
Oracle
PostgreSQL
PostgreSQL
SQL
SQL
DBMS/RDBMS
DBMS/RDBMS
database
database

この講座で身につくこと

  • Pro*Cソースをビルドし、エラーメッセージから、プリコンパイル・コンパイル・リンク・実行のどの段階の問題かを見分けます。

  • ホスト変数・VARCHAR・標識変数・SQLCA・WHENEVERを、落とし穴も含めて正確に使います。

  • 引き継いだバッチのコミット位置・ループ条件・NULL処理・文字列の不具合を見つけ、最小限のパッチで修正します。

  • 同じルールに基づく期待値SQLと、両側の差集合で修正した結果に回帰がないことを証明します。

  • 停止したバッチをセッション・待機イベントで診断し、作業記録と終了コードによって運用担当者が読み取れる形にします。

  • 配列FETCH・INSERTでDBとの往復を減らし、配列サイズ・コミット間隔・PREFETCHは実測に基づいて決定します。

  • Pro*CをECPGとJDBCに移行し、3つの結果をCSV・md5・合計で照合します。

引き継いだPro*Cバッチを修正・高速化し、PostgreSQLとJavaへ移行するまで

仮想ショッピングモールの出品者向け月次精算バッチを、最後まで一貫して扱います。Pro*Cの基礎を学んでソースを読み、隠れた不具合4つを最小限の修正で直し、配列処理によってDBとの往復を265,893回から359回に削減。その後、ECPGとJDBCに移植し、3つの結果が1行も異ならないことを証明します。すべてのコマンドをDocker上のOracle Database FreeとPostgreSQLで実行します。

Pro*Cは今も金融・流通・公共分野の夜間バッチで稼働していますが、学べる場所はOracleのマニュアルと、あちこちに散らばった記事くらいです。この講義では、実務向けの書籍を執筆した経験をもとに、文法を並べるのではなく、「引き継いだバッチが昨夜止まった」という状況から始めます。販売先ごとにコミットして半分だけ残った精算、配列FETCHループが最後の13社を取りこぼす問題、NULLの割引によって気づかれないまま消えた13,513件の注文、先頭に名前が付いて出力されるレポートを実際に再現し、同じルールで求めた期待値SQLと照合して、修正結果を証明します。最後に、同じバッチをPostgreSQLのECPGとJavaのJDBCに移植し、移行後によく発生する違い(空文字・CHARの空白・整数除算・ソート・トランザクションの中断)まで確認します。

この講義を終えると

  • Pro*Cソースをビルドし、エラーメッセージからプリコンパイル・コンパイル・リンク・実行のどの段階の問題かを見分けます。

  • ホスト変数・VARCHAR・指示変数・SQLCA・WHENEVERを、落とし穴も含めて正確に使います。

  • 引き継いだバッチのコミット位置・ループ条件・NULL処理・文字列の不具合を見つけ、最小限のパッチで修正します。

  • 同一ルールの期待値SQLと双方向の差集合を用いて、修正結果にリグレッションがないことを証明します。

  • 停止したバッチをセッション・待機イベントで診断し、作業記録と終了コードで運用担当者が読める形にします。

  • 配列FETCH・INSERTでDBへの往復を減らし、配列サイズ・コミット周期・PREFETCHを実測に基づいて決めます。

  • Pro*CをECPGとJDBCに移行し、3つの結果をCSV・md5・合計で照合します。

このような方におすすめです

  • 突然Pro*Cのバッチ処理を任されることになった開発者・DBA

  • OracleからPostgreSQLへの移行プロジェクトで、Cバッチの移行を担当する開発者

  • レガシーバッチを修正する前に、「安全に修正した」ことを証明する方法が必要な方

  • CとSQLは分かるけれど、埋め込みSQLは初めての方

カリキュラム(6セクション・41講・約303分)

  • セクション0. オリエンテーション — 完成版を先に見る

  • セクション1. Pro*Cの基礎と実習環境 — 実習環境の起動、最初のPro*Cプログラム、コンパイルの2段階とMakefile、コンパイルエラーの診断、ホスト変数とVARCHAR、標識変数とNULL、接続とトランザクション、データ型マッピングの落とし穴

  • セクション2. カーソルとエラー処理 — 単一行のSELECT INTO、カーソルによる複数行の読み取り、WHENEVERの落とし穴、SQLCAの読み方、明示的なエラー処理パターン、動的SQL、PL/SQL呼び出しとホスト構造体

  • セクション3. 引き継いだコードを読み、修正する — 引き継いだ精算バッチの概要、コードを読む順序、欠陥1:コミット位置、再実行しても安全なバッチ、欠陥2:消えた販売者、欠陥3:NULLの割引額、欠陥4:文字化け、修正後の回帰確認、停止したバッチの診断、作業記録と終了コード

  • セクション4. バッチ性能:一度に複数件 — 1件ずつ処理するコスト、配列FETCH、配列INSERT:FOR :n、配列サイズの実験、配列処理中の一部失敗、コミット間隔とPREFETCH

  • セクション5. PostgreSQL ECPG・Javaへの移行 — 移行計画の策定、スキーマとデータの移行、ECPGの最初のプログラム、精算バッチをECPGに移行、ECPGのエラー処理と配列、Java JDBCで書き直す、3つの結果を比較、移行リスクとロールバック、まとめ:実務チェックリスト

【実習環境】

DockerでOracle Database Free 23ai、Pro*C開発環境(Instant Client 23ai)、PostgreSQL 17、ECPG開発環境、Java 21を一度に起動します(./up.sh)。バーチャルスポーツ・アウトドア専門モール「ループマーケット」のセラー120社・注文商品20万件が固定ルールで生成され、各講義で./scenarios/sNN.shを実行すると、講義画面と同じ結果を確認できます。講義画面に表示されるすべての数値とエラーメッセージは、この実習を実際に実行した結果です。

事前知識

  • Cの基本文法(ポインター・構造体を読めるレベル)

  • SQL SELECT・INSERT・UPDATE

  • Dockerがインストールされたコンピューター(Apple Silicon・Intelのどちらも)

この講義で扱わないこと

  • C言語入門

  • Oracleのインストール・管理

  • PL/SQLの発展

  • OCIを直接プログラミングする

  • Spring Batch

案内

スライドのナレーションは合成音声です。すべてのデータは教育用の仮想データであり、数値は実行環境によって異なる場合があります。

次のような方に
おすすめです

受講対象

  • 突然Pro*Cバッチを任されることになった開発者・DBA

  • OracleからPostgreSQLへの移行プロジェクトで、Cバッチの移行を担当した開発者

  • レガシーバッチを修正する前に、「安全に修正した」ことを証明する方法が必要な方

  • CとSQLは知っているけれど、組み込みSQLは初めての方

前提知識

  • Cの基礎文法(ポインタ・構造体を読めるレベル)

  • SQL SELECT・INSERT・UPDATE

  • Dockerがインストールされたコンピューター(Apple Silicon・Intelどちらも可)

こんにちは
dorian05202988です。

経歴認証済み

20年以上にわたりデータベースとIT分野でキャリアを積んできたデータ職人です。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームに携わり、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。ゲーム・金融・ITサービス分野での経験をもとに、データベースとクラウドアーキテクチャについて解説しています。『オラ​​クル実務チューニング SQLパターン学習』と『Oracle Pro*C実務プロジェクト活用書』を出版し、AWS Summit 2018・2019と「データよ、遊ぼう」2020では、サーバーレス・データベースの選択・マルチデータベース戦略について発表しました。最近は、Bedrock LLMを利用したスロークエリの分析・チューニング提案、DBスペック算定の自動化、DBメタMCPサーバーとSlackボットを通じた照会フローを扱っています。開発者向けのデータベース自動化と、非開発者向けのAI業務活用について、各コースの対象者と目的に合わせた実習を通じて解説しています。AIの提案をそのまま適用するのではなく、結果の同一性・実行計画・観測条件を確認し、根拠が不足している場合は保留する判断基準を伝えています。会社の運用データや認証情報は講義資料に含めません。

もっと見る

カリキュラム

全体

41件 ∙ (5時間 2分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

dorian05202988の他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥1,622,873

19%

¥12,536