---
title: "SQL Server - Oracle taşıma, tarayıcınızda"
description: "Bir SQL Server veritabanını Oracle hedefine taşıyın: SSMS'in ürettiği betiği aynı tablolar, anahtarlar ve verilerle bir betiğe dönüştürün, raporuyla birlikte."
canonical: https://intosql.com/tr/sql-server-oracle-donusturme
last_updated: 2026-10-15
---

# SQL Server - Oracle taşıma, tarayıcınızda

SSMS'in Generate Scripts aracının şema ve veriyle yazdığı betiği .sql veya .sql.gz, UTF-16 veya UTF-8 olarak bırakın ve aynı tablolar, anahtarlar, indeksler ve verilerle bir Oracle betiği indirin. Oracle'in olduğu gibi tutamadığı her değer ve taşımadığı her nesne raporda listelenir.

[SQL Server - Oracle taşıma kılavuzu](https://intosql.com/docs/migrations/sql-server-to-oracle)

[SQL Server - Oracle veri türleri](https://intosql.com/docs/types/sql-server-to-oracle)

## SQL Server ile Oracle arasında neler değişir

Her satır, dönüştürücünün uyguladığı bir kuraldır; yanında, kural verilerinizde bir şeyi değiştirdiğinde yazılan rapor satırı yer alır.

| SQL Server içinde | Oracle içinde | Rapor satırı |
| --- | --- | --- |
| bit | 0 ve 1'i denetleyen bir CHECK ile NUMBER(1) |  |
| char(n), varchar(n), nchar(n), nvarchar(n) | karakter sayan VARCHAR2(n CHAR) |  |
| varchar(max), nvarchar(max), text, ntext | her değer 4000 bayta sığıyorsa VARCHAR2(4000 CHAR), değilse CLOB | `text_as_lob` |
| empty strings and empty binary values | NULL | `empty_string_null` |
| decimal(p,s), money, smallmoney | NUMBER(p,s); money NUMBER(19,4) olarak |  |
| datetime, datetime2, smalldatetime | TIMESTAMP(p) |  |
| datetimeoffset | her değerin farkıyla TIMESTAMP WITH TIME ZONE |  |
| time | gece yarısından itibaren INTERVAL DAY TO SECOND |  |
| dates that aren't valid | NULL | `date_out_of_range` |
| json (SQL Server 2025) | CLOB |  |
| uniqueidentifier | VARCHAR2(36) |  |
| binary, varbinary, image | RAW(n) ve BLOB |  |
| geometry, geography | SQL Server'ın kendi baytlarıyla BLOB | `spatial_as_native` |
| rowversion, timestamp | BLOB, boş | `rowversion_empty` |
| xml, sql_variant, hierarchyid, vector | her değerin metniyle VARCHAR2 veya CLOB | `type_replaced` |
| collations that ignore case (_CI_) | tam karşılaştırma | `case_insensitive_collation` |
| IDENTITY | en yüksek id'den sonra devam eden GENERATED BY DEFAULT ON NULL AS IDENTITY |  |
| CREATE SEQUENCE | aynı seçeneklerle CREATE SEQUENCE |  |
| computed columns | sanal sütunlar | `stored_as_virtual` |
| computed columns with functions Oracle lacks | düz bir sütun | `generated_not_translated` |
| defaults with functions Oracle lacks, and NEXT VALUE FOR | varsayılan değer yok | `default_not_translated` |
| CHECK constraints | çevrilir |  |
| CHECK constraints with functions Oracle lacks | oluşturulmaz | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | oluşturulmaz | `check_not_enforced` |
| filtered and columnstore indexes, and indexes on CLOB columns | oluşturulmaz | `index_skipped` |
| foreign keys | veriden sonra ENABLE NOVALIDATE, ardından yetim satırlar için uyarıyla doğrulanır |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | kaldırılır | `foreign_key_action_unsupported` |
| names over 128 bytes | kısaltılır | `name_shortened` |
| foreign keys to tables the dump doesn't create | oluşturulmaz | `foreign_key_skipped` |
| tables on a partition scheme | her bölümün satırlarını içeren tek tablo | `partitions_dropped` |
| temporal tables (SYSTEM_VERSIONING) | iki tablo: mevcut satırlar ve geçmiş | `system_versioning_dropped` |
| schemas | tek şema, tabloların adı önce şemalarının adıyla başlar | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL kaldırılır | `not_null_relaxed` |
| views, functions, procedures, triggers, synonyms, types and partition functions | raporda listelenir | `not_converted_objects` |
| scripts without CREATE TABLE (data only) | değerlerden okunan türler | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | CLOB | `unknown_type` |
| NUL characters in text | korunur |  |
| text that isn't valid in its encoding | hatalı baytlar yerine koyma karakteri olarak | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | olduğu gibi kopyalanır | `mojibake_suspected` |

## Betiği Oracle veritabanına yükleyin

Betik tabloları oluşturur, satırları kopyalar, ardından anahtarları, indeksleri ve yabancı anahtarları ekler; böylece hızlı yüklenir ve ilk hatada durur.

```shell
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @sql_server.oracle.sql
```

Yabancı anahtarlar ENABLE NOVALIDATE ile eklenir, böylece yeni satırlar hemen denetlenir, ardından doğrulanır. Eski bir satır var olmayan bir satıra işaret ediyorsa betik, yarı yolda başarısız olmak yerine hangi kısıt olduğunu söyler ve onu doğrulanmamış bırakır.

Büyük bir döküm için SQL*Plus'ı veritabanıyla aynı makinede çalıştırın. Betik her 100 satırda bir commit yapar. Betiği çalıştıran kullanıcının CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER ve CREATE PROCEDURE yetkilerine ve tablo alanında kotaya ihtiyacı vardır.

## En iyi sonuç için SQL Server dökümü nasıl alınır

Dönüştürücü, dökümün içerdiğini okur. Bu seçenekler verilerinizin daha fazlasını dökümde tutar:

- SSMS'te veritabanına sağ tıklayın, Tasks, Generate Scripts'i seçin ve tabloları işaretleyin. dbatools, mssql-scripter ve aynı kitaplık üzerine kurulu diğer araçlar aynı betiği yazar.
- Advanced altında Types of data to script ayarını Schema and data yapın. Yalnızca şemayı içeren bir betikte tablolar satırsızdır.
- Betiği SSMS'in varsayılanı olan Unicode ya da UTF-8 olarak kaydedin: ikisi de aynı şekilde okunur, gzip de çalışır.

## Neler dönüştürülmez

Görünümler, fonksiyonlar, saklı yordamlar, tetikleyiciler, eş anlamlılar, kurallar ve güvenlik ilkeleri T-SQL ile yazılır. Raporda adlarıyla listelenirler, asla sessizce atlanmazlar; böylece onları Oracle için yeniden yazabilirsiniz.

## SQL Server - Oracle dönüştürme hakkında sorular

### Dökümüm yükleniyor mu?

Hayır. Dönüştürücü tarayıcınızda çalışır ve dökümü diskinizden parça parça okur; böylece döküm bilgisayarınızdan hiç çıkmaz. Masaüstü uygulaması ve komut satırı da bilgisayarınızda dönüştürür.

### Döküm ne kadar büyük olabilir?

Dönüştürücü dökümün tamamını asla bellekte tutmaz: dosyayı aralıklar halinde iki kez okur ve betiği ilerledikçe yazar. Birkaç gigabaytlık dökümler tarayıcıda, masaüstü uygulamasında ve komut satırıyla dönüştürülür.

### SSMS'in kaydettiği UTF-16 dosyasını okuyor mu?

Evet. SSMS betikleri varsayılan olarak UTF-16 kaydeder ve dönüştürücü, gzip'li olsun olmasın, toplu işler arasında GO bulunan UTF-16 ve UTF-8 dosyalarını aynı şekilde okur.

### Betik hangi SQL Server sürümlerinden gelebilir?

SSMS, dbatools veya mssql-scripter ile SQL Server 2017 ve sonrasından yazılmış betikler. Her test betiği SQL Server 2017, 2022 ve 2025'ten gelir ve kaynağıyla hücre hücre karşılaştırılır.

### IDENTITY değerleri korunuyor mu?

Evet. IDENTITY sütunları kimlik sütunu olur, her satır kendi id'sini korur ve sonraki id en yüksek id'den sonra devam eder. Sequence'lar aynı seçeneklerle oluşturulur.

### money, datetimeoffset ve diğer SQL Server türleri ne olur?

bit NUMBER(1), datetime2 her basamağıyla TIMESTAMP, datetimeoffset farkıyla TIMESTAMP WITH TIME ZONE, nvarchar(max) ise değerleri bir VARCHAR2'ye sığmadığında CLOB olur. Oracle boş dizeleri NULL olarak sakladığı için bunlar NULL olur ve rapor onları sayar.

### Saklı yordamlar, tetikleyiciler ve görünümler ne olur?

Raporda adlarıyla listelenirler ve dönüştürülmezler, çünkü her veritabanı onları kendi dilinde yazar.

### Betik hangi Oracle sürümlerinde yüklenir?

Oracle 19c ve sonrası. Her test betiği 21c ve 23ai üzerinde yüklenir ve bir sorun çıkarsa ilk hatada durur.

## Kaynak: SQL Server

- [SQL Server - PostgreSQL](https://intosql.com/tr/sql-server-postgresql-donusturme)
- [SQL Server - MySQL](https://intosql.com/tr/sql-server-mysql-donusturme)
- [SQL Server - MariaDB](https://intosql.com/tr/sql-server-mariadb-donusturme)
- [SQL Server - SQLite](https://intosql.com/tr/sql-server-sqlite-donusturme)
- [SQL Server - SQL Server](https://intosql.com/tr/sql-server-sql-server-donusturme)

## Hedef: Oracle

- [MySQL - Oracle](https://intosql.com/tr/mysql-oracle-donusturme)
- [MariaDB - Oracle](https://intosql.com/tr/mariadb-oracle-donusturme)
- [PostgreSQL - Oracle](https://intosql.com/tr/postgresql-oracle-donusturme)
- [SQLite - Oracle](https://intosql.com/tr/sqlite-oracle-donusturme)
- [Oracle - Oracle](https://intosql.com/tr/oracle-oracle-donusturme)

## Kılavuz ve tüm ikililer

- [Oracle - SQL Server](https://intosql.com/tr/oracle-sql-server-donusturme)
- [SQL Server - Oracle taşıma kılavuzu](https://intosql.com/docs/migrations/sql-server-to-oracle)
- [SQL Server - Oracle veri türleri](https://intosql.com/docs/types/sql-server-to-oracle)
- [Tüm veritabanı ikilileri](https://intosql.com/tr/veritabani-tasima)
