Chủ Nhật, 31 tháng 1, 2021

Quy trình kiểm tra NHANH Oracle Database khi người dùng phản ánh lỗi chậm, treo ứng dụng

Khi nhạn được thông tin người dùng phản ánh, chậm, treo nghiệp vụ mà chưa rõ bắn ra lỗi ORA nào từ phía ứng dụng, để kiểm tra nhanh cần thực hiện các bước "sơ cứu" như sau:

1. Kiểm tra alert log:

tail -1000f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/trace/alert_$ORACLE_SID.log  

-- Đảm bảo không có log gì lỗ ORA-

-- Nếu có lỗi ORA- dựa vào kinh nghiệm và google, Oracle Support để xử lý; ví dụ đầy tablespace --> Add thêm datafile (chú ý đúng diskgroup, nhầm diskgroup RECO có thể chậm cả DB, sau chuyển lại rất mất công).

2. Kiểm tra active session, lock:

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 ('SYSMAN','DBSNMP','GGATE','GOLDENGATE')
--AND username like 'SYS%'
--and DECODE(S.WAIT_TIME, 0, S.EVENT, 'CPU') like '%Streams AQ: waiting for messages in the queue%'
--and lower(ss.sql_text) like lower('%streams AQ: waiting for messages in the queue%')
--and lower(ss.sql_text) not like lower('%ACTIVE, LOCK%')
--and s.sid=4588 
--and s.machine like '%BINHTV%'
--and s.sql_id ='ccwg0nqr1zbu7'
ORDER BY username,sql_id;

select /* 2.Total_ActiveSessioins*/ USERNAME,count(*) from gv$session where  status='ACTIVE' group by USERNAME order by count(*) desc;

select /* 3.Total_Session*/ username,status, count(*) from gv$session group by username,status order by count(*) desc;

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 có lock thì kill theo câu lệnh:

SELECT /*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 (
1056
)
and type='USER'
and machine  not like '%BINHTV%' --and user not like 'SYS'
order by inst_id;

3. Kiểm tra bảng

Đảm bảo bảng đủ thông tin gather: Ấn F4 vào bảng --> Chọn Stats/Size hoặc bảng partition thì vào mục Partitioning đảm bảo đủ thông tin gather (số row, thời gian analyzed).

Chú ý nếu index unusable thì DML sẽ bị lỗi, cần check:

select * from dba_ind_partitions where 
status!='USABLE' 
and (index_owner,index_name) in 
(select owner,index_name from dba_indexes where owner='TEST_OWNER' 
and table_name in ('TEST_TAB1',)
);

-- Unsable thì rebuild lại partition hoặc index tương ứng

4. Các vấn đề khác
Ngoài ra check thêm tải CPU, RAM, IO, (câu lệnh vmstat 5). network hoặc cảnh báo OS (dmesg)

Trên đây là 1 số note cơ bản để các bạn có thể check nhanh Oracle Database.

Hy vọng sẽ hữu ích với bạn.

==================================
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
Các tìm kiếm liên quan đến 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 dba roles and responsibilities

ĐỌC NHIỀU

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