> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wimeisoftwares.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrar do Oracle para PostgreSQL

> Guia passo a passo para extrair DDL de schemas Oracle com SQL*Plus, executar a análise no MigraFlow CLI e gerar scripts de migração para PostgreSQL.

## Exportar o schema Oracle

<CodeGroup>
  ```sql SQL*Plus theme={null}
  spool schema_legado.sql
  SELECT DBMS_METADATA.GET_DDL('TABLE', table_name)
    FROM user_tables
   ORDER BY table_name;
  spool off
  ```

  ```bash Data Pump (alternativa) theme={null}
  expdp usuario/senha DIRECTORY=exp_dir DUMPFILE=schema.dmp CONTENT=METADATA_ONLY
  ```
</CodeGroup>

## Executar a análise

```bash theme={null}
migraflow schema_oracle.sql "sistema financeiro Oracle 11g" --api-key mk_consultant_xxx --review
```

## Conversões automáticas

O MigraFlow converte automaticamente os padrões Oracle:

| Oracle               | PostgreSQL          |
| -------------------- | ------------------- |
| `NUMBER(10)`         | `BIGINT`            |
| `NUMBER(10,2)`       | `NUMERIC(10,2)`     |
| `VARCHAR2(100)`      | `VARCHAR(100)`      |
| `DATE`               | `TIMESTAMP`         |
| `CLOB`               | `TEXT`              |
| `BLOB`               | `BYTEA`             |
| `SYSDATE`            | `NOW()`             |
| `NVL(a, b)`          | `COALESCE(a, b)`    |
| `SEQUENCE + TRIGGER` | `BIGSERIAL`         |
| `SYS_GUID()`         | `gen_random_uuid()` |

## Padrões brasileiros reconhecidos

| Legado       | Moderno       |
| ------------ | ------------- |
| `TB_CLI_REG` | `customers`   |
| `CD_CLI`     | `customer_id` |
| `NM_CLI`     | `name`        |
| `DT_NASC`    | `birth_date`  |
| `VL_SALDO`   | `balance`     |
| `FL_ATIVO`   | `is_active`   |

## Riscos comuns em schemas Oracle

<AccordionGroup>
  <Accordion title="Datas armazenadas como VARCHAR2">
    **Risco CRÍTICO.** Colunas como `DT_NASC VARCHAR2(8)` armazenando `'19901231'` precisam de conversão explícita.

    ```sql theme={null}
    -- Fix gerado automaticamente
    ALTER TABLE customers ADD COLUMN birth_date DATE;
    UPDATE customers SET birth_date = TO_DATE(dt_nasc, 'YYYYMMDD');
    ```
  </Accordion>

  <Accordion title="SEQUENCE + TRIGGER para auto-increment">
    **Risco MÉDIO.** Sequências Oracle viram `BIGSERIAL` no PostgreSQL. Triggers de auto-increment são removidos.
  </Accordion>

  <Accordion title="Sinônimos e DB Links">
    **Risco ALTO.** Sinônimos e DB Links não têm equivalente direto. Precisam ser mapeados manualmente.
  </Accordion>
</AccordionGroup>
