mcpField
D
database-management

database-management

github.com/acedergrenデータ・データベース22100 回インストール33 週間前に更新
リポジトリ

database-management について

Claude向けのOCIデータベース運用スキルで、Autonomous Databaseの管理、トラブルシューティング、コスト管理を扱います。Oracleのドキュメントに基づき、接続、クローン、バックアップ、PDB運用の注意点をまとめています。

主な機能

  1. 01OCIデータベース運用ガイダンス
  2. 02Walletと接続のトラブルシューティング
  3. 03サービスとクローン種別の選択支援
  4. 04バックアップ保持計画
  5. 05コストとスケーリングの計算
  6. 06PDBライフサイクルの注意点

活用シーン

  1. 01ADB Wallet接続エラーの診断
  2. 02テスト環境向けクローン種別の選択
  3. 03停止・起動とライセンス費用の試算
  4. 04CDB削除前のPDB確認

インストール

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

$npx skills add https://github.com/acedergren/oci-agent-skills --skill database-management

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

同梱ファイルmetadata.jsonreferences/oci-dbcs-cli.md

詳細

OCI Database Management - エキスパートナレッジ

🏗️ OCI Landing Zone Terraform Modulesを使用する

一から作り直す必要はありません。 データベースインフラストラクチャには、oracle-terraform-modules/landing-zoneを使用してください。

Landing Zoneで解決できること:

  • ❌ 悪いプラクティス #4:不十分なネットワークセグメンテーション(Landing Zoneがデータベース層を分離します)
  • ❌ 悪いプラクティス #9:パブリックなデータベースエンドポイント(Security Zonesがプライベートサブネットを強制します)
  • ❌ 悪いプラクティス #10:監視機能がない(Landing Zoneがデータベースのアラームを自動構成します)

このスキルが提供するもの:Landing Zone内にデプロイされたデータベースのADB操作、トラブルシューティング、コスト最適化です。


⚠️ OCI CLI/APIに関する知識の不足

OCI CLIコマンドやOCI APIの構造については詳しくありません。

トレーニングデータに含まれる以下の情報は、限られており、古くなっています。

  • OCI CLIの構文とパラメーター(毎月更新されます)
  • OCI APIのエンドポイントとリクエスト/レスポンス形式
  • データベースサービスのCLI操作(oci db autonomous-database)
  • ウォレットの構成と接続文字列の形式
  • 最新のADB機能(23ai、26ai)とAPIの変更

OCIの操作が必要な場合:

  1. スキルのリファレンスに記載された正確なCLIコマンドを使用してください
  2. OCI CLIの構文やパラメーターを推測しないでください
  3. APIエンドポイントの構造を決めつけないでください
  4. 詳細なADB操作についてはoracle-dbaスキルを読み込んでください

把握していること:

  • Oracle Databaseの内部機能(SQL、PL/SQL)
  • 一般的なデータベース管理の原則
  • コネクションプーリングとHAの概念

このスキルは、最新のOCI固有のデータベース操作を提供することで、知識の不足を補います。


OCI Databaseのエキスパートです。このスキルでは、Claudeに不足している接続文字列の注意点、コスト上の落とし穴、バックアップ/クローンのパターン、PDB管理でのミス、ADB固有の運用知識を提供します。

絶対にしてはいけないこと

❌ 誤った接続サービス名は絶対に使用しないでください(パフォーマンス/コストに影響します)

Autonomous Database provides 3 service names:
- HIGH: Dedicated CPU, highest performance, **3x cost of LOW**
- MEDIUM: Shared CPU, balanced
- LOW: Most sharing, cheapest, sufficient for OLTP

# WRONG - using HIGH for background jobs (expensive)
connection_string = adb_connection_strings["high"]  # 3x cost!

# RIGHT - match service to workload
connection_string = adb_connection_strings["low"]  # Batch jobs, reporting
connection_string = adb_connection_strings["high"]  # Critical transactions only

コストへの影響:24時間365日のコネクションプールでHIGHではなくLOWを使用すると、月額220ドルではなく73ドルとなり、3倍の無駄が発生します。

❌ 停止したデータベースのコストがゼロだと決めつけないでください

# WRONG assumption - "stopped" database is free
Stop ADB at night to save costs

# Reality:
Stopped ADB charges:
- Storage: $0.025/GB/month continues
- Backups: Retention charges continue
- Compute: ZERO (only part that stops)

Example: 1TB ADB stopped 16 hrs/day
- Compute savings: $584/month × 67% = $391 saved
- Storage cost: $25.60/month (still charged)
- Net savings: $391/month (not $610 expected)

❌ パスワードの複雑さを無視しないでください(必ず失敗します)

OCI Database password requirements (strict regex):
- 12-30 characters
- 2+ uppercase, 2+ lowercase
- 2+ numbers, 2+ special (#-_)
- NO username in password
- NO repeating chars (aaa, 111)

# WRONG - fails validation
--admin-password "MyPass123"  # Only 1 special char, < 12 chars

# RIGHT - meets requirements
--admin-password "MyP@ssw0rd#2024"  # 2 upper, 2 lower, 2 num, 2 special, 16 chars

❌ クローンの種類を混同しないでください(パフォーマンスやコストに影響します)

| Clone Type | Use Case | Cost | Refresh | When Source Deleted |
|------------|----------|------|---------|---------------------|
| **Full clone** | Prod → Dev (one-time) | Full ADB cost | Cannot refresh | Clone survives |
| **Refreshable clone** | Prod → Test (weekly refresh) | Storage only (~30%) | Manual refresh | Clone deleted |
| **Metadata clone** | Schema-only copy | Minimal | N/A | Clone survives |

# WRONG - full clone for dev environment that needs weekly prod data
oci db autonomous-database create-from-clone-adb \
  --clone-type FULL  # Wastes $500/month, no refresh capability

# RIGHT - refreshable clone for test environments
oci db autonomous-database create-refreshable-clone \
  # Costs $150/month storage, can refresh from prod weekly

コストの落とし穴:テスト用のフルクローンは月額500ドルですが、リフレッシュ可能なクローンなら月額150ドルで済みます(70%削減)。

❌ PDBを先に確認せずにCDBを削除しないでください

# WRONG - deletes Container Database with PDBs inside (data loss)
oci db database delete --database-id <cdb-ocid>
# All pluggable databases deleted with no warning!

# RIGHT - check for PDBs first
oci db pluggable-database list --container-database-id <cdb-ocid>
# If PDBs exist, decide: unplug, clone, or explicitly delete each

❌ アプリケーションコードでADMINユーザーを使用しないでください(セキュリティリスクがあります)

# WRONG - application uses ADMIN credentials
app_config = {
    'user': 'ADMIN',
    'password': admin_password  # Full database control!
}

# RIGHT - create app-specific user with least privilege
CREATE USER app_user IDENTIFIED BY <password>;
GRANT CONNECT, RESOURCE TO app_user;
GRANT SELECT, INSERT, UPDATE ON app_schema.* TO app_user;
# ADMIN only for DBA tasks, never in application code

❌ Always-Freeの制限を忘れないでください(スケールアップに失敗します)

Always-Free Autonomous Database limits:
- 1 OCPU max (cannot scale beyond)
- 20 GB storage max
- 1 database per tenancy per region
- NO private endpoints
- NO auto-scaling

# WRONG - trying to scale always-free database
oci db autonomous-database update \
  --autonomous-database-id <adb-ocid> \
  --cpu-core-count 2  # FAILS: Always-free max is 1 OCPU

# RIGHT - convert to paid tier first, THEN scale
oci db autonomous-database update \
  --autonomous-database-id <adb-ocid> \
  --is-free-tier false  # Convert to paid
# Now can scale to 2+ OCPUs

接続文字列に関する注意点

ウォレット接続の失敗時に使う判断ツリー
"Connection refused" or "Wallet error"?
│
├─ Wallet file issues?
│  ├─ Check: TNS_ADMIN env variable set?
│  │  └─ export TNS_ADMIN=/path/to/wallet
│  ├─ Check: sqlnet.ora has correct wallet location?
│  │  └─ WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/path/to/wallet")))
│  └─ Check: Wallet password correct?
│
├─ Network security?
│  ├─ Private endpoint ADB?
│  │  └─ Check: Source IP in NSG/security list?
│  │  └─ Check: VPN/FastConnect for on-premises access?
│  └─ Public endpoint ADB?
│     └─ Check: Database whitelisted your IP? (Access Control List)
│
├─ Database state?
│  └─ Check: Lifecycle state = AVAILABLE (not STOPPED, UPDATING)?
│     └─ oci db autonomous-database get --autonomous-database-id <ocid> --query 'data."lifecycle-state"'
│
└─ Service name wrong?
   └─ Check: Using correct service name from tnsnames.ora?
      └─ HIGH: <dbname>_high
      └─ MEDIUM: <dbname>_medium
      └─ LOW: <dbname>_low
サービス名の選択(コストとパフォーマンス)
サービスCPU割り当て同時実行数コスト用途
HIGH専用OCPUOCPU数の1倍基本料金の3倍OLTPの重要なトランザクション、対話型クエリ
MEDIUM共有OCPUOCPU数の2倍基本料金と同額バッチジョブ、レポート作成、ほとんどのアプリ
LOW最大限共有OCPU数の3倍基本料金と同額バックグラウンドタスク、データロード

例:2 OCPUのADB

  • HIGH:同時クエリの最大数は2、月額584ドル
  • MEDIUM:同時クエリ数は4、月額584ドル
  • LOW:同時クエリ数は6、月額584ドル(同じコストで、同時実行数が増えます)

注意点:ADBの料金ではHIGHのほうが高くなることはありませんが、負荷に応じてスケールする場合、OCPU時間をより多く消費します。

正確な計算によるコスト最適化

停止とスケールダウンの判断

シナリオ:開発用ADB、2 OCPU、ストレージ1 TB、平日のみ1日8時間使用

オプション1:未使用時に停止する(1日16時間+週末)

Usage: 8 hrs/day × 5 days = 40 hrs/week (24% utilization)
Compute cost: $0.36/OCPU-hr × 2 × 40 × 4.3 weeks = $124/month
Storage cost: $0.025/GB/month × 1000 = $25/month
Total: $149/month

オプション2:常時稼働で1 OCPUにスケールする

Compute cost: $0.36/OCPU-hr × 1 × 730 hrs = $263/month
Storage cost: $25/month
Total: $288/month

推奨:停止/起動により月額139ドルの節約になります(48%削減)。

ライセンスモデルによるコストへの影響
モデルコスト使用するケース
License Included$0.36/OCPU-hr既存のライセンスがない場合
BYOL$0.18/OCPU-hrOracle DB のライセンスを保有している場合(50%割引)

シナリオ:4 OCPU の ADB、本番環境で24時間365日稼働

  • License Included:$0.36 × 4 × 730 = $1,051/月
  • BYOL:$0.18 × 4 × 730 = $526/月
  • 節約額:ライセンスを保有している場合は、$525/月($6,300/年)

注意点:BYOL では、監査時にライセンスの証明が必要です

自動スケーリングによるコスト管理
# DANGER - unbounded auto-scaling
resource "oci_database_autonomous_database" "prod" {
  cpu_core_count = 2
  is_auto_scaling_enabled = true  # Can scale to 3× (6 OCPUs!)
}

# Cost: 2 OCPUs × $0.36 × 730 = $526/month baseline
# If auto-scales to 6 OCPUs during peak: $1,578/month (3× surprise bill!)

# SAFER - set scaling limit
# (Not available via API, must set in console: Manage Scaling → Max OCPU count)

ベストプラクティス:コストを管理するため、最大 OCPU をベースラインの2倍に設定します(2 OCPU → 最大4 OCPU)

バックアップとクローンのパターン

自動バックアップと手動バックアップの保持期間

自動バックアップ(無料):

  • 保持期間:デフォルトで60日(1~60日で設定可能)
  • 頻度:毎日、増分バックアップ
  • コスト:ADB のストレージ料金に含まれます
  • 注意点:ADB を削除すると、保持期間の経過後に自動バックアップも削除されます

手動バックアップ:

  • 保持期間:削除するまで
  • コスト:$0.025/GB/月(ストレージと同じ料金)
  • ユースケース:長期保持(コンプライアンス、法的保全)

コスト上の落とし穴:

Scenario: 1 TB ADB, keep 2 years of backups for compliance

Wrong assumption: Automatic backups are free forever
Reality: Automatic backups deleted 60 days after ADB deletion

Right approach: Manual backup before deleting ADB
Cost: $0.025/GB × 1000 GB × 24 months = $600 for 2-year retention
クローンと更新可能なクローンの選択
フルクローン更新可能なクローン
ユースケース恒久的な開発用コピー本番データが必要なテスト環境
コストソース ADB の100%約30%(ストレージのみ)
更新更新できませんソースから手動で更新
ソース削除時クローンは残りますクローンは自動削除されます
編集可能はいはい(ただし、更新時に上書きされます)

注意点:ソース ADB を削除すると、更新可能なクローンも削除されます。警告はありません!

ベストプラクティス:

  • 開発環境(恒久的):フルクローン
  • QA 環境(本番環境から毎週更新):更新可能なクローン
  • 本番環境への移行前:フルクローン(ソース削除後も残ります)

PDB 管理での注意点

階層の混同:

DB System or Exadata
└─ Container Database (CDB)
   └─ Pluggable Database (PDB)  ← Application connects here
      └─ Schemas, tables, etc.

重要:PDB の接続文字列では、CDB のホストと PDB のサービス名を使用します

# WRONG - trying to connect to CDB
sqlplus admin/pass@cdb-host:1521/ORCLCDB

# RIGHT - connect to PDB inside CDB
sqlplus app_user/pass@cdb-host:1521/PDB1

PDB のライフサイクルに関する注意点:PDB を切り離しても、データは削除されません

# Unplug PDB → creates XML metadata file
oci db pluggable-database unplug --pdb-id <ocid>
# PDB still exists in storage, can re-plug elsewhere
# Charges continue until DELETE

段階的に読み込むリファレンス

OCI Database Cloud Service CLI

読み込むタイミング oci-dbcs-cli.md:

  • DB Systems(VM、RAC、Exadata)の作成または管理
  • 災害復旧のための Data Guard の構成
  • パッチ適用とメンテナンス作業
  • バックアップとリカバリの手順
  • ExaDB-D および ExaDB-C@C の操作

次の場合は読み込まないでください:

  • Autonomous Database の操作(oracle-dba スキルを使用)
  • 接続のトラブルシューティング(上記の判断ツリーを使用)
  • コスト計算(上記の表を使用)
Oracle 公式ドキュメントの参照先

主な参照先(公式ソース30件以上をスクレイピング):

注:このスキルに記載されている接続時の注意点、パスワードのルール、コスト上の落とし穴は、Oracle 公式ドキュメントに基づいています


このスキルを使用するケース

  • 接続の問題:ウォレットエラー、サービス名の混同、ネットワークのトラブルシューティング
  • コストの最適化:停止/起動の判断、BYOL の評価、自動スケーリングの上限
  • バックアップ/クローン:クローンの種類の選択、保持期間の計画、災害復旧
  • PDB 管理:階層、接続文字列、切り離し/接続操作
  • パスワードエラー:複雑さの検証、ADMIN ユーザーの制限
  • スケーリング:Always-Free の上限、スケーリングと停止の判断、コスト計算

コメント