本篇文章给出Oracle数据库运维时常用的查询语句:
1. 查询数据库的参数与属性:
SELECT * FROM database_properties; SELECT * FROM v$version;
SELECT sid, serial# FROM v$session WHERE audsid=sys_context('USERENV','SESSIONID');
SELECT p.spid "OS Thread" , b.name "Name User" , s.program , s.sid , s.serial# , s.osuser , s.machine FROM v$process p, v$session s, v$bgprocess b WHERE p.addr=s.paddr AND p.addr =b.paddr AND (s.sid = &1 OR p.spid= &1) UNION ALL SELECT p.spid "OS Thread" , s.username "Name User" , s.program , s.sid , s.serial# , s.osuser , s.machine FROM v$process p, v$session s WHERE p.addr=s.paddr AND (s.sid = &1 OR p.spid= &1) AND s.username IS NOT NULL;
SELECT /*+ PUSH_SUBQ */ command_type , sql_text , sharable_mem , persistent_mem , runtime_mem , sorts , version_count , loaded_version , 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$sqlarea WHERE address= (SELECT sql_address FROM v$session WHERE sid=&sid );
SELECT p.spid , s.sid , s.serial# , s.username , a.type , s.osuser , a.owner , a.object , DECODE(SIGN(48-command),1,TO_CHAR(command),'Action Code #' ||TO_CHAR(command)) Action , p.program , s.terminal , s.program , s.status FROM v$session s, v$access a, v$process p WHERE s.paddr=p.addr AND s.type ='USER' AND a.sid =s.sid --and a.object='&obj' ORDER BY s.username, s.osuser;
SELECT s.osuser , DECODE(SIGN(48-command),1,TO_CHAR(command),'Action Code #' ||TO_CHAR(command)) Action , p.program "oracle process" , status "session status" , s.terminal , s.program , s.username , s.fixed_table_sequence "Activity Meter" , '' Query , 0 Memory , 0 "Max Memory" , 0 "CPU Usage" , s.sid , s.serial# FROM v$session s, v$process p WHERE s.paddr=p.addr AND s.type ='USER' ORDER BY s.username, s.osuser;
SELECT s.schemaname "Schema Name" , DECODE(SIGN(48-command),1,'Action Code #' ||TO_CHAR(command)) Action , status "Session Status" , s.osuser "OS User Name" , s.sid , p.spid , s.serial# , NVL(s.username,'[Oracle Process]') "User Name" , s.terminal , s.program , st.value "Criteria Value" FROM v$sesstat st, v$session 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 AND s.schemaname ='DM_DWH' ORDER BY st.value DESC, p.spid ASC, s.username ASC, s.osuser ASC;
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 enqueu 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,'Exlusive') LOCK_MODE , o.owner , ls.sid , ls.serial# , ls.id1 , ls.id2 FROM dba_objects o, (SELECT s.osuser, s.username, l.type, l.lmode, s.sid, s.serial#, l.id1, l.id2 FROM v$session s, v$lock l WHERE s.sid=l.sid ) ls;