Ya, jika database Oracle Anda dibuat menggunakan set karakter Unicode, sebuah NVARCHAR di SQL Server harus dimigrasikan ke VARCHAR2 di Oracle. Di Oracle, NVARCHAR tipe data ada untuk memungkinkan aplikasi menyimpan data menggunakan kumpulan karakter Unicode ketika kumpulan karakter database tidak mendukung Unicode.
Satu hal yang harus diperhatikan dalam migrasi, bagaimanapun, adalah semantik panjang karakter. Di SQL Server, sebuah NVARCHAR(20) mengalokasikan ruang untuk 20 karakter yang membutuhkan hingga 40 byte di UCS-2. Di Oracle, secara default, sebuah VARCHAR2(20) mengalokasikan 20 byte penyimpanan. Dalam AL32UTF8 set karakter, yang berpotensi hanya cukup ruang untuk 6 karakter meskipun kemungkinan besar akan menangani lebih banyak (satu karakter di AL32UTF8 membutuhkan antara 1 dan 3 byte. Anda mungkin ingin mendeklarasikan tipe Oracle Anda sebagai VARCHAR2(20 CHAR) yang menunjukkan bahwa Anda ingin mengalokasikan ruang untuk 20 karakter terlepas dari berapa banyak byte yang diperlukan. Itu cenderung jauh lebih mudah untuk dikomunikasikan daripada mencoba menjelaskan mengapa sekitar 20 karakter string diperbolehkan sementara 10 karakter string lainnya ditolak.
Anda dapat mengubah semantik panjang default di tingkat sesi sehingga tabel apa pun yang Anda buat tanpa menentukan semantik panjang apa pun akan menggunakan karakter daripada semantik byte
ALTER SESSION SET nls_length_semantics=CHAR;
Itu memungkinkan Anda menghindari mengetik CHAR setiap kali Anda menentukan kolom baru. Dimungkinkan juga untuk mengaturnya pada tingkat sistem tetapi hal itu tidak disarankan oleh tim NLS-- rupanya, tidak semua skrip yang disediakan Oracle telah diuji secara menyeluruh terhadap basis data di mana NLS_LENGTH_SEMANTICS sudah diganti. Dan mungkin sangat sedikit skrip pihak ketiga.