Professional Documents
Culture Documents
Oracle DB Eğitim İçerikleri
Oracle DB Eğitim İçerikleri
DATABASE
AKSYON DOKÜMANI
2023
ORACLE DATABASE AKSİYON DOKÜMANI
İçindekiler
1.FM KAYITLARI AKSİYONLARI....................................................................................................... 2
1.1. monitoringConnectivityIssue:PASSWORD_INVALID(DBSNMP)...........................................2
1.2.File_Systems/pctAvailable................................................................................................... 4
1.3. archFull:archUsedPercent (Archive doluluk alarmı)............................................................9
a. Archive silme şartları.....................................................................................................10
b. Primary db archive silme adımları.................................................................................14
c. Standby db archive silme adımları.................................................................................15
1.4. Active session....................................................................................................................15
a. OEM üzerinden yapılabilecek kontroller.......................................................................15
b. SQL ile yapılabilecek kontroller.....................................................................................16
1.5. Invalid Objects...................................................................................................................18
1.6. Dataguard_Open_Mode................................................................................................... 19
1.7. Agent Alarm...................................................................................................................... 19
1.8. ME$db_error_log:value.................................................................................................... 21
1.9. Response:State..................................................................................................................22
1.10. ME$standby_lag:value....................................................................................................22
a. Standby Bilgilerinin Öğrenilmesi....................................................................................22
b. Standby Database’e bağlanma......................................................................................23
c. Valid Kontrolü................................................................................................................24
a. Genel Kontroller............................................................................................................26
1.11. problemTbsp:pctUsed.....................................................................................................27
a. Dbf ekleme adımları......................................................................................................27
b. Pdb dbf ekleme adımları............................................................................................... 28
1.12. ME$unusable_indexes:value...........................................................................................30
1.13. Vdf_goldendp01_Disk_Space_Alarm_/ggatea02............................................................31
1.14. IS_DB_OPS_Disk_Space_Critical_/zfssa/prime/prime_full01_c07_over_%90................31
1.15. adrAlertLogIncidentError:genericIncidentErrStack.........................................................31
1.16. VODAFONE_IS_DB_OPS_Oracle:Failed to fetch info data (or no data for 5m)...............31
1
ORACLE DATABASE AKSİYON DOKÜMANI
1.1. monitoringConnectivityIssue:PASSWORD_INVALID(DBSNMP)
sqlplus dbsnmp
b. passw expired;
2
ORACLE DATABASE AKSİYON DOKÜMANI
c. logon trigger;
Dbsnmp unlock ediliğ tekrar şifre tanımlandıktan sonra OEM üzerinden controller yapılmalıdır.
Database jumpından OEM arayüzüne bağlanılır.
https://oem.vodafone.local/em/faces/sdk/nonFacesWrapper?_em.coBM=%2Fconsole
%2Ftargets%24ctxType%3DDatabases
İlgili database search edilir.
Configure edilir.
Monitor passwd güncellenir. (Moto2023Enduro*)
Submit edilerek tamamlanır.
Dbsnmp user’ın neden locklandığı aşağıdaki sorgu ile tespit edilebilir.
SELECT * FROM DB_MAINTAIN.ACCOUNT_LOCK_INFO where username like 'DBSNMP' order by log_date desc;
3
ORACLE DATABASE AKSİYON DOKÜMANI
dbsnmp user'ı hangi makineden bağlanmaya çalıştığı aşağıdaki sorgu ile tespit edilebilir.
1.2.File_Systems/pctAvailable
Aşağıdaki komutlar ile /u01 dizini altında en çok doluluğa sebep olan dizinler görüntülenebilir.
/u01/app/oracle/diag/rdbms/gsm/GSM2/ $ ll
drwxr-xr-x 2 oracle oinstall 4096 Apr 6 2020 cdump
drwxr-xr-x 507 oracle oinstall 20480 Mar 19 06:39 incident
drwxr-xr-x 2 oracle oinstall 790528 Mar 21 13:39 trace
/cdump altında örnek olarak aşağıdaki log dosyaları bulunmaktadır ve bu loglar silinebilir
haricindeki dosyalarda ve loglarda silme yapılmamalıdır.
Örnek Path;
4
ORACLE DATABASE AKSİYON DOKÜMANI
/u01/app/oracle/diag/rdbms/gsm/GSM2/cdump $ ll
drwxr-x--- 2 oracle oinstall 24 Mar 20 08:48 core_10061
drwxr-x--- 2 oracle oinstall 6 Mar 19 16:36 core_1029
drwxr-xr-x 2 oracle oinstall 6 Mar 3 14:19 cdmp_20230228202213
drwxr-xr-x 2 oracle oinstall 6 Mar 3 14:19 cdmp_20230228221030
.
.
rm -rf core_*
rm -rf cdmp_*
/incident
incident altında örnek olarak aşağıdaki incdir dosyaları bulunmaktadır.Bu dosyalar aşağıdaki
komut yardımı ile silinebilir.
/incident altında bazen core dosyaları da bulunabilmektedir.Bu dosyalar da aşağıdaki komut
yardımı ile silinebilir.
rm -rf incdir_*
rm -rf core_*
Kritik sunucularda incdir log dosyalarının hepsinin silinmemesi gerekir. 2 günden önceki loglar
silinir.2 günden eski log dosyalarını silmek için aşağıdaki komutlar kullanılabilir.
5
ORACLE DATABASE AKSİYON DOKÜMANI
/trace
Trace altında örnek olarak aşağıdaki log dosyaları bulunmaktadır ve bu loglar silinebilir
haricindeki dosyalarda ve loglarda silme yapılmamalıdır.Path bilgisi aşağıdaki komut ile
bulunabilir.
/u01/app/oracle/diag/rdbms/gsm/GSM2/trace $ ll
-rw-r----- 1 oracle oinstall 773016 Mar 21 13:13 GSM2_pmon_30624.trc
-rw-r----- 1 oracle oinstall 36534 Mar 21 13:13 GSM2_pmon_30624.trm
-rw-r----- 1 oracle oinstall 12373 Mar 20 22:21 GSM2_ppa7_31430.trc
-rw-r----- 1 oracle oinstall 6027 Mar 20 22:21 GSM2_ppa7_31430.trm
trm ve trc uzantılı log dosyalarını silmek için aşağıdaki komutlar kullanılabilir.Komutlar Redhat
ve Debian tabanlı işletim sistemlerinde farklılık göstermektedir.
veya
6
ORACLE DATABASE AKSİYON DOKÜMANI
Trauncate edilecek trc , trm dosyalarının başına “>” işareti konularak dosyanın içi boşaltılır.
/u01/app/oracle/diag/rdbms/bpmdb/BPMDB1/trace $
>BPMDB1_lmhb_19010.trc
>BPMDB1_dia0_18992_lws_1.trc
>BPMDB1_lmd0_18995.trc
NOT:
kvmoldp01 ve kvmoldp02 sunucularında trace altında cdump'larda bulunmaktadır.
2 günden eski cdmplar aşağıdaki komutlar kullanılarak silinebilir.
b. Listener logları
Listener loglarının bulunduğu path bilgisi aşağıdaki şekilde kontrol edilebilir.
lsnrctl status
Listener Log File --> /u01/app/grid/diag/tnslsnr/unidp2/
Bazı sunucularda birden fazla listener bulunmaktadır ve her listener için Listener isminde
folder'lar bulunmaktadır.Listener'ları içerisinde aşağıdaki adımlar izlenerek loglar silinip
truncate edilebilir.
Örnek dosyalar aşağıdaki gibidir.
7
ORACLE DATABASE AKSİYON DOKÜMANI
/u01/app/oracle/diag/tnslsnr/kvmoldp02 $ ls
asmnet1lsnr_asm asmnet2lsnr_asm listener listener_scan1 listener_scan2 listener_scan3 mgmtlsnr
Silme işlemi sırasında Permission Denied alınırsa ls -la komutu ile dosyaların hangi user'a ait
olduğu kontrol edilir. Grid user ise dzdo su - grid komutu ile grid user'a giriş yaptıktan sonra
işlemler yapılır.
/u01/app/oracle/diag/tnslsnr/kvmoldp02/listener_scan1/alert $ ll
total 3156644
-rw-r----- 1 oracle oinstall 314573195 Mar 9 22:20 log_1.xml
-rw-r----- 1 oracle oinstall 314572829 Mar 11 07:38 log_2.xml
-rw-r----- 1 oracle oinstall 314573150 Mar 11 20:00 log_3.xml
-rw-r----- 1 oracle oinstall 86001992 Mar 21 13:37 log.xml
rm -rf log_*.xml
/u01/app/oracle/diag/tnslsnr/kvmoldp02/listener_scan1/trace $ ll
-rw-r----- 1 oracle oinstall 0 Mar 7 10:36 listener_scan1_7.log
-rw-r----- 1 oracle oinstall 0 Mar 7 10:36 listener_scan1_8.log
-rw-r----- 1 oracle oinstall 0 Mar 7 10:36 listener_scan1_9.log
-rw-r----- 1 oracle oinstall 1651110192 Mar 21 13:35 listener_scan1.log
/trace $>listener_scan1_7.log
>listener_scan1_8.log
>listener_scan1_9.log
>listener_scan1.log
Veya,
Aşağıdaki komut /u01/app/grid/diag/tnslsnr/instanceadı/listeneradı/trace/ pathi altındaki .log
uzantılı tüm dosyaların boyutlarını 0a indirgemeyi sağlamaktadır.
truncate -s 0 /u01/app/grid/diag/tnslsnr/instanceadı/listeneradı/trace/*.log
8
ORACLE DATABASE AKSİYON DOKÜMANI
c. Audit dosyaları;
Audit'lerin bulunduğu path aşağıdaki komut ile kontrol edilebilir.
Archive doluluğu gelen sunucuya ssh ile bağlandıktan sonra aşağıdaki komut ile db_name ve
database_role kontrol edilmelidir.
9
ORACLE DATABASE AKSİYON DOKÜMANI
Aşağıdaki komut ile db_recovery_file_dest kontrol edilir sunucu üzerinde birden fazla database
olabilir ya da archive'ler başka diske yönlendirilmiş olabilir.
1. Backup şartı
2. Standby sync şartı
3. Goldengate sync şartı
Backup kontrolü
Archive backup tarihleri ve durumu kontrol edilir COMPLETED WITH ERRORS veya FAILED
olmuşsa Netbackup üzerinden kontrol sağlanır. Eğer backup tarihleri eskiyse veya yoksa
backup standby sunuculardan alınıyor olabilir. Standby sunucuya bağlanıp backup
kontrolleri yapılır.
10
ORACLE DATABASE AKSİYON DOKÜMANI
Ortamda birden fazla standby olabilir, Tüm standby dblerin sync olması gereklidir.
11
ORACLE DATABASE AKSİYON DOKÜMANI
Aşağıdaki komut ile standby dblerin senkron olup olmadığı kontrol edilir.
12
ORACLE DATABASE AKSİYON DOKÜMANI
14
ORACLE DATABASE AKSİYON DOKÜMANI
Hangi Exract'ın geride kaldığını öğrenmek için send "EXTRACTADI" showtrans tabular komutu
ile kontrol edilir.
b. Primary db archive silme adımları
Yukarıdaki şartların hepsi sağlanıyorsa aşağıdaki komut ile RMAN'e bağlanılır.
rman target /
3 günden eski 2 defa backuplanmış archive'leri silmek için aşağıdaki komut kullanılır.
delete archivelog until time 'sysdate-3' backed up 2 times to device type sbt;
15
ORACLE DATABASE AKSİYON DOKÜMANI
Aşağıdaki hatanın alınması durumda DBA onayı ile force ile silme yapılabilir.
RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture
process
delete force archivelog until time 'sysdate-3' backed up 2 times to device type sbt;
Özel durumlarda backup
şartı olmadan onay alınarak aşağıdaki komut ile silme yapılır.
select max(sequence#) as sequence_for_thread_1 from v$archived_log where applied = 'YES' and thread#=1;
select max(sequence#) as sequence_for_thread_2 from v$archived_log where applied = 'YES' and thread#=2;
Rman’e bağlanılır.
rman target /
thread1 ve thread2’den alınan son işlenen arhive numaralarına göre silme işlemi yapılır.
Mavi : (User I/O) yogun okuma yazma işlemi, top sql lerde belirgin bir sql çıkıyorsa
service ekibine bilgi verilebilir.
Yeşil : (CPU) Yogun CPU kullanan SQL ler var , top sql lerde belirgin bir sql çıkıyorsa
service ekibine bilgi verilebilir.
16
ORACLE DATABASE AKSİYON DOKÜMANI
Network : yoğun network trafiği kullanan sql ler var, top sql lerde belirgin bir sql
çıkıyorsa service ekibine bilgi verilebilir.
Commit (Turuncu): Disklerde yazma okuma sorunu var anlamına geliyor. Storage ekibi
ve Unix ekibi ile ietişime geçilebilir.
Cuncurency : DB lock durumu control edilebilir, locklama varsa ilgili session uygulama
grubuna iletilir. Yoksa DB ekibi ile iletişime geçilebilir.
Yogunluga neyin sebep oldugu, Lock varsa hangi sessionun LOCK’ a sebep oldugu;
Instance başına aktif session adedi kontrolü (yüksek ise sıkıntı olduğu anlamına
gelmektedir.);
17
ORACLE DATABASE AKSİYON DOKÜMANI
Instance başına userların yogunluk dagılımı (uygulama mı db mi ayırt etmek için, hangi
module den geldiği ilaveli);
Instance başına hangi SQL yogunluk yaptıgı (uygulama tarafı control etmesi için);
Instance başına hangi SQL sorgusunun yogunluk yaptıgı (uygulama tarafı kontrol etmesi
için) ;
18
ORACLE DATABASE AKSİYON DOKÜMANI
select * from (
select sql_id sql_id1,round(100*(sql_toplam/toplam ),2) act_pct,
round(100*(CPU/toplam ),2) act_cpu_pct,
round(100*(USEr_IO/toplam ),2) act_USER_IO_pct,
round((ratio_to_report(CPU) over () )*100,2) as CPU_PCT,
round((ratio_to_report(USER_IO ) over () )*100,2) as USER_IO_PCT
--a.*
from (
SELECT sql_id,DECODE(session_state,'ON CPU','CPU', wait_class) AS wait_class,
COUNT(*) OVER() toplam , count(*) over (partition by sql_id) sql_toplam
FROM V$active_session_history
WHERE sql_id is not null
and sample_time >=sysdate -5/1440
)a
PIVOT (count(*) FOR wait_class IN ('CPU' AS cpu,'User I/O' AS user_io, 'Network' AS network, 'System I/O'
AS system_io,
'Scheduler' AS sch, 'Concurrency' AS concurrency,'Application' AS application,'Commit' AS
COMMIT,'Configuration' AS configuration,
'Administrative' AS administrative,'Queueing' AS queueing,'Other' AS other)) a
order by 2 desc )
where rownum <11;
İlgili Database’e bağlandıktan sonra aşağıdaki komutla Inaktif Session’lar bulunur ve hangi
user’lara ait olduğu görüntülenir.
19
ORACLE DATABASE AKSİYON DOKÜMANI
Alarm içeriğindeki DB den gelen servis owner ekibine şema (user) bazlı bilgi verilmesi
gerekmektedir.
Objelerin valid hale getirilmesi, getirilmiyorsa drop edilmesi gerektiği bilgisi verilmelidir.
Aşağıdaki komut ile alarmdaki şema içerisinde bulunan invalid objeler belirlenebilir.
select object_name
, object_type
, status
from all_objects
select object_name
, object_type
, status
from all_objects
1.6. Dataguard_Open_Mode
20
ORACLE DATABASE AKSİYON DOKÜMANI
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL > alter database recover managed standby database disconnect from session;
NOT:
“Alter database open” komutu hata verirse, MRP yeniden başlatılır.
Bir süre recover etmesi için beklenir. Daha sonra MRP tekrar durdurulup tekrar açılmaya
çalışarak MRP başlatılır.
İlk olarak alarm içeriğindeki veritabanının çalıştığı sunucular TOAD üzerinden RPSDB’e
bağlanılarak tespit edilmelidir.
Veritabanının bağlı olduğu sunuculara bağlanıp database'in durumunu aşağıdaki komut ile
kontrol edilmelidir.
21
ORACLE DATABASE AKSİYON DOKÜMANI
Database açık ise aşağıdaki link ile database jump'ından Mozilla ile girip OEM'e bağlanılır.
https://oem.vodafone.local/em/faces/sdk/nonFacesWrapper?_em.coBM=%2Fconsole
%2Ftargets%24ctxType%3DDatabases
user: sysman pass: Vfsysman654321*
Giriş yaptıktan sonra alarmdaki database ismi aşağıdaki işaretli alana yazılarak aratılır ve status
kontrol edilir.
Oemden hangi instance’ın down gözüktüğüne bakılır.
Sunucuda aşağıda belirtilen dizine gidilip agent'ların versiyonuna bakılır ve agent versiyonuna
göre işlem yapılır.
cd /u01/app/oracle/product
ls – l
Agent 12 varsa, agent 12 dizinine gidilerek stop edilip, agent 13 start edilir.
Agent 12 varsa;
cd agent12c/agent_inst/bin
./emctl stop agent;
22
ORACLE DATABASE AKSİYON DOKÜMANI
cd /u01/app/oracle/product/agent13c/agent_inst/bin
./emctl stop agent
./emctl start agent
./emctl upload agent
1.8. ME$db_error_log:value
1.9. Response:State
Sqlplus / as sysdba
23
ORACLE DATABASE AKSİYON DOKÜMANI
1.10. ME$standby_lag:value
Dataguard’ın TNS bilgisi varsa direk bağlanıp kontroller yapılabilir, eğer TNS bilgisi yok ise
aşağıdaki gibi dataguard ortamının bağlantı bilgileri bulunabilir.
sqlplus / as sysdba
24
ORACLE DATABASE AKSİYON DOKÜMANI
NOT: Her zaman dest_2 de olmayabilir, o yüzden tüm dest leri listelemek gerekebilir.
Aşağıdaki gibi ilgili log archive dest bilgisinde yer alan service name’e tnsping atılarak DR
ortamının ip’si bulunabilir.
tnsping service
sqlplus / as sysdba
Örn:
[KNNPRO4_IZM]/oracle/admin $ sqldba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 31 11:55:20 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
env|grep ORACLE_SID
25
ORACLE DATABASE AKSİYON DOKÜMANI
c. Valid Kontrolü
sqlplus / as sysdba
SQL> select dest_name,status,error from v$archive_dest where dest_name in
('LOG_ARCHIVE_DEST_1','LOG_ARCHIVE_DEST_2','STANDBY_ARCHIVE_DEST');
Production sunucuda alertlogda ya da VALID sorgusunun çıktısında aşağıdaki hata varsa defer
enable yapılır.
Çözüm :
NOT: Her zaman dest_2 de olmayabilir, o yüzden tüm dest leri listelemek gerekebilir.
sqlplus / as sysdba
SQL> ALTER SYSTEM SET log_archive_dest_state_2 = DEFER;
SQL> ALTER SYSTEM SET log_archive_dest_state_2 = ENABLE;
SQL> alter system switch logfile;
26
ORACLE DATABASE AKSİYON DOKÜMANI
ORA-09817: Write to audit file failed. // Linux-x86_64 Error: 28: No space left on device // ORA-
02002: error while writing to audit trail
Çözüm :
/u01 dizin doluluğu kontrolleri yapılmalıdır.
/u01 prosedürü uygulandıktan sonra defer-enable yapılmalıdır.
Çözüm :
Standby sunucuda disk doluluk kontrolü :
Standby sunucuya bağlanılarak SQL’e giriş yapılır.
sqlplus / as sysdba
SELECT name, free_mb, total_mb, free_mb/total_mb*100 as percentage FROM v$asm_diskgroup;
select max(sequence#) as sequence_for_thread_2 from v$archived_log where applied = 'YES' and thread#=2;
RMAN’ e bağlanılıp, dataguarda işlenen arşivler silinir. Thread=1 için ilk sorgudaki,
thread=2 için 2. Sorgudaki çıktı sequence kısmına yazılır.
rman target /
delete force noprompt archivelog until sequence = 188889 thread=1;
delete force noprompt archivelog until sequence = 169935 thread=2;
MRP Durdurma :
MRP Başlatma :
SQL > ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM
SESSION;
MRP Kontrolü :
27
ORACLE DATABASE AKSİYON DOKÜMANI
sqlplus / as sydba
SQL> show parameter log_archive_dest;
tnsping CEP_BILLUNI_DR
Dataguard sunucusuna bağlanılır. Sunucuda birden fazla database olabilir. Bu sebeple sunucu
üzerinde çalışan databaseler kontrol edilmelidir.
alertlog
sqlplus / as sysdba
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM
SESSION;
Apply işlemi başlattıktan sonra dataguard lag durumu kontrol edilir. Bir kaç defa kontrol
edildiğinde sürede azalma olması gerekmektedir. Aşağıdaki komut ile kontrol edilebilir.
28
ORACLE DATABASE AKSİYON DOKÜMANI
select a.name,
primary.thread#,
primary.maxsequence primaryseq,
standby.maxsequence standbyseq,
primary.maxsequence - standby.maxsequence gap
from ( select thread#, max(sequence#) maxsequence
from v$archived_log
where archived = 'YES'
and resetlogs_change# = ( select d.resetlogs_change# from v$database d )
group by thread# order by thread# ) primary,
( select thread#, max(sequence#) maxsequence
from v$archived_log
where applied = 'YES'
and resetlogs_change# = ( select d.resetlogs_change# from v$database d )
group by thread# order by thread# ) standby, v$database a
where primary.thread# = standby.thread#;
1.11. problemTbsp:pctUsed
Diskteki boş alanı kontrol ederek son datafile numarasına ardışık şekilde datafile ekliyoruz.
alter tablespace VFTRHDMR18_INDEX add datafile '+DATA' size 1G autoextend on next 1G maxsize UNLIMITED;
29
ORACLE DATABASE AKSİYON DOKÜMANI
Eklenecek boyuta göre internete GB to MB yazın ona göre değer girin. max 32 gb lik ekleniyor.
(her yerde böyle mi bilmiyorum). O yüzden yukarıda 32GB'tan 1 mb düşük girildi.
show con_name;
30
ORACLE DATABASE AKSİYON DOKÜMANI
Aşağıdaki komut ile Alarm gelen tablespace'in hangi diskte olduğu kontrol edilir.
31
ORACLE DATABASE AKSİYON DOKÜMANI
Diskte yeterli alan varsa aşağıdaki komutla ekleme yapılır. Diskte alan yoksa konu vodafone
ekibine eskale edilir.
Asm üzerinde datafile eklemek için aşağıdaki komut kullanılır.
ALTER TABLESPACE VPASDF ADD DATAFILE '+DATA' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
Alınabilecek errorlar;
ORA-32771: Cannot Add File To Bigfile Tablespace
Hatası alınıdığı zaman aşağıdaki komut ile Maximum kaç tane datafile eklendiğini kontrol
edebiliriz.
ALTER TABLESPACE USERS ADD DATAFILE '/u02/DBG/users41.DBF' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE
UNLIMITED;
1.12. ME$unusable_indexes:value
Alarm gelen database’e bağlanılır. SYS’e ait unusable indexler aşağıdaki komut ile görüntülenir.
SELECT owner, index_name, status FROM dba_indexes WHERE owner = 'SYS' AND status = 'UNUSABLE';
SYS’e ait Unusable durumda olan index var ise IT IO Database ekibine bildirilir.
32
ORACLE DATABASE AKSİYON DOKÜMANI
1.13. Vdf_goldendp01_Disk_Space_Alarm_/ggatea02
1.14. IS_DB_OPS_Disk_Space_Critical_/zfssa/prime/prime_full01_c07_over_%90
PRIME databaseine ait disk doluluk alarmlarında sadece Mehmet Salih Deveci aksiyon almakta
olup tarafımızca sadece kendisine alarmın geldiğine dair bilgi verilmektedir.
1.15. adrAlertLogIncidentError:genericIncidentErrStack
Belirtilen alarmlarda tarafımızca bir aksiyon alınmıyor olup sadece IT IO Database ekibine bilgi
verilmektedir.
33