
SSMA Console
OfficialFreeStreamline Oracle to SQL Server migrations with ease.
Free · Opens the source repo
What SSMA Console does
The SSMA Console skill is designed for developers and database administrators who need to migrate data from Oracle to SQL Server efficiently. This skill provides a structured approach to migration by generating the necessary XML configuration files and executing the SSMA for Oracle Console directly, eliminating the need for external scripts or wrappers. It guides users through a series of operations required for a full migration, ensuring that all steps are followed in the correct order.
The migration process consists of four main operations: creating a project, generating an assessment report, migrating the schema, and migrating the data. Each operation is encapsulated in its own XML script, which is generated based on user input parameters. Users must provide connection details for both the Oracle and SQL Server databases, as well as project-specific information. The skill intelligently resolves placeholders in the XML files to ensure that the final scripts are ready for execution without any manual intervention.
The SSMA Console skill is particularly useful in scenarios where a comprehensive migration plan is necessary, as it not only migrates the data but also assesses the compatibility of the schemas involved. Users can expect to generate detailed reports that help in understanding potential issues and the overall health of the migration process. This makes it an invaluable tool for database migrations in enterprise environments where data integrity and accuracy are paramount.
While the SSMA Console skill is powerful, it is essential to note that it is specifically tailored for Oracle to SQL Server migrations. Users looking to migrate data between other database systems or those requiring extensive customization beyond the provided operations may find this skill less suitable for their needs.
When to use it
Use this skill when you need to perform a structured migration from Oracle to SQL Server, particularly when you require assessment reports and schema conversion.
When not to use it
This skill is not suitable for migrations involving databases other than Oracle and SQL Server, or for users needing extensive customization beyond the provided operations.
What you can build with it
Migrating an Enterprise Database
Use this skill to migrate a large Oracle database to SQL Server, ensuring schema compatibility and data integrity.
Generating Migration Reports
Leverage the skill to generate detailed assessment reports during the migration process, identifying potential issues ahead of time.
Automating Migration Tasks
Incorporate this skill into your workflow to automate the repetitive tasks involved in Oracle to SQL Server migrations.
How to install SSMA Console
View source1. Install with the skills CLI
npx skills add github/awesome-copilot/ssma-console --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by githubSSMA Console — Oracle to SQL Server Migration
Generate XML configs and invoke SSMAforOracleConsole.exe directly — no external scripts or wrappers.
Operations (run in order for "full migration"):
- create-project — connect source & target, map schema
- generate-report — assessment report
- migrate-schema — convert & deploy schema
- migrate-data — convert, deploy, migrate data end-to-end
Collect Inputs
Ask for missing parameters. Defaults in parentheses.
Oracle: Host (localhost), Port (1521), Instance (required, service name), User, Password, Schema
SQL Server: Server, Database, User, Password, Encrypt (true), Trust Server Certificate (true), Target Schema (dbo)
Project: Name (ssma-migration), Folder (.), Type (sql-server-2022 — also 2016/2017/2019/2025/sql-azure), SSMA Path (C:\Program Files\Microsoft SQL Server Migration Assistant for Oracle\bin\SSMAforOracleConsole.exe)
Generate XML Files
Resolve ALL {PLACEHOLDER} tokens before writing. Generate 3 files:
ssma-variables.xml
<?xml version="1.0" encoding="utf-8"?>
<variables>
<variable name="$WorkingFolder$" value="{PROJECT_FOLDER}" />
<variable name="$ProjectType$" value="{PROJECT_TYPE}" />
<variable name="$ProjectName$" value="{PROJECT_NAME}" />
<variable-group name="OracleConnection">
<variable name="$OracleHostName$" value="{ORACLE_HOST}" />
<variable name="$OracleInstance$" value="{ORACLE_INSTANCE}" />
<variable name="$OraclePort$" value="{ORACLE_PORT}" />
<variable name="$OracleUserName$" value="{ORACLE_USER}" />
<variable name="$OraclePassword$" value="{ORACLE_PASSWORD}" />
<variable name="$OracleSchemaName$" value="{ORACLE_SCHEMA}" />
</variable-group>
<variable-group name="SQLServerConnection">
<variable name="$SQLServerName$" value="{SQL_SERVER}" />
<variable name="$SQLServerDb$" value="{SQL_DATABASE}" />
<variable name="$SQLServerUsrID$" value="{SQL_USER}" />
<variable name="$SQLServerPwd$" value="{SQL_PASSWORD}" />
</variable-group>
<variable-group name="ReportSettings">
<variable name="$SummaryReportFile$" value="Reports\Assessment\AssessmentReport.xml" />
<variable name="$ConversionReportFile$" value="Reports\Conversion\ConversionReport.xml" />
<variable name="$ConversionReportFolder$" value="Reports\Conversion" />
<variable name="$DataMigrationReportFile$" value="Reports\Migration\DataMigrationReport.xml" />
<variable name="$SynchronizationReportFolder$" value="Reports\Synchronization" />
</variable-group>
</variables>
ssma-servers.xml
CRITICAL: Use tns-name-mode — standard-mode treats instance as SID and fails with ORA-12505.
<?xml version="1.0" encoding="utf-8"?>
<servers>
<oracle name="source_oracle">
<tns-name-mode>
<connection-provider value="OracleClient" />
<service-name value="(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = $OracleHostName$)(PORT = $OraclePort$)))(CONNECT_DATA =(SERVICE_NAME = $OracleInstance$)))" />
<user-id value="$OracleUserName$" />
<password value="$OraclePassword$" />
</tns-name-mode>
</oracle>
<sql-server name="target_sqlserver">
<sql-server-authentication>
<server value="$SQLServerName$" />
<database value="$SQLServerDb$" />
<user-id value="$SQLServerUsrID$" />
<password value="$SQLServerPwd$" />
<encrypt value="{ENCRYPT}" />
<trust-server-certificate value="{TRUST_CERT}" />
</sql-server-authentication>
</sql-server>
</servers>
Operation Script XML
Generate one script per operation. All scripts share this common <config> block (add <object-overwrite action="overwrite" /> for migrate-schema/migrate-data, add <data-migration-connection source-use-last-used="true" target-server="target_sqlserver" /> for migrate-data, use every-5% progress for schema/data ops):
<config>
<output-providers>
<output-window suppress-messages="false" destination="stdout" />
<upgrade-project action="yes" />
<user-input-popup mode="continue" />
<progress-reporting enable="true" report-messages="true" report-progress="every-10%" />
<log-verbosity level="info" />
</output-providers>
</config>
All scripts start with this preamble in <script-commands>:
<create-new-project project-folder="$WorkingFolder$" project-name="$ProjectName$"
overwrite-if-exists="true" project-type="$ProjectType$" />
<connect-source-database server="source_oracle">
<object-to-collect object-name="$OracleSchemaName$" />
</connect-source-database>
CRITICAL: Always include <object-to-collect> — without it, map-schema fails with "Source namespace was not found".
Per-operation commands (after preamble, before <save-project />):
| Operation | File | Commands after preamble |
|---|---|---|
| create-project | ssma-create-project.xml | connect-target-database → map-schema source-schema="$OracleSchemaName$" sql-server-schema="$SQLServerDb$.{TARGET_SCHEMA}" |
| generate-report | ssma-assessment.xml | generate-assessment-report object-name="$OracleSchemaName$" object-type="Schemas" write-summary-report-to="$SummaryReportFile$" verbose="true" report-errors="true" |
| migrate-schema | ssma-schema.xml | connect-target-database → map-schema → convert-schema (to $ConversionReportFile$) → synchronize-target object-name="$SQLServerDb$.{TARGET_SCHEMA}" |
| migrate-data | ssma-data.xml | Same as migrate-schema + refresh-from-database → migrate-data object-name="$OracleSchemaName$.Tables" object-type="category" (to $DataMigrationReportFile$) → close-project |
Execute
Show resolved XML and command to user. Confirm before running.
New-Item -ItemType Directory -Force -Path "Reports\Assessment","Reports\Conversion","Reports\Migration","Reports\Synchronization","Logs" | Out-Null
& "{SSMA_CONSOLE_PATH}" -s "{SCRIPT_XML}" -c "ssma-servers.xml" -v "ssma-variables.xml" -l "Logs\{OPERATION}.log"
Report Results
Check exit code (0 = success), read logs and reports (Reports\Assessment\, Reports\Conversion\, Reports\Migration\), summarize findings.
Constraints
- No external scripts — no
.ps1,.bat,.sh - Confirm connection details before executing
- Resolve all placeholders — no
{...}in final XML - Create output directories before execution
Known Pitfalls
| Symptom | Fix |
|---|---|
ORA-12505: SID not registered | Use tns-name-mode, not standard-mode |
Source namespace was not found | Add <object-to-collect> to connect-source-database |
not found in metabase on force-load | Use object-to-collect instead — force-load is unreliable |
SQL Server Agent is not running | Warning only — BCP client-side migration still works |
Frequently asked questions about SSMA Console
Similar skills
ClickHouse Logs Queries
Efficiently manage Supabase logs with ClickHouse SQL.
EF Core D2 Database Diagram Generator
Visualize your EF Core models as D2 diagrams effortlessly.
Safe SQL Execution
Ensure secure SQL execution in Supabase applications.
Oracle to PostgreSQL Migration
Identify migration risks between Oracle and PostgreSQL.
SQL Performance Optimization
Enhance SQL query efficiency across all databases.
Snowflake Semantic Views
Manage and validate Snowflake semantic views effortlessly.
