一、何为数据字典
数据字典是数据库的重要组成部分。它存放有数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括:
1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。
2、分配多少空间,当前使用了多少空间等。
3、列的缺省值。
4、约束信息的完整性。
5、用户的名字。
6、用户及角色被授予的权限。
7、用户访问或使用的审计信息。
8、其它产生的数据库信息。
总结:数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。我们可以通过执行特定的sql语句来获取相应的数据库信息。
二、数据字典的组成
包含两类视图:
1.静态数据字典(描述数据库的信息):这些数据经常是静止的
2.动态数据字典(描述实例的信息):反映数据库运行的状态,反映数据库实例运行的信息,这些信息经常是变化的。
三、常见的静态数据字典(即:静态视图)
如下:

 1.查看当前用户名下的表
select table_name,tablespace_name,status,blocks,empty_blocks,sample_size,segment_created from user_tables;

 可以得到了当前用户下拥有的表,各个表输入哪个表空间,占用了多少个块,分析这个表所使用的样表大小。是否创建了段。
注:段是表在磁盘中的物理存储。我们将多个数据块组成一个大块称为段。所以是否创建了段,就意味着这个表是否占据了物理空间。如上图:
segment_creatd 为no,那么sample_size为0。 为什么会这样?
因当我们创建一个表,不加入数据前。这个表是空表。那么数据库为了节约物理空间,此时不会分配空间给该表。当插入数据时,再分配空间。
 2.查看当前用户下的段
select segment_name,segment_type,bytes,blocks from user_segments

 从这里我们见证了一件事:段就是表、索引(即索引表)、临时表、回滚段等占据了物理空间的数据的统称。一般情况下:一个表就会创建一个段。但也会像分区表那样一个表对应多个段。
 四.动态视图
1.查看当前实例对象
select * from v$instance;
实例是数据库启动时初始化的一组进程和内存结构。
 2.查看redo log
查看日志文件组,和当前正在写的日志块 select * from v$log; 查看日志文件存储位置 select * from v$logfile;
从上图可以看出:重做日志是有三个日志组,轮流在写。处于current状态的组就是当前正在写的日志组。
3.会话级的性能定位
查看当前连接的会话id select * from v$mystat; 1.查看当前锁 select * from v$lock where type in ('TM','TX'); 2.查看sid为XXX。会话 select sid,username,sql_address,blocking_session from v$session where sid='xxxx'; 3.查看地址为OOO的sql语句 select * from v$sql where address='OOO'; 4.查看sid为XXX。会话等待事件是什么 select * from v$session_wait where sid='XXX';
从该表中我们已经列出了如何查询会话级性能的步骤。
第一步:查找锁。这一步只是限于当发生锁机制时使用。目的也是为了获取到发生锁机制的会话id。
注:在发生别的性能问题时,如何查找会话id有待进一步研究
第二步:根据会话id 可以获取到用户名、sql地址(映射的是sql语句)、与同他发生阻塞的会话id。
第三步:根据第二步获取到的sql地址查找该id当前正在执行的sql 语句
第四步:根据会话id 可以获取到会话等待事件是什么。
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号