ORACLE 数据字典


一、数据字典的概述
1、数据字典dictionary总是属于Oracle用户sys的,存储在SYSTEM表空间中。dirt是存所有数据字典名称的一张总表
2、数据库对象的信息存储在数据字典中,这些信息包括用户账户信息、数据文件名、段名、盘区位置、表说明和权限等等。
2、当数据库需要字典信息将读取字典表并将返回的数据存储在字典缓存区的SGA中,都用LRU算法管理在内存中。


二、数据字典的分类
说明:ORACLE数据字典分为静态和动态,包括基表和用户可访问视图,基表大多不能直接访问,多数以加密格式存储。
但可以访问其中的视图,视图分为四类:
1、user_*(当前用户所拥有视图)
说明:用户自己私有环境的视图。

2、all_*(当前用户可访问视图)
说明:用户对于数据库的全局视点,返回用户已经通过公共或直接授权的权限或者角色访问的框架对象。

3、dba_*(数据库中所有视图)
说明:整个DB的情况,DBA或授予系统权限SELECT ANY TABLE的用户能查询,且查询时必须带SYS前缀,不能创建同义词。

4、v$(服务器动态性能视图)
说明:由动态性能表V_$生产的视图。查看实例的运行情况,普通用户没有权限查看V$视图和属于SYS的DBA视图,必须被授予权限才能查看。

5、gv$
说明:比v$多一个字段,区分节点,集群环境的全局服务器动态性能视图。


三、常用的DBA视图

1、dba_all_tables
说明:显示数据库中的所有关系和对象表

2、dba_clusters
说明:聚簇

3、dba_col_comments
说明:显示表和视图列的注释

4、dba_constraints
作用:能查看约束的详细信息
说明:
字段CONSTRAINT_TYPE:P为主键、R为外键、U为唯一约束、C为检查或非空约束。
字段STATUS:约束是否生效,ENABLED为有效(默认)、DISABLED为无效。
字段DEFERRABLE:是否可延迟,not deferrable不可(默认)、deferrable可
字段DEFERRED:应用时刻,IMMEDIATE立刻(默认)、deferred延迟
字段VALIDATED:VALIDATED(默认)
结论:在默认情况下,Oracle的约束是不允许延迟(not deferrable)、立即应用和验证的(immediate、validated)。在数据变化执行DML语句的时候,立即进行约束验证。
设置延迟则1、alter table T add constraint C_T_ID1 check (id>5) deferrable;2、set constraint c_t_id1 deferred;延迟则是commit再验证。

5、dba_cons_columns
作用:能查看约束的约束字段。

6、dba_data_files
作用:关于数据库文件的信息,查看用户表空间对应的数据文件名

7、dba_db_links
说明:数据库中所有数据库链路DBLINK

8、dba_dependencies
说明:查看直接依赖关系
也可以用工具视图deptree和ideptree确定直接依赖和间接依赖关系。
使用这2个视图必须先运行utldtree.sql建立并填充这2个视图的过程deptree_fill。
@%oracle_home%\rdbms\admin\utldtree
exec deptree_fill('TABLE','SCOTT','EMP');
select * from deptree;
select * from ideptree.

9、dba_directories
查看DIRECTORY的位置及用户。

9、dba_errors
说明:查看编译错误,存储报错信息。也可以sqlplus用show erros procedure PRO_TEST查看

10、dba_extents
说明:数据库中包含所有分区信息,包括回滚段,能够显示有多少块,块大小、编号。查看表格的大小、分区表大小等等
select * from dba_extents where segment_type='ROLLBACK';--回滚段
select extent_id,bytes from dba_extents
where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;//表使用的extent的信息。segment_type='ROLLBACK'查看回滚段的空间分配信息
Select Segment_Name,Sum(bytes)/1024/1024 bytes From User_Extents Group By Segment_Name order by bytes desc;--表格大小

11、dba_external_tables
说明:显示数据库中的外部表的特定属性

12、dba_external_locations
说明:列出了外部表的数据源

13、dba_free_space
说明:列出所有表空间中自由分区(字节和块)
 select tablespace_name,sum(bytes), sum(blocks)
from dba_free_space group by tablespace_name;
查询表空间使用率的语句如果执行非常慢,往往是这个表引起的,这个表慢则是由于回收站内对象太多所致,清理回收站即可。

13、dba_hist_wr_control
说明:查看Oracle AWR报告收集信息的间隔和保留的天数
例如:
DBID SNAP_INTERVAL RETENTION TOPNSQL
1401840015 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
以上意思是间隔是1小时,保留8天。

14、dba_indexes
说明:数据库中非分区表的索引的描述,包括主键索引
列distinct_keys表示唯一键的数量,体现选择性,选择性越高越好。
比较一下唯一键的数量和表中的行数,就可以判断索引的选择性。索引的选择性越高,索引返回的数据就越少。
列Clustering_Factor表示群集因子,
该列反映了数据相对于已 建 索引的列是否显得有序。如果Clustering Factor 列的值接近于索引中的树叶块(leaf_block)的数目,
表中的数据就越有序。如果它的值接近于表中的行数,则表中的数据就不是很有序。
列leaf_block表示树叶块数目。
列blevel表示二元高度,越低越好。当blevel大于3则重建索引。必须确保blevel在3内。索引的性能关乎数据库的性能
二元高度对把ROWID 返回给用户进程时所要求的 I/O 量起到关键作用。
二元高度主要随着表的大小以及被索引的列中值的范围的狭窄程度而变化。
索引上如果有大量被删除的行,它的二元高度也会增加。更新索引列也类似于删除操作,因为它增加了已删除键的数目。
重建索引可能会降低二元高度 。
列status表示索引的状态,UNUSABLE为无效索引。
例子:
SELECT index_name, table_name FROM DBA_INDEXES
WHERE status = 'UNUSABLE' or blevel>=4;
ALTER INDEX HR.XX REBUILD ONLINE;
ALTER INDEX HR.XX REBUILD TABLESPACE USERS;
对于分区索引,状态保存在 DBA_IND_PARTITIONS 视图中

15、dba_ind_columns
说明:在所有表及聚集上压缩索引的列,可获知索引建立在那些字段上
 select i.index_name,i.uniqueness,c.column_name
from user_indexes i,user_ind_columns c
 where i.index_name=c.index_name
 and i.table_name ='ACC_NBR';//联接使用

16、dba_ind_expressions
说明:基于函数的索引的表达式ta

DBA_IND_PARTITIONS
显示分区索引信息 显示数据库所有分区索引信息

DBA_IND_SUBPARTITIONS
显示子分区索引信息 显示数据库所有组合分区表的子分区索引信息

dba_locks
对v$lock的格式化视图。
Session_id:和v$lock中的Sid对应。
Lock_type:和v$lock中的type对应。
Lock_ID1: 和v$lock中的ID1对应。
Mode_held,mode_requested:和v$lock中
的lmode,request相对应。


17、dba_jobs
说明:通过dbms_job创建 的JOB在dba_jobs中记录

18、dba_jobs_running
说明:查看正常运行的job

dba_lobs
说明:查看lob字段,每个lob字段是一个segment

dba_mviews
说明:查看物化视图的数目和属性

dba_mview_logs
说明:查看物化视图日志的数量和相关的purge信息。

19、dba_objects
说明:数据库中所有的对象(包含创建时间和最后DDL时间)
表中的status确定当前对象是否有效,在ORACLE 9g之前,对象无效不能使用,但在10g之后会自动编译
查找无效对象:SELECT object_name, object_type FROM DBA_OBJECTS WHERE status = 'INVALID';
编译无效对象:@?/rdbms/admin/utlrp


DBA_PART_TABLES
显示数据库所有分区表的信息

DBA_PART_KEY_COLUMNS
显示数据库可访问的所有分区表的分区列信息

20、dba_partial_drop_tabs
说明:列出了具有部分完成的drop cloumn操作的表

21、dba_profiles
说明:关于用户的概要文件的信息,可找出数据库中有哪些PROFILE,数据库创建后,系统则存在名为DEFAULT的默认PROFILE,若不做特殊指定,创建用户时用户默认使用的PROFILE就是DEFAULT。修改概要文件不需要重启。
select * from dba_profiles where profile='DEFAULT';
PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------------- -------- ----------------------------------------
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED //
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED //每个用户名所允许的并行会话数
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED //一个会话一共可以使用的CPU时间,单位是百分之一秒
DEFAULT CPU_PER_CALL KERNEL UNLIMITED //一次SQL调用(解析、执行和获取)允许使用的CPU时间
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED //限制会话对数据块的读取,单位是块
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED //限制SQL调用对数据块的读取,单位是块
DEFAULT IDLE_TIME KERNEL UNLIMITED //允许空闲会话的时间,单位是分钟
DEFAULT CONNECT_TIME KERNEL UNLIMITED //限制会话连接时间,单位是分钟
DEFAULT PRIVATE_SGA KERNEL UNLIMITED //限制会话在SGA中Shared Pool中私有空间的分配
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 //指定锁定用户的登录失败次数

DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED //密码可以被使用的天数,单位是天,默认值180天
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED //密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED //密码的最大改变次数(结合PASSWORD_REUSE_TIME)
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED //超过错误尝试次数后,用户被锁定的天数,默认1天
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED //当密码过期之后还有多少天可以使用原密码
参数解释
21.1、对数据库资源做限制
{ { SESSIONS_PER_USER 每个用户名所允许的并行会话数
| CPU_PER_SESSION 一个会话一共可以使用的CPU时间,单位是百分之一秒
| CPU_PER_CALL 一次SQL调用(解析、执行和获取)允许使用的CPU时间
| CONNECT_TIME 限制会话连接时间,单位是分钟
| IDLE_TIME 允许空闲会话的时间,单位是分钟
| LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块
| LOGICAL_READS_PER_CALL 限制SQL调用对数据块的读取,单位是块
| COMPOSITE_LIMIT “组合打法”
} { integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA 限制会话在SGA中Shared Pool中私有空间的分配 { size_clause | UNLIMITED | DEFAULT}
}
21.2、对密码做限制
{ { FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数
| PASSWORD_LIFE_TIME 密码可以被使用的天数,单位是天,默认值180天
| PASSWORD_REUSE_TIME 密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
| PASSWORD_REUSE_MAX 密码的最大改变次数(结合PASSWORD_REUSE_TIME)
| PASSWORD_LOCK_TIME 超过错误尝试次数后,用户被锁定的天数,默认1天
| PASSWORD_GRACE_TIME 当密码过期之后还有多少天可以使用原密码
} { expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
删除PROFILE:
drop profile [资源文件名] [CASCADE] ;
若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。
设置PROFILE参数的生效时间
21.3、用户所有拥有的PROFILE中有关密码的限制立即生效,不受限制。从这个可看出Oracle对用户密码的重视程度。
21.4、用户所有拥有的PROFILE中有关资源的限制与resource_limit参数的设置有关,当为TRUE时生效,当为FALSE时(默认值)设置任何值都无效。
SQL> show parameter resource_limit
NAME TYPE VALUE
-------------------- ----------- -------
resource_limit boolean FALSE
修改profile:
alter profile default RESOURCE_NAME 1000;
如:alter profile default limit failed_login_attempts 1000;
alter profile default limit failed_login_attempts unlimited;
我们可以手动的创建一个profile,并指定限制:
SQL> create profile frank_profile limit
2 SESSIONS_PER_USER 5
3 IDLE_TIME 2
4 FAILED_LOGIN_ATTEMPTS 5;
Profile created.
SQL> alter user frank profile frank_profile;
User altered.

dba_registered_snapshots
说明:查看生效的物化视图,里面可以看到物化视图的生成SQL。

dba_recyclebin
说明:查看回收站
参考SQL:SELECT owner, original_name, object_name,
type, ts_name, droptime, related, space
FROM dba_recyclebin
WHERE can_undrop = 'YES';


21、dba_roles
说明:查看所有角色

22、dba_role_privs
说明:查看用户所拥有的角色

23、dba_rollback_segs
说明:回滚段当前状态的描述

、dba_scheduler_jobs
通过dbms_job创建 的JOB在dba_jobs记录
通过dbms_scheduler创建 的JOB在dba_scheduler_jobs记录
oracle 10g推出dbms_scheduler以代替 dbms_job

select scheduler$_job.* from scheduler$_job ;具体的表,存储 schedule_job
select * from dba_scheduler_jobs;视图,查询所有的scheduler_job (10g新的类型,替代dba_jobs)
所以在pl/sql的jobs类型中看不到任何信息,需要才查看上面这个视图


24、dba_segments
说明:查看所有数据库段分配的存储空间,和表空间对应的所有对象,bytes显示目前回滚段的字节数,查看表格空间大小。
select segment_name, bytes /1024/1024
from user_segments s
where segment_type = 'TABLE'
order by bytes desc;

25、dba_sequences
说明:数据库中所有序列数的描述

26、dba_snapshots
说明:9i前叫快照,9i后叫物化视图,查看物化视图的相关信息

dba_snapshot_logs
说明:9i前叫快照日志,9i后叫物化视图日志,查看物化视图日志的相关信息

27、dba_source
说明:查看源代码,存放存储过程、函数、包、触发器等对象的SQL语句文本
select * from dba_source where name='PRC_PWYZL_CUSTACCT';

28、dba_synonyms
说明:数据库中所有同义词

29、dba_sys_privs
说明:查看用户所拥有的系统权限

30、dba_tables
说明:数据库中所有表的描述,也可以统计出表格的实际使用空间(不含碎片值)
select table_name,num_rows * avg_row_len/1024/1024 bytes
from user_tables
order by bytes desc;

31、dba_tablespaces
说明:数据库中所有表空间的描述(包含用户表空间和临时表空间)

32、dba_TAB_COLS
说明:保存表、视图和Clusters中的列信息
字段:Varchar2的长度看DATA_LENGTH,number的长度看DATA_PRECISION。

33、dba_tab_col_statistics
说明:提供了从相关tab_columns视图中得到的列、字段的统计和状态信息

34、dba_tab_columns
说明:所有表描述、视图以及聚集的列、字段
字段:Varchar2的长度看DATA_LENGTH,number的长度看DATA_PRECISION。

35、dba_tab_comments
说明:查看数据库表名注释

36、dba_tab_grants
说明:数据库中的对象所授予的权限

37、dba_tab_histograms
说明:描述了表和视图上的状态

38、dba_tab_modifications
说明:描述了被修改的表

DBA_TAB_PARTITIONS
显示表分区信息 显示数据库所有分区表的详细分区信息

DBA_TAB_SUBPARTITIONS
显示子分区信息 显示数据库所有组合分区表的子分区信息

39、dba_tab_privs
说明:查看数据库中的对象、权限、授予人、被授予人的关系。

dba_registry
说明:查看Oracle安装的组件。

40、dba_ts_quotas
说明:所有用户表空间限额

41、dba_triggers
说明:触发器

42、dba_types
说明:显示对象类型信息

43、dba_unused_col_tabs
说明:列出没有使用列的表

44、dba_updatable_columns
作用:查看对象是否能进行DML操作,该字典包含了哪些列可以更新、插入、删除。

45、dba_users
说明:查看数据库的所有用户信息,包括用户所在表空间等

46、dba_views
说明:数据库中所有视图的定义


四、常用的v$视图

v$shared_server
select count(*) from v$shared_server;不为O表示为共享服务器模式,反之为专用服务器模式

1、v$session
1.1说明:记录有关活动会话的信息。
在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。
数据库session被一个运行在数据库服务器上或从中间服务器甚至桌面通过SQL*Net连接到数据库的客户端进程启动
查询会话的信息和锁的信息

1.2、列值说明
SID或SADDR 用户的id和地址
SID:SESSION标识,常用于连接其它列
SERIAL#:如果某个SID又被其它的session使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)。
AUDSID:审查session ID唯一性,确认它通常也用于当寻找并行查询模式
USERNAME:当前session在oracle中的用户名。
1.2.2、SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语句。
1.2.3、PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session执行的上一条语句。
1.2.4、STATUS:这列用来判断session状态是:
Achtive:正执行SQL语句(waiting for/using a resource)
Inactive:等待操作(即等待需要执行的SQL语句)
Killed:被标注为删除
OSUSER:客户端操作系统用户名
要显示用户所连接PC的 TERMINAL、OSUSER,需在该PC的ORACLE.INI或Windows中设置关键字TERMINAL,USERNAME。
MACHINE:客户端执行的机器
TERMINAL:客户端运行的终端
PROCESS:客户端进程的ID
PROGRAM:客户端执行的客户端程序,比如WIN PLSQL:plsqldev.exe,LINUX的SQLPLUS sqlplus@bys3.bys.com (TNS V1-V3),如oracle@bys3.bys.com (SMON) 后台进程 oracle@bys3.bys.com (TNS V1-V3) 服务器上直接连接
sid,serial#:表示会话信息。
program:表示会话的应用程序信息。
row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。
lockwait :该会话等待的锁的地址,与v$lock的kaddr对应.
event:会话的等待事件


1.3、示例:
1.3.1、查找你的session信息
SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS
FROM V$SESSION WHERE audsid = userenv('SESSIONID');

1.3.2、当machine已知的情况下查找session
SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL
FROM V$SESSION
WHERE terminal = 'pts/tl'AND machine = 'rgmdbs1';

1.3.3、查找当前被某个指定session正在运行的sql语句。假设sessionID为100
select sql_text
from v$sqltext
where (hash_value,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
where paddr = (select addr from v$process where spid='操作系统进程id'));
寻找被指定session执行的SQL语句是一个公共需求,如果session是瓶颈的主要原因,那根据其当前在执行的语句可以查看session在做些什么。


v$session_wait
查询等待的会话信息。
sid:表示持有锁的会话信息。
Seconds_in_wait:表示等待持续的时间信息
Event:表示会话等待的事件,锁等于enqueue

v$session_event
说明:查看会话的等待事件

V$SGA


2、V$BGPROCESS
说明:检查数据库中启动的后台进程个数及其名称;

3、v$controlfile
说明:查看所有控制文件

v$database
说明:查看数据库名
select name from v$database

4、v$datafile
说明:数据库使用的数据文件信息,如控制文件信息

V$DIAG_INFO
说明:查看跟踪日志、警告日志等的位置。日志位置


v$event_name
说明:查询等待事件
例子:
SELECT wait_class#,wait_class_id,wait_class,
COUNT ( *) AS "count" FROM v$event_name
GROUP BY wait_class#, wait_class_id, wait_class
ORDER BY wait_class#
Wait_class取值说明:
Administrative:等待DBA命令执行结果导致的用户等待(例如:重建索引)
Application:等待用户应用程序代码结果(例如:行级锁或者显式锁命令导致的锁等待)
Cluster:与RAC资源相关的等待(例如:全局缓存资源'gc cr block busy')
Commit: 这类等待事件只包含一种等待事件-一次提交之后等待重做日志确认(日志文件同步 'log file sync')
Concurrency:等待内部数据库资源(例如:闩)
Configuration:这种等待由数据库或者实例资源配置不足造成(例如:较小的日志文件大小,共享池大小)
Idle:这种等待表明会话不活跃,等待工作(例如:'SQL*Net message from client')
Network:与网络报文传输相关的等待(例如:'SQL*Net more data to dblink')
Other:系统中不常见的等待事件(例如:'wait for EMON to spawn')
Scheduler:资源管理器相关等待(例如:'resmgr: become active')
System I/O:等待后台进程I/O(例如:DBWR等待'db file parallel write')
User I/O:等待用户I/O(例如:'db file sequential read')


v$instance
说明:查看实例名
select instance_name from v$instance;

5、v$latch
说明:记录了数据库启动以来的所有cahce buffer chains的latch的状况
说明:gets表示总共有这么多次请求,misses表示请求失败的次数(加锁不成功),而sleeps 表示请求失败休眠的次数。
通过sleeps我们可以大体知道数据库中latch的竞争是否严重,
这也间接的表征了热点块的问题是否严重。由于v$latch是一个聚合信息,我们并不能获得哪些块可能存在频繁访问。
那我们要来看另一个view信息,那就是v$latch_children,v$latch_children.addr记录的就是这个latch的地址。

6、v$latch_children

7、v$librarycache
说明:共享池中SQL语句的管理信息。

v$license
说明:查看当前session连接数情况
SESSION_MAX:实例允许的并发最大session数量
SESSION_WARNING:当前实例警告的并发session数量
SESSION_CURRENT:实例当前并发session数
SESSION_HIGHWATER:自从实例启动以来最高的session数
USERS_MAX:数据库允许的最大用户数量
CPU_COUNT_CURRENT:系统中当前逻辑CPU或处理器数量
CPU_CORE_COUNT_CURRENT:当前CPU内核数量,包括多核CPU
CPU_SOCKET_COUNT_CURRENT:当前CPU插槽数量
CPU_COUNT_HIGHWATER:实例启动以来使用的最大的CPU数量
CPU_CORE_COUNT_HIGHWATER:实例启动以来使用的最大CPU内核数量
CPU_SOCKET_COUNT_HIGHWATER:实例启动以来最大的插槽数量


8、v$lock
说明:通过访问数据库会话设置对象锁的有关信息。
TYPE:
TM - DML enqueue
TX - Transaction enqueue
UL - User supplied
--我们主要关注TX和TM两种类型的锁
--UL锁用户自己定义的,一般很少会定义,基本不用关注
--其它均为系统锁,会很快自动释放,不用关注
ID2:
Lock identifier #2 (depends on type)
---当lock type 为TM时,id1为DML-locked object的object_id
---当lock type 为TX时,id1为usn+slot,而id2为seq。
--当lock type为其它时,不用关注
LMODE(持有锁):
Lock mode in which the session holds the lock:
0 - none
1 - null (NULL)
2 - row-S (SS)
3 - row-X (SX)
4 - share (S)
5 - S/Row-X (SSX)
6 - exclusive (X)
--大于0时表示当前会话以某种模式占有该锁,等于0时表示当前会话正在等待该锁资源,即表示该会话被阻塞。
--往往在发生TX锁时,伴随着TM锁,比如一个sid=9会话拥有一个TM锁,一般会拥有一个或几个TX锁,但他们的id1和id2是不同的,请注意
REQUEST(请求锁):
Lock mode in which the process requests the lock:
0 - none
1 - null (NULL)
2 - row-S (SS)
3 - row-X (SX)
4 - share (S)
5 - S/Row-X (SSX)
6 - exclusive (X)
--大于0时,表示当前会话被阻塞,其它会话占有改锁的模式
BLOCK(阻塞):
The lock is blocking another lock
0, 'Not Blocking', /* Not blocking any other processes */
1, 'Blocking', /* This lock blocks other processes */
2, 'Global', /* This lock is global, so we can't tell */
--该锁是否阻塞了另外一个锁
例子:
Select * from v$lock where ty='TX' and lmode=6; DML行级锁,TX锁,锁代号是6
--block阻塞,request 请求锁,lmode持有锁



v$locked_object
只包含DML的锁信息,包括回滚段和会话信息。
Xidusn,xidslot,xidsqn:表示回滚段信息。和
v$transaction相关联。
Object_id:表示被锁对象标识。
Session_id:表示持有锁的会话信息。
Locked_mode:表示会话等待的锁模式的信
息,和v$lock中的lmode一致。


9、v$log
说明:从控制文件中提取有关重做日志组的信息,查看联机重做日志。
V$LOG中STATUS的状态值
UNUSED: 从未对该联机日志写入任何内容,一般为新增加联机日志文件或是使用resetlog后的状态
CURRENT:当前重做日志文件,表示该重做日志文件为活动状态,能够被打开和关闭
ACTIVE:处于活动状态,不属于当前日志,崩溃恢复需要该状态,可用于块恢复,可能归档,也可能未归档
CLEARING:表示在执行alter database clear logfile命令后正将该日志重建为一个空日志,重建后状态变为unused
CLEARING_CURRENT:当前日志处于关闭线程的清除状态。如日志某些故障或写入新日志标头时发生I/O错误
INACTIVE:实例恢复不在需要联机重做文件日志组,可能归档也可能未归档


10、v$logfile
说明:有关实例重做日志组文件名及其位置的信息。
V$LOGFILE中STATUS的状态值
INVALID:表明该文件不可访问
STALE:表明文件内容不完全
DELETED: 表明该文件不再使用
NULL:表明文件正在使用

v$rman_configuration
说明:查看RMAN经用户修改为非默认值的配置,个性化配置。

v$mystat
说明:可以查询自己的会话。

11、v$object_usage
说明:包含alter index...monitoring uasge函数生产的索引使用信息。

V$OPEN_CURSOR
说明:当前Session缓存的游标,而不是曾经打开的游标

12、v$parameter
说明:查看初始化参数文件中所有项的值。
例select *from v$parameter a
where a.NAME in ('parallel_max_servers',
'sessions',
'processes',
'pga_aggregate_target',
'parallel_threads_per_cpu',
'cpu_count',
'sga_target',
'pga_aggregate_target',
'memory_target',
'memory_max_target') order by a.NAME;

13、v$process
说明:当前进程的信息。
select count(*) from v$process; --查看当前实例的进程数目,实例可容纳的最大进程数看
select name,value from v$parameter where name in ('processes');

13、V$RMAN_COMPRESSION_ALGORITHM
说明:查询RMAN压缩算法及产生于哪个版本、弃用于哪个版本等情况
select ALGORITHM_NAME, INITIAL_RELEASE, TERMINAL_RELEASE, ALGORITHM_DESCRIPTION,
IS_VALID, REQUIRES_ACO, IS_DEFAULT from V$RMAN_COMPRESSION_ALGORITHM;

14、v$rollname
说明:回滚段信息。

15、v$rollstat
说明:联机回滚段统计信息。

16、v$rowcache
说明:内存中数据字典活动/性能信息。

17、v$sesstat
说明:在v$session中报告当前会话的统计信息。查询用户进程等待重做日志缓存的次数。

V$SGAINFO
查看内存结构中各个缓冲区的大小

v$sql
字段说明:
SQL_TEXT:SQL文本的前1000个字符
SHARABLE_MEM:占用的共享内存大小(单位:byte)
PERSISTENT_MEM:生命期内的固定内存大小(单位:byte)
RUNTIME_MEM:执行期内的固定内存大小
SORTS:完成的排序数
LOADED_VERSIONS:显示上下文堆是否载入,1是0否
OPEN_VERSIONS:显示子游标是否被锁,1是0否
USERS_OPENING:执行语句的用户数
FETCHES:SQL语句的fetch数。
USERS_EXECUTING:执行语句的用户数
LOADS:对象被载入过的次数
FIRST_LOAD_TIME:初次载入时间
INVALIDATIONS:无效的次数
PARSE_CALLS:解析调用次数
DISK_READS:读磁盘次数
BUFFER_GETS:读缓存区次数
ROWS_PROCESSED:解析SQL语句返回的总列数
COMMAND_TYPE:命令类型代号
OPTIMIZER_MODE:SQL语句的优化器模型
OPTIMIZER_COST:优化器给出的本次查询成本
PARSING_USER_ID:第一个解析的用户ID
PARSING_SCHEMA_ID:第一个解析的计划ID
KEPT_VERSIONS:指出是否当前子游标被使用DBMS_SHARED_POOL包标记为常驻内存
ADDRESS:当前游标父句柄地址
TYPE_CHK_HEAP:当前堆类型检查说明
HASH_VALUE:缓存库中父语句的Hash值
PLAN_HASH_VALUE:数值表示的执行计划。
CHILD_NUMBER:子游标数量
MODULE:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。
ACTION:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。
SERIALIZABLE_ABORTS:事务未能序列化次数
OUTLINE_CATEGORY:如果outline在解释cursor期间被应用,那么本列将显示出outline各类,否则本列为空
OUTLINE_SID:outline session标识
CHILD_ADDRESS:子游标地址
SQLTYPE:指出当前语句使用的SQL语言版本
REMOTE:指出是否游标是一个远程映象(Y/N)
OBJECT_STATUS:对象状态(VALID or INVALID)
IS_OBSOLETE:当子游标的数量太多的时候,指出游标是否被废弃(Y/N)

select EXECUTIONS,
ELAPSED_TIME,
SQL_TEXT,
SQL_FULLTEXT,
CPU_TIME,
USER_IO_WAIT_TIME,
CONCURRENCY_WAIT_TIME,
ROWS_PROCESSED,
OPTIMIZER_MODE,
OPTIMIZER_COST,
LAST_ACTIVE_TIME,
FIRST_LOAD_TIME,LAST_LOAD_TIME
from v$sql a
where a.PARSING_SCHEMA_NAME = 'DRM_ZW_JDBC'
and to_char(a.LAST_ACTIVE_TIME, 'yyyy-mm-dd hh24:mi:ss') >= '2016-01-14 17:45:00';

18、v$sqlarea
说明:共享池中使用当前光标的统计信息。光标是一块内存区域,由Oracle处理sql语句时打开。记录SQL、跟踪SQL。
可以跟踪sql语句的执行过程,如果想跟踪某个时间点前后的语句,可以通过first_load_time时间进行控制。

USER_IO_WAIT_TIME //用户IO等待时间
ROWS_PROCESSED SQL //解析sql返回的总行数
OPTIMIZER_MODE //优化器模式
OPTIMIZER_COST //优化器对于sql给出的成本
EXECUTIONS:自它被载入缓存库后的执行次数
CPU_TIME:解析/执行/取得等CPU使用时间(单位,微秒)
ELAPSED_TIME:解析/执行/取得等消耗时间(单位,微秒)
CONCURRENCY_WAIT_TIME:并发等待时间


v$sqltext
说明:记录SQL,跟踪SQL。
select * from v$sqltext a where a.address='000007FFFC60D680' order by piece

19、v$statname
说明:在v$sesstat中报告的各统计的含义。

20、v$sysstat
说明:基于当前操作会话进行的系统统计。

21、v$sgastat
说明:查看各种pool

v$transaction
查看会话

v$version
说明:查看版本号

v$waitstat
说明:根据数据缓冲区中各种block的类型(x$bh.class)而分类统计的等待状况。当有一个以上的会话同时访问相同的信息时,可能出项等待。

X$KTUXE
展示回滚段头的事务表信息,显示死亡事务的恢复进度


--动态性能统计信息视图
累计统计信息 等待事件
系统:V$SYSSTAT、V$SYSTEM_EVENT
会话:V$SESSTAT、V$SESSION_EVENT
服务:V$SERVICE_STATS、V$SERVICE_EVENT


--故障排除和优化视图
实例/数据库
V$DATABASE
V$INSTANCE
V$PARAMETER
V$SPPARAMETER
V$SYSTEM_PARAMETER
V$PROCESS
V$BGPROCESS
V$PX_PROCESS_SYSSTAT
V$SYSTEM_EVENT

磁盘
V$DATAFILE
V$FILESTAT
V$LOG
V$LOG_HISTORY
V$DBFILE
V$TEMPFILE
V$TEMPSEG_USAGE
V$SEGMENT_STATISTICS

内存
V$BUFFER_POOL_STATISTICS
V$LIBRARYCACHE
V$SGAINFO
V$PGASTAT

争用
V$LOCK
V$UNDOSTAT
V$WAITSTAT
V$LATCH




特殊的视图:
select * from dictionary; --查询数据字典,显示所有数据字典的数据表、视图、同义词
select * from table_privileges; --显示数据对象的所有者、授权者和权限
select * from ind; --User_indexes的同义词

index_stats存储来自最后一个analyze index...validate structure语句的信息
index_histogram存储来自最后的analyze index...validate structure语句的信息

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值