Oracle Veritabanını Farklı Bir İşletim Sistemine Taşıma
Bu yazıda Solaris Sparc mimarisi üzerinde çalışan Oracle Veritabanını Intel Linux ortamına farklı yöntemlerle taşımayı anlatacağım
Kaynaktaki işletim sistemiyle hedefdeki işletim sisteminin endian yapısını bilmek gerekir. Aşağıdaki sorguda endian işletim sistemleriyle ilgili bilgi vermekte. Little ve Big olarak iki tip endian sistemi vardır.
Solaris Sparc – Aix – Ibm Power – Hp Ux; Big endian olarak adlandırılır
Windows – Linux – Solaris x86; Little endian olarak adlandırılır
Big endiandan little endiana geçiş mümkündür. Tam tersi durumunda convert işlemi gerçekleşmez
SELECT * FROM V$TRANSPORTABLE_PLATFORM; |
Export/Import Yöntemi
Oracle 10’dan bu yana kullanılan en basit taşıma seklidir. Tüm platformları destekler. Db’nin kapatılmasına gerek yoktur. Export sırasında db üzerinde bir işlem olmamalıdır. Import edilen veri tabanında schemalara ait objeler invalid durumuna düşeceğinden kaynak/hedef arasında schema bazlı karşılaştırma yapılmalıdır. Import bittikten sonra oluşan importa ait log dosyası incelenmelidir. Tablespace, database name, database sid farklı olabilir. Dataguard için yeniden yapılandırılma gerekir
Transportable Tablespace Yöntemi (Big To Little)
Detay |
Kaynak |
Hedef |
İşletim Sistemi |
Solaris 10 Sparc |
X86 Linux |
Db Versiyon |
11.2.0.4 |
11.2.0.4 |
Db Adı |
orcl |
orcl |
Ip: |
192.168.1.30 |
192.168.1.25 |
Kaynak ve Hedef veri tabanı arasında dil ayarları, sid ismi, datafile’ların bulunduğu dizin aynı olmalıdır. Bunun için öncelikle hedef veri tabanında boş bir oracle instance kurulumu yapılır. Veri tabanına ait kendi tablespaceleri (system, sysaux) ve UNDO, TEMP, SYS, SYSAUX schemaları taşınamaz. Taşıma öncesinde kaynak veri tabanında taşınacak tablespaceler read only moda çekilir.
Hedef veri tabanında move isimli user ve move adında tablespace mevcut.
Move userına ait deneme tablosu (12gb) veri bulunmakta procedure, package ve function mevcut
Taşıma Adımları
- Kaynak Move TS read only mode a çekilir
alter tablespace move read only; |
- Kaynak veri tabanında transportable export alınır
expdp directory=dtpump dumpfile=transport.dmp logfile=transport_export.log transport_tablespaces=MOVE |
- Tasınacak ts’ın içerisindeki datafile hedef db’ye kopyalanır
scp /u01/app/oracle/oradata/orcl/trs01.dbf oracle@192.168.1.25:/u01/app/oracle/oradata/orcl/ |
- Hedef veri tabanında taşınacak userlar, roller oluşturulur.
Not: User oluşturulduğunda taşınacak TS olmadığından default olarak USERS TS’i kullanması gerekir.
CREATE USER MOVE IDENTIFIED BY VALUES ‘S:1E030EB8ABDA619EEC6E848B8C9D1240E2B87FC43150E1EC69E291691645;08CB4C0F6B151FA1’ DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; |
- Aldıgımız export dump’ını hedefteki db’ye import ediyoruz
impdp directory=dtpump dumpfile=transport.dmp logfile=transport_export.log transport_datafiles=/u01/app/oracle/oradata/orcl/trs01.dbf |
- Import işlemi bittikten sonra move isimli tablespace ve data geldi
|
- Move userının default USERS TS, MOVE TS olarak değişitirilir ve read only moddan çıkarılır
- Hedef db’de Move userı altında bulunan objeler (package, procedure, function, roller, grantlar vs) create edilir
Transportable Tablespace Yöntemi (Little To Big)
Detay |
Hedef |
Kaynak |
İşletim Sistemi |
Solaris 10 Sparc |
X86 Linux |
Db Versiyon |
11.2.0.4 |
11.2.0.4 |
Db Adı |
orcl |
orcl |
Ip: |
192.168.1.30 |
192.168.1.25 |
Linux üzerinde kurulu veri tabanını solaris sparc platformuna tasıma kısmını anlatacağım
Big to Little tasıma yönteminin aynısını burada da yapıyoruz
Tek fark;
Kaynak sistemdeki datafileları rman ile convert etmek
Burdaki önemli kısımlardan biri convert edilecek datafile’lar lokasyon olarak başka yerde olmalı.
Disk üzerinde yer sıkıntısı olmamalı.
Kaynak işletim sisteminde rman e bağlanılıp komut çalıştırılır
convert tablespace MOVE to platform ‘Solaris[tm] OE (64-bit)’ db_file_name_convert ‘/u01/app/oracle/oradata/orcl/’, ‘CONVERT EDILECEK PATH’; |
Convert işlemi bittikten sonra convert edilen datafillar hedefteki lokasyona kopyalanmalıdır