mcpField
O
oracle

oracle

github.com/full-stack-skillsデータ・データベース183 回インストール4 週間前に更新
リポジトリ

oracle について

oracle は、Oracle Database を扱う開発者やデータベース担当者向けのスキルです。SQL、PL/SQL、性能、安全性、バックアップ、高度な機能を、用途別の案内とリファレンスで整理しています。

主な機能

  1. 01Oracle SQLの構文と関数
  2. 02PL/SQLのプロシージャとトリガー
  3. 03実行計画と性能チューニング
  4. 04バックアップ、リカバリ、Data Guard
  5. 05セキュリティ、パーティション、Flashback

活用シーン

  1. 01OracleクエリやPL/SQLの作成
  2. 02遅いクエリの実行計画の調査
  3. 03データベースのバックアップや復旧の計画
  4. 04パーティションやセキュリティ手法の参照

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/database-skills --skill oracle

インストール後、Claude Code で/oracleを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.txt
agents/
openai.yaml
examples/
01-plsql-procedure.md
02-awr-analysis.md
03-rman-backup.md
04-dataguard-setup.md
references/
01-functions-string.md
02-functions-date.md
03-analytic-functions.md
04-plsql-guide.md
05-performance-tuning.md
06-backup-recovery.md
07-dataguard-rac.md
08-security.md
09-sql-syntax.md
10-features.md

詳細

Oracle Database — エンタープライズ向けリレーショナルデータベース

Oracle Database は、世界をリードするエンタープライズ向けリレーショナルデータベース管理システムです。高可用性、高性能、強固なセキュリティ、そして豊富な機能(RAC、Data Guard、Flashback、高度なパーティショニング、マテリアライズドビューなど)で知られています。

ワークフロー — 使用判断ツリー

遇到 Oracle 相关需求时,按以下顺序决策:

Step 1: 明确场景
├── 编写 SQL 查询/DDL/DML?       → references/09-sql-syntax.md
├── 使用内置函数?                  → 字符串/日期/聚合 → references/01-functions-string.md / 02-functions-date.md
├── 窗口/分析函数?                 → references/03-analytic-functions.md
├── 编写 PL/SQL?                  → references/04-plsql-guide.md
├── 性能调优/执行计划?             → references/05-performance-tuning.md
├── 备份恢复?                     → references/06-backup-recovery.md
├── Data Guard / RAC?             → references/07-dataguard-rac.md
├── 安全/权限/审计?                → references/08-security.md
└── 分区/物化视图/Flashback/AQ?   → references/10-features.md

Step 2: 选择工具
├── 交互式查询 → SQL*Plus / SQL Developer / DBeaver
├── 批量脚本   → SQL*Plus 静默模式
├── PL/SQL 调试 → SQL Developer / TOAD / PL/SQL Developer
└── 自动化运维 → OEM / 脚本

Step 3: 确定环境
├── 版本 → 19c (LTS), 21c/23c (最新)
├── 架构 → 单实例 / RAC / Data Guard / RAC+DG
├── CDB/PDB? → 12c+ 多租户
└── 字符集 → AL32UTF8, ZHS16GBK

使用する場合/使用しない場合

✅ 使用する場合❌ 使用しない場合
エンタープライズ向けトランザクション処理(ACID を厳格に保証)単純なキー値キャッシュ(Redis を使用)
複雑な SQL、複数テーブルの JOIN、レポート分析ドキュメントストレージ(MongoDB を使用)
PL/SQL のストアドプロシージャ/パッケージ/トリガー全文検索が中心(Elasticsearch を使用)
大量データのパーティショニング(TB/PB 規模)リアルタイムのインメモリ計算(Redis/Spark を使用)
高可用性(RAC/Data Guard)軽量な組み込み用途(SQLite を使用)
データウェアハウス/OLAP 分析時系列データ(InfluxDB/TimescaleDB を使用)
データセキュリティと監査(TDE/FGA/VPD)シンプルな CRUD の迅速な開発(PostgreSQL を使用)
大規模な OLTP トランザクションシステムドキュメント形式の階層データのみが必要(PostgreSQL JSONB を使用)

対応範囲 — 機能の境界

✅ 完全に適している⚠️ 条件付きで適している❌ 適していない
OLTP/OLAP 混合ワークロード大量の非構造化データ(オブジェクトストレージを使用)Redis の代わりにインメモリキャッシュとして使う
複雑なトランザクションとデータ整合性異種データベース間の統合(GoldenGate/DB Link)リアルタイムストリーム処理(Kafka/Storm)
PL/SQL によるビジネスロジックのカプセル化マルチライター構成(RAC の共有ストレージへの書き込み)シンプルな CRUD プロトタイプの迅速な反復開発
データのパーティショニングとマテリアライズドビュー地理的に分散したマルチアクティブ構成(GoldenGate を使用)複数モデルのデータを一元管理する
RAC クラスターによる高可用性超低レイテンシー(<100μs)のクエリ全文検索エンジンの代わりに全文検索に使う
きめ細かなセキュリティ監査ドキュメントデータベースとして大量の JSON を保存するオブジェクトストレージの代わりに使う

範囲外の場合は、PostgreSQL(オープンソースのリレーショナルデータベース)、MongoDB(ドキュメントデータベース)、Redis(キャッシュ)、Elasticsearch(全文検索)、MySQL(軽量な Web 用)を検討してください。


SQL 構文クイックリファレンス

Oracle の SQL の違いは、主に以下の点にあります。詳細は references/09-sql-syntax.md を参照してください。

特性説明参照ファイル
データ型VARCHAR2, NUMBER, CLOB, BLOB, TIMESTAMP, INTERVALreferences/09-sql-syntax.md
シーケンスAUTO_INCREMENT の代わりに CREATE SEQUENCE を使用references/09-sql-syntax.md
MERGEUPSERT(存在する場合は更新し、存在しない場合は挿入)references/09-sql-syntax.md
INSERT ALL複数テーブルへの条件付き挿入references/09-sql-syntax.md
CONNECT BY階層クエリ(組織ツリー)references/09-sql-syntax.md
PIVOT/UNPIVOT行から列/列から行への変換references/09-sql-syntax.md
LISTAGG列を文字列に集約references/09-sql-syntax.md
MODEL 句スプレッドシート形式の行間計算references/09-sql-syntax.md
MATCH_RECOGNIZEパターンマッチング(12c+)references/09-sql-syntax.md
FLASHBACK QUERYフラッシュバックによる履歴データのクエリreferences/09-sql-syntax.md
WITH (CTE)/再帰 CTE共通テーブル式references/09-sql-syntax.md
疑似列ROWNUM, ROWID, LEVEL, ORA_ROWSCNreferences/09-sql-syntax.md
集合演算UNION, INTERSECT, MINUS(Oracle の差集合演算)references/09-sql-syntax.md

関数クイックリファレンス

カテゴリ主な関数参照ファイル
文字列SUBSTR, INSTR, REPLACE, REGEXP_LIKE/SUBSTR/REPLACE, TRANSLATE, LISTAGGreferences/01-functions-string.md
数値ROUND, TRUNC, MOD, CEIL, FLOOR, POWER, GREATEST/LEASTreferences/01-functions-string.md
日付SYSDATE, EXTRACT, TO_DATE/TO_CHAR, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, NEXT_DAY, TRUNC(日付版)references/02-functions-date.md
変換TO_CHAR/TO_NUMBER/TO_DATE, CAST, CONVERT, SCN_TO_TIMESTAMPreferences/02-functions-date.md
NULL 処理NVL, NVL2, COALESCE, NULLIF, LNNVLreferences/01-functions-string.md
集計COUNT, SUM, AVG, MEDIAN, STATS_MODE, ROLLUP/CUBE, GROUPINGreferences/03-analytic-functions.md
分析/ウィンドウROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG/LEAD, FIRST_VALUE/LAST_VALUE, RATIO_TO_REPORTreferences/03-analytic-functions.md

高度な機能の一覧

機能説明参照ファイル
PL/SQL ブロック構造DECLARE/BEGIN/EXCEPTION/ENDreferences/04-plsql-guide.md
カーソル(Cursor)明示的/暗黙的/REF CURSOR/SYS_REFCURSORreferences/04-plsql-guide.md
ストアドプロシージャ/関数CREATE OR REPLACE PROCEDURE/FUNCTIONreferences/04-plsql-guide.md
パッケージ(Package)仕様部+本体、カプセル化/オーバーロード/グローバル変数references/04-plsql-guide.md
トリガー(Trigger)DML/INSTEAD OF/DDL/システムイベントreferences/04-plsql-guide.md
コレクション型連想配列/ネストした表/VARRAYreferences/04-plsql-guide.md
動的 SQLEXECUTE IMMEDIATE / DBMS_SQL / FORALL / BULK COLLECTreferences/04-plsql-guide.md
例外処理定義済み/ユーザー定義/RAISE_APPLICATION_ERRORreferences/04-plsql-guide.md
EXPLAIN PLAN / DBMS_XPLAN実行計画の確認と分析references/05-performance-tuning.md
AWR/ASH/ADDMパフォーマンス履歴/アクティブセッション/自動診断references/05-performance-tuning.md
SQL Tuning AdvisorSQL の自動最適化に関する推奨事項references/05-performance-tuning.md
DBMS_STATS統計情報の収集と管理references/05-performance-tuning.md
SPM (SQL Plan Management)実行計画ベースラインの管理references/05-performance-tuning.md
RMANデータベース全体/増分バックアップとリカバリreferences/06-backup-recovery.md
EXPDP/IMPDP論理バックアップのインポート/エクスポートreferences/06-backup-recovery.md
アーカイブログモードARCHIVELOG / NOARCHIVELOGreferences/06-backup-recovery.md
Data Guard物理スタンバイ/論理スタンバイ/Switchover/Failoverreferences/07-dataguard-rac.md
RACクラスター/シーケンス構成/グローバル待機references/07-dataguard-rac.md
ユーザー/ロール/権限システム権限/オブジェクト権限/Profilereferences/08-security.md
FGA(きめ細かな監査)条件に基づく SQL 監査references/08-security.md
VPD(仮想プライベートデータベース)行レベルのセキュリティポリシーreferences/08-security.md
データリダクション(Data Redaction)動的なデータマスキングreferences/08-security.md
TDE(透過的データ暗号化)列レベル/表領域レベルの暗号化references/08-security.md
表領域とデータファイルCREATE/ALTER TABLESPACEreferences/10-features.md
パーティション表RANGE/LIST/HASH/複合/インターバルパーティションreferences/10-features.md
インデックスB-Tree/ビットマップ/関数/ドメインインデックスreferences/10-features.md
マテリアライズドビュークエリ書き換え/高速リフレッシュ/ON COMMITreferences/10-features.md
Flashbackフラッシュバッククエリ/表/削除/データベースreferences/10-features.md
AQ(アドバンストキューイング)メッセージキューreferences/10-features.md

Gotchas — よくある落とし穴

#問題リスク解決策
1ROWNUM と ORDER BY の順序が誤っているTop-N にならないサブクエリでソートするか、FETCH FIRST(12c+)を使用
2暗黙的な型変換によるインデックスの無効化全表スキャンWHERE hire_date = TO_DATE('2024-01-15','YYYY-MM-DD')
3NOT IN サブクエリに NULL が含まれると結果が空になるデータ損失NOT EXISTS に置き換える
4SELECT INTO でデータがない場合、NO_DATA_FOUND が発生するプロシージャの終了事前に確認するか、EXCEPTION で捕捉する
5バインド変数のピーキング実行計画の偏りACS / SQL Profile を使用
6統計情報が古すぎるオプティマイザーが誤った計画を選択するDBMS_STATS で定期的に収集する
7OLTP でビットマップインデックスを使用する行ロックによるブロックOLTP では B-Tree インデックスを使用
8大量の行を UPDATE する際に FORALL を使用しないパフォーマンスが極めて低いFORALL で DML を一括処理する
9パーティションプルーニングを無視する全パーティションをスキャンするWHERE 条件にパーティションキーを含める
10トリガーの再帰/変異表(ORA-04091)トリガーの失敗複合トリガー/自律型トランザクション/文レベルのトリガー
11ビュー/プロシージャ内で SELECT * を使用する構造変更後に動作が異常になる列名を明示する
12大量の DISTINCT で不適切な JOIN を覆い隠す大きなパフォーマンスコストJOIN 条件を確認する
13マテリアライズドビューの ON COMMIT リフレッシュが DML のパフォーマンスに影響する書き込み操作が遅くなるログを作成し、ON DEMAND で定期的にリフレッシュする
14WHERE 句で列に関数を適用するインデックスの無効化範囲検索に書き換える
15DBMS_OUTPUT で大量のデータを出力するバッファーのオーバーフローデバッグ専用とし、本番環境ではログテーブルを使用する

FAQ

Q1: VARCHAR2 と NVARCHAR2 の違いは何ですか? VARCHAR2 はデータベース文字セット(AL32UTF8/ZHS16GBK)を使用し、NVARCHAR2 は各国語文字セット(AL16UTF16)を使用します。一般的な用途には VARCHAR2、多言語対応には NVARCHAR2 を推奨します。

Q2: ROWNUM と ROW_NUMBER() の違いは何ですか? ROWNUM は疑似列(先に割り当ててから並べ替え)で、ROW_NUMBER() は分析関数(並べ替えてから番号を割り当て)です。

Q3: Oracle と PostgreSQL の主な違いは何ですか?

特性OraclePostgreSQL
自動採番SEQUENCE / IDENTITY (12c+)SERIAL / GENERATED AS IDENTITY
文字列VARCHAR2VARCHAR / TEXT
空文字列'' = NULL'' ≠ NULL
再帰CONNECT BY / WITH RECURSIVEWITH RECURSIVE
ページネーションROWNUM / FETCH FIRSTLIMIT/OFFSET
UPSERTMERGEINSERT...ON CONFLICT
表領域ありなし

Q4: UNDO と REDO の違いは何ですか? REDO は変更を記録し(再実行/リカバリ)、UNDO は変更前のデータを記録します(ロールバック/一貫性読み取り/フラッシュバック)。

Q5: マテリアライズドビューはどのような場合に使用しますか? 大規模な集計クエリで遅延を許容できる場合、基表の変更頻度が低い場合、データベース間のキャッシュが必要な場合、クエリの書き換えが必要な場合です。

Q6: パーティション表でよくある誤解は何ですか? パーティション化してもクエリが必ず高速化されるわけではありません(パーティションキーが必要です)。あらゆる大規模表の問題を解決できるわけではなく、パーティション数は多いほどよいわけでもありません。また、OLTP にもパーティションは適しています。

Q7: 読み取り一貫性とは何ですか? Oracle は UNDO を使用して、SELECT がロックを取得せず、書き込みによってブロックされることもなく実行できるようにします。クエリ開始時の SCN を使用して、一貫性のあるバージョンを読み取ります。

Q8: デッドロックにはどのように対処しますか? Oracle は 3 秒以内に自動検出し、犠牲となる文をロールバックして ORA-00060 を発生させます。ベストプラクティスは、アクセス順序を統一し、トランザクションを短くすることです。

Q9: CDB と PDB とは何ですか? 12c 以降のマルチテナント環境では、CDB はコンテナデータベース、PDB はプラガブルデータベースです。1 つの CDB には最大 4096 個の PDB を含められます。

Q10: KILL SESSION の後も接続が切断されないのはなぜですか? KILLED としてマークされ、次に SQL を実行したときに切断されます。KILL SESSION 'sid,serial#' IMMEDIATE を実行すると、すぐに切断できます。

Q11: REDO ログの切り替え頻度が高すぎる場合はどうすればよいですか? REDO ログのサイズを大きくし(切り替えは 15~30 分ごとを推奨)、ロググループ数を増やします(少なくとも 3~4 グループ)。

Q12: ORA-01555 "Snapshot Too Old" とは何ですか? UNDO データが上書きされています。UNDO 表領域を拡大し、UNDO_RETENTION を短縮し、長時間実行されるクエリを最適化してください。

Q13: Oracle でページネーションを実装するにはどうすればよいですか? SELECT * FROM (SELECT t.*, ROWNUM AS rn FROM (SELECT ... ORDER BY col) t) WHERE rn BETWEEN 11 AND 20 または 12c 以降では OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY を使用します。

Q14: FORCE LOGGING とは何ですか? NOLOGGING 操作であっても、すべての DML で REDO を書き込むよう強制します。Data Guard 環境では有効にする必要があります。

Q15: 現在のデータベースバージョンを確認するにはどうすればよいですか? SELECT * FROM v$version; または SELECT banner FROM v$version WHERE banner LIKE 'Oracle%'; を実行します。


Keywords

oracle, Oracle Database, PL/SQL, SQL*Plus, RAC, Data Guard, ADG, RMAN, expdp, impdp, flashback, AWR, ASH, ADDM, DBMS_XPLAN, VARCHAR2, NUMBER, CLOB, SEQUENCE, SYNONYM, CONNECT BY, PIVOT, LISTAGG, MERGE, INSERT ALL, MODEL, MATCH_RECOGNIZE, 分析関数, ウィンドウ関数, ROW_NUMBER, RANK, LAG, LEAD, ストアドプロシージャ, パッケージ, トリガー, カーソル, REF CURSOR, 動的 SQL, FORALL, BULK COLLECT, パーティション表, マテリアライズドビュー, ビットマップインデックス, 表領域, TDE, FGA, VPD, DBMS_STATS, SPM, CDB, PDB, マルチテナント, UNDO, REDO, 読み取り一貫性, ORA-01555

References

  • references/01-functions-string.md — 文字列/数値/NULL 処理関数
  • references/02-functions-date.md — 日付/変換関数
  • references/03-analytic-functions.md — 分析関数(ウィンドウ関数)+集計
  • references/04-plsql-guide.md — PL/SQL の詳細
  • references/05-performance-tuning.md — パフォーマンスチューニング
  • references/06-backup-recovery.md — バックアップとリカバリ
  • references/07-dataguard-rac.md — Data Guard / RAC
  • references/08-security.md — セキュリティと権限
  • references/09-sql-syntax.md — SQL 構文の詳細
  • references/10-features.md — 独自機能(パーティション/マテリアライズドビュー/Flashback/AQ)
  • examples/01-plsql-procedure.md — PL/SQL ストアドプロシージャの例
  • examples/02-awr-analysis.md — AWR パフォーマンス分析の例
  • examples/03-rman-backup.md — RMAN バックアップの例
  • examples/04-dataguard-setup.md — Data Guard 構築の例
  • Oracle 19c 公式ドキュメント
  • Oracle Live SQL(オンライン演習)

コメント