#精确计算表空间大小,消耗系统资源,慎用
SELECT F.TABLESPACE_NAME,
A.ALL_TOTAL "总空间" ,
A.ALL_USED "总使用空间" ,
A.ALL_TOTAL - A.ALL_USED "总剩余空间" ,
(A.ALL_TOTAL - A.ALL_USED) / A.ALL_TOTAL * 100 "总剩余比例" ,
A.TOTAL "当前大小" ,
U.USED "当前使用空间" ,
F. FREE "当前剩余空间" ,
(U.USED / A.TOTAL) * 100 "当前使用比例" ,
(F. FREE / A.TOTAL) * 100 "当前剩余比例"
FROM ( SELECT TABLESPACE_NAME,
SUM (BYTES / (1024 * 1024 * 1024)) TOTAL,
SUM (DECODE(AUTOEXTENSIBLE, 'YES' , MAXBYTES, BYTES) /
(1024 * 1024 * 1024)) ALL_TOTAL,
SUM (USER_BYTES) / (1024 * 1024 * 1024) ALL_USED
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A,
( SELECT TABLESPACE_NAME, SUM (BYTES / (1024 * 1024 * 1024)) USED
FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME) U,
( SELECT TABLESPACE_NAME, SUM (BYTES / (1024 * 1024 * 1024)) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE A.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
AND A.TABLESPACE_NAME = U.TABLESPACE_NAME(+)
ORDER BY (A.ALL_TOTAL - A.ALL_USED) / A.ALL_TOTAL,F. FREE / A.TOTAL ASC ;
# 检查系统中排行前10的等待事件 ,包括空闲等待事件
select * from (select sid,event,p1,p2,p3,p1text,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where
event not like 'SQL%' and event not like 'rdbms%' order by wait_time desc) where rownum <=10;
TOP SQL
# 逻辑读 TOP 10
select *
from (select sqt.logicr logical_Reads,
sqt.exec Executions,
decode(sqt.exec, 0, to_number(null), (sqt.logicr / sqt.exec)) Reads_per_Exec ,
(100 * sqt.logicr) /
(SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID =7634
AND E.SNAP_ID =7637
AND B.DBID = 3629726729
AND E.DBID = 3629726729
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'session logical reads'
and b.stat_name = 'session logical reads') Total_rate,
nvl((sqt.cput / 1000000), to_number(null)) CPU_Time_s,
nvl((sqt.elap / 1000000), to_number(null)) Elapsed_Time_s,
sqt.sql_id,
decode(sqt.module, null, null, 'Module: ' || sqt.module) SQL_Module,
nvl(st.sql_text, to_clob('** SQL Text Not Available **')) SQL_Text
from (select sql_id,
max(module) module,
sum(buffer_gets_delta) logicr,
sum(executions_delta) exec,
sum(cpu_time_delta) cput,
sum(elapsed_time_delta) elap
from dba_hist_sqlstat
where dbid = 3629726729
and instance_number = 1
and 7634 < snap_id
and snap_id <= 7637
group by sql_id) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and st.dbid(+) = 3629726729
and (SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID =7634
AND E.SNAP_ID =7637
AND B.DBID = 3629726729
AND E.DBID = 3629726729
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'session logical reads'
and b.stat_name = 'session logical reads') > 0
order by nvl(sqt.logicr, -1) desc, sqt.sql_id)
where rownum < 65and(rownum <= 10
or Total_rate > 1);
# 物理读 TOP 10
select *
from (select sqt.dskr Physical_Reads,
sqt.exec Executions,
decode(sqt.exec, 0, to_number(null), (sqt.dskr / sqt.exec)) Reads_per_Exec ,
(100 * sqt.dskr) /
(SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = $P{p_beg_snap}
AND E.SNAP_ID = $P{p_end_snap}
AND B.DBID = 1273705906
AND E.DBID = 1273705906
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'physical reads'
and b.stat_name = 'physical reads') Total_rate,
nvl((sqt.cput / 1000000), to_number(null)) CPU_Time_s,
nvl((sqt.elap / 1000000), to_number(null)) Elapsed_Time_s,
sqt.sql_id,
decode(sqt.module, null, null, 'Module: ' || sqt.module) SQL_Module,
nvl(st.sql_text, to_clob('** SQL Text Not Available **')) SQL_Text
from (select sql_id,
max(module) module,
sum(disk_reads_delta) dskr,
sum(executions_delta) exec,
sum(cpu_time_delta) cput,
sum(elapsed_time_delta) elap
from dba_hist_sqlstat
where dbid = 1273705906
and instance_number = 1
and $P{p_beg_snap} < snap_id
and snap_id <= $P{p_end_snap}
group by sql_id) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and st.dbid(+) = 1273705906
and (SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = $P{p_beg_snap}
AND E.SNAP_ID = $P{p_end_snap}
AND B.DBID = 1273705906
AND E.DBID = 1273705906
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'physical reads'
and b.stat_name = 'physical reads') > 0
order by nvl(sqt.dskr, -1) desc, sqt.sql_id)
where rownum < 65and(rownum <= 10
or Total_rate > 1);
# 消耗CPU TOP 10
select *
from (select nvl((sqt.elap / 1000000), to_number(null)) Elapsed_Time_s,
nvl((sqt.cput / 1000000), to_number(null)) CPU_Time_s,
sqt.exec Executions,
decode(sqt.exec,
0,
to_number(null),
(sqt.elap / sqt.exec / 1000000)) Elap_per_Exec_s,
(100 *
(sqt.elap / (SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = 7396
AND E.SNAP_ID = 7399
AND B.DBID = 1273705906
AND E.DBID = 1273705906
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'DB time'
and b.stat_name = 'DB time')))/1000 Total_DB_Time_rate,
sqt.sql_id,
to_clob(decode(sqt.module,
null,
null,
'Module: ' || sqt.module)) SQL_Module,
nvl(st.sql_text, to_clob(' ** SQL Text Not Available ** ')) SQL_Text
from (select sql_id,
max(module) module,
sum(elapsed_time_delta) elap,
sum(cpu_time_delta) cput,
sum(executions_delta) exec
from dba_hist_sqlstat
where dbid = 65972167
and instance_number = 1
and 7396 < snap_id
and snap_id <= 7399
group by sql_id) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and st.dbid(+) = 1273705906
order by nvl(sqt.cput, -1) desc, sqt.sql_id)
where rownum < 65
and (rownum <= 10 or Total_DB_Time_rate > 1);
# 执行时间 TOP 10
select *
from (select nvl((sqt.elap / 1000000), to_number(null)) Elapsed_Time_s,
nvl((sqt.cput / 1000000), to_number(null)) CPU_Time_s,
sqt.exec Executions,
decode(sqt.exec,
0,
to_number(null),
(sqt.elap / sqt.exec / 1000000)) Elap_per_Exec_s,
(100 *
(sqt.elap / (SELECT sum(e.VALUE) - sum(b.value)
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = $P{p_beg_snap}
AND E.SNAP_ID = $P{p_end_snap}
AND B.DBID = 1273705906
AND E.DBID = 1273705906
AND B.INSTANCE_NUMBER = 1
AND E.INSTANCE_NUMBER = 1
and e.STAT_NAME = 'DB time'
and b.stat_name = 'DB time')))/1000 Total_DB_Time_rate,
sqt.sql_id,
to_clob(decode(sqt.module,
null,
null,
'Module: ' || sqt.module)) SQL_Module,
nvl(st.sql_text, to_clob(' ** SQL Text Not Available ** ')) SQL_Text
from (select sql_id,
max(module) module,
sum(elapsed_time_delta) elap,
sum(cpu_time_delta) cput,
sum(executions_delta) exec
from dba_hist_sqlstat
where dbid = 1273705906
and instance_number = 1
and $P{p_beg_snap} < snap_id
and snap_id <= $P{p_end_snap}
group by sql_id) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and st.dbid(+) = 1273705906
order by nvl(sqt.elap, -1) desc, sqt.sql_id)
where rownum < 65
and (rownum <= 10 or Total_DB_Time_rate > 1);
#查看等待事件的详细情况
create or replace procedure WaitHistogram(pFilter varchar2)
is
vTotalWaitCount integer;
cursor rec_cur is
select rpad(substr(event,1,40),42) event,
lpad(to_char(wait_time_MILLI,999999999.99),13) wtm,
lpad(to_char(wait_count,9999999999.99),13) wct,
100*(sum(wait_count) over(order by event,wait_time_milli)) pct_rt
from v$event_histogram where event=pFilter
order by 1,2;
c_event varchar2(100);
c_wtm varchar2(100);
c_wct varchar2(100);
c_pct_rt number(20,2);
begin
select sum(wait_count) into vTotalWaitCount from v$event_histogram where event=pFilter;
dbms_output.enable(800000);
dbms_output.put_line(rpad('event',45)||'Wait time Wait count Pct_rt');
open rec_cur;
fetch rec_cur into c_event,c_wtm,c_wct,c_pct_rt;
while rec_cur%found loop
dbms_output.put_line(c_event||' '||c_wtm||' '||c_wct||' '||to_char((c_pct_rt/vTotalWaitCount),0999.99));
fetch rec_cur into c_event,c_wtm,c_wct,c_pct_rt;
end loop;
close rec_cur;
end ;
/
exec WaitHistogram(pfilter=>'gc buffer busy');
感谢$无为公子、萧雨、惜分飞的帮助
参考至:http://mlxia.iteye.com/blog/741227
http://blog.csdn.net/soulcq/article/details/5418085
http://www.dbtan.com/2010/05/latch-free.html
http://www.2cto.com/database/201107/96826.html
http://blog.csdn.net/robinson1988/article/details/4793962
http://blog.csdn.net/tianlesoftware/article/details/5263238
http://www.laoxiong.net/dbms_stats_and_analyze_and_global_statistics.html
http://www.laoxiong.net/wp-content/uploads/2008/12/sosi.sql
http://www.cnblogs.com/caizhimin816/archive/2012/12/21/2827375.html
http://oracledoug.com/px.pdf
http://www.linuxeden.com/html/database/20111127/117134.html
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1019722.6
http://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel006.htm#VLDBG1513
本文原创,转载请注明出处,作者
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
10.7.5 CHM的管理与维护 10.7.6 CHM与OSWatcher对比 10.8本章小结 第11章 最高可用性 11.1最高可用性架构 11.1.1 Data Guard优势 11.1.2客户端Failover 11.1.3 Data Guard配置 11.1.4 Standby数据库 11.1.5...
6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14...
第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/...
1)、检查数据库是否处于归档状态 SQL> archive log list; SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; ...... 日常管理及维护: 一、 dataguard 启动...
Oracle 主要配置文件介绍: profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件 <br>1.2 Oracle 主要配置文件介绍 1.2.1 /etc/profile 文件...
首页 / 我的课程 / 数据库系统管理与维护(Oracle) / 常规 / 第一次作业 / 回顾第 1 次试答 第一次作业 题目1 还未回答 满分1.00 题干 创建数据库时需要多少个控制文件?(A ) 请选择一个答案: a. 1个 b. 2个 c. ...
第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 ...
第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 4.2 PL/...
第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 4.2 PL/...
5.2.13 热备用数据库的维护 5.3 回顾 第6章 高级的失败切换方法 6.1 将 Oracle 并行服务器用于失败切换 6.2 并行服务器失败切换的优点 6.3 并行服务器失败切换的缺点 6.4 性能考虑 6.5 降低并行服务器失败...
SQL> archive log list; Automatic archival Enabled #自动归档 Archive destination USE_DB_RECOVERY_FILE_DEST #归档目录为指定的闪回恢复区 Oldest online log sequence 174 #最旧的在线日志序列 Next log ...
数据库状态及运行情况综合查看,使您了解ORACLE运行状况及空间、日志归档、数据文件等使用情况更直观,并可智能生成数据库热备份脚本和备份恢复方案,为您的数据库保驾护航,使您高枕无忧。 本系统可执行SQL分组语句后...
Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的...
数据管理员的验证方式 2-12 使用密码文件验证 2-13 SQL*PLUS 2-14 Oracle 企业管理器 2-15 Oracle 企业管理器结构:基于 JAVA 的控制台和应用程序 2-16 Oracle 企业管理器结构:管理节点 2-17 Oracle 企业管理器...
第5章至第9章是中级篇,专门讨论性能调整,包括性能优化原理、Oracle性能调整发展历程、AWR、ASH、ADDM、Auto SQL Tunning等最新的助手工具,并通过大量实例展示技术的综合应用。第10章至第13章是高级篇,主要面向...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...