`

几个常用视图的说明

阅读更多
• v$lock
• v$sqlarea
• v$session
• v$sesstat
• v$session_wait
• v$process
• v$transaction
• v$sort_usage
• v$sysstat

其它表
ALL_USERS 查看所有用户

USER_USERS 查看当前用户信息
USER_OBJECTS 查看所有当前用户的对象
USER_TABLESPACES查看所有当前用户的表空间信息
USER_TAB 查看当前用户的所有表
USER_TABLES 查看当前用户的表及表属于哪个空间的信息
USER_VIEWS 查看当前用户的视图
USER_CATALOG 查看当前用户的表视图同义词和序列
USER_INDEXES 查看所有当前用户的索引
USER_SEQUENCES 查看属于当前用户的序列
USER_SYNONYMS 查看属于当前用户的同义词
USER_TRIGGERS 查看当前用户的触发器

USER_ROLE_PRIVS 查看当前用户的角色
USER_TAB_PRIVS 当前用户对哪些表拥有哪些权限

九个重要视图

1)v$lock
给出了锁的信息,如type字段, user type locks有3种:TM,TX,UL,system type locks有多种,常见的有:MR,RT,XR,TS等。我们只关心TM,TX锁。
当TM锁时,id1字段表示object_id;当TX锁时,trunc(id1/power(2,16))代表了回滚段号。
lmode字段,session持有的锁的模式,有6种:
0 - none
1 - null (NULL)
2 - row-S (SS)
3 - row-X (SX)
4 - share (S)
5 - S/Row-X (SSX)
6 - exclusive (X)
request字段,process请求的锁的模式,取值范围与lmode相同。
ctime字段,已持有或等待锁的时间。
block字段,是否阻塞其它锁申请,当block=1时说明这个session阻塞了别的session。

2)v$sqlarea
共享池中存储的sql和一些相关的信息,如累计的执行次数(executions),逻辑读(buffer_gets),物理读(disk_reads)等统计信息。
根据address和hash_value可以定位一条sql。sql_text字段存的这个sql的前1000个字符。查找整个的sql还需去v$sqltext或者v$sqltext_with_newlines。

3)v$session
所有当前session的信息,包括一些用户信息如username,terminal,program,logon_time等,command字段表示session执行的什么命令。
通过v$session.paddr=v$process.addr跟process相关,通过v$session.taddr=v$transaction.addr跟trancation相关。
通 过sid可以到相关视图中查询与这个session相关的各种信息,如v$sesstat中有session的统计信息,v$sess_io中有 session的io统计信息,v$session_wait中有session的等待信息,v$session_event中有session在一段时 间内所等待的各种事件的信息。
根据lockwait字段可以查询当前正在等待的锁的相关信息:
select * from v$lock where kaddr in (select lockwait from v$session where sid=&sid);
(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value) 根据这两组字段, 可以查询到当前session正在执行的或最近一次执行的sql语句的详细信息:
select * from v$sqltext where address = &sql_address and hash_value = &sql_hash_value;

4)v$sesstat
根据session id可以得到这个session的统计信息:
select a.name,b.value
from v$statname a,v$sesstat b
where a.STATISTIC#=b.STATISTIC#
and b.sid=&sid
and b.value <>0
order by b.value;

5)v$session_wait
根据session id可以得到这个session的等待情况。
event字段表示等待事件。
p1、 p2、p3告诉我们等待事件的具体含义,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然后通过dba_extents即可确定出热点对象;如果是latch free的话,p2为闩锁号,它指向v$latch。
P1RAW,P2RAW,P3RAW列对应P1,P2,P3的十六进制值;P1TEXT,P2TEXT,P3TEXT列对应P1,P2,P3列的解释。
--求等待事件及其对应的latch
col event format a32
col name format a32
select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name
from v$session_wait sw,v$latch l
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+);
--求等待事件及其热点对象
col owner format a18
col segment_name format a32
col segment_type format a32
select owner,segment_name,segment_type
from dba_extents
where file_id = &file_id and &block_id between block_id
and block_id + &blocks - 1;
--综合以上两条sql,同时显示latch及热点对象(速度较慢)
select sw.sid,event,l.name,de.segment_name
from v$session_wait sw,v$latch l,dba_extents de
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+) and sw.p1 = de.file_id(+) and p2 between de.block_id and de.block_id + de.blocks - 1;
--如果是非空闲等待事件,通过等待会话的sid可以求出该会话在执行的sql
select sql_text
from v$sqltext_with_newlines st,v$session se
where st.address=se.sql_address and st.hash_value=se.sql_hash_value
and se.sid =&wait_sid order by piece;
其中 STATE 列 的描述如下(参考 Oracle Database Reference 10g Release 1 Part Number B10755-01):
• 0 - WAITING (当前等待的 Session)
• -2 - WAITED UNKNOWN TIME (最后等待持续时间未知)
• -1 - WAITED SHORT TIME (最后的等待 <1/100 秒)
• >0 - WAITED KNOWN TIME (WAIT_TIME = 最后等待持续时间)

6)v$process
根据session id可以查到操作系统进程的信息:
select * from v$process where addr in (select paddr from v$session where sid=&sid );
spid字段是操作系统进程号,可以用来进行 kill -9 spid 这么一个操作。
可以找到 unix命令 top 出来的最耗cpu资源的pid,根据pid最耗资源的sql:
SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,
0, prev_hash_value,
sql_hash_value
),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC
/

7)v$transaction
根据session id可以查到当前session正在执行的事务信息:
select * from v$transaction where addr in (select taddr from v$session where sid=&sid );
看下面这两个字段可以看到事务进行到什么程度了:
USED_UBLK
NUMBER
Number of undo blocks used

USED_UREC
NUMBER
Number of undo records used
重复查询这两个值,可以看到变化,可以估计事务的进度,尤其是长时间的回滚操作,当这两个值为0,回滚也就完成了。

8)v$sort_usage
temp表空间的使用情况,当temp表空间变得巨大的时候,根据session_addr可以得到session id,根据sqladdr和sqlhash可以得到正在执行的sql:
select se.username,se.sid,su.extents,su.blocks*to_number(rtrim(p.value)) as Space,tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size'
and su.session_addr=se.saddr
and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;

9)v$sysstat
所有instance的统计信息。

分享到:
评论

相关推荐

    几个常用视图的说明 常用的视图和表

    这个视图对于监控和优化SQL性能非常重要。其字段主要包括: - **address**: SQL语句的内存地址。 - **hash_value**: SQL语句的哈希值。 - **sql_text**: SQL文本,通常只显示前1000个字符。 ### v$session `v$...

    常用的动态性能视图说明(177个)

    ### 常用的动态性能视图说明 #### 概述 动态性能视图是Oracle数据库中一组重要的内部视图,用于提供关于数据库实例运行时的状态信息,包括但不限于内存使用情况、后台进程活动、锁与等待事件等。这些视图以`V$`或`...

    多视图例子.多视图例子.多视图例子.

    "多视图例子"可能包括以下几个方面: 1. 数据集成:展示如何将来自不同来源的数据融合成一个多视图模型,例如,将社交媒体评论、用户评分和产品描述结合,以提供全面的产品分析。 2. 多视图聚类:演示如何利用多...

    一个多文档多视图的MFC程序

    在“一个多文档多视图的MFC程序”中,开发者可能会遇到以下几个关键步骤: 1. **创建MFC MDI应用程序项目**:在Visual Studio中,选择“MFC应用程序向导”,然后勾选MDI应用程序选项。 2. **自定义文档和视图**:...

    几个java常用的类

    在Java编程中,有几个常用的类对于开发人员来说是不可或缺的,这些类可以帮助我们处理数据库操作、页面分页以及过滤请求。下面将详细讲解标题和描述中提到的几个关键概念。 首先,`baseDao` 类是Java开发中的一个...

    jquery网格视图切换特效.zip

    在实际应用中,这个特效通常涉及到以下几个关键知识点: 1. **DOM操作**:jQuery库的核心功能之一就是对HTML文档对象模型(DOM)进行操作。在网格视图切换中,我们需要根据用户的切换选择,动态地改变元素的布局...

    UML 九种视图总结

    下面详细介绍几种常见的 UML 视图: ##### 3.1 类图 (Class Diagrams) - **定义**:类图用于展示系统中类及其之间的关系,包括继承、关联、依赖等。 - **用途**:主要用于描述系统的静态结构,包括类的属性和方法...

    在滚动视图中加入多个列表视图效果

    在iOS开发中,创建一个滚动视图并嵌入多个列表视图是一种常见的需求,它可以用于展示多组数据或者实现复杂的用户界面布局。标题"在滚动视图中加入多个列表视图效果"涉及到的关键知识点主要是如何将UITableView(列表...

    MFC多文档多视图编程

    主要包括以下几个方面: - **Cdocument::UpdateAllViews**: 当文档数据发生变化时,文档对象会调用这个方法来通知所有相关的视图对象进行更新。 - **CView::OnUpdate**: 这是视图对象的一个回调函数,当接收到更新...

    IOS应用源码Demo-宫格视图(支持横屏)LOGO-毕设学习.zip

    【标题解析】:“IOS应用源码Demo-宫格视图(支持横屏)LOGO-毕设学习.zip”这个标题揭示了几个关键信息点。首先,“IOS应用源码Demo”表明这是一个iOS平台上的应用程序示例代码,通常用于展示特定功能或技术的实现...

    IOS应用源码——视图控制器(无动画版).zip

    2. **生命周期方法**:在UIViewController的生命周期中,有几个关键方法,如`viewDidLoad()`、`viewWillAppear()`、`viewDidAppear()`、`viewWillDisappear()`和`viewDidDisappear()`,它们分别在视图加载、即将显示...

    商业编程-源码-视图分割源代码 outlook_style.zip

    【标签】:“商业编程-源码-视图分割源代码”这个标签明确了几个关键点: 1. 商业编程:表明这些代码是为了商业应用而设计的,可能涉及到版权和授权问题,需要遵循特定的使用规定。 2. 源码:表示提供的不仅是编译后...

    几个类说明

    这里我们主要探讨四个在Windows编程环境中常见的MFC(Microsoft Foundation Classes)类:`CMap`、`CList`、`CListCtrl`和`CArray`。这些都是在Windows应用开发中非常实用的数据结构,尤其在处理数据集合时。 首先...

    自定义右键菜单,在分页预览视图下无效.

    解决这个问题通常需要以下几个步骤: 1. **检查注册表**:使用注册表编辑器(RegEdit)查找并确认自定义菜单的键值是否正确,确保它们没有被误删或修改。 2. **测试管理员权限**:以管理员身份运行资源管理器,看...

    近期IOS中最常用的几个UI框架

    以下是对标题和描述中提及的几个最常用UI框架的详细说明: 1. **Swipeable Table View Cells**: 这种框架允许用户通过左右滑动来触发特定操作或展示更多的信息。例如,它可能用于应用设置,当用户滑动单元格时,...

    Android 课表视图

    在Android开发中,"Android 课表视图"是一个常见的需求,它通常用于教育类应用,帮助学生或教师直观地查看课程安排。本DEMO旨在展示如何创建一个功能齐全、用户体验良好的课表视图。下面将详细介绍这个DEMO中涉及的...

    自定义视图实现水波从中心扩散效果.zip

    自定义视图通常涉及到以下几个关键点: 1. **创建自定义视图类**:继承自Android的基础视图类,如`View`或`ViewGroup`。在这个例子中,我们可能会创建一个名为`CircleWaveView`的类。 2. **重写构造函数**:为...

    Treedlg.rar_treedlg_可编辑树控件_树视图

    "**可编辑树控件**"的实现可能涉及到以下几个关键点: 1. **节点编辑事件**:当用户选择一个节点并触发编辑操作时,控件需要捕获这个事件,并启动编辑模式。 2. **编辑框的插入与移除**:在节点被选中编辑时,控件...

    实现支持多种视图切换效果

    在iOS开发中,实现支持多种视图切换效果是一项常见的需求,尤其在设计用户交互丰富的应用时。本项目“实现支持多种视图切换效果”提供了一种炫酷的解决方案,不仅包含传统的翻页效果,还引入了转动界面等创新操作...

    IOS应用源码——可以用手指左右滑动切换视图的效果demo.zip

    在iOS开发中,这种手势驱动的视图切换通常涉及到以下几个关键知识点: 1. **手势识别(Gesture Recognition)**:iOS SDK提供了多种手势识别类,如`UISwipeGestureRecognizer`,用于识别用户的手势动作,如左右滑动...

Global site tag (gtag.js) - Google Analytics