Oracle常用效能排查SQL

2021-10-08 21:25:38 字數 1732 閱讀 8577

檢視當前的資料庫連線數

select count(*) from v$process ;   

資料庫允許的最大連線數

select value from v$parameter where name ='processes'; 

修改資料庫最大連線數

alter system set processes = 300 scope = spfile;  

關閉/重啟資料庫

shutdown immediate; --關閉資料庫

startup; --重啟資料庫

當前的session連線數

select count(*) from v$session  

當前併發連線數

select count(*) from v$session where status='active'; 

v$process:

檢視提供的資訊,都是oracle服務程序的資訊,沒有客戶端程式相關的資訊

服務程序分兩類,一是後台的,一是dedicate/shared server

pid, serial#     這是oracle分配的pid

spid                這才是作業系統的pid

program         這是服務程序對應的作業系統程序名

v$session:

主要提供的是乙個資料庫connect的資訊,

主要是client端的資訊,比如以下字段:

machine   在哪台機器上

terminal  使用什麼終端

osuser    作業系統使用者是誰

program   通過什麼客戶端程式,比如toad

process   作業系統分配給toad的程序號

logon_time  在什麼時間

username    以什麼oracle的帳號登入

command     執行了什麼型別的sql命令

sql_hash_value  sql語句資訊

server端的資訊:

paddr   即v$process中的server程序的addr

server  伺服器是dedicate/shared

發生死鎖時的排查方法:

檢視那些表被鎖住:

sql> select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

檢視引起死鎖的會話:

sql> select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

檢視被阻塞的會話:

select * from dba_waiters;

可以提交或回滾阻塞的話,釋放鎖或者殺掉oracle程序:

alter system kill sessin 'sid,serial#';

Oracle效能排查小案例

原創文章標籤經驗分享 文章分類oracle 資料庫閱讀數28 昨天乙個老同學找我說碰到了資料庫的問題,因為各種雜事一直給耽誤了下,今天做了乙個初步的分析。首先這是乙個做統計業務的資料庫,型別可以歸為olap方向。根據反饋,在週末的時候相關的etl任務會卡住,問題已經過去了一段時間,確切的說是發生了1...

oracle sql效能排查 查詢sql執行時間

找出執行最慢的sql 根據平均耗時大小排序 select a.sql text,a.sql id,a.executions 總執行次數 nvl a.elapsed time,0 1000 1000 總耗時 秒 nvl a.elapsed time,0 nvl decode a.executions,...

sql耗時排查

今天遇見乙個挺好的語句,保留下來了。需要的自取 select top1000 qs.creation time 時間,substring st.text,qs.statement start offset 2 1,case qs.statement end offset when 1 then da...