資料庫巡檢常用的SQL語句
連線到伺服器後
su - oracle
sqlplus /nolog
conn / as sysdba
1.檢視例項的狀態:
set linesize 200
set pagesize 200
select instance_name,status
from v$instance;
2.檢視資料檔案的狀態:
set linesize 200
set pagesize 200
select file_name,tablespace_name,status,autoextensible
from dba_data_files;
3.檢視日誌的狀態資訊:
set linesize 200
set pagesize 200
select sequence#,group#,status,archived
from v$log;
4.檢視備份的有效性:
su - oracle
rman
connect target
list backup;
看當天備份的status,如果是AVAILABLE,說明備份有效
5.檢視session的使用情況:
set linesize 200
set pagesize 200
select count(*)
from v$session;---總的session
select count(*)
from v$session
where status='ACTIVE';---活動的session
6.表空間使用情況:
set linesize 200
set pagesize 200
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc;
7.監控FRA空間使用率
set linesize 200
set pagesize 200
select * from v_$flash_recovery_area_usage;
SELECT (100 - sum(percent_space_used)) + sum(percent_space_reclaimable)FROM v$flash_recovery_area_usage;
8.緩衝區命中率:
set linesize 200
set pagesize 200
select (1-(sum(decode(name, 'physical reads',value,0))/(sum(decode(name, 'db block gets',value,0))
+sum(decode(name,'consistent gets',value,0))))) * 100 "Hit Ratio"
from v$sysstat;
9.資料字典快取命中率:
set linesize 200
set pagesize 200
select (1-(sum(getmisses)/sum(gets))) * 100 "Hit Ratio" from v$rowcache;
10.庫快取命中率:
set linesize 200
set pagesize 200
select Sum(Pins)/(Sum(Pins) + Sum(Reloads)) * 100 "Hit Ratio" from V$LibraryCache;
11.PGA記憶體排序命中率:
set linesize 200
set pagesize 200
select a.value "Disk Sorts",b.value "Memory Sorts",
round((100*b.value) / decode((a.value+b.value),0,1,(a.value+b.value)),2) "Pct Memory Sorts"
from v$sysstat a,v$sysstat b
where a.name = 'sorts (disk)'
and b.name = 'sorts (memory)';
12.最消耗記憶體的前10個語句佔所有語句的比例:---在沒有調整的情況下,大多數系統中10個最常使用的SQL語句的訪問量佔了整個系統中記憶體讀操作的50%以上
set linesize 200
set pagesize 200
select sum(pct_bufgets) "Percent"
from (select rank() over ( order by buffer_gets desc) as rank_bufgets,
to_char(100*ratio_to_report(buffer_gets) over(),'999.99') pct_bufgets
from v$sqlarea)
where rank_bufgets < 11;
13.調整前25個最佔用記憶體的語句:
set serverout on size 1000000
declare
top25 number;
text1 varchar2(4000);
x number;
len1 number;
cursor c1 is
select buffer_gets,substr(sql_text,1,4000)
from v$sqlarea
order by buffer_gets desc;
begin
dbms_output.put_line('Gets'||' '||'Text');
dbms_output.put_line('----------'||' '||'----------------------');
open c1;
for i in 1..25 loop
fetch c1 into top25,text1;
dbms_output.put_line(rpad(to_char(top25),9)||' '||substr(text1,1,66));
len1:=length(text1);
x:=66;
while len1 > x-1 loop
dbms_output.put_line('" '||substr(text1,x,66));
x:=x+66;
end loop;
end loop;
end;
/
14.最浪費磁碟讀操作的前10個語句佔所有語句的比例:
set linesize 200
set pagesize 200
select sum(pct_bufgets) "Percent"
from (select rank() over (order by disk_reads desc) as rank_bufgets,
to_char(100*ratio_to_report(disk_reads) over (),'999.99') pct_bufgets
from v$sqlarea)
where rank_bufgets < 11;
15.查詢25個濫用磁碟讀操作的最主要語句
set serverout on size 1000000
declare
top25 number;
text1 varchar2(4000);
x number;
len1 number;
cursor c1 is
select disk_reads,substr(sql_text,1,4000)
from v$sqlarea
order by disk_reads desc;
begin
dbms_output.put_line('Reads'||' '||'Text');
dbms_output.put_line('----------'||' '||'----------------------');
open c1;
for i in 1..25 loop
fetch c1 into top25,text1;
dbms_output.put_line(rpad(to_char(top25),9)||' '||substr(text1,1,66));
len1:=length(text1);
x:=66;
while len1 > x-1 loop
dbms_output.put_line('" '||substr(text1,x,66));
x:=x+66;
end loop;
end loop;
end;
/
16.檢視鎖定問題
set linesize 200
set pagesize 200
select username,lockwait,status,machine,program
from v$session
where sid in
(select session_id from v$locked_object);
17.檢視鎖定的sql(如果發現鎖定的話)
set linesize 200
set pagesize 200
select sql_text
from v$sql
where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object));
或者
SELECT
REPLACE(SQL_TEXT, CHR(13), CHR(10) || CHR(13))
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.sid = &sid
and b.serial# = &serial) order by rownum desc;
18.檢視鎖定的位置(如果發現鎖定的話)
set linesize 200
set pagesize 200
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S
WHERE l.SESSION_ID=S.SID;
19.刪除鎖定的會話(如果發現鎖定的話)
set linesize 200
set pagesize 200
alter system kill session 'sid,serial#';
如:alter system kill session '1076,1263'; (其中sid=l.session_id)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16978544/viewspace-691846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫巡檢(一)基本sql語句Oracle資料庫SQL
- 資料庫常用sql 語句資料庫SQL
- 資料庫常用的sql語句大全--sql資料庫SQL
- oracle資料庫巡檢最佳化-使用sql語句快速定位資料庫瓶頸Oracle資料庫SQL
- 資料庫常用操作SQL語句資料庫SQL
- SQL Server資料庫巡檢SQLServer資料庫
- 資料庫常用的sql語句彙總資料庫SQL
- SQLServer資料庫管理的常用SQL語句SQLServer資料庫
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- SQLServer資料庫管理常用的SQL和T-SQL語句SQLServer資料庫
- MSSQL資料庫健康檢查--SQL Server巡檢SQL資料庫Server
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- Oracle資料庫維護常用SQL語句集合Oracle資料庫SQL
- SQL Server資料庫管理常用SQL和T-SQL語句SQLServer資料庫
- 【資料庫】SQL語句資料庫SQL
- 資料庫的檢索語句資料庫
- oracle資料庫常用語句Oracle資料庫
- SQL Server 資料庫部分常用語句小結(二)SQLServer資料庫
- SQL Server 資料庫部分常用語句小結(一)SQLServer資料庫
- 常用的檢查SQL Agent Job 語句SQL
- 資料庫SQL拼接語句資料庫SQL
- 資料庫巡檢模版資料庫
- Oracle資料庫巡檢Oracle資料庫
- 常用的檢視資料庫的SQL資料庫SQL
- 資料庫維護常用操作3--DDL語句檢視資料庫
- SQL資料庫連線語句SQL資料庫
- oracle資料庫巡檢(轉)Oracle資料庫
- 常用的SQL語句SQL
- 常用的SQL 語句SQL
- 用sql語句dbcc log 檢視SQL Server 資料庫的事務日誌SQLServer資料庫
- 常用SQL語句SQL
- sql常用語句SQL
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- 使用RDA巡檢MYSQL資料庫MySql資料庫
- 資料庫巡檢參考項資料庫
- oracle資料庫巡檢內容Oracle資料庫
- MySQL資料庫健康檢查--MySQL巡檢MySql資料庫
- oracle資料庫巡檢(二)全面檢查Oracle資料庫