Source profileQuality 93/100Review permissions

johnqtcg/awesome-skills/skills/oracle-migration/SKILL.md

oracle-migration

Oracle Database schema migration safety reviewer and DDL generator. ALWAYS use when writing, reviewing, or planning Oracle schema changes — ALTER TABLE, CREATE/DROP INDEX, column type changes, constraint additions, partition DDL, or any DDL touching production tables. Covers DDL auto-commit implications, DDL_LOCK_TIMEOUT, DBMS_REDEFINITION for online table restructuring, ENABLE NOVALIDATE constraint patterns, global index impact from partition DDL, CTAS-based migration, ROWID-range batching, and

Source repository stars
30
Declared platforms
0
Static risk flags
1
Last source update
2026-08-27
Source checked
2026-08-28

Decision brief

What it does: where it fits

Oracle Database schema migration safety reviewer and DDL generator. Covers DDL auto-commit implications, DDL_LOCK_TIMEOUT, DBMS_REDEFINITION for online table restructuring, ENABLE NOVALIDATE constraint patterns, global index impact from partition DDL, CTAS-based migration, ROWID-range batching, and

Best for

  • ALWAYS use when writing, reviewing, or planning Oracle schema changes — ALTER TABLE, CREATE/DROP INDEX, column type changes, constraint additions, partition DDL, or any DDL touching production tables.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/johnqtcg/awesome-skills --skill "skills/oracle-migration"
Safe inspection promptEditorial

Inspect the Agent Skill "oracle-migration" from https://github.com/johnqtcg/awesome-skills/blob/d933bc88237f7a18a7ecf01e5d97a745b083df0f/skills/oracle-migration/SKILL.md at commit d933bc88237f7a18a7ecf01e5d97a745b083df0f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    5.1 DDL Auto-Commit & Lock Assessment

    1. DDL auto-commit awareness — Oracle DDL issues implicit COMMIT before and after execution. This means: - Any uncommitted DML in the session is committed when DDL runs - DDL itself cannot be rolled back via ROLLBACK — it is permanent immediately - Failed DDL still commits the p…

    DDL auto-commit awareness — Oracle DDL issues implicit COMMIT before and after execution. This means:Any uncommitted DML in the session is committed when DDL runsDDL itself cannot be rolled back via ROLLBACK — it is permanent immediately
  2. 02

    9.3 Risk Assessment Table

    Review the “9.3 Risk Assessment Table” section in the pinned source before continuing.

    Review and apply the “9.3 Risk Assessment Table” source section.
  3. 03

    9.7 Rollback Plan (per-phase; all manual since DDL auto-commits)

    Review the “9.7 Rollback Plan (per-phase; all manual since DDL auto-commits)” section in the pinned source before continuing.

    Review and apply the “9.7 Rollback Plan (per-phase; all manual since DDL auto-commits)” source section.
  4. 04

    Quick Reference

    Review the “Quick Reference” section in the pinned source before continuing.

    Review and apply the “Quick Reference” source section.
  5. 05

    §1 Scope

    In scope — schema migration safety for Oracle 12.1 / 12.2 / 19c / 21c / 23ai:

    ALTER TABLE (add/drop/modify column, add/drop constraint, rename, move)CREATE / DROP / REBUILD INDEX (including ONLINE)Constraint management (FK, CHECK, UNIQUE with ENABLE NOVALIDATE pattern)

Permission review

Static risk signals and limitations

Runs scripts

medium · line 402

The documentation asks the agent to run terminal commands or scripts.

python3 scripts/lint_migration.py path/to/migration.sql --context-rows 25000000 --edition SE2

Runs scripts

medium · line 403

The documentation asks the agent to run terminal commands or scripts.

python3 scripts/lint_migration.py path/to/ --format json # whole directory

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars30SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
johnqtcg/awesome-skills
Skill path
skills/oracle-migration/SKILL.md
Commit
d933bc88237f7a18a7ecf01e5d97a745b083df0f
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

Oracle Migration Safety Review

Quick Reference

If you need to…Go to
Understand what this skill covers§1 Scope
Check mandatory prerequisites§2 Mandatory Gates
Choose review depth§3 Depth Selection
Handle incomplete context§4 Degradation Modes
Analyze DDL safety item by item§5 DDL Safety Checklist
Design a phased execution plan§6 Execution Plan
Avoid common migration mistakes§7 Anti-Examples
Score the review result§8 Scorecard
Format review output§9 Output Contract
Look up DDL lock behavior by operationreferences/oracle-ddl-lock-matrix.md
Plan a large-table (>10M rows) changereferences/large-table-migration.md

§1 Scope

In scope — schema migration safety for Oracle 12.1 / 12.2 / 19c / 21c / 23ai:

  • ALTER TABLE (add/drop/modify column, add/drop constraint, rename, move)
  • CREATE / DROP / REBUILD INDEX (including ONLINE)
  • Constraint management (FK, CHECK, UNIQUE with ENABLE NOVALIDATE pattern)
  • Partition DDL (ADD/DROP/SPLIT/MERGE/EXCHANGE PARTITION, global index impact)
  • Data backfill and transformation (CTAS, INSERT /*+ APPEND */, ROWID batching)
  • Online table redefinition (DBMS_REDEFINITION)
  • Migration file review (Flyway, Liquibase, custom PL/SQL deploy scripts)
  • Rollback planning (DDL auto-commits — no transactional DDL rollback)

Out of scope — delegate to dedicated skills:

  • Query optimization, bind variable tuning, plan stability → oracle-best-practise
  • Application code changes → go-code-reviewer or language-specific reviewer
  • Security hardening, privilege management → security-review

§2 Mandatory Gates

Execute gates sequentially. Each gate has a STOP condition.

Gate 1: Context Collection

ItemWhy it mattersIf unknown
Oracle version — record the release, not the family: 12.1 / 12.2 / 19c / 21c / 23ai12.1 vs 12.2 is a real gate: ALTER TABLE … MOVE ONLINE and MOVE PARTITION … ONLINE are 12.2+. "12c" alone is not an answerAssume 12.1 (most restrictive)
Edition + licensed options (EE / SE2 / XE / Cloud tier; Partitioning, Diagnostics Pack)DBMS_REDEFINITION and every ONLINE DDL need EE; partition DDL needs the Partitioning option; AWR/ASH/DBA_HIST_* need Diagnostics PackAssume SE2 with no extra options — see references/oracle-version-licensing-matrix.md
Table row countDetermines online-safe vs DBMS_REDEFINITION thresholdAsk, or estimate via NUM_ROWS in DBA_TABLES
Table size (data + indexes)Large tables need DBMS_REDEFINITION or CTASEstimate via DBA_SEGMENTS
RAC environmentDDL coordination across instances; cross-instance invalidationAssume single-instance
Partitioning schemePartition DDL affects global indexes differentlyCheck DBA_PART_TABLES
Maintenance windowSome DDL needs exclusive lock windowAssume none (zero-downtime required)
UNDO/TEMP tablespaceBulk operations consume UNDO; insufficient space → ORA-30036Check DBA_TABLESPACE_USAGE_METRICS

If database access is available, run:

-- Exact release. v$version works on every release; VERSION_FULL/BANNER_FULL are 18c+.
SELECT * FROM v$version;
SELECT version FROM v$instance;
SELECT table_name, num_rows, blocks FROM dba_tables WHERE table_name = '<TABLE>';
SELECT segment_name, bytes/1024/1024 MB FROM dba_segments WHERE segment_name = '<TABLE>';

-- Is the Partitioning option linked in? (enabled ≠ licensed — see below)
SELECT parameter, value FROM v$option WHERE parameter = 'Partitioning';

v$option reports what is installed, not what is paid for. EE ships Partitioning, Diagnostics Pack and every ONLINE DDL enabled regardless of contract, so a plan can be executable and still be a licence violation. Confirm entitlement before recommending an option-gated mitigation, and state the dependency in §9.9.

STOP: Cannot determine whether the target is Oracle. Redirect to appropriate skill.

PROCEED: At least Oracle version and table name known or conservatively assumed.

Gate 2: Scope Classification

ModeTriggerOutput
reviewUser provides existing migration SQL/scriptSafety analysis of provided DDL
generateUser describes desired schema changeMigration SQL + safety analysis
planUser describes goal without specificsPhased migration plan + rationale

STOP: Request is not migration-related. Redirect to oracle-best-practise.

PROCEED: Migration intent confirmed.

Gate 3: Risk Classification

RiskDefinitionRequired action
SAFEOnline DDL, brief exclusive lock, small tableDDL_LOCK_TIMEOUT sufficient
WARNExtended lock on medium table, or partition DDL with global index impactOff-peak window + monitoring
UNSAFETable rewrite, >10M rows, or DDL requiring extended exclusive lockDBMS_REDEFINITION / CTAS + staged rollout

STOP: Any UNSAFE item has no mitigation plan.

PROCEED: Every DDL statement has risk level and mitigation.

Gate 4: Output Completeness

Before delivering output, verify all §9 Output Contract sections present. §9.9 Uncovered Risks must never be empty.


§3 Depth Selection

DepthWhen to useGatesReferences to load
Lite≤3 DDL statements, all non-rewriting (ADD nullable column, CREATE INDEX ONLINE)1–4None
Standard4–15 statements, or any table-rewriting / constraint-enabling DDL1–4oracle-ddl-lock-matrix.md
Deep>15 statements, table >10M rows, or multi-step DBMS_REDEFINITION1–4Both reference files

Force Standard or higher when any signal appears: column type change, NOT NULL addition, constraint enforcement, partition DDL with global indexes, MOVE/SHRINK operations, column removal, edition/license-dependent features.


§4 Degradation Modes

When context is incomplete, degrade gracefully — never fabricate information.

Available contextModeWhat you can doWhat you cannot do
Full (version, edition, size, RAC, partitioning)FullAll checklist items, precise recommendations
Version + size known, others unknownDegradedFull checklist with conservative assumptionsLicense-specific advice, RAC assessment
Only migration SQL, no contextMinimalStatic DDL analysis, flag all unknownsEdition-specific features, UNDO assessment
No SQL (planning request)PlanningGenerate migration plan from requirementsReview existing SQL

Hard rule: Never claim "SAFE" without evidence. In Degraded/Minimal mode, mark as "SAFE (assumed — verify against production)" and list all assumptions in §9.9.


§5 DDL Safety Checklist

Execute every item. Mark SAFE / WARN / UNSAFE with evidence.

5.1 DDL Auto-Commit & Lock Assessment

  1. DDL auto-commit awareness — Oracle DDL issues implicit COMMIT before and after execution. This means:

    • Any uncommitted DML in the session is committed when DDL runs
    • DDL itself cannot be rolled back via ROLLBACK — it is permanent immediately
    • Failed DDL still commits the pre-DDL implicit COMMIT
    • Every DDL must have a documented manual rollback path
  2. DDL_LOCK_TIMEOUT — set before every DDL session:

    ALTER SESSION SET DDL_LOCK_TIMEOUT = 3;
    

    Without this, DDL fails immediately with ORA-00054 (resource busy) if it cannot acquire an exclusive lock. With timeout, Oracle retries for N seconds. When uncertain about lock behavior → load references/oracle-ddl-lock-matrix.md.

  3. Online DDL availability — Oracle supports ONLINE keyword for some operations (EE only):

    • CREATE INDEX ... ONLINE — allows concurrent DML during build
    • ALTER INDEX ... REBUILD ONLINE — non-blocking rebuild
    • ALTER TABLE ... MOVE ONLINE (12.2+) — non-blocking table reorganization
    • Check edition: ONLINE operations require Enterprise Edition or specific cloud tiers
  4. Partition DDL and global index impact — partition operations (DROP/SPLIT/MERGE/EXCHANGE PARTITION) can invalidate global indexes. An UNUSABLE global index causes query failures. Mitigation: UPDATE INDEXES clause or planned global index rebuild.

5.2 Data Integrity

  1. Column modification — classify before you judge. Oracle's MODIFY outcomes are three distinct things, and the common review mistake is calling all of them "a slow rewrite":

    ChangeOutcome on a populated tableCorrect verdict
    Widen VARCHAR2/RAW length; widen NUMBER precision and scale togetherAllowed. Data-dictionary update — stored row bytes are unchangedSAFE — brief lock. DBMS_REDEFINITION is over-engineering
    Narrow a char columnAllowed only if every existing value fits, else ORA-01441WARN — pre-check with MAX(LENGTH(col))
    Decrease NUMBER precision/scale, or raise scale without raising precisionORA-01440 — column must be empty. Fails instantly; data size is irrelevantUNSAFE — needs DBMS_REDEFINITION / CTAS
    Change datatype class (NUMBERVARCHAR2, VARCHAR2DATE, …)ORA-01439 — column must be emptyUNSAFE — needs DBMS_REDEFINITION / CTAS

    The reason a large table needs DBMS_REDEFINITION for the bottom two rows is not that ALTER would be slow — it is that ALTER is rejected outright. Never report a widening as a table rewrite; never report an ORA-01439 case as merely slow.

    Classification depends on the column's current type, which a migration file usually does not state. Read it before assigning a risk level:

    SELECT column_name, data_type, data_length, data_precision, data_scale, nullable
    FROM   user_tab_columns WHERE table_name = '<TABLE>' AND column_name = '<COLUMN>';
    

    If USER_TAB_COLUMNS is not reachable, say so in §9.9 and give the verdict for each possible starting type rather than guessing one.

    Adding NOT NULL to a column holding NULLs fails with ORA-02296 — use the phased approach in AE-10.

  2. Constraint enforcement — Oracle's two-step pattern:

    ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ENABLE NOVALIDATE;
    ALTER TABLE orders MODIFY CONSTRAINT fk_user VALIDATE;
    

    ENABLE NOVALIDATE enforces for new DML but skips validating existing rows. VALIDATE then checks existing data without blocking DML.

  3. FK index requirement — unlike PostgreSQL, Oracle does not require indexes on FK columns, but missing FK indexes cause full table locks during parent table DML. Always create indexes on FK columns.

  4. Sequence and identity impact — DDL on tables with identity columns or sequence-based defaults may affect sequence continuity. Verify after migration.

5.3 Backward Compatibility

  1. Deployment ordering — column add → schema first, then app; column remove → app first, then schema.

    Column rename: ALTER TABLE t RENAME COLUMN old TO new has been supported since Oracle 9i Release 2 and is metadata-only with a brief lock. The database is not the problem — running application code is. The instant the rename commits, every deployed SQL statement referencing the old name breaks. Do not rename in place on a live system; use the expand/contract sequence (add new column → dual-write → backfill → cut reads over → SET UNUSED old), or front the table with a view that exposes both names during the transition.

  2. Rollback planning — DDL auto-commits, so there is no ROLLBACK. Classify every phase into exactly one of six strategies (§8 scores the classification, not the presence of SQL):

    StrategyWhen it appliesExample
    abort-before-cutoverPhase has not yet been switched into the app's read pathstop the backfill; drop the interim table; ABORT_REDEF_TABLE
    compensating-DDLA DDL exists that restores the prior structure and dataADD CONSTRAINTDROP CONSTRAINT; CREATE INDEXDROP INDEX
    application-rollbackSchema stays; the previous app build is redeployedadditive column left in place, app reverted
    roll-forwardReversing costs more than fixing forwardhalf-finished backfill → finish it
    restore / PITRData is gone and no compensating DDL existsDROP COLUMN, destructive MODIFY
    irreversibleNo recovery path at any cost — must be stated as suchDROP UNUSED COLUMNS after backup expiry

    A compensating DDL that restores the shape but not the data is not a rollback. ALTER TABLE … ADD (legacy_email VARCHAR2(255)) after a DROP COLUMN recreates an empty column and must be classified restore / PITR, never compensating-DDL. Writing plausible-looking rollback SQL to satisfy a checklist is the failure mode this taxonomy exists to prevent.

  3. Flashback is not a general DDL undo, and it is not on every edition. Two independent gates: (a) FLASHBACK TABLE … TO SCN/TIMESTAMP cannot cross a structural DDLDROP COLUMN, MODIFY column, MOVE, TRUNCATE, ADD CONSTRAINT and most partition maintenance are on Oracle's blocking list, so it fails rather than restores; (b) it and Flashback Database are Enterprise Edition only, while SELECT … AS OF and … TO BEFORE DROP work on SE2 — do not treat "Flashback" as one feature. So the structural-DDL safety net is taken before the statement runs: a keyed CTAS snapshot, a guaranteed restore point (EE), or a verified backup for PITR — and on SE2 that artefact is effectively the only recovery mechanism. Offering Flashback Table as the fallback is a false assurance, worse than admitting there is none, because it gets approved. Decision table in references/large-table-migration.md §6; edition rows in references/oracle-version-licensing-matrix.md §2.

5.4 Operational Safety

  1. DROP COLUMN behaviorSET UNUSED is faster than DROP COLUMN on wide tables. SET UNUSED is metadata-only and makes the column immediately inaccessible; physical removal via DROP UNUSED COLUMNS happens later during maintenance. Note that SET UNUSED is not a safer rollback story — the column can never be un-unused. It buys a cheaper lock, not reversibility.

  2. UNDO/TEMP space — bulk operations (CTAS, large backfills, DBMS_REDEFINITION) consume UNDO tablespace. Insufficient UNDO → ORA-30036 (unable to extend undo segment). Check space before starting.

  3. Optimizer statistics — after bulk inserts, table moves, or partition exchanges, statistics are stale. Run DBMS_STATS.GATHER_TABLE_STATS post-migration to prevent plan regression.

  4. Statement granularity — DDL auto-commits, so each DDL is an atomic irreversible step. Prefer one DDL per migration script for clear rollback mapping.

  5. Standby / Data Guard impactNOLOGGING CTAS and direct-path loads generate no redo, so the blocks arrive corrupt on every physical standby. A primary protected by Data Guard should be in FORCE LOGGING (SELECT force_logging FROM v$database), which silently overrides every NOLOGGING clause in the plan — so a migration whose runtime estimate assumed NOLOGGING speed is wrong. Check before promising a window.


§6 Execution Plan (Standard + Deep)

Standard phased pattern for zero-downtime migration:

  1. Phase 1 — Additive schema: add nullable columns, create indexes with ONLINE, constraints with NOVALIDATE
  2. Phase 2 — Backfill: populate new columns in ROWID-range or PK-range batches with periodic COMMIT (see references/large-table-migration.md §3)
  3. Phase 3 — App deploy: deploy code writing to both old and new schema
  4. Phase 4 — Constraint validation: MODIFY CONSTRAINT ... VALIDATE, gather stats
  5. Phase 5 — Cleanup (separate release): SET UNUSED old columns, DROP UNUSED COLUMNS during maintenance

Each phase: Pre-conditionSQL (with DDL_LOCK_TIMEOUT) → ValidationRollbackGo/No-go.

For tables >10M rows needing restructuring, use DBMS_REDEFINITION (EE) or CTAS+swap. Details in references/large-table-migration.md.


§7 Anti-Examples

AE-1: DDL without DDL_LOCK_TIMEOUT

-- WRONG: fails immediately with ORA-00054 if any session holds lock
ALTER TABLE orders ADD (tracking_id VARCHAR2(50));
-- RIGHT:
ALTER SESSION SET DDL_LOCK_TIMEOUT = 3;
ALTER TABLE orders ADD (tracking_id VARCHAR2(50));

AE-2: ADD CONSTRAINT without NOVALIDATE

-- WRONG: validates all rows with exclusive lock — blocks everything on large table
ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id);
-- RIGHT: two-step
ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ENABLE NOVALIDATE;
ALTER TABLE orders MODIFY CONSTRAINT fk_user VALIDATE;

AE-3: DROP COLUMN on wide high-traffic table

-- WRONG: physically removes column data — expensive I/O, long lock
ALTER TABLE events DROP COLUMN legacy_data;
-- RIGHT: mark unused now, drop physically later
ALTER TABLE events SET UNUSED COLUMN legacy_data;
-- During maintenance window:
ALTER TABLE events DROP UNUSED COLUMNS;

AE-4: Partition DDL without global index plan

-- WRONG: global indexes become UNUSABLE after DROP PARTITION
ALTER TABLE logs DROP PARTITION logs_2023_q1;
-- RIGHT: include UPDATE INDEXES clause
ALTER TABLE logs DROP PARTITION logs_2023_q1 UPDATE INDEXES;

AE-5: Monolithic UPDATE on large table

-- WRONG: single UPDATE locks millions of rows, fills UNDO
UPDATE orders SET status = 'migrated' WHERE status IS NULL;
-- RIGHT: batch by ROWID range with periodic COMMIT (see §6)

AE-6: Style nitpick reported as migration risk

-- WRONG: "WARN — column name 'USR_NM' doesn't follow naming convention"
-- RIGHT: only flag naming if it causes functional problems

Extended anti-examples (AE-7 through AE-14) in references/migration-anti-examples.md.


§8 Migration Scorecard

Critical — any FAIL means overall FAIL

  • DDL_LOCK_TIMEOUT set before every DDL session
  • DDL auto-commit documented: no uncommitted DML in session before DDL
  • Every phase carries a rollback classification from the §5.3 item 10 taxonomy — and any phase classified restore / PITR or irreversible names the concrete pre-DDL artefact (backup, restore point, CTAS snapshot) plus who verified it exists

Scoring the third item: a phase is a FAIL, not a pass, if it presents compensating DDL that recreates structure without data (DROP COLUMN "rolled back" by ADD COLUMN), or if it cites FLASHBACK TABLE … TO SCN/TIMESTAMP as the recovery path for a structural DDL. Both read as complete and are not.

Standard — 4 of 5 must pass

  • Constraints use ENABLE NOVALIDATE + VALIDATE two-step on tables >100K rows
  • Every column change classified against the §5.2 item 5 table, and DBMS_REDEFINITION/CTAS proposed only for changes Oracle actually rejects (ORA-01439/ORA-01440) or that genuinely rewrite — a widening reported as a rewrite is a FAIL for this item
  • Backward-compatible deployment order (additive before app, removal after app)
  • Batch operations use ROWID/PK-range with periodic COMMIT, not monolithic DML
  • Validation SQL provided for each phase

Hygiene — 3 of 4 must pass

  • UNDO/TEMP space assessed for bulk operations
  • DBMS_STATS.GATHER_TABLE_STATS planned after bulk changes
  • Post-deploy monitoring specified, with its licence stated — AWR/ASH/DBA_HIST_* require Diagnostics Pack; if entitlement is unconfirmed, propose the free V$SQL / V$SQLSTATS baseline instead
  • Global index impact assessed for all partition DDL (and the Partitioning option confirmed licensed)

Verdict: X/12; Critical: Y/3; Standard: Z/5; Hygiene: W/4. PASS requires: Critical 3/3 AND Standard ≥4/5 AND Hygiene ≥3/4.

Absolute safety gate — overrides the arithmetic. A review is FAIL regardless of score if it recommends an option-gated feature (ONLINE DDL, DBMS_REDEFINITION, partition maintenance, AWR) without stating the edition/licence dependency, or asserts a recovery path that Oracle does not support. A well-formatted plan that cannot legally or physically execute is worse than an obviously incomplete one.


§9 Output Contract

Every migration review MUST produce these sections. Write "N/A — [reason]" if inapplicable.

### 9.1 Context Gate
| Item | Value | Source |

### 9.2 Depth & Mode
[Lite/Standard/Deep] × [review/generate/plan] — [rationale]

### 9.3 Risk Assessment Table
| # | DDL Statement | Lock Type | Online? | Risk | Notes |

### 9.4 Execution Plan (Standard/Deep; "N/A — Lite" for Lite)

### 9.5 Migration SQL (with DDL_LOCK_TIMEOUT, ONLINE, NOVALIDATE as applicable)

### 9.6 Validation SQL

### 9.7 Rollback Plan (per-phase; all manual since DDL auto-commits)
| Phase | Strategy (abort-before-cutover / compensating-DDL / application-rollback / roll-forward / restore-PITR / irreversible) | Concrete artefact or SQL | Data recoverable? |

### 9.8 Post-Deploy Checks

### 9.9 Uncovered Risks (MANDATORY — never empty)
| Area | Reason | Impact | Follow-up |

Volume rules:

  • UNSAFE: always fully detailed with mitigation
  • WARN: up to 10; overflow to §9.9
  • SAFE: summary row only
  • §9.9 minimum: document all assumptions and edition/license unknowns

Scorecard summary (append after §9.9):

Scorecard: X/12 — Critical Y/3, Standard Z/5, Hygiene W/4 — PASS/FAIL
Data basis: [full context | degraded | minimal | planning]

§10 Reference Loading Guide

ConditionLoad
Standard or Deep depthreferences/oracle-ddl-lock-matrix.md
Deep depth, or table >10M rowsreferences/large-table-migration.md
Extended anti-example matchingreferences/migration-anti-examples.md
Any recommendation gated on version, edition, or a licensed optionreferences/oracle-version-licensing-matrix.md

§11 Deterministic Pre-Check

Before writing the review, run the bundled checker over the migration file. It is a static analyser, not a substitute for the checklist — it catches the mechanical items (missing DDL_LOCK_TIMEOUT, ADD CONSTRAINT without NOVALIDATE, partition DDL without UPDATE INDEXES, monolithic DML, unexecutable DBA_EXTENTS.data_object_id chunking, two-statement rename presented as atomic, Flashback misuse) so the review can spend its attention on the judgement calls it cannot.

python3 scripts/lint_migration.py path/to/migration.sql --context-rows 25000000 --edition SE2
python3 scripts/lint_migration.py path/to/ --format json     # whole directory

Exit codes: 0 clean, 1 findings at or above the fail threshold, 2 usage/IO error. A finding the checker raises that you intend to waive must be waived explicitly in §9.9 with a reason — never silently.

Frequently asked questions

What to verify before installation and use

What does the oracle-migration source document cover?

Oracle Database schema migration safety reviewer and DDL generator. Covers DDL auto-commit implications, DDL_LOCK_TIMEOUT, DBMS_REDEFINITION for online table restructuring, ENABLE NOVALIDATE constraint patterns, global index impact from partition DDL, CTAS-based migration, ROWID-range batching, and

How do I install oracle-migration?

The source record exposes this install command: npx skills add https://github.com/johnqtcg/awesome-skills --skill "skills/oracle-migration". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 973,123

NVIDIA/skills

vss-deploy-detection-tracking-2d

Use this skill when the user wants to deploy, run, debug, tear down, or call the REST API of the RTVI-CV 2D detection / tracking microservice. Trigger when the user says things like 'deploy rtvi-cv', 'start warehouse 2d', 'add a stream', 'check rtvi-cv health', or 'stop the perception container'. Not for VLM, embedding, or analytics — use the matching vss-* skill.

Computed 97150

UiPath/skills

uipath-coded-apps

UiPath Coded Apps — scaffold, build, run, and deploy Coded Web Apps and Coded Action Apps: React/TypeScript apps that call UiPath Cloud APIs via the `@uipath/uipath-typescript` SDK and ship to Automation Cloud (push/pull to Studio Web, pack, publish, deploy, OAuth-PKCE). Also generates live analytics & governance dashboards from a plain-language request, wired to tenant data via the Insights real-time API, with edit and deploy flows. For RPA→uipath-rpa, Python agents→uipath-agents, Maestro flows

Computed 97133

JasonColapietro/suede-creator-skills

suede-instagram-growth

Suede-owned Instagram growth operating system for account-specific audits, Reels, carousels, Stories, conversion mapping, calendars, and daily candidate-production loops. Use when the user names Instagram, IG, Reels, Stories, asks to analyze recent posts, grow a handle, run a daily workflow, create or repurpose Instagram content, or distinguish views from follows, leads, and sales. NOT FOR: multi-platform organic strategy (use suede-social), full video rendering or editing (use suede-video), pai

Computed 963,123

NVIDIA/skills

vss-deploy-detection-tracking-3d

Deploy and operate the RTVI-CV-3D microservice as MV3DT (`MODE=mv3dt`): per-camera DeepStream perception plus BEV Fusion over calibrated cameras. Supports the bundled sample dataset, custom video files, and RTSP streams, and chains to `vss-generate-video-calibration` when calibration is missing. Use `vss-deploy-profile` for the full warehouse blueprint and `vss-deploy-detection-tracking-2d` for single-camera 2D detection.