一、常用的系统视图:
dba_objects:显示数据库中所有的对象,例如想查询数据库中有没有某个对象
v
s
e
s
s
i
o
n
s
:
显
示
会
话
的
具
体
信
息
,
如
执
行
的
s
q
l
语
句
、
主
库
名
、
当
前
会
话
状
态
、
用
户
名
等
等
v
sessions:显示会话的具体信息,如执行的 sql 语句、主库名、当前会话状态、用户名等等 v
sessions:显示会话的具体信息,如执行的sql语句、主库名、当前会话状态、用户名等等vlock:查看当前数据库中锁的信息
v
m
e
m
p
o
o
l
:
显
示
所
有
的
内
存
池
信
息
V
mem_pool:显示所有的内存池信息 V
mempool:显示所有的内存池信息Vdeadlock_histor::记录死锁的历史信息
V
T
A
B
L
E
S
P
A
C
E
:
显
示
表
空
间
信
息
,
不
包
括
回
滚
表
空
间
信
息
V
TABLESPACE:显示表空间信息,不包括回滚表空间信息 V
TABLESPACE:显示表空间信息,不包括回滚表空间信息VTRX:显示所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。
二、常用查询语句
1、查询数据库在线实例信息
select distinct NAME, HOST_NAME, SVR_VERSION, DB_VERSION, START_TIME, STATUS
,
M
O
D
E
, MODE
,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
,
A
R
C
H
M
O
D
E
,
T
O
T
A
L
S
I
Z
E
f
r
o
m
S
Y
S
.
V
,ARCH_MODE, TOTAL_SIZE from SYS.V
,ARCHMODE,TOTALSIZEfromSYS.VDATABASE;
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_SIZE16/1024 总大小,
D.FREE_SIZE16/1024 空闲大小,
TRUNC((TRUNC(D.TOTAL_SIZE-D.FREE_SIZE, 4)/D.TOTAL_SIZE)*100, 2) 使用率
FROM V
T
A
B
L
E
S
P
A
C
E
T
,
V
TABLESPACE T, V
TABLESPACET,VDATAFILE 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
D
M
A
R
C
H
I
N
I
;
s
e
l
e
c
t
A
R
C
H
N
A
M
E
,
A
R
C
H
T
Y
P
E
,
A
R
C
H
D
E
S
T
,
A
R
C
H
F
I
L
E
S
I
Z
E
,
A
R
C
H
S
P
A
C
E
L
I
M
I
T
,
A
R
C
H
T
I
M
E
R
N
A
M
E
,
A
R
C
H
I
S
V
A
L
I
D
f
r
o
m
S
Y
S
.
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
DMARCHINI;selectARCHNAME,ARCHTYPE,ARCHDEST,ARCHFILESIZE,ARCHSPACELIMIT,ARCHTIMERNAME,ARCHISVALIDfromSYS.VDM_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
S
E
S
S
I
O
N
S
A
,
S
Y
S
.
V
SESSIONS A,SYS.V
SESSIONSA,SYS.VCONNECT B where A.Sess_id= B.SADDR ORDER BY SF_GET_EP_SEQNO(A.rowid),A.Sess_id;
13、查询会话数量
(1)当前活动会话数:
select COUNT() FROM V
S
E
S
S
I
O
N
S
W
H
E
R
E
S
T
A
T
E
=
′
A
C
T
I
V
E
′
;
(
2
)
当
前
总
会
话
数
:
s
e
l
e
c
t
C
O
U
N
T
(
∗
)
F
R
O
M
V
SESSIONS WHERE STATE='ACTIVE'; (2)当前总会话数: select COUNT(*) FROM V
SESSIONSWHERESTATE=′ACTIVE′;(2)当前总会话数:selectCOUNT(∗)FROMVSESSIONS;
(3)可用会话数=系统允许最大并发会话数-数据库当前会话数;
select PARA_VALUE-(SELECT COUNT() FROM V
S
E
S
S
I
O
N
S
)
F
R
O
M
V
SESSIONS) FROM V
SESSIONS)FROMVDM_INI WHERE PARA_NAME=‘MAX_SESSIONS’;
(4)会话使用率:
select (SELECT COUNT(*) FROM V
S
E
S
S
I
O
N
S
)
/
P
A
R
A
V
A
L
U
E
∗
100
∣
∣
′
SESSIONS)/PARA_VALUE * 100||'%' FROM V
SESSIONS)/PARAVALUE∗100∣∣′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
R
U
N
T
I
M
E
E
R
R
H
I
S
T
O
R
Y
A
,
S
Y
S
.
V
RUNTIME_ERR_HISTORY A, SYS.V
RUNTIMEERRHISTORYA,SYS.VSESSION_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
L
O
C
K
L
,
D
B
A
O
B
J
E
C
T
S
O
,
V
LOCK L,DBA_OBJECTS O,V
LOCKL,DBAOBJECTSO,VSESSIONS 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);