oracle常用维护SQL

1.----查某session当前正在执行的sql
SQL>select s.sid,sql_text from v$session s,v$sql q
where s.SQL_ADDRESS=q.address and s.sql_hash_value=q.hash_value
and s.sid in (45,48,107)  and s.serial# in (53098,54004,44803);

SQL>
select p.spid,sql_text from v$sqlarea v,v$session s,v$process p
where v.HASH_VALUE=s.sql_HASH_VALUE and v.address=s.sql_address
and p.addr=s.paddr and p.spid in (29638,29716,28453,28693);

2.--查事件
SQL>select event,p1text from v$session_wait
where sid in (45,48,107) and seq# in (53098,54004,44803);

SQL>select * from v$session_event where sid=14

---查索引定义
SQL>select * from user_ind_columns where index_name=upper('&index_name');

--重建索引

SQL>ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME>

--表分析
analyze table slview.flowraw compute statistics for all indexes;

--索引提示
SELECT * FROM A WHERE COL1 = XXX;

---查看某表的约束条件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
 from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;

--查表空间大小
SELECT upper(f.tablespace_name) "表空间名",d.Tot_grootte_Mb "表空间大小(M)",d.Tot_grootte_Mb - f.total_bytes "已使用空间(M)", 
to_char(round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100,2),'990.99') "使用比",f.total_bytes "空闲空间(M)", f.max_bytes "最大块(M)"  
FROM 
(SELECT tablespace_name,  round(SUM(bytes)/(1024*1024),2) total_bytes,round(MAX(bytes)/(1024*1024),2) max_bytes  FROM sys.dba_free_space 
GROUP BY tablespace_name) f,  
(SELECT dd.tablespace_name, round(SUM(dd.bytes)/(1024*1024),2) Tot_grootte_Mb  FROM  sys.dba_data_files dd GROUP BY dd.tablespace_name) d
WHERE d.tablespace_name = f.tablespace_name  ORDER BY 4 DESC;

---查数据库锁表的session
select o.object_name, l.session_id, s.serial#, s.program,
 s.username, s.command,   s.machine, s.lockwait   from v$locked_object l, all_objects o, v$session s
  where o.object_id = l.object_id   and s.sid = l.session_id ;

alter system kill session '23,234';

----查oracle的job
select job, what, next_date, interval, failures, broken from user_jobs;
exec dbms_job.run(5);

-----查表空间各表大小
select segment_name, bytes
from user_segments
where segment_type = 'TABLE';
或者
   Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name
where tablespace_name='USER';


存储函数和过程

查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';

查看函数和过程的源代码
SQL>select text from all_source where owner=user and name=upper('&plsql_name');

查补丁
$ cd $ORACLE_HOME/OPatch
$ ./opatch lsinventory

原文地址:https://www.cnblogs.com/itfriend/p/1866864.html