oracle資料庫CPU特別高的解決方法
system
表空間100%,導致資料庫無法訪問
系統表空間正常情況下只存放了資料字典之類的東西,所以佔用的空間一般在500M以下。如果你的系統表空間佔用比較多的空間,可能有以下幾方面的原因:1)沒有為使用者明確指定預設表空間,導致system
系統表空間作為使用者預設表空間2)開啟了審計,請檢查此表的大小AUD$
你可以執行以下查詢來檢查一下系統表空間哪些表比較大:
SQL> select * from (select SEGMENT_NAME,sum(bytes)/1024/1024 sx
from dba_segments
where tablespace_name='SYSTEM' group by segment_name)
where sx>100 order by sx desc;
檢視該表紀錄數
select count(*) sum from AUD$;
解決方法大概可分為以下幾種:一、為system
表空間另外新增一個資料檔案。
alter tablespace system add datafile 'D:\oracleXE\oradata\XE\system_01.dbf' resize 1024M;
二、更改system
表空間的資料檔案SYSTEM.dbf
分配空間。
alter database datafile 'D:\oracleXE\oradata\XE\system_01.dbf' autoextend on;
alter database datafile 'D:\oracleXE\oradata\XE\system_01.dbf' resize 1024M;
三、truncate
掉AUD$
表並關閉審計功能(我是使用的這種,效果立竿見影,不過如果不關閉此功能, 需要定期清理此表):
SQL> alter system set audit_trail=none scope=spfile;
SQL>showdown immediate;
SQL>startup;
四、將AUD$
預設表空間由system
移出。
如何用sql 語句查詢出oracle的cpu使用率
select * from (select sql_text,sql_id,cpu_time from v$sql order by cpu_time desc) where rownum<=10 order by rownum asc ;
select * from (select sql_text,sql_id,cpu_time from v$sqlarea order by cpu_time desc) where rownum<=10 order by rownum asc ;
這2個語句效果基本一樣,一個從v$sql
檢視查詢一個從v$sqlarea
檢視查詢。
列出使用頻率最高的5個查詢:
select sql_text,executionsfrom (select sql_text,executions, rank()
over (order by executions desc) exec_rank from v$sql)where exec_rank <=5;
消耗磁碟讀取最多的sql top5:
select disk_reads,sql_textfrom (select sql_text,disk_reads, dense_rank()
over (order by disk_reads desc) disk_reads_rank from v$sql)
where disk_reads_rank <=5;
找出需要大量緩衝讀取(邏輯讀)操作的查詢:
select buffer_gets,sql_textfrom (select sql_text,buffer_gets, dense_rank()
over (order by buffer_gets desc) buffer_gets_rank from v$sql)
where buffer_gets_rank<=5;
1,使用Linux系統top命令查出佔用cpu最高的程式
2,在sqlplus中執行如下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 =(SELECT addr FROM v$process c WHERE c.spid = '&pid'))ORDER BY piece ASC
其中&pid
是使用top 檢視系統中程式佔用CPU極高的PID找到SQL語句進行相應的調整優化
3,分析找到的sql語句,如檢視sql執行計劃。
######查詢結果集輸出到一個檔案裡面
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool d:\slow_info.txt
select sql_text,executionsfrom (select sql_text,executions, rank() over (order by executions desc) exec_rank
from v$sql)where exec_rank <=5;
spool off
查出問題的sql會話sid,並進行封殺操作
select sid, serial#, sql_text, executions
from v$sql join v$session
on v$sql.sql_id = v$session.sql_id
where cpu_time > 20000;
##########查出問題的SQL執行殺程式操作:執行以下語句殺死
alter system kill session 'sid,serial#';
相關文章
- 資料庫高併發解決方法總結資料庫
- ORACLE資料庫降低高水位線方法Oracle資料庫
- oracle 程式滿了,登陸不上資料庫的解決方法Oracle資料庫
- Kettle8.2連線Oracle資料庫失敗解決方法Oracle資料庫
- 總結導致oracle資料庫主機CPU sys%高的一些原因Oracle資料庫
- MySQL資料庫SYS CPU高的可能性分析MySql資料庫
- win10解決antimalware service executable cpu佔用率高的方法Win10
- Oracle資料庫 11.2.0.4 EMON程式持續消耗CPUOracle資料庫
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- MSSQL資料庫超時的原因與解決方法SQL資料庫
- 建立資料庫時“Insufficient privileges”的解決方法DK資料庫
- rundll32.exe程式佔用率CPU高的原因及解決方法
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- dg和ogg的區別--oracle資料庫Oracle資料庫
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- Oracle用資料泵匯入資料包12899的錯誤碼解決方法Oracle
- 【BUILD_ORACLE】在Oracle cloud資料庫“插拔”PDB的方法UIOracleCloud資料庫
- 資料庫連線錯誤的原因及解決方法資料庫
- 資料庫連線失敗的原因及解決方法資料庫
- CPU挖礦病毒解決方法
- 幾道特別難搞的資料庫面試題資料庫面試題
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- 資料庫高可用面臨的挑戰與解決之道|OceanBaseDev資料庫dev
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 解決無法連線SQL Server資料庫的方法BWSQLServer資料庫
- 細數基於ORACLE 資料庫環境的常見資料災難解決方式Oracle資料庫
- 安裝mysql資料庫及問題解決方法MySql資料庫
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫
- 非常實用的Oracle資料庫資料恢復方法案例Oracle資料庫資料恢復
- 資料庫管理-第221期 Oracle的高可用-04(20240717)資料庫Oracle
- win10正式版cpu佔用高的解決方法_win10正式版cpu佔用高怎麼辦Win10
- iphone通話聲音的解決方法 iphone通話聲音特別小怎樣解決?iPhone
- win10系統下vmware開啟特別慢的解決方法Win10
- ORACLE ORA-1652的解決方法Oracle
- 瀚高資料庫日誌挖掘方法資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫