常用的数据库优化信息查询

##常用的数据库优化信息查询

###数据库锁表处理

#####查询锁表情况:

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 版本不知道


在这里插入图片描述

posted @ 2022-05-21 23:35  小-杭  阅读(15)  评论(0编辑  收藏  举报