Pages

1 Şubat 2011 Salı

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

Transportable(taşınabilir) tablespace export ve  import işlemleri farklı platformlar arasında yapılabilmektedir,ancak sadece meta verisi ihraç edilmektedir. Farklı işletim sistemlerinde verilerin taşıması basit ve hızlı olmaktadır. Bu mod için EXP_FULL_DATABASE rolüne üye olunması gerekmektedir.

Farklı 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. Hedef veritabanında aynı isimde tablespace bulunmamalıdır.
3. Taşınabilir tablespace ihracı durduğu zaman tekrardan başlatılamaz.
4. Hedef veritabanı kaynak veritabanı ile aynı sürümde veya daha üst sürümde olmalıdır.

Aynı endian formatına sahip farklı işletim sistemleri arasında tablespace taşıması aşağıda adım adım anlatılmaktadı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ğin; örneğimide kullanılacak olan“test_user_tbs” adındaki taşınabilir tablespace LINUX1 adlı Linux 64 bit(Little endian) makineden, WIN1 adlı Microsoft Windows 64 bit (Little endian) makineye taşınabilecektir. Her iki platformda LITTLE endian formatında işletim sistemidir. “test_user_tbs” tablespacenin veri dosyası ise “test_user_tbs01.dbff” dir.

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

SQL> alter tablespace test_user_tbs read only;

Adım 3: Metadatayı export veya export datapump özelliklerinden birini kullanarak ihraç ediyoruz.

  • Export özelliğini kullanarak alttaki komutu çalıştırıyoruz.
$ exp system/password tablespaces=test_user_tbs transport_tablespace=y file=exp_test_user_tbs.dmp log=exp_test_user_tbs.log

  • Export data pump(veri pompalama) özelliğini kullanarak aşağıdakini çalıştıyoruz.Bunun için export_dir adı altında bir dizin oluşturulmalıdır.
      $ sqlplus / as sysdba
      SQL> create directory export_dir as '/u01/app/export_dir';
      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

*** TRANSPORT_FULL_CHECK= Y takısı, taşınabilir tablespace içinde ve dışındaki objelerin birbirine olan bağlılıklarını kontrol etmeye yarar. ***

“exp_test_user_tbs.dmp” veya “expdp_test_user_tbs.dmp” dosyası sadece metadatayı içerdiğinden büyük ebatta olmayacaktır.

Adım 4: Dosyaları hedef sisteme taşıyoruz. Eğer FTP kullanılıyorsa binary seçeneği kullanılmalıdır.

Adım 5: Tablespace veritabanına iliştirilerek ihraç işlemi başlatılır. Import veya import datapump özelliklerinden birisi kullanılabilir.

  • Import özelliğini kullanarak aşağıdaki komutu çalıştırıyoruz.
$ imp test_user/password tablespaces=test_user_tbs transport_tablespace=y file=exp_test_user_tbs.dmp datafiles='test_user_tbs01.dbf' log=imp_test_user_tbs.log

  • impdp komutunu kullanarak aşağıdaki komutu çalıştırıyoruz. Bu komutu çalıştırmadan önce dizin oluşturmalı, export dosyasını bu dizine taşımalı ve işlemi yapacak kullanıcıya gerekli izinleri vermeliyiz.
SQL> create directory import_dir as 'C:\import';
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

Eğer başka bir şemaya taşımak istenirse REMAP_SCHEMA= (kaynak: hedef) takısı kullanılmalıdır.

Adım 6: Tablespace read/write moduna çevrilir.

SQL> ALTER TABLESPACE TEST_USER_TBS READ WRITE;

Artık veritabanı “test_user_tbs” adında bir tablespace sahibidir ve bu tablespace içindeki tüm objeler erişilebilirdir.

Taşınabilir tablespace import işleminde karşılaşılan en sık hatalar şunlardır;

1. Oracle Error : EXP-00044: must be connected "AS SYSDBA" to do Point-in-time Recovery or Transportable Tablespace import
Sebebi: Kullanıcının SYSDBA olarak oturum açması gerekmektedir.

2. IMP-00017: following statement failed with ORACLE error
19721:IMP-00003: ORACLE error 19721 encountered
ORA-06512: at "SYS.DBMS_PLUGTS", line 2065
ORA-06512: at line 1
Sebebi: Import parametre dosyasında aynı isimde veridosyası bulunmaktadır.

0 yorum:

Yorum Gönder