---
name: ssma-console
description: "Use when: SSMA console operations — create project, generate assessment report, convert schema, migrate data, Oracle to SQL Server migration, schema conversion, data migration"
---
# SSMA 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"):
1. **create-project** — connect source & target, map schema
2. **generate-report** — assessment report
3. **migrate-schema** — convert & deploy schema
4. **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
```
### `ssma-servers.xml`
**CRITICAL**: Use `tns-name-mode` — `standard-mode` treats instance as SID and fails with ORA-12505.
```xml
```
### Operation Script XML
Generate one script per operation. All scripts share this common `` block (add `` for migrate-schema/migrate-data, add `` for migrate-data, use `every-5%` progress for schema/data ops):
```xml
```
All scripts start with this **preamble** in ``:
```xml
```
**CRITICAL**: Always include `` — without it, `map-schema` fails with "Source namespace was not found".
**Per-operation commands** (after preamble, before ``):
| 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.
```powershell
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 `` 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 |