30 Mart 2011 Çarşamba

Oracle İnitial Parametreleri


Oracle da database’ ini startup ile açmaya kalktığımız da instance ilk iş olarak parametre dosyasını okumaya çalışacaktır. Dolayısıyla temel initial parametrelerinden bahsederken bizim için çok kritik file’ lerimizden biri olan spfileSID.ora dosyasından da kısaca bahsedeceğiz.
Parametre dosyaları Linux’ da;  $ORACLE_HOME/dbs,  Windos’da $ORACLE_HOME/database  altında bulunur. Database create edilmesiyle birlikte spfileSID.ora dosyamızda oluşur.  Bunun yanısıra parametre değişikliğini database içirisinden Alter system veya Alter database ile yapmak istemediğimiz veya yapamadığımız durumlarda ise kullandığımız birde pfileSID.ora dosyamız olacaktır. Bu dosya db create operasyonu sonrasında oluşmaz, bunu create etmek için sql satırında;

Create pfile from spfile;

Komutunu çalıştırmamız yeterli olacaktır. Hazır yeri gelmişken bu iki dosya arasındaki farklardan bahsedelim;

Pfile, bir metin dosyasıdır ve edit edilebilir. Spfile direk olarak düzenlenemez.

Pfile’ de yapılan değişikliklerin etkin hale gelmesi için database’ i restart etmek gerekir. Spfile üzerinde yapılan değişikliklerin birçoğu hemen etkin hale gelir.

Pfile’ den spfile, spfile’ den  pfile oluşturulabilir. Pfile create etmek için; create pfile from spfile, spfile create etmek içinse create spfile from pfile komutunu kullanabiliriz.

Bir farkda dosya isimlerinde var, pfile’ in ismi init(instane_name).ora, spfile’ in ismi ise spfile(instance_name).ora ‘ dır.

Çok kullanılan bazı başlangıç parametrelerinin ne olduğunu açıklamaya çalışalım. Aşağıdaki parametrelerin bazıları 11g ile yeni gelmiş olan parametrelerdir. Dolayısıyla 10g versiyonlarında göremiyor olabilirsiniz.

(Aşağıdaki notlarım uzun bir zaman aralığında oluşmuştur, bir çoğu oracle dökümantasyonlarından, kişisel tecrübelerden bir kısmı ise kimi net sayfalarından derlenmiştir.)

Cluster_database : Real Application Clusterı etkin belirten Real Application Clusters parametresidir. Default değeri false’ dir. True yada False olarak 2 değer alabilir. Modify edilemez.

Compatible : Size Oracle’ ın yeni sürümünü kullanmaya izin verir, aynı zamanda geriye doğru bir önceki sürümü ile uyumluluk sağlar. Eğer daha önceki sürümden geri dönmek gerekirse bu parametre gerekli ve yeterli olacaktır.

Control_files : Database’ in yapısını veritabanı adını, create edilme zamanını, redologların ve datafile’ lerin adını ve lokasyonunu tutan kontrol dosyaları vardır. Control file denetim dosyaları bir veya daha fazla olabilirler, virgülle birbirinden ayrılarak belirtilirler. Minumum 1 ile 8 tane arasında olabilirler. Control file’ lerin lokasyonunu belirtir.

Db_create_file_destination: Data file’ lerin varsayılan konumunu belirtir. Bu lokasyon DB_CREATE_ONLINE_LOG_DEST_n parametresi set edilmemişse control files ve redo log larında lokasyonunu belirtir.  Dizinin, Oracle kulanıcısının dosyalarını oluşturması için gerekli izinlere sahip olması gerekir. Oracle create edilirken file isimleri belirtilmez ise,  uniqe nameler ile dosyaları create eder.

Alter system set db_create_file_dest = ‘/u01/oradata’;

Create tablespace tbs_1;

Db_create_online_log_dest_n: DB_CREATE_ONLINE_LOG_DEST_n (burada = 1, 2, 3, ...
 5)varsayılan default konumu,  control files ve redo logların konumunu belirler.

Db_domain : Dağıtılmış bir veritabanı sisteminde, DB_DOMAIN ağ yapısı içinde
veritabanının mantıksal konumu belirtir.

Nls_language : NLS_LANGUAGE veritabanının varsayılan dilini belirtir. Bu dil mesajları,
gün ve ay adları, AD, BC, am, pm ve semboller için kullanılır. Bu parametre de
parametreleri NLS_DATE_LANGUAGE ve NLS_SORT varsayılan değerler belirler.

Open_cursors : (özel SQL alanlara) Bir defada sahip olabilecek açık imleçler sayısını
belirtir. Size, cursors sayısının fazla oturum açmasını engellemek için bu parametreyi
kullanabilmenize olanak sağlar.  OPEN_CURSORS değeri yüksek olması, uygulamaların out
of open cursor hatası almasını engeller.

Job_queue_processes : JOB_QUEUE_PROCESSES bu işlerin yürütülmesi için
oluşturulabilir süreçlerinin sayısını belirtir. Bu iş sıra sayısını belirtir örneği (her J000, J999 ...)
işler. Çoğaltma veri yeniler için iş kuyruklarını kullanır. Gelişmiş kuyruk mesaj yayılması için
iş kuyruklarını kullanır. DBMS_JOB paketi üzerinden kullanıcı jobları,oluşturulabilir. Bazı
iş kuyruğu kişi, otomatik olarak oluşturulur. materialized views için örnek yenileme
desteklemektedir. Eğer materialized views otomatik olarak güncellemek istersen, bir veya
daha yüksek bir değere JOB_QUEUE_PROCESSES ayarlamanız gerekir.

Processes : İşletim sistemi kullanıcı sayısını belirtir aynı anda oracle’a
bağlanabilecek sayıyı ifade eder.

Remote_listener : REMOTE_LISTENER ağ adı bir adres veya Oracle Net uzak dinleyici
adresini listesine çözümler belirtir. Adresi veya adres listesi sistem için yapılandırılmış olarak
TNSNAMES.ORA dosyasında belirtilir.

Rollback_segments: ROLLBACK_SEGMENTS adıyla bir veya daha fazla rollback
segmentini allocate eder. Eğer bu parametre set edilirse, instance rollback_segments adıyla
tüm segmentleri kazanır.  Dinamik olarak bu parametrenin değerini değiştirmek mümkün
değil, ancak değerini değiştirebilir ve sonra instance’ ı  yeniden başlatabilirsiniz.

Undo_management : Alan yönetimi konusunda hangi sistemi kullanmalıyımı belirtir.
Parametre Auto olarak set edildiğinde, instance start olduğunda undo management modu
atomatic olarak devreye girer. Mauel olarak set edildiğinde ise, rollback segment alanları
harici olarak tahsis edilir.

Undo_tablespace: Undo Tablespace’ i, instance start oldukdan sonra, kullanılmak üzere
ayırır. Bu parametre, instance’ da manuel undo management modda ise, sonrasında hata
oluşur ve startup işlemi başarısızlıkla sona erer.  Kullanılabilir bir Undo Tablespace’ I yoksa,
instance undo tablespace alanı olmadan start olur.  Bu gibi durumlarda, user
transactionları sistem rollback segmentini kullanarak çalışırlar. Normal şartlar altında bu
modda çalışmakdan kaçınmalısınız. Database  çalışırken undo tablespace’ ini başka bir
undo  tablespace ile replace edebilirsiniz.

Undo_guarantee : Undo tablespace içerisinde belli bir süre mutlaka dataların tutulmasını
sağlar.

Alter tablespace undo_guarantee  retention guarantee;

Alter system set undo_tablespace = undo_noguarantee ;

Alter system set undo_tablespace = undo_ guarantee ;
                                                           
ALTER SYSTEM SET UNDO_RETENTION = 3600

Db_block_size : Database create edilirken  set edilir. Sonradan değiştirilemez. Database’
deki blockların size’ ını ifade eder.

Db_create_online_redo_dest_n: Redologların create ederken default olarak nereye
oluşturulacağının bilgisi yer alır.

Control_file_record_keep_time : Control filede dosyaların saklanma süresini belirtir.Bu
parametre 7 ile 365 arasında bir değer alabilir. (default değeri 7’ dir)

remote_os_authent : Bu parametre FALSE ise uzaktan password file dosyası olmadan
sysdba ile bağlanamazsın demek.

Remote_login_password_file : Uzakdan bağlanmak için gereken parametre Default değeri EXCLUSIVE dir. Parametre dosyası kaybolduğunda bu değer NONE’ a çekilip dosya create edilip tekrar EXCLUSIVE’ e alınması gerekmektedir.

Alter system set remote_login_password_file=EXCLUSIVE scope=spfile;

Background_dump_dest : Alert logun pathini verir.         

alter system set background_dump_dest = 'D:\orcl rman backup\' scope=both
(alert logun adı = alert_(db_sid).log   şeklinde oluşur.)

07_dictionary_accessibility : Select any table yetkisi olan userın data dictionaryi
görmemesi için bu parametre = FALSE  olmaldır.

Log_archive_dest_1 (dest) : Archive logların nerede tutulacağının bilgisinin set edildiği
parametre.

log_archive_start : Otomatik arşivlemenin doğrudan yapılıp yapılmayacağını gösterir. Buna
true demezseniz zaman zaman svrmgrl’ye bağlanarak log archive start diyerek, arşiv
dosyalarını yazma işlemini elle kontrol etmeniz gerekir ki bu genelde önerilmez. Ama tape
gibi farklı bir yere zaman zaman arşivlemek için bu yöntemi kullanabilirsiniz. B u parametre
oracle 10g ile birlikte deprecated olmuştur.

log_archive_format : Üretilecek arşiv dosyalarının yazılma biçimini gösteriyor.%s ile logların
sıra numarasını .arc ile de uzantısı belirlenebilir. (%s.arc) 

·         %s: log sequence number
·         %S: log sequence number, zero filled
·         %t: thread number
·         %T: thread number, zero filled
·         %d: DBID

Log_archive_max_processes :  Archive process sayısı bu parametre ile set edilir.
           
ALTER SYSTEM SET log_archive_max_processes = 4 SCOPE=SPFILE

Db_flashback_retention_target : Veritabanını kaç dakika geriye alabileceğinizin set edildiği
parametre.

alter system set db_flashback_retention_target=60 scope=memory;

Db_recovery_file_dest_size : Yedek işlemleri için ayrılan alanının size’ nın set edildiği
parametre.

ALTER SYSTEM SET  Db_recovery_file_dest_size = 35G SCOPE=SPFILE

Db_recovery_file_dest : Flashback bilgisinin nerede tutulacağı bilgisinin set edildiği
parametre. Aynı zamanda default backup dizinidir.

alter system set db_recovery_fıle_dest ='d:/orcl_backup' scope=both;

select * from v$recovery_fıle_dest;

Db_block_checking : Db data blocklarında corruption oluşmasını önler.(değer true yapılırsa
%10’ lar civarında memory kaybı oluşur)

Db_block_checksum : Db corruption oluşmasını engeller, veriyi datafile’ e yazarken çift
kontrol yapar. (değer true yapılırsa I/O da %1-2 civarında artış olur.)

Db_keep_cache_size : Buffer cache’ in keep alanının size’ ı set edilir.                

alter system  set db_keep_cache_size = 50M scope=MEMORY;

Db_recycle_cache_size :    Buffer cache’ in recyclebin alanının size’ ı set edilir.          

alter system  set db_recycle_cache_size= 10M scope=MEMORY;

Db_cache_size : Buffer cache’ in default alanının size’ ı set edilir.           

Shared_pool_size : Shared pool’ un size’ ı set edilir.

Large_pool_size : Large pool’ un size’ ı set edilir.

Java_pool_size : Java pool’ un size’ ı set edilir.

Streams_pool_size : Streams pool’ un size’ ı set edilir.

Sga_max_size : Sga atanmış olan kullanılabilecek alanı ifade eder.

Sga_target : Sga’ nın kullanılabileceği alanı ifade edebilir. Bu değer sga_max_size değerinden büyük olamaz.

ALTER SYSTEM SET  sga_max_size = 16000M SCOPE=SPFILE;
ALTER SYSTEM SET  sga_target = 15000M SCOPE=SPFILE ;

Pga_aggregate_target : Pga alanına atanan memory alanını ifade eder.

Statistics_level : Sistem tarafından toplanan istatistiklerin nasıl toplanacağının set edildiği
parametredir. 3 değer alabilir. BASIC; Datanın istatistiğini almaz. Dolayısıyla bu değer set
edilmişken ADDM çalışmaz. TYPICAL; default değerdir.segment seviyesinde istatistikleri alır.
ALL; operating systeminde istatistiğini alır. Sisteme yük getirir.

ALTER SYSTEM SET statistics_level=all

Open_cursors : Bir sessionın aynı anda kaç tane select çalıştırabileceğini belirtir. (default değeri 300)

Alter system set open_cursors=350;

User_dump_dest : user trace dosyalarının pathi burda yer alır.

fast_start_mttr_target : Database’ e checkpoint attırma zamanı (değer saniye cinsinden)

ALTER SYSTEM SET fast_start_mttr_target = 900          

db_writer_processes : Databasede ki db writer procecessinin kaç adet olduğunu bilgisini bu parametreden alır.

*.db_writer_processes=1   

audit_sys_operations : Database’ in izlenmesi sürecinde Sys userının da denetlenip
denetlenmeyeceğini gösteren parametredir. Defaultu FALSE’ dir.

audit_file_dest : sysnin auditlenmesi durumunda sys audit kayıtlarının yerini belirtir.
Windows da windows application log’ larda, linuxda audit_file_dest parametresine bakar.

log_archieve_start : otomatik archive alma parametresidir. İnit.ora dosyasında değeri
log_archieve_start=true şeklinde set edilmelidir. Noarchivelog modunda çalışan bir db
için bu parametre init.ora dosyasında olmaması gerekmektedir.

open_links : OPEN_LINKS uzak veritabanlarına tek oturumda aynı anda açık bağlantı
sayısını belirtir. (deafult’ u 4. static bir parametre olduğundan değiştirildiğinde db restart
etmek gerekir.)

Statistic_level : AWR’ ın çalışmasını sağlayan parametredir. 3 değer alabilir. Defaultu Typical’ dır. All ve Basic’ de olaiblir. Basic olduğunda AWR devredışı kalır.

alter system set statistics_level = all;

Control_management_pack_acces : Addm’ in çalışması için gereken parametredir. Diadnostic+ tuning default değeridir.Diagnostic veya None olarak da set edilebilir.  None olması durumunda ADDM devredışı kalır.

remote_dependencies_mode ; İki değer alabilir. timestamp, Clientın istediği procedure ancak serverdaki kayıt tarihi  ile, localdeki şimdiki tarih ile uyuşursa çalıştırılır. signature,  oracle, bir procedure'nin imzalarının güvenli olarak göz önüne alınmış olması durumunda çalıştırılmasına müsade eder. Bu ayar, PLSQL uygulamalarının tekrar compile edilmeden çalıştırılmasını sağlar.  

Alter session SET REMOTE_DEPENDENCIES_MODE = ( SIGNATURE / TIMESTAMP )

Alter system SET REMOTE_DEPENDENCIES_MODE=( SIGNATURE / TIMESTAMP )

Ddl_lock_timeout : Ddl işlemlerinde oluşaacak lock’ lardaki bekleme süresini ifade eder. Defaultu “0”.  Bu parametre 0 ile   100.000 arasında değer alabilir. system ve session bazında değiştirilebilir.

Alter system set ddl_lock_timeout = 10 scope = SPFILE

max_dump_file_size : Oluşan trace dosyalarının maximum ne kadar boyutta olacağını belirtir. (bu maximum size sınırlaması alert logu kapsamaz.)

alter system set max_dump_file_size = ‘5m’;

aq_tm_processes : Parametre enable edildiğinde queue mesajlarının monitör edilmesini
sağlar. 0 – 10 arasında değer alır. 0 olduğunda disable olur. Eğer oracle stream
kullanılıyorsa bu parametrenin 0 olarak set edilmesi başka problemlere yol açılacaktır. Oracle
bu değerin 0’ dan bir değer olarak set edilmesini öneriyor.

alter system set aq_tm_processes=0

cursor_sharing : Shared pool içerisinde tutulan sqllerin benzerleri geldiğinde aynı plan ile
diğerlerininde çalışıp çalışmayacağının set edildiği parametredir. SIMILAR = Çalışan sql'
lerin birebir aynı olmasa da benzeyenler için (execution planlarına da bakar) cache den
çalıştırmaya yönlendirir.  EXACT = Çalışan sqlerin cache' den çalışması için sorguların
birebir aynısı olması gerekmektedir. FORCE =  Cache de Çalışan sql lerin benzeri varsa
mevcut execeution plan kullanılmasını zorlar

ALTER SYSTEM SET cursor_sharing = FORCE SCOPE=MEMORY

Utl_file_dir : Bu parametre bir veya daha fazla lokasyonun, oracle tarafından PL/SQL ile
kullanılmasını sağlar. Bu parametre ile tüm userlar bu lokasyonlardaki bütün file’ leri okuyup
azabilirler.

Alter system set url_file_dir=’/u01/file1/’, ‘/u02/file2/’, ‘/tmp’ scope =SPFILE

CREATE DIRECTORY log_dir AS '/appl/gl/log';
GRANT READ ON DIRECTORY log_dir TO DBA;

CREATE DIRECTORY out_dir AS '/appl/gl/user'';
GRANT READ ON DIRECTORY user_dir TO PUBLIC;


24 Mart 2011 Perşembe

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,

21 Mart 2011 Pazartesi

ORA-39125: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA


Bir proje için database’ lerin birinden no rows backup almam gerekiyordu.
expdp “‘/ as sysdba’” DIRECTORY=expdp DUMPFILE= metadata_15032011.dmp LOGFILE=metadata_15032011.log CONTENT=METADATA_ONLY FULL=Y
Yukarıdaki script ile almaya çalıştığımda ;
Processing object type SCHEMA_EXPORT/VIEW/GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TYPE/TYPE_BODY
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/JOB
ORA-39125: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA while calling DBMS_METADATA.FETCH_XML_CLOB [JOB]
ORA-04030: out of process memory when trying to allocate 281280 bytes (callheap,temporary memory)

----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
7000003852a3c60     13615  package body SYS.KUPW$WORKER
7000003852a3c60      5898  package body SYS.KUPW$WORKER
7000003852a3c60      2090  package body SYS.KUPW$WORKER
7000003852a3c60      6417  package body SYS.KUPW$WORKER
7000003852a3c60      1264  package body SYS.KUPW$WORKER
70000037dd83788         2  anonymous block

Job "SYS"."DWDATA_METADATA_EXPORT" stopped due to fatal error at 12:59


ORA-39125: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA while calling DBMS_METADATA.FETCH_XML_CLOB [JOB]
ORA-04030: out of process memory when trying to allocate 281280 bytes (callheap,temporary memory)

Hatası aldım. Hatanın içeriğinde zaten JOB’ lar ile ilgili bir problem olduğunu gösteriyor. Sorun yaratan jobları bulmak için ;  

------------------------  problemli nesneyi bulmak için

connect / as sysdba

select object_id, owner, object_name, object_type 
from   all_objects
where  object_id not in (select distinct obj# from source$) and
       object_type = 'JOB'
order  by owner;


OBJECT_ID OWNER                          OBJECT_NAME
---------- ------------------------------ ------------------------------
   1448959 KAMIL                          ADV_SHRINK_1567422
   1448962 KAMIL                          SQLSCRIPT_7073194
   1448961 KAMIL                          ADV_MIZANIDX_seg_adv
   1047787 ORACLE_OCM            MGMT_STATS_CONFIG_JOB
   1047786 ORACLE_OCM            MGMT_CONFIG_JOB

5 rows selected.

Problem çıkaran jobları buldum. Sonrasında artık kullanılmayacak olan joblar olduğundan hepsini drop etmeye karar verdim. (ki metalinkde de hatanın çözüm yolu olarak önce drop edip no rows backupı başarılı olarak alıp, ihtiyaç var ise tekrar create etmek şeklinde ifade edilmiş, yani gerekiyorsa ddl’ ini alıp sonrasında tekrar create edebilirsiniz)

Drop scripti için aşağıdaki sql’ i kullanabilirsiniz;  

select 'execute DBMS_SCHEDULER.DROP_JOB('||owner||'.'||object_name|| ');' drop_komut
from   all_objects
where  object_id not in (select distinct obj# from source$) and
object_type = 'JOB'
order  by owner;

DROP_KOMUT
-----------------------------------------------------------------------------------------------
execute DBMS_SCHEDULER.DROP_JOB(KAMIL.ADV_SHRINK_1567422);
execute DBMS_SCHEDULER.DROP_JOB(KAMIL.ADV_MIZANIDX_seg_adv);
execute DBMS_SCHEDULER.DROP_JOB(KAMIL.SQLSCRIPT_7073194);
execute DBMS_SCHEDULER.DROP_JOB(ORACLE_OCM.MGMT_STATS_CONFIG_JOB);
execute DBMS_SCHEDULER.DROP_JOB(ORACLE_OCM.MGMT_CONFIG_JOB);

5 rows selected.

Hazırladığımız drop komutlarını çalıştıralım ;

execute DBMS_SCHEDULER.DROP_JOB(KAMIL.ADV_SHRINK_1567422);
Job Dropped
execute DBMS_SCHEDULER.DROP_JOB(KAMIL.ADV_MIZANIDX_seg_adv);
Job Dropped
execute DBMS_SCHEDULER.DROP_JOB(KAMIL.SQLSCRIPT_7073194);
Job Dropped
execute DBMS_SCHEDULER.DROP_JOB(ORACLE_OCM.MGMT_STATS_CONFIG_JOB);
Job Dropped
execute DBMS_SCHEDULER.DROP_JOB(ORACLE_OCM.MGMT_CONFIG_JOB);
Job Dropped

 Tekrar kontrol edelim;

select object_id, owner, object_name, object_type
from   all_objects
where  object_id not in (select distinct obj# from source$) and
object_type = 'JOB'
order  by owner;
0 rows selected.

Artık backupımızı alabiliriz.




 Kamil TÜRKYILMAZ