常用的数据库优化信息查询
##常用的数据库优化信息查询
###数据库锁表处理
#####查询锁表情况:
SELECT object_name,machine,s.sid,s.serial#
FROM gv$locked_object l,dba_objects o,gv$session s
WHERE l.object_id=o.object_id AND l.session_id=s.sid;
或者:
select object_id,session_id,locked_mode from v$locked_object;
参数:locked_mode :
ORACLE里锁有以下几种模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表锁,sub share
3:Row-X 行独占(RX):用于行的修改,sub exclusive
4:Share 共享锁(S):阻止其他DML操作,share
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive
6:exclusive 独占(X):独立访问使用,exclusive
#####杀死进程
alter system kill session 'sid,serial#'
###查看归档日志
#####查看归档日志使用情况
select * from v$flash_recovery_area_usage;
--如果超过90%随时有宕机的危险
#####删除归档日志
delete expired archivelog all;(全部删除)
delete archivelog until time 'sysdate - 1';(保留当天删除,删除之前所有)
也可以:$ORACLE_BASE/flash_recovery_area/你的实例名/archivelog/这个路径下,找到归档日志文件,把没用的删了
这个删除归档日志,最好还是由DBA进行操作,非专业人员还是不要瞎搞事情。查查使用情况就好了
###一些性能审计查询
#####查看数据库中表的空间占用情况:
select * from (select segment_name,bytes from dba_segments where owner = USER order by bytes desc ) where rownum <= 30
或者:
select a.* from(
select owner,segment_name,SEGMENT_TYPE, round(bytes/1024/1024/1024,2) all_size
from dba_segments
where SEGMENT_TYPE='TABLE'
order by all_size desc
) a where rownum <15;
占用空间情况 按大小排序
#####查看表空间使用:
select
b.tablespace_name "表空间",
b.bytes/1024/1024 "大小M",
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率"
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
and b.tablespace_name='SYSTEM'
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;
或者:
SELECT a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name
) b
WHERE a.tablespace_name = b.tablespace_name
#####查看最占空间的10个东东:
SELECT *
FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'SYSTEM'
GROUP BY SEGMENT_NAME
ORDER BY 2 DESC)
WHERE ROWNUM < 10;
#####sys_lob 的AUD$ 占用大小 数据块数目 【这个不知道干啥的,没用过】
SELECT A.TABLE_NAME,
A.COLUMN_NAME,
B.SEGMENT_NAME,
B.SEGMENT_TYPE,
B.TABLESPACE_NAME,
B.BYTES / 1024 / 1024,
B.BLOCKS,
B.EXTENTS
FROM USER_LOBS A, USER_SEGMENTS B
WHERE A.SEGMENT_NAME = B.SEGMENT_NAME
ORDER BY B.BYTES DESC;
#####查看Oracle的连接数
select count(*) from v$session;
#####查看Oracle的并发连接数
select count(*) from v$session where status='ACTIVE';
#####查询数据库允许的最大连接数:
select value from v$parameter where name = 'processes';
#####查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username;
20171104 整理 小杭
数据库:Oracle 版本不知道
本文来自博客园,作者:小-杭,转载请注明原文链接:https://www.cnblogs.com/xiaohangblog/articles/16296534.html
欢迎转载小杭的博客,记得关注点赞收藏哦 (#^.^#)