1樓:
oracle查詢當前執行效率低的sql
--cpu高的sql
select sql_text from v$sql order by cpu_time desc
--邏輯讀多的sql:
select * from (select buffer_gets, sql_text
from v$sqlarea
where buffer_gets > 500000
order by buffer_gets desc) where rownum<=30;
--執行次數多的sql :
select sql_text,executions from
(select sql_text,executions from v$sqlarea order by executions desc)
where rownum<81;
--讀硬碟多的sql :
select sql_text,disk_reads from
(select sql_text,disk_reads from v$sqlarea order by disk_reads desc)
where rownum<21;
2樓:匿名使用者
一般通過awr報告,可以找到一段時間內佔用cpu前十的sql
oraclecpu佔用率高怎麼處理
3樓:匿名使用者
問題分析:
一般cpu佔用效高都是排序、sql解析和全表掃瞄,這裡首先需要找出佔用cpu最高的sql,然後檢視他的執行計畫,比如:看執行計畫是走索引還是全表掃瞄(剛開始檢視top發現佔用同樣多的cpu的程序很多,還以為是oracle 的bug, 後來發現不是)。
處理過程:
1, 根據作業系統程序查詢oracle資料庫中佔用最多cpu的sql
使用linux系統 "top命令->p "查出佔用cpu最高的程序pid
操作如下:在sqlplus中執行如下sql:
sql>
select
sql_text
from v$sqltext a
where (a.hash_value, a.address) in
(select decode(sql_hash_value, 0, prev_hash_value, sql_hash_value),
decode(sql_hash_value, 0, prev_sql_addr, sql_address)
from v$session b
where b.paddr =
order by piece asc
其中&pid 是使用top 檢視系統中程序佔用cpu極高的pid
找到sql語句進行相應的調整優化
2,分析找到的sql語句,如檢視sql執行計畫。
總結:這裡的問題是查詢的where 條件字段沒有在索引裡面,導致查詢慢。經過重建並增加相關欄位到索引解決,但有點疑惑的是原來庫上查詢語句裡where條件欄位也沒有在索引裡面(新庫是使用expdp匯出再匯入到新庫的),查詢還正常,cpu也不高,oracle資料庫真是博大精深,好多問題還有待研究。
怎麼從oracle資料庫備份資料庫
1 首先先確認oracle伺服器上oracle中標紅的相關的服務是否已經正常啟動。2 然後要把plsql關閉,讓連線先退出一下,確保斷開資料庫的所有連線,如果資料庫中有正在連線客戶端,備份的時候可能會出現異常。3 接著開啟cmd命令提示符視窗,輸入備份資料庫的命令,xp命令的後面跟使用者名稱和密碼,...
oracle資料庫面試題,ORACLE資料庫面試題
1 b沒有訪問表employee的許可權,或者有許可權但是在做desc時沒有加使用者名稱在表前面。2 在建表時設定了max extent引數導致了表extent數滿了之後不能再進行擴充套件。3 tablespace full表示該錶空間沒有可擴充套件的塊了,這是設定了datafile為autoext...
oracle資料庫表中,插入資料的時候如何產生母 數字編號
先建立乙個sequence 然後給插入資料的表寫個trigger before insert 的時候 設定這個欄位的值為 sd sequence.nextval create sequence 表名 seq increment by 1 start with 100000001 nocache in...