Bugun sqlleri izlemek icin TKPROF yetmedigi ve daha detaya girlmesi gerektigi durumlarda ne yapmamiz gerektigi hakkinda fikirlerimi sizlerle paylasmak istedim.
Trace analyzer sayesinde daha detayli bir performans analizine ulasabiliriz.PLSQLdende kullanabiliriz.
9i,10g,11g versiyonlarinda kullanmamiz mumkundur. Platform olarakda windows linux ve unix ortamlarinda kullanabiliriz.
TKPROF gore cok daha fazla detay gorebiliriz install edilmesi gereken bir sqller toplulugudur.
Input olarak
• Trace(s) generated by event 10046 level 1, 4, 8 or 12
• Located in UDUMP or a designated server directory
• Unlimited size
• To analyze one Trace
• Provide name of trace file
• To analyze multiple Traces
• Create a control file with names of the traces
• Provide name of control file
• Output
• Comprehensive report with performance analysis details
• HTML and Text formats
alıp output olarakda
HTML ve TEXT rapor cikarabiliriz.
output olarak alinacak raporlar
Glossary of Terms Used
• Response Time Summary
• Overall Time and Totals
• Non-Recursive Time and Totals
• Recursive Time and Totals
• Top SQL
• Non-Recursive SQL
• SQL Genealogy
• Individual SQL ,Overall Segment I/O Wait Summary
• Hot I/O Blocks
• Gaps in Trace
• ORA errors in Trace
• Transactions Summary
• Non-default Initialization Parameters
• Trace Header
• Tool Execution Environment
• Tool Configuration Parameters
ana basliklarinda yer alabilir.
Her sql icin
For each SQL
Zamanlama bilgisi,toplam bilgileri bind bilgileri,source plan,explain plan,tablo ve index bilgileri,segment IO bilgileri yer alan bazı onamli bilgilerdir.
Metalinkten 224270.1:1 download edip surecimize baslayabiliriz.
SQL Trace 10046 level 1, 4, 8 or 12 alinir
sqlplus hr/hr
SQL> start trcanlzr.sql [name of your trace file]
SQL> start trcanlzr.sql largesql.trc <== your trace file
SQL> start trcanlzr.sql control_file.txt <== your text file
html ve text rapor olusturur.
paket icinde yeralan sql acilimi
Create Script - tacreate.sql
• Drop - tadrop.sql
• Create User - tacusr.sql
• Create Schema Objects - tacobj.sql
• Create PL/SQL Packages – tacpkg.sql
• Views - tacvw.sql
• Global - trca$g
• Parse - trca$p
• Transform - trca$t
• Invokers Rights - trca$i
• HTML Report - trca$r
• Text Report - trca$x
26.08.2008
22.08.2008
Oracle database 10g Real Application Cluster RAC hazirlik
Donanim:
2 server lazım bu serverlara örneği söyle verelim 2 cpu 2GBRAM 2 gigabit ethernet olan dual scsi host bus adaptor 8 Scsi disk connected via copper.
her channel 4 disk, hardware raid controller yok.
Software:
her node için operating sistem
Oracle clusterware-cluster ready service
2 ayrılır -oracle cluster registery
Voting disk
1-Linux install edilmesi
3 ip adresi lazım. private--operating sistemden yapalım
public
virtual--rac instalasyonda yapacak.
2-share disk hazırla--OCFS2 ve ASM
ASM den önce unused disk partition olmalı.primary partition yapıyoruz.
fdiskle yapabiliriz.
fdisk /dev/sdb
OCFS2 hem clusterwarefiles hemde rac database files tutabilir.
ASM ise sadece RAC database file tutar.
OCFS'console root userı ile /etc/init.d/o2cb enable edelim
ASMlib 2.0 ucretsiz download edebiliriz.
/etc/init.d/oracleasm create disk diskadı device adı
install oracle software
Yani buradan cıkaracağımız sonuc su RAC installasyonunda ilk önce
CLUSTERWARE,sonra ASM create edelim ve daha sonrasında database storage olarak ASM gösterelim.
2 server lazım bu serverlara örneği söyle verelim 2 cpu 2GBRAM 2 gigabit ethernet olan dual scsi host bus adaptor 8 Scsi disk connected via copper.
her channel 4 disk, hardware raid controller yok.
Software:
her node için operating sistem
Oracle clusterware-cluster ready service
2 ayrılır -oracle cluster registery
Voting disk
1-Linux install edilmesi
3 ip adresi lazım. private--operating sistemden yapalım
public
virtual--rac instalasyonda yapacak.
2-share disk hazırla--OCFS2 ve ASM
ASM den önce unused disk partition olmalı.primary partition yapıyoruz.
fdiskle yapabiliriz.
fdisk /dev/sdb
OCFS2 hem clusterwarefiles hemde rac database files tutabilir.
ASM ise sadece RAC database file tutar.
OCFS'console root userı ile /etc/init.d/o2cb enable edelim
ASMlib 2.0 ucretsiz download edebiliriz.
/etc/init.d/oracleasm create disk diskadı device adı
install oracle software
Yani buradan cıkaracağımız sonuc su RAC installasyonunda ilk önce
CLUSTERWARE,sonra ASM create edelim ve daha sonrasında database storage olarak ASM gösterelim.
19.08.2008
DATAGUARD Onemli ozellikler.
Dataguard çalışma modları:
•Maximum Performance Mode
–Default mode
-hız önemlidir
•Maximum Protection Mode
–Data güvenliği önemlidir
–En az bir tane ikinciye ihtiyaç vardır
•Maximum Availability Mode
–Uptime hedef alınmıstır.
–Kesintinin olmaması ve devam edilme üzerine tasarlanmıstır.
Disaster recovery senaryolarında fiziksel stanby ve logical standby olabilir.
Data protection olaylarında fiziksel standby ve logical standby olabilir.
Performance konularında fiziksel standby redoların uygulaması ile olusur. sql seviyelerini atlayabilir.logical standbylarda ise redolar sql donusurler.
Ana databasein iş yukunu azaltmak konularında fiziksel standbylar cok etkili değildirler. Logical standbylarda ise raporlama basarılı bir sekilde yapılabilir.ting
Extra schema yapıları logical standbylarda fazlası ile mümkündür.
Logical standbylarda long ve lob data tipleri uygulamazken fizikselde böyle bir kısıtlama yoktur.
orcl.oracle.com=
(DESCRIPTION=
(SDU=32767)
(ADDRESS=(PROTOCOL=tcp)
(HOST=galatasaray)(PORT=1521))
(CONNECT_DATA=
(SID=orcl))
sqlnet.ora dosyasındaki session data unit parametresini unutmak gerekir:
–DEFAULT_SDU_SIZE=32767
sdu buffer sizenın büyüklüğü önemlidir. buffer size buyukse netwok gelen giden performansıda buyuk olacagından daha hızlı olabilir.
standy tarafinda
listener.ora:
SID_LIST_listener_name=
(SID_LIST=
(SID_DESC=
(SDU=32767)
(GLOBAL_DBNAME=orcl.oracle.com)
(SID_NAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)))
gigabit netwok tercih edilmelidir.
örnek olarak dusunursek
BDP= 1,000 Mbps * 20msec (.020 sec)
1,000,000,000 * .020 olarak dusunebiliriz.
NIC divice queu size artarmamız iyi olur 100 den 10000 cekebiliriz.
–ifconfig eth1 txqueuelen 10000
TCP_NODELAY=yes olmalıdır.
Arsiv loglarının gidisatını hızlandırmak için
Max_connection parametresini max değere cekelim defualt 2 dir 5 yapalım.
LOG_archive_max_process sayısını artıralım defaultu 2 dir 20 lere cıkabiliriz.
Yeni cıkan commit nowait seceneğini ciddi bir sekilde dusunelim bu özellik sayesinde Oracle commitlerin bitmesini beklemeden devam edebilir.
Tabi redologlarlar ilgili yıllardır bahsettiğimiz özelikkleride unutmamız gerekir.
Özelikle redoların hızlı disklerde olması,Raid5 gibi bir mimairde olmaması,raid10 veya raid1 olması gerekir.
Checkpoint surecinedikkat etmemiz gerekir
log switch sırasında LOG_CHECK_TIMEOUT expire oldugu zaman ve LOG_CHECKOUT_INTERVAL ulasıldıgında checkpoint atacaktır.
bizim yapmamız gereken sıksık log switch yapılmasını önlemektir ideal zaman 15-20 dakika aralıgıdır
Baska bir taraftanda redo log sizemizi 1gb ustunde vermemiz dogru olmaz gerekirse sayıyı artırıp size 1gb tutmalıyız.
Ne kadar sıklıkla checkpoint attıgımızı görmek istiyorsanız
SELECT NAME, VALUE, TO_CHAR(SYSDATE, ‘HH:MI:SS’) TIMEFROM V$SYSSTAT WHERE NAME = 'DBWR checkpoints' kullanabilirsiniz.
Paralel recovery icin cpu sayısını parametre olarak verebiliriz.
db_cache_size secondary birinciden yuksek olamalıdır.
wait eventleri icindeki archive ve LGWR,RFS kaynaklı olanlara dikkat etmek gerekir.
Butun bunları söyledikten sonrada 11g ile gele snapshot standy özeliklerinide unutmamanızı tavsiye ederim özelikle mayıs ayındaki yazılarımda o konulara değinmiştim artık
Fiziksel standy read write modda calısıtırbiliyoruz. BUDA inanılmaz önemli ve gerçek test denemeleri yapmamıza imkan verebiliyor.
•Maximum Performance Mode
–Default mode
-hız önemlidir
•Maximum Protection Mode
–Data güvenliği önemlidir
–En az bir tane ikinciye ihtiyaç vardır
•Maximum Availability Mode
–Uptime hedef alınmıstır.
–Kesintinin olmaması ve devam edilme üzerine tasarlanmıstır.
Disaster recovery senaryolarında fiziksel stanby ve logical standby olabilir.
Data protection olaylarında fiziksel standby ve logical standby olabilir.
Performance konularında fiziksel standby redoların uygulaması ile olusur. sql seviyelerini atlayabilir.logical standbylarda ise redolar sql donusurler.
Ana databasein iş yukunu azaltmak konularında fiziksel standbylar cok etkili değildirler. Logical standbylarda ise raporlama basarılı bir sekilde yapılabilir.ting
Extra schema yapıları logical standbylarda fazlası ile mümkündür.
Logical standbylarda long ve lob data tipleri uygulamazken fizikselde böyle bir kısıtlama yoktur.
orcl.oracle.com=
(DESCRIPTION=
(SDU=32767)
(ADDRESS=(PROTOCOL=tcp)
(HOST=galatasaray)(PORT=1521))
(CONNECT_DATA=
(SID=orcl))
sqlnet.ora dosyasındaki session data unit parametresini unutmak gerekir:
–DEFAULT_SDU_SIZE=32767
sdu buffer sizenın büyüklüğü önemlidir. buffer size buyukse netwok gelen giden performansıda buyuk olacagından daha hızlı olabilir.
standy tarafinda
listener.ora:
SID_LIST_listener_name=
(SID_LIST=
(SID_DESC=
(SDU=32767)
(GLOBAL_DBNAME=orcl.oracle.com)
(SID_NAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)))
gigabit netwok tercih edilmelidir.
örnek olarak dusunursek
BDP= 1,000 Mbps * 20msec (.020 sec)
1,000,000,000 * .020 olarak dusunebiliriz.
NIC divice queu size artarmamız iyi olur 100 den 10000 cekebiliriz.
–ifconfig eth1 txqueuelen 10000
TCP_NODELAY=yes olmalıdır.
Arsiv loglarının gidisatını hızlandırmak için
Max_connection parametresini max değere cekelim defualt 2 dir 5 yapalım.
LOG_archive_max_process sayısını artıralım defaultu 2 dir 20 lere cıkabiliriz.
Yeni cıkan commit nowait seceneğini ciddi bir sekilde dusunelim bu özellik sayesinde Oracle commitlerin bitmesini beklemeden devam edebilir.
Tabi redologlarlar ilgili yıllardır bahsettiğimiz özelikkleride unutmamız gerekir.
Özelikle redoların hızlı disklerde olması,Raid5 gibi bir mimairde olmaması,raid10 veya raid1 olması gerekir.
Checkpoint surecinedikkat etmemiz gerekir
log switch sırasında LOG_CHECK_TIMEOUT expire oldugu zaman ve LOG_CHECKOUT_INTERVAL ulasıldıgında checkpoint atacaktır.
bizim yapmamız gereken sıksık log switch yapılmasını önlemektir ideal zaman 15-20 dakika aralıgıdır
Baska bir taraftanda redo log sizemizi 1gb ustunde vermemiz dogru olmaz gerekirse sayıyı artırıp size 1gb tutmalıyız.
Ne kadar sıklıkla checkpoint attıgımızı görmek istiyorsanız
SELECT NAME, VALUE, TO_CHAR(SYSDATE, ‘HH:MI:SS’) TIMEFROM V$SYSSTAT WHERE NAME = 'DBWR checkpoints' kullanabilirsiniz.
Paralel recovery icin cpu sayısını parametre olarak verebiliriz.
db_cache_size secondary birinciden yuksek olamalıdır.
wait eventleri icindeki archive ve LGWR,RFS kaynaklı olanlara dikkat etmek gerekir.
Butun bunları söyledikten sonrada 11g ile gele snapshot standy özeliklerinide unutmamanızı tavsiye ederim özelikle mayıs ayındaki yazılarımda o konulara değinmiştim artık
Fiziksel standy read write modda calısıtırbiliyoruz. BUDA inanılmaz önemli ve gerçek test denemeleri yapmamıza imkan verebiliyor.
13.08.2008
publish statistic
11g de gelen yeni özelikklerine göre artık bir tablonun istatistiğini otomatik olarak alındığında
istenirse bu istatistik sonucu data dictionary otomatik olarak yazmaz beklemeye alınır. DBA bu sonuca istediği sekilde ulasabilir. Test eder ve gercekten iyilesme gorurse bu istatistigi herkes icin kullanılabilir hale getirir.
execute dbms_stats.set_table_prefs('HR','EMPLOYEES','FALSE') publish false
execute dbms_stats.gather_table_stats('HR','EMPLOYEES')
bu sekilde alınan istatistik direk data dictionary islenmedi.
DBA alter session set optimizer_use_pending_statistics=true
seklinde session alter ettirip butun testlerini yapabilir. Bu istatistek sadece kendisi faydanalır.
Eger herkes kullansın istiyorsa
exec dbms_stats.publish_pending_stats('HR','EMPLOYEES')
yapabilir
istenirse bu istatistik sonucu data dictionary otomatik olarak yazmaz beklemeye alınır. DBA bu sonuca istediği sekilde ulasabilir. Test eder ve gercekten iyilesme gorurse bu istatistigi herkes icin kullanılabilir hale getirir.
execute dbms_stats.set_table_prefs('HR','EMPLOYEES','FALSE') publish false
execute dbms_stats.gather_table_stats('HR','EMPLOYEES')
bu sekilde alınan istatistik direk data dictionary islenmedi.
DBA alter session set optimizer_use_pending_statistics=true
seklinde session alter ettirip butun testlerini yapabilir. Bu istatistek sadece kendisi faydanalır.
Eger herkes kullansın istiyorsa
exec dbms_stats.publish_pending_stats('HR','EMPLOYEES')
yapabilir
12.08.2008
11g Upgrade
11G upgrade seneryoları
İlk önce sqlplus baglanalım.
daha sonra 11g kurulu olan bir makinadan rdbms/admin/utlu111i.sql alıp 10g databasein home directory altına kopyalıyalım.
sqlplus / as sysdba
startup
start utlu111i.sql calıştırdığımızda karsımıza upgrade ile ilgili databasein block block sizedan tablespace ozelliklerine kadar sga miktarlarına kadar butun önemli özeliklerini gösterir.
Bu raporun neticesinde
Shutdown immediate
exit yapalım.
dbua çalıştıralım
upgrade yapabiliriz. Mümkünse asm insatance varsa onuda mutlaka upgrade edin. Unutmayalımki ASM instance ayrı bir instancedır aynı database gibi versiyonları vardır.
Utlu111s.sql scriptinide post upgrade olarak çalıştırabiliriz. Bunun neticesinde butun ozelikleri valid görmemiz gerekir.
İlk önce sqlplus baglanalım.
daha sonra 11g kurulu olan bir makinadan rdbms/admin/utlu111i.sql alıp 10g databasein home directory altına kopyalıyalım.
sqlplus / as sysdba
startup
start utlu111i.sql calıştırdığımızda karsımıza upgrade ile ilgili databasein block block sizedan tablespace ozelliklerine kadar sga miktarlarına kadar butun önemli özeliklerini gösterir.
Bu raporun neticesinde
Shutdown immediate
exit yapalım.
dbua çalıştıralım
upgrade yapabiliriz. Mümkünse asm insatance varsa onuda mutlaka upgrade edin. Unutmayalımki ASM instance ayrı bir instancedır aynı database gibi versiyonları vardır.
Utlu111s.sql scriptinide post upgrade olarak çalıştırabiliriz. Bunun neticesinde butun ozelikleri valid görmemiz gerekir.
11.08.2008
Database yönetimi-1
Oracle database Instance ve datafilelardan olusur.
Oracle Instance kavramı ise memory ve background processlerden olusur.
Memory alanını
SGA ve PGA olarak ikiye ayırabiliriz.
SGA alanını
Shared pool
Buffer cache
Large pool
Java pool
Log bufferdan olusturabiliriz.
Background processlerini ise bes temel baslık altında toplayabiliriz.
bunlar
SMON,PMON,DBWR,LGWR,CHPT processlerinden olusur.
Oracle Instance kavramı ise memory ve background processlerden olusur.
Memory alanını
SGA ve PGA olarak ikiye ayırabiliriz.
SGA alanını
Shared pool
Buffer cache
Large pool
Java pool
Log bufferdan olusturabiliriz.
Background processlerini ise bes temel baslık altında toplayabiliriz.
bunlar
SMON,PMON,DBWR,LGWR,CHPT processlerinden olusur.
Kaydol:
Kayıtlar (Atom)