dba_objects:显示数据库中所有的对象,例如想查询数据库中有没有某个对象 v$sessions:显示会话的具体信息,如执行的 sql 语句、主库名、当前会话状态、用户名等等 v$lock:查看当前数据库中锁的信息 v$mem_pool:显示所有的内存池信息 V$deadlock_histor::记录死锁的历史信息 V$TABLESPACE:显示表空间信息,不包括回滚表空间信息 V$TRX:显示所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。
1、查询数据库在线实例信息
select distinct NAME, HOST_NAME, SVR_VERSION, DB_VERSION, START_TIME, STATUS$, MODE$ from V$INSTANCE;
2、查看数据库常用参数值
select PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN('MEMORY_POOL','BUFFER','PORT_NUM','MAX_SESSIONS','MAX_SESSION_STATEMENT','INSTANCE_NAME','BAK_PATH','SYSTEM_PATH','ARCH_INI');
3、查询数据库初始化配置
select SF_GET_PAGE_SIZE() page_size, SF_GET_EXTENT_SIZE() extent_size, SF_GET_UNICODE_FLAG() unicode_flag, SF_GET_CASE_SENSITIVE_FLAG() case_sensitive_flag, SF_GET_SYSTEM_PATH() system_path;
4、查询数据库名称、数据库总大小、数据库是否启用归档
select NAME,STATUS$,ARCH_MODE, TOTAL_SIZE from SYS.V$DATABASE;
5、查询数据库连续运行时间
select (SYSDATE-START_TIME)*24 FROM V$INSTANCE;
6、查询数据库管理用户状态,默认表空间,是否存在被锁定
select D.USERNAME,A.CREATED,D.ACCOUNT_STATUS,D.DEFAULT_TABLESPACE,D.EXPIRY_DATE,D.LOCK_DATE FROM DBA_USERS D,ALL_USERS A;
7、查询当前数据库的日志分组情况
select GROUP_ID,FILE_ID,PATH,CLIENT_PATH,RLOG_SIZE FROM SYS.V$RLOGFILE;
8、查询表空间信息
select T.NAME 表空间名称, D.PATH 表空文件路径, T.TYPE$ 表空间类型, T.STATUS$ 表空间状态, T. FILE_NUM 包含的文件数, D.TOTAL_SIZE*16/1024 总大小, D.FREE_SIZE*16/1024 空闲大小, TRUNC((TRUNC(D.TOTAL_SIZE-D.FREE_SIZE, 4)/D.TOTAL_SIZE)*100, 2) 使用率 FROM V$TABLESPACE T, V$DATAFILE D WHERE "GROUP_ID"=T.ID;
9、查询数据表所分配的空间大小,辅助查询表用户使用情况
select OWNER,TABLESPACE_NAME,SEGMENT_TYPE,SEGMENT_NAME,BLOCKS,BYTES/1024/1024 FROM DBA_SEGMENTS ORDER BY OWNER,SEGMENT_NAME;
10、查询表索引状态,便于确认表索引是否可用
select I.TABLE_OWNER,I.TABLE_NAME,O.OBJECT_NAME,O.OBJECT_TYPE,O.STATUS FROM USER_INDEXES I,USER_OBJECTS O WHERE O.OBJECT_NAME=I.INDEX_NAME AND O.STATUS='INVALID';
11、查询数据库归档信息
select ARCH_TYPE,ARCH_DEST FROM V$DM_ARCH_INI; select ARCH_NAME, ARCH_TYPE, ARCH_DEST, ARCH_FILE_SIZE, ARCH_SPACE_LIMIT, ARCH_TIMER_NAME, ARCH_IS_VALID from SYS.V$DM_ARCH_INI;
12、查询会话信息
select A.SESS_ID,A.SQL_TEXT,A.STATE,A.N_USED_STMT,A.CURR_SCH, A.USER_NAME,A.TRX_ID,A.CREATE_TIME,A.CLNT_TYPE,A.TIME_ZONE,A.OSNAME,A.CONN_TYPE, B.PROTOCOL_TYPE,B.IP_ADDR FROM SYS.V$SESSIONS A,SYS.V$CONNECT B where A.Sess_id= B.SADDR ORDER BY SF_GET_EP_SEQNO(A.rowid),A.Sess_id;
13、查询会话数量
(1)当前活动会话数: select COUNT(*) FROM V$SESSIONS WHERE STATE='ACTIVE'; (2)当前总会话数: select COUNT(*) FROM V$SESSIONS; (3)可用会话数=系统允许最大并发会话数-数据库当前会话数; select PARA_VALUE-(SELECT COUNT(*) FROM V$SESSIONS) FROM V$DM_INI WHERE PARA_NAME='MAX_SESSIONS'; (4)会话使用率: select (SELECT COUNT(*) FROM V$SESSIONS)/PARA_VALUE * 100||'%' FROM V$DM_INI WHERE PARA_NAME='MAX_SESSIONS';
14、事务监控
select ID, STATUS,ISOLATION,READ_ONLY,SESS_ID,INS_CNT,DEL_CNT,UPD_CNT,UPD_INS_CNT,UREC_SEQNO,WAITING FROM SYS.V$TRX;
15、查询等待事件的具体信息
select THREAD_ID,TRX_ID,WAIT_CLASS,WAIT_OBJECT,WAIT_START,WAIT_TIME, SPACE_ID,FILE_ID,PAGE_NO FROM V$WAIT_HISTORY;
16、查询作业信息
select J.NAME,J.ENABLE,J.USERNAME,J.CREATETIME,S.DURING_START_DATE FROM SYSJOB.SYSJOBSCHEDULES S,SYSJOB.SYSJOBS J WHERE S.JOBID=J.ID;
17、查询数据库作业任务的执行历史
select NAME,STEPNAME,STATUS,ERRCODE,ERRINFO,CUR_TIME,RETRY_ATTEMPTS FROM SYSJOB.SYSJOBHISTORIES;
18、显示系统统计信息,查看数据库性能数据
select NAME,STAT_VAL FROM V$SYSSTAT WHERE NAME IN('logic read count','physical read count','physical write count');
19、查询缓冲区命中率信息
select NAME,N_PAGES,N_LOGIC_READS, N_PHY_READS ,RAT_HIT FROM V$BUFFERPOOL;
20、查询数据字典命中率
select USED_SIZE,TOTAL_SIZE,(USED_SIZE/TOTAL_SIZE)*100 as HIT FROM V$DICT_CACHE;
21、显示日志文件刷新的SLOT对象信息
select CKPT_RLOG_SIZE,CKPT_LSN,CKPT_INTERVAL,CKPT_FILE,LAST_BEGIN_TIME,LAST_BEGIN_TIME,(LAST_END_TIME-LAST_BEGIN_TIME)AS LAST_USED_TIME FROM V$CKPT;
22、显示执行SQL的历史记录信息
select SQL_ID,SESS_ID,SESS_SEQ,TRX_ID,TOP_SQL_TEXT,START_TIME,TIME_USED,N_LOGIC_READ,N_PHY_READ,HARD_PARSE_FLAG FROM V$SQL_HISTORY;
23、监控运行时错误
select DISTINCT A.SEQNO,A.SESS_ID,A.TRX_ID, A.SQL_TEXT,A.SU_FLAG,A.ECPT_CODE,A.ECPT_DESC,A.ERR_TIME,B.USER_NAME,B.CLNT_IP,B.APPNAME FROM SYS.V$RUNTIME_ERR_HISTORY A, SYS.V$SESSION_HISTORY B;
24、查询环境运行慢于5秒的SQL
select * from (SELECT sess_id,sql_text,datediff(ss,last_send_time,sysdate) ss,SF_GET_SESSION_SQL(SESS_ID) fullsql FROM V$SESSIONS WHERE STATE='ACTIVE' and sess_id <> sessid())where ss>=1; --ss>=1表示1秒及以上的慢SQL,可以替换成其他时间;
25、出现死锁的解决办法
select O.OBJECT_NAME ,S.SESS_ID,S.SQL_TEXT,L.ADDR,L.TRX_ID,L.LTYPE,L.LMODE,L.BLOCKED,L.TABLE_ID,L.ROW_IDXFROM V$LOCK L,DBA_OBJECTS O,V$SESSIONS S WHERE L.TABLE_ID=O.OBJECT_ID AND L.TRX_ID=S.TRX_ID AND L.BLOCKED=1; --清除阻塞SQL; SP_CLOSE_SESSION(上述查到的SESS_ID);