oracle数据字典
内部RDBMS表(X$)是oralce数据库的核心,用于跟踪内部数据库信息,维持数据库的正常运行。
数据字典表(Data Dictionary Table)用以存储表,索引,约束,以及其他数据库结构的信息,通常以$结尾(如tab$,obj$,ts$)
动态性能视图(Dynamic Performance View V$)记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库的当前状态
GV$(Global V$)返回所有实例信息,V$返回当前实例信息
GV_$,V_$(大部分是GV$,V$的同义视图),V_$视图的权限可以被授予其他用户。
数据字典视图:
user_类视图:包含了用户所拥有的相关对象信息
all_类视图:包含了用户有权限访问的所有对象信息
dba_类视图:包含了数据库所有相关对象信息
等待事件
等待事件是数据库优化的一个重要指导
select * from v$version
select count(*) from v$event_name
等待事件分类:空闲等待时间idle,非空闲等待事件non-idle
idle指oracle正在等待某种工作,在诊断和优化数据库时,不用太过注意。
non-idle专门针对oracle的活动,指数据库任务或应用运行过程中发生的等待,调优时关注
v$session视图记录的是数据库当前连接的session信息(动态信息)
v$session_wait视图记录的是当前数据库连接的活动session正在等待的资源或者事件信息。
v$system_event视图记录数据库启动以来所有等待事件的汇总信息。通过v$system_event视图,用户可以迅速第获得数据库运行的总体概括
v$sql_plan视图当前系统Library Cache中sql语句的执行计划。
select sid,event,p1,p1text from v$session_wait
获得相关session正在执行的完整sql语句:
select sql_text from v$sqltext a where a.hash_value = (select sql_hash_value from v$session b where b.sid = '&sid' ) order by piece asc
select index_name,index_type from user_indexes where table_name = '&tableName'
v$session_wait_history视图记录活动session最近10次的等待事件
ash(active session history):以v$session为基础,每秒钟采样一次,记录活动会话的等待时间。
v$active_session_history
重要等待事件:
db file sequential read(数据文件顺序读取):如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能索引的使用存在问题,并非索引总是最好的选择。
db file scattered read(DB文件分散读取):可能与全表扫描或者快速全索引扫描(Index Fast Full Scan)的连续性相关,一般情况下可能意味着应用问题或者索引缺失
direct path read/write(直接路径读/写):直接路径读取通常发生在oracle读数据到pga,这个读取不需要经过sga。如果系统存在过多的磁盘排序,会导致临时表空间操作频繁,对于这种情况下,可以考虑为不同用户分配不同的临时表空间,使用多个临时文件,写入不同磁盘,从而降低竞争,提高性能。