ORACLE常用脚本
在进行系统维护时,最好把监控/优化步骤以及优化过程中用到的技巧和SQL语句形成文档,供系统维护使用。
1.1 用户基本信息监控
1. 目前有多少用户在使用,其系统信息、用户名、机器名、运行的程序、状态等:
select sid,serial#,username,machine, status from v$session;
2. 如何把一个进程从系统中清除:
Alter system kill session ‘sid,serial#’;
3. 如何查询到操作系统上相关的进程号:
Select spid from v$process where addr =
(select paddr from v$session where sid=&sid and serial#=&serial);
4. 了解用户的基本信息,包括:用户名、默认表空间、临时表空间、创建时间等
Select username,default_tablespace,temporary_tablespace from dba_users;
1.2 监控用户锁信息
1. 查看当前有哪些锁信息,包括:哪些用户加了锁信息,锁住了哪些对象
Select * from v$lock where type in (‘TM’,’TX’);
2. 查看某个用户锁住了哪些表:
Select object_id,object_name from dba_objects
where object_id in (select id2 from v$lock where sid=&sid and type in (‘TM’,’TX’));
3. 查看哪个用户为主加锁的用户:
select *from v$locked_object where object_id=&object_id;
4. 通过v$lock来查看主加锁的用户信息:
select * from v$lock where block !=0;
5. 查看等待他人锁释放的用户信息:
select sid,serial#,username from v$session where row_wait_obj# is not null;
说明:在v$session中如果一个用户正在等待其他用户锁的释放,那么该记录上的row_wait_obj#为非空。如果想要得到进一步的记录信息,那么可以通过v$session中的row_wait_file#,row_wait_block#,row_wait_row#的相应的信息得到记录的rowid,再进一步通过dbms_rowid来得到对应的实际的数据值。
6. 检测系统中谁在锁表
set echo on
column username format a13
column object_name format a20
column MACHINE format a10
select
a.sid,b.serial#,a.type,c.object_name,b.username,a.lmode,b.machine,d.spid
from
v$lock a,v$session b,all_objects c,v$process d
where
a.sid=b.sid
and a.type in ('TM','TX')
and c.object_id=a.id1
and b.paddr=d.addr
order by username
1.3 表空间管理
1. 目前系统由哪些表空间构成、相应的状态:
select tablesapce_name,pct_increase,status from dba_tablespaces ;
2. 表空间由哪些数据文件构成,每个数据文件的实际组成、大小、块数目多少,以及数据文件的状态:
select tablesapce_name,file_name,bytes,blocks,status
from dba_data_files order by tablespace_name;
3. 查看每个表空间的大小和块的数目的多少:
select tablespace_name,sum(bytes),sum(blocks)
from dba_data_files where status=’ AVAILABLE’ group by tablespace_name ;
4. 查看数据库表空间的剩余信息情况、以及最大、最小的连续空间的情况:
select tablespace_name,sum(bytes),count(block_id),max(blocks),min(blocks)
from dba_free_space group by tablespace_name;