SlideShare une entreprise Scribd logo
1  sur  36
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Veritabanı Performans Kontrol Listesi
1
Orhan Eripek
orhaneripek.com
Senior Oracle DBA
Oracle ACE Associate
10g/11g OCP
Member of TROUG
Oracle SQL, Analitik
SQL ve PL/SQL
kitabı yazarlarından
Database Administration SIG 2017
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ajanda
2
1 Kontrol listesi (Checklist) nedir? Faydaları nelerdir? Günlük
hayatta kullandığımız örnek kontrol listeleri nelerdir?
Oracle Veritabanı Performans yönetiminde kontrol listesi (Check
list) gerekli midir? Olursa faydaları nelerdir?
Oracle Veritabanı Performans Kontrol listemizde neler
olmalıdır? Birlikte oluşturalım!
Kontrol listemizin güncellenmesi (Checklist check)
2
3
4
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 3
Kontrol listesi (Checklist) nedir? Faydaları nelerdir? Günlük hayatta kullandığımız
örnek kontrol listeleri nelerdir?
Günlük hayatta kullandığımız kontrol listeleri örnekleri;
 Acil durum planı kontrol listesi
 Güvenlik kontrol listesi
 Sağlık kontrol listesi (Check Up)
 Temizlik kontrol listesi
 Yemek kontrol listesi
 Pilotun uçuş kontrol listesi
 Şantiye, Oto tamir, Kasap, Lokanta, Pastane,... kontrol listeleri
Checklist: «Yapılması veya kontrol edilmesi gerekenler listesi», «Başvurulan standart kontroller
listesi», «Yapılan bir işin eksiksiz ve hatasız olduğunu kontrol etmek için yapılan liste» ...
To-Do list genel olarak yapılacaklar listesi iken Checklist, yapılan bir işe ait kontroller listesidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 4
Oracle Veritabanı Performans yönetiminde kontrol listesi (Checklist) gerekli midir?
Olursa faydaları nelerdir?
Beklenmedik bir anda yaşanan sorunla ilgili zamanında kontroller yapmadıysak (veya
Checklist'imizde yoksa) hem zaman, efor kaybı yaşarız hem de sorunu büyüterek içinden çıkılmaz
durumlara düşebiliriz.
Veritabanının stabil-performanslı çalışmasını istiyorsak neden bir ‘Oracle Veritabanı Performans
Checklist’imiz olmasın!
Veritabanında yaptığımız iyileştirmelerin sonuçlarını görerek önceki durumu ile karşılaştırabilmek
için de Checklist’lerimizden faydalanabiliriz
Özellikle üretim ortamı (canlı, production) veritabanlarında yaptığımız operasyonel çalışmalarda bir
rollback planımızın olmasının yanında ayrıca bir Checklist’imizin de olması oldukça önemlidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 5
Oracle Veritabanı Performans Kontrol listemizde neler olmalıdır? Birlikte oluşturalım!
İnvalid obje var mı?
Unusable index var mı?
SELECT OWNER,
OBJECT_NAME,
OBJECT_TYPE,
CREATED,
LAST_DDL_TIME
FROM dba_objects
WHERE status LIKE 'INVALID'
ORDER BY LAST_DDL_TIME DESC;
SELECT 'ALTER INDEX ' || owner || '.' || index_name || '
REBUILD;'
FROM dba_indexes
WHERE status = 'UNUSABLE';
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 6
İndex monitoring -> invisible index -> drop index
SET HEADING OFF
SET ECHO OFF
SET PAGES 10000
SPOOL start_monitoring.sql
SELECT 'alter index ' || owner || '.' || index_name ||
' monitoring usage;'
FROM dba_indexes
WHERE owner NOT IN ('SYS',
'SYSTEM',
'SYSMAN',
...);
SPOOL OFF
@start_monitoring.sql
/
SELECT *
FROM (SELECT do.owner,
io.NAME index_name,
t.NAME table_name,
DECODE (BITAND (i.flags, 65536), 0, 'NO', 'YES')
monitoring,
DECODE (BITAND (ou.flags, 1), 0, 'NO', 'YES') used,
ou.start_monitoring,
ou.end_monitoring
FROM SYS.obj$ io,
SYS.obj$ t,
SYS.ind$ i,
SYS.object_usage ou,
dba_objects do
WHERE i.obj# = ou.obj#
AND io.obj# = ou.obj#
AND t.obj# = i.bo#
AND ou.obj# = do.object_id)
WHERE monitoring = 'YES';
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 7
Sql Trace ile Sql kontrolü
BEGIN
execute_immediate ('ALTER SESSION SET TRACEFILE_IDENTIFIER= REAL_RUN');
execute_immediate ('ALTER SESSION SET SQL_TRACE=TRUE');
END;
C:appoeripekproduct11.2.0client_1BIN>tkprof C:UsersoeripekDesktopORCL_j003.trc C:DISKdeneme.out
TKPROF: Release 11.2.0.1.0 - Development on Pzt Eyl 22 16:16:25 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. C:appoeripekproduct11.2.0client_1BIN>
ora_541211_err.trc
deneme.out
SELECT value
FROM v$parameter
WHERE name LIKE '%max_dump_file_size%'
Özellikle db Paket’lerinde çokça geçen sql’lerimizi detaylı incelemek için trace açabiliriz.
Oluşacak trace logların boyutuna dikkat etmeliyiz. Çok fazla log üreteceksek
max_dump_file_size değerimiz küçük olmamalıdır. > 1 GB veya > 3 GB vs. gibi olabilir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 8
Sql Profile ile set edilen Sql hint kontrolü
DECLARE
clsql_text CLOB;
BEGIN
SELECT sql_fulltext INTO clsql_text FROM V$sqlarea where sql_id = '9ymwq4t1v1k8n';
dbms_sqltune.import_sql_profile(sql_text => clsql_text,
profile=> sqlprof_attr('FIRST_ROWS PUSH_PRED(@SEL$3) PUSH_PRED(@SEL$4) INDEX(@SEL$3 A_NDX1)
INDEX(@SEL$2 TABL0_@SEL$2 A_NDX2)'),
name=>'PROFILE_9ymwq4t1v1k8n',
force_match=>true);
end;
select * from DBMSHSXP_SQL_PROFILE_ATTR where profile_name like '%9ymwq4t1v1k8n%';
select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '%9ymwq4t1v1k8n%';
exec sys.DBMS_SHARED_POOL.PURGE ('07000012B66E3230,4036285191', 'C');
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('PROFILE_9ymwq4t1v1k8n');
Zamanla sql profile’da sql için set ettiğimiz hint eskisi gibi performans sağlamayabilir. Bu Hint’i
değiştirmek veya sql profile tanımını drop edebiliriz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 9
Schema veya Tablo istatistik kontrolü
BEGIN
DBMS_STATS.gather_schema_stats (
ownname => 'SCHEMA',
method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO',
cascade => TRUE,
estimate_percent => 10,
no_invalidate => FALSE,
force => TRUE,
degree => 16);
END;
BEGIN
DBMS_STATS.gather_table_stats (
ownname => 'ORHAN',
tabname => 'TEST_LOG_TABLE',
method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO',
cascade => TRUE,
estimate_percent => DBMS_STATS.auto_sample_size,
no_invalidate => TRUE);
END;
BEGIN
DBMS_STATS.gather_table_stats (
ownname => 'ORHAN',
tabname => 'TEST_LOG_TABLE',
partname => 'P201601',
estimate_percent => dbms_stats.auto_sample_size,
granularity => 'PARTITION',
no_invalidate => TRUE,
cascade => Dbms_stats.AUTO_CASCADE,
degree => 8);
END;
Tablo ve index’lerin istatistikleri
güncel olmalıdır ki Cost-Based
Optimizer (CBO) bu güncel bilgilerle
doğru Cost- maliyet üretebilsin. Aksi
halde yanlış sql planları oluşturarak
performansız sorgularla karşı karşıya
gelebiliriz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 10
Partition kontrolü: Partition’lı tablolarımız hangileri? Eksik partition’ı olanlar
var mı? Otomatik Part add mekanizmamız varsa partitionları eklemiş mi?
SELECT DISTINCT table_owner, table_name
FROM all_tab_partitions
WHERE table_name NOT LIKE 'BIN$%'
AND table_owner NOT IN ('SYS', 'SYSTEM‘,...);
 Partition ekledikten sonra tablo indexleri unusable’a düşebilir, kontrol edilmeli,
unusable olanlar rebuild edilmelidir.
 OLTP db’lerde boyutu çok büyük tablolarda online split partition yapabilmenin bir diğer
yöntemi de redefinition table ‘dır. DBMS_REDEFINITION paketi ile Oracle bu desteği
vermektedir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 11
Resource Manager’a set ettiğimiz değerler kullanıcı kaynak kısıtlamalarını sağlıyor mu?
 Kaynak tüketim saatlerini gözeterek gündüz ve gece planları veya da belirli saatler aralığında
çalışacak planlar oluşturabiliriz. Bu aktif resource planlarımızın istatistiğini Enterprise
Manager (veya EM Cloud Control)’dan veya sql sorgularıyla görebiliriz.
SELECT TO_CHAR (m.begin_time, 'HH:MI') time,
m.consumer_group_name,
m.cpu_consumed_time / 60000 avg_running_sessions,
m.cpu_wait_time / 60000 avg_waiting_sessions,
d.mgmt_p1
* (SELECT VALUE
FROM v$parameter
WHERE name = 'cpu_count') / 100 allocation
FROM v$rsrcmgrmetric_history m, dba_rsrc_plan_directives d, v$rsrc_plan p
WHERE m.consumer_group_name = d.group_or_subplan AND p.name = d.plan
ORDER BY m.begin_time, m.consumer_group_name;
 CPU, IO ve parallelik derecelerini istediğimiz gibi set edebiliyoruz. Bu set ettiğimiz
değerlerle doğru kaynak paylaşımı yapmış mıyız yoksa adil paylaşım yapamamış mıyız? Bu
durumda faydadan çok sorun yaratmış olabiliriz. Titizlikle kontrol edilmesi gerekmektedir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 12
Profile, Role kontrolleri, otomatik yetki atamaları sağlıklı çalışıyor mu?
Bilgi güvenliği kriterlerine uyumlu olacak şekilde ve veritabanının kontrollü
yönetilebilmesi için;
 kullanıcı profillerine göre roller oluşturulmalı,
 her yeni kullanıcı için otomatikmen role atanmalı veya deactive edilecek kullanıcılar
için role geri alınmalı,
 yeni tablolar eklendikçe otomatikmen ilgili role yetkilerinin otomatik eklenmesi ve
kullanıcıların otomatik lock’lanması veya unlock edilmesi
gibi otomatize ettiğimiz jobların kontrolü önemlidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 13
Yetkisiz yetkilendirmeler var mı?
Yetkisiz kullanıcı girişleri için DBA_AUDIT_TRAIL view’inin logon/logoff bilgilerini ve
oluşturacağınız white list / black list tablolarınızı kullanarak sch. Job oluşturabilir,
hatalı girişlerde otomatik mail ile bilgilendirilebilirsiniz.
«... tarihinde ... kullanıcısı ... veritabanına hatalı giriş / yetkisiz giriş yaptı»
Veya
«... tarihinde ... kullanıcısı... veritabanında...tablosuna insert/update/delete
girişiminde bulundu.» gibi.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 14
Active / Inactive sesssion sayısı kontrolü?
Public yetkilendirmeler var mı?
SELECT spid AS thread,
osuser,
s.program,
s.LOGON_TIME,
s.STATUS,
p.PROGram,
s.SID
FROM v$process p, v$session s
WHERE p.addr = s.paddr AND s.status NOT IN ('ACTIVE')
ORDER BY 2 DESC;
SELECT *
FROM dba_tab_privs
WHERE grantee = 'PUBLIC'
AND owner NOT IN
('SYS', 'SYSTEM', 'SYSMAN', ...)
ORDER BY owner;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 15
Lock’lı tablolar ve sessionlar kontrolü
-- tabloda lock var mı?
SELECT s.inst_id,
l.SID,
s.serial#,
l.TYPE,
d.object_name,
s.username blocking_session,
s.osuser,
l.LMODE
FROM gv$lock l, dba_objects d, gv$session s
WHERE d.object_id = l.id1
AND s.SID = l.SID
AND s.inst_id = l.inst_id
AND d.object_name LIKE UPPER ('%TEST_TABLE%')
ORDER BY inst_id;
-- locklı sessionları kill et
SELECT 'ALTER SYSTEM KILL SESSION '
|| CHR (39)
|| s.SID
|| ','
|| s.SERIAL#
|| CHR (39)
|| ';',
'kill -9 ' || p.spid,
osuser,
d.object_name,
s.*,
c.*
FROM gv$session s,
gv$process p,
gv$locked_object c,
dba_objects d
WHERE s.paddr = p.addr
AND s.sid = c.session_id
AND c.object_id = d.object_id
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 16
Asm disk ve db size kontrolü
SELECT name,
total_mb / 1024 AS total_gb,
TRUNC (cold_used_mb / 1024) AS used_gb,
ROUND (free_mb / 1024) AS free_gb
FROM v$asm_diskgroup;
SELECT ROUND (SUM (used.bytes) / 1024 / 1024 / 1024) AS db_size_gb,
ROUND (SUM (used.bytes) / 1024 / 1024 / 1024)
- ROUND (free.p / 1024 / 1024 / 1024)
used_space_gb,
ROUND (free.p / 1024 / 1024 / 1024) AS fre_space_gb
FROM (SELECT bytes FROM v$datafile
UNION ALL
SELECT bytes FROM v$tempfile
UNION ALL
SELECT bytes FROM v$log) used,
(SELECT SUM (bytes) AS p FROM dba_free_space) free
GROUP BY free.p;
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 409600 46594 0 46594 0 N ASM_DATA/
ASMCMD>
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 17
Veritabanı tablo ve indexlerin boyutları kontrolü
select
owner, segment_name as table_name,
sum(bytes)/(1024*1024*1024) table_size_gb
from
dba_extents
where
segment_type in ('TABLE', 'TABLE PARTITION')
group by owner,segment_name,bytes
having sum(bytes)/(1024*1024*1024)>50
order by table_size_gb desc;
select
owner, segment_name as index_name,
sum(bytes)/(1024*1024*1024) index_size_gb
from
dba_extents
where
segment_type in ('INDEX', 'INDEX PARTITION')
group by owner,segment_name,bytes
having sum(bytes)/(1024*1024*1024)>50
order by bytes desc;
Boyutu çok büyük tablo veya index’ler için özel çalışma yapılabilir. Bunların listesi
çıkarılmalı, gözetlenmelidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 18
Fragmante olmuş tabloların kontrolü
FRAGMENTED_SPACE size’ı büyük tablolar uygun zamanda önce test sonra prod ortamda
shirink yapılarak fragmante olan block yapıları sıkıştırılarak tablolar olması gerektiği size’a
getirilebilir. Alternatif olarak tablolar drop-create edilebilir veya başka bir tablespace’e
move edilebilir.
select owner,table_name,
'alter table '
|| owner
|| '.'
|| table_name
|| ' shrink space cascade;' "SHRINK",
round(((blocks*8/1024))) "TOTAL_SIZE_MB",
round((num_rows*avg_row_len/1024/1024)) "ACTUAL_SIZE_MB",
round(((blocks*8/1024)-(num_rows*avg_row_len/1024/1024)))
"FRAGMENTED_SPACE_MB"
from all_tables where owner not in ('SYS','SYSTEM')
and round(((blocks*8/1024)-(num_rows*avg_row_len/1024/1024)))>100
order by "FRAGMENTED_SPACE_MB" desc
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 19
Geçici, atıl durumda kalan tabloların belirlenerek temizlenmesi kontrolü
SELECT *
FROM (SELECT owner,
object_name,
object_type,
created,
last_ddl_time
FROM dba_objects
WHERE object_name LIKE '%TEST%'
OR object_name LIKE '%DENEME%'
OR object_name LIKE '%SIL%'
OR object_name LIKE '%GECICI%');
TEST, DENEME, SIL, GECICI, vs. gibi ifadeler geçen tablolar belirlenmeli, gereksiz
oldukları belirlenenler drop edilmelidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 20
Haftalık veya aylık veritabanı büyümesi kontrolü
SELECT systarih,
tablespace_name,
TRUNC (GBYTE_used, 1) AS GBYTE_used,
TRUNC (GBYTE_free, 1) AS GBYTE_free,
TRUNC (GBYTE_sum_area, 1) AS GBYTE_sum_area,
TRUNC (percent_used, 1) AS percent_used
FROM ( SELECT SYSDATE AS systarih,
a.tablespace_name,
a.BYTES / 1024 / 1024 / 1024 AS GBYTE_used,
b.BYTES / 1024 / 1024 / 1024 AS GBYTE_free,
( (a.BYTES / 1024 / 1024 / 1024)
+ (b.BYTES / 1024 / 1024 / 1024))
AS GBYTE_sum_area,
ROUND ( ( (a.BYTES - b.BYTES) / a.BYTES) * 100, 2)
AS percent_used
FROM ( SELECT tablespace_name, SUM (BYTES) BYTES
FROM SYS.dba_data_files
GROUP BY tablespace_name) a,
( SELECT tablespace_name,
SUM (BYTES) BYTES,
MAX (BYTES) max_free_area
FROM SYS.dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY ( (a.BYTES - b.BYTES) / a.BYTES) DESC)
SELECT RECORD_DATE, SIZE_IN_MB / 1024
FROM MYDB_TABLESPACE_SIZES
WHERE TABLESPACE_NAME = 'TOPLAM'
AND RECORD_DATE BETWEEN '24/03/2016'
AND '24/04/2016';
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 21
.log dosyaların kontrolü
adrci> show tracefile %.log
diag/asm/+asm/+ASM1/trace/alert_+ASM1.log
diag/clients/user_oracle/host_2010429000_11/trace/sqlnet.log
diag/clients/user_oracle/host_2010429000_80/trace/sqlnet.log
diag/rdbms/rac/node1/trace/alert_RACPROD.log
diag/rdbms/rac/node1/trace/sbtio.log
diag/tnslsnr/rac_pc/listener/trace/listener.log
diag/tnslsnr/rac_pc/listener2/trace/listener2.log
diag/tnslsnr/rac_pc/listener_rac_pc/trace/listener_rac_pc.log
diag/tnslsnr/rac_pc/listener_scan1/trace/listener_scan1.log
diag/tnslsnr/rac_pc/status/trace/status.log
adrci>
adrci (Automatic Diagnostic
Repository Command
Interface) kullanarak log
dosyaların dizinlerini
görebilir, «show incident»
ve «show alert» ile hatalı
kayıtları inceleyebiliriz.
Aynı şekilde eğer RAC mimarisi kullanıyorsak Cluster loglarını da kontrol etmemiz
gerekiyor. RAC node’ları arasındaki load balance – yük dağılımı normal mi vs.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 22
Rman backup log kontrolü: hata almış mı başarılı bitmiş mi? rman backup süreleri,
backup validate, Rman backuplar ve test ortamlarına restore edilerek test edilmesi
-- alınan RMAN Backuplar
SELECT TO_CHAR
(start_time, 'dd.mm.yyyy hh24:mi:ss') start_time,
TO_CHAR (end_time, 'dd.mm.yyyy hh24:mi:ss')
end_time,
status,
object_type,
output_device_type
FROM v$rman_status
WHERE OPERATION = 'BACKUP'
ORDER BY start_time DESC;
-- çalışan RMAN Backup işleri ve statüleri
SELECT *
FROM ( SELECT TO_CHAR (
start_time, 'DD-MON- YY HH24:MI') "Start",
TO_CHAR (end_time, 'DD-MON-YY HH24:MI') "End",
time_taken_display "Time",
input_bytes_display "Input",
output_bytes_display "Output",
input_bytes_per_sec_display "Input/sec",
output_bytes_per_sec_display "Output/sec",
output_device_type,
status,
input_type,
ROUND (elapsed_seconds / 60, 2) "Elapsed Min",
Optimized,
ROUND (compression_ratio, 2) "Compress Ratio"
FROM v$rman_backup_job_details
ORDER BY session_key DESC)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23
Exportlar ve importlar: ne kadar sürede alındığı? hata almış mı? başarılı bitmiş mi?
Dump file set for SYS.TESTDB_EXP_201602202102 is:
/oracle/export/testdb_20160220_2102_datapump01.dmp
/oracle/export/testdb_20160220_2102_datapump02.dmp
Job "SYS"."TESTDB_EXP_201602202102" successfully completed at 22:12:10
Export veya import işleri tamamlandığında otomatik mail ile bilgilendirilmek oldukça
faydalı olur. Özellikle başarılı tamamlanmış mı yada hata almış mı görebilmek için
log’larının kontrolü önemlidir.
ORA-31693: Table data object "TEST"."TEST_890536" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-39826: Direct path load of view or synonym (TEST.TEST_890536) could not be resolved.
veya
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 24
Alert.log kontrolü
 Veritabanı ORA- hata durumlarını, alter system, alter database komutlarıyla yapılan
değişiklikleri, veritabanı açılması-kapanması bilgilerini tutan bu log dosyasını inceleyerek
problemleri, uyarıları inceleyebiliriz. Çoğu zaman ilk kontrol etmemiz gerekenlerden
biridir.
 Sqlplus’tan «show parameter background» ile, EM ile, adrci ile, v$diag_info ile veya
v$parameter ile alert.log dizinini görebiliriz.
 Veritabanı sistemi üzerinde çalışma yaparken de aşağıdaki gibi açarak arka planda neler
yapıldığını sürekli izleyebiliriz;
tail -10f alert_testdb.log
 Alert.log dosyasının daha kolay okunabilmesi için external table create ederek tablodan
sorgulayabiliriz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 25
OEM Cloud Control ile Performans İzleme
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 26
OEM Cloud Control ile Alert ve Uyarı Mekanizması - Metricler
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 27
AWR (Automatic Workload Repository) Raporu
27
 MMON istatistikleri üretir, bu bilgiler
saat başı alınan snapshot’larda
kaydedilir, problem anında belli
snapshot’lar arasındaki veritabanı
durumunu AWR raporları detaylı açıklar.
 Top 5 Events, Wait Events, Load Profile,
System- I/O-Memory- Sql Statistics en
önemli bölümleridir.
 $ORACLE_HOME/rdbms/admin/awrrpt.
sql (RAC ise awrgrpt.sql ) scripti ile, Toad
vb. toollar ile veya EM -> ‘Automatic
Workload Repository’ ile AWR
raporlarını oluşturabiliriz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 28
DB time kontrolü
SELECT I.INSTANCE_NAME INSTANCE_NAME_PRINT, S.SNAP_ID SNAP_ID,
TO_CHAR (S.STARTUP_TIME, 'mm/dd/yyyy HH24:MI:SS') STARTUP_TIME,
TO_CHAR (S.BEGIN_INTERVAL_TIME, 'mm/dd/yyyy HH24:MI:SS')
BEGIN_INTERVAL_TIME,
TO_CHAR (S.END_INTERVAL_TIME, 'mm/dd/yyyy HH24:MI:SS')
END_INTERVAL_TIME, ROUND (
EXTRACT (DAY FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 1440
+ EXTRACT (HOUR FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 60
+ EXTRACT (MINUTE FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME)
+ EXTRACT ( SECOND FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) / 60, 2)
ELAPSED_TIME, ROUND ( (E.VALUE - B.VALUE) / 1000000 / 60, 2) DB_TIME,
ROUND (
( ( ( (E.VALUE - B.VALUE) / 1000000 / 60)
/ ( EXTRACT ( DAY FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME)* 1440
+ EXTRACT ( HOUR FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 60
+ EXTRACT ( MINUTE FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME)
+ EXTRACT ( SECOND FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) / 60)) * 100), 2)
PCT_DB_TIME
FROM DBA_HIST_SNAPSHOT S, GV$INSTANCE I, DBA_HIST_SYS_TIME_MODEL E, DBA_HIST_SYS_TIME_MODEL B
WHERE I.INSTANCE_NUMBER = S.INSTANCE_NUMBER
AND E.SNAP_ID = S.SNAP_ID AND B.SNAP_ID = S.SNAP_ID – 1 AND E.STAT_ID = B.STAT_ID
AND E.INSTANCE_NUMBER = B.INSTANCE_NUMBER AND E.INSTANCE_NUMBER = S.INSTANCE_NUMBER
AND E.STAT_NAME = 'DB time'
ORDER BY DB_TIME DESC;
Db time’ın en yüksek olduğu saat aralığı gözetlenerek o saat aralığının AWR raporlarına bakılabilir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 29
Db Server CPU, IO, Swap, Memory, Disk periyodik kontrolü (PRTG, nagios, nmon, ..)
Bazen db’de aldığımız hatalar db kaynaklı olmayabilir. Server veya ağ kaynaklı da olabilir,
şüpheci davranıp tüm bu ortamları kontrol etmekte fayda var. Mümkünse db server
haftalık rapor grafikleri incelenmelidir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 30
ORAchk - Healt Check Raporu ile genel db kontrolü
 Oracle veritabanı ve sunucusu
üzerinde kontroller yaparak
bulgularını tespit eder,
tavsiyelerde bulunur.
 Default değerleri sunmasının
yanında Best Practices’ler ve
SR linkleri verir.
 RACchk ve Exachk tool’ları da
vardır.
 Doc ID 1268927.2 linkinden
son versiyonu indirebilirsiniz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 3131
OS Watcher ile db server kaynak kullanım kontrolü
 Oracle db sunucusunun CPU, DISK, Memory.. gibi kaynaklarının istatiksel bilgilerini toplar ve grafiksel olarak sunar.
 Bu tool belirli aralıklarla (default 30 saniye) ps, top, vmstat, iostat gibi Unix komutlarını kullanarak log toplar.
Örneğin, OSWatcher’ ı 60 sn aralıkla ve 3 gün boyunca(3*24 saat) archive tutacak şekilde kurgulayabiliriz;
OSW_DIRECTORY = /u01/oswatcher/oswbb
OSW_DATA DIRECTORY = /u01/oswatcher/data
OSW_START_COMMAND = nohup sh startOSWbb.sh 60 72 gzip /u01/oswatcher/data
OSW_INTERNAL = 60 seconds
OSW_RETENTION = 72 hours
OWS_COMPRESSION = gzip
 Doc ID 1531223.1 metalink’ten son versiyonu indirebilirsiniz.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 32
TFA (Oracle Trace File Analyzer)
 Oracle ve Grid altındaki logları tek komutla toplamak ve analiz etmek için kullandığımız bir tool’dur
 TFA tool’u ORAchk, EXAchk, oswacher, procwather,..vb. tool’ları da kapsar
 Oracle ‘a SR açtığımızda çoğu zaman bizden TFA çıktılarını da ister
 TFA Collector - TFA with Database Support Tools Bundle (Doc ID 1513912.1) Oracle metalink dokumanından detaylı
bilgilere ulaşabilirsiniz
 Aşağıdaki gibi belirli bir tarih aralığı için TFA raporu çıkarabilirsiniz:
[root@testdb]# cd /u01/app/oracle/tfa/testdb/tfa_home/bin
[root@testdb bin]# ./tfactl diagcollect -tag SR_3_13379477661 -from "Sep/28/2016 13:00:00" -to "Sep/28/2016
15:00:00"
....
...
Logs are being collected to: /u01/app/oracle/tfa/repository/ SR_3_13379477661
/u01/app/oracle/tfa/repository/ SR_3_13379477661 /testdb.tfa_Tue_Nov_29_11_25_16_+03_2016.zip
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 33
Önce ORA- hatasının araştırılması sonra Oracle’a açılan SR’ların kullanımı ve kontrolü
 Hata alındığında eğer 30 dk. içinde çözüm sağlayamıyorsak vakit kaybetmeden aynı
zamanda metalinkten Oracle’a SR açmalıyız
 Açtığımız SR’a alert.log, trace.log’un yanısıra varsa screen shot’lar veya ilgili olabilecek
çıktıları eklemeliyiz
 Mümkün olduğunca detay bilgi verebilirsek daha az karşılıklı yazışma olur
 Eğer hatamızın çözümü bug ile fix edilecek ise bug’ın tüm semptonlarını incelemek ve
mümkünse öncelikle test ortamında uygulayarak sonuçlarını izlemek gerekir
 Bazen küçük hatalar kısa zaman sonra büyük hataları doğurabilir. Bu yüzden küçük büyük
demeden tüm ORA- hatalarını detaylı incelemek için metalinkte ve/veya varsa
https://community.oracle.com ‘daki çözüm yollarına bakmak gerekir.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 34
İdeal Checklist tecrübelerle olgunlaşır. Doğru olmayan Checklist’lerimizden sorumlu
olacağımız için dikkatli hazırlamalı ve fayda sağlayacak listeler oluşturmalıyız.
Veritabanında kontrol edilmesi gereken birçok nokta var, tüm hepsini aynı anda
aklımızda tutamayabilir bazı noktaları kontrol etmeyi unutabiliriz. Eğer bu alışkanlık
haline gelirse o zaman sonuç daha kötü. Dolayısıyla elimizin altında buna benzer bir
kontrol listemizin olması işimizi oldukça kolaylaştıracaktır.
Zamanla listelerimizdeki bazı maddelerin çıkarılması veya yeni maddelerin
eklenmesi gerekebilir. Sürekli güncel tutmamız önemli. Yani kontrol listelerimizi de
kontrol etmeliyiz. Bu şekilde ideal Checklist’imiz olur.
Kontrol listemizin güncellenmesi (Checklist check)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Referanslar:
• https://blogs.oracle.com/db/entry/oracle_resource_manager_and_dbms
• https://support.oracle.com
Oracle veritabani performans kontrol listesi

Contenu connexe

Tendances

Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresJimmy Angelakos
 
PostgreSQL High_Performance_Cheatsheet
PostgreSQL High_Performance_CheatsheetPostgreSQL High_Performance_Cheatsheet
PostgreSQL High_Performance_CheatsheetLucian Oprea
 
Optimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4jOptimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4jNeo4j
 
Stratejik yonetim prezantasyonu_2004_2005_bolum1
Stratejik yonetim prezantasyonu_2004_2005_bolum1Stratejik yonetim prezantasyonu_2004_2005_bolum1
Stratejik yonetim prezantasyonu_2004_2005_bolum1Mahir İstanbullu
 
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshootingTarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshootingJovan Popovic
 
Aug2015 analysis team 04 10x genomics
Aug2015 analysis team 04 10x genomicsAug2015 analysis team 04 10x genomics
Aug2015 analysis team 04 10x genomicsGenomeInABottle
 
MongoDB Europe 2016 - Graph Operations with MongoDB
MongoDB Europe 2016 - Graph Operations with MongoDBMongoDB Europe 2016 - Graph Operations with MongoDB
MongoDB Europe 2016 - Graph Operations with MongoDBMongoDB
 
Doktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma SlaytlarıDoktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma Slaytlarınetsentez
 
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版wutitoudi
 
InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)I Goo Lee.
 

Tendances (15)

Intro to Map Reduce
Intro to Map ReduceIntro to Map Reduce
Intro to Map Reduce
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
PostgreSQL High_Performance_Cheatsheet
PostgreSQL High_Performance_CheatsheetPostgreSQL High_Performance_Cheatsheet
PostgreSQL High_Performance_Cheatsheet
 
Optimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4jOptimizing Cypher Queries in Neo4j
Optimizing Cypher Queries in Neo4j
 
Stratejik yonetim prezantasyonu_2004_2005_bolum1
Stratejik yonetim prezantasyonu_2004_2005_bolum1Stratejik yonetim prezantasyonu_2004_2005_bolum1
Stratejik yonetim prezantasyonu_2004_2005_bolum1
 
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshootingTarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
 
Aug2015 analysis team 04 10x genomics
Aug2015 analysis team 04 10x genomicsAug2015 analysis team 04 10x genomics
Aug2015 analysis team 04 10x genomics
 
Introduction à Hadoop
Introduction à HadoopIntroduction à Hadoop
Introduction à Hadoop
 
JSON SchemaとPHP
JSON SchemaとPHPJSON SchemaとPHP
JSON SchemaとPHP
 
MongoDB Europe 2016 - Graph Operations with MongoDB
MongoDB Europe 2016 - Graph Operations with MongoDBMongoDB Europe 2016 - Graph Operations with MongoDB
MongoDB Europe 2016 - Graph Operations with MongoDB
 
MIRU2018 tutorial
MIRU2018 tutorialMIRU2018 tutorial
MIRU2018 tutorial
 
Doktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma SlaytlarıDoktora Tezimin Savunma Slaytları
Doktora Tezimin Savunma Slaytları
 
レポートを書くために
レポートを書くためにレポートを書くために
レポートを書くために
 
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版
[费曼 你干吗在乎别人怎么想].(美)R·p·费曼.扫描版
 
InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)
 

En vedette

Oracle Veritabanı Yönetimi
Oracle Veritabanı YönetimiOracle Veritabanı Yönetimi
Oracle Veritabanı YönetimiOrhan ERIPEK
 
Oracle veritabanı yonetiminde onemli teknikler
Oracle veritabanı yonetiminde onemli tekniklerOracle veritabanı yonetiminde onemli teknikler
Oracle veritabanı yonetiminde onemli tekniklerOrhan ERIPEK
 
Oracle Enterprise Manager Cloud Control 12c
Oracle Enterprise Manager Cloud Control 12cOracle Enterprise Manager Cloud Control 12c
Oracle Enterprise Manager Cloud Control 12cOrhan ERIPEK
 
Oracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOrhan ERIPEK
 
Oracle Audit Vault & Database Vault
Oracle Audit Vault & Database VaultOracle Audit Vault & Database Vault
Oracle Audit Vault & Database VaultOrhan ERIPEK
 
Karınca kolonisi algoritması
Karınca kolonisi algoritmasıKarınca kolonisi algoritması
Karınca kolonisi algoritmasıOrhan ERIPEK
 
Yapay arı kolonisi algoritması
Yapay arı kolonisi algoritmasıYapay arı kolonisi algoritması
Yapay arı kolonisi algoritmasıOrhan ERIPEK
 
Networks community detection using artificial bee colony swarm optimization
Networks community detection using artificial bee colony swarm optimizationNetworks community detection using artificial bee colony swarm optimization
Networks community detection using artificial bee colony swarm optimizationAboul Ella Hassanien
 
Comparative analysis of abc and ics
Comparative analysis of abc and icsComparative analysis of abc and ics
Comparative analysis of abc and icsBiswajit Panday
 
Global bee colony_disorder_and_threats_insect_pollinators
Global bee colony_disorder_and_threats_insect_pollinatorsGlobal bee colony_disorder_and_threats_insect_pollinators
Global bee colony_disorder_and_threats_insect_pollinatorsPatricio Crespo
 
Honey Bee Colony Collapse Disorder (Ccd)
Honey Bee Colony Collapse Disorder (Ccd)Honey Bee Colony Collapse Disorder (Ccd)
Honey Bee Colony Collapse Disorder (Ccd)elantrian
 
التحدى 6 الإستعلام بطريقة المعالج
التحدى 6 الإستعلام بطريقة المعالجالتحدى 6 الإستعلام بطريقة المعالج
التحدى 6 الإستعلام بطريقة المعالجbosy sadek
 
Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Abdullatif Tarakji
 
MarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine
 
Oracle hard and soft parsing
Oracle hard and soft parsingOracle hard and soft parsing
Oracle hard and soft parsingIshaan Guliani
 

En vedette (20)

Oracle Veritabanı Yönetimi
Oracle Veritabanı YönetimiOracle Veritabanı Yönetimi
Oracle Veritabanı Yönetimi
 
Oracle veritabanı yonetiminde onemli teknikler
Oracle veritabanı yonetiminde onemli tekniklerOracle veritabanı yonetiminde onemli teknikler
Oracle veritabanı yonetiminde onemli teknikler
 
Oracle Enterprise Manager Cloud Control 12c
Oracle Enterprise Manager Cloud Control 12cOracle Enterprise Manager Cloud Control 12c
Oracle Enterprise Manager Cloud Control 12c
 
Oracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOracle Database and Technologies Seminar
Oracle Database and Technologies Seminar
 
Oracle Audit Vault & Database Vault
Oracle Audit Vault & Database VaultOracle Audit Vault & Database Vault
Oracle Audit Vault & Database Vault
 
Karınca kolonisi algoritması
Karınca kolonisi algoritmasıKarınca kolonisi algoritması
Karınca kolonisi algoritması
 
Yapay arı kolonisi algoritması
Yapay arı kolonisi algoritmasıYapay arı kolonisi algoritması
Yapay arı kolonisi algoritması
 
Networks community detection using artificial bee colony swarm optimization
Networks community detection using artificial bee colony swarm optimizationNetworks community detection using artificial bee colony swarm optimization
Networks community detection using artificial bee colony swarm optimization
 
Comparative analysis of abc and ics
Comparative analysis of abc and icsComparative analysis of abc and ics
Comparative analysis of abc and ics
 
slide FYP 2
slide FYP 2slide FYP 2
slide FYP 2
 
Global bee colony_disorder_and_threats_insect_pollinators
Global bee colony_disorder_and_threats_insect_pollinatorsGlobal bee colony_disorder_and_threats_insect_pollinators
Global bee colony_disorder_and_threats_insect_pollinators
 
Honey Bee Colony Collapse Disorder (Ccd)
Honey Bee Colony Collapse Disorder (Ccd)Honey Bee Colony Collapse Disorder (Ccd)
Honey Bee Colony Collapse Disorder (Ccd)
 
Trabalho fitos digitais
Trabalho fitos digitaisTrabalho fitos digitais
Trabalho fitos digitais
 
التحدى 6 الإستعلام بطريقة المعالج
التحدى 6 الإستعلام بطريقة المعالجالتحدى 6 الإستعلام بطريقة المعالج
التحدى 6 الإستعلام بطريقة المعالج
 
Lesson11 Create Query
Lesson11 Create QueryLesson11 Create Query
Lesson11 Create Query
 
Lesson8 Manage Records
Lesson8 Manage RecordsLesson8 Manage Records
Lesson8 Manage Records
 
Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases Lesson4 Protect and maintain databases
Lesson4 Protect and maintain databases
 
MarketLine Country Statistics Database
MarketLine Country Statistics DatabaseMarketLine Country Statistics Database
MarketLine Country Statistics Database
 
Oracle hard and soft parsing
Oracle hard and soft parsingOracle hard and soft parsing
Oracle hard and soft parsing
 
Chapter 11new
Chapter 11newChapter 11new
Chapter 11new
 

Similaire à Oracle veritabani performans kontrol listesi

Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Anar Godjaev
 
İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03Cihan Özhan
 
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features Emrah METE
 
Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ngAnar Godjaev
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09Cihan Özhan
 
Sql egitimi-adana
Sql egitimi-adanaSql egitimi-adana
Sql egitimi-adanasersld61
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07Cihan Özhan
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Sql egitimi-kartal
Sql egitimi-kartalSql egitimi-kartal
Sql egitimi-kartalsersld61
 
İleri Seviye T-SQL Programlama - Chapter 05
İleri Seviye T-SQL Programlama - Chapter 05İleri Seviye T-SQL Programlama - Chapter 05
İleri Seviye T-SQL Programlama - Chapter 05Cihan Özhan
 
Sql egitimi-ankara
Sql egitimi-ankaraSql egitimi-ankara
Sql egitimi-ankarasersld61
 
Sql egitimi-izmir
Sql egitimi-izmirSql egitimi-izmir
Sql egitimi-izmirsersld61
 
Sql egitimi-avcilar
Sql egitimi-avcilarSql egitimi-avcilar
Sql egitimi-avcilarsersld61
 
İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14Cihan Özhan
 
Sql en-iyi-egitimi
Sql en-iyi-egitimiSql en-iyi-egitimi
Sql en-iyi-egitimisersld61
 

Similaire à Oracle veritabani performans kontrol listesi (20)

Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇
 
İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03İleri Seviye T-SQL Programlama - Chapter 03
İleri Seviye T-SQL Programlama - Chapter 03
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
 
Performance Tuni̇ng
Performance Tuni̇ngPerformance Tuni̇ng
Performance Tuni̇ng
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11
 
İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09
 
Sql egitimi-adana
Sql egitimi-adanaSql egitimi-adana
Sql egitimi-adana
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18
 
İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Sql egitimi-kartal
Sql egitimi-kartalSql egitimi-kartal
Sql egitimi-kartal
 
İleri Seviye T-SQL Programlama - Chapter 05
İleri Seviye T-SQL Programlama - Chapter 05İleri Seviye T-SQL Programlama - Chapter 05
İleri Seviye T-SQL Programlama - Chapter 05
 
Sql egitimi-ankara
Sql egitimi-ankaraSql egitimi-ankara
Sql egitimi-ankara
 
PostgreSQL'i öğrenmek ve yönetmek
PostgreSQL'i öğrenmek ve yönetmekPostgreSQL'i öğrenmek ve yönetmek
PostgreSQL'i öğrenmek ve yönetmek
 
Sql egitimi-izmir
Sql egitimi-izmirSql egitimi-izmir
Sql egitimi-izmir
 
Sql egitimi-avcilar
Sql egitimi-avcilarSql egitimi-avcilar
Sql egitimi-avcilar
 
İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14
 
Sql en-iyi-egitimi
Sql en-iyi-egitimiSql en-iyi-egitimi
Sql en-iyi-egitimi
 

Oracle veritabani performans kontrol listesi

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle Veritabanı Performans Kontrol Listesi 1 Orhan Eripek orhaneripek.com Senior Oracle DBA Oracle ACE Associate 10g/11g OCP Member of TROUG Oracle SQL, Analitik SQL ve PL/SQL kitabı yazarlarından Database Administration SIG 2017
  • 2. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ajanda 2 1 Kontrol listesi (Checklist) nedir? Faydaları nelerdir? Günlük hayatta kullandığımız örnek kontrol listeleri nelerdir? Oracle Veritabanı Performans yönetiminde kontrol listesi (Check list) gerekli midir? Olursa faydaları nelerdir? Oracle Veritabanı Performans Kontrol listemizde neler olmalıdır? Birlikte oluşturalım! Kontrol listemizin güncellenmesi (Checklist check) 2 3 4
  • 3. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 3 Kontrol listesi (Checklist) nedir? Faydaları nelerdir? Günlük hayatta kullandığımız örnek kontrol listeleri nelerdir? Günlük hayatta kullandığımız kontrol listeleri örnekleri;  Acil durum planı kontrol listesi  Güvenlik kontrol listesi  Sağlık kontrol listesi (Check Up)  Temizlik kontrol listesi  Yemek kontrol listesi  Pilotun uçuş kontrol listesi  Şantiye, Oto tamir, Kasap, Lokanta, Pastane,... kontrol listeleri Checklist: «Yapılması veya kontrol edilmesi gerekenler listesi», «Başvurulan standart kontroller listesi», «Yapılan bir işin eksiksiz ve hatasız olduğunu kontrol etmek için yapılan liste» ... To-Do list genel olarak yapılacaklar listesi iken Checklist, yapılan bir işe ait kontroller listesidir.
  • 4. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 4 Oracle Veritabanı Performans yönetiminde kontrol listesi (Checklist) gerekli midir? Olursa faydaları nelerdir? Beklenmedik bir anda yaşanan sorunla ilgili zamanında kontroller yapmadıysak (veya Checklist'imizde yoksa) hem zaman, efor kaybı yaşarız hem de sorunu büyüterek içinden çıkılmaz durumlara düşebiliriz. Veritabanının stabil-performanslı çalışmasını istiyorsak neden bir ‘Oracle Veritabanı Performans Checklist’imiz olmasın! Veritabanında yaptığımız iyileştirmelerin sonuçlarını görerek önceki durumu ile karşılaştırabilmek için de Checklist’lerimizden faydalanabiliriz Özellikle üretim ortamı (canlı, production) veritabanlarında yaptığımız operasyonel çalışmalarda bir rollback planımızın olmasının yanında ayrıca bir Checklist’imizin de olması oldukça önemlidir.
  • 5. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 5 Oracle Veritabanı Performans Kontrol listemizde neler olmalıdır? Birlikte oluşturalım! İnvalid obje var mı? Unusable index var mı? SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME FROM dba_objects WHERE status LIKE 'INVALID' ORDER BY LAST_DDL_TIME DESC; SELECT 'ALTER INDEX ' || owner || '.' || index_name || ' REBUILD;' FROM dba_indexes WHERE status = 'UNUSABLE';
  • 6. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 6 İndex monitoring -> invisible index -> drop index SET HEADING OFF SET ECHO OFF SET PAGES 10000 SPOOL start_monitoring.sql SELECT 'alter index ' || owner || '.' || index_name || ' monitoring usage;' FROM dba_indexes WHERE owner NOT IN ('SYS', 'SYSTEM', 'SYSMAN', ...); SPOOL OFF @start_monitoring.sql / SELECT * FROM (SELECT do.owner, io.NAME index_name, t.NAME table_name, DECODE (BITAND (i.flags, 65536), 0, 'NO', 'YES') monitoring, DECODE (BITAND (ou.flags, 1), 0, 'NO', 'YES') used, ou.start_monitoring, ou.end_monitoring FROM SYS.obj$ io, SYS.obj$ t, SYS.ind$ i, SYS.object_usage ou, dba_objects do WHERE i.obj# = ou.obj# AND io.obj# = ou.obj# AND t.obj# = i.bo# AND ou.obj# = do.object_id) WHERE monitoring = 'YES';
  • 7. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 7 Sql Trace ile Sql kontrolü BEGIN execute_immediate ('ALTER SESSION SET TRACEFILE_IDENTIFIER= REAL_RUN'); execute_immediate ('ALTER SESSION SET SQL_TRACE=TRUE'); END; C:appoeripekproduct11.2.0client_1BIN>tkprof C:UsersoeripekDesktopORCL_j003.trc C:DISKdeneme.out TKPROF: Release 11.2.0.1.0 - Development on Pzt Eyl 22 16:16:25 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. C:appoeripekproduct11.2.0client_1BIN> ora_541211_err.trc deneme.out SELECT value FROM v$parameter WHERE name LIKE '%max_dump_file_size%' Özellikle db Paket’lerinde çokça geçen sql’lerimizi detaylı incelemek için trace açabiliriz. Oluşacak trace logların boyutuna dikkat etmeliyiz. Çok fazla log üreteceksek max_dump_file_size değerimiz küçük olmamalıdır. > 1 GB veya > 3 GB vs. gibi olabilir.
  • 8. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 8 Sql Profile ile set edilen Sql hint kontrolü DECLARE clsql_text CLOB; BEGIN SELECT sql_fulltext INTO clsql_text FROM V$sqlarea where sql_id = '9ymwq4t1v1k8n'; dbms_sqltune.import_sql_profile(sql_text => clsql_text, profile=> sqlprof_attr('FIRST_ROWS PUSH_PRED(@SEL$3) PUSH_PRED(@SEL$4) INDEX(@SEL$3 A_NDX1) INDEX(@SEL$2 TABL0_@SEL$2 A_NDX2)'), name=>'PROFILE_9ymwq4t1v1k8n', force_match=>true); end; select * from DBMSHSXP_SQL_PROFILE_ATTR where profile_name like '%9ymwq4t1v1k8n%'; select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '%9ymwq4t1v1k8n%'; exec sys.DBMS_SHARED_POOL.PURGE ('07000012B66E3230,4036285191', 'C'); EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('PROFILE_9ymwq4t1v1k8n'); Zamanla sql profile’da sql için set ettiğimiz hint eskisi gibi performans sağlamayabilir. Bu Hint’i değiştirmek veya sql profile tanımını drop edebiliriz.
  • 9. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 9 Schema veya Tablo istatistik kontrolü BEGIN DBMS_STATS.gather_schema_stats ( ownname => 'SCHEMA', method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO', cascade => TRUE, estimate_percent => 10, no_invalidate => FALSE, force => TRUE, degree => 16); END; BEGIN DBMS_STATS.gather_table_stats ( ownname => 'ORHAN', tabname => 'TEST_LOG_TABLE', method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO', cascade => TRUE, estimate_percent => DBMS_STATS.auto_sample_size, no_invalidate => TRUE); END; BEGIN DBMS_STATS.gather_table_stats ( ownname => 'ORHAN', tabname => 'TEST_LOG_TABLE', partname => 'P201601', estimate_percent => dbms_stats.auto_sample_size, granularity => 'PARTITION', no_invalidate => TRUE, cascade => Dbms_stats.AUTO_CASCADE, degree => 8); END; Tablo ve index’lerin istatistikleri güncel olmalıdır ki Cost-Based Optimizer (CBO) bu güncel bilgilerle doğru Cost- maliyet üretebilsin. Aksi halde yanlış sql planları oluşturarak performansız sorgularla karşı karşıya gelebiliriz.
  • 10. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 10 Partition kontrolü: Partition’lı tablolarımız hangileri? Eksik partition’ı olanlar var mı? Otomatik Part add mekanizmamız varsa partitionları eklemiş mi? SELECT DISTINCT table_owner, table_name FROM all_tab_partitions WHERE table_name NOT LIKE 'BIN$%' AND table_owner NOT IN ('SYS', 'SYSTEM‘,...);  Partition ekledikten sonra tablo indexleri unusable’a düşebilir, kontrol edilmeli, unusable olanlar rebuild edilmelidir.  OLTP db’lerde boyutu çok büyük tablolarda online split partition yapabilmenin bir diğer yöntemi de redefinition table ‘dır. DBMS_REDEFINITION paketi ile Oracle bu desteği vermektedir.
  • 11. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 11 Resource Manager’a set ettiğimiz değerler kullanıcı kaynak kısıtlamalarını sağlıyor mu?  Kaynak tüketim saatlerini gözeterek gündüz ve gece planları veya da belirli saatler aralığında çalışacak planlar oluşturabiliriz. Bu aktif resource planlarımızın istatistiğini Enterprise Manager (veya EM Cloud Control)’dan veya sql sorgularıyla görebiliriz. SELECT TO_CHAR (m.begin_time, 'HH:MI') time, m.consumer_group_name, m.cpu_consumed_time / 60000 avg_running_sessions, m.cpu_wait_time / 60000 avg_waiting_sessions, d.mgmt_p1 * (SELECT VALUE FROM v$parameter WHERE name = 'cpu_count') / 100 allocation FROM v$rsrcmgrmetric_history m, dba_rsrc_plan_directives d, v$rsrc_plan p WHERE m.consumer_group_name = d.group_or_subplan AND p.name = d.plan ORDER BY m.begin_time, m.consumer_group_name;  CPU, IO ve parallelik derecelerini istediğimiz gibi set edebiliyoruz. Bu set ettiğimiz değerlerle doğru kaynak paylaşımı yapmış mıyız yoksa adil paylaşım yapamamış mıyız? Bu durumda faydadan çok sorun yaratmış olabiliriz. Titizlikle kontrol edilmesi gerekmektedir.
  • 12. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 12 Profile, Role kontrolleri, otomatik yetki atamaları sağlıklı çalışıyor mu? Bilgi güvenliği kriterlerine uyumlu olacak şekilde ve veritabanının kontrollü yönetilebilmesi için;  kullanıcı profillerine göre roller oluşturulmalı,  her yeni kullanıcı için otomatikmen role atanmalı veya deactive edilecek kullanıcılar için role geri alınmalı,  yeni tablolar eklendikçe otomatikmen ilgili role yetkilerinin otomatik eklenmesi ve kullanıcıların otomatik lock’lanması veya unlock edilmesi gibi otomatize ettiğimiz jobların kontrolü önemlidir.
  • 13. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 13 Yetkisiz yetkilendirmeler var mı? Yetkisiz kullanıcı girişleri için DBA_AUDIT_TRAIL view’inin logon/logoff bilgilerini ve oluşturacağınız white list / black list tablolarınızı kullanarak sch. Job oluşturabilir, hatalı girişlerde otomatik mail ile bilgilendirilebilirsiniz. «... tarihinde ... kullanıcısı ... veritabanına hatalı giriş / yetkisiz giriş yaptı» Veya «... tarihinde ... kullanıcısı... veritabanında...tablosuna insert/update/delete girişiminde bulundu.» gibi.
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 14 Active / Inactive sesssion sayısı kontrolü? Public yetkilendirmeler var mı? SELECT spid AS thread, osuser, s.program, s.LOGON_TIME, s.STATUS, p.PROGram, s.SID FROM v$process p, v$session s WHERE p.addr = s.paddr AND s.status NOT IN ('ACTIVE') ORDER BY 2 DESC; SELECT * FROM dba_tab_privs WHERE grantee = 'PUBLIC' AND owner NOT IN ('SYS', 'SYSTEM', 'SYSMAN', ...) ORDER BY owner;
  • 15. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 15 Lock’lı tablolar ve sessionlar kontrolü -- tabloda lock var mı? SELECT s.inst_id, l.SID, s.serial#, l.TYPE, d.object_name, s.username blocking_session, s.osuser, l.LMODE FROM gv$lock l, dba_objects d, gv$session s WHERE d.object_id = l.id1 AND s.SID = l.SID AND s.inst_id = l.inst_id AND d.object_name LIKE UPPER ('%TEST_TABLE%') ORDER BY inst_id; -- locklı sessionları kill et SELECT 'ALTER SYSTEM KILL SESSION ' || CHR (39) || s.SID || ',' || s.SERIAL# || CHR (39) || ';', 'kill -9 ' || p.spid, osuser, d.object_name, s.*, c.* FROM gv$session s, gv$process p, gv$locked_object c, dba_objects d WHERE s.paddr = p.addr AND s.sid = c.session_id AND c.object_id = d.object_id
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 16 Asm disk ve db size kontrolü SELECT name, total_mb / 1024 AS total_gb, TRUNC (cold_used_mb / 1024) AS used_gb, ROUND (free_mb / 1024) AS free_gb FROM v$asm_diskgroup; SELECT ROUND (SUM (used.bytes) / 1024 / 1024 / 1024) AS db_size_gb, ROUND (SUM (used.bytes) / 1024 / 1024 / 1024) - ROUND (free.p / 1024 / 1024 / 1024) used_space_gb, ROUND (free.p / 1024 / 1024 / 1024) AS fre_space_gb FROM (SELECT bytes FROM v$datafile UNION ALL SELECT bytes FROM v$tempfile UNION ALL SELECT bytes FROM v$log) used, (SELECT SUM (bytes) AS p FROM dba_free_space) free GROUP BY free.p; ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 409600 46594 0 46594 0 N ASM_DATA/ ASMCMD>
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 17 Veritabanı tablo ve indexlerin boyutları kontrolü select owner, segment_name as table_name, sum(bytes)/(1024*1024*1024) table_size_gb from dba_extents where segment_type in ('TABLE', 'TABLE PARTITION') group by owner,segment_name,bytes having sum(bytes)/(1024*1024*1024)>50 order by table_size_gb desc; select owner, segment_name as index_name, sum(bytes)/(1024*1024*1024) index_size_gb from dba_extents where segment_type in ('INDEX', 'INDEX PARTITION') group by owner,segment_name,bytes having sum(bytes)/(1024*1024*1024)>50 order by bytes desc; Boyutu çok büyük tablo veya index’ler için özel çalışma yapılabilir. Bunların listesi çıkarılmalı, gözetlenmelidir.
  • 18. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 18 Fragmante olmuş tabloların kontrolü FRAGMENTED_SPACE size’ı büyük tablolar uygun zamanda önce test sonra prod ortamda shirink yapılarak fragmante olan block yapıları sıkıştırılarak tablolar olması gerektiği size’a getirilebilir. Alternatif olarak tablolar drop-create edilebilir veya başka bir tablespace’e move edilebilir. select owner,table_name, 'alter table ' || owner || '.' || table_name || ' shrink space cascade;' "SHRINK", round(((blocks*8/1024))) "TOTAL_SIZE_MB", round((num_rows*avg_row_len/1024/1024)) "ACTUAL_SIZE_MB", round(((blocks*8/1024)-(num_rows*avg_row_len/1024/1024))) "FRAGMENTED_SPACE_MB" from all_tables where owner not in ('SYS','SYSTEM') and round(((blocks*8/1024)-(num_rows*avg_row_len/1024/1024)))>100 order by "FRAGMENTED_SPACE_MB" desc
  • 19. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 19 Geçici, atıl durumda kalan tabloların belirlenerek temizlenmesi kontrolü SELECT * FROM (SELECT owner, object_name, object_type, created, last_ddl_time FROM dba_objects WHERE object_name LIKE '%TEST%' OR object_name LIKE '%DENEME%' OR object_name LIKE '%SIL%' OR object_name LIKE '%GECICI%'); TEST, DENEME, SIL, GECICI, vs. gibi ifadeler geçen tablolar belirlenmeli, gereksiz oldukları belirlenenler drop edilmelidir.
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 20 Haftalık veya aylık veritabanı büyümesi kontrolü SELECT systarih, tablespace_name, TRUNC (GBYTE_used, 1) AS GBYTE_used, TRUNC (GBYTE_free, 1) AS GBYTE_free, TRUNC (GBYTE_sum_area, 1) AS GBYTE_sum_area, TRUNC (percent_used, 1) AS percent_used FROM ( SELECT SYSDATE AS systarih, a.tablespace_name, a.BYTES / 1024 / 1024 / 1024 AS GBYTE_used, b.BYTES / 1024 / 1024 / 1024 AS GBYTE_free, ( (a.BYTES / 1024 / 1024 / 1024) + (b.BYTES / 1024 / 1024 / 1024)) AS GBYTE_sum_area, ROUND ( ( (a.BYTES - b.BYTES) / a.BYTES) * 100, 2) AS percent_used FROM ( SELECT tablespace_name, SUM (BYTES) BYTES FROM SYS.dba_data_files GROUP BY tablespace_name) a, ( SELECT tablespace_name, SUM (BYTES) BYTES, MAX (BYTES) max_free_area FROM SYS.dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY ( (a.BYTES - b.BYTES) / a.BYTES) DESC) SELECT RECORD_DATE, SIZE_IN_MB / 1024 FROM MYDB_TABLESPACE_SIZES WHERE TABLESPACE_NAME = 'TOPLAM' AND RECORD_DATE BETWEEN '24/03/2016' AND '24/04/2016';
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 21 .log dosyaların kontrolü adrci> show tracefile %.log diag/asm/+asm/+ASM1/trace/alert_+ASM1.log diag/clients/user_oracle/host_2010429000_11/trace/sqlnet.log diag/clients/user_oracle/host_2010429000_80/trace/sqlnet.log diag/rdbms/rac/node1/trace/alert_RACPROD.log diag/rdbms/rac/node1/trace/sbtio.log diag/tnslsnr/rac_pc/listener/trace/listener.log diag/tnslsnr/rac_pc/listener2/trace/listener2.log diag/tnslsnr/rac_pc/listener_rac_pc/trace/listener_rac_pc.log diag/tnslsnr/rac_pc/listener_scan1/trace/listener_scan1.log diag/tnslsnr/rac_pc/status/trace/status.log adrci> adrci (Automatic Diagnostic Repository Command Interface) kullanarak log dosyaların dizinlerini görebilir, «show incident» ve «show alert» ile hatalı kayıtları inceleyebiliriz. Aynı şekilde eğer RAC mimarisi kullanıyorsak Cluster loglarını da kontrol etmemiz gerekiyor. RAC node’ları arasındaki load balance – yük dağılımı normal mi vs.
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 22 Rman backup log kontrolü: hata almış mı başarılı bitmiş mi? rman backup süreleri, backup validate, Rman backuplar ve test ortamlarına restore edilerek test edilmesi -- alınan RMAN Backuplar SELECT TO_CHAR (start_time, 'dd.mm.yyyy hh24:mi:ss') start_time, TO_CHAR (end_time, 'dd.mm.yyyy hh24:mi:ss') end_time, status, object_type, output_device_type FROM v$rman_status WHERE OPERATION = 'BACKUP' ORDER BY start_time DESC; -- çalışan RMAN Backup işleri ve statüleri SELECT * FROM ( SELECT TO_CHAR ( start_time, 'DD-MON- YY HH24:MI') "Start", TO_CHAR (end_time, 'DD-MON-YY HH24:MI') "End", time_taken_display "Time", input_bytes_display "Input", output_bytes_display "Output", input_bytes_per_sec_display "Input/sec", output_bytes_per_sec_display "Output/sec", output_device_type, status, input_type, ROUND (elapsed_seconds / 60, 2) "Elapsed Min", Optimized, ROUND (compression_ratio, 2) "Compress Ratio" FROM v$rman_backup_job_details ORDER BY session_key DESC)
  • 23. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23 Exportlar ve importlar: ne kadar sürede alındığı? hata almış mı? başarılı bitmiş mi? Dump file set for SYS.TESTDB_EXP_201602202102 is: /oracle/export/testdb_20160220_2102_datapump01.dmp /oracle/export/testdb_20160220_2102_datapump02.dmp Job "SYS"."TESTDB_EXP_201602202102" successfully completed at 22:12:10 Export veya import işleri tamamlandığında otomatik mail ile bilgilendirilmek oldukça faydalı olur. Özellikle başarılı tamamlanmış mı yada hata almış mı görebilmek için log’larının kontrolü önemlidir. ORA-31693: Table data object "TEST"."TEST_890536" failed to load/unload and is being skipped due to error: ORA-02354: error in exporting/importing data ORA-39826: Direct path load of view or synonym (TEST.TEST_890536) could not be resolved. veya
  • 24. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 24 Alert.log kontrolü  Veritabanı ORA- hata durumlarını, alter system, alter database komutlarıyla yapılan değişiklikleri, veritabanı açılması-kapanması bilgilerini tutan bu log dosyasını inceleyerek problemleri, uyarıları inceleyebiliriz. Çoğu zaman ilk kontrol etmemiz gerekenlerden biridir.  Sqlplus’tan «show parameter background» ile, EM ile, adrci ile, v$diag_info ile veya v$parameter ile alert.log dizinini görebiliriz.  Veritabanı sistemi üzerinde çalışma yaparken de aşağıdaki gibi açarak arka planda neler yapıldığını sürekli izleyebiliriz; tail -10f alert_testdb.log  Alert.log dosyasının daha kolay okunabilmesi için external table create ederek tablodan sorgulayabiliriz.
  • 25. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 25 OEM Cloud Control ile Performans İzleme
  • 26. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 26 OEM Cloud Control ile Alert ve Uyarı Mekanizması - Metricler
  • 27. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 27 AWR (Automatic Workload Repository) Raporu 27  MMON istatistikleri üretir, bu bilgiler saat başı alınan snapshot’larda kaydedilir, problem anında belli snapshot’lar arasındaki veritabanı durumunu AWR raporları detaylı açıklar.  Top 5 Events, Wait Events, Load Profile, System- I/O-Memory- Sql Statistics en önemli bölümleridir.  $ORACLE_HOME/rdbms/admin/awrrpt. sql (RAC ise awrgrpt.sql ) scripti ile, Toad vb. toollar ile veya EM -> ‘Automatic Workload Repository’ ile AWR raporlarını oluşturabiliriz.
  • 28. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 28 DB time kontrolü SELECT I.INSTANCE_NAME INSTANCE_NAME_PRINT, S.SNAP_ID SNAP_ID, TO_CHAR (S.STARTUP_TIME, 'mm/dd/yyyy HH24:MI:SS') STARTUP_TIME, TO_CHAR (S.BEGIN_INTERVAL_TIME, 'mm/dd/yyyy HH24:MI:SS') BEGIN_INTERVAL_TIME, TO_CHAR (S.END_INTERVAL_TIME, 'mm/dd/yyyy HH24:MI:SS') END_INTERVAL_TIME, ROUND ( EXTRACT (DAY FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 1440 + EXTRACT (HOUR FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 60 + EXTRACT (MINUTE FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) + EXTRACT ( SECOND FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) / 60, 2) ELAPSED_TIME, ROUND ( (E.VALUE - B.VALUE) / 1000000 / 60, 2) DB_TIME, ROUND ( ( ( ( (E.VALUE - B.VALUE) / 1000000 / 60) / ( EXTRACT ( DAY FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME)* 1440 + EXTRACT ( HOUR FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 60 + EXTRACT ( MINUTE FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) + EXTRACT ( SECOND FROM S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) / 60)) * 100), 2) PCT_DB_TIME FROM DBA_HIST_SNAPSHOT S, GV$INSTANCE I, DBA_HIST_SYS_TIME_MODEL E, DBA_HIST_SYS_TIME_MODEL B WHERE I.INSTANCE_NUMBER = S.INSTANCE_NUMBER AND E.SNAP_ID = S.SNAP_ID AND B.SNAP_ID = S.SNAP_ID – 1 AND E.STAT_ID = B.STAT_ID AND E.INSTANCE_NUMBER = B.INSTANCE_NUMBER AND E.INSTANCE_NUMBER = S.INSTANCE_NUMBER AND E.STAT_NAME = 'DB time' ORDER BY DB_TIME DESC; Db time’ın en yüksek olduğu saat aralığı gözetlenerek o saat aralığının AWR raporlarına bakılabilir.
  • 29. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 29 Db Server CPU, IO, Swap, Memory, Disk periyodik kontrolü (PRTG, nagios, nmon, ..) Bazen db’de aldığımız hatalar db kaynaklı olmayabilir. Server veya ağ kaynaklı da olabilir, şüpheci davranıp tüm bu ortamları kontrol etmekte fayda var. Mümkünse db server haftalık rapor grafikleri incelenmelidir.
  • 30. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 30 ORAchk - Healt Check Raporu ile genel db kontrolü  Oracle veritabanı ve sunucusu üzerinde kontroller yaparak bulgularını tespit eder, tavsiyelerde bulunur.  Default değerleri sunmasının yanında Best Practices’ler ve SR linkleri verir.  RACchk ve Exachk tool’ları da vardır.  Doc ID 1268927.2 linkinden son versiyonu indirebilirsiniz.
  • 31. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 3131 OS Watcher ile db server kaynak kullanım kontrolü  Oracle db sunucusunun CPU, DISK, Memory.. gibi kaynaklarının istatiksel bilgilerini toplar ve grafiksel olarak sunar.  Bu tool belirli aralıklarla (default 30 saniye) ps, top, vmstat, iostat gibi Unix komutlarını kullanarak log toplar. Örneğin, OSWatcher’ ı 60 sn aralıkla ve 3 gün boyunca(3*24 saat) archive tutacak şekilde kurgulayabiliriz; OSW_DIRECTORY = /u01/oswatcher/oswbb OSW_DATA DIRECTORY = /u01/oswatcher/data OSW_START_COMMAND = nohup sh startOSWbb.sh 60 72 gzip /u01/oswatcher/data OSW_INTERNAL = 60 seconds OSW_RETENTION = 72 hours OWS_COMPRESSION = gzip  Doc ID 1531223.1 metalink’ten son versiyonu indirebilirsiniz.
  • 32. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 32 TFA (Oracle Trace File Analyzer)  Oracle ve Grid altındaki logları tek komutla toplamak ve analiz etmek için kullandığımız bir tool’dur  TFA tool’u ORAchk, EXAchk, oswacher, procwather,..vb. tool’ları da kapsar  Oracle ‘a SR açtığımızda çoğu zaman bizden TFA çıktılarını da ister  TFA Collector - TFA with Database Support Tools Bundle (Doc ID 1513912.1) Oracle metalink dokumanından detaylı bilgilere ulaşabilirsiniz  Aşağıdaki gibi belirli bir tarih aralığı için TFA raporu çıkarabilirsiniz: [root@testdb]# cd /u01/app/oracle/tfa/testdb/tfa_home/bin [root@testdb bin]# ./tfactl diagcollect -tag SR_3_13379477661 -from "Sep/28/2016 13:00:00" -to "Sep/28/2016 15:00:00" .... ... Logs are being collected to: /u01/app/oracle/tfa/repository/ SR_3_13379477661 /u01/app/oracle/tfa/repository/ SR_3_13379477661 /testdb.tfa_Tue_Nov_29_11_25_16_+03_2016.zip
  • 33. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 33 Önce ORA- hatasının araştırılması sonra Oracle’a açılan SR’ların kullanımı ve kontrolü  Hata alındığında eğer 30 dk. içinde çözüm sağlayamıyorsak vakit kaybetmeden aynı zamanda metalinkten Oracle’a SR açmalıyız  Açtığımız SR’a alert.log, trace.log’un yanısıra varsa screen shot’lar veya ilgili olabilecek çıktıları eklemeliyiz  Mümkün olduğunca detay bilgi verebilirsek daha az karşılıklı yazışma olur  Eğer hatamızın çözümü bug ile fix edilecek ise bug’ın tüm semptonlarını incelemek ve mümkünse öncelikle test ortamında uygulayarak sonuçlarını izlemek gerekir  Bazen küçük hatalar kısa zaman sonra büyük hataları doğurabilir. Bu yüzden küçük büyük demeden tüm ORA- hatalarını detaylı incelemek için metalinkte ve/veya varsa https://community.oracle.com ‘daki çözüm yollarına bakmak gerekir.
  • 34. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 34 İdeal Checklist tecrübelerle olgunlaşır. Doğru olmayan Checklist’lerimizden sorumlu olacağımız için dikkatli hazırlamalı ve fayda sağlayacak listeler oluşturmalıyız. Veritabanında kontrol edilmesi gereken birçok nokta var, tüm hepsini aynı anda aklımızda tutamayabilir bazı noktaları kontrol etmeyi unutabiliriz. Eğer bu alışkanlık haline gelirse o zaman sonuç daha kötü. Dolayısıyla elimizin altında buna benzer bir kontrol listemizin olması işimizi oldukça kolaylaştıracaktır. Zamanla listelerimizdeki bazı maddelerin çıkarılması veya yeni maddelerin eklenmesi gerekebilir. Sürekli güncel tutmamız önemli. Yani kontrol listelerimizi de kontrol etmeliyiz. Bu şekilde ideal Checklist’imiz olur. Kontrol listemizin güncellenmesi (Checklist check)
  • 35. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Referanslar: • https://blogs.oracle.com/db/entry/oracle_resource_manager_and_dbms • https://support.oracle.com