dba视图
select * from dba_data_files 指定表空间的数据文件及所在的路径
select * from dba_free_space 指定表空间的剩余空间
select * from dba_users 找出当前数据库实例中的所有用户
select * from dba_segments 找出当前数据库实例中的所有对象的物理信息如所占空间pctincrease等
select * from dba_tab_columns 指定所有表对应的列名
select * from dba_col_comments 指定所有列的注释信息
select * from dba_tablespaces 列出所有的表空间及相关信息
select * from dba_tab_partitions 所有表分区的信息
select * from dba_ind_columns 显示所有的被索引的列
select * from dba_indexes 显示所有的索引信息
select * from dba_jobs 显示所有的job信息
select * from dba_jobs_running 显示正在运行的job信息
v$视图
select * from v$session 显示当前所有的session信息
v$lock视图
反映内容该视图展示当前保持的锁信息
名称 类型 说明部分
********************************
ADDR RAW() //锁状态对象地址
KADDR RAW() //锁地址
SID NUMBER //保持锁的会话的会话标识符
TYPE VARCHAR() //锁类型 TM:dml排队TX:事务排队UL:用户提供
ID NUMBER //锁标示
ID NUMBER //锁标示
LMODE NUMBER //会话保持的锁的模式
REQUEST NUMBER //进程请求锁定时所处的模式
CTIME NUMBER //当前的锁模式所消耗的时间
BLOCK NUMBER //阻塞其他锁
解释代表无代表空(null)代表行(ss)代表行(sx)共享SS/行X(SSX)独占
通过这个视图你能初步了解锁的模式从而判断锁会出现的地方
v$PROCESS视图
放映内容包含有关当前活动进程的信息
SQL> desc v$process
名称 类型 说明部分
********************************
ADDR RAW() //进程对象状态地址
PID NUMBER //oracle进程标识符类似于序号
SPID VARCHAR() //操作系统进程标识符可以用来和操作系统进程联系
USERNAME VARCHAR() //操作系统进程用户名
SERIAL# NUMBER //进程序列号
TERMINAL VARCHAR() //操作系统终端标示符
PROGRAM VARCHAR() //进程中的程序
TRACEID VARCHAR() //跟蹤文件标识符
BACKGROUND VARCHAR() //表示后台进程null表示其它
LATCHWAIT VARCHAR() //进程正在等待锁的地址如果该值为n/a则锁地址为null
LATCHSPIN VARCHAR() //进程正在轮循的锁的地址如果该职位n/a则为地址nill
PGA_USED_MEM NUMBER //当前正在使用的pga内存
PGA_ALLOC_MEM NUMBER //当前已经分配的pga内存
PGA_FREEABLE_MEM NUMBER //可以释放的已分配的pga内存
PGA_MAX_MEM NUMBER //曾经需要的最大的最大pga内存
这个视图分很有用可以和操做系统联系这样用来诊断跟蹤顶级系统资源使用很有益处这里就可以有个案例经常用到的通过消耗资源做大的系统进程号的到执行的sql语句需要结合v$session视图一起来完成
v$session
反映内容列出连接到实例的会话这个视图有非常多的信息字段也比较多
SQL> desc v$session
名称 类型
SADDR RAW() session地址
SID NUMBER session标识符
SERIAL# NUMBER session会话序列号
AUDSID NUMBER 审计的会话id
PADDR RAW() 拥有该会话的oracle进程号和v$process联系
USER# NUMBER oracle用户
USERNAME VARCHAR() oracle用户名
COMMAND NUMBER 执行的命令
OWNERID NUMBER 会话的所有者
TADDR VARCHAR() 事务地址
LOCKWAIT VARCHAR() 锁等待地址null if none
STATUS VARCHAR() 会话的状态activeinactivekilledcachedsniped
SERVER VARCHAR() 服务的类型共享还是专用服务器
SCHEMA# NUMBER 用户标示模式
SCHEMANAME VARCHAR() 用户模式名称
OSUSER VARCHAR() 客户端操作系统名称
PROCESS VARCHAR() 操作系统客户端进程号
MACHINE VARCHAR() 操作系统机器名称
TERMINAL VARCHAR() 操作系统终端名
PROGRAM VARCHAR() 操作系统程序名
TYPE VARCHAR() session种类
SQL_ADDRESS RAW() 当前回话识别目前执行的sql语句的表示地址
SQL_HASH_VALUE NUMBER 和sql_address一起唯一标示一条执行的sql语句
SQL_ID VARCHAR() 目前被执行的sql语句的标识符
SQL_CHILD_NUMBER NUMBER 目前被执行的sql语句的子句数量
PREV_SQL_ADDR RAW() 与sql_hash_value一起标示上一条被执行的sql语句
PREV_HASH_VALUE NUMBER 与PREV_SQL_ADDR 一起表示上一条被执行的sql语句
PREV_SQL_ID VARCHAR() 前一条被执行的sql语句
PREV_CHILD_NUMBER NUMBER 上一条被执行的sql的子句数量
MODULE VARCHAR() 这个没太懂oracle文档上面的解释比较清楚
MODULE_HASH NUMBER 这是针对上面一个字段的hash value
ACTION VARCHAR() 当前 正在执行被DBMS_APPLICATION_INFOSET_ACTION procedure调用名称
ACTION_HASH NUMBER 针对上一字段name的hash value
CLIENT_INFO VARCHAR() 由APPLICATION_INFOSET_ACTION procedure设定的过程名
FIXED_TABLE_SEQUENCE NUMBER oracle文档有着详细的解释session活动增长记录最好再去看oracle文档
ROW_WAIT_OBJ# NUMBER 对象id对象是table包含行源数据在OW_WAIT_ROW#中的id标识符
ROW_WAIT_FILE# NUMBER 标示数据文件等待在OW_WAIT_ROW#中的row这些行包含在这些数据文件中
ROW_WAIT_BLOCK# NUMBER 表示数据块这些数据块中行源等待在OW_WAIT_ROW#中
ROW_WAIT_ROW# NUMBER 目前被锁定的行
LOGON_TIME DATE time of logon
LAST_CALL_ET NUMBER 当前session为active时 记录的是session是session编程active状态来的运行时间相反则为inactive的时间
PDML_ENABLED VARCHAR() 已经被PDML_STATUS字段所取代
FAILOVER_TYPE VARCHAR()
这是oracle文档对以上这个字段的解释
Indicates whether and to what extent transparent application failover
(TAF) is enabled for the session:
■ NONE Failover is disabled for this session
■ SESSION Client is able to fail over its session following a disconnect
■ SELECT Client is able to fail over queries in progress as well
See Also:
■ Oracle Database Concepts for more information on TAF
■ Oracle Database Net Services Administrators Guide for information on
configuring TAF
FAILOVER_METHOD VARCHAR()
oracle文档的解释
Indicates the transparent application failover method for the session:
■ NONE Failover is disabled for this session
■ BASIC Client itself reconnects following a disconnect
■ PRECONNECT Backup instance can support all connections from
every instance for which it is backed up
FAILED_OVER VARCHAR() //判定是否session已经处于失败状态yes或者no
RESOURCE_CONSUMER_GROUP VARCHAR() 当前session用户的源数据组
PDML_STATUS VARCHAR()
oracle的文档解释
If ENABLED the session is in a PARALLEL DML enabled mode If
DISABLED PARALLEL DML enabled mode is not supported for the
session If FORCED the session has been altered to force PARALLEL DML
PDDL_STATUS VARCHAR()
oracle文档解释
If ENABLED the session is in a PARALLEL DDL enabled mode If
DISABLED PARALLEL DDL enabled mode is not supported for the
session If FORCED the session has been altered to force PARALLEL DDL
PQ_STATUS VARCHAR()
oracle文档解释
If ENABLED the session is in a PARALLEL QUERY enabled mode If
DISABLED PARALLEL QUERY enabled mode is not supported for the
session If FORCED the session has been altered to force PARALLEL
QUERY
CURRENT_QUEUE_DURATION NUMBER if 则session已经在队列中if 则还未形成排队
CLIENT_IDENTIFIER VARCHAR() 客户端session标识符
BLOCKING_SESSION_STATUS VARCHAR()
oracle文档资料注解
Blocking session status:
■ VALID
■ NO HOLDER
■ GLOBAL
■ NOT IN WAIT
■ UNKNOWN
BLOCKING_INSTANCE NUMBER 模块化的实例标识符
BLOCKING_SESSION NUMBER 模块化的session标识符
SEQ# NUMBER 不唯一的标示每个等待的序列号
EVENT# NUMBER 事件数量
EVENT VARCHAR() oracle的session正在等待的数据或者事件
PTEXT VARCHAR() 首个附加参数的描述
P NUMBER 首个附加参数
PRAW RAW() 首个附加参数和前一个区别我还不是很懂
PTEXT VARCHAR() 第二个附加参数的描述
P NUMBER 第二个附加参数
PRAW RAW() 第二个附加参数
PTEXT VARCHAR() 第三个附加参数的描述
P NUMBER 第三个附加参数
PRAW RAW() 第三个附加参数
WAIT_CLASS_ID NUMBER 标记等待事件种类
WAIT_CLASS# NUMBER 等待事件的种类
WAIT_CLASS VARCHAR() 等待事件的名称
WAIT_TIME NUMBER 非代表上一次session上次等待时间代表session当前正在等待
SECONDS_IN_WAIT NUMBER
oracle文档的资料
If WAIT_TIME = then SECONDS_IN_WAIT is the seconds spent in the
current wait condition If WAIT_TIME > then SECONDS_IN_WAIT is the
seconds since the start of the last wait and SECONDS_IN_WAIT WAIT_
TIME / is the active seconds since the last wait ended
STATE VARCHAR()
oracle资料文档
Wait state:
■ WAITING (the session is currently waiting)
■ WAITED UNKNOWN TIME (duration of last wait is unknown)
■ WAITED SHORT TIME (last wait </th of a second)
■ > WAITED KNOWN TIME (WAIT_TIME = duration of last wait)
SERVICE_NAME VARCHAR() session的服务名称
SQL_TRACE VARCHAR() 标示sql是否能被跟蹤
SQL_TRACE_WAITS VARCHAR() 标记是否等待事件被跟蹤
SQL_TRACE_BINDS VARCHAR() 标记是否绑定跟蹤可用与否
v$SQL
反映内容包括查询游标等级的详细信息可以用来找到负责解析游标的会话或者人同样也有着繁多的信息字段我下面只拿出一些常用的关键的列
SQL> desc v$sql;
名称 类型
SQL_TEXT VARCHAR() sql语句的前千个字符
SQL_FULLTEXT CLOB sql语句的全部分作为一个clob字段
SQL_ID VARCHAR() sql与在liberary cache中的parent cursor的标识符
SHARABLE_MEM NUMBER 被子cursor所使用的共享内存的和bytes
PERSISTENT_MEM NUMBER 整个生命周期child cursor所使用的固定内存的大小bytes
USERS_OPENING NUMBER
FETCHES NUMBER 这条sql语句返回的数据行数量
EXECUTIONS NUMBER library cache中这条sql语句被执行的次数
USERS_EXECUTING NUMBER 执行这条sql语句的用户的数量
LOADS NUMBER sql或者object被装载load或者被reloaded次数
FIRST_LOAD_TIME VARCHAR() parent cursor创建的时间
INVALIDATIONS NUMBER this child cursor 曾经无效的数量
PARSE_CALLS NUMBER 做语法分析调用child cursor的次数
DISK_READS NUMBER 直接做磁盘读取的次数
DIRECT_WRITES NUMBER 直接做磁盘写的次数
BUFFER_GETS NUMBER 逻辑读次数
APPLICATION_WAIT_TIME NUMBER 应用等待时间 单位微秒
CLUSTER_WAIT_TIME NUMBER 集群等待时间 单位微妙
USER_IO_WAIT_TIME NUMBER 用户由于I/O造成等待时间
PLSQL_EXEC_TIME NUMBER plsql程序执行时间 单位微秒
ROWS_PROCESSED NUMBER 通过语法分析的sql返回的数据总行数
OPTIMIZER_MODE VARCHAR() 优化器选择方式
OPTIMIZER_COST NUMBER 采用上面指定优化器所要花费的代价
HASH_VALUE NUMBER Hash value of the parent statement in the library cache
SERVICE VARCHAR() 服务名能够知道是oracle用户进程做得还是oracle后台进程
CPU_TIME NUMBER CPU time (in microseconds) used by this cursor for parsing executingand fetching
ELAPSED_TIME NUMBER 用在解析分析取回返回数据所使用的总的时间
REMOTE VARCHAR() 是否是远程调用
LAST_LOAD_TIME VARCHAR() 上次加载时间
CHILD_LATCH NUMBER 受保护的子闩锁数量
LAST_ACTIVE_TIME DATE 上次活动时间
BIND_DATA RAW() 绑定数据
这个视图你能很容易的得到造成过多的解析物理读物理写逻辑读等待sql语句对于查找低效率sql语句很方便
v$event_name
反映内容所有等待事件以及相关参数(pp的定义)没有全部写出来只写了最重要的字段
SQL> desc v$event_name
名称 类型
EVENT# NUMBER 该事件的引用编号
EVENT_ID NUMBER 该事件的标识符
NAME VARCHAR() oracle针对次事件的名称
PARAMETER VARCHAR() P信息的描述
PARAMETER VARCHAR() P信息的描述
PARAMETER VARCHAR() P信息的描述
V$session_event
反映的内容最近的所有等待事件的统计信息
SQL> desc v$session_event
名称 类型
SID NUMBER 标识符
EVENT VARCHAR() 该事件的名称
TOTAL_WAITS NUMBER 该会话总的等待次数
TOTAL_TIMEOUTS NUMBER 该会话在等待事件期间遇到的超时次数
TIME_WAITED NUMBER 该会话等待该事件所消耗的总时间单位秒
AVERAGE_WAIT NUMBER 该会话等待该事件所消耗平均等待时间秒
MAX_WAIT NUMBER 进程必须等待该事件的最大时间总值单位秒
EVENT_ID NUMBER 等待事件的唯一标识符对应V$event_name表
通过这个动态性能视图你应该很容易了解到最近常常发生的等待事件的大体情况
v$session_wait
反映的内容提供了当前会话的当前等待事件的详细信息
SQL> desc v$session_wait
名称 是否为空? 类型
SID NUMBER 唯一表示符
SEQ# NUMBER 等待次序的计数器进程每开始一次新的等待就就增加
EVENT VARCHAR() Resource or event for which the session is waiting
PTEXT VARCHAR() 等待事件P参数名称
P NUMBER p的值
PRAW RAW() p参数进制值
PTEXT VARCHAR() 等待事件P参数名称
P NUMBER p的值
PRAW RAW() p参数进制值
PTEXT VARCHAR() 等待事件P参数名称
P NUMBER p的值
PRAW RAW() p参数进制值
WAIT_TIME NUMBER 上一次等待持续的时间单位秒
SECONDS_IN_WAIT NUMBER 等待时间单位秒
STATE VARCHAR() 指出进程是已经完成了等待还是还在等待
比如
SQL> select event nameptext pnamep pvalue from v$session_wait;
NAME PNAME PVALUE
jobq slave wait
SQL*Net message from client driver id
Streams AQ: qmn slave idle wai
t
Streams AQ: qmn coordinator id
le wait
Streams AQ: waiting for time m
anagement or cleanup tasks
rdbms ipc message timeout
rdbms ipc message timeout
rdbms ipc message timeout
很容易看到当前等待事件的情况
v$system_event
反映的内容列出自从实例启动以来的等待事件的统计信息
SQL> desc v$system_event
名称 类型
EVENT VARCHAR() 等待事件的名称
TOTAL_WAITS NUMBER 次等待事件的总的等待次数
TOTAL_TIMEOUTS NUMBER 总的超时等待事件的次数
TIME_WAITED NUMBER 等待事件的总的等待时间
AVERAGE_WAIT NUMBER 平均等待时间单位s
EVENT_ID NUMBER 等待事件的唯一标示符 和v$event_name中的对应
dba_tables
反映内容记录数据库表所有信息这里我也只是列出用于性能测试多的字段
SQL> desc dba_tables;
名称 类型
OWNER NOT NULL VARCHAR() 所有者
TABLE_NAME NOT NULL VARCHAR() 表名
TABLESPACE_NAME VARCHAR() 表所在的表空间名
CLUSTER_NAME VARCHAR() 所在集群的名称
PCT_FREE NUMBER 数据块允许空闲的最小百分比
PCT_USED NUMBER 数据块允许使用的最大百分比
MAX_TRANS NUMBER 最大事务数
FREELISTS NUMBER 被分配给段的空闲进程数量
LOGGING VARCHAR() 是否记录日志生成重做日志记录
NUM_ROWS NUMBER 总共有多少行数据记录
BLOCKS NUMBER 此表使用的块数
EMPTY_BLOCKS NUMBER 表中从来不没有被使用的空块
AVG_SPACE NUMBER 表中平均可用空闲空间
AVG_SPACE_FREELIST_BLOC NUMBER Average freespace of all blocks on a freelist
NUM_FREELIST_BLOCKS NUMBER 空闲列表的块数
CACHE VARCHAR() 检查表是否被cache到buffer中
TABLE_LOCK VARCHAR() 表名表是正在否被锁定
SAMPLE_SIZE NUMBER 表被分析的比例或者数量
LAST_ANALYZED DATE 表上一次被分析的时间点
NESTED VARCHAR() 表是否嵌套
BUFFER_POOL VARCHAR() buffer_pool中被用于表块的defaultkeeprecycle
MONITORING VARCHAR() 表名表是否正被监控
这个视图非常的有用一般可以用来作为健康检查检查数据库表的分析情况等对于oracle以后的版本都推荐使用基于成本的优化器cbo基于规则的优化器逐渐被放弃了所以分析的了解很重要
如下
TABLE_NAME TABLESPACE_NAME PCT_FREE PCT_USED NUM_ROWS BUFFER_ SAMPLE_SIZE LAST_ANALYZED
LT_LHT_COUNT LHT_BBS_SPACE DEFAULT 月
LT_LHT_CYXX LHT_BBS_SPACE DEFAULT 月
LT_LHT_FLBK LHT_BBS_SPACE DEFAULT 月
LT_LHT_SORT LHT_BBS_SPACE DEFAULT 月
LT_LHT_STYLE LHT_BBS_SPACE DEFAULT 月
LT_LHT_XTYH LHT_BBS_SPACE DEFAULT 月
LT_LHT_ZCYH LHT_BBS_SPACE DEFAULT 月
LT_LHT_FT LHT_BBS_SPACE DEFAULT 月
LT_LHT_HT LHT_BBS_SPACE DEFAULT 月
TEST LHT_BBS_SPACE DEFAULT 月
TEST_LOG LHT_BBS_SPACE DEFAULT 月
可以清晰的了解到裱褙分析的情况如果LAST_ANALYZED没有值或者时间很早了那就必须重新的分析这张表得到更为准确统计信 息SAMPLE_SIZE代表分析的采样值如果不合理也可以在分析的时候作调整这些检查有利于却确定基于成本的优化器能够按照最优化的路经化最小的 成本来完成操作和响应
既然对于dba_tables有这样应用那么dba_indexes也就有同样的使用方式了索引和表达大同小异就不再说了
V$SGA_TARGET_ADVICE
采用动态sga内存管理但是你希望能知道如何设置这个最大大小才合适呢那可以采用这个视图
SQL> desc V$SGA_TARGET_ADVICE
名称 类型
SGA_SIZE NUMBER sga大小
SGA_SIZE_FACTOR NUMBER 此表中的sga_size和当前的parameter中的sga大小的比值
ESTD_DB_TIME NUMBER
ESTD_DB_TIME_FACTOR NUMBER
ESTD_PHYSICAL_READS NUMBER 估计的物理读的次数
比如
SQL> select sga_sizesga_size_factorestd_db_timeestd_db_time_factorestd_physical_reads from V$SGA_TARGET_ADVICE;
SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS
已选择行
可以发现当sga设置为M或者更大的时候就没有性能上的提升了所以最大也就设置为左右是比较合适的
V$pga_TARGET_ADVICE
结合的sga设置pga的pga_target_max设置同样可以采用这样的方式
SQL> desc V$pga_TARGET_ADVICE
名称 类型
PGA_TARGET_FOR_ESTIMATE NUMBER pga设置大小bytes
PGA_TARGET_FACTOR NUMBER 与当前parameter中设置的值的比例
ADVICE_STATUS VARCHAR() 表名advice是否课可采用on/off取决于STATISTICS_LEVEL
BYTES_PROCESSED NUMBER 被所有的进程所占用的资源bytes
ESTD_EXTRA_BYTES_RW NUMBER 被估计的用于读和写的资源占用
ESTD_PGA_CACHE_HIT_PERCENTAGE NUMBER 估计的命中率当PGA_TARGET_FOR_ESTIMATE等于实际设置的pgaparameter时
ESTD_OVERALLOC_COUNT NUMBER 这里的值如果为零表示pga设置足够大非零说明pga的设置不是足够大的
QL> select * from V$pga_TARGET_ADVICE;
GA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ADV BYTES_PROCESSED ESTD_EXTRA_BYTES_RW ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COU
T
ON
ON
ON
Oracle维护常用SQL语句(查询系统表和视图)
提要
查看表空间的名称及大小
查看表空间物理文件的名称及大小
查看回滚段名称及大小
查看控制文件
查看日志文件
查看表空间的使用情况
查看数据库库对象
查看数据库的版本
查看数据库的创建日期和归档方式
捕捉运行很久的SQL
查看数据表的参数信息
查看还没提交的事务
查找object为哪些进程所用
回滚段查看
耗资源的进程(top session)
查看锁(lock)情况
查看等待(wait)情况
查看sga情况
查看catched object
查看V$SQLAREA
查看object分类数量
按用户查看object种类
有关connection的相关信息
)查看有哪些用户连接
)根据vsid查看对应连接的资源占用等情况
)根据sid查看对应连接正在运行的sql
.查询表空间使用情况
查询表空间的碎片程度
查询正在运行的数据库实例
查看表空间的名称及大小
select ttablespace_name round(sum(bytes/(*))) ts_size
from dba_tablespaces t dba_data_files d
where ttablespace_name = dtablespace_name
group by ttablespace_name;
查看表空间物理文件的名称及大小
select tablespace_name file_id file_name
round(bytes/(*)) total_space
from dba_data_files
order by tablespace_name;
查看回滚段名称及大小
select segment_name tablespace_name rstatus
(initial_extent/) InitialExtent(next_extent/) NextExtent
max_extents vcurext CurExtent
From dba_rollback_segs r v$rollstat v
Where rsegment_id = vusn(+)
order by segment_name ;
查看控制文件
select name from v$controlfile;
查看日志文件
select member from v$logfile;
查看表空间的使用情况
select sum(bytes)/(*) as free_spacetablespace_name
from dba_free_space
group by tablespace_name;
SELECT ATABLESPACE_NAMEABYTES TOTALBBYTES USED CBYTES FREE
(BBYTES*)/ABYTES % USED(CBYTES*)/ABYTES % FREE
FROM SYSSM$TS_AVAIL ASYSSM$TS_USED BSYSSM$TS_FREE C
WHERE ATABLESPACE_NAME=BTABLESPACE_NAME AND ATABLESPACE_NAME=CTABLESPACE_NAME;
查看数据库库对象
select owner object_type status count(*) count# from all_objects group by owner object_type status;
查看数据库的版本
Select version FROM Product_component_version
Where SUBSTR(PRODUCT)=Oracle;
查看数据库的创建日期和归档方式
Select Created Log_Mode Log_Mode From V$Database;
捕捉运行很久的SQL
column username format a
column opname format a
column progress format a
select usernamesidopname
round(sofar* / totalwork) || % as progress
time_remainingsql_text
from v$session_longops v$sql
where time_remaining <>
and sql_address = address
and sql_hash_value = hash_value
/
查看数据表的参数信息
SELECT partition_name high_value high_value_length tablespace_name
pct_free pct_used ini_trans max_trans initial_extent
next_extent min_extent max_extent pct_increase FREELISTS
freelist_groups LOGGING BUFFER_POOL num_rows blocks
empty_blocks avg_space chain_cnt avg_row_len sample_size
last_analyzed
FROM dba_tab_partitions
WHERE table_name = :tname AND table_owner = :towner
ORDER BY partition_position
查看还没提交的事务
select * from v$locked_object;
select * from v$transaction;
查找object为哪些进程所用
select
pspid
ssid
sserial# serial_num
susername user_name
atype object_type
sosuser os_user_name
aowner
aobject object_name
decode(sign( command)
to_char(command) Action Code # || to_char(command) ) action
pprogram oracle_process
sterminal terminal
sprogram program
sstatus session_status
from v$session s v$access a v$process p
where spaddr = paddr and
stype = USER and
asid = ssid and
aobject=SUBSCRIBER_ATTR
order by susername sosuser
回滚段查看
select rownum sysdba_rollback_segssegment_name Name v$rollstatextents
Extents v$rollstatrssize Size_in_Bytes v$rollstatxacts XActs
v$rollstatgets Gets v$rollstatwaits Waits v$rollstatwrites Writes
sysdba_rollback_segsstatus status from v$rollstat sysdba_rollback_segs
v$rollname where v$rollnamename(+) = sysdba_rollback_segssegment_name and
v$rollstatusn (+) = v$rollnameusn order by rownum
耗资源的进程(top session)
select sschemaname schema_name decode(sign( command)
to_char(command) Action Code # || to_char(command) ) action status
session_status sosuser os_user_name ssid pspid sserial# serial_num
nvl(susername [Oracle process]) user_name sterminal terminal
sprogram program stvalue criteria_value from v$sesstat st v$session s v$process p
where stsid = ssid and ststatistic# = to_number() and (ALL = ALL
or sstatus = ALL) and paddr = spaddr order by stvalue desc pspid asc susername asc sosuser asc
查看锁(lock)情况
select /*+ RULE */ lsosuser os_user_name lsusername user_name
decode(lstype RW Row wait enqueue lock TM DML enqueue lock TX
Transaction enqueue lock UL User supplied lock) lock_type
oobject_name object decode(lslmode null Row Share
Row Exclusive Share Share Row Exclusive Exclusive null)
lock_mode oowner lssid lsserial# serial_num lsid lsid
from sysdba_objects o ( select sosuser susername ltype
llmode ssid sserial# lid lid from v$session s
v$lock l where ssid = lsid ) ls where oobject_id = lsid and oowner
<> SYS order by oowner oobject_name
查看等待(wait)情况
SELECT v$waitstatclass v$unt count SUM(v$sysstatvalue) sum_value
FROM v$waitstat v$sysstat WHERE v$sysstatname IN (db block gets
consistent gets) group by v$waitstatclass v$unt
查看sga情况
SELECT NAME BYTES FROM SYSV_$SGASTAT ORDER BY NAME ASC
查看catched object
SELECT owner name db_link namespace
type sharable_mem loads executions
locks pins kept FROM v$db_object_cache
查看V$SQLAREA
SELECT SQL_TEXT SHARABLE_MEM PERSISTENT_MEM RUNTIME_MEM SORTS
VERSION_COUNT LOADED_VERSIONS OPEN_VERSIONS USERS_OPENING EXECUTIONS
USERS_EXECUTING LOADS FIRST_LOAD_TIME INVALIDATIONS PARSE_CALLS DISK_READS
BUFFER_GETS ROWS_PROCESSED FROM V$SQLAREA
查看object分类数量
select decode (otype#INDEX TABLE CLUSTER VIEW
SYNONYM SEQUENCE OTHER ) object_type count(*) quantity from
sysobj$ o where otype# > group by decode (otype#INDEX TABLE
CLUSTER VIEW SYNONYM SEQUENCE OTHER ) union select
COLUMN count(*) from l$ union select DB LINK count(*) from
按用户查看object种类
select uname schema sum(decode(otype# NULL)) indexes
sum(decode(otype# NULL)) tables sum(decode(otype# NULL))
clusters sum(decode(otype# NULL)) views sum(decode(otype#
NULL)) synonyms sum(decode(otype# NULL)) sequences
sum(decode(otype# NULL NULL NULL NULL NULL NULL ))
others from sysobj$ o sysuser$ u where otype# >= and uuser# =
oowner# and uname <> PUBLIC group by uname order by
syslink$ union select CONSTRAINT count(*) from n$
有关connection的相关信息
)查看有哪些用户连接
select sosuser os_user_name decode(sign( command) to_char(command)
Action Code # || to_char(command) ) action pprogram oracle_process
status session_status sterminal terminal sprogram program
susername user_name sfixed_table_sequence activity_meter query
memory max_memory cpu_usage ssid sserial# serial_num
from v$session s v$process p where spaddr=paddr and stype = USER
order by susername sosuser
)根据vsid查看对应连接的资源占用等情况
select nname
vvalue
nclass
nstatistic#
from v$statname n
v$sesstat v
where vsid = and
vstatistic# = nstatistic#
order by nclass nstatistic#
)根据sid查看对应连接正在运行的sql
select /*+ PUSH_SUBQ */
command_type
sql_text
sharable_mem
persistent_mem
runtime_mem
sorts
version_count
loaded_versions
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 = )
.查询表空间使用情况
select atablespace_name 表空间名称
round((nvl(bbytes_free)/abytes_alloc)*) 占用率(%)
round(abytes_alloc//) 容量(M)
round(nvl(bbytes_free)//) 空闲(M)
round((abytes_allocnvl(bbytes_free))//) 使用(M)
Largest 最大扩展段(M)
to_char(sysdateyyyymmdd hh:mi:ss) 采样时间
from (select ftablespace_name
sum(fbytes) bytes_alloc
sum(decode(fautoextensibleYESfmaxbytesNOfbytes)) maxbytes
from dba_data_files f
group by tablespace_name) a
(select ftablespace_name
sum(fbytes) bytes_free
from dba_free_space f
group by tablespace_name) b
(select round(max(fflength)*/) Largest
tsname tablespace_name
from sysfet$ ff sysfile$ tfsysts$ ts
where tsts#=ffts# and fffile#=tfrelfile# and tsts#=tfts#
group by tsname tfblocks) c
where atablespace_name = btablespace_name and atablespace_name = ctablespace_name
查询表空间的碎片程度
select tablespace_namecount(tablespace_name) from dba_free_space group by tablespace_name
having count(tablespace_name)>;
alter tablespace name coalesce;
alter table name deallocate unused;
create or replace view ts_blocks_v as
select tablespace_nameblock_idbytesblocksfree space segment_name from dba_free_space
union all
select tablespace_nameblock_idbytesblockssegment_name from dba_extents;
select * from ts_blocks_v;
select tablespace_namesum(bytes)max(bytes)count(block_id) from dba_free_space
group by tablespace_name;
查询有哪些数据库实例在运行
select inst_name from v$active_instances;