IBM Db2の概要と、基本操作の子ページへの入口です。子ページから選択してください。一覧確認と変更作業を分け、目的に合う項目へ進みます。
先に見る子ページ
- 接続先と登録情報:DB接続コマンド / データベース一覧の確認
- 表の確認:テーブル一覧の確認 / DB2のテーブル定義を確認する方法
- DDLの取得:create table文の生成 / テーブル定義からDDLを生成する方法(抽出と適用は別)
- 運用の確認:DBの設定確認 / テーブルスペースの容量の確認および拡張 / 特定スキーマの全テーブルの全カラム情報を取得する方法 / DB2のエラー一覧
各子記事も対象版と実行環境を確認してください。「確認および拡張」のように読み取りと変更が同居する記事は、容量確認だけのために変更コマンドを実行しません。
子ページの対象と確認順:容量確認・拡張、データ型、カラム変更はDb2 LUWの内容へ修復しました。誤って置換されていた他製品の本文も過去版に保持しています。容量はmember・ページサイズ・物理領域を分け、型は対象製品と精度を確認し、列変更は現在の定義と依存先を先に調べてください。各記事の旧コードにも注意を添えており、一覧/監視を読むこととALTER/REORG等の変更を行うことは別の作業です。対象版・権限・復旧方法と検証先を確認し、DB2カテゴリにあるという理由だけで任意の環境へ転用しません。旧DDL記事のパスワード引数の例も実資格情報で転用しません。
| この記事の要点 |
|
IBM Db2 とは
IBM Db2(旧称 DB2)は IBM が開発・販売するリレーショナルデータベース管理システム。1983 年にメインフレーム向けに登場し、後に Linux / Unix / Windows / クラウド向けに拡張されました。世界中の銀行・保険・航空会社など巨大な基幹システムで使われています。
Db2という名前でもLUW・z/OS・iでは管理方法やカタログが異なります。既存システムの調査では、接続先製品・版・OS・クライアントを先に特定してください。
Db2 のバリアント
| 製品名 | プラットフォーム | 特徴 |
|---|---|---|
| Db2 for LUW | Linux / Unix / Windows | LUW系。OS/版ごとの対応と配備条件を確認 |
| Db2 for z/OS | IBM Z メインフレーム | メインフレーム向け。LUWの管理手順で代替しない |
| Db2 for i | IBM i (AS/400 後継) | OS と一体。中堅企業の基幹で広く採用 |
| Db2 on Cloud | IBM Cloud | マネージド提供。現行プラン/提供条件を個別確認 |
| Db2 Warehouse | クラウド / オンプレ | 分析・データウェアハウス用カラム指向 |
エディション
- Db2 Community Edition: Community系の名称/容量/利用条件は世代と提供形態で照合する。旧Express-Cの条件を現在の契約条件へ引き継がない
- Db2 Standard Edition: 対象版の有償エディション。現行AI系列との対応も公式で確認
- Db2 Advanced Enterprise Server Edition (AESE): 旧世代の名称。現行Advanced/AI Advancedと名称・権利・制限を同一視しない
- Db2 Developer Edition: 旧名称を含むため、実際に取得する版の用途制限と利用条件を確認
インストールと CLI
下は旧記事の導入記録で、そのまま実行する推奨手順ではありません。「最速」の実測根拠はありません。固定のpassword・無条件のLICENSE=accept・全インターフェースへの50000番公開を転用しないでください。--privilegedはホストへの強い権限を与えます。公式の対象イメージが要求する前提を確認し、共有/本番ホストへ無検討で実行せず、隔離した検証環境と利用条件・保存先・到達制限を先に設計します。秘密値は承認した手段で管理し、envファイルもinspect/ファイル/バックアップへの露出を解消する保証にはなりません。
# Docker で Db2 Community を最速起動
docker run -itd --name mydb2 --privileged=true \
-p 50000:50000 \
-e LICENSE=accept \
-e DB2INST1_PASSWORD=password \
-e DBNAME=testdb \
ibmcom/db2
# コンテナに入る
docker exec -ti mydb2 bash -c "su - db2inst1"
# Db2 CLI 起動
db2
# 接続
db2 => CONNECT TO testdb
# SQL 実行
db2 => SELECT * FROM SYSCAT.TABLES FETCH FIRST 5 ROWS ONLY
# 終了
db2 => TERMINATE
典型的な SQL
下はCLPコマンドとSQLを含む旧説明例です。CREATE DATABASE/CONNECTはSQLアプリのクエリとしてそのまま送る命令ではありません。CREATE TABLE/INSERTは実データを変更するため、本番の既存MYDB/employeesへ貼り付けず、権限と隔離先を確認します。DB作成後の接続/DDL/DMLを一括実行してよいという意味ではありません。OFFSETの結果はデータの同時更新でも変わり、例の固定5件取得には順序の保証がありません。
-- データベース作成
CREATE DATABASE MYDB AUTOMATIC STORAGE YES
USING CODESET UTF-8 TERRITORY JP;
CONNECT TO MYDB;
-- テーブル作成
CREATE TABLE employees (
emp_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
name VARCHAR(100) NOT NULL,
dept_id INTEGER,
salary DECIMAL(10, 2),
hire_date DATE,
PRIMARY KEY (emp_id)
);
-- INSERT (Db2 は VALUES の前で OK)
INSERT INTO employees (name, dept_id, salary, hire_date)
VALUES ('Alice', 10, 50000.00, '2024-01-15');
-- ページネーション
SELECT *
FROM employees
ORDER BY emp_id
OFFSET 20 ROWS FETCH FIRST 10 ROWS ONLY;
-- カタログ情報
SELECT tabname FROM syscat.tables WHERE tabschema = 'DB2INST1';
Db2 と Oracle の違い
| 項目 | Db2 | Oracle |
|---|---|---|
| 手続き型言語 | SQL PL / PL/SQL 互換モード | PL/SQL |
| シーケンス | SEQUENCE / IDENTITY 両対応 | SEQUENCEに加え、IDENTITYの可否はOracleの対象版で確認 |
| SQL 標準準拠 | 対象構文をDb2の資料で確認 | 標準と独自拡張を対象版で確認 |
| サブクエリの FROM 句 | table-referenceの対象構文で確認 | Oracle側の対象構文で確認。一律比較しない |
| 分離レベル | UR / CS / RS / RR の 4 段階 | READ COMMITTED / SERIALIZABLE等。読取専用transactionとの区別も確認 |
| カラム指向 | BLUの可否/条件を製品・版・構成で確認 | Database In-Memoryの利用条件を契約/版で確認 |
Oracle 互換モード
下のCREATE DATABASE MYDB COMPATIBILITY_VECTOR ORAは誤った旧例です。DB2_COMPATIBILITY_VECTORはdb2setで扱うレジストリ変数で、CREATE DATABASEの句ではありません。後続のDUAL/ROWNUM/PL/SQLも機能の有効化・対象版・制限・CLPの文終端設定等が前提で、既存DBで無条件に使える完成スクリプトではありません。
Oracle向けアプリケーションの移行を支援する互換機能ですが、すべてのPL/SQL/型/意味論/周辺機能が無変更で動く保証ではありません。必要な機能・制約・性能・データの検証を個別に行います。
-- 互換モード有効化(DB 作成時)
CREATE DATABASE MYDB COMPATIBILITY_VECTOR ORA;
-- DUAL テーブル使用可
SELECT 'hello' FROM DUAL;
-- ROWNUM 使用可
SELECT * FROM employees WHERE ROWNUM <= 10;
-- PL/SQL ブロックも動く
BEGIN
FOR rec IN (SELECT * FROM employees WHERE dept_id = 10) LOOP
DBMS_OUTPUT.PUT_LINE(rec.name);
END LOOP;
END;
/
IBM Cloud Pak for Data との連携
Cloud Pak for Data は IBM のデータ + AI 統合プラットフォーム。Kubernetes 上で Db2 をはじめ Watson 系 AI サービス、データ仮想化、データガバナンスを統合提供します。
- Db2の対象サービス・Operator・基盤要件と対応版を確認して配備
- Watson Studio で機械学習
- データ仮想化で複数 DB / S3 / Hive を統一クエリ
- Watson Knowledge Catalog でガバナンス
クライアントツール
| ツール | 用途 |
|---|---|
db2 CLI | 標準対話型 SQL クライアント |
| IBM Data Studio | Eclipseベースのツール。導入版の対応/サポートを公式で確認 |
| Db2 Data Management Console | Web管理ツール。接続対象・対応版・運用条件を個別確認 |
| DBeaver / DataGrip | サードパーティ GUI (JDBC 接続) |
FAQ
Q: Db2 と DB2 の表記の違いは
A: 2017 年から IBM の公式表記が Db2(小文字 b)に変更されました。以前は DB2 と全大文字。意味は同じです。
Q: Db2 Express-C はまだ使えるか
A: Express-C等の旧名称と現在のCommunity/AI Communityの提供条件は分けて確認します。無償だから本番/商用利用可とは断定せず、ダウンロードする製品のライセンス文書と用途条件を照合してください。
Q: Db2 for z/OS は LUW と SQL 互換性があるか
A: 共通する構文があっても製品固有の型・カタログ・管理操作・実行上の制約があります。標準SQLらしい構文でも移植可能と即断せず、移行元/先の版と実データで検証します。
導入や移行の前に確認すること
- LUW/i/zOS、製品版・エディション・配備形態を特定する。クライアントとサーバーの版も分ける。
- 対応OS/資源/保存先/通信経路/バックアップ・復旧手順を確認し、学習用Dockerを本番構成と扱わない。
- Oracle互換機能は既存SQLの解析・型/NULL等の意味の差・制約・依存先・性能を検証する。公式11.5資料ではレジストリ変更後の再起動/再バインド、DB作成時にだけ影響する機能が説明されている。既存本番への設定変更や再起動を初手にしない。
無償版の容量と利用条件の確認先
2026年10月の確認では、IBMの製品価格ページのDb2 AI Communityに4コア/16GB、12.1製品機能表のCommunityに4コア/8GBの記載があります。同じ「Community」だけで数値を混ぜず、正確な製品名・mod pack・配備形態・取得ライセンスを照合してください。旧記載のストレージ100GBや商用利用可も一律条件として引き継ぎません。ページ間の違いを独自に解釈して権利を確定せず、対象製品の利用条件をIBMへ確認します。
公式:Db2製品・価格 / 12.1機能表 / 製品世代と配備形態 / Oracle互換変数の用途・反映条件 / 対象Dockerの公式導入条件 / Dockerの権限とポート公開。Db2の実機導入・ライセンス同意・設定変更・移行実行は本稿の改善では行っていません。
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09