Pages

1 Şubat 2011 Salı

Farklı endian formatında işletim sistemleri arasında tablespace taşıma

Oracle 10g sürümünden itibaren farklı endian formatına sahip işletim sistemi platformları arasında tablespace taşıması yapılabilmektedir. Farklı endian formatına sahip işletim sistemi platformlarında taşınabilir tablespace ihraç ve ithal aşamaları aşağıdadır.

Adım 1: Hedef ve kaynak veritabanında işletim sistemi byte sıralamasını buluyoruz.

SQL > select * from v$transportable_platform
            order by platform_id;

PLATFORM_ID                   PLATFORM_NAME                          ENDIAN_FORMAT
-----------------                         --------------------------                             -------------------------
1                                              Solaris[tm] OE (32-bit)                         Big
2                                              Solaris[tm] OE (64-bit)                         Big
3                                              HP-UX (64-bit)                                     Big
4                                              HP-UX IA (64-bit)                                 Big
5                                              HP Tru64 UNIX                                    Little
6                                              AIX-Based Systems (64-bit)                 Big
7                                              Microsoft Windows IA (32-bit)              Little
8                                              Microsoft Windows IA (64-bit)              Little
9                                              IBM zSeries Based Linux                    Big
10                                            Linux IA (32-bit)                                   Little
11                                            Linux IA (64-bit)                                   Little
12                                            MS Windows 64-bit for AMD                Little


Örneğimizde kullanılacak olan“test_user_tbs” adındaki taşınabilir tablespace, LINUX1 adlı Linux 64 bit(Little endian) makineden, SOLARIS1 adlı Solaris 64 bit (BIG endian) makineye taşınacaktır. Her iki platformda farklı endian formatında işletim sistemleridir. “test_user_tbs” tablespacenin Linux üzerindeki fiziksel veri dosyası ismi “test_user_tbs01.dbf” dir.

Adım 2: Tablespace “READ ONLY” moduna getirilmektedir.

SQL> alter tablespace test_user_tbs read only;
Adım 3: Taşınabilir tablespace big endian formatına dönüştürülerek kaynak platformdaki geçici bir dizinde saklanacaktır. Bu döünüştürme işlemi için alttaki komut çalıştırılır.
$ rman / target
RMAN > convert tablespace test_user_tbs
to platform 'Solaris[tm] OE (64-bit)'
format='/tmp/transport_solaris/test_user_tbs01.dbf';

Adım 4: Export datapump özelliğini kullanarak metadatayı ihraç ediyoruz. Bu amaçla önce sanal bir dizin oluşturuyoruz.

$ sqplus / as sysdba
SQL> create directory export_dir as '/u01/app/';
SQL>exit
$ expdp system/password TRANSPORT_TABLESPACES=test_user_tbs TRANSPORT_FULL_CHECK=Y DIRECTORY=export_dir DUMPFILE=expdp_test_user_tbs.dmp logfile= expdp_test_user_tbs.log

Adım 5: Veri dosyalarını Linux üzerindeki /tmp/transport_solaris dizini içinden hedef Solaris sistemde veri dosyalarının bulunduğu dizine örneğin aşağıdaki gibi taşıyoruz. Bunun yanında exp_test_user_tbs.dmp adlı export dosyasıda Linux platformundan Solaris platformuna taşınmalıdır.

$ scp /tmp/transport_solaris/* solaris1:/u01/app/oracle/oradata/orcl/
$ scp /u01/app/* solaris1:/u01/app/

Adım 6: Tablespace veritabanına iliştirilerek ihraç işlemi başlatılır. Import datapump özelliğini kullanarak metadata ihracına başlamadan önce gerekli sanal dizin oluşturulmalı ve işlemi yapacak kullanıcıya gerekli izinler verilmelidir. Ayrıca export dosyasının bu sanal dizinin işaret ettiği fiziksel lokasyonda yer alıp almadığı son kez kontrol edilmelidir.

SQL> create directory import_dir as '/u01/app/';
SQL> grant read,write on directory import_dir to test_user;

$ impdp test_user/password TRANSPORT_DATAFILES='test_user_tbs01.dbf' DIRECTORY=import_dir DUMPFILE=expdp_test_user_tbs.dmp log= impdp_test_user_tbs.log

Adım 7: Tablespace read/write moduna döndürülür.

SQL> ALTER TABLESPACE TEST_USER_TBS READ WRITE;

Artık Solaris platformundaki Oracle 10g R2 veritabanı “test_user_tbs” adında yeni bir tablespace sahibidir ve bu tablespace içindeki tüm objeler erişilebilirdir.

Farklı endian yapısındaki platfomlar arasında taşınabilir tablespace meta verisinin ithal ve ihraç işlemleri için aşağıdakilerin gözönünde bulundurulması gerekmektedir.

1. Kaynak ve hedef veritabanı aynı karakter setinde ve ulusal karakter setinde olmalıdır.
2. Kaynak ve hedef platformlar v$transportable_platform sorgusu içinde yer almalıdır. Aksi durumda CONVERT işlemi yapılamaz.
3. Hedef veritabanında aynı isimde tablespace ve veri dosyaları bulunmamalıdır.
4. Hedef ve kaynak veritabanlarının COMPATIBILITY seviyesi en az Oracle 10g R1 veya daha üst sürümde olmalıdır.

0 yorum:

Yorum Gönder