Oracle DB运维常用的SQL语句

  1. List item

本文介绍一些Oracle DB日常运维最常用到(使用频率很高)的SQL语句。

1、查看表空间的名称及大小

select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;

2、查看表空间物理文件的名称及大小

select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

3、查看回滚段名称及大小

select segment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtent
From dba_rollback_segs r, v$rollstat v
Where r.segment_id = v.usn(+)
order by segment_name;

4、查看控制文件

select name from v$controlfile;

5、查看日志文件

select member from v$logfile;

6、查看表空间的使用情况

col tablespace_name for a30 ;
set pages 20000;
comp sum of “Total_GB” “Used_GB”
“Free_GB” on report
set lines 200;
break on report
select b.TablespaceName “Tablespace_name”,round(sum(b.UsedByte) / 1024/1024/1024) “Total_GB”,
round((sum(b.UsedByte)-sum(a.FreeByte))/ 1024/1024/1024) “Used_GB”,
round(sum(a.FreeByte) / 1024/1024/1024) “Free_GB”,
round(sum(b.ExtensibleByte) / 1024/1024/1024) “Extend_GB”,
round(sum(a.FreeByte + b.ExtensibleByte) * 100 / sum(b.UsedByte + b.ExtensibleByte), 2) “Free(%)”,
sum(a.Extend) TotalExtends
from (select sum(bytes) FreeByte,
count() Extend,file_id FileID,tablespace_name TablespaceName
from dba_free_space
group by file_id,tablespace_name
union all
select sum(bytes_free) FreeByte,
count(
) Extend,file_id FileID,
tablespace_name TablespaceName
from v$temp_space_header
group by file_id,
tablespace_name) a,(select decode(autoextensible, ‘YES’,
decode(sign(maxbytes - bytes), 1, maxbytes

  • bytes, 0), 0) ExtensibleByte,
    bytes UsedByte,
    file_id FileID,
    tablespace_name TablespaceName
    from dba_data_files
    union all
    select decode(autoextensible, ‘YES’,
    decode(sign(maxbytes - bytes), 1, maxbytes
  • bytes, 0), 0) ExtensibleByte,
    bytes UsedByte,
    file_id FileID,
    tablespace_name TablespaceName
    from dba_temp_files) b
    where b.FileID = a.FileID(+) and
    b.TablespaceName= a.TablespaceName(+)
    group by b.TablespaceName
    order by b.TablespaceName;
    或者,以下语句更简洁一点:
    SELECT
    df.tablespace_name AS “Tablespace”,
    totalusedspace AS “Used MB”,
    (df.totalspace - tu.totalusedspace) AS “Free MB”,
    df.totalspace AS “Total MB”,
    ROUND(100 * (totalusedspace / totalspace)) AS “% Used”
    FROM
    (SELECT
    tablespace_name,
    ROUND(SUM(bytes) / 1048576) TotalSpace
    FROM
    dba_data_files
    GROUP BY
    tablespace_name) df,
    (SELECT
    ROUND(SUM(bytes)/(1024*1024)) totalusedspace,
    tablespace_name
    FROM
    dba_segments
    GROUP BY
    tablespace_name) tu
    WHERE
    df.tablespace_name = tu.tablespace_name;

7、查看数据库库对象

select owner, object_type, status, count(*)
count# from all_objects group by owner, object_type, status;

8、查看数据库的版本

Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)=‘Oracle’;

9、查看数据库的创建日期和归档方式

Select Created, Log_Mode From V$Database;

10、捕捉执行很久的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 s e s s i o n l o n g o p s , v session_longops , v sessionlongops,vsql
where time_remaining <> 0
and sql_address = address and sql_hash_value = hash_value ;

11,查看数据表分区的参数信息

SELECT partition_name, high_value, high_value_length, tablespace_name,pct_free, pct_used, ini_trans, max_trans, initial_extent,next_extent, min_extent, max_extent, pct_increase, FREELISTS,
freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,empty_blocks, avg_space, chain_cnt,
avg_row_len, sample_size,last_analyzed
FROM dba_tab_partitions
WHERE table_name = &table_name AND table_owner = &table_owner
ORDER BY partition_position ;

12,查看还没提交的事务

select * from v l o c k e d o b j e c t ; s e l e c t ∗ f r o m v locked_object; select * from v lockedobject;selectfromvtransaction;

13,查找object为哪些进程所用

select p.spid,s.sid,s.serial# serial_num,
s.username user_name,a.type object_type,s.osuser os_user_name,a.owner,a.object object_name,
decode(sign(48 - command),1,to_char(command), ‘Action Code #’ || to_char(command) ) action,
p.program oracle_process,s.terminal terminal,s.program program,s.status session_status
from v s e s s i o n s , v session s, v sessions,vaccess a, v$process p
where s.paddr = p.addr and s.type = ‘USER’ and a.sid = s.sid and a.object=‘SUBSCRIBER_ATTR’
order by s.username, s.osuser;

14,回滚段查看

select rownum, sys.dba_rollback_segs.segment_name Name, v r o l l s t a t . e x t e n t s E x t e n t s , v rollstat.extents Extents, v rollstat.extentsExtents,vrollstat.rssize Size_in_Bytes, v r o l l s t a t . x a c t s X A c t s , v rollstat.xacts XActs, v rollstat.xactsXActs,vrollstat.gets Gets, v r o l l s t a t . w a i t s W a i t s , v rollstat.waits Waits, v rollstat.waitsWaits,vrollstat.writes Writes,
sys.dba_rollback_segs.status status from v r o l l s t a t , s y s . d b a r o l l b a c k s e g s , v rollstat, sys.dba_rollback_segs, v rollstat,sys.dbarollbacksegs,vrollname
where v r o l l n a m e . n a m e ( + ) = s y s . d b a r o l l b a c k s e g s . s e g m e n t n a m e a n d v rollname.name(+) = sys.dba_rollback_segs.segment_name and v rollname.name(+)=sys.dbarollbacksegs.segmentnameandvrollstat.usn (+) = v$rollname.usn
order by rownum;

15,耗资源的进程(top session)

select s.schemaname schema_name, decode(sign(48 - command), 1, to_char(command), ‘Action Code #’ || to_char(command) ) action, status session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num, nvl(s.username, ‘[Oracle process]’) user_name, s.terminal terminal,
s.program program, st.value criteria_value from v s e s s t a t s t , v sesstat st, v sesstatst,vsession s , v$process p
where st.sid = s.sid and st.statistic# = to_number(‘38’) and (‘ALL’ = ‘ALL’ or s.status = ‘ALL’) and p.addr = s.paddr
order by st.value desc, p.spid asc, s.username asc, s.osuser asc;

16,查看锁(lock)情况

select /*+ RULE */ ls.osuser os_user_name, ls.username user_name, decode(ls.type, ‘RW’
, ‘Row wait enqueue lock’, ‘TM’, ‘DML enqueue lock’, ‘TX’, ‘Transaction enqueue lock’, ‘UL’
, ‘User supplied lock’) lock_type, o.object_name object, decode(ls.lmode, 1, null, 2, ‘Row Share’
, 3, ‘Row Exclusive’, 4, ‘Share’, 5, ‘Share Row Exclusive’, 6, ‘Exclusive’, null) lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2 from sys.dba_objects o, ( select s.osuser, s.username, l.type, l.lmode, s.sid, s.serial#, l.id1, l.id2 from v s e s s i o n s , v session s, v sessions,vlock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner <> ‘SYS’
order by o.owner, o.object_name;

17,查看等待(wait)情况

SELECT v w a i t s t a t . c l a s s , v waitstat.class, v waitstat.class,vwaitstat.count count, SUM(v s y s s t a t . v a l u e ) s u m v a l u e F R O M v sysstat.value) sum_value FROM v sysstat.value)sumvalueFROMvwaitstat, v s y s s t a t W H E R E v sysstat WHERE v sysstatWHEREvsysstat.name IN (‘db block gets’, ‘consistent gets’) group by
v w a i t s t a t . c l a s s , v waitstat.class, v waitstat.class,vwaitstat.count;

18,查看sga情况

SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC;

19,有关connection的相关信息

1)查看有哪些用户连接
select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command),
‘Action Code #’ || to_char(command) ) action,p.program oracle_process, status session_status, s.terminal terminal, s.program program, s.username user_name, s.fixed_table_sequence activity_meter, ‘’ query, 0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num
from v s e s s i o n s , v session s, v sessions,vprocess p where s.paddr=p.addr and s.type = ‘USER’
order by s.username, s.osuser;
2)根据v.sid查看对应连接的资源占用等情况
select n.name, v.value, n.class,n.statistic#
from v s t a t n a m e n , v statname n, v statnamen,vsesstat v
where v.sid = 71 and v.statistic# = n.statistic#
order by n.class, n.statistic#;
3)根据sid查看对应连接正在运行的sql
select /*+ PUSH_SUBQ */command_type, sql_text, sharable_mem, persistent_mem, runtime_mem,
sorts, version_count, loaded_versions, open_versions, users_opening, executions, users_executing, loads, first_load_time, invalidations, parse_calls, disk_reads, buffer_gets, rows_processed,sysdate start_time,sysdate finish_time,‘>’ || address sql_address,‘N’ status from v s q l a r e a w h e r e a d d r e s s = ( s e l e c t s q l a d d r e s s f r o m v sqlareawhere address = (select sql_address from v sqlareawhereaddress=(selectsqladdressfromvsession where sid = 71);

20,查询有哪些数据库实例在运行

select inst_name from v$active_instances;
//取得服务器的IP 地址
select utl_inaddr.get_host_address from dual
//取得客户端的IP地址
select sys_context(‘userenv’,‘host’),sys_context(‘userenv’,‘ip_address’) from dual;
备注:以上语句中有的比较复杂,但本人一一测试过,效果很好,结果可读性好,大家无须记忆,收藏即可,用到的时候可以即取即用,可以收到事倍功半的效果。也可以导出AWR报告查看以上相关的绝大部分数据。

本篇结束。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值