Transportable Tablespace Yöntemi ile Taşınamayan Nesneler İle İlgili Bir Test

Bu aralar yaklaşık 19 tb büyüklüğündeki bir production database’ imizi farklı bir sunucu üzerine migration yapacağımız için kullanacağımız muhtemel yöntemleri ve bu yöntemlerin artılarını ve eksiklerini test etmekle uğraşıyorum. Transportable tablespace bu yöntemlerin en başında geliyor aslında, burdaki en büyük problemlerimizden biride database içerisindeki materialized views’ lerin durumu, zira transportable tablespace bu nesneleri taşımıyor. Bununla ilgili bugün yapmış olduğum bir testi sizlerle paylaşmak istedim.

Transportable tablespace yöntemi ile ilgili olarak daha önce ayrıntılı bir yazı yazmıştım zaten dolayısıyla burda yöntem ile ilgili detaya girmeyeceğim. (http://www.kamilturkyilmaz.com/2010/10/22/transportable-tablespace-yontemi-ile-database-tasimak/)

Testi yaptığım her iki database’ inde Endian formatları aynı olduğundan dolayı rman tarafında herhangi bir convert işlemi yapmayacağım.

 

SELECT a.platform_name, endian_format

FROM v$transportable_platform b, v$database a

WHERE b.platform_name = a.platform_name

PLATFORM_NAME                                             ENDIAN_FORMAT

—————————————————————  ————–

Linux x86 64-bit                                                    Little

1 row selected

Bu testi yaparken kapsamı biraz daha genişletip public synonym, dblink’ lerin de bu yöntemle taşınamadığını göstermek istedim. Şimdi ilk database’ imizde bu nobjeleri oluşturalım sonrasında taşıyıp sonucuna bakalım.

— public sysnonym’ mizi oluşturalım

create public synonym tester FOR kamil.test

Synonym created

— dblinkimizi oluşturalım

create database link test

connect to KAMIL

identified by xxxxxxx

using ‘alfa’

External database created

— materialized view’ imizi oluşturalım

CREATE MATERIALIZED VIEW kamil.session_log NOCACHE

LOGGING

NOCOMPRESS

NOPARALLEL

REFRESH COMPLETE

START WITH TO_DATE(’10-Mar-2011 15:50:37′,’dd-mon-yyyy hh24:mi:ss’)

NEXT SYSDATE + 360/1440

AS

select * from v$session

Snapshot created

— MV create ettikden sonra oluşan tabloya bir bakalım

select count(*) from kamil.session_log

COUNT(*)

———-

460

1 row selected

Buraya kadar herşey normal, devam ediyoruz,

—  bu test için oluşturmuş olduğumuz tbs_mvtest tablespace’ inin diğer tablespace’ ler ile bir ilişkisi olup olmadığını kontrol edelim.

begin

DBMS_TTS.TRANSPORT_SET_CHECK(‘TBS_MVTEST’,TRUE);

end;

PL/SQL procedure successfully completed

— sonucu select ediyoruz

SELECT * FROM TRANSPORT_SET_VIOLATIONS

0 rows selected

— hiçbir bağımlılığı yok, read only moda alıp meta datanın backupını alalım

alter tablespace TBS_MVTEST read only

Tablespace altered

— expdp için directory create ediyoruz

CREATE DIRECTORY expdp AS ‘/oradata/export/expdp’

Directory created

— exportu alacak user için gerekli yetkilendirmeyi yapalım

GRANT READ,WRITE ON DIRECTORY expdp TO system

Grant succeeded

— çok gerekli değil ama yinede kontrol amaçlı directory’ e bakalım

SELECT * FROM dba_directories where directory_name = ‘EXPDP’

OWNER     DIRECTORY_NAME  DIRECTORY_PATH

SYS           EXPDP                /oradata/export/expdp                                             1 row selected

— expdp ile transportable exportumuzu alalım.

expdp  system/oracle  DIRECTORY=expdp  TRANSPORT_TABLESPACES=TBS_MVTEST TRANSPORT_FULL_CHECK=y DUMPFILE=tbs_mvtest.dmp logfile=tbs_mvtest.log

[oracle@testdb1 expdp]$ expdp system/oracle DIRECTORY=expdp  TRANSPORT_TABLESPACES=TBS_MVTEST TRANSPORT_FULL_CHECK=y DUMPFILE=tbs_mvtest.dmp logfile=tbs_mvtest.log

Export: Release 11.2.0.1.0 – Production on Thu Mar 10 16:33:55 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″:  “********” DIRECTORY=expdp TRANSPORT_TABLESPACES=TBS_MVTEST TRANSPORT_FULL_CHECK=y DUMPFILE=tbs_mvtest.dmp logfile=tbs_mvtest.log

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/COMMENT

Processing object type TRANSPORTABLE_EXPORT/MATERIALIZED_VIEW

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Master table “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″ successfully loaded/unloaded

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:

/oradata/export/expdp/tbs_mvtest.dmp

******************************************************************************

Datafiles required for transportable tablespace TBS_MVTEST:

/oradata/SET/TBS_MVTEST_01.dbf

Job “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″ successfully completed at 16:35:04

[oracle@testdb1 expdp]$ ls -lrt

Test için bu database’ imizdeki tüm dataları oluşturduk ve exportunu aldık, buradaki işimiz TBS_MVTEST tablespace’ ine ait dbf ile alınan exportun dmp file’ ini testin ikinci aşamasını yapacağımız sunucuya taşıdıkdan sonra burayla işimiz kalmıyor.

— Yeni ortamda expdp dizininioluşturalım

CREATE OR REPLACE DIRECTORY expdp AS ‘/oradata/export/expdp’ ;

— yetkilerini verelim

GRANT READ,WRITE ON DIRECTORY expdp TO system;

— dbf’ i ait olduğu dizine OS komutları ile taşıdığımızdan dolayı artık meta datayı import edebiliriz

impdp system/oracle TRANSPORT_DATAFILES=’/oradata/export/expdp/TBS_MVTEST_01.dbf’ DIRECTORY=expdp DUMPFILE=tbs_mvtest.dmp LOGFILE=imp_tbs_mvtest.log

— hata aldık, çünkü burada test nesnelerimi oluşturduğumuz KAMIL schemasını create etmeyi unuttuk.(hata aldığım noktaları özellikle belirtmek istiyorum ki aslında bu kısımların hepsinden daha önemli olduğunu düşünüyorum)

[oracle@testdb2 expdp]$ impdp system/oracle TRANSPORT_DATAFILES=’/oradata/export/expdp/TBS_MVTEST_01.dbf’ DIRECTORY=expdp DUMPFILE=tbs_mvtest.dmp LOGFILE=imp_tbs_mvtest.log

Import: Release 11.2.0.1.0 – Production on Thu Mar 10 16:49:57 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Master table “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″ successfully loaded/unloaded

Starting “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″:  system/******** TRANSPORT_DATAFILES=/oradata/export/expdp/TBS_MVTEST_01.dbf DIRECTORY=expdp DUMPFILE=tbs_mvtest.dmp LOGFILE=imp_tbs_mvtest.log

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

ORA-39123: Data Pump transportable tablespace job aborted

ORA-29342: user KAMIL does not exist in the database

Job “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″ stopped due to fatal error at 16:50:02

— userı create edip importu tekrar deniyoruz

create user KAMIL identified by oracle

User created

— user ile ilgili bir yetki problemine takılmamak için dba yetkisi veriyorum

grant dba to kamil

Grant succeeded

— import ediyoruz

[oracle@testdb2 expdp]$ impdp system/oracle TRANSPORT_DATAFILES=’/oradata/export/expdp/TBS_MVTEST_01.dbf’ DIRECTORY=expdp DUMPFILE=tbs_mvtest.dmp LOGFILE=imp_tbs_mvtest.log

Import: Release 11.2.0.1.0 – Production on Thu Mar 10 16:52:03 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Master table “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″ successfully loaded/unloaded

Starting “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″:  system/******** TRANSPORT_DATAFILES=/oradata/export/expdp/TBS_MVTEST_01.dbf DIRECTORY=expdp DUMPFILE=tbs_mvtest.dmp LOGFILE=imp_tbs_mvtest.log

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/COMMENT

Processing object type TRANSPORTABLE_EXPORT/MATERIALIZED_VIEW

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job “SYSTEM”.”SYS_IMPORT_TRANSPORTABLE_01″ successfully completed at 16:52:16

Aslında tüm işimiz bitti, şimdi kontrol edebiliriz.

select owner,segment_name, tablespace_name from dba_segments

where owner = ‘KAMIL’

OWNER               SEGMENT_NAME                           TABLESPACE_NAME

KAMIL                  SESSION_LOG                                    TBS_MVTEST

1 rows selected

Yukarıdaki script ile MV’ ye ait tablo geldi ancak hemen belirteyimki refresh statüleri update olmadığından yani onlar tablo ile taşınmadığından güncellenmeyecek, dolayısıyla buna artık MV demek yanlış olacaktır.

— synonym’ e bakalım, oda yok.

select * from dba_synonyms

where synonym_name = ‘TESTER’

0 rows selected

— dblink control ediyorum, maalesef oda yok J

SELECT

‘create ‘||DECODE(U.NAME,’PUBLIC’,’public ‘)||’database link ‘||CHR(10)

||DECODE(U.NAME,’PUBLIC’,Null, U.NAME||’.’)|| L.NAME||chr(10)

||’connect to ‘ || L.USERID || ‘ identified by ”’

||L.PASSWORD||”’ using ”’ || L.host || ””

||chr(10)||’;’ TEXT

FROM sys.link$ L,

sys.user$ U

WHERE L.OWNER# = U.USER#

and u.name = ‘KAMIL’

0 rows selected

Tabi ben burda zaten transportable tablespace’ in olumsuz yönlerini belirtmek istediğim için seçerek bunları gösterdim. Zira kafanızda bu yöntem zaten hiç birşeyi taşımıyormuş gibi algı oluşturmak istemem.

Testin yöntem ile ilgili bazı soru işaretlerini umarım silmenize yardımcı olmuştur.

Bir başka yazıda görüşmek dileğiyle,

Be Sociable, Share!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


+ 2 = on