Thứ Sáu, 10 tháng 9, 2021

Ứng dụng tự nhiên chạy chậm check như thế nào?

Có thể check nhanh một số phần:

1. CHECK SESSION
- Check active Active session: Ví dụ bình thường 50, giờ lên 100 và có nguy cơ lên 200 là sắp treo, câu lệnh bên dưới nhé, chú ý event là (như library cache lock, row lock conetion, ....), từ câu lệnh này mình nhìn khá tốt được về DB của mình, mỗi DB sẽ có 1 ngưỡng sẽ bị timeout các nghiệp vụ nhạy cảm hoặc chạy chậm các nghiệp vụ, ví dụ 150, 200, 300:
SELECT /*1.ActiveSession*/ distinct s.inst_id i#, s.username, s.SID SID, s.osuser, s.machine,DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') ACTION,
s.sql_id, SUBSTR(DECODE(SS.SQL_TEXT, NULL, AA.NAME, SS.SQL_TEXT), 1, 1000) SQLTEXT,s.logon_time,s.p1text, S.P1, s.p2text, S.P2, s.p3text, S.P3
FROM GV$SESSION S, GV$SQLSTATS SS, AUDIT_ACTIONS AA
WHERE S.STATUS = 'ACTIVE' AND S.SQL_ID = SS.SQL_ID (+) AND AA.ACTION = S.COMMAND and s.type != 'BACKGROUND' AND S.TYPE = 'USER'
and s.username NOT in ('SYS','SYSMAN','DBSNMP','GGATE')
--AND username in 'USER1'
--and DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') like '%cell single block physical read%'
--and lower(ss.sql_text) like lower('%parallel%')
--and s.sid=4588
--and s.machine like '%USER1%'
--and s.sql_id ='ccwg0nqr1zbu7'
ORDER BY username,sql_id;

- Check total active session: Xem có user nào giữ session nhiều, cái này phải theo dõi liên tục mới biết được quy luật của ứng dụng
select /* 2.Total_ActiveSessioins*/ USERNAME,count(*) from gv$session where status='ACTIVE' group by USERNAME order by count(*) desc;

- Check session xem có ứng dụng nào mới cập nhật phần quản lý connection kém gây ra chiếm nhiều sesion:
select /* 3.Total_Session*/ username,status, count(*) from gv$session group by username,status order by count(*) desc;

Nếu có thì check tiếp xem nó từ máy nào (các câu lệnh chi tiết theo các tiêu chí ở mục SUM của script):

select /* user theo machine */ machine,count(*), username from gv$session where username like 'USER1%' group by machine, username order by username;

Còn nếu phát hiện lock ở cầu lệnh đầu tiên ở trên thì check lock xem có bị lock nhiều không:

Select /*4.Blocking_session*/ inst_id,blocking_session, sid, serial#, sql_id, wait_class, seconds_in_wait, username,STATUS,SCHEMANAME,OSUSER,MACHINE,PROGRAM,TYPE,LOGON_TIME
From gv$session where blocking_session is not NULL and type not like 'BACKGROUND' order by inst_id;

+ Nếu do 1 blocking session làm wait nhiều session (có trường hợp cả trăm session) thì kill đi là giải phóng, giống hiện tượng tắc đường vậy:

SELECT /*5.SID*/ 'kill -9 ' || spid a, a.INST_ID,A.SQL_ID,A.SID, A.SERIAL#, a.USERNAME, a.STATUS,A.SCHEMANAME,a.OSUSER,A.MACHINE,A.PROGRAM,A.TYPE,A.LOGON_TIME,a.prev_exec_start,BACKGROUND
FROM gv$session a, gv$process b
WHERE b.addr = a.paddr
AND a.inst_id=b.inst_id
--and b.inst_id=2
AND a.sid in (
4588
)
and type='USER'
order by inst_id;

(còn trường hợp lock qua dblink cũng tham khảo script này theo link ở bên dưới)

Chi tiết tại đây: https://www.tranvanbinh.vn/2018/05/cau-lenh-monitor-csdl-oracle.html

Còn nhiều trường hợp tăng tải làm chậm ứng dụng do chính DBA chưa có kinh nghiệm thêm cột vào bảng core trong giờ hành chính, cập nhật 1 thủ tục/package/function hoặc delete dữ liệu bảng core nhầm điều kiện where,... và rất nhiều trường hợp nhầm khác nữa thì khi đó Active session cũng tăng và event "lạ" sẽ xuất hiện --> AE tự nghiên cứu cách fix mỗi trường hợp, viết ra ko hết ý được.

2.ALERT LOG: Khi có lỗi kiểu gì cũng bắn ra ORA hoặc switch log bất thường

3.IO: Lệnh check iostat -xdn 5 (chú ý trường phản hồi, ví dụ SAN FC < 25ms là OK, SATA thì > 100ms, SSD < 5ms,...)

4. Check phần cứng: /var/adm/messsage xem có bất thường vì phần cứng không

5. Dùng TOAD vào session browser check Plan câu lệnh xem có chuẩn không, nếu ko chuẩn xem lại statistic các bảng có thể job gather "chết" lâu ngày hoặc mới chết làm statistic thiếu làm Plan sai, ví dụ câu lệnh quét full thay vì phải dùng index --> Gather lại theo link tham khảo: https://www.tranvanbinh.vn/2020/08/gather-analyze-co-so-du-lieu-oracle.html

6. Ngoài ra check các report khác:
- AWR: Chú ý top 5 event, top 10 event
- ASH: Xem có session gì lạ không ví dụ backup đang chạy cũng làm tăng IO, chậm nghiệp vụ --> Chú ý trước 8h sáng phải backup xong với các nghiệp vụ quan trọng không ứng dụng sẽ chậm, timeout
- ADDM: Phát hiện xem có vấn đề gì không.

7. Check tiếp các log Cluster, ASM,...check hạ tầng phần cứng, mạng, SAN xem có cập nhật thay đổi gì không

8. Có thể dữ liệu tăng đột biến cũng là nguyên nhân làm câu lệnh, nghiệp vụ chạy chậm, có trường hợp quét dữ liệu lớn còn không chạy được -> Sử dụng giải pháp chia để trị (30 ngày ko quét được thì quét 20 ngày, 15 ngày, ....)

Tất cả đều có nguyên nhân của nó, không phải tự nhiên nó bị đâu anh/em.

Hy vọng hữu ích cho anh/em.
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master