Oracle資料庫維護常用SQL語句集合
1、捕捉執行很久的SQL
column username format a12
column opname format a16
column progress format a8
SELECT Username, Sid, Opname,
Round(Sofar * 100 / Totalwork, 0) || '%' AS Progress, Time_Remaining,
Sql_Text
FROM V$session_Longops, V$sql
WHERE Time_Remaining <> 0
AND Sql_Address = Address
AND Sql_Hash_Value = Hash_Value;
2、求DISK READ較多的SQL
SELECT St.Sql_Text
FROM V$sql s, V$sqltext St
WHERE s.Address = St.Address
AND s.Hash_Value = St.Hash_Value
AND s.Disk_Reads > 300;
3、求DISK SORT嚴重的SQL
SELECT Sess.Username, SQL.Sql_Text, Sort1.Blocks
FROM V$session Sess, V$sqlarea SQL, V$sort_Usage Sort1
WHERE Sess.Serial# = Sort1.Session_Num
AND Sort1.Sqladdr = SQL.Address
AND Sort1.Sqlhash = SQL.Hash_Value
AND Sort1.Blocks > 200;
4、監控索引是否使用
alter index &index_name monitoring usage;
alter index &index_name nomonitoring usage;
select * from v$object_usage where index_name = &index_name;
5、求資料檔案的I/O分佈
SELECT Df.NAME, Phyrds, Phywrts, Phyblkrd, Phyblkwrt, Singleblkrds, Readtim,
Writetim
FROM V$filestat Fs, V$dbfile Df
WHERE Fs.File# = Df.File#
ORDER BY Df.NAME;
6、檢視還沒提交的事務
select * from v$locked_object;
select * from v$transaction;
7、回滾段檢視
SELECT Rownum, Sys.Dba_Rollback_Segs.Segment_Name NAME,
V$rollstat.Extents Extents, V$rollstat.Rssize Size_In_Bytes,
V$rollstat.Xacts Xacts, V$rollstat.Gets Gets, V$rollstat.Waits Waits,
V$rollstat.Writes Writes, Sys.Dba_Rollback_Segs.Status Status
FROM V$rollstat, Sys.Dba_Rollback_Segs, V$rollname
WHERE V$rollname.NAME(+) = Sys.Dba_Rollback_Segs.Segment_Name
AND V$rollstat.Usn(+) = V$rollname.Usn
ORDER BY Rownum
8、檢視系統請求情況
SELECT Decode(NAME, 'summed dirty write queue length', VALUE) /
Decode(NAME, 'write requests', VALUE) "Write Request Length"
FROM V$sysstat
WHERE NAME IN ('summed dirty queue length', 'write requests')
AND VALUE > 0;
9、計算data buffer 命中率
SELECT a.VALUE + b.VALUE "logical_reads", c.VALUE "phys_reads",
Round(100 * ((a.VALUE + b.VALUE) - c.VALUE) / (a.VALUE + b.VALUE)) "BUFFER HIT RATIO"
FROM V$sysstat a, V$sysstat b, V$sysstat c
WHERE a.Statistic# = 40
AND b.Statistic# = 41
AND c.Statistic# = 42;
SELECT NAME,
(1 - (Physical_Reads / (Db_Block_Gets + Consistent_Gets))) * 100 h_Ratio
FROM V$buffer_Pool_Statistics;
10、檢視記憶體使用情況
SELECT Least(MAX(b.VALUE) / (1024 * 1024), SUM(a.Bytes) / (1024 * 1024)) Shared_Pool_Used,
MAX(b.VALUE) / (1024 * 1024) Shared_Pool_Size,
Greatest(MAX(b.VALUE) / (1024 * 1024), SUM(a.Bytes) / (1024 * 1024)) -
(SUM(a.Bytes) / (1024 * 1024)) Shared_Pool_Avail,
((SUM(a.Bytes) / (1024 * 1024)) / (MAX(b.VALUE) / (1024 * 1024))) * 100 Avail_Pool_Pct
FROM V$sgastat a, V$parameter b
WHERE (a.Pool = 'shared pool' AND a.NAME NOT IN ('free memory'))
AND b.NAME = 'shared_pool_size';
11、檢視使用者使用記憶體情況
SELECT Username, SUM(Sharable_Mem), SUM(Persistent_Mem), SUM(Runtime_Mem)
FROM Sys.v_$sqlarea a, Dba_Users b
WHERE a.Parsing_User_Id = b.User_Id
GROUP BY Username;
12、檢視物件的快取情況
SELECT Owner, Namespace, TYPE, NAME, Sharable_Mem, Loads, Executions, Locks,
Pins, Kept
FROM V$db_Object_Cache
WHERE TYPE NOT IN
('NOT LOADED', 'NON-EXISTENT', 'VIEW', 'TABLE', 'SEQUENCE')
AND Executions > 0
AND Loads > 1
AND Kept = 'NO'
ORDER BY Owner, Namespace, TYPE, Executions DESC;
SELECT TYPE, COUNT(*)
FROM V$db_Object_Cache
GROUP BY TYPE;
13、檢視庫快取命中率
SELECT Namespace, Gets, Gethitratio * 100 Gethitratio, Pins,
Pinhitratio * 100 Pinhitratio, Reloads, Invalidations
FROM V$librarycache
14、檢視某些使用者的hash
SELECT a.Username, COUNT(b.Hash_Value) Total_Hash,
COUNT(b.Hash_Value) - COUNT(UNIQUE(b.Hash_Value)) Same_Hash,
(COUNT(UNIQUE(b.Hash_Value)) / COUNT(b.Hash_Value)) * 100 u_Hash_Ratio
FROM Dba_Users a, V$sqlarea b
WHERE a.User_Id = b.Parsing_User_Id
GROUP BY a.Username;
15、檢視字典命中率
SELECT (SUM(Getmisses) / SUM(Gets)) Ratio
FROM V$rowcache;
16、檢視undo段的使用情況
SELECT d.Segment_Name, Extents, Optsize, Shrinks, Aveshrink, Aveactive,
d.Status
FROM V$rollname n, V$rollstat s, Dba_Rollback_Segs d
WHERE d.Segment_Id = n.Usn(+)
AND d.Segment_Id = s.Usn(+);
17、求歸檔日誌的切換頻率(生產系統可能時間會很長)
SELECT Start_Recid, Start_Time, End_Recid, End_Time, Minutes
FROM (SELECT Test.*, Rownum AS Rn
FROM (SELECT b.Recid Start_Recid,
To_Char(b.First_Time, 'yyyy-mm-dd hh24:mi:ss') Start_Time,
a.Recid End_Recid,
To_Char(a.First_Time, 'yyyy-mm-dd hh24:mi:ss') End_Time,
Round(((a.First_Time - b.First_Time) * 24) * 60, 2) Minutes
FROM V$log_History a, V$log_History b
WHERE a.Recid = b.Recid + 1
AND b.First_Time > SYSDATE - 1
ORDER BY a.First_Time DESC) Test) y
WHERE y.Rn < 30
18、求回滾段正在處理的事務
SELECT a.NAME, b.Xacts, c.Sid, c.Serial#, d.Sql_Text
FROM V$rollname a, V$rollstat b, V$session c, V$sqltext d, V$transaction e
WHERE a.Usn = b.Usn
AND b.Usn = e.Xidusn
AND c.Taddr = e.Addr
AND c.Sql_Address = d.Address
AND c.Sql_Hash_Value = d.Hash_Value
ORDER BY a.NAME, c.Sid, d.Piece;
19、求某個事務的重做資訊(bytes)
SELECT s.NAME, m.VALUE
FROM V$mystat m, V$statname s
WHERE m.Statistic# = s.Statistic#
AND s.NAME LIKE '%redo size%';
20、求cache中快取超過其5%的物件
SELECT o.Owner, o.Object_Type, o.Object_Name, COUNT(b.Objd)
FROM V$bh b, Dba_Objects o
WHERE b.Objd = o.Object_Id
GROUP BY o.Owner, o.Object_Type, o.Object_Name
HAVING COUNT(b.Objd) > (SELECT To_Number(VALUE) * 0.05
FROM V$parameter
WHERE NAME = 'db_block_buffers');
21、求buffer cache中的塊資訊
SELECT o.Object_Type, Substr(o.Object_Name, 1, 10) Objname, b.Objd, b.Status,
COUNT(b.Objd)
FROM V$bh b, Dba_Objects o
WHERE b.Objd = o.Data_Object_Id
AND o.Owner = '&owner'
GROUP BY o.Object_Type, o.Object_Name, b.Objd, b.Status;
22、求日誌檔案的空間使用
SELECT Le.Leseq Current_Log_Sequence#,
100 * Cp.Cpodr_Bno / Le.Lesiz Percentage_Full
FROM X$kcccp Cp, X$kccle Le
WHERE Le.Leseq = Cp.Cpodr_Seq;
23、求等待中的物件
SELECT /*+rule */
s.Sid, s.Username, w.Event, o.Owner, o.Segment_Name, o.Segment_Type,
o.Partition_Name, w.Seconds_In_Wait Seconds, w.State
FROM V$session_Wait w, V$session s, Dba_Extents o
WHERE w.Event IN (SELECT NAME
FROM V$event_Name
WHERE Parameter1 = 'file#'
AND Parameter2 = 'block#'
AND NAME NOT LIKE 'control%')
AND o.Owner <> 'sys'
AND w.Sid = s.Sid
AND w.P1 = o.File_Id
AND w.P2 >= o.Block_Id
AND w.P2 < o.Block_Id + o.Blocks
24、求當前事務的重做尺寸
SELECT V$statname.NAME,VALUE
FROM V$mystat, V$statname
WHERE V$mystat.Statistic# = V$statname.Statistic#
AND V$statname.NAME = 'redo size';
25、喚醒smon去清除臨時段
column pid new_value Smon
set termout off
SELECT p.Pid
FROM Sys.v_$bgprocess b, Sys.v_$process p
WHERE b.NAME = 'SMON'
AND p.Addr = b.Paddr;
/
SET Termout ON Oradebug Wakeup &Smon Undefine Smon
26、求回退率
SELECT b.VALUE / (a.VALUE + b.VALUE), a.VALUE, b.VALUE
FROM V$sysstat a, V$sysstat b
WHERE a.Statistic# = 4
AND b.Statistic# = 5;
27、求free memory
SELECT *
FROM V$sgastat
WHERE NAME = 'free memory';
SELECT a.NAME, SUM(b.VALUE)
FROM V$statname a, V$sesstat b
WHERE a.Statistic# = b.Statistic#
GROUP BY a.NAME;
檢視一下誰在使用那個可以得回滾段,或者檢視一下某個可以得使用者在使用回滾段,
找出領回滾段不斷增長的事務,再看看如何處理它,是否可以將它commit,再不行
就看看能否kill它,等等, 檢視當前正在使用的回滾段的使用者資訊和回滾段資訊:
set linesize 121
SELECT r.NAME "ROLLBACK SEGMENT NAME ", l.Sid "ORACLE PID",
p.Spid "SYSTEM PID ", s.Username "ORACLE USERNAME"
FROM V$lock l, V$process p, V$rollname r, V$session s
WHERE l.Sid = p.Pid(+)
AND s.Sid = l.Sid
AND Trunc(l.Id1(+) / 65536) = r.Usn
AND l.TYPE(+) = 'TX'
AND l.Lmode(+) = 6
ORDER BY r.NAME;
28、檢視使用者的回滾段的資訊
SELECT s.Username, Rn.NAME
FROM V$session s, V$transaction t, V$rollstat r, V$rollname Rn
WHERE s.Saddr = t.Ses_Addr
AND t.Xidusn = r.Usn
AND r.Usn = Rn.Usn
29、檢視記憶體中存的使用
SELECT Decode(Greatest(CLASS, 10),
10,
Decode(CLASS, 1, 'Data', 2, 'Sort', 4, 'Header', To_Char(CLASS)), 'Rollback') "Class",
SUM(Decode(Bitand(Flag, 1), 1, 0, 1)) "Not Dirty",
SUM(Decode(Bitand(Flag, 1), 1, 1, 0)) "Dirty",
SUM(Dirty_Queue) "On Dirty", COUNT(*) "Total"
FROM X$bh
GROUP BY Decode(Greatest(CLASS, 10),
10,
Decode(CLASS, 1, 'Data', 2, 'Sort', 4, 'Header', To_Char(CLASS)), 'Rollback');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16396910/viewspace-1035146/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle維護常用SQL語句OracleSQL
- 轉貼:Oracle維護常用SQL語句OracleSQL
- 轉:維護常用SQL語句收集!SQL
- 資料庫常用sql 語句資料庫SQL
- Oracle常用維護語句總結Oracle
- oracle資料庫常用語句Oracle資料庫
- 資料庫常用操作SQL語句資料庫SQL
- 資料庫維護常用操作3--DDL語句檢視資料庫
- 資料庫常用的sql語句大全--sql資料庫SQL
- Oracle資料庫維護常用的SQL程式碼示例(zt)Oracle資料庫SQL
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- oracle 維護常用SQLOracleSQL
- 資料庫常用的sql語句彙總資料庫SQL
- 資料庫巡檢常用的SQL語句資料庫SQL
- SQLServer資料庫管理的常用SQL語句SQLServer資料庫
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- oracle常用SQL語句OracleSQL
- 資料庫常用維護命令資料庫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- SQL Server資料庫管理常用SQL和T-SQL語句SQLServer資料庫
- Oracle常用sql語法集合OracleSQL
- 【資料庫】SQL語句資料庫SQL
- SQL Server 資料庫部分常用語句小結(二)SQLServer資料庫
- SQL Server 資料庫部分常用語句小結(一)SQLServer資料庫
- ORACLE DG 日常維護常用SQLOracleSQL
- SQLServer資料庫管理常用的SQL和T-SQL語句SQLServer資料庫
- SQL語句集合SQL
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- oracle資料庫:耗cpu sql語句優化Oracle資料庫SQL優化
- oracle資料庫巡檢(一)基本sql語句Oracle資料庫SQL
- 資料庫SQL拼接語句資料庫SQL
- Oracle資料庫日常維護Oracle資料庫
- 【PDB】Oracle pdb維護常用sql命令OracleSQL
- SQL資料庫連線語句SQL資料庫
- Oracle資料庫語句大全Oracle資料庫
- 常用SQL語句SQL
- sql常用語句SQL
- dba 常用維護sqlSQL